Notre propre saveur de DDrace, un mod Teeworlds. Voir le site Web pour plus d'informations.
Des discussions sur le développement se produisent sur #DDNET sur Quaket (Webchat) ou sur Discord dans le canal du développeur.
Vous pouvez obtenir des versions binaires sur le site Web DDNET, la trouver sur Steam ou Installer à partir du référentiel.
Si vous souhaitez en savoir plus sur le code source, vous pouvez consulter l'article de développement sur le wiki.
Pour cloner ce référentiel avec une histoire complète et des bibliothèques externes (~ 350 Mo):
git clone --recursive https://github.com/ddnet/ddnet
Pour cloner ce référentiel avec l'historique complet lorsque vous avez déjà les bibliothèques nécessaires sur votre système (~ 220 Mo):
git clone https://github.com/ddnet/ddnet
Pour cloner ce référentiel avec historique depuis que nous avons déplacé les bibliothèques vers https://github.com/ddnet/ddnet-libs (~ 40 Mo):
git clone --shallow-exclude=included-libs https://github.com/ddnet/ddnet
Pour cloner les bibliothèques si vous avez précédemment cloné DDNET sans eux, ou si vous avez besoin de l'histoire DDNET-LIBS au lieu d'un clone peu profond:
git submodule update --init --recursive
Vous pouvez installer les bibliothèques requises sur votre système, touch CMakeLists.txt et CMake utiliseront les bibliothèques à l'échelle du système par défaut. Vous pouvez installer toutes les dépendances requises et CMake sur Debian ou Ubuntu comme ceci:
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
Sur les distributions plus anciennes comme Ubuntu 18.04, n'installez pas google-mock , mais définissez plutôt -DDOWNLOAD_GTEST=ON lors de la construction pour obtenir une version GTest / GMock plus récente.
Sur les distributions plus anciennes, la version rustc peut être trop ancienne, pour obtenir un compilateur de rouille à jour, vous pouvez utiliser la rustup avec un canal stable à la place ou essayer le paquet rustc-mozilla .
Ou sur Centos, Redhat et Almalinux aiment ceci:
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
Ou sur fedora comme ceci:
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
Ou sur Arch Linux comme ceci:
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
Ou sur gentoo comme ceci:
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
Sur macOS, vous pouvez utiliser Homebrew pour installer des dépendances de construction comme celle-ci:
brew install cmake ffmpeg freetype glew glslang googletest libpng molten-vk opusfile rust SDL2 spirv-tools vulkan-headers wavpack x264
Si vous ne souhaitez pas utiliser les bibliothèques système, vous pouvez transmettre le paramètre -DPREFER_BUNDLED_LIBS=ON le paramètre à CMake.
Pour compiler DDNET vous-même, exécutez les commandes suivantes dans la racine source:
mkdir build
cd build
cmake ..
make -j$(nproc)
Passez le nombre de threads pour la compilation à make -j . $(nproc) dans ce cas renvoie le nombre d'unités de traitement.
DDNET nécessite des bibliothèques supplémentaires, dont certaines sont regroupées pour les plates-formes les plus courantes (Windows, Mac, Linux, tous X86 et X86_64) pour la commodité et les constructions officielles. Les bibliothèques groupées pour les versions officielles se trouvent désormais dans le sous-module DDNET-LIBS. Notez que lorsque vous construisez et vous développez localement, vous devez idéalement utiliser le gestionnaire de packages de votre système pour installer les dépendances, au lieu de vous fier au sous-module DDNET-LIBS, qui ne contient pas toutes les dépendances de toute façon (par exemple OpenSSL, Vulkan). Voir la section précédente pour obtenir les dépendances. Alternativement, consultez les arguments de construction suivants pour désactiver certaines fonctionnalités et leurs dépendances ( -DVULKAN=OFF ne nécessitera pas de Vulkan par exemple).
Ce qui suit est une liste non exhaustive des arguments de construction qui peuvent être transmis à l'outil de ligne de commande cmake afin d'activer ou de désactiver les options en temps de construction:
-Dcmake_build_type = [version | debug | relwithdebinfo | minsizerel]
Une variable CMake facultative pour définir le type de build. Si ce n'est pas défini, par défaut à "libérer" si -DDEV=ON n'est pas utilisé, et "débogage" si -DDEV=ON est utilisé. Voir CMAKE_BUILD_TYPE dans la documentation CMake pour plus d'informations.
-Dprefer_bundled_libs = [on | off]
Que vous préfériez les bibliothèques groupées aux bibliothèques système. Le réglage sur ON fera que DDNET utilise des bibliothèques tierces disponibles dans le dossier ddnet-libs , qui est la cible git-submodule du référentiel DDNET-LIBS mentionné ci-dessus - utile si vous n'avez pas installé ces bibliothèques et souhaitez éviter de les construire. S'il est réglé sur OFF, n'utilisera les bibliothèques groupées que lorsque les bibliothèques système ne seront pas trouvées. La valeur par défaut est désactivée.
-Dwebsockts = [sur | off]
S'il faut activer la prise en charge de WebSocket pour le serveur. Le réglage sur ON nécessite la bibliothèque libwebsockets-dev installée. La valeur par défaut est désactivée.
-Dmysql = [sur | off]
Que ce soit pour activer la prise en charge de MySQL / MARIADB pour le serveur. Nécessite au moins MySQL 8.0 ou MARIADB 10.2. Le réglage sur ON nécessite la bibliothèque libmariadbclient-dev installée, qui sont également fournies sous forme de bibliothèques groupées pour les plates-formes communes. La valeur par défaut est désactivée.
Notez que les bibliothèques MySQL groupées peuvent ne pas fonctionner correctement sur votre système. Si vous rencontrez des problèmes de connexion avec le serveur MySQL, par exemple qu'il se connecte en tant que racine pendant que vous choisissez un autre utilisateur, assurez-vous d'installer vos bibliothèques système pour le client MySQL. Assurez-vous que le résumé de la configuration CMake indique qu'il a trouvé des LIB MySQL qui n'étaient pas groupées (pas de "Utilisation de LIBs groupés").
-Dtest_mysql = [on | off]
Que ce soit pour tester le support MySQL / MARIADB dans les tests basés sur GTEST. La valeur par défaut est désactivée.
Notez que cela nécessite une base de données MySQL / MARIADB en cours d'exécution sur LocalHost avec cette configuration:
CREATE DATABASE ddnet;
CREATE USER 'ddnet'@'localhost' IDENTIFIED BY 'thebestpassword';
GRANT ALL PRIVILEGES ON ddnet.* TO 'ddnet'@'localhost';
FLUSH PRIVILEGES;
-DautoupDate = [on | off]
S'il faut activer le AutoupDater. Les emballages peuvent vouloir désactiver cela pour leurs forfaits. La valeur par défaut est activée pour Windows et Linux.
-Dclient = [sur | off]
S'il faut permettre la compilation du client. S'il est réglé sur OFF, DDNET ne dépendra pas de Curl, Freetype, Ogg, Opus, OpusFile et SDL2. La valeur par défaut est activée.
-DvideoreCorder = [on | off]
S'il faut ajouter une prise en charge de l'enregistrement vidéo à l'aide de FFMPEG au client. La valeur par défaut est activée.
-Ddownload_gtest = [on | off]
S'il faut télécharger et compiler gtest. Utile si GTest n'est pas installé et, pour les utilisateurs de Linux, il n'y a pas de package approprié le fournissant. La valeur par défaut est désactivée.
-Ddev = [sur | off]
Sans optimiser le développement, accélérer un peu le processus de compilation. Si vous êtes activé, ne générez pas de choses nécessaires pour l'emballage. Le réglage sur ON définira CMake_Build_Type pour déboguer par défaut. La valeur par défaut est désactivée.
-Dupnp = [sur | off]
S'il faut activer la prise en charge de l'UPNP pour le serveur. Vous devez installer libminiupnpc-dev sur Debian, miniupnpc sur arch linux. La valeur par défaut est désactivée.
-Dvulkan = [sur | off]
S'il faut activer le backend Vulkan. Sur Windows, vous devez installer le SDK Vulkan et définir l'indicateur d'environnement VULKAN_SDK en conséquence. La valeur par défaut est activée pour Windows X86_64 et Linux, et off pour Windows X86 et MacOS.
-Gninja
Utilisez le système Ninja Build au lieu de faire. Cela parallélise automatiquement la construction et est généralement plus rapide. Compilez avec ninja au lieu de make . Installez ninja avec sudo apt install ninja-build sur Debian, sudo pacman -S --needed ninja sur arch linux.
-Dcmake_cxx_link_flags = [Flags]
Facteurs personnalisés à définir pour le compilateur lors du lien.
-Dexception_handling = [on | off]
Activer la gestion des exceptions (fonctionne uniquement avec Windows à ce jour, utilise DrMingW là-bas). La valeur par défaut est désactivée.
-Dipo = [sur | off]
Activer les optimisations interprocédurales, également connues sous le nom d'optimisation du temps de liaison (LTO). La valeur par défaut est désactivée.
-Dfuse_ld = [off | linker]
Lieur à utiliser. La valeur par défaut est désactivée pour essayer la moisissure, le LLD, l'or.
-Dsecurity_compiler_flags = [on | off]
Que ce soit pour définir des indicateurs de compilateur pertinents pour la sécurité comme -D_FORTIFY_SOURCE=2 et -fstack-protector-all . La valeur par défaut est activée.
Afin d'exécuter les tests, vous devez installer la bibliothèque suivante libgtest-dev .
Cette bibliothèque n'est pas compilée, vous devez donc le faire:
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 Pour exécuter les tests, vous devez cibler run_tests avec make: make run_tests
Nous utilisons Clang-Format 10 pour formater le code C ++ de ce projet. Exécutez scripts/fix_style.py Après avoir modifié le code pour s'assurer que le code est correctement formaté, un vérificateur de style GitHub Central fera de même et empêchera votre modification d'être soumise.
Sur Arch Linux, vous pouvez installer Clang-Format 10 en utilisant le package AUR Clang-Format-static-bin. Sur macOS, vous pouvez installer Clang-Format 10 à l'aide d'un robinet de 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 et Memcheck sont utiles pour trouver des problèmes de code plus facilement. Veuillez les utiliser pour tester vos modifications si vous le pouvez.
Pour Asan + Ubsan compile avec:
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 .
makeEt courez avec:
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 ./DDNetVérifiez les fichiers SAN. * Par la suite. Cela trouve plus de problèmes que Memcheck, fonctionne plus vite, mais nécessite un compilateur GCC / Clang moderne.
Pour Memcheck de Valgrind, compilez une construction de débogage normale et exécutez avec: valgrind --tool=memcheck ./DDNet attendez un grand ralentissement.
Téléchargez et installez une version de Microsoft Visual Studio (au moment de la rédaction, MSVS Community 2022) avec le support C ++ .
Vous devrez également installer Python 3 et Rust.
Assurez-vous que les outils de construction MSVC, les outils CMake Cmake et la dernière version SDK Windows appropriée à votre version Windows sont sélectionnés dans l'installateur.
Ouvrez maintenant votre dossier de projet, Visual Studio devrait détecter et configurer automatiquement votre projet à l'aide de CMake.
Sur vos outils Hotbar à côté du bouton triangulaire "Run", vous pouvez maintenant sélectionner ce que vous voulez démarrer (par exemple, le client de jeu ou le serveur de jeu) et le construire.
Tout d'abord, vous devrez installer les outils de construction MSVC, Python 3 ainsi que Rust.
Pour compiler et créer DDNET sur Windows, utilisez votre ide de choix avec une intégration CMake (par exemple, le code Visual Studio), soit par déprécié Utilisation de l'interface graphique Cmake.
Configurez CMake pour utiliser les outils de construction MSVC appropriés à votre système par les instructions de votre IDE.
Si vous utilisez Visual Studio Code, vous pouvez utiliser l'extension CMake Tools pour configurer et créer le projet.
Vous pouvez ensuite ouvrir le dossier du projet dans VSC et appuyer sur Ctrl+Shift+P pour ouvrir la palette de commande, puis rechercher CMake: Configure
Cela vous ouvrira une invite pour sélectionner un kit, sélectionner votre version Visual Studio et l'enregistrer. Vous pouvez maintenant utiliser l'interface graphique (en bas à gauche) pour compiler et construire votre projet.
Installez Mingw Cross-Compilers du formulaire i686-w64-mingw32-gcc (32 bits) ou x86_64-w64-mingw32-gcc (64 bits). C'est probablement la partie difficile. ;)
Puis ajoutez -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mingw64.toolchain à la ligne de commande Cmake initiale .
Installer Emscripten Cross-Compilers (par exemple sudo apt install emscripten ) sur une distribution Linux moderne.
Si vous devez compiler les DDNet-Libs pour WebAssembly, appelez simplement
# <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 à partir du répertoire source du projet. Il créera automatiquement un répertoire appelé ddnet-libs . Vous pouvez ensuite fusionner manuellement ce répertoire avec celui du répertoire source DDNET.
Ensuite, exécutez emcmake cmake .. -DVIDEORECORDER=OFF -DVULKAN=OFF -DSERVER=OFF -DTOOLS=OFF -DPREFER_BUNDLED_LIBS=ON dans votre répertoire de construction.
Pour tester le code compilé localement, utilisez simplement emrun --browser firefox DDNet.html
Pour héberger le fichier .html compilé Copiez tous les fichiers .data , .html , .js , .wasm sur le serveur Web. (Voir / autres/emscripten/minimal.html pour un exemple de HTML minimal)
Ensuite, activez les politiques d'origine croisée. Exemple pour Apache2 sur les distros basés sur 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 Installez OSXCROSS, puis ajoutez -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/darwin.toolchain et -DCMAKE_OSX_SYSROOT=/path/to/osxcross/target/SDK/MacOSX10.11.sdk/ à la ligne de commande Cmake initiale .
Installez dmg et hfsplus à partir de libdmg-hfsplus et newfs_hfs de diskdev_cmds pour déverrouiller la cible package_dmg qui publie une image de disque 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 ddnetFeutre
$ dnf install ddnetArch Linux
$ yay -S ddnetFreeBSD
$ pkg install DDNetWindows (Scoop)
scoop bucket add games
scoop install games/ddnet
DDNET est disponible dans la suite de test Phoronix. Si vous avez des pts installés, vous pouvez facilement analyser DDNET sur votre propre système comme ceci:
$ phoronix-test-suite benchmark ddnet Tout d'abord, utilisez un meilleur outil que git blame , par exemple tig . Il y a probablement aussi une bonne interface utilisateur pour Windows. Alternativement, utilisez l'interface utilisateur GitHub, cliquez sur "blâmer" dans n'importe quelle vue de fichier.
Pour tig , utilisez tig blame path/to/file.cpp pour ouvrir la vue Blame, vous pouvez naviguer avec des touches Arrow ou KJ, appuyez sur Comma pour accéder à la révision précédente de la ligne actuelle, Q pour quitter.
Ce n'est qu'alors que vous pouvez également configurer GIT pour ignorer les révisions de formatage spécifiques:
git config blame.ignoreRevsFile formatting-revs.txtCopiez les fichiers de détection de fichiers et de syntaxe dans votre dossier de configuration VIM:
# vim
cp -R other/vim/ * ~ /.vim/
# neovim
cp -R other/vim/ * ~ /.config/nvim/