Nosso próprio sabor de ddrace, um mod de teeworlds. Consulte o site para obter mais informações.
As discussões de desenvolvimento acontecem no #DDNet no Quakenet (Webchat) ou no Discord no canal do desenvolvedor.
Você pode obter lançamentos binários no site da DDNET, encontre -o no Steam ou instale no Repositório.
Se você quiser aprender sobre o código -fonte, pode verificar o artigo de desenvolvimento no wiki.
Para clonar este repositório com histórico completo e bibliotecas externas (~ 350 MB):
git clone --recursive https://github.com/ddnet/ddnet
Para clonar este repositório com história completa quando você já possui as bibliotecas necessárias em seu sistema (~ 220 MB):
git clone https://github.com/ddnet/ddnet
Para clonar este repositório com a história desde que mudamos as bibliotecas para https://github.com/ddnet/ddnet-libs (~ 40 MB):
git clone --shallow-exclude=included-libs https://github.com/ddnet/ddnet
Para clonar as bibliotecas, se você já clonou o DDNET sem elas, ou se precisar da história do DDNET-Libs em vez de um clone raso:
git submodule update --init --recursive
Você pode instalar as bibliotecas necessárias em seu sistema, touch CMakeLists.txt e o cmake usarão as bibliotecas em todo o sistema por padrão. Você pode instalar todas as dependências necessárias e cmake no Debian ou no Ubuntu assim:
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
Em distribuições mais antigas como o Ubuntu 18.04, não instale google-mock , mas, em vez disso, defina -DDOWNLOAD_GTEST=ON quando a criação para obter uma versão mais recente do GTEST/GMOCK.
Nas distribuições mais antigas, a versão rustc pode ser muito antiga, para obter um compilador de ferrugem atualizado, você pode usar o Rustup com canal estável ou experimentar o pacote rustc-mozilla .
Ou no CentOS, Redhat e Almalinux como este:
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 em Fedora assim:
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 no 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
Ou no gentoo assim:
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
No MacOS, você pode usar o Homebrew para instalar dependências de construção como esta:
brew install cmake ffmpeg freetype glew glslang googletest libpng molten-vk opusfile rust SDL2 spirv-tools vulkan-headers wavpack x264
Se você não quiser usar as bibliotecas do sistema, poderá passar no parâmetro -DPREFER_BUNDLED_LIBS=ON parâmetro para cmake.
Para compilar o DDNET, execute os seguintes comandos na raiz de origem:
mkdir build
cd build
cmake ..
make -j$(nproc)
Passe o número de threads para compilação para make -j . $(nproc) Nesse caso, retorna o número de unidades de processamento.
O DDNET requer bibliotecas adicionais, algumas das quais são incluídas nas plataformas mais comuns (Windows, Mac, Linux, All X86 e X86_64) para conveniência e as compilações oficiais. As bibliotecas em pacote para construções oficiais estão agora no submódulo DDNET-Libs. Observe que, quando você constrói e desenvolve localmente, use idealmente o gerenciador de pacotes do seu sistema para instalar as dependências, em vez de confiar no submódulo DDNet-Libs, que não contém todas as dependências (por exemplo, OpenSSL, Vulkan). Consulte a seção anterior sobre como obter as dependências. Como alternativa, consulte os seguintes argumentos de construção sobre como desativar alguns recursos e suas dependências ( -DVULKAN=OFF não exigirá vulkan, por exemplo).
A seguir, é apresentada uma lista não exaustiva de argumentos de construção que podem ser passados para a ferramenta de linha de comando cmake para ativar ou desativar as opções no tempo de construção:
-Dcmake_build_type = [Release | Debug | Relwithdebinfo | MINSIZEREL]
Uma variável cmake opcional para definir o tipo de compilação. Se não estiver definido, os padrões de "liberação" se -DDEV=ON não forem usados e "Debug" se -DDEV=ON é usado. Consulte CMAKE_BUILD_TYPE na documentação do CMake para obter mais informações.
-Dprefer_bundled_libs = [on | off]
Se preferirem bibliotecas em pacote às bibliotecas do sistema. A configuração para o On disponibilizará as bibliotecas de terceiros do DDNET na pasta ddnet-libs , que é o alvo Git-submodule do repositório DDNET-LIBS mencionado acima-útil se você não tiver essas bibliotecas instaladas e desejar evitá-las. Se definido, usará apenas bibliotecas agrupadas quando as bibliotecas do sistema não forem encontradas. O valor padrão está desativado.
-Dwebsockets = [ON | OFF]
Se deve ativar o suporte do WebSocket para o servidor. A configuração para ON requer a biblioteca libwebsockets-dev instalada. O valor padrão está desativado.
-Dmysql = [ON | OFF]
Se deve habilitar suporte ao MySQL/MariaDB para servidor. Requer pelo menos o MySQL 8.0 ou Mariadb 10.2. A configuração para ON requer a biblioteca libmariadbclient-dev instalada, que também é fornecida como bibliotecas agrupadas para as plataformas comuns. O valor padrão está desativado.
Observe que as bibliotecas MySQL incluídas podem não funcionar corretamente no seu sistema. Se você enfrentar problemas de conexão com o servidor MySQL, por exemplo, ele se conecta como root enquanto você escolhe outro usuário, instale as bibliotecas do sistema para o cliente MySQL. Certifique -se de que o resumo da configuração do CMake diga que encontrou o MySQL Libs que não foram incluídos (não "usando libs em pacote").
-Dtest_mysql = [on | off]
Se deve testar o suporte ao MySQL/MariaDB em testes baseados em GTEST. O valor padrão está desativado.
Observe que isso requer um banco de dados em execução do MySQL/Mariadb no localhost com esta configuração:
CREATE DATABASE ddnet;
CREATE USER 'ddnet'@'localhost' IDENTIFIED BY 'thebestpassword';
GRANT ALL PRIVILEGES ON ddnet.* TO 'ddnet'@'localhost';
FLUSH PRIVILEGES;
-DautoupDate = [ON | OFF]
Se deve habilitar o Autoupdater. Os pacotes podem querer desativar isso por seus pacotes. O valor padrão está ligado para o Windows e Linux.
-Dclient = [ON | OFF]
Se deve ativar a compilação do cliente. Se definido, o DDNET não dependerá de Curl, Freetype, OGG, Opus, Opusfile e SDL2. O valor padrão está ligado.
-Dvideorecorder = [ON | OFF]
Se deve adicionar suporte de gravação de vídeo usando o FFMPEG ao cliente. O valor padrão está ligado.
-Ddownload_gtest = [ON | OFF]
Se deve baixar e compilar Gtest. Útil se o GTEST não estiver instalado e, para usuários do Linux, não há um pacote adequado que o forneça. O valor padrão está desativado.
-Ddev = [ON | OFF]
Seja para otimizar o desenvolvimento, acelerando um pouco o processo de compilação. Se ativado, não gere coisas necessárias para embalagens. A configuração para ON definirá cmake_build_type como depuração por padrão. O valor padrão está desativado.
-Dupnp = [ON | OFF]
Se deve ativar o suporte UPNP para o servidor. Você precisa instalar libminiupnpc-dev no Debian, miniupnpc no Arch Linux. O valor padrão está desativado.
-Dvulkan = [ON | OFF]
Se deve habilitar o back -end de Vulkan. No Windows, você precisa instalar o SDK Vulkan e definir a bandeira do ambiente VULKAN_SDK de acordo. O valor padrão está ligado para o Windows X86_64 e Linux e OFF para o Windows X86 e MacOS.
-Gninja
Use o sistema de construção ninja em vez de fazer. Isso paraleliza automaticamente a construção e geralmente é mais rápido. Compilar com ninja em vez de make . Instale o ninja com sudo apt install ninja-build no debian, sudo pacman -S --needed ninja no arch Linux.
-Dcmake_cxx_link_flags = [sinalizadores]
Sinalizadores personalizados para definir para o compilador ao vincular.
-Dexception_Handling = [ON | OFF]
Ativar o manuseio de exceção (funciona apenas com o Windows a partir de agora, usa o Drmingw lá). O valor padrão está desativado.
-Dipo = [ON | OFF]
Ativar otimizações interprocedurais, também conhecidas como otimização de tempo de link (LTO). O valor padrão está desativado.
-Dfuse_ld = [Off | Linker]
Vinculador para usar. O valor padrão está desligado para experimentar mofo, LLD, ouro.
-DSecurity_compiler_flags = [ON | OFF]
Se você deve definir sinalizadores de compiladores relevantes para a segurança como -D_FORTIFY_SOURCE=2 e -fstack-protector-all . O valor padrão está ligado.
Para executar os testes, você precisa instalar a seguinte biblioteca libgtest-dev .
Esta biblioteca não é compilada, então você precisa fazer isso:
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 executar os testes, você deve segmentar run_tests com make: make run_tests
Usamos o Clang-format 10 para formatar o código C ++ deste projeto. Execute scripts/fix_style.py Depois de alterar o código para garantir que o código seja formatado corretamente, um verificador de estilo central do GitHub fará o mesmo e impedirá que sua alteração seja enviada.
No Arch Linux, você pode instalar o Clang-Format 10 usando o pacote AUR de cabis-estático Clang-Format. No MacOS, você pode instalar o Clang-Format 10 usando uma torneira caseira:
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 e Memcheck são úteis para encontrar problemas de código com mais facilidade. Use -os para testar suas alterações, se puder.
Para asan+ubsan compilar com:
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 .
makee correr com:
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 ./DDNetVerifique os arquivos San.* Depois. Isso encontra mais problemas do que o Memcheck, funciona mais rápido, mas requer um compilador GCC/CLANG moderno.
Para o Memcheck da Valgrind, compilar uma construção normal de depuração e correr com: valgrind --tool=memcheck ./DDNet Espere uma grande lentidão.
Faça o download e instale alguma versão do Microsoft Visual Studio (no momento da redação, a comunidade MSVS 2022) com suporte ao C ++ .
Você terá que instalar o Python 3 e a ferrugem também.
Verifique se as ferramentas de construção do MSVC, as ferramentas c ++ cmake e a versão mais recente do Windows SDK apropriadas à sua versão do Windows estão selecionadas no instalador.
Agora abra sua pasta de projeto, o Visual Studio deve detectar e configurar automaticamente seu projeto usando o CMake.
Em suas ferramentas HotBar, ao lado do botão "Executar" triangular, agora você pode selecionar o que deseja iniciar (por exemplo, client ou servidor de jogo) e construí-lo.
Primeiro, você precisará instalar as ferramentas de construção do MSVC, o Python 3 e a ferrugem.
Para compilar e construir o DDNET no Windows, use seu IDE de escolha com uma integração cmake (por exemplo, código do Visual Studio) ou por descontinuado usando a GUI cmake.
Configure o CMake para usar as ferramentas de construção MSVC apropriadas ao seu sistema pelas instruções do seu IDE.
Se você estiver usando o código do Visual Studio, poderá usar a extensão do CMake Tools para configurar e construir o projeto.
Você pode abrir a pasta do projeto no VSC e pressionar Ctrl+Shift+P para abrir a paleta de comando e procurar CMake: Configure
Isso abrirá um prompt para você selecionar um kit, selecionar sua versão Visual Studio e salvá -lo. Agora você pode usar a GUI (canto inferior esquerdo) para compilar e criar seu projeto.
Instale os compiladores cruzados do Mingw do formulário i686-w64-mingw32-gcc (32 bits) ou x86_64-w64-mingw32-gcc (64 bits). Esta é provavelmente a parte difícil. ;)
Em seguida, adicione -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mingw64.toolchain para a linha de comando CMAKE inicial .
Instale os compiladores cruzados do EMSCRIPTEN (por exemplo, sudo apt install emscripten ) em uma distro moderna do Linux.
Se você precisar compilar os Libs DDNet para WebAssembly, basta ligar
# <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 do diretório de origem do projeto. Ele criará automaticamente um diretório chamado ddnet-libs . Você pode mesclar manualmente este diretório com o do diretório de origem DDNET.
Em seguida, execute emcmake cmake .. -DVIDEORECORDER=OFF -DVULKAN=OFF -DSERVER=OFF -DTOOLS=OFF -DPREFER_BUNDLED_LIBS=ON no seu diretório de construção.
Para testar o código compilado localmente, basta usar emrun --browser firefox DDNet.html
Para hospedar o arquivo .html compilado Copie todos os .data , .html , .js , .wasm arquivos para o servidor da web. (ver /other/emscriptten/minimal.html para um exemplo mínimo de html)
Em seguida, ative políticas de origem cruzada. Exemplo para Apache2 nas distros baseadas no 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 e adicione -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/darwin.toolchain e -DCMAKE_OSX_SYSROOT=/path/to/osxcross/target/SDK/MacOSX10.11.sdk/ to a linha de comando Cmake inicial .
Instale dmg e hfsplus no libdmg-hfsplus e newfs_hfs de diskdev_cmds para desbloquear o alvo package_dmg que gera uma imagem 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
Macos
$ brew install --cask ddnetFedora
$ dnf install ddnetArch Linux
$ yay -S ddnetFreeBSD
$ pkg install DDNetWindows (Scoop)
scoop bucket add games
scoop install games/ddnet
O DDNET está disponível no Phoronix Test Suite. Se você tiver pts instalado, pode facilmente comparar o DDNET em seu próprio sistema como este:
$ phoronix-test-suite benchmark ddnet Primeiro, use uma ferramenta melhor do que git blame , por exemplo, tig . Provavelmente também existe uma boa interface do usuário para o Windows. Como alternativa, use a interface do usuário do Github, clique em "Culpar" em qualquer visualização de arquivo.
Para tig , use tig blame path/to/file.cpp para abrir a visualização da culpa, você pode navegar com as teclas de seta ou KJ, pressione vírgula para ir para a revisão anterior da linha atual, Q para sair.
Somente então você também pode configurar o Git para ignorar revisões específicas de formatação:
git config blame.ignoreRevsFile formatting-revs.txtCopie os arquivos de detecção e sintaxe de arquivos para sua pasta de configuração Vim:
# vim
cp -R other/vim/ * ~ /.vim/
# neovim
cp -R other/vim/ * ~ /.config/nvim/