Releases: PolyhedronStudio/Q2RTXPerimental
Quake II RTXPerimental (v0.0.5 development branch: First IQM player iteration)
Quake II RTXPerimental (v0.0.5 development branch: First IQM player iteration):
Release Notes:
A work in progress release of what is to be v0.0.5. Still relies on Q2RTX data somewhat, so the same rules as the previous release apply. Also, the MSVC runtime for this version.
Q2RTXPerimental Changes:
A lot. All focus on skeletal model animation support done proper.
v0.0.4-alpha1
Quake II RTXPerimental (v0.0.4-alpha1):
Release Notes:
In order to run Q2RTXP just drop the files of the v0.0.4 folder into a Q2RTX (demo-)game folder. It has not been tested with a regular Q2 game data folder.
Also included is a TrenchBroom v2024.1 compatible FGD, and Game Configuration files in the v0.0.4-trenchbroom-game folder. The files inside can be copied into your TrenchBroom games folder.
NOTE: due to using VS2022 Preview Release, a download to the Microsoft Visual C/C++ Runtime is included as well.
Q2RTXPerimental Changes(New, listed per version):
Changes will from now on be listed as additions per version.
(v0.0.4):
- The
collision model
code now hasmaterial awareness
, for now still separated from the refresh material system and operates by loading properties out the*.wal_json
texture name files. These are also supported by recent ericw-tools branches to substitute non.wal
textures with. Currently two extra fields can be added, this allows you to set a material itskind
(string) as well as itsfriction
(float). - In accordance to the above, each
mtexinfo_t
now has its own unique ID, as well as itscsurface_t
member pointing to the corresponding material pointer as well as having the propermaterialID
set for it. - Player Move code now has an optional
PMOVE_USE_MATERIAL_FRICTION
define which when defined has the Player Move code respond to the ground material'sphysical_material_friction
. - Restructured and cleaned up the Player Move prediction code as well as corresponding view calculation code.
- Added
EAX
support for OpenAL and aclient_env_sound
entity to accomodate with it. This allows for reverb effect zones, where theclient_env_sound
entity performs a clipping trace to the (predicted-)player origin, where if successful and within radius the specific reverb environment is set. - Added
Footsteps
support on a permaterial
basis. It operates based on thephysical_material_kind
property. - Added
Ladder Footsteps
which defaults to themetal
materialkind
for selecting the footstep sounds from. - Added what is a temporary fix for ericw-tools-2.0.0-alpha7 bug that does not properly fill leaf node contents with all brush contents. The fix is thus applying them in-engine.
(v0.0.3):
- Fixed problems with stair step smoothing interfering with pushers.
- Fixed pushers not acting properly, causing jitters/lag.
- Added a 'Developer Stuff' menu which currently allows you to select maps that showcase specific (new/updated-)features.
Q2RTXPerimental Changes(Before listing them per version):
These changes spawn from v0.0.0 up to 0.0.2
General:
- CPP-ify the codebase, meaning that it now compiles using a CPP compiler
- The only exception being the VKPT code, to make life easy merging in any new Q2RTX VKPT features.
- Kept the good old
baseq2
game code as intact as possible and will try to maintain it somehwat. - Added a copy of
baseq2
folder, renamed tobase2rtxp
serving as the experimental game project of this engine. - Customizable Tick Rate (
40hz
is the current default). - Removed MVD, and GTV, although 'luxury' features, make things harder to maintain and I doubt it is within most target audience interest rates.
- Removed Anti-Cheat, OS specific and h4x0rz are going to h4x anyway. Makes life easier to maintain this project.
- Increased
MAX_EDICTS(8192)
,MAX_MODELS(8192)
,MAX_SOUNDS(2048)
,MAX_IMAGES(512)
. - Increased maximum ConfigString length
(96)
. - Enabled
USE_SMOOTH_DELTA_ANGLES
by default. - Adjusted stair Step Smoothing to
BASE_FRAMETIME // (25ms for 40hz)
instead of its old hard values:100ms at 10hz
. - Entity origins and player origin are
wired/transferred
as full floating point precision values. - Client-Side awareness of the gamemode that is being played.
- Brush Shaped Triggers: Triggers can now have a "Clipped" flag set, in which case it only triggers when an actual collision(clip to brush) has occured.
- Comes with basic vector, matrix and quaternion math utilities derived from raylib1.5, and adds in C++ utilities such as operator support.
- Modern player movement derived from Q2RE.
- BoundingBox entities can have their hull contents be set to any CONTENTS_ values.
- The
entityString
is now parsed into a list of key/value pairs, the so calledCollision Model Entities
.
Client:
- The client now also makes use of the
cm_t
(Collision Model) struct for itsBSP
andinline brush models
. - Does proper lerping for entities that run lower than
40hz
. - Does proper lerping for weapons based on their 'gunrate', defaults to
10hz
- Added RF_OLD_FRAME_LERP support:
[Paril-KEX] force model to lerp from oldframe in entity state; otherwise it uses last frame client received
- Added support for monster 'step' Z-Axis lerping when RenderFlag
RF_STAIR_STEP
is set. - Added support to lerp from old entity state frame when RenderFlag
RF_OLD_FRAME_LERP
is set. EF_SPOTLIGHT
support.
Net Code:
- Uses its own protocol, partially based on Q2 Protocol NVIDIA#34 and Q2PRO its own. This supports proper fragmenting, allowing for far more in-vis entities to be transfered over
The Wire
. This does come with the drawback of needing a proper25ms
ping in order to have a smooth gameplay flow. - Changed Solids from
int32_t
touint32_t
, so thatSOLID_BOUNDS_BOX
can now have BoundingBox sizes up to those of Q2RE/Q3. - Network origins using full floating point precision, angles are half-floats.
- Use ReadBase128 message read/write functions where applicable.
Refresh(VKPT):
- BSP maps compiled with
texinfos
such as:textures/test/01.tga
now will load with their proper dimensions, meaning one does not need low-res .wal textures to substitute for any of these. - RF_NOSHADOW is now respected for both, regular and brush entities.
- Added "UNLIT" material type. Example of use would be to use it for where a
spotlight
entity emits from.
Q2RTXPerimental Game Changes:
Server Game:
- Replaced (most)_framenum based functionality with time again, borrowing
sg_time_t
type from Q2RE. - AI now has the option to run at
tick rate
(defaults to40hz
), when theAI_HIGH_TICK_RATE
flag is set. - Guns can operate at a varying tick rate, default is
10hz
- Brush Triggers can now be set a spawnflag to trigger only when actually clipping with the trigger brush.
- Basic configurable Spotlight entity that can be given its own
customLightStyle
property as well. - Now spawns entities based on the key/value pairs retreived from the
Collision Model
.
Client Game:
- Responsible for preparing the view by adding all the packet entities as well as the player viewweapon/thirdperson model.
- Control over the user input, including the capability of adding new custom User Input
KeyButton
registration and handling thereof. - Player Movement Prediction.
- Parse, precache, or modify the clientinfo data.
- Control over the layout string system.
- Control over the implementations of
Temp Entity Events
,Particles
,Explosions
,Beams/Lasers/Trails
,Sustains
. - A
local entity
system that has a class struct like implementation. Its main intended use is for client only specific entities, think of decorating or certain particle emitters that you do not want to clutter the network with. - View/Scene handling, this includes:
Packet Entities
,Local Entities
,Temp Entity Events
,Particles
,Explosions
,Beams/Lasers/Trails
,Sustains
.
Shared Game:
- Contains the shared used
sg_time_t
which replaces all the vanilla frametime/framenum work. - Customizable PlayerMove code.
v0.0.3-alpha2
Quake II RTXPerimental (v0.0.3-alpha2):
Release Notes:
In order to run Q2RTXP just drop the files inside of the v0.0.3 folder into a Q2RTX (demo-)game folder. It has not been tested with a regular Q2 game data folder.
Also included is a TrenchBroom v2024.1 compatible FGD, and Game Configuration files in the v0.0.3-trenchbroom-game folder. The files inside can be copied into your TrenchBroom games folder.
NOTE: due to using VS2022 Preview Release, a download to the Microsoft Visual C/C++ Runtime is included as well.
Changes:
Changes will from now on be listed as additions per version.
Changes I can think of out of the top of my head:
- (-alpha2) Fixed the pitch issue with forward moving on ladders.
- Fixed problems with stair step smoothing interfering with pushers.
- Fixed pushers not acting properly, causing jitters/lag.
- Added a 'Developer Stuff' menu which currently allows you to select maps that showcase specific (new/updated-)features.
Q2RTXPerimental Changes(Old):
These changes spawn from v0.0.0 up to 0.0.2
General:
- CPP-ify the codebase, meaning that it now compiles using a CPP compiler
- The only exception being the VKPT code, to make life easy merging in any new Q2RTX VKPT features.
- Kept the good old
baseq2
game code as intact as possible and will try to maintain it somehwat. - Added a copy of
baseq2
folder, renamed tobase2rtxp
serving as the experimental game project of this engine. - Customizable Tick Rate (
40hz
is the current default). - Removed MVD, and GTV, although 'luxury' features, make things harder to maintain and I doubt it is within most target audience interest rates.
- Removed Anti-Cheat, OS specific and h4x0rz are going to h4x anyway. Makes life easier to maintain this project.
- Increased
MAX_EDICTS(8192)
,MAX_MODELS(8192)
,MAX_SOUNDS(2048)
,MAX_IMAGES(512)
. - Increased maximum ConfigString length
(96)
. - Enabled
USE_SMOOTH_DELTA_ANGLES
by default. - Adjusted stair Step Smoothing to
BASE_FRAMETIME // (25ms for 40hz)
instead of its old hard values:100ms at 10hz
. - Entity origins and player origin are
wired/transferred
as full floating point precision values. - Client-Side awareness of the gamemode that is being played.
- Brush Shaped Triggers: Triggers can now have a "Clipped" flag set, in which case it only triggers when an actual collision(clip to brush) has occured.
- Comes with basic vector, matrix and quaternion math utilities derived from raylib1.5, and adds in C++ utilities such as operator support.
- Modern player movement derived from Q2RE.
- BoundingBox entities can have their hull contents be set to any CONTENTS_ values.
- The
entityString
is now parsed into a list of key/value pairs, the so calledCollision Model Entities
.
Client:
- The client now also makes use of the
cm_t
(Collision Model) struct for itsBSP
andinline brush models
. - Does proper lerping for entities that run lower than
40hz
. - Does proper lerping for weapons based on their 'gunrate', defaults to
10hz
- Added RF_OLD_FRAME_LERP support:
[Paril-KEX] force model to lerp from oldframe in entity state; otherwise it uses last frame client received
- Added support for monster 'step' Z-Axis lerping when RenderFlag
RF_STAIR_STEP
is set. - Added support to lerp from old entity state frame when RenderFlag
RF_OLD_FRAME_LERP
is set. EF_SPOTLIGHT
support.
Net Code:
- Uses its own protocol, partially based on Q2 Protocol NVIDIA#34 and Q2PRO its own. This supports proper fragmenting, allowing for far more in-vis entities to be transfered over
The Wire
. This does come with the drawback of needing a proper25ms
ping in order to have a smooth gameplay flow. - Changed Solids from
int32_t
touint32_t
, so thatSOLID_BOUNDS_BOX
can now have BoundingBox sizes up to those of Q2RE/Q3. - Network origins using full floating point precision, angles are half-floats.
- Use ReadBase128 message read/write functions where applicable.
Refresh(VKPT):
- BSP maps compiled with
texinfos
such as:textures/test/01.tga
now will load with their proper dimensions, meaning one does not need low-res .wal textures to substitute for any of these. - RF_NOSHADOW is now respected for both, regular and brush entities.
- Added "UNLIT" material type. Example of use would be to use it for where a
spotlight
entity emits from.
Q2RTXPerimental Game Changes:
Server Game:
- Replaced (most)_framenum based functionality with time again, borrowing
sg_time_t
type from Q2RE. - AI now has the option to run at
tick rate
(defaults to40hz
), when theAI_HIGH_TICK_RATE
flag is set. - Guns can operate at a varying tick rate, default is
10hz
- Brush Triggers can now be set a spawnflag to trigger only when actually clipping with the trigger brush.
- Basic configurable Spotlight entity that can be given its own
customLightStyle
property as well. - Now spawns entities based on the key/value pairs retreived from the
Collision Model
.
Client Game:
- Responsible for preparing the view by adding all the packet entities as well as the player viewweapon/thirdperson model.
- Control over the user input, including the capability of adding new custom User Input
KeyButton
registration and handling thereof. - Player Movement Prediction.
- Parse, precache, or modify the clientinfo data.
- Control over the layout string system.
- Control over the implementations of
Temp Entity Events
,Particles
,Explosions
,Beams/Lasers/Trails
,Sustains
. - A
local entity
system that has a class struct like implementation. Its main intended use is for client only specific entities, think of decorating or certain particle emitters that you do not want to clutter the network with. - View/Scene handling, this includes:
Packet Entities
,Local Entities
,Temp Entity Events
,Particles
,Explosions
,Beams/Lasers/Trails
,Sustains
.
Shared Game:
- Contains the shared used
sg_time_t
which replaces all the vanilla frametime/framenum work. - Customizable PlayerMove code.
Version 0.0.1
Q2RTXPerimental
In order to actually run Q2RTXPerimental you'll be required to download Q2RTX 1.7.0(demo or full release) and ensure you have a separate copy of it elsewhere. Extract the release zipped content into the Q2RTX 1.7.0 destination installation directory in order to be properly able to experience the current changes that have been made so far.
Version 0.0.1 Changes:
General:
- CPP-ify the codebase, meaning that it now compiles using a CPP compiler
- The only exception being the VKPT code, to make life easy merging in any new Q2RTX VKPT features.
- Kept the good old
baseq2
game code as intact as possible and will try to maintain it somehwat. - Added a copy of
baseq2
folder, renamed tobase2rtxp
serving as the experimental game project of this engine. - Customizable Tick Rate (
40hz
is the current default). - Removed MVD, and GTV, although 'luxury' features, make things harder to maintain and I doubt it is within most target audience interest rates.
- Removed Anti-Cheat, OS specific and h4x0rz are going to h4x anyway. Makes life easier to maintain this project.
- Adjusted stair Step Smoothing to
BASE_FRAMETIME // (25ms for 40hz)
instead of its old hard values:100ms at 10hz
. - Increased
MAX_EDICTS(8192)
,MAX_MODELS(8192)
,MAX_SOUNDS(2048)
,MAX_IMAGES(512)
. - Increased maximum ConfigString length
(96)
. - Entity origins and player origin are
wired/transferred
as full floating point precision values. - Enabled
USE_SMOOTH_DELTA_ANGLES
. - Allows for up to 255 different gamemodes to be implemented. The client is also made aware of the actual game mode the server is running.
- Brush Shaped Triggers: Triggers can now have a "Clipped" flag set, in which case it only triggers when an actual collision(clip to brush) occured.
Client:
- Does proper lerping for entities that run lower than
40hz
. - Does proper lerping for weapons based on their 'gunrate', defaults to
10hz
- Added RF_OLD_FRAME_LERP support:
[Paril-KEX] force model to lerp from oldframe in entity state; otherwise it uses last frame client received
- Added support for monster 'step' Z-Axis lerping when RenderFlag
RF_STAIR_STEP
is set. - Added support to lerp from old entity state frame when RenderFlag
RF_OLD_FRAME_LERP
is set.
Net Code:
- Uses its own protocol, partially based on Q2 Protocol NVIDIA#34 and Q2PRO its own. This supports proper fragmenting, allowing for far more in-vis entities to be transfered over
The Wire
. This does come with the drawback of needing a proper25ms
ping in order to have a smooth gameplay flow. - Changed Solids from
int32_t
touint32_t
, so thatSOLID_BBOX
can now have BoundingBox sizes up to those of Q2RE/Q3. - Network origins using full floating point precision, angles are half-floats.
- Use ReadBase128 message read/write functions where applicable.
Refresh(VKPT):
- BSP maps compiled with
texinfos
such as:textures/test/01.tga
now will load with their proper dimensions, meaning one does not need low-res .wal textures to substitute for any of these.
Q2RTXPerimental Game Changes:
Server Game:
- Replaced (most)_framenum based functionality with time again, borrowing
sg_time_t
type from Q2RE. - AI now has the option to run at
tick rate
(defaults to40hz
), when theAI_HIGH_TICK_RATE
flag is set. - Guns can operate at a varying tick rate, default is
10hz
- Brush Triggers can now be set a spawnflag to trigger only when actually clipping with the trigger brush.
Client Game:
- Currently nothing strictly of its own, only the SharedGame PlayerMove code.
Shared Game:
- Contains the shared used
sg_time_t
which replaces all the vanilla frametime/framenum work. - Customizable PlayerMove code.