VkQuake3
Its based on ioq3,I add a vulkan based modular render back end which originally from https://github.com/kennyalive/Quake-III-Arena-Kenny-Edition
Install / Use
/learn @suijingfeng/VkQuake3README
==============================================================================
,---------------------------------------.
| _ _ ____ |
| (_)___ __ _ _ _ __ _| |_____|__ / |
| | / _ \/ _` | || / _` | / / -_)|_ \ |
| |_\___/\__, |\_,_\__,_|_\_\___|___/ |
| |_| |
| |
`---------- http://ioquake3.org --------'
The intent of this project is to provide a baseline Quake 3 which may be used for further development and baseq3 fun. Some of the major features currently implemented are:
- SDL 2 backend
- OpenAL sound API support (multiple speaker support and better sound quality)
- Full x86_64 support on Linux
- VoIP support, both in-game and external support through Mumble.
- MinGW compilation support on Windows and cross compilation support on Linux
- AVI video capture of demos
- Much improved console autocompletion
- Persistent console history
- Colorized terminal output
- Optional Ogg Vorbis support
- Much improved QVM tools
- Support for various esoteric operating systems
- cl_guid support
- HTTP/FTP download redirection (using cURL)
- Multiuser support on Windows systems (user specific game data is stored in "%APPDATA%\Quake3")
- PNG support
- Many, many bug fixes
The map editor and associated compiling tools are not included. We suggest you use a modern copy from http://icculus.org/gtkradiant/.
The original id software readme that accompanied the Q3 source release has been renamed to id-readme.txt so as to prevent confusion. Please refer to the website for updated status.
More documentation including a Player's Guide and Sysadmin Guide is on: http://wiki.ioquake3.org/
If you've got issues that you aren't sure are worth filing as bugs, or just want to chat, please visit our forums: http://discourse.ioquake.org
Compilation and installation
Building on Ubuntu or Debian Linux
$ sudo apt-get install libcurl4-openssl-dev libsdl2-dev libopenal-dev libvulkan-dev libgl1-mesa-dev libopus-dev libvorbis-dev libopusfile-dev
$ sudo apt-get install clang gcc make git
$ git clone https://github.com/suijingfeng/vkQuake3.git
$ cd vkQuake3
$ make -j4
Building on Windows 7 or 10
To build 64-bit binaries, follow these instructions:
-
Install msys2 from https://msys2.github.io/ , following the instructions there.
-
Start "MinGW 64-bit" from the Start Menu, NOTE: NOT MSYS2.
-
Install mingw-w64-x86_64, make, git and necessary libs.
pacman -S mingw-w64-x86_64-gcc make git -
Grab latest source code from github and compile. Note that in msys2, your drives are linked as folders in the root directory: C:\ is /c/, D:\ is /d/, and so on.
git clone https://github.com/suijingfeng/vkQuake3.git cd vkQuake3 make -j4 -
Find the executables and dlls in build/release-mingw64-x86_64 .
you can also download the binary compiled on win10 from https://github.com/suijingfeng/vkQuake3/releases.
You can also try the openarena game https://github.com/suijingfeng/vkOpenArena :)
Building on macOS
Tested with 10.14 Mojave & 10.15 Catalina:
-
Install the Command Line tools
xcode-select --install -
Install Xcode - from the Mac AppStore or Apple Developer Website, make sure to run the latest version...
Check what Xcode is selected
xcode-select -pif it doesn't correspond to the latest (or want to use)
sudo xcode-select --switch /PATH-TO/Xcode.app -
Install the build dependencies with Homebrew
brew install molten-vk vulkan-headers sdl2 openal-soft -
Grab latest source code from github and compile.
git clone https://github.com/suijingfeng/vkQuake3.git cd vkQuake3 -
run make with number of processing units available to the current process
make -j $(nproc) -
Find the executables and dynamic libraries in build/release-darwin-x86_64
cd build/release-darwin-x86_64 -
Install the *.pak-files into the corresponding directorues, then run
./ioquake3.x86_64
Later [2020-07-06]
-
Updated build bash scripts to build the .app
-
Be able to download the binary compiled for macos 10.14+ from https://github.com/suijingfeng/vkQuake3/releases.
-
Or try the openarena game https://github.com/suijingfeng/vkOpenArena ... Will add macOS support ...
FAQ
Q: How to enable vulkan support from the pulldown console ?
\cl_renderer vulkan
\vid_restart
Q: How to check that Vulkan backend is really active ?
\vkinfo
Type \vkinfo in the console reports information about active rendering backend. It will report something like the following:
Active 3D API: Vulkan
Vk api version: 1.0.65
Vk driver version: 1637679104
Vk vendor id: 0x10DE (NVIDIA)
Vk device id: 0x1B80
Vk device type: DISCRETE_GPU
Vk device name: GeForce GTX 1080
Total Device Extension Supported:
...
Vk instance extensions:
...
Image chuck memory(device local) used: 8 M
The following variables may be set, either on the command line or in Makefile.local:
CFLAGS - use this for custom CFLAGS
V - set to show cc command line when building
DEFAULT_BASEDIR - extra path to search for baseq3 and such
BUILD_SERVER - build the 'ioq3ded' server binary
BUILD_CLIENT - build the 'ioquake3' client binary
BUILD_BASEGAME - build the 'baseq3' binaries
BUILD_MISSIONPACK - build the 'missionpack' binaries
BUILD_GAME_SO - build the game shared libraries
BUILD_GAME_QVM - build the game qvms
BUILD_STANDALONE - build binaries suited for stand-alone games
SERVERBIN - rename 'ioq3ded' server binary
CLIENTBIN - rename 'ioquake3' client binary
USE_RENDERER_DLOPEN - build and use the renderer in a library
USE_YACC - use yacc to update code/tools/lcc/lburg/gram.c
BASEGAME - rename 'baseq3'
BASEGAME_CFLAGS - custom CFLAGS for basegame
MISSIONPACK - rename 'missionpack'
MISSIONPACK_CFLAGS - custom CFLAGS for missionpack (default '-DMISSIONPACK')
USE_OPENAL - use OpenAL where available
USE_OPENAL_DLOPEN - link with OpenAL at runtime
USE_CURL - use libcurl for http/ftp download support
USE_CURL_DLOPEN - link with libcurl at runtime
USE_CODEC_VORBIS - enable Ogg Vorbis support
USE_CODEC_OPUS - enable Ogg Opus support
USE_MUMBLE - enable Mumble support
USE_VOIP - enable built-in VoIP support
USE_FREETYPE - enable FreeType support for rendering fonts
USE_INTERNAL_LIBS - build internal libraries instead of dynamically
linking against system libraries; this just sets
the default for USE_INTERNAL_ZLIB etc.
and USE_LOCAL_HEADERS
USE_INTERNAL_ZLIB - build and link against internal zlib
USE_INTERNAL_JPEG - build and link against internal JPEG library
USE_INTERNAL_OGG - build and link against internal ogg library
USE_INTERNAL_OPUS - build and link against internal opus/opusfile libraries
USE_LOCAL_HEADERS - use headers local to ioq3 instead of system ones
DEBUG_CFLAGS - C compiler flags to use for building debug version
COPYDIR - the target installation directory
TEMPDIR - specify user defined directory for temp files
The defaults for these variables differ depending on the target platform.
Console
New cvars
cl_autoRecordDemo - record a new demo on each map change
cl_aviFrameRate - the framerate to use when capturing video
cl_aviMotionJpeg - use the mjpeg codec when capturing video
cl_guidServerUniq - makes cl_guid unique for each server
cl_cURLLib - filename of cURL library to load
cl_consoleKeys - space delimited list of key names or
characters that toggle the console
cl_mouseAccelStyle - Set to 1 for QuakeLive mouse acceleration
behaviour, 0 for standard q3
cl_mouseAccelOffset - Tuning the acceleration curve, see below
con_autochat - Set to 0 to disable sending console input
text as chat when there is not a slash
at the beginning
con_autoclear - Set to 0 to disable clearing console
input text when console is closed
in_joystickUseAnalog - Do not translate joystick axis events
to keyboard commands
j_forward - Joystick analogue to m_forward,
for forward movement speed/direction.
j_side - Joystick analogue to m_side,
for side movement speed/direction.
j_up - Joystick up movement speed/direction.
j_pitch - Joystick analogue to m_pitch,
for pitch rotation speed/direction.
j_yaw - Joystick analogue to m_yaw,
for yaw rotation speed/direction.
j_forward_axis - Selects which joystick axis
controls forward/back.
j_side_axis - Selects which joystick axis
controls left/right.
j_up_axis
Related Skills
node-connect
348.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
348.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
348.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
