diff --git a/.ci/configure-ffmpeg.sh b/.ci/configure-ffmpeg.sh new file mode 100755 index 000000000..ee81dfab9 --- /dev/null +++ b/.ci/configure-ffmpeg.sh @@ -0,0 +1,76 @@ +#!/bin/sh -e + +OPTS_COMMON="--disable-everything \ + --enable-decoder=theora \ + --enable-decoder=vorbis \ + --enable-decoder=idcin \ + --enable-decoder=pcm_* \ + --disable-decoder=pcm_bluray \ + --disable-decoder=pcm_dvd \ + --disable-decoder=pcm_alaw_at \ + --disable-decoder=pcm_mulaw_at \ + --enable-demuxer=ogg \ + --enable-demuxer=idcin \ + --enable-demuxer=wav \ + --enable-parser=vp3 \ + --enable-parser=vorbis \ + --disable-protocols \ + --enable-protocol=file \ + --disable-avdevice \ + --disable-avfilter \ + --disable-postproc \ + --disable-programs \ + --disable-autodetect \ + --disable-network \ + --disable-doc \ + --disable-swscale-alpha \ + --enable-small \ + --disable-pthreads \ + --disable-w32threads" + +config_linux() { + ../configure --prefix="$1" $OPTS_COMMON +} + +config_win32() { + ../configure \ + --prefix="$1" \ + --cross-prefix=i686-w64-mingw32- \ + --arch=x86 \ + --target-os=mingw32 \ + --extra-cflags='-msse2 -mfpmath=sse' \ + $OPTS_COMMON +} + +config_win64() { + ../configure \ + --prefix="$1" \ + --cross-prefix=x86_64-w64-mingw32- \ + --arch=x86 \ + --target-os=mingw64 \ + $OPTS_COMMON +} + +usage() { + echo "Usage: $0 " + exit 1 +} + +if [ -z "$2" ] ; then + usage +fi + +case "$1" in + --win32) + config_win32 "$2" + ;; + --win64) + config_win64 "$2" + ;; + --linux) + config_linux "$2" + ;; + *) + usage + ;; +esac diff --git a/.ci/i686-w64-mingw32.txt b/.ci/i686-w64-mingw32.txt index 783095616..a28437cd5 100644 --- a/.ci/i686-w64-mingw32.txt +++ b/.ci/i686-w64-mingw32.txt @@ -5,6 +5,7 @@ ar = 'i686-w64-mingw32-ar' strip = 'i686-w64-mingw32-strip' windres = 'i686-w64-mingw32-windres' nasm = 'nasm' +pkg-config = 'pkg-config' [host_machine] system = 'windows' diff --git a/.ci/nightly.sh b/.ci/nightly.sh new file mode 100755 index 000000000..a32f49e46 --- /dev/null +++ b/.ci/nightly.sh @@ -0,0 +1,145 @@ +#!/bin/sh -ex + +MESON_OPTS_COMMON="--auto-features=enabled --fatal-meson-warnings \ + -Dwerror=true -Dwrap_mode=forcefallback" + +MESON_OPTS="$MESON_OPTS_COMMON \ + -Dgame-build-options=optimization=s,b_lto=true \ + -Dsdl2=disabled -Dwayland=disabled -Dx11=disabled" + +SRC_DIR=`pwd` +CI=$SRC_DIR/.ci + +TMP_DIR=$SRC_DIR/q2pro-build +mkdir $TMP_DIR + +export MESON_PACKAGE_CACHE_DIR=$SRC_DIR/subprojects/packagecache + +### Source ### + +REV=$(git rev-list --count HEAD) +SHA=$(git rev-parse --short HEAD) +VER="r$REV~$SHA" +SRC="q2pro-r$REV" + +cd $TMP_DIR +GIT_DIR=$SRC_DIR/.git git archive --format=tar --prefix=$SRC/ HEAD | tar x +echo "$VER" > $SRC/VERSION +rm -rf $SRC/.gitignore $SRC/.ci $SRC/.github +fakeroot tar czf q2pro-source.tar.gz $SRC + +sed -e "s/##VER##/$VER/" -e "s/##DATE##/`date -R`/" $CI/readme-template.txt > README +sed -e "s/##VER##/$VER/" -e "s/##DATE##/`date -R`/" $CI/readme-template-rr.txt > README.rr + +### FFmpeg ### + +cd $TMP_DIR +git clone --depth=1 https://github.com/FFmpeg/FFmpeg.git ffmpeg +cd ffmpeg + +mkdir build-mingw-32 +cd build-mingw-32 +$CI/configure-ffmpeg.sh --win32 $TMP_DIR/ffmpeg-prefix-32 +make -j4 install +cd .. + +mkdir build-mingw-64 +cd build-mingw-64 +$CI/configure-ffmpeg.sh --win64 $TMP_DIR/ffmpeg-prefix-64 +make -j4 install +cd .. + +### Win32 ### + +export PKG_CONFIG_SYSROOT_DIR="$TMP_DIR/ffmpeg-prefix-32" +export PKG_CONFIG_LIBDIR="$PKG_CONFIG_SYSROOT_DIR/lib/pkgconfig" + +cd $TMP_DIR +meson setup --cross-file $CI/i686-w64-mingw32.txt $MESON_OPTS build-mingw-32 $SRC +cd build-mingw-32 +ninja +i686-w64-mingw32-strip q2pro.exe q2proded.exe gamex86.dll + +unix2dos -k -n ../$SRC/LICENSE LICENSE.txt ../$SRC/doc/client.asciidoc MANUAL.txt ../README README.txt +mkdir baseq2 +cp -a ../$SRC/src/client/ui/q2pro.menu baseq2/ +mv gamex86.dll baseq2/ + +zip -9 ../q2pro-client_win32_x86.zip \ + q2pro.exe \ + LICENSE.txt \ + MANUAL.txt \ + README.txt \ + baseq2/q2pro.menu \ + baseq2/gamex86.dll + +unix2dos -k -n ../$SRC/doc/server.asciidoc MANUAL.txt +zip -9 ../q2pro-server_win32_x86.zip \ + q2proded.exe \ + LICENSE.txt \ + MANUAL.txt \ + README.txt + +### Win64 ### + +export PKG_CONFIG_SYSROOT_DIR="$TMP_DIR/ffmpeg-prefix-64" +export PKG_CONFIG_LIBDIR="$PKG_CONFIG_SYSROOT_DIR/lib/pkgconfig" + +cd $TMP_DIR +meson setup --cross-file $CI/x86_64-w64-mingw32.txt $MESON_OPTS build-mingw-64 $SRC +cd build-mingw-64 +ninja +x86_64-w64-mingw32-strip q2pro.exe q2proded.exe gamex86_64.dll + +unix2dos -k -n ../$SRC/LICENSE LICENSE.txt ../$SRC/doc/client.asciidoc MANUAL.txt ../README README.txt +mkdir baseq2 +cp -a ../$SRC/src/client/ui/q2pro.menu baseq2/ +mv gamex86_64.dll baseq2/ +mv q2pro.exe q2pro64.exe +mv q2proded.exe q2proded64.exe + +zip -9 ../q2pro-client_win64_x64.zip \ + q2pro64.exe \ + LICENSE.txt \ + MANUAL.txt \ + README.txt \ + baseq2/q2pro.menu \ + baseq2/gamex86_64.dll + +unix2dos -k -n ../$SRC/doc/server.asciidoc MANUAL.txt +zip -9 ../q2pro-server_win64_x64.zip \ + q2proded64.exe \ + LICENSE.txt \ + MANUAL.txt \ + README.txt + +### Win64-rerelease ### + +cd $TMP_DIR +git clone https://github.com/skullernet/q2pro-rerelease-dll.git +cd q2pro-rerelease-dll +meson setup --cross-file $CI/x86_64-w64-mingw32.txt $MESON_OPTS_COMMON build-mingw +ninja -C build-mingw +x86_64-w64-mingw32-strip build-mingw/gamex86_64.dll +cd etc +zip -9 ../build-mingw/q2pro.pkz default.cfg q2pro.menu + +cd $TMP_DIR/build-mingw-64 + +mv q2pro64.exe q2pro.exe +cp -a ../q2pro-rerelease-dll/build-mingw/q2pro.pkz baseq2/ +cp -a ../q2pro-rerelease-dll/build-mingw/gamex86_64.dll baseq2/ +unix2dos -k -n ../$SRC/doc/client.asciidoc MANUAL.txt ../README.rr README.txt + +zip -9 ../q2pro-rerelease-client_win64_x64.zip \ + q2pro.exe \ + LICENSE.txt \ + MANUAL.txt \ + README.txt \ + baseq2/q2pro.pkz \ + baseq2/gamex86_64.dll + +### Version ### + +cd $TMP_DIR +echo $VER > version.txt diff --git a/.ci/readme-template-rr.txt b/.ci/readme-template-rr.txt new file mode 100644 index 000000000..ac6488334 --- /dev/null +++ b/.ci/readme-template-rr.txt @@ -0,0 +1,13 @@ +Welcome to Q2PRO, an enhanced Quake 2 client and server. + +Version ##VER## has been automatically built ##DATE## +from git master branch. + +Installation: extract this archive into new directory, then create shortcut to +q2pro.exe with the following command line: + + q2pro.exe +set basedir "" +set homedir "." + +For information on using and configuring Q2PRO, refer to MANUAL file. + +Project homepage: https://github.com/skullernet/q2pro diff --git a/.ci/readme-template.txt b/.ci/readme-template.txt new file mode 100644 index 000000000..57be9c249 --- /dev/null +++ b/.ci/readme-template.txt @@ -0,0 +1,10 @@ +Welcome to Q2PRO, an enhanced Quake 2 client and server. + +Version ##VER## has been automatically built ##DATE## +from git master branch. + +Installation: extract this archive into your Quake 2 directory. + +For information on using and configuring Q2PRO, refer to MANUAL file. + +Project homepage: https://github.com/skullernet/q2pro diff --git a/.ci/x86_64-w64-mingw32.txt b/.ci/x86_64-w64-mingw32.txt index c61705200..8a2b90c4a 100644 --- a/.ci/x86_64-w64-mingw32.txt +++ b/.ci/x86_64-w64-mingw32.txt @@ -5,6 +5,7 @@ ar = 'x86_64-w64-mingw32-ar' strip = 'x86_64-w64-mingw32-strip' windres = 'x86_64-w64-mingw32-windres' nasm = 'nasm' +pkg-config = 'pkg-config' [host_machine] system = 'windows' diff --git a/.github/ISSUE_TEMPLATE/1_bug_report.md b/.github/ISSUE_TEMPLATE/1_bug_report.md index 0090d1900..97014e003 100644 --- a/.github/ISSUE_TEMPLATE/1_bug_report.md +++ b/.github/ISSUE_TEMPLATE/1_bug_report.md @@ -11,8 +11,7 @@ assignees: '' Make sure the bug is reproducible with latest Q2PRO version. If you compile Q2PRO yourself, update to the latest version from git master. If you are using -prebuilt Windows binaries, update to the latest version available from -https://skuller.net/q2pro/nightly/ +prebuilt Windows binaries, update to the latest nightly build. ### Important information @@ -51,3 +50,8 @@ Provide a link to the log file created by launching `q2pro +set developer 1 If Q2PRO crashes, provide a crash report (Windows) or a backtrace (Linux). On Linux, backtrace can be created by launching Q2PRO with `gdb q2pro --args [...]` and typing `bt` after the crash. + +### Compilation issues + +If reporting a building / compilation issue, provide `meson setup` command +line and full console output. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index de4215172..66853c737 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,17 +23,16 @@ env: MESON_ARGS_WIN: >- -Dsdl2=disabled + -Dx11=disabled -Dwayland=disabled + -Dwindows-egl=true -Dwrap_mode=forcefallback - -Dx11=disabled - - MESON_ARGS_LINUX_WAYLAND: >- - -Dwindows-crash-dumps=disabled - -Dwrap_mode=nofallback - MESON_ARGS_LINUX_X11: >- + MESON_ARGS_LINUX: >- + -Dx11=enabled + -Dwayland=enabled + -Dsdl2=enabled -Dwindows-crash-dumps=disabled - -Dwayland=disabled -Dwrap_mode=nofallback MESON_ARGS_MAC: >- @@ -45,7 +44,7 @@ env: jobs: mingw: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 strategy: matrix: #arch: ["i686", "x86_64"] @@ -116,51 +115,7 @@ jobs: builddir/q2proded.exe builddir/gamex86_64.dll - linux64-x11: - runs-on: ubuntu-20.04 - #runs-on: [self-hosted, x86] - strategy: - matrix: - cc: [gcc, clang] - steps: - - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y python3 python3-pip libsdl2-dev libopenal-dev \ - libpng-dev libjpeg-dev zlib1g-dev mesa-common-dev \ - libcurl4-openssl-dev libx11-dev libxi-dev \ - libavcodec-dev libavformat-dev libavutil-dev \ - libswresample-dev libswscale-dev \ - uuid-dev patchelf - pip3 install meson ninja - - - name: Build - run: | - meson setup ${{ env.MESON_ARGS }} ${{ env.MESON_ARGS_LINUX_X11 }} builddir - meson compile -C builddir - env: - CC: ${{ matrix.cc }} - - - name: patchelf path to discord_game_sdk.so - run: | - patchelf --replace-needed /home/runner/work/q2pro/q2pro/extern/discord/lib/x86_64/discord_game_sdk.so ./discord_game_sdk.so builddir/q2pro - - - name: Set binaries as executable - run: | - chmod +x builddir/q2pro* - - - name: Generate Linux x64 archives - uses: actions/upload-artifact@v4 - with: - name: q2pro-lin-${{ matrix.cc }} - path: | - builddir/q2pro - builddir/q2proded - builddir/gamex86_64.so - - linux64-wayland: + linux64: runs-on: ubuntu-22.04 #runs-on: [self-hosted, x86] strategy: @@ -180,9 +135,16 @@ jobs: libswresample-dev libswscale-dev \ uuid-dev patchelf + - name: Install libjansson libs from source + run: | + wget https://github.com/akheron/jansson/releases/download/v2.14/jansson-2.14.tar.gz + tar xfz jansson-2.14.tar.gz && cd jansson-2.14 + CFLAGS="-fPIC" ./configure + make && sudo make install + - name: Build run: | - meson setup ${{ env.MESON_ARGS }} ${{ env.MESON_ARGS_LINUX_WAYLAND }} builddir + meson setup ${{ env.MESON_ARGS }} ${{ env.MESON_ARGS_LINUX }} builddir meson compile -C builddir env: CC: ${{ matrix.cc }} @@ -198,7 +160,7 @@ jobs: - name: Generate Linux x64 archives uses: actions/upload-artifact@v4 with: - name: q2pro-lin-wayland-${{ matrix.cc }} + name: q2pro-lin-${{ matrix.cc }}-x86_64 path: | builddir/q2pro builddir/q2proded @@ -223,7 +185,7 @@ jobs: - name: Build run: | - meson setup ${{ env.MESON_ARGS }} ${{ env.MESON_ARGS_LINUX_X11 }} builddir + meson setup ${{ env.MESON_ARGS }} ${{ env.MESON_ARGS_LINUX }} builddir meson compile -vC builddir env: CC: ${{ matrix.cc }} @@ -239,16 +201,18 @@ jobs: path: | builddir/q2pro builddir/q2proded - builddir/gamearm.so + builddir/gamearm64.so darwin: - runs-on: macos-13 + runs-on: macos-15-intel steps: - uses: actions/checkout@v4 - name: Install dependencies run: | - brew install pkg-config meson libpng sdl2 openal-soft zlib curl ffmpeg jpeg-turbo + brew install pkg-config meson libpng sdl2 \ + openal-soft zlib curl ffmpeg jpeg-turbo \ + ossp-uuid jansson - name: Build run: | @@ -279,7 +243,7 @@ jobs: - name: Install dependencies run: | - brew install pkg-config meson libpng sdl2 openal-soft zlib curl ffmpeg jpeg-turbo + brew install pkg-config meson libpng sdl2 openal-soft zlib curl ffmpeg jpeg-turbo jansson ossp-uuid - name: Build run: | @@ -301,4 +265,4 @@ jobs: path: | builddir/q2pro builddir/q2proded - builddir/gamex86_64.dylib + builddir/gamearm64.dylib diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 000000000..e0c6988b8 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,48 @@ +name: nightly + +on: + push: + branches: [master] + +permissions: + contents: write + +jobs: + mingw: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: actions/cache@v4 + with: + path: subprojects/packagecache + key: ${{ hashFiles('subprojects/*.wrap') }} + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y gcc-mingw-w64 dos2unix nasm meson ninja-build + + - name: Build + run: ./.ci/nightly.sh + + - name: Update release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release edit nightly -t "Nightly" -n "Latest nightly build `cat q2pro-build/version.txt`." --latest + gh release upload nightly q2pro-build/*.zip q2pro-build/*.tar.gz q2pro-build/version.txt --clobber + + - name: Update tag + uses: actions/github-script@v7 + with: + script: | + github.rest.git.updateRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: "tags/nightly", + sha: context.sha, + force: true + }) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 60aff21af..ec6d83f12 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,28 +35,14 @@ jobs: uses: dawidd6/action-download-artifact@v2 with: workflow: build.yml - name: q2pro-lin-clang + name: q2pro-lin-clang-x86_64 skip_unpack: true - name: Download Linux x64 gcc build artifacts uses: dawidd6/action-download-artifact@v2 with: workflow: build.yml - name: q2pro-lin-gcc - skip_unpack: true - - - name: Download Linux Wayland x64 clang build artifacts - uses: dawidd6/action-download-artifact@v2 - with: - workflow: build.yml - name: q2pro-lin-wayland-clang - skip_unpack: true - - - name: Download Linux Wayland x64 gcc build artifacts - uses: dawidd6/action-download-artifact@v2 - with: - workflow: build.yml - name: q2pro-lin-wayland-gcc + name: q2pro-lin-gcc-x86_64 skip_unpack: true - name: Download Linux ARM x64 build artifacts @@ -119,14 +105,7 @@ jobs: q2pro-mingw-x86_64.zip q2pro-msvc-x64.zip q2pro-lin-arm64.zip - q2pro-lin-gcc.zip - q2pro-lin-clang.zip - q2pro-lin-wayland-gcc.zip - q2pro-lin-wayland-clang.zip + q2pro-lin-gcc-x86_64.zip + q2pro-lin-clang-x86_64.zip q2pro-darwin-x86_64.zip q2pro-darwin-arm64.zip - - - - - diff --git a/.gitignore b/.gitignore index ba9c5317a..a49facb52 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,13 @@ /subprojects/*/ +!/subprojects/packagefiles/ /tags /TAGS /.vs/* /debug/* /.vscode +build.sh +/build_win +clang-build.sh +/bots +/dev +.DS_Store \ No newline at end of file diff --git a/AQtion/AQtion.sln b/AQtion/AQtion.sln new file mode 100644 index 000000000..e1bd941d3 --- /dev/null +++ b/AQtion/AQtion.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34003.232 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AQtion", "AQtion.vcxproj", "{4A622773-BA18-4BAA-9CE1-B05EBF1BCF26}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4A622773-BA18-4BAA-9CE1-B05EBF1BCF26}.Debug|x64.ActiveCfg = Debug|x64 + {4A622773-BA18-4BAA-9CE1-B05EBF1BCF26}.Debug|x64.Build.0 = Debug|x64 + {4A622773-BA18-4BAA-9CE1-B05EBF1BCF26}.Debug|x86.ActiveCfg = Debug|Win32 + {4A622773-BA18-4BAA-9CE1-B05EBF1BCF26}.Debug|x86.Build.0 = Debug|Win32 + {4A622773-BA18-4BAA-9CE1-B05EBF1BCF26}.Release|x64.ActiveCfg = Release|x64 + {4A622773-BA18-4BAA-9CE1-B05EBF1BCF26}.Release|x64.Build.0 = Release|x64 + {4A622773-BA18-4BAA-9CE1-B05EBF1BCF26}.Release|x86.ActiveCfg = Release|Win32 + {4A622773-BA18-4BAA-9CE1-B05EBF1BCF26}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {60B8F3DF-61A0-4888-A375-00AA8FC47296} + EndGlobalSection +EndGlobal diff --git a/AQtion/AQtion.vcxproj b/AQtion/AQtion.vcxproj new file mode 100644 index 000000000..8a2b8b292 --- /dev/null +++ b/AQtion/AQtion.vcxproj @@ -0,0 +1,510 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + {4A622773-BA18-4BAA-9CE1-B05EBF1BCF26} + Win32Proj + + + + Makefile + true + v143 + + + Makefile + false + v143 + + + Makefile + true + v143 + + + Makefile + false + v143 + + + + + + + + + + + + + + + + + + + + + meson_debug_build.bat + $(Configuration)\q2pro.exe + meson_debug_clean.bat + meson_debug_rebuild.bat + _DEBUG;$(NMakePreprocessorDefinitions);HAVE_CONFIG_H + $(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)..\inc\;$(ProjectDir)..\AQtion\Debug\ + $(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)..\inc\;$(ProjectDir)..\AQtion\Debug\ + $(VC_SourcePath);$(ProjectDir)..\inc\;$(ProjectDir)..\AQtion\Debug\ + + + + + meson compile -C $(Configuration) + $(Configuration)\q2pro.exe + meson compile -C $(Configuration) --clean + meson compile -C $(Configuration) --clean && meson compile -C $(Configuration) + WIN32;_DEBUG;$(NMakePreprocessorDefinitions) + + + meson compile -C $(Configuration) + $(Configuration)\q2pro.exe + meson compile -C $(Configuration) --clean + meson compile -C $(Configuration) --clean && meson compile -C $(Configuration) + WIN32;NDEBUG;$(NMakePreprocessorDefinitions) + + + meson_release_build.bat + $(Configuration)\q2pro.exe + meson_release_clean.bat + meson_release_rebuild.bat + NDEBUG;$(NMakePreprocessorDefinitions);HAVE_CONFIG_H + $(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)..\inc\;$(ProjectDir)..\AQtion\Release\ + $(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)..\inc\;$(ProjectDir)..\AQtion\Release\ + $(VC_SourcePath);$(ProjectDir)..\inc\;$(ProjectDir)..\AQtion\Release\ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AQtion/AQtion.vcxproj.filters b/AQtion/AQtion.vcxproj.filters new file mode 100644 index 000000000..2bfc54010 --- /dev/null +++ b/AQtion/AQtion.vcxproj.filters @@ -0,0 +1,1265 @@ + + + + + {c61a0d2c-553c-4c30-99fc-d4b4a48d3430} + + + {16604d31-c8bd-4600-bb35-e75932148736} + + + {3bfe056e-fc94-4586-b6e5-2d61c3d94d75} + + + {0d512c66-3f69-40fe-9eac-4b5f2e83acc4} + + + {4e7d39ec-e832-4f83-b40b-0fe0f25994ec} + + + {fa2692f1-6de4-47a1-980f-1e2ee151d1c7} + + + {004de5cb-77d3-45f2-b691-2381e859416e} + + + {0d262dbb-8f78-4583-8121-b7e741652f9e} + + + {ac4ebd2e-ad94-4ccf-80e3-700df2f47d90} + + + {47522520-13a7-458d-8f4b-ab764e36c3c6} + + + {7b20a963-4c4a-4c24-8f3d-ef02f90b89cc} + + + {38822057-a242-4f4b-8f8a-a23894a14326} + + + {1a1d1677-7b4a-45ef-b9d0-732e7a94e1c9} + + + {0841e986-1b8d-4b96-bfd8-8a8b4aaa4a7c} + + + {801fdf8b-2d69-4c7f-9e10-c9d289c67bf3} + + + {d852dbcc-a2b2-4d37-83b8-6f34c6f1a31f} + + + {b4c8c703-9e90-429c-b693-452e74910af6} + + + {2cc6f960-2e93-4fbe-a1d6-d63436e8f53a} + + + {28be1289-4e68-45eb-b56b-45d58e2e76e9} + + + {4f562c17-8d3b-48ba-ace5-8a7d6170cac8} + + + {d20f24af-8a7e-4dbe-b282-c3b225c892b7} + + + {e0e79ec0-2f49-4838-932e-57f4828eddb8} + + + {91f6f017-c5a1-4b28-9a8c-9fdc1b0f6913} + + + {1cac76d3-ae62-4ed6-900b-c6cd496ddb6b} + + + {e33ae617-0aff-45af-bb30-a2aecce03999} + + + {f527253a-ae71-4b6e-a74a-28d5196b77b7} + + + {b64b950a-f8d6-4edd-8a1d-8553cce7f68c} + + + {f0764e12-fe39-4fa7-a46f-798d44e03d9b} + + + {afdc68cf-b44a-495f-ba71-973712d5da08} + + + {e8a3f168-f2e8-4244-9d28-a2db6a274eb8} + + + {da04e258-7bcf-43e0-8338-b3ccc368b76b} + + + {c4cb9d7f-88de-4bde-9ebf-103302ec9c60} + + + {614cfeeb-ee49-4f30-8238-ca6f95ecb179} + + + {131572c4-f889-4c76-a267-8b1c52ca5d64} + + + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\addons\tngbot + + + src\shared + + + src\shared + + + src\client\ui + + + src\client\ui + + + src\client\ui + + + src\client\ui + + + src\client\ui + + + src\client\ui + + + src\client\ui + + + src\client\sound + + + src\client\sound + + + src\client\sound + + + src\client\sound + + + src\client\sound + + + src\client\sound + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\client + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common + + + src\common\net + + + src\common\net + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\server + + + src\server + + + src\server + + + src\server + + + src\server + + + src\server + + + src\server + + + src\server + + + src\server + + + src\server + + + src\server + + + src\server + + + src\server\mvd + + + src\server\mvd + + + src\server\mvd + + + src\unix\video + + + src\unix\video + + + src\unix\video + + + src\unix\video\keytables + + + src\unix\video\keytables + + + src\unix\sound + + + src\unix + + + src\unix + + + src\unix + + + src\windows + + + src\windows + + + src\windows + + + src\windows + + + src\windows + + + src\windows + + + src\windows + + + src\windows + + + src\windows + + + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + src\action\acebot + + + inc\shared + + + inc\shared + + + inc\shared + + + inc\shared + + + inc\shared + + + inc\shared + + + inc\shared + + + inc\client + + + inc\client + + + inc\client + + + inc\client + + + inc\client + + + inc\client\sound + + + inc\client\sound + + + inc\common\net + + + inc\common\net + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\common + + + inc\format + + + inc\format + + + inc\format + + + inc\format + + + inc\format + + + inc\format + + + inc\format + + + inc\refresh + + + inc\server + + + inc\server\mvd + + + inc\server\mvd + + + inc\system + + + inc\system + + + inc\system + + + src\client\ui + + + src\client\sound + + + src\client\sound + + + src\client + + + src\common + + + src\common\net + + + src\common\net + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\game + + + src\refresh + + + src\refresh + + + src\refresh + + + src\refresh + + + src\server + + + src\server\mvd + + + src\unix\video\keytables + + + src\unix\video\keytables + + + src\unix + + + src\windows + + + src\windows + + + AQtion + + + inc\shared + + + + + src\client\ui + + + src\game + + + src\unix\video + + + src\unix\res + + + src\unix\res + + + src\unix\res + + + src\unix\res + + + src\unix + + + src\windows + + + + + + + + + AQtion + + + AQtion + + + AQtion + + + AQtion + + + AQtion + + + AQtion + + + AQtion + + + AQtion + + + + + src\windows\res + + + src\windows\res + + + src\windows\res + + + src\windows\res + + + src\windows\res + + + src\windows\res + + + + + src\windows\res + + + src\windows\res + + + + + src\windows\res + + + src\windows\res + + + src\windows\res + + + src\windows\res + + + + + + \ No newline at end of file diff --git a/AQtion/AQtion.vcxproj.user b/AQtion/AQtion.vcxproj.user new file mode 100644 index 000000000..7c4fab190 --- /dev/null +++ b/AQtion/AQtion.vcxproj.user @@ -0,0 +1,12 @@ + + + + AQtion\AQtion\q2pro.exe + WindowsLocalDebugger + false + + + AQtion\AQtion\q2pro.exe + WindowsLocalDebugger + + \ No newline at end of file diff --git a/AQtion/README.md b/AQtion/README.md new file mode 100644 index 000000000..b97078cd6 --- /dev/null +++ b/AQtion/README.md @@ -0,0 +1,16 @@ +Building for Microsoft Visual Studio +===== + +AQtion now supports MSVC 2022. + +First time use, create the build directories by running: +- meson_debug_configure.bat +- meson_release_configure.bat + +This should create a AQtion/Debug and AQtion/Release directory. + +Open AQtion.sln in Microsoft Visual Studio 2022 + +Compiling outputs to AQtion/AQtion/ + +You can copy your game assets to this directory to debug in MSVC \ No newline at end of file diff --git a/AQtion/github_pull_update.bat b/AQtion/github_pull_update.bat new file mode 100644 index 000000000..6c8b4dbf7 --- /dev/null +++ b/AQtion/github_pull_update.bat @@ -0,0 +1,6 @@ +@echo off +cd.. +echo Update (pull) from github https://github.com/actionquake/q2pro/tree/sync/aq2-tng +pause +git pull +pause \ No newline at end of file diff --git a/AQtion/meson_debug_build.bat b/AQtion/meson_debug_build.bat new file mode 100644 index 000000000..9eae56515 --- /dev/null +++ b/AQtion/meson_debug_build.bat @@ -0,0 +1,7 @@ +REM Meson DEBUG: build and copy files +cd.. +meson compile -C AQtion\Debug +xcopy /y AQtion\Debug\q2pro.exe AQtion\Debug\..\AQtion\ +xcopy /y AQtion\Debug\q2proded.exe AQtion\Debug\..\AQtion\ +xcopy /y AQtion\Debug\gamex86_64.dll AQtion\Debug\..\AQtion\action\ +pause \ No newline at end of file diff --git a/AQtion/meson_debug_clean.bat b/AQtion/meson_debug_clean.bat new file mode 100644 index 000000000..45be61bc8 --- /dev/null +++ b/AQtion/meson_debug_clean.bat @@ -0,0 +1,3 @@ +REM Meson DEBUG: clean +cd.. +meson compile -C AQtion\Debug --clean \ No newline at end of file diff --git a/AQtion/meson_debug_configure.bat b/AQtion/meson_debug_configure.bat new file mode 100644 index 000000000..560a9f9dc --- /dev/null +++ b/AQtion/meson_debug_configure.bat @@ -0,0 +1,3 @@ +REM Meson DEBUG: Build a 'Debug' build directory +meson -Dwrap_mode=forcefallback -Ddebug=true -Doptimization=0 AQtion\Debug +pause \ No newline at end of file diff --git a/AQtion/meson_debug_rebuild.bat b/AQtion/meson_debug_rebuild.bat new file mode 100644 index 000000000..854011e0a --- /dev/null +++ b/AQtion/meson_debug_rebuild.bat @@ -0,0 +1,8 @@ +REM Meson DEBUG: clean, build, and copy files +cd.. +meson compile -C AQtion\Debug --clean +meson compile -C AQtion\Debug +xcopy /y AQtion\Debug\q2pro.exe AQtion\Debug\..\AQtion\ +xcopy /y AQtion\Debug\q2proded.exe AQtion\Debug\..\AQtion\ +xcopy /y AQtion\Debug\gamex86_64.dll AQtion\Debug\..\AQtion\action\ +pause \ No newline at end of file diff --git a/AQtion/meson_release_build.bat b/AQtion/meson_release_build.bat new file mode 100644 index 000000000..3036bdb97 --- /dev/null +++ b/AQtion/meson_release_build.bat @@ -0,0 +1,7 @@ +REM Meson RELEASE: build and copy files +cd.. +meson compile -C AQtion\Release +xcopy /y AQtion\Release\q2pro.exe AQtion\Release\..\AQtion\ +xcopy /y AQtion\Release\q2proded.exe AQtion\Release\..\AQtion\ +xcopy /y AQtion\Release\gamex86_64.dll AQtion\Release\..\AQtion\action\ +pause \ No newline at end of file diff --git a/AQtion/meson_release_clean.bat b/AQtion/meson_release_clean.bat new file mode 100644 index 000000000..9f131687b --- /dev/null +++ b/AQtion/meson_release_clean.bat @@ -0,0 +1,3 @@ +REM Meson RELEASE: clean +cd.. +meson compile -C AQtion\Release --clean \ No newline at end of file diff --git a/AQtion/meson_release_configure.bat b/AQtion/meson_release_configure.bat new file mode 100644 index 000000000..d73ec8dff --- /dev/null +++ b/AQtion/meson_release_configure.bat @@ -0,0 +1,4 @@ +REM Meson RELEASE: Build a 'Release' build directory +cd.. +meson -Dwrap_mode=forcefallback AQtion\Release --buildtype=debugoptimized +pause \ No newline at end of file diff --git a/AQtion/meson_release_rebuild.bat b/AQtion/meson_release_rebuild.bat new file mode 100644 index 000000000..5302696ee --- /dev/null +++ b/AQtion/meson_release_rebuild.bat @@ -0,0 +1,8 @@ +REM Meson RELEASE: clean, build, and copy files +cd.. +meson compile -C AQtion\Release --clean +meson compile -C AQtion\Release +xcopy /y AQtion\Release\q2pro.exe AQtion\Release\..\AQtion\ +xcopy /y AQtion\Release\q2proded.exe AQtion\Release\..\AQtion\ +xcopy /y AQtion\Release\gamex86_64.dll AQtion\Release\..\AQtion\action\ +pause \ No newline at end of file diff --git a/INSTALL.md b/INSTALL.md index 0fb5c5f73..09d678d64 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -19,6 +19,10 @@ Linux distributions already provide libjpeg-turbo in place of libjpeg. For playing back cinematics in Ogg Theora format and music in Ogg Vorbis format FFmpeg libraries are required. +OpenAL sound backend requires OpenAL Soft development headers for compilation. +At runtime, OpenAL library from any vendor can be used (but OpenAL Soft is +strongly recommended). + To install the *full* set of dependencies for building Q2PRO on Debian or Ubuntu use the following command: @@ -29,6 +33,11 @@ Ubuntu use the following command: libavcodec-dev libavformat-dev libavutil-dev \ libswresample-dev libswscale-dev +If you intend to build just dedicated server, smaller set of dependencies can +be installed: + + apt-get install meson gcc libc6-dev zlib1g-dev + Users of other distributions should look for equivalent development packages and install them. @@ -115,11 +124,14 @@ with SIMD support: Meson needs correct cross build definition file for compilation. Example cross-files can be found in `.ci` subdirectory (available in git -repository, but not source tarball). +repository, but not source tarball). Note that these cross-files are specific +to CI scripts and shouldn't be used directly (you'll need, at least, to +customize default `pkg-config` search path). Refer to Meson documentation for +more info. Setup build directory: - meson setup --cross-file .ci/x86_64-w64-mingw32.txt -Dwrap_mode=forcefallback builddir + meson setup --cross-file x86_64-w64-mingw32.txt -Dwrap_mode=forcefallback builddir Build: diff --git a/README.md b/README.md index b8dfcf74e..e4c4e4089 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,31 @@ Q2PRO ===== -Q2PRO is an enhanced, multiplayer oriented Quake 2 client and server. +Q2PRO is an enhanced Quake 2 client and server for Windows and Linux. Supported +features include: -Features include: - -* rewritten OpenGL renderer optimized for stable FPS -* enhanced client console with persistent history -* ZIP packfiles (.pkz), JPEG and PNG textures, MD3 models -* fast HTTP downloads +* unified OpenGL renderer with support for wide range of OpenGL versions +* enhanced console command completion +* persistent and searchable console command history +* rendering / physics / packet rate separation +* ZIP packfiles (.pkz) +* JPEG/PNG textures +* MD3 and MD5 (re-release) models +* Ogg Vorbis music and Ogg Theora cinematics +* fast and secure HTTP downloads * multichannel sound using OpenAL -* recording from demos, forward and backward seeking -* server side multiview demos and GTV capabilities +* stereo WAV files support +* forward and backward seeking in demos +* recording from demos +* server side multiview demos +* live game broadcasting capabilities +* network protocol extensions for larger maps +* won't crash if game data is corrupted For building Q2PRO, consult the INSTALL.md file. -Nightly Windows builds are available at https://skuller.net/q2pro/ +Q2PRO doesn't have releases. It is always recommended to use the git master +version. For information on using and configuring Q2PRO, refer to client and server manuals available in doc/ subdirectory. diff --git a/action/aq2-server.sh b/action/aq2-server.sh new file mode 100755 index 000000000..e0c9b63f3 --- /dev/null +++ b/action/aq2-server.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +cd .. +while true +do + ./quake2 +set dedicated 1 +set game action +set port 27910 +set ininame config/action.ini +set maplistname config/maplist.ini +set configlistname config/configlist.ini +exec config/aq2_tp.cfg + sleep 10 +done + + diff --git a/action/aq2rtx.pkz b/action/aq2rtx.pkz new file mode 100644 index 000000000..daf39bfe2 Binary files /dev/null and b/action/aq2rtx.pkz differ diff --git a/action/bots/botdata.cfg b/action/bots/botdata.cfg new file mode 100644 index 000000000..93fde41c2 --- /dev/null +++ b/action/bots/botdata.cfg @@ -0,0 +1,9 @@ +!1 +#----------------------------------------# +# Name, Skin, Team, Weapon, Item, Gender # +#----------------------------------------# +#"Leela","terror/urbanterr",1,0,0,F +#"Durandal","terror/urbanterr",1,0,0,M +#"Tycho","terror/urbanterr",1,0,0,M +#"Thoth","terror/urbanterr",1,0,0,N +#"Traxus","terror/urbanterr",1,0,0,M diff --git a/action/config/action.ini b/action/config/action.ini new file mode 100644 index 000000000..ff15a5299 --- /dev/null +++ b/action/config/action.ini @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------------- +// Example action.ini +// +// $Id: action.ini,v 1.1 2001/05/06 17:37:05 igor_rock Exp $ +// +//----------------------------------------------------------------------------- +// $Log: action.ini,v $ +// Revision 1.1 2001/05/06 17:37:05 igor_rock +// Initial revision +// +//----------------------------------------------------------------------------- + +// Anything below maplist and above the # signs will be loaded into Action Quake2's map rotation +// set Actionmaps 1 to enable rotation +// This file must be called action.ini and be in your quake2\action directory. + + +//Set teams to whatever you want, Shotgun Messiah, Terror and Male (and their respective skins) are just examples. + +[team1] +Casa Nostra +messiah/thedon +### +[team2] +S.W.A.T. +terror/swatsnipe +### +[team3] +Flat Foots +male/police +### + +//INSERT CHOSEN MAPNAMES BELOW +[maplist] +actcity2 +rhcity1 +soho +urban2 +actcity2 +museum +riotx +city +police +rhcity3 +teamjungle +cloud +tequila +winter +murder +urban +### + diff --git a/action/config/aq2_2on2.cfg b/action/config/aq2_2on2.cfg new file mode 100644 index 000000000..d0981aaed --- /dev/null +++ b/action/config/aq2_2on2.cfg @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------------- +// Example AQ2 2on2 Config +// +// $Id: aq2_2on2.cfg,v 1.3 2004/10/10 08:01:41 igor_rock Exp $ +// +//----------------------------------------------------------------------------- +// $Log: aq2_2on2.cfg,v $ +// Revision 1.3 2004/10/10 08:01:41 igor_rock +// - deleted barrysworld master server, added working ones +// +// Revision 1.2 2001/06/13 08:39:13 igor_rock +// changed "cvote" to "use_cvote" (like the other votecvars) +// +// Revision 1.1.1.1 2001/05/06 17:37:05 igor_rock +// This is the PG Bund Edition V1.25 with all stuff laying around here... +// +//----------------------------------------------------------------------------- + +game action +gamedir action +// +hostname "-= ActionQuake 2on2 =-" +rcon_password ***changeme*** +// +setmaster 82.165.25.76 213.221.174.165 +// +set maplistname config/maplist.ini +set ininame config/action.ini +set fraglimit 0 +set timelimit 15 +set roundtimelimit 5 +set roundlimit 15 +// +set maxclients 4 +set public 1 +// +set deathmatch 0 +set teamplay 1 +set dmflags 520093696 +set limchasecam 2 +// +set actionmaps 1 +// +set allweapon 0 +set weapons 1 +set items 1 +set ir 1 +set knifelimit 40 +set tgren 1 +set bholelimit 0 +set splatlimit 0 +set shelloff 1 + +// PG BUND Extensions +set use_voice 1 +set use_mapvote 1 +set mapvote_min 2 +set mapvote_need 2 +set mapvote_pass 50 + +set use_kickvote 1 +set kickvote_need 0 +set kickvote_pass 55 +set kickvote_tempban 2 + +set ff_maxkills 10 +set ff_kickat 10 +set voterotation 0 +set allow_download_players 1 + +set use_3teams 0 + +set use_cvote 1 +set cvote_min 2 +set cvote_need 0 +set cvote_pass 60 + +map desperado diff --git a/action/config/aq2_3teams.cfg b/action/config/aq2_3teams.cfg new file mode 100644 index 000000000..ff84bbad8 --- /dev/null +++ b/action/config/aq2_3teams.cfg @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------------- +// Example AQ2 3 Teams Teamplay Config +// +// $Id: aq2_3teams.cfg,v 1.3 2004/10/10 08:01:41 igor_rock Exp $ +// +//----------------------------------------------------------------------------- +// $Log: aq2_3teams.cfg,v $ +// Revision 1.3 2004/10/10 08:01:41 igor_rock +// - deleted barrysworld master server, added working ones +// +// Revision 1.2 2001/06/13 08:39:13 igor_rock +// changed "cvote" to "use_cvote" (like the other votecvars) +// +// Revision 1.1.1.1 2001/05/06 17:37:06 igor_rock +// This is the PG Bund Edition V1.25 with all stuff laying around here... +// +//----------------------------------------------------------------------------- + +game action +gamedir action +// +hostname "-= Action Quake 2 3Team TP =-" +rcon_password ***changeme*** +// +setmaster 82.165.25.76 213.221.174.165 +// +set maplistname config/maplist.ini +set ininame config/action.ini +set fraglimit 0 +set timelimit 15 +set roundtimelimit 4 +set roundlimit 15 +// +set maxclients 15 +set public 1 +// +set deathmatch 0 +set teamplay 1 +set dmflags 520093696 +//set limchasecam 2 +// +set actionmaps 1 +// +set allweapon 0 +set weapons 1 +set items 1 +set ir 1 +set knifelimit 40 +set tgren 1 +set bholelimit 0 +set splatlimit 0 +set shelloff 1 + +// PG BUND Extensions +set use_voice 1 +set use_mapvote 1 +set mapvote_min 2 +set mapvote_need 2 +set mapvote_pass 60 + +set use_kickvote 1 +set kickvote_need 0 +set kickvote_pass 50 +set kickvote_tempban 2 + +set ff_maxkills 10 +set ff_kickat 10 +set voterotation 0 +set allow_download_players 1 + +set use_3teams 1 + +set use_cvote 1 +set cvote_min 2 +set cvote_need 0 +set cvote_pass 60 + +map riotx diff --git a/action/config/aq2_dm.cfg b/action/config/aq2_dm.cfg new file mode 100644 index 000000000..26d504052 --- /dev/null +++ b/action/config/aq2_dm.cfg @@ -0,0 +1,77 @@ +//----------------------------------------------------------------------------- +// Example AQ2 Deathmatch Config +// +// $Id: aq2_dm.cfg,v 1.3 2004/10/10 08:01:41 igor_rock Exp $ +// +//----------------------------------------------------------------------------- +// $Log: aq2_dm.cfg,v $ +// Revision 1.3 2004/10/10 08:01:41 igor_rock +// - deleted barrysworld master server, added working ones +// +// Revision 1.2 2001/06/13 08:39:13 igor_rock +// changed "cvote" to "use_cvote" (like the other votecvars) +// +// Revision 1.1.1.1 2001/05/06 17:37:06 igor_rock +// This is the PG Bund Edition V1.25 with all stuff laying around here... +// +//----------------------------------------------------------------------------- + +game action +gamedir action +// +hostname "-= Action Quake 2 DM =-" +rcon_password ***changeme*** +// +setmaster 82.165.25.76 213.221.174.165 +// +set maplistname config/maplist.ini +set ininame config/action.ini +set fraglimit 75 +set timelimit 15 +// +set maxclients 16 +set public 1 +// +set deathmatch 1 +set teamplay 0 +set dmflags 520093696 +set limchasecam 0 +// +set actionmaps 1 +// +set weapons 1 +set dmweapon "Handcannon" +set allweapon 1 +set items 1 +set ir 1 +set knifelimit 40 +set tgren 1 +set bholelimit 0 +set splatlimit 0 +set shelloff 1 + +// PG BUND Extensions +set use_voice 1 +set use_mapvote 1 +set mapvote_min 2 +set mapvote_need 2 +set mapvote_pass 50 + +set use_kickvote 1 +set kickvote_need 0 +set kickvote_pass 55 +set kickvote_tempban 2 + +set ff_maxkills 10 +set ff_kickat 10 +set voterotation 0 +set allow_download_players 1 + +set use_3teams 0 + +set use_cvote 1 +set cvote_min 2 +set cvote_need 0 +set cvote_pass 60 + +map rhstation diff --git a/action/config/aq2_tp.cfg b/action/config/aq2_tp.cfg new file mode 100644 index 000000000..6132e8cd1 --- /dev/null +++ b/action/config/aq2_tp.cfg @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------------- +// Example AQ2 Teamplay Config +// +// $Id: aq2_tp.cfg,v 1.3 2004/10/10 08:01:41 igor_rock Exp $ +// +//----------------------------------------------------------------------------- +// $Log: aq2_tp.cfg,v $ +// Revision 1.4 2021/01/17 wls +// - fixed master servers, set proper dmflags +// +// Revision 1.3 2004/10/10 08:01:41 igor_rock +// - deleted barrysworld master server, added working ones +// +// Revision 1.2 2001/06/13 08:39:13 igor_rock +// changed "cvote" to "use_cvote" (like the other votecvars) +// +// Revision 1.1.1.1 2001/05/06 17:37:06 igor_rock +// This is the PG Bund Edition V1.25 with all stuff laying around here... +// +//----------------------------------------------------------------------------- + +game action +gamedir action +// +hostname "-= ActionQuake TP =-" +rcon_password ***changeme*** +// +setmaster master.q2servers.com +// +set maplistname config/maplist.ini +set ininame config/action.ini +set fraglimit 0 +set timelimit 15 +set roundtimelimit 4 +set roundlimit 15 +// +set maxclients 24 +set public 1 +// +set deathmatch 0 +set teamplay 1 +set dmflags 768 +//set limchasecam 2 +// +set actionmaps 1 +// +set allweapon 0 +set weapons 1 +set items 1 +set ir 1 +set knifelimit 40 +set tgren 1 +set bholelimit 0 +set splatlimit 0 +set shelloff 1 + +// PG BUND Extensions +set use_voice 1 +set use_mapvote 1 +set mapvote_min 2 +set mapvote_need 2 +set mapvote_pass 60 + +set use_kickvote 1 +set kickvote_need 0 +set kickvote_pass 50 +set kickvote_tempban 2 + +set ff_maxkills 10 +set ff_kickat 10 +set voterotation 0 +set allow_download_players 1 + +set use_3teams 0 + +set use_cvote 1 +set cvote_min 2 +set cvote_need 0 +set cvote_pass 60 + +map rhcity1 diff --git a/action/config/configlist.ini b/action/config/configlist.ini new file mode 100644 index 000000000..e61629d09 --- /dev/null +++ b/action/config/configlist.ini @@ -0,0 +1,5 @@ +aq2_tp.cfg +aq2_2on2.cfg +aq2_3teams.cfg +aq2_dm.cfg + diff --git a/action/config/maplist.ini b/action/config/maplist.ini new file mode 100644 index 000000000..21acd85ef --- /dev/null +++ b/action/config/maplist.ini @@ -0,0 +1,24 @@ +actcity2 +asylum +beer +blood +cliff2 +cloud +deepcanyon +highrise2 +jungle1 +kumanru +monastery +museum +police +rhcity1 +rhcity3 +riot +riotx +ruins2 +soho +tequila +tokyo +urban +urban2 +winter diff --git a/action/config/sndlist.ini b/action/config/sndlist.ini new file mode 100644 index 000000000..160e91200 --- /dev/null +++ b/action/config/sndlist.ini @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------------- +// Example sndlist.ini +// +// $Id: sndlist.ini,v 1.1 2001/05/06 17:37:05 igor_rock Exp $ +// +//----------------------------------------------------------------------------- +// $Log: sndlist.ini,v $ +// Revision 1.1 2001/05/06 17:37:05 igor_rock +// Initial revision +// +//----------------------------------------------------------------------------- + +// sndlist.ini +// ============ +// This file should contain all user sounds for enabling Quake 2 +// download option. Just add the filenames with extensions, without +// user path. If you like to use subdirectiories within your user +// path, you have to add the subdirectory. +// +// example: +// +// If you have a.wav in action/sound/user, just add a.wav. +// If you have a.wav in action/sound/user/admin, +// add admin/a.wav. +// +// Even if you're running a server on a Windoze platform, use +// slash instead of backslash. +// +// Comments starting with '//' or with '#' at the begining of +// the line. +// +// DO NOT HAVE SPACES OR OTHER CONTROL CODES AT THE BEGINING +// OF THE LINE. DO NOT ADD A COMMENT AT THE END OF A SOUND FILE +// LINE. PLEASE ADD NEWLINE AT THE END OF THIS FILE. + +//Add your sounds down here +affirm.wav +cdtrust.wav +childic.wav +clint.wav +comeback.wav +filhands.wav +grimley.wav +iknow.wav +isee.wav +killme.wav +l1.wav +l2.wav +letsgo.wav +letsrock.wav +lookwhat.wav +mustbe.wav +newbie.wav +pressluck.wav +terminat.wav +thanku.wav +vista.wav +whyuss.wav +wrong.wav +wtsamat.wav +yuck2.wav diff --git a/action/config/tourney.ini b/action/config/tourney.ini new file mode 100644 index 000000000..88bec34cb --- /dev/null +++ b/action/config/tourney.ini @@ -0,0 +1,87 @@ +//----------------------------------------------------------------------------- +// Example tourney.ini +// +// $Id: tourney.ini,v 1.2 2004/10/10 07:57:58 igor_rock Exp $ +// +//----------------------------------------------------------------------------- +// $Log: tourney.ini,v $ +// Revision 1.2 2004/10/10 07:57:58 igor_rock +// corrected line ends (MS-DOS -> Unix) +// +// Revision 1.1.1.1 2001/05/06 17:37:05 igor_rock +// This is the PG Bund Edition V1.25 with all stuff laying around here... +// +//----------------------------------------------------------------------------- + +// These settings control time flow and events at initial round start +// and general round start at section [start], game start (time gap +// between beeing respawned and the game starts really) at section +// [spawn], and round end (time between recognizing game end and +// starting a new round) at [end]. +// +// There are currently three supported commands, all in the format +// +// at