Наш собственный вкус DDRACE, мод Teeworlds. Смотрите сайт для получения дополнительной информации.
Обсуждения в разработке происходят на #DDNET на Quakenet (WebChat) или на Discord в канале разработчика.
Вы можете получить бинарные выпуски на веб -сайте DDNet, найти его в Steam или установить из репозитория.
Если вы хотите узнать о исходном коде, вы можете проверить статью о разработке на вики.
Чтобы клонировать этот репозиторий с полной историей и внешними библиотеками (~ 350 МБ):
git clone --recursive https://github.com/ddnet/ddnet
Для клонирования этого хранилища с полной историей, когда у вас уже есть необходимые библиотеки в вашей системе (~ 220 МБ):
git clone https://github.com/ddnet/ddnet
Чтобы клонировать этот репозиторий историей, так как мы перенесли библиотеки на https://github.com/ddnet/ddnet-libs (~ 40 МБ):
git clone --shallow-exclude=included-libs https://github.com/ddnet/ddnet
Чтобы клонировать библиотеки, если у вас ранее клонировал DDNet без них, или если вам требуется история DDNet-Libs вместо мелкого клона:
git submodule update --init --recursive
Вы можете установить необходимые библиотеки в вашей системе, touch CMakeLists.txt и Cmake по умолчанию будут использовать общесистемные библиотеки. Вы можете установить все необходимые зависимости и cmake на Debian или Ubuntu, как это:
sudo apt install build-essential cargo cmake git glslang-tools google-mock libavcodec-extra libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libcurl4-openssl-dev libfreetype6-dev libglew-dev libnotify-dev libogg-dev libopus-dev libopusfile-dev libpng-dev libsdl2-dev libsqlite3-dev libssl-dev libvulkan-dev libwavpack-dev libx264-dev python3 rustc spirv-tools
На более старых распределениях, таких как Ubuntu 18.04, не устанавливайте google-mock , но вместо этого установите -DDOWNLOAD_GTEST=ON создание, чтобы получить более недавнюю версию GTEST/GMOCK.
На более старых распределениях версии rustc может быть слишком старой, чтобы получить обновленный компилятор Rust, вы можете вместо этого использовать Rustup с стабильным каналом или попробовать rustc-mozilla Package.
Или на Centos, Redhat и Almalinux, как это:
sudo yum install cargo cmake ffmpeg-devel freetype-devel gcc gcc-c++ git glew-devel glslang gmock-devel gtest-devel libcurl-devel libnotify-devel libogg-devel libpng-devel libx264-devel make openssl-devel opus-devel opusfile-devel python2 rust SDL2-devel spirv-tools sqlite-devel vulkan-devel wavpack-devel
Или на федоре, как это:
sudo dnf install cargo cmake ffmpeg-devel freetype-devel gcc gcc-c++ git glew-devel glslang gmock-devel gtest-devel libcurl-devel libnotify-devel libogg-devel libpng-devel make openssl-devel opus-devel opusfile-devel python2 SDL2-devel spirv-tools sqlite-devel vulkan-devel wavpack-devel x264-devel
Или на Arch Linux
sudo pacman -S --needed base-devel cmake curl ffmpeg freetype2 git glew glslang gmock libnotify libpng opusfile python rust sdl2 spirv-tools sqlite vulkan-headers vulkan-icd-loader wavpack x264
Или на дженоне, как это:
emerge --ask dev-db/sqlite dev-lang/rust-bin dev-libs/glib dev-libs/openssl dev-util/glslang dev-util/spirv-headers dev-util/spirv-tools media-libs/freetype media-libs/glew media-libs/libglvnd media-libs/libogg media-libs/libpng media-libs/libsdl2 media-libs/libsdl2[vulkan] media-libs/opus media-libs/opusfile media-libs/pnglite media-libs/vulkan-loader[layers] media-sound/wavpack media-video/ffmpeg net-misc/curl x11-libs/gdk-pixbuf x11-libs/libnotify
В MacOS вы можете использовать Homebrew для установки таких зависимостей для сборки:
brew install cmake ffmpeg freetype glew glslang googletest libpng molten-vk opusfile rust SDL2 spirv-tools vulkan-headers wavpack x264
Если вы не хотите использовать системные библиотеки, вы можете передать -DPREFER_BUNDLED_LIBS=ON параметре в Cmake.
Чтобы скомпилировать DDNet, выполните следующие команды в корне источника:
mkdir build
cd build
cmake ..
make -j$(nproc)
Передайте количество потоков для компиляции, чтобы make -j . $(nproc) В данном случае возвращает количество обработчиков.
DDNet требует дополнительных библиотек, некоторые из которых связаны с наиболее распространенными платформами (Windows, Mac, Linux, All x86 и x86_64) для удобства и официальных сборки. В комплекте с официальными библиотеками в настоящее время находятся в подмодуле DDNet-Libs. Обратите внимание, что при создании и развитии локально вы должны в идеале использовать диспетчер пакетов вашей системы для установки зависимостей, вместо того, чтобы полагаться на подмодуль DDNet-Libs, который в любом случае не содержит все зависимости (например, OpenSSL, Vulkan). См. Предыдущий раздел о том, как получить зависимости. В качестве альтернативы см. Следующие аргументы сборки о том, как отключить некоторые функции и их зависимости ( -DVULKAN=OFF например, не требует Vulkan).
Ниже приведен неэпрементный список аргументов сборки, которые можно передать в инструмент командной строки cmake , чтобы включить или отключить варианты в время сборки:
-Dcmake_build_type = [релиз | отладка | relwithdebinfo | minsizerel]
Дополнительная переменная Cmake для установки типа сборки. Если не установлено, по умолчанию «выпустить» if -DDEV=ON не используется, и «отладка», если -DDEV=ON . См. CMAKE_BUILD_TYPE в документации CMAKE для получения дополнительной информации.
-Dprefer_bundled_libs = [on | off]
Предпочитать ли комплексные библиотеки над системными библиотеками. Настройка на ON будет предоставить DDNET использовать сторонние библиотеки, доступные в папке ddnet-libs , которая является целевой целью GIT-SubModule в репозитории DDNet-LIBS, упомянутом выше-полезно, если у вас не установлены эти библиотеки, и вы хотите избежать их создания. Если будет установлено, будет использовать комплексные библиотеки только тогда, когда системные библиотеки не найдены. Значение по умолчанию выключено.
-Dwebsockets = [on | off]
Сообщите ли поддержка WebSocket для сервера. Настройка на включение требует установки библиотеки libwebsockets-dev . Значение по умолчанию выключено.
-Dmysql = [on | off]
Поддержка MySQL/MariaDB для сервера. Требуется хотя бы MySQL 8.0 или MariaDB 10.2. Настройка на включение требует установленной библиотеки libmariadbclient-dev , которая также предоставляется в виде комплектных библиотек для общих платформ. Значение по умолчанию выключено.
Обратите внимание, что библиотеки MySQL могут не работать должным образом в вашей системе. Если вы столкнетесь с проблемами соединения с сервером MySQL, например, он подключается как root, пока вы выбрали другого пользователя, обязательно установите свои системные библиотеки для клиента MySQL. Убедитесь, что в сводке конфигурации Cmake говорится, что в нем обнаружились LIBS MySQL, которые не были объединены (нет «с использованием пакетных либеров»).
-Dtest_mysql = [on | off]
Чтобы проверить поддержку MySQL/MariaDB в тестах на основе GTEST. Значение по умолчанию выключено.
Обратите внимание, что это требует запуска базы данных MySQL/MariaDB на LocalHost с этой настройкой:
CREATE DATABASE ddnet;
CREATE USER 'ddnet'@'localhost' IDENTIFIED BY 'thebestpassword';
GRANT ALL PRIVILEGES ON ddnet.* TO 'ddnet'@'localhost';
FLUSH PRIVILEGES;
-Dautoupdate = [on | off]
Сообщите ли Autoupdater. Пакеры могут захотеть отключить это для своих пакетов. Значение по умолчанию включено для Windows и Linux.
-Dclient = [on | off]
Сообщите ли клиент -компиляцию. Если он будет выключен, DDNet не будет зависеть от Curl, Freetype, OGG, Opus, OpusFile и SDL2. Значение по умолчанию включено.
-DvideoreCorder = [on | off]
Добавить ли поддержку записи видео с использованием FFMPEG к клиенту. Значение по умолчанию включено.
-Ddownload_gtest = [on | off]
Скачать и собирать GTEST. Полезно, если gtest не установлен, и для пользователей Linux нет подходящего пакета, предоставляя его. Значение по умолчанию выключено.
-Ddev = [on | off]
Будь то оптимизировать для разработки, немного ускоряет процесс компиляции. Если включено, не генерируйте вещи, необходимые для упаковки. Настройка на включение будет установить cmake_build_type для отладки по умолчанию. Значение по умолчанию выключено.
-Dupnp = [on | off]
Поддержка UPNP для сервера. Вам нужно установить libminiupnpc-dev на Debian, miniupnpc на Arch Linux. Значение по умолчанию выключено.
-Dvulkan = [on | off]
Сообщите ли вулкан бэкэнд. В Windows вам нужно установить Vulkan SDK и соответственно установить флаг среды VULKAN_SDK . Значение по умолчанию включено для Windows x86_64 и Linux, и выключено для Windows X86 и MacOS.
-Гнинджа
Используйте систему сборки ниндзя вместо того, чтобы сделать. Это автоматически параллелизирует сборку и, как правило, быстрее. Скомпилируйте с ninja вместо make . Установите Ninja с sudo apt install ninja-build на Debian, sudo pacman -S --needed ninja на Arch Linux.
-Dcmake_cxx_link_flags = [flags]
Пользовательские флаги, чтобы установить для компилятора при связывании.
-Dexception_handling = [on | off]
Включите обработку исключений (на данный момент работает только Windows, использует Drmingw там). Значение по умолчанию выключено.
-Dipo = [on | off]
Включить межпроцедурную оптимизацию, также известную как оптимизация времени ссылки (LTO). Значение по умолчанию выключено.
-Dfuse_ld = [off | Linker]
Линкер для использования. Значение по умолчанию выключено, чтобы попробовать плесень, LLD, золото.
-Descurity_compiler_flags = [on | off]
Стоить флагов компиляции, соответствующих безопасности, таких как -D_FORTIFY_SOURCE=2 и -fstack-protector-all . Значение по умолчанию включено.
Чтобы запустить тесты, вам необходимо установить следующую библиотеку libgtest-dev .
Эта библиотека не составлена, поэтому вы должны это сделать:
sudo apt install libgtest-dev
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make -j $( nproc )
# copy or symlink libgtest.a and libgtest_main.a to your /usr/lib folder
sudo cp lib/ * .a /usr/lib Чтобы запустить тесты, вы должны ориентироваться на run_tests с помощью make: make run_tests
Мы используем Clang-Format 10 для форматирования кода C ++ этого проекта. Выполните scripts/fix_style.py После изменения кода, чтобы убедиться, что код отформатируется правильно, проверка центрального стиля Github сделает то же самое и предотвратит подачу вашего изменения.
На Arch Linux вы можете установить Clang-Format 10, используя пакет AUR Clang-Format-Static-bin. На MacOS вы можете установить Clang-Format 10, используя Tap Homebrew:
brew install r-lib/taps/clang-format@10
sudo ln -s /opt/homebrew/Cellar/clang-format@10/10.0.1/bin/clang-format /opt/homebrew/bin/clang-format-10Asan+Ubsan и Memcheck полезны, чтобы легче найти проблемы с кодом. Пожалуйста, используйте их, чтобы проверить свои изменения, если можете.
Для компилирования Asan+Ubsan с:
CC=clang CXX=clang++ CXXFLAGS= " -fsanitize=address,undefined -fsanitize-recover=address,undefined -fno-omit-frame-pointer " CFLAGS= " -fsanitize=address,undefined -fsanitize-recover=address,undefined -fno-omit-frame-pointer " cmake -DCMAKE_BUILD_TYPE=Debug .
makeи бежать с:
UBSAN_OPTIONS=suppressions=./ubsan.supp:log_path=./SAN:print_stacktrace=1:halt_on_errors=0 ASAN_OPTIONS=log_path=./SAN:print_stacktrace=1:check_initialization_order=1:detect_leaks=1:halt_on_errors=0 LSAN_OPTIONS=suppressions=./lsan.supp ./DDNetПроверьте файлы SAN.* После этого. Это находит больше проблем, чем Memcheck, работает быстрее, но требует современного компилятора GCC/Clang.
Для Valgrind's Memcheck составьте обычную сборку отладки и запустите с: valgrind --tool=memcheck ./DDNet ожидайте большого замедления.
Загрузите и установите некоторую версию Microsoft Visual Studio (во время написания, MSVS Community 2022) с поддержкой C ++ .
Вам придется установить как Python 3, так и Rust.
Убедитесь, что инструменты для сборки MSVC, Cmake-Tools Cmake и последняя версия Windows SDK, подходящая для вашей версии Windows, выбираются в установщике.
Теперь откройте папку проекта, Visual Studio должна автоматически обнаружить и настроить ваш проект с помощью CMAKE.
На ваших инструментах Hotbar рядом с треугольной кнопкой «запустить» вы теперь можете выбрать то, что вы хотите начать (например, Game-Client или Game-Server) и построить его.
Во -первых, вам нужно будет установить инструменты сборки MSVC, Python 3, а также Rust.
Чтобы скомпилировать и построить DDNet в Windows, используйте свой выбор IDE либо с интеграцией Cmake (например, код Visual Studio) или устарел Используя графический интерфейс Cmake.
Настройте CMAKE, чтобы использовать инструменты MSVC, подходящие для вашей системы, с помощью инструкций вашей IDE.
Если вы используете код Visual Studio, вы можете использовать расширение инструментов Cmake для настройки и создания проекта.
Затем вы можете открыть папку Project в VSC и нажать Ctrl+Shift+P чтобы открыть палитру команд, затем поиск CMake: Configure
Это откроет подсказку для выбора комплекта, выберите версию Visual Studio и сохранить его. Теперь вы можете использовать графический интерфейс (внизу слева) для компиляции и создания своего проекта.
Установите кросс-компиляторы Mingw формы i686-w64-mingw32-gcc (32-битный) или x86_64-w64-mingw32-gcc (64-битный). Это, вероятно, сложная часть. ;)
Затем добавьте -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mingw64.toolchain в начальную командную строку Cmake.
Установите кросс-компиляторы Emscripten (например sudo apt install emscripten ) на современном дистрибутивации Linux.
Если вам нужно скомпилировать DDnet-Libs для Webassembly, просто вызовите
# <directory to build in> should be a directory outside of the project's source directory
scripts/compile_libs/gen_libs.sh < directory to build in > webasm Из исходного каталога проекта. Он автоматически создаст каталог под названием ddnet-libs . Затем вы можете вручную объединить этот каталог с тем, что в каталоге DDNet Source.
Затем запустите emcmake cmake .. -DVIDEORECORDER=OFF -DVULKAN=OFF -DSERVER=OFF -DTOOLS=OFF -DPREFER_BUNDLED_LIBS=ON в вашем каталоге сборки.
Чтобы проверить скомпилированный код локально, просто используйте emrun --browser firefox DDNet.html
Для размещения скомпилированного файла .html копировать все .data , .html , .js , .wasm файлы на веб -сервер. (См./Боже/Эмкриптен/Минимал.html для минимального примера HTML)
Затем включите политики Cross Origin. Пример для Apache2 на Debian Distros:
sudo a2enmod header
# edit the apache2 config to allow .htaccess files
sudo nano /etc/apache2/apache2.conf
# set AllowOverride to All for your directory
# then create a .htaccess file on the web server (where the .html is)
# and add these lines
Header add Cross-Origin-Embedder-Policy " require-corp "
Header add Cross-Origin-Opener-Policy " same-origin "
# now restart apache2
sudo service apache2 restart Установите osxcross, затем добавьте -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/darwin.toolchain и -DCMAKE_OSX_SYSROOT=/path/to/osxcross/target/SDK/MacOSX10.11.sdk/ в начальную командную строку Cmake.
Установите dmg и hfsplus из Libdmg-Hfsplus и newfs_hfs от diskdev_cmds, чтобы разблокировать цель package_dmg , который выводит изображение диска macos.
$ wget https://ddnet.org/stats/ddnet-sql.zip
$ unzip ddnet-sql.zip
$ yaourt -S mariadb mysql-connector-c++
$ mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
$ systemctl start mariadb
$ mysqladmin -u root password ' PW '
$ mysql -u root -p ' PW '
MariaDB [(none)] > create database teeworlds ; create user ' teeworlds ' @ ' localhost ' identified by ' PW2 ' ; grant all privileges on teeworlds. * to ' teeworlds ' @ ' localhost ' ; flush privileges ;
# this takes a while, you can remove the KEYs in record_race.sql to trade performance in queries
$ mysql -u teeworlds -p ' PW2 ' teeworlds < ddnet-sql/record_ * .sql
$ cat mine.cfg
sv_use_sql 1
add_sqlserver r teeworlds record teeworlds " PW2 " " localhost " " 3306 "
add_sqlserver w teeworlds record teeworlds " PW2 " " localhost " " 3306 "
$ mkdir build
$ cd build
$ cmake -DMYSQL=ON ..
$ make -j $( nproc )
$ ./DDNet-Server -f mine.cfgDebian/Ubuntu
$ apt-get install ddnet
MacOS
$ brew install --cask ddnetФедора
$ dnf install ddnetArch Linux
$ yay -S ddnetFreeBSD
$ pkg install DDNetWindows (Scoop)
scoop bucket add games
scoop install games/ddnet
DDNet доступен в Test Suite Phoronix. Если у вас установлены PTS, вы можете легко сравнить DDNet в своей собственной системе, как это:
$ phoronix-test-suite benchmark ddnet Во -первых, используйте лучший инструмент, чем сам git blame , например, tig . Вероятно, есть хороший пользовательский интерфейс для Windows. В качестве альтернативы, используйте пользовательский интерфейс GitHub, нажмите «Вина» в любом представлении файла.
Для tig используйте tig blame path/to/file.cpp чтобы открыть представление вины, вы можете перемещаться с клавишами со стрелками или KJ, нажмите запятую, чтобы перейти к предыдущему пересмотру текущей строки, Q, чтобы уйти.
Только тогда вы также можете настроить GIT, чтобы игнорировать конкретные изменения в форматировании:
git config blame.ignoreRevsFile formatting-revs.txtСкопируйте файлы обнаружения файлов и синтаксиса в папку конфигурации VIM:
# vim
cp -R other/vim/ * ~ /.vim/
# neovim
cp -R other/vim/ * ~ /.config/nvim/