Nuestro propio sabor de DDRACE, un mod de Teeworlds. Consulte el sitio web para obtener más información.
Las discusiones de desarrollo ocurren en #DDNet en Quakenet (WebChat) o en Discord en el canal de desarrollador.
Puede obtener lanzamientos binarios en el sitio web de DDNet, encontrarlo en Steam o instalar desde el repositorio.
Si desea conocer el código fuente, puede consultar el artículo de desarrollo en el wiki.
Para clonar este repositorio con historia completa y bibliotecas externas (~ 350 MB):
git clone --recursive https://github.com/ddnet/ddnet
Para clonar este repositorio con historial completo cuando ya tiene las bibliotecas necesarias en su sistema (~ 220 MB):
git clone https://github.com/ddnet/ddnet
Para clonar este repositorio con la historia, ya que trasladamos las bibliotecas a https://github.com/ddnet/ddnet-libs (~ 40 mb):
git clone --shallow-exclude=included-libs https://github.com/ddnet/ddnet
Para clonar las bibliotecas si previamente ha clonado DDNET sin ellas, o si necesita el historial DDNET-LIBS en lugar de un clon superficial:
git submodule update --init --recursive
Puede instalar las bibliotecas requeridas en su sistema, touch CMakeLists.txt y cmake utilizarán las bibliotecas de todo el sistema de forma predeterminada. Puede instalar todas las dependencias requeridas y CMake en Debian o Ubuntu como este:
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
En distribuciones más antiguas como Ubuntu 18.04 no instale google-mock , sino que establezca -DDOWNLOAD_GTEST=ON cuando se construye para obtener una versión GTEST/GMOCK más reciente.
En las distribuciones más antiguas, la versión rustc puede ser demasiado antigua, para obtener un compilador de óxido actualizado, puede usar Rustup con canal estable o probar el paquete rustc-mozilla .
O en Centos, Redhat y Almalinux así:
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
O en Fedora como este:
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
O en Arch Linux como este:
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
O en Gentoo como este:
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
En MacOS puede usar HomeBrew para instalar dependencias de compilación como esta:
brew install cmake ffmpeg freetype glew glslang googletest libpng molten-vk opusfile rust SDL2 spirv-tools vulkan-headers wavpack x264
Si no desea usar las bibliotecas del sistema, puede pasar el -DPREFER_BUNDLED_LIBS=ON parámetro a cmake.
Para compilar ddnet usted mismo, ejecute los siguientes comandos en la raíz de origen:
mkdir build
cd build
cmake ..
make -j$(nproc)
Pase el número de hilos para la compilación para make -j . $(nproc) en este caso devuelve el número de unidades de procesamiento.
DDNET requiere bibliotecas adicionales, algunas de las cuales están agrupadas para las plataformas más comunes (Windows, Mac, Linux, todas X86 y X86_64) para conveniencia y las compilaciones oficiales. Las bibliotecas agrupadas para construcciones oficiales ahora están en el submódulo DDNET-LIBS. Tenga en cuenta que cuando construye y se desarrolla localmente, idealmente debe usar el Administrador de paquetes de su sistema para instalar las dependencias, en lugar de confiar en el submódulo DDNet-libs, que de todos modos no contiene todas las dependencias (por ejemplo, OpenSSL, Vulkan). Consulte la sección anterior sobre cómo obtener las dependencias. Alternativamente, consulte los siguientes argumentos de compilación sobre cómo deshabilitar algunas características y sus dependencias ( -DVULKAN=OFF no requerirá vulkan, por ejemplo).
La siguiente es una lista no exhaustiva de argumentos de compilación que se pueden pasar a la herramienta de línea de comandos cmake para habilitar o deshabilitar las opciones en el tiempo de compilación:
-Dcmake_build_type = [versión | debug | relwithdebinfo | minsizerel]
Una variable CMake opcional para configurar el tipo de compilación. Si no se establece, no se usa el valor predeterminado para "liberar" si -DDEV=ON , y se usa "depurar" si -DDEV=ON . Consulte CMAKE_BUILD_TYPE en la documentación de CMake para obtener más información.
-Dprefer_bundled_libs = [ON | OFF]
Si preferir bibliotecas agrupadas sobre las bibliotecas del sistema. La configuración en On hará que DDNet use bibliotecas de terceros disponibles en la carpeta ddnet-libs , que es el objetivo GIT-submodule del repositorio de DDNet-LIBS mencionado anteriormente, útil si no tiene esas bibliotecas instaladas y desea evitar construirlas. Si se establece en OFF, solo usará bibliotecas agrupadas cuando no se encuentren bibliotecas del sistema. El valor predeterminado está desactivado.
-Dwebsockets = [ON | OFF]
Si habilita el soporte de WebSocket para el servidor. La configuración en ON requiere la biblioteca libwebsockets-dev instalada. El valor predeterminado está desactivado.
-Dmysql = [on | off]
Si habilita el soporte MySQL/Mariadb para el servidor. Requiere al menos MySQL 8.0 o MariaDB 10.2. La configuración se requiere la biblioteca libmariadbclient-dev instalada, que también se proporciona como bibliotecas agrupadas para las plataformas comunes. El valor predeterminado está desactivado.
Tenga en cuenta que las bibliotecas MySQL agrupadas pueden no funcionar correctamente en su sistema. Si se encuentra con problemas de conexión con el servidor MySQL, por ejemplo, se conecta como root mientras elige a otro usuario, asegúrese de instalar las bibliotecas de su sistema para el cliente MySQL. Asegúrese de que el resumen de la configuración de CMake diga que encontró MySQL Libs que no estaban agrupados (no "usando LIBS agrupados").
-Dtest_mysql = [on | off]
Si probar el soporte MySQL/MariadB en pruebas basadas en GTEST. El valor predeterminado está desactivado.
Tenga en cuenta que esto requiere una base de datos MySQL/mariadb en localhost con esta configuración:
CREATE DATABASE ddnet;
CREATE USER 'ddnet'@'localhost' IDENTIFIED BY 'thebestpassword';
GRANT ALL PRIVILEGES ON ddnet.* TO 'ddnet'@'localhost';
FLUSH PRIVILEGES;
-DAUTOUPDATE = [ON | OFF]
Si habilita el autoupdater. Los empacadores pueden querer deshabilitar esto para sus paquetes. El valor predeterminado está activado para Windows y Linux.
-Dclient = [on | off]
Si habilita la compilación del cliente. Si se establece en OFF, DDNET no dependerá de Curl, FreeType, OGG, Opus, Opusfile y SDL2. El valor predeterminado está activado.
-DvideRecorder = [ON | OFF]
Si se debe agregar soporte de grabación de video usando FFMPEG al cliente. El valor predeterminado está activado.
-Ddownload_gtest = [ON | OFF]
Si descargar y compilar GTEST. Útil si GTEST no está instalado y, para los usuarios de Linux, no hay un paquete adecuado que lo proporcione. El valor predeterminado está desactivado.
-Ddev = [on | off]
Si se debe optimizar para el desarrollo, acelerando un poco el proceso de compilación. Si está habilitado, no genere cosas necesarias para el embalaje. La configuración en ON se establecerá CMake_Build_Type para depurar de forma predeterminada. El valor predeterminado está desactivado.
-Dupnp = [on | off]
Si habilita el soporte UPNP para el servidor. Debe instalar libminiupnpc-dev en Debian, miniupnpc en Arch Linux. El valor predeterminado está desactivado.
-Dvulkan = [on | off]
Si habilita el backend de Vulkan. En Windows debe instalar el Vulkan SDK y establecer el indicador de entorno VULKAN_SDK en consecuencia. El valor predeterminado está encendido para Windows X86_64 y Linux, y apagado para Windows X86 y MacOS.
-Gninja
Use el sistema de compilación ninja en lugar de hacer. Esto paraleliza automáticamente la compilación y generalmente es más rápido. Compilar con ninja en lugar de make . Instale Ninja con sudo apt install ninja-build en Debian, sudo pacman -S --needed ninja en Arch Linux.
-DCMAKE_CXX_LINK_FLAGS = [FLAGS]
Banderas personalizadas para establecer el compilador al vincular.
-Dexception_handling = [ON | OFF]
Habilitar el manejo de excepciones (solo funciona con Windows a partir de ahora, usa Drmingw allí). El valor predeterminado está desactivado.
-Dipo = [ON | OFF]
Habilitar optimizaciones interprocedurales, también conocidas como optimización del tiempo de enlace (LTO). El valor predeterminado está desactivado.
-Dfuse_ld = [Off | enlazador]
Enlazador para usar. El valor predeterminado está apagado para probar el moho, LLD, el oro.
-SeSecurity_Compiler_Flags = [ON | OFF]
Si se debe establecer banderas del compilador relevante para la seguridad como -D_FORTIFY_SOURCE=2 y -fstack-protector-all . El valor predeterminado está activado.
Para ejecutar las pruebas, debe instalar la siguiente biblioteca libgtest-dev .
Esta biblioteca no está compilada, por lo que debe hacerlo:
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 Para ejecutar las pruebas, debe apuntar run_tests con make: make run_tests
Utilizamos Clang-Format 10 para formatear el código C ++ de este proyecto. Ejecutar scripts/fix_style.py Después de cambiar el código para asegurarse de que el código esté formateado correctamente, un verificador de estilo Central GitHub hará lo mismo y evitará que su cambio se envíe.
En Arch Linux, puede instalar Clang-Format 10 utilizando el paquete AUR de Bin-Static-Static-Static-Static. En MacOS puede instalar Clang-Format 10 usando un Toque 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 y MEMCHECK son útiles para encontrar problemas de código más fácilmente. Úselos para probar sus cambios si puede.
Para Asan+Ubsan compilar con:
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 .
makeY corre con:
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 ./DDNetConsulte los archivos SAN.* Posteriormente. Esto encuentra más problemas que Memcheck, funciona más rápido, pero requiere un compilador moderno GCC/Clang.
Para el MemCheck de Valgrind, compile una construcción de depuración normal y ejecute con: valgrind --tool=memcheck ./DDNet espere una gran desaceleración.
Descargue e instale alguna versión de Microsoft Visual Studio (al momento de escribir, MSVS Community 2022) con soporte C ++ .
Tendrás que instalar tanto Python 3 como Rust también.
Asegúrese de que las herramientas de compilación de MSVC, las herramientas C ++ CMake y la última versión de Windows SDK apropiada para su versión de Windows se seleccionen en el instalador.
Ahora abra su carpeta de proyecto, Visual Studio debe detectar y configurar automáticamente su proyecto usando CMake.
En sus herramientas Hotbar al lado del botón Triangular "Run", ahora puede seleccionar lo que desea comenzar (por ejemplo, juego de juego o servidor de juego) y construirlo.
En primer lugar, deberá instalar las herramientas de compilación de MSVC, Python 3 y Rust.
Para compilar y construir DDNet en Windows, use su IDE de elección, ya sea con una integración CMake (por ejemplo, Código de Visual Studio) o por desapercibido Usando la GUI CMake.
Configure Cmake para usar las herramientas de compilación de MSVC apropiadas para su sistema mediante las instrucciones de su IDE.
Si está utilizando el código de Visual Studio, puede usar la extensión de CMAKE Tools para configurar y crear el proyecto.
Luego puede abrir la carpeta del proyecto en VSC y presionar Ctrl+Shift+P para abrir la paleta de comando, luego buscar CMake: Configure
Esto abrirá una solicitud para que seleccione un kit, seleccione su versión Visual Studio y la guarde. Ahora puede usar la GUI (abajo a la izquierda) para compilar y construir su proyecto.
Instale los compiladores cruzados Mingw del formulario i686-w64-mingw32-gcc (32 bit) o x86_64-w64-mingw32-gcc (64 bits). Esta es probablemente la parte difícil. ;)
Luego agregue -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mingw64.toolchain a la línea de comando CMake inicial .
Instale Emscripten Compiladores cruzados (por ejemplo sudo apt install emscripten ) en una moderna distribución de Linux.
Si necesita compilar los ddnet-libs para webensembly, simplemente llame
# <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 Del directorio fuente del proyecto. Creará automáticamente un directorio llamado ddnet-libs . Luego puede fusionar manualmente este directorio con el del directorio de origen DDNET.
Luego ejecute emcmake cmake .. -DVIDEORECORDER=OFF -DVULKAN=OFF -DSERVER=OFF -DTOOLS=OFF -DPREFER_BUNDLED_LIBS=ON en su directorio de compilación.
Para probar el código compilado localmente, solo use emrun --browser firefox DDNet.html
Para alojar el archivo .html compilado, copie todos los archivos .data , .html , .js , .wasm al servidor web. (Ver /other/emscripten/minimal.html para obtener un ejemplo mínimo de HTML)
Luego habilite las políticas de origen cruzado. Ejemplo para Apache2 en Distros basadas en Debian:
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 Instale OSXCross, luego agregue -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/darwin.toolchain y -DCMAKE_OSX_SYSROOT=/path/to/osxcross/target/SDK/MacOSX10.11.sdk/ a la línea de comandos inicial cmake.
Instale dmg y hfsplus desde libdmg-hfsplus y newfs_hfs desde diskdev_cmds para desbloquear el objetivo package_dmg que genera una imagen de disco 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
Macosa
$ brew install --cask ddnetFedora
$ dnf install ddnetArch Linux
$ yay -S ddnetFreeBSD
$ pkg install DDNetWindows (SCOOP)
scoop bucket add games
scoop install games/ddnet
DDNET está disponible en la suite de prueba Phoronix. Si tiene PTS instalados, puede comparar fácilmente ddnet en su propio sistema como este:
$ phoronix-test-suite benchmark ddnet Primero, use una herramienta mejor que git blame , por ejemplo, tig . Probablemente también haya una buena interfaz de usuario para Windows. Alternativamente, use la interfaz de usuario de GitHub, haga clic en "Culpe" en cualquier vista de archivo.
Para tig , use tig blame path/to/file.cpp para abrir la vista de culpa, puede navegar con teclas de flecha o KJ, presione la coma para ir a la revisión anterior de la línea actual, Q para dejar de fumar.
Solo entonces también podría configurar Git para ignorar las revisiones de formato específicas:
git config blame.ignoreRevsFile formatting-revs.txtCopie los archivos de detección de archivos y sintaxis a su carpeta VIM Config:
# vim
cp -R other/vim/ * ~ /.vim/
# neovim
cp -R other/vim/ * ~ /.config/nvim/