Rasa Ddrace kami sendiri, mod teeworlds. Lihat situs web untuk informasi lebih lanjut.
Diskusi pengembangan terjadi pada #DDNET di Quakenet (WebChat) atau pada perselisihan di saluran pengembang.
Anda bisa mendapatkan rilis biner di situs web DDNET, menemukannya di Steam atau menginstal dari repositori.
Jika Anda ingin mempelajari tentang kode sumber, Anda dapat memeriksa artikel pengembangan di wiki.
Untuk mengkloning repositori ini dengan sejarah lengkap dan perpustakaan eksternal (~ 350 MB):
git clone --recursive https://github.com/ddnet/ddnet
Untuk mengkloning repositori ini dengan riwayat lengkap ketika Anda sudah memiliki perpustakaan yang diperlukan pada sistem Anda (~ 220 MB):
git clone https://github.com/ddnet/ddnet
Untuk mengkloning repositori ini dengan sejarah sejak kami memindahkan perpustakaan ke https://github.com/ddnet/ddnet-libs (~ 40 MB):
git clone --shallow-exclude=included-libs https://github.com/ddnet/ddnet
Untuk mengkloning perpustakaan jika Anda sebelumnya telah mengkloning ddnet tanpa mereka, atau jika Anda memerlukan riwayat ddnet-libs alih-alih klon yang dangkal:
git submodule update --init --recursive
Anda dapat menginstal pustaka yang diperlukan di sistem Anda, touch CMakeLists.txt dan cmake akan menggunakan pustaka sistem-seluruh secara default. Anda dapat menginstal semua dependensi yang diperlukan dan CMake di Debian atau Ubuntu seperti ini:
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
Pada distribusi yang lebih lama seperti Ubuntu 18.04 jangan menginstal google-mock , tetapi sebaliknya mengatur -DDOWNLOAD_GTEST=ON saat membangun untuk mendapatkan versi GTEST/GMOCK yang lebih baru.
Pada distribusi yang lebih lama, versi rustc mungkin terlalu tua, untuk mendapatkan kompiler karat terkini Anda dapat menggunakan RustUp dengan saluran stabil sebagai gantinya atau mencoba paket rustc-mozilla .
Atau di Centos, Redhat dan Almalinux seperti ini:
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
Atau di fedora seperti ini:
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
Atau di Arch Linux seperti ini:
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
Atau di gentoo seperti ini:
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
Pada macOS Anda dapat menggunakan homebrew untuk menginstal dependensi build seperti ini:
brew install cmake ffmpeg freetype glew glslang googletest libpng molten-vk opusfile rust SDL2 spirv-tools vulkan-headers wavpack x264
Jika Anda tidak ingin menggunakan pustaka sistem, Anda dapat melewati -DPREFER_BUNDLED_LIBS=ON parameter ke cmake.
Untuk mengkompilasi DDNet sendiri, jalankan perintah berikut di root sumber:
mkdir build
cd build
cmake ..
make -j$(nproc)
Lewati jumlah utas untuk kompilasi untuk make -j . $(nproc) Dalam hal ini mengembalikan jumlah unit pemrosesan.
DDNET membutuhkan perpustakaan tambahan, beberapa di antaranya dibundel untuk platform yang paling umum (Windows, Mac, Linux, semua x86 dan x86_64) untuk kenyamanan dan pembangunan resmi. Perpustakaan yang dibundel untuk bangunan resmi sekarang ada di submodule DDNet-Libs. Perhatikan bahwa ketika Anda membangun dan mengembangkan secara lokal, idealnya Anda harus menggunakan manajer paket sistem Anda untuk menginstal dependensi, alih-alih mengandalkan submodule DDNet-Libs, yang tidak mengandung semua dependensi (misalnya OpenSSL, Vulkan). Lihat bagian sebelumnya tentang cara mendapatkan dependensi. Atau lihat argumen build berikut untuk cara menonaktifkan beberapa fitur dan ketergantungannya ( -DVULKAN=OFF tidak akan memerlukan vulkan misalnya).
Berikut ini adalah daftar argumen build yang tidak lengkap yang dapat diteruskan ke alat baris perintah cmake untuk mengaktifkan atau menonaktifkan opsi dalam waktu pembuatan:
-Dcmake_build_type = [rilis | Debug | RelWithDebinfo | Minsizerel]
Variabel CMake opsional untuk mengatur jenis build. Jika tidak diatur, default untuk "melepaskan" jika -DDEV=ON tidak digunakan, dan "debug" jika -DDEV=ON digunakan. Lihat CMAKE_BUILD_TYPE dalam dokumentasi CMAKE untuk informasi lebih lanjut.
-Dprefer_bundled_libs = [on | off]
Apakah lebih suka pustaka yang dibundel daripada pustaka sistem. Pengaturan ke ON akan membuat DDNET menggunakan pustaka pihak ketiga tersedia di folder ddnet-libs , yang merupakan target Git-submodule dari repositori DDNET-LIBS yang disebutkan di atas-berguna jika Anda tidak menginstal perpustakaan tersebut dan ingin menghindari membangunnya. Jika diatur ke OFF, hanya akan menggunakan pustaka yang dibundel ketika pustaka sistem tidak ditemukan. Nilai default dimatikan.
-Dwebsockets = [on | off]
Apakah akan mengaktifkan dukungan WebSocket untuk server. Pengaturan ke ON mengharuskan perpustakaan libwebsockets-dev diinstal. Nilai default dimatikan.
-Dmysql = [on | off]
Apakah akan mengaktifkan dukungan mysql/mariadb untuk server. Membutuhkan setidaknya MySQL 8.0 atau MariaDB 10.2. Pengaturan ke ON mengharuskan perpustakaan libmariadbclient-dev diinstal, yang juga disediakan sebagai pustaka yang dibundel untuk platform umum. Nilai default dimatikan.
Perhatikan bahwa perpustakaan MySQL yang dibundel mungkin tidak berfungsi dengan baik pada sistem Anda. Jika Anda mengalami masalah koneksi dengan server MySQL, misalnya itu terhubung sebagai root saat Anda memilih pengguna lain, pastikan untuk menginstal pustaka sistem Anda untuk klien MySQL. Pastikan ringkasan konfigurasi CMake mengatakan bahwa ia menemukan lib mysql yang tidak dibundel (tidak ada "menggunakan libs yang dibundel").
-Dtest_mysql = [on | off]
Apakah akan menguji dukungan mysql/mariadb dalam tes berbasis gtest. Nilai default dimatikan.
Perhatikan bahwa ini memerlukan database MySQL/MariaDB yang sedang berjalan di LocalHost dengan pengaturan ini:
CREATE DATABASE ddnet;
CREATE USER 'ddnet'@'localhost' IDENTIFIED BY 'thebestpassword';
GRANT ALL PRIVILEGES ON ddnet.* TO 'ddnet'@'localhost';
FLUSH PRIVILEGES;
-DautoupDate = [on | off]
Apakah akan mengaktifkan autoupdater. Packagers mungkin ingin menonaktifkan ini untuk paket mereka. Nilai default aktif untuk Windows dan Linux.
-DClient = [on | off]
Apakah akan mengaktifkan kompilasi klien. Jika diatur ke OFF, DDNET tidak akan bergantung pada Curl, Freetype, Ogg, Opus, OpusFile, dan SDL2. Nilai default aktif.
-Dvideorecorder = [on | off]
Apakah akan menambahkan dukungan perekaman video menggunakan FFMPEG ke klien. Nilai default aktif.
-Ddownload_gtest = [on | off]
Apakah akan mengunduh dan mengkompilasi gtest. Berguna jika GTEST tidak diinstal dan, untuk pengguna Linux, tidak ada paket yang cocok untuk menyediakannya. Nilai default dimatikan.
-Ddev = [on | off]
Apakah akan mengoptimalkan pengembangan, sedikit mempercepat proses kompilasi. Jika diaktifkan, jangan menghasilkan barang yang diperlukan untuk pengemasan. Pengaturan ke ON akan mengatur cmake_build_type ke debug secara default. Nilai default dimatikan.
-Dupnp = [on | off]
Apakah akan mengaktifkan dukungan UPNP untuk server. Anda perlu menginstal libminiupnpc-dev di debian, miniupnpc di Arch Linux. Nilai default dimatikan.
-Dvulkan = [on | off]
Apakah akan mengaktifkan backend vulkan. Pada Windows Anda perlu menginstal Vulkan SDK dan mengatur bendera lingkungan VULKAN_SDK yang sesuai. Nilai default aktif untuk Windows X86_64 dan Linux, dan OFF untuk Windows X86 dan MacOS.
-Gninja
Gunakan sistem build ninja alih -alih membuat. Ini secara otomatis memparalelkan build dan umumnya lebih cepat. Kompilasi dengan ninja bukannya make . Instal Ninja dengan sudo apt install ninja-build di debian, sudo pacman -S --needed ninja di arch linux.
-Dcmake_cxx_link_flags = [flags]
Bendera khusus untuk disetel untuk kompiler saat menautkan.
-Dexception_handling = [on | off]
Aktifkan penanganan pengecualian (hanya berfungsi dengan jendela sampai sekarang, menggunakan drmingw di sana). Nilai default dimatikan.
-Dipo = [on | off]
Aktifkan optimasi interprocedural, juga dikenal sebagai Link Time Optimization (LTO). Nilai default dimatikan.
-Dfuse_ld = [off | linker]
Penghubung untuk digunakan. Nilai default dimatikan untuk mencoba cetakan, lld, emas.
-Dsecurity_compiler_flags = [on | off]
Apakah akan menetapkan bendera kompiler yang relevan dengan keamanan seperti -D_FORTIFY_SOURCE=2 dan -fstack-protector-all . Nilai default aktif.
Untuk menjalankan tes, Anda perlu menginstal perpustakaan berikut libgtest-dev .
Perpustakaan ini tidak dikompilasi, jadi Anda harus melakukannya:
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 Untuk menjalankan tes, Anda harus menargetkan run_tests dengan membuat: make run_tests
Kami menggunakan klang-format 10 untuk memformat kode C ++ dari proyek ini. Jalankan scripts/fix_style.py Setelah mengubah kode untuk memastikan kode diformat dengan benar, pemeriksa gaya pusat GitHub akan melakukan hal yang sama dan mencegah perubahan Anda dari dikirimkan.
Di Arch Linux Anda dapat menginstal Paket AUR Clang-Format 10 menggunakan klang-format-statis-bin AUR. Pada macOS Anda dapat menginstal klang-format 10 menggunakan keran 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 dan Memcheck berguna untuk menemukan masalah kode dengan lebih mudah. Harap gunakan untuk menguji perubahan Anda jika Anda bisa.
Untuk asan+ubsan dikompilasi dengan:
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 .
makedan jalankan dengan:
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 ./DDNetPeriksa file San.* Setelah itu. Ini menemukan lebih banyak masalah daripada memcheck, berjalan lebih cepat, tetapi membutuhkan kompiler GCC/Clang modern.
Untuk valgrind's memcheck mengkompilasi debug build dan run normal dengan: valgrind --tool=memcheck ./DDNet mengharapkan perlambatan besar.
Unduh dan instal beberapa versi Microsoft Visual Studio (pada saat penulisan, komunitas MSVS 2022) dengan dukungan C ++ .
Anda harus menginstal Python 3 dan Rust juga.
Pastikan alat build MSVC, alat C ++ CMake dan versi Windows SDK terbaru yang sesuai dengan versi Windows Anda dipilih di penginstal.
Sekarang buka folder proyek Anda, Visual Studio harus secara otomatis mendeteksi dan mengkonfigurasi proyek Anda menggunakan CMake.
Di hotbar Tools Anda di sebelah tombol "Run" Triangular, Anda sekarang dapat memilih apa yang ingin Anda mulai (misalnya Game-Client atau Game-Server) dan bangun.
Pertama, Anda perlu menginstal alat build MSVC, Python 3 serta Rust.
Untuk mengkompilasi dan membangun DDNET di Windows, gunakan IDE pilihan Anda baik dengan integrasi cmake (misalnya kode studio visual), atau oleh Tercerahkan menggunakan cmake gui.
Konfigurasikan CMake untuk menggunakan alat build MSVC yang sesuai dengan sistem Anda dengan instruksi IDE Anda.
Jika Anda menggunakan kode Visual Studio, Anda dapat menggunakan ekstensi CMake Tools untuk mengonfigurasi dan membangun proyek.
Anda kemudian dapat membuka folder proyek di VSC dan tekan Ctrl+Shift+P untuk membuka palet perintah, lalu cari CMake: Configure
Ini akan membuka prompt bagi Anda untuk memilih kit, pilih versi Visual Studio Anda dan simpan. Anda sekarang dapat menggunakan GUI (kiri bawah) untuk menyusun dan membangun proyek Anda.
Instal Mingw Cross-Compilers dari Formulir i686-w64-mingw32-gcc (32 bit) atau x86_64-w64-mingw32-gcc (64 bit). Ini mungkin bagian yang sulit. ;)
Kemudian tambahkan -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mingw64.toolchain ke baris perintah cmake awal .
Instal EMScripten Cross-Compilers (mis. sudo apt install emscripten ) pada distro Linux modern.
Jika Anda perlu mengkompilasi ddnet-libs untuk WebAssembly, cukup hubungi
# <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 dari direktori sumber proyek. Ini akan secara otomatis membuat direktori yang disebut ddnet-libs . Anda kemudian dapat secara manual menggabungkan direktori ini dengan yang ada di direktori sumber ddnet.
Kemudian jalankan emcmake cmake .. -DVIDEORECORDER=OFF -DVULKAN=OFF -DSERVER=OFF -DTOOLS=OFF -DPREFER_BUNDLED_LIBS=ON di direktori build Anda.
Untuk menguji kode yang dikompilasi secara lokal, cukup gunakan emrun --browser firefox DDNet.html
Untuk meng -host file .html yang dikompilasi, salin semua .data , .html , .js , .wasm file ke server web. (lihat /other/emscripten/minimal.html untuk contoh html minimal)
Kemudian aktifkan kebijakan Cross Origin. Contoh untuk Apache2 tentang distro berbasis 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 Instal OsxCross, lalu tambahkan -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/darwin.toolchain dan -DCMAKE_OSX_SYSROOT=/path/to/osxcross/target/SDK/MacOSX10.11.sdk/ ke saluran cmake awal .
Instal dmg dan hfsplus dari libdmg-hfsplus dan newfs_hfs dari diskdev_cmds untuk membuka kunci target package_dmg yang mengeluarkan gambar disk 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 (sendok)
scoop bucket add games
scoop install games/ddnet
DDNET tersedia di phoronix test suite. Jika Anda memiliki PTS yang diinstal, Anda dapat dengan mudah membandingkan DDNET pada sistem Anda sendiri seperti ini:
$ phoronix-test-suite benchmark ddnet Pertama, gunakan alat yang lebih baik daripada git blame itu sendiri, misalnya tig . Mungkin ada UI yang bagus untuk Windows juga. Atau, gunakan UI GitHub, klik "Salahkan" dalam tampilan file apa pun.
Untuk tig , gunakan tig blame path/to/file.cpp untuk membuka tampilan menyalahkan, Anda dapat menavigasi dengan tombol panah atau KJ, tekan koma untuk pergi ke revisi sebelumnya dari baris saat ini, q untuk berhenti.
Hanya dengan begitu Anda juga dapat mengatur git untuk mengabaikan revisi pemformatan tertentu:
git config blame.ignoreRevsFile formatting-revs.txtSalin file deteksi dan sintaksis file ke folder VIM Config Anda:
# vim
cp -R other/vim/ * ~ /.vim/
# neovim
cp -R other/vim/ * ~ /.config/nvim/