우리 자신의 DDRACE, Teeworlds 모드. 자세한 내용은 웹 사이트를 참조하십시오.
개발 토론은 Quakenet (webchat)의 #ddnet 또는 Developer Channel의 Discord에서 발생합니다.
DDNet 웹 사이트에서 바이너리 릴리스를 얻거나 Steam에서 찾거나 저장소에서 설치할 수 있습니다.
소스 코드에 대해 배우려면 Wiki의 개발 기사를 확인할 수 있습니다.
이 저장소를 전체 기록 및 외부 라이브러리로 복제하려면 (~ 350MB) :
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 수 있으며 Cmake는 기본적으로 시스템 전체 라이브러리를 사용합니다. 필요한 모든 종속성을 설치하고 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
또는 다음과 같은 페도라에서 :
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
또는 이와 같은 아치 리눅스에서 :
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에서는 홈브류를 사용하여 다음과 같은 빌드 종속성을 설치할 수 있습니다.
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, All X86 및 X86_64)과 공식 빌드를 위해 가장 일반적인 플랫폼 (Windows, Mac, Linux, All x86 및 x86_64)을 위해 추가 라이브러리가 필요합니다. 공식 빌드 용 번들 라이브러리는 이제 DDNet-Libs 하위 모듈에 있습니다. 로컬로 구축하고 개발할 때는 어쨌든 모든 종속성을 포함하지 않는 DDNet-Libs 하위 모드에 의존하는 대신 시스템 패키지 관리자를 사용하여 종속성을 설치해야합니다 (예 : OpenSSL, Vulkan). 종속성을 얻는 방법은 이전 섹션을 참조하십시오. 또는 일부 기능 및 해당 종속성을 비활성화하는 방법에 대한 다음 빌드 인수를 참조하십시오 ( -DVULKAN=OFF Vulkan이 필요하지 않음).
다음은 빌드 시간에 옵션을 활성화 또는 비활성화하기 위해 cmake 명령 줄 도구로 전달할 수있는 비수색의 빌드 인수 목록입니다.
-dcmake_build_type = [릴리스 | 디버그 | relwithdebinfo | minsizerel]
빌드 유형을 설정하기위한 선택적 CMAKE 변수. 설정하지 않으면 기본값은 "릴리스"로 표시되면 -DDEV=ON 사용되지 않고 -DDEV=ON 사용되는 경우 "디버그"가 사용됩니다. 자세한 내용은 CMAKE 문서의 CMAKE_BUILD_TYPE 참조하십시오.
-dprefer_bundled_libs = [on | off]
시스템 라이브러리보다 번들 라이브러리를 선호할지 여부. ON 설정을 사용하면 ddnet-libs 폴더에서 DDNet 라이브러리를 사용할 수 있습니다.이 폴더는 위에서 언급 한 DDNet-Libs 저장소의 Git-SubModule 대상 인 DDNet-Libs 폴더에서 사용할 수 있습니다. 라이브러리를 설치하지 않고 구축을 피하려는 경우 유용합니다. OFF로 설정된 경우 시스템 라이브러리를 찾을 수없는 경우 번들 라이브러리 만 사용합니다. 기본값이 꺼져 있습니다.
-dwebsockets = [on | off]
서버에 대한 WebSocket 지원을 활성화할지 여부. 설정하려면 libwebsockets-dev 라이브러리가 설치되어야합니다. 기본값이 꺼져 있습니다.
-dmysql = [on | off]
서버에 대한 mysql/mariadb 지원을 활성화할지 여부. 적어도 MySQL 8.0 또는 Mariadb 10.2가 필요합니다. 설정하려면 libmariadbclient-dev 라이브러리가 설치되어 있으며 공통 플랫폼의 번들 라이브러리로도 제공됩니다. 기본값이 꺼져 있습니다.
번들 된 MySQL 라이브러리는 시스템에서 제대로 작동하지 않을 수 있습니다. MySQL 서버와 연결 문제가 발생하는 경우 예를 들어 다른 사용자를 선택하는 동안 루트로 연결되는 경우 MySQL 클라이언트를 위해 시스템 라이브러리를 설치하십시오. CMAKE 구성 요약에 묶지 않은 MySQL 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를 활성화할지 여부. Packagers는 패키지에 대해이를 비활성화 할 수 있습니다. Windows 및 Linux의 경우 기본값이 켜져 있습니다.
-dclient = [on | off]
클라이언트 컴파일 활성화 여부. 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 빌드 시스템을 사용하십시오. 이것은 자동으로 빌드와 유사하며 일반적으로 더 빠릅니다. make 대신 ninja 로 컴파일하십시오. sudo apt install ninja-build Debian, sudo pacman -S --needed ninja 설치하십시오.
-dcmake_cxx_link_flags = [플래그]
링크 할 때 컴파일러에 맞게 설정할 맞춤형 플래그.
-dexception_handling = [on | off]
예외 처리 활성화 (현재 Windows에서만 작동하고 Drmingw를 사용합니다). 기본값이 꺼져 있습니다.
-dipo = [on | off]
링크 시간 최적화 (LTO)라고도하는 간호 적 최적화를 활성화합니다. 기본값이 꺼져 있습니다.
-dfuse_ld = [OFF | 링커]
사용할 링커. Mold, LLD, Gold를 시도하려면 기본값이 꺼져 있습니다.
-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를 사용하여 run_tests 대상으로해야합니다. make run_tests
우리는 Clang-Format 10을 사용 하여이 프로젝트의 C ++ 코드를 포맷합니다. scripts/fix_style.py 실행 코드를 변경 한 후 코드가 올바르게 형식화되도록 GitHub Central 스타일 검사기는 동일하게 수행하고 변경 사항이 제출되는 것을 방지합니다.
Arch Linux에서는 Clang-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 ./DDNetSAN을 확인하십시오.* 나중에 파일을 확인하십시오. 이것은 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 "Run"버튼 옆에있는 도구 핫바에서 시작하려는 내용 (예 : 게임 클라이언트 또는 게임 서버)을 선택하고 빌드 할 수 있습니다.
먼저 MSVC 빌드 도구, Python 3 및 Rust를 설치해야합니다.
Windows에서 DDNet을 컴파일하고 빌드하려면 CMAKE 통합 (예 : Visual Studio Code)과 함께 선택한 IDE를 사용하거나 더 이상 사용되지 않았습니다 CMAKE GUI 사용.
CMAKE를 구성하여 IDE의 지침에 따라 시스템에 적합한 MSVC 빌드 도구를 사용하도록 구성하십시오.
Visual Studio Code를 사용하는 경우 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 Cross-Compilers (예 : 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 on your build directory.
컴파일 된 코드를 로컬로 테스트하려면 emrun --browser firefox DDNet.html 만 사용하십시오.
컴파일 된 .html 파일을 호스팅하려면 모든 .data , .html , .js , .wasm 파일을 웹 서버로 복사합니다. (최소 HTML 예제는 /other/emscripten/minimal.html 참조)
그런 다음 교차 원산지 정책을 활성화하십시오. 데비안 기반 배포판의 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 restart OsxCross를 설치 한 다음 -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/darwin.toolchain 및 -DCMAKE_OSX_SYSROOT=/path/to/osxcross/target/SDK/MacOSX10.11.sdk/ 초기 CMake 명령 줄에 추가하십시오.
diskdev_cmds에서 libdmg-hfsplus 및 newfs_hfs 에서 dmg 및 hfsplus 설치하여 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.cfg데비안/우분투
$ apt-get install ddnet
마코스
$ brew install --cask ddnet페도라
$ dnf install ddnet아치 리눅스
$ yay -S ddnetfreebsd
$ pkg install DDNetWindows (Scoop)
scoop bucket add games
scoop install games/ddnet
DDNet은 Phoronix 테스트 스위트에서 제공됩니다. PTS를 설치 한 경우 다음과 같은 자체 시스템에서 DDNet을 쉽게 벤치마킹 할 수 있습니다.
$ phoronix-test-suite benchmark ddnet 먼저, git blame 자체 (예 : tig 보다 더 나은 도구를 사용하십시오. Windows에도 좋은 UI가있을 것입니다. 또는 GitHub UI를 사용하여 파일보기에서 "Blame"을 클릭하십시오.
tig 의 경우 tig blame path/to/file.cpp 사용하여 Blame보기를 열면 Arrow Keys 또는 KJ로 탐색 할 수 있습니다. Comma를 눌러 현재 선 (Q)의 이전 개정판으로 이동하십시오.
그래야만 특정 서식 개정을 무시하기 위해 GIT를 설정할 수도 있습니다.
git config blame.ignoreRevsFile formatting-revs.txt파일 감지 및 구문 파일을 VIM 구성 폴더로 복사하십시오.
# vim
cp -R other/vim/ * ~ /.vim/
# neovim
cp -R other/vim/ * ~ /.config/nvim/