Git Product home page Git Product logo

quake3e's Introduction

Quake3e

This is a modern Quake III Arena engine aimed to be fast, secure and compatible with all existing Q3A mods. It is based on last non-SDL source dump of ioquake3 with latest upstream fixes applied.

This repository do not contains any game content so in order to play you must copy resulting binaries into your existing Quake III Arena installation

Key features:

  • optimized OpenGL renderer
  • optimized Vulkan renderer
  • raw mouse input support, enabled automatically instead of DirectInput(\in_mouse 1) if available
  • unlagged mouse events processing, can be reverted by setting \in_lagged 1
  • \in_minimize - hotkey for minimize/restore main window (win32-only, direct replacement for Q3Minimizer)
  • \video-pipe - to use external ffmpeg binary as an encoder for better quality and smaller output files
  • significally reworked QVM (Quake Virtual Machine)
  • improved server-side DoS protection, much reduced memory usage
  • raized filesystem limits (up to 20.000 maps can be handled in a single directory)
  • reworked Zone memory allocator, no more out-of-memory errors
  • non-intrusive support for SDL2 backend (video,audio,input), selectable at compile time
  • tons of bugfixes and other improvements

Vulkan renderer

Based on Quake-III-Arena-Kenny-Edition with many additions:

  • high-quality per-pixel dynamic lighting
  • very fast flares (\r_flares 1)
  • anisotropic filtering (\r_ext_texture_filter_anisotropic)
  • greatly reduced API overhead (call/dispatch ratio)
  • flexible vertex buffer memory management to allow loading huge maps
  • multiple command buffers to reduce processing bottlenecks
  • reversed depth buffer to eliminate z-fighting on big maps
  • merged lightmaps (atlases)
  • multitexturing optimizations
  • static world surfaces cached in VBO (\r_vbo 1)
  • useful debug markers for tools like RenderDoc
  • fixed framebuffer corruption on some Intel iGPUs
  • offscreen rendering, enabled with \r_fbo 1, all following reguires it enabled:
  • screenMap texture rendering - to create realistic environment reflections
  • multi-sample anti-aliasing (\r_ext_multisample)
  • per-window gamma-correction which is important for screen-capture tools like OBS
  • you can minimize game window any time during \video|\video-pipe recording
  • high dynamic range render targets (\r_hdr 1) to avoid color banding
  • arbitrary resolution rendering
  • greyscale mode

In general, not counting offscreen rendering features you might expect from 10% to 200%+ FPS increase comparing to original KE's version

Highly recommended to use on modern systems

OpenGL renderer

Based on classic OpenGL renderers from id/ioq3/cnq3/openarena, features:

  • OpenGL 1.1 compatible, uses features from newer versions whenever available
  • high-quality per-pixel dynamic lighting, can be triggered by \r_dlightMode cvar
  • merged lightmaps (atlases)
  • static world surfaces cached in VBO (\r_vbo 1)
  • all set of offscreen rendering features mentioned in Vulkan renderer, plus:
  • high-quality bloom/reflection post-processing effects
  • supersample anti-aliasing (\r_ext_supersample)

Performance is usually greater or equal to other opengl1 renderers

OpenGL2 renderer

Original ioquake3 renderer, performance is very poor on non-nvidia systems, unmaintained

Build Instructions

windows/msvc

Install Visual Studio Community Edition 2017 or later and compile quake3e project from solution

code/win32/msvc2017/quake3e.sln

Copy resulting exe from code/win32/msvc2017/output directory

To compile with Vulkan backend - clean solution, right click on quake3e project, find Project Dependencies and select renderervk instead of renderer

windows/mingw

All build dependencies (libraries, headers) are bundled-in

Build with either make ARCH=x86 or make ARCH=x86_64 commands depending from your target system, then copy resulting binaries from created build directory or use command:

make install DESTDIR=<path_to_game_files>

linux/bsd

You may need to run following commands to install packages (using fresh ubuntu-18.04 installation as example):

  • sudo apt install make gcc libcurl4-openssl-dev mesa-common-dev
  • sudo apt install libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound-dev
  • sudo apt install libsdl2-dev

Build with: make

Copy resulting binaries from created build directory or use command:

make install DESTDIR=<path_to_game_files>

Several make options available for linux/mingw builds:

BUILD_CLIENT=1 - build unified client/server executable, enabled by default

BUILD_SERVER=1 - build dedicated server executable, enabled by default

USE_SDL=0- use SDL2 backend for video, audio, input subsystems, disabled by default

USE_VULKAN=0 - link client with vulkan renderer instead of OpenGL, disabled by default

USE_RENDERER_DLOPEN=0 - do not link single renderer into client binary, compile all renderers as dynamic libraries and allow to switch them on the fly via \cl_renderer cvar, disabled by default - not recommented due to not stable renderer API

USE_SYSTEM_JPEG=0 - use current system JPEG library, disabled by default

Example:

make BUILD_SERVER=0 USE_VULKAN=1 - which means do not build dedicated binary, build client with static vulkan renderer

Links

quake3e's People

Contributors

calinou avatar ec- avatar gsalsero avatar krsh732 avatar newbrict avatar r-a-sattarov avatar ryan-sg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.