Skip to content

Releases: PolyhedronStudio/Q2RTXPerimental

Quake II RTXPerimental (v0.0.5 development branch: First IQM player iteration)

03 Aug 21:27
Compare
Choose a tag to compare

Quake II RTXPerimental (v0.0.5 development branch: First IQM player iteration):

afbeelding

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

26 Apr 11:06
Compare
Choose a tag to compare

Quake II RTXPerimental (v0.0.4-alpha1):

afbeelding

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 has material 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 its kind(string) as well as its friction(float).
  • In accordance to the above, each mtexinfo_t now has its own unique ID, as well as its csurface_t member pointing to the corresponding material pointer as well as having the proper materialID 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's physical_material_friction.
  • Restructured and cleaned up the Player Move prediction code as well as corresponding view calculation code.
  • Added EAX support for OpenAL and a client_env_sound entity to accomodate with it. This allows for reverb effect zones, where the client_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 per material basis. It operates based on the physical_material_kind property.
  • Added Ladder Footsteps which defaults to the metal material kind 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 to base2rtxp 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 called Collision Model Entities.

Client:

  • The client now also makes use of the cm_t(Collision Model) struct for its BSP and inline 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 proper 25ms ping in order to have a smooth gameplay flow.
  • Changed Solids from int32_t to uint32_t, so that SOLID_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 to 40hz), when the AI_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

29 Mar 00:24
Compare
Choose a tag to compare

Quake II RTXPerimental (v0.0.3-alpha2):

afbeelding

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 to base2rtxp 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 called Collision Model Entities.

Client:

  • The client now also makes use of the cm_t(Collision Model) struct for its BSP and inline 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 proper 25ms ping in order to have a smooth gameplay flow.
  • Changed Solids from int32_t to uint32_t, so that SOLID_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 to 40hz), when the AI_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

04 Dec 22:12
Compare
Choose a tag to compare
Version 0.0.1 Pre-release
Pre-release

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 to base2rtxp 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 proper 25ms ping in order to have a smooth gameplay flow.
  • Changed Solids from int32_t to uint32_t, so that SOLID_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 to 40hz), when the AI_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.