Commit graph

722 commits

Author SHA1 Message Date
Boondorl
524cd55813 Added OnLoad virtual
Allows for things to be reinitialized where needed for Thinkers. Moved hidden state of items over to OnLoad.
2025-04-17 18:58:02 -03:00
Ricardo Luís Vaz Silva
fa03385980 remove commented out code 2025-04-16 23:45:16 -03:00
Ricardo Luís Vaz Silva
a43b99bf51 further remove manual memory management 2025-04-16 23:45:16 -03:00
Ricardo Luís Vaz Silva
bac018d306 remove extra heap allocation and level of indirection 2025-04-16 23:45:16 -03:00
Ricardo Luís Vaz Silva
2b72de44d5 use TryEmplace 2025-04-16 23:45:16 -03:00
Ricardo Luís Vaz Silva
d40c5246e5 optimize memory allocation 2025-04-16 23:45:16 -03:00
Gene
e2026dca38 Only allocate when needed 2025-04-07 13:57:28 -07:00
Gene
9e32e58c8f Try TMap 2025-04-07 04:21:35 -07:00
Gene
81165facf2 Actually null the pointer 2025-04-07 02:47:46 -07:00
Gene
4fb4e18594 Don't inline AddLightNode 2025-04-06 22:05:49 -07:00
Gene
20c234b90f Scrap dlight lighthead link lists 2025-04-06 13:06:57 -07:00
Sally Coolatta
ac42aa8337 cl_debugprediction console variable
Makes `gametic` run behind `ClientTic` by n ticks, and forces player prediction code to run. Only works if you are in a singleplayer session.

This is intended to be useful for mod development, as you can quickly test prediction issues without creating a multiplayer server. It may also come in handy if any improvements are made to the prediction code in the future.
2025-03-25 10:24:44 -04:00
Boondorl
f5a96237e5 You client-side flag instead of storing ACS controller
Prevents old save files from breaking if they were running ACS.
2025-03-20 14:48:55 -03:00
Boondorl
43031375f4 Added missing return values in VM calls
These are not supported by the JIT and must always be passed.
2025-03-19 15:17:29 -03:00
Boondorl
02b5f9a2c5 Fixed player respawning
Pass appropriate information to the VM
2025-03-19 15:17:29 -03:00
Boondorl
1542ca8e8c Added missing serializing for level script controller 2025-03-19 11:17:40 -03:00
Boondorl
7e410fd5d8 Added cvar for cool downs on repeatable actions when playing online
Currently only applies to doors.
2025-03-12 13:05:31 -03:00
Boondorl
f7e62a8cd6 Added client-side Thinkers
Adds support for client-side Thinkers, Actors, and ACS scripts (ACS uses the existing CLIENTSIDE keyword). These will tick regardless of the network state allowing for localized client handling and are put in their own separate lists so they can't be accidentally accessed by server code. They currently aren't serialized since this would have no meaning for other clients in the game that would get saved. Other logic like the menu, console, HUD, and particles have also been moved to client-side ticking to prevent them from becoming locked up by poor network conditions. Additionally, screenshotting and the automap are now handled immediately instead of having to wait for any game tick to run first, making them free of net lag.
2025-03-11 10:14:28 -03:00
MajorCooke
210ee1780e Added particle rendering to VisualThinkers.
To activate, use `SetParticleType(int type)`. To deactivate, use `DisableParticle()`.

Types are:
- PT_DEFAULT (default value; uses `gl_particles_style`)
- PT_SQUARE
- PT_ROUND
- PT_SMOOTH

While in this mode:
- `Texture` & `Translation` are ignored
- `Scale.X` sets the size
- `SColor` sets the color

Misc changes:
- Removed warning on textureless destruction
2025-03-09 16:17:07 -03:00
Boondorl
ad3bcfddba Lobby Overhaul
Rewrote lobby to unify common and Doom-specific packet structure, allowing for saner handling of in-game joining. Added a new per-client stage system that allows individual clients to be handled at a time when gathering and sharing info. Reworked lobby UI to display user info and added kick/ban functionalities. Bans are only a temporary per-game IP ban (use passwords to keep unwanted users out). Increased max player count to 64 and unified engine constant.
2025-03-07 20:32:52 -05:00
inkoalawetrust
ecdfe39ddf Exposed DElevator to ZScript. 2025-03-05 12:54:49 -05:00
inkoalawetrust
f0d0f259f7 Exposed more of the Floor thinker. 2025-03-05 12:54:49 -05:00
inkoalawetrust
8299f91cd1 Exposed more of the Ceiling thinker.
- Exposed the rest of the ceiling member fields and getters.
- Added an IsCrusher() method.
- Added getOldDirection() getter.
- Fixed Door direction enum.
- Forgot to make Plat readonly on previous commit.
2025-03-05 12:54:49 -05:00
inkoalawetrust
b0e7a698f6 Exposed DPlat to ZScript. 2025-03-05 12:54:49 -05:00
inkoalawetrust
b80572e400 Exposed DDoor to ZScript.
Also added a ZScript-only enum for the movement direction..
2025-03-05 12:54:49 -05:00
Boondorl
94be307225 Netcode Overhaul
Rewrote netcode to be more stable and functional. Packet-server mode has been restrategized and will now be the default netmode when playing with 3+ non-LAN players. TryRunTics has been cleaned up with older tick control behavior removed to account for the rewritten renderer. The main thread is now more consistent when playing online to prevent potential slow downs and lock ups. Load barriers are better accounted for to prevent spikes on level transition. Improvements to chat and lobby systems including a force start game button. Added a suite of new host options such as kicking and controlling who can pause the game. Max players increased from 8 to 16 since the new code can now handle it.

Note: Demo functionality is untested. This will be rewritten at a later time alongside improvements to GZDoom's playback features (e.g. freecam mode).
2025-03-05 12:52:52 -05:00
inkoalawetrust
286371791a Made MTF_NOINFIGHTING work. 2025-02-20 18:32:37 -03:00
f7cjo
f1e6445e82 Add GetSelfObituary 2025-02-20 04:13:56 -03:00
inkoalawetrust
b54da619ad Added spawn origin flags.
- Added new spawn flags that allow for checking if an actor was spawned by the level, the console, or ACS/DECORATE/ZScript.
2025-02-20 04:13:36 -03:00
Boondorl
7a4927fdf5 Added TransferredOwner virtual
Allows for proper cleaning up of behaviors when moving between Actors. Important for player respawn handling and morphing.
2025-02-20 04:12:46 -03:00
Boondorl
7efd301810 Clean up for Behavior API
Use TObjPtr to improve null checking. Add option to clear only specific kinds of Behaviors. Fixed removal checks while ticking. Don't stop at now-null behaviors when iterating.
2025-02-20 04:12:46 -03:00
Boondorl
1e05bb2a55 Clean up behaviors properly when moving levels
Also adds support for foreach loops with the behavior iterator.
2025-02-20 04:12:46 -03:00
Boondorl
ad87477650 Make DBehavior final
Specifics should be implemented in ZScript.
2025-02-20 04:12:46 -03:00
Boondorl
14f7a10ae6 Added global iterator for behaviors
Imported Behaviors to the engine to allow them to properly clean up their level list. Restrict Behaviors from being new'd in ZScript as they need an owner to function.
2025-02-20 04:12:46 -03:00
Boondorl
e27bf38165 Added behavior iterator for Actors
Renamed Readded to Reinitialize.
2025-02-20 04:12:46 -03:00
Boondorl
08de93b2fa Fixed missing ref in MoveBehaviors 2025-02-20 04:12:46 -03:00
Boondorl
f301e6cc0f Improve Behavior Tick() behavior
Collect all objects first to account for the map being modified mid-iteration.
2025-02-20 04:12:46 -03:00
Boondorl
bd60fd7546 Added initial Behavior API
Allows for arbitrary behaviors to be attached to Actors in a way that doesn't require the use of Inventory tokens. This list can't be freely modified nor can it have duplicates meaning it has far better deterministic behavior than using Inventory items for this purpose.
2025-02-20 04:12:46 -03:00
Boondorl
a7d4d409a0 Added PlayerRespawning event
Allows denying player respawns for better control on special game modes e.g. Last Man Standing.
2025-02-14 03:49:56 -05:00
Boondorl
567a180d2b Added is3DFloor parameter to SpecialBounceHit
Allows for better plane bounce handling e.g. flipping the normal.
2025-02-11 20:49:39 -03:00
Ricardo Luís Vaz Silva
33bae944f7 allow optionally skipping initial wipe in in-game intermissions 2025-02-07 20:17:54 -03:00
Ricardo Luís Vaz Silva
eb7c99b34a more misc animation fixes 2025-02-04 18:08:30 -03:00
Ricardo Luís Vaz Silva
ec42c77289 fix A_DoChase using the wrong type in non-jit 2025-02-01 10:45:26 -03:00
Boondorl
d527829ee3 Added NOAUTOOFFSKULLFLY flag
Disables resetting skullfly and state when velocity is zero while charging.
2025-01-30 13:33:33 -03:00
nashmuhandes
5bcbe1718b New "Translatable" property in DECALDEF which is just an alias for "OpaqueBlood" to reflect its general use, and also to support the new translation parameter of A_SprayDecal. "OpaqueBlood" should be considered deprecated. Note that specifying a translation directly in the DECALDEF will be added in future, in another commit. 2025-01-30 13:32:18 -03:00
Boondorl
864fe1f66f Added translation argument for A_SprayDecal 2025-01-30 13:32:18 -03:00
nashmuhandes
aae8c12cdf Add a particle flag to allow user shaders on the sprites 2025-01-29 17:00:12 -03:00
Adam Kaminski
162ab3c4ec Fixed ACS scripts executing a function from another library that cause a division/modulus of zero from aborting the game. 2025-01-27 21:27:39 -03:00
Boondorl
e0394ef16a Added flags for angle handling on bounce
Allows for keeping the current angle on bounce or modifying the pitch.
2025-01-27 21:27:03 -03:00
Ricardo Luís Vaz Silva
3d2f9e06ed remove bone component cache to decrease memory consumption
caching this is entirely unnecessary, as it changes every frame
2025-01-27 17:04:46 -03:00