私たち自身のddraceの風味、Teeworlds mod。詳細については、Webサイトをご覧ください。
開発の議論は、Quakenet(WebChat)の#DDNETまたは開発者チャネルのDiscordで行われます。
DDNET Webサイトでバイナリリリースを取得したり、Steamで見つけたり、リポジトリからインストールしたりできます。
ソースコードについて知りたい場合は、Wikiの開発記事を確認できます。
完全な履歴と外部ライブラリ(〜350 MB)でこのリポジトリをクローンするには:
git clone --recursive https://github.com/ddnet/ddnet
システムに必要なライブラリが既にある場合(〜220 MB)、このリポジトリを完全な履歴でクローンするには:
git clone https://github.com/ddnet/ddnet
ライブラリをhttps://github.com/ddnet/ddnet-libs(〜40 mb)に移動して以来、このリポジトリを履歴でクローンするには:
git clone --shallow-exclude=included-libs https://github.com/ddnet/ddnet
以前にddnetを使用せずにクローンした場合、または浅いクローンの代わりにddnet-libsの履歴が必要な場合は、ライブラリをクローンします。
git submodule update --init --recursive
必要なライブラリをシステムにインストールできますtouch CMakeLists.txtデフォルトでシステム全体のライブラリを使用します。必要なすべての依存関係をインストールして、このようなDebianまたはUbuntuにcmakeすることができます。
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をインストールしないでください。代わりに、最近のGTEST/GMOCKバージョンを取得するために構築するときに-DDOWNLOAD_GTEST=ON設定します。
古い分布では、 rustcバージョンが古すぎるかもしれません。最新のRustコンパイラを取得するには、代わりに安定したチャネルでRustupを使用するか、 rustc-mozillaパッケージを試してみてください。
または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
またはこのようなfedoraで:
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
またはこのようなgentooで:
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、すべてx86、x86_64)にバンドルされています。公式ビルド用のバンドルライブラリは現在、DDNET-LIBSサブモジュールにあります。ローカルで構築および開発するときは、とにかくすべての依存関係を含むとは限らないDDNET-LIBSサブモジュールに依存するのではなく、システムのパッケージマネージャーを使用して依存関係をインストールする必要があることに注意してください(OpenSSL、Vulkanなど)。依存関係を取得する方法については、前のセクションを参照してください。または、いくつかの機能とその依存関係を無効にする方法については、次のビルド引数を参照してください( -DVULKAN=OFF Vulkanを必要としません)。
以下は、ビルド時間でオプションを有効または無効にするために、 cmakeコマンドラインツールに渡すことができるビルド引数の網羅的ではないリストです。
-dcmake_build_type = [リリース| debug | relwithdebinfo | minsizerel]
ビルドタイプを設定するためのオプションのcmake変数。設定されていない場合、 -DDEV=ONが使用されていない場合、デフォルトは「リリース」し、 -DDEV=ONが使用されている場合は「デバッグ」します。詳細については、 CMAKE_BUILD_TYPE cmakeドキュメントを参照してください。
-dprefer_bundled_libs = [on | off]
システムライブラリよりもバンドルされたライブラリを好むかどうか。オンに設定すると、DDNETの使用サードパーティライブラリがddnet-libsフォルダーで利用可能になります。これは、上記のDDNET-LIBSリポジトリのgit-submoduleターゲットです。これらのライブラリがインストールされておらず、構築を避けたい場合に役立ちます。オフに設定すると、システムライブラリが見つからない場合にのみバンドルライブラリを使用します。デフォルト値がオフです。
-dwebsockets = [on | off]
サーバーのWebSocketサポートを有効にするかどうか。オンに設定するには、 libwebsockets-devライブラリがインストールされます。デフォルト値がオフです。
-dmysql = [on | off]
サーバーのmysql/mariadbサポートを有効にするかどうか。少なくともmysql 8.0またはmariadb 10.2が必要です。オンに設定するには、 libmariadbclient-devライブラリがインストールされます。これは、共通のプラットフォームのバンドルライブラリとしても提供されます。デフォルト値がオフです。
バンドルされたMySQLライブラリは、システムで適切に機能しない場合があることに注意してください。たとえば、別のユーザーを選択しているときにrootとして接続する場合、MySQLサーバーの接続問題に遭遇した場合は、MySQLクライアントのシステムライブラリをインストールしてください。 Cmake構成の概要に、バンドルされていないMySQL Libsが見つかったことを確認してください(「バンドルされたLIBを使用する」ことはありません)。
-dtest_mysql = [on | off]
GTESTベースのテストでMySQL/MariaDBサポートをテストするかどうか。デフォルト値がオフです。
これには、このセットアップを使用して、LocalHostで実行中のmysql/mariadbデータベースが必要であることに注意してください。
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サポートを有効にするかどうか。 debianにlibminiupnpc-dev 、arch linuxにminiupnpcインストールする必要があります。デフォルト値がオフです。
-dvulkan = [on | off]
Vulkanバックエンドを有効にするかどうか。 Windowsでは、Vulkan SDKをインストールし、それに応じてVULKAN_SDK環境フラグを設定する必要があります。 Windows X86_64およびLinuxではデフォルト値がオンになり、Windows X86およびMacOSの場合はオフです。
-gninja
メーカーの代わりに忍者ビルドシステムを使用します。これにより、ビルドの自動化が平行になり、一般的に高速になります。 makeの代わりにninjaとコンパイルします。 Debianにsudo apt install ninja-buildにsudo pacman -S --needed ninjaをインストールします。
-dcmake_cxx_link_flags = [flags]
リンク時にコンパイラ用に設定するカスタムフラグ。
-dexception_handling = [on | off]
例外処理を有効にします(今のところWindowsでのみ動作し、Dringwを使用しています)。デフォルト値がオフです。
-dipo = [on | off]
リンク時間最適化(LTO)とも呼ばれる我調的な最適化を有効にします。デフォルト値がオフです。
-dfuse_ld = [off | linker]
使用するリンカー。デフォルト値は、金型、LLD、ゴールドを試すためにオフです。
-dsecurity_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テストを実行するには、make: make run_testsでrun_testsターゲットにする必要があります
Clang-Format 10を使用して、このプロジェクトのC ++コードをフォーマットします。 scripts/fix_style.pyコードを変更してコードが適切にフォーマットされたことを確認した後、Github Central Style Checkerは同じことを行い、変更が送信されないようにします。
Arch Linuxでは、Clang-Format-format-static-Bin AURパッケージを使用してClang-format 10をインストールできます。 MacOSでは、自家製のタップを使用してClang-Format 10をインストールできます。
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のMemCheckの場合、通常のデバッグビルドをコンパイルし、 valgrind --tool=memcheck ./DDNetで実行します。
C ++サポートを使用して、Microsoft Visual Studioのバージョン(執筆時点で、MSVSコミュニティ2022)をダウンロードしてインストールします。
Python 3とRustの両方をインストールする必要があります。
MSVCビルドツール、C ++ Cmake-Tools、およびWindowsバージョンに適した最新のWindows SDKバージョンがインストーラーで選択されていることを確認してください。
プロジェクトフォルダーを開くと、Visual StudioはCmakeを使用してプロジェクトを自動的に検出して構成する必要があります。
Triangularの「実行」ボタンの隣のツールHotbarで、開始するもの(ゲームクライアントやゲームサーバーなど)を選択して作成できます。
まず、MSVCビルドツール、Python 3、およびRustをインストールする必要があります。
WindowsでDDNETをコンパイルして構築するには、CMAKE統合(Visual Studio Codeなど)で選択したIDEを使用するか、非推奨cmake guiを使用します。
IDEの指示により、システムに適したMSVCビルドツールを使用するようにCmakeを構成します。
Visual Studioコードを使用している場合は、CMakeツール拡張機能を使用してプロジェクトを構成および構築できます。
次に、VSCでプロジェクトフォルダを開き、 Ctrl+Shift+Pを押してコマンドパレットを開き、 CMake: Configureを検索できます
これにより、キットを選択し、 Visual Studioバージョンを選択して保存するためのプロンプトが開きます。これで、GUI(左下)を使用してプロジェクトをコンパイルして構築できます。
フォームi686-w64-mingw32-gcc (32ビット)またはx86_64-w64-mingw32-gcc (64ビット)のMINGWクロスコンパイラーをインストールします。これはおそらく難しい部分です。 ;)
次に、 -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mingw64.toolchain最初のcmakeコマンドラインに追加します。
最新のLinuxディストリビューションにemscriptenクロスコンパイラー( sudo apt install emscripten )をインストールします。
WebAssembly用にDDNET-LIBSをコンパイルする必要がある場合は、電話をかけるだけです
# <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ソースディレクトリのディレクトリと手動でマージできます。
次に、 emcmake cmake .. -DVIDEORECORDER=OFF -DVULKAN=OFF -DSERVER=OFF -DTOOLS=OFF -DPREFER_BUNDLED_LIBS=ON実行します。
コンパイルされたコードをローカルでテストするには、 emrun --browser firefox DDNet.htmlを使用するだけです
コンパイルされた.htmlファイルをホストするには、すべての.data 、 .html 、 .js 、 .wasmファイルをWebサーバーにコピーします。 (最小限のHTML例については、/other/emscripten/minimal.htmlを参照してください)
次に、クロスオリジンポリシーを有効にします。 DebianベースのディストリビューションのApache2の例:
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 restartOSXCROSSをインストールしてから、 -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/darwin.toolchainおよび-DCMAKE_OSX_SYSROOT=/path/to/osxcross/target/SDK/MacOSX10.11.sdk/ toを追加します。
libdmg-hfsplusおよびnewfs_hfsからdmgとhfsplusをdiskdev_cmdsからインストールして、macosディスクイメージを出力するpackage_dmgターゲットのロックを解除します。
$ 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 bucket add games
scoop install games/ddnet
DDNETは、Phoronixテストスイートで利用できます。 PTSをインストールしている場合は、このようなシステムでDDNETを簡単にベンチマークできます。
$ phoronix-test-suite benchmark ddnetまず、 git blame tigも優れたツールを使用してください。おそらくWindowsにも良いUIがあります。または、Github UIを使用して、ファイルビューで「非難」をクリックします。
tigの場合、 tig blame path/to/file.cppを使用して非難ビューを開きます。矢印キーまたはKJでナビゲートして、コンマを押して現在の行の前の改訂版に移動します。
その場合にのみ、特定のフォーマットリビジョンを無視するためにGitを設定することもできます。
git config blame.ignoreRevsFile formatting-revs.txtファイルの検出と構文ファイルをVIM構成フォルダーにコピーします。
# vim
cp -R other/vim/ * ~ /.vim/
# neovim
cp -R other/vim/ * ~ /.config/nvim/