Commit graph

28117 commits

Author SHA1 Message Date
Sally Coolatta
0dbe217979 Properly handle stringarg memory during netsaves
- spawnsectors/lines copy over stringargs properly.
- Object thing args/stringargs aren't overwritten if there aren't any script args set.
- StringArgsEqual functions handle NULL properly.
2024-10-25 17:15:00 -04:00
Sal
8ff2e13c7d Merge branch 'dump-consistency-for-the-modern-age' into 'master'
DUMPCONSISTENCY for the modern age

See merge request KartKrew/Kart!2483
2024-10-25 17:48:21 +00:00
Sally Coolatta
6bf5662ca8 Delete resynchattempts
All values besides 0 and 1 have been unused for a while. Quite frankly, if the gamestate resend doesn't fix them, a rejoin won't either, so kicking them is just adding extra steps.
2024-10-22 02:57:05 -04:00
Sally Coolatta
45bbb4826a DUMPCONSISTENCY for the modern age
- dumpconsistency cvar is always enabled (rather than a define), but is now a cheat.
- It now dumps on resend, instead of on consistency failure kick. (Those don't even happen on too many resyncs anymore, anyways...)
- It now dumps for both the server & the client that is resyncing, so there's gamestates to compare. The two files are given names with metadata so they can be matched up.

It's not great, but it was easy enough to do and more useable than having 0 tools to inspect resync at all.
2024-10-22 02:22:31 -04:00
Oni
d9bf5d26dd Merge branch 'rqdx' into 'master'
Roundqueue DX

Closes #1411

See merge request KartKrew/Kart!2473
2024-10-20 18:52:35 +00:00
Oni
8ba1e19351 Merge branch 'acs-archive-fixes' into 'master'
ACS archival fixes

See merge request KartKrew/Kart!2480
2024-10-20 18:52:13 +00:00
Eidolon
6a90097b0f Update tracy client to 0.11.1 2024-10-20 13:35:29 -05:00
toaster
40964f5556 Permit partial parameter -c (alias for -clear) on setscore 2024-10-19 13:19:40 +01:00
Eidolon
dac91d5d44 Merge branch 'convert-zone-c' into 'master'
Convert z_zone.c -> z_zone.cpp

See merge request KartKrew/Kart!2481
2024-10-19 02:43:00 +00:00
Eidolon
5257b18ade Convert z_zone.c -> z_zone.cpp 2024-10-18 21:34:02 -05:00
AJ Martinez
be377e523d Merge branch 'convert-r-textures' into 'master'
Convert r_textures.c -> r_textures.cpp

See merge request KartKrew/Kart!2479
2024-10-19 00:05:39 +00:00
AJ Martinez
3c38cabaa2 Merge branch 'vector-fps-storage' into 'master'
Use std::vector for r_fps storage

See merge request KartKrew/Kart!2478
2024-10-19 00:03:14 +00:00
Sally Coolatta
3b898c528e Do not load invalid ACS modules
BEHAVIOR being optional is now handled from our side, because using getModule or loadModule on an invalid file is supposed to be an error condition for the VM.
2024-10-18 11:06:30 -04:00
Sally Coolatta
001ae4a05b Disable ACSVM save debug signatures
Adds a lot of extra time, and I meant to remove this when I confirmed ACS in netgames was working.
2024-10-18 11:06:30 -04:00
Sal
323452df73 Merge branch 'vote-anger-fix' into 'master'
Fix map anger race condition

See merge request KartKrew/Kart!2447
2024-10-18 01:13:42 +00:00
Sal
663ea2b123 Merge branch 'fix-checkpoints' into 'master'
Fix checkpoints desyncing in netgames

See merge request KartKrew/Kart!2474
2024-10-18 01:09:21 +00:00
Sal
067a1007da Merge branch 'more-saveg-fixes' into 'master'
Several netsave fixes / improvements

See merge request KartKrew/Kart!2475
2024-10-18 01:08:07 +00:00
Eidolon
96a39fd45b Convert r_textures.c -> r_textures.cpp 2024-10-16 21:30:23 -05:00
Eidolon
2cad0b0cc0 Use std::vector for r_fps storage
This isn't an optimization for the mobj pointer list, but it is an
optimization for level interpolators, which previously made N
allocations for N non-mobj thinkers. Now those allocations are amortized
according to std::vector's storage.

This could still be further cleaned up to be more C++-ey.
2024-10-16 20:22:01 -05:00
Eidolon
59eb36eb91 Merge branch 'convert-r-fps' into 'master'
Convert r_fps.c -> r_fps.cpp

See merge request KartKrew/Kart!2477
2024-10-16 23:17:51 +00:00
Eidolon
61d3f14621 Convert r_fps.c -> r_fps.cpp 2024-10-16 18:07:39 -05:00
Sally Coolatta
71ec8e3f4e Archive line tag list
Sectors do this, so why don't lines? Are they stupid?
2024-10-13 01:43:48 -04:00
Sally Coolatta
c4cca8c8b7 Attempt to encode less for objects
- Don't encode radius, height, or scale if they are at mapobjectscale
- Don't encode watertop if it is INT32_MAX (its actual initial spawn value)
2024-10-13 01:29:18 -04:00
Sally Coolatta
aae9374b0a Create doomednum lookup for loading mobjthinkers
Cuts off 10% of the time it takes to load mobj thinkers.
2024-10-12 23:02:31 -04:00
Sally Coolatta
4f77c9f228 Reload from spawnsectors/spawnlines/spawnsides
I do not trust memcpy due to the rendering bug even though it appeared to mostly work, so I did it manually. It's still order of magnitudes faster than reloading the level from scratch.
2024-10-12 22:24:12 -04:00
Sally Coolatta
353af883aa Add deep copy functions
Does allocation, a memcpy shallow copy, and a callback to handle memory addresses if desired. Might be reusable for runahead saves.
2024-10-12 12:39:36 -04:00
James R
e68bb676db Fix netsync of race checkpoints and associated map lines
- Use srb2::MobjList to keep checkpoint objects list
  intact after savegame load
- Use std::unordered_map of line tag and vector of line_t
  pointers
  - Use line tag for the key so multiple checkpoints may
    be associated to the same set of lines
2024-10-12 02:27:30 -07:00
Sally Coolatta
e3ccc4f0ea Fix UnArchiveSectors not actually adding tags
It was removing tags and then also removing the new ones, instead of removing tags and adding the new ones. Netsaves are so fucking scuffed.
2024-10-11 20:09:19 -04:00
toaster
ff7bb5cd2b Rework showscores command
Prints a full, ordered table of results, basically equivalent to intermission.
Much closer to the kind of logging one would want for tournament play, rather than the SRB2 leftover this command was holding previously.
2024-10-11 13:46:43 +01:00
toaster
5b4d771f28 D_SetupVote: Fix minor memory issues
memset takes UINT8-based arguments and cannot set UINT16_MAX
2024-10-11 13:46:39 +01:00
toaster
6578cf1b56 Rework the map command suite a little
The following funcs are now a suite with almost-identical argument lists.

- `map` is for immediately going to a map
    - Add `-random`/`-r`
- `queuemap` is for interacting with the live Round Queue
    - Add `-random`/`-r`
        - Performed server-side
    - `-clear` and `-show` now accept partial params `-c` and `-s`
    - Fix minor error with 0-argument print's text
- `showmap` is for printing information
    - Add arbitrary map name/ID input
        - `showmap robo` prints the course `map robo` would resolve to
    - Add `-gametype`/`-gt`/`-g`
        - For compatibility testing
    - Add `-random`/`-r`
        - Combine with `-gametype` for extra guarantees
- `randommap` was deprecated
    - Will only print replacement instructions of `map -random`, and nothing else
2024-10-11 13:46:36 +01:00
toaster
a8d8a10319 G_GetNextMap cleanup
- Lost & Found courses are now part of the intended sequence of `advancemap next`
    - Does not include Test Run, that's admin choice only
- Courses with too-small playerLimits will be skipped for both `advancemap random` and `advancemap next`
    - Resolves KartKrew/Kart#1411
2024-10-11 13:46:33 +01:00
toaster
63aaec65b1 Add roundqueue -show
Reveals the next Round in the queue via server shout message.
Can be used manually, or with automate commands for tournament rulesets that permit foreknowledge of the next Round without requiring the host to work off memory or document.
2024-10-11 13:46:30 +01:00
toaster
512ec6c2eb XD_REQMAPQUEUE --> PT_REQMAPQUEUE
It was technically possible for custom clients to spoil future rounds of a tournament queued while they are connected to a server.
Making it a PT direct packet to the servernode both solves this problem AND reduces irrelevant NetXCmd traffic for clients.
2024-10-11 13:46:26 +01:00
toaster
8bd50ddb65 clearscores is now setscore
- `setscore 0 50` will set the player in slot 0's score to 50 points
- `setscore 0 50 -add` will add 50 points to their score
- `setscore -clear` will clear all players' score, as per the old function
- Command will error if PWR is in use (no roundqueue/`usepwrlv 0`/cheats off in GP)
- The previous cheat `setscore` is renamed to `setroundscore`
2024-10-11 13:40:11 +01:00
Eidolon
f579d25770 Merge branch 'saveg-fixes' into 'master'
p_saveg fixes

See merge request KartKrew/Kart!2472
2024-10-08 00:28:16 +00:00
Antonio Martinez
7d584c1f79 Fix mobjcache memory leak after reloading gamestate
Weird history splice from 711804be
2024-10-07 19:15:51 -05:00
Antonio Martinez
b3086d011d Convert p_saveg to C++ 2024-10-07 19:15:51 -05:00
Sal
39a0724db6 Merge branch 'no-snull' into 'master'
SOC/Lua null struct safety

Closes #1488

See merge request KartKrew/Kart!2469
2024-10-05 15:26:06 +00:00
Sal
7ad44ec693 Merge branch 'fix-overtime-resync' into 'master'
Fix Battle Overtime resync under certain conditions

Closes RingRacers#205 and #1353

See merge request KartKrew/Kart!2468
2024-10-05 15:25:44 +00:00
Sally Coolatta
9cce0811d8 Fix flipped G_SameTeam in K_FindJawzTarget 2024-10-04 19:20:07 -04:00
Sally Coolatta
68eb4311f0 Fix osx pipeline being unhappy for unordered_map
- v_draw.hpp was simply missing the header entirely.
- r_debug_printer.cpp is the weird one -- unordered_set's definition uses unordered_map, but it seems like osx's standard library does not include it in their definition? wut?
2024-10-04 19:07:31 -04:00
Sally Coolatta
83edda8f11 SOC/Lua null struct safety
- SOC cannot edit S_NULL. (It already does it this way for sfxinfo and mobjinfo.)
- Lua cannot get or set S_NULL & MT_NULL. (It already does it this way for sfxinfo.)
- Lua cannot set a custom mobjinfo field called "string". (There is already a getter called "string", so this would create weird behavior for someone who doesn't know about it.)
2024-10-04 18:35:46 -04:00
James R
1b4bdf247c Fix Battle Overtime resync under certain conditions
Resync can be triggered when server/clients differ in the
number of Overtime laser objects spawned. For example,
when one of the clients is in splitscreen.

- MT_OVERTIME_PARTICLE had a spawnstate of S_NULL
- P_SetupStateAnimation is always called on spawn,
  regardless of if the spawnstate is S_NULL
- S_NULL inexplicably has FF_RANDOMANIM in its frame flags
  - This is NOT intentional and the likely source of the
    error is SOC/Lua
- Setting MT_OVERTIME_PARTICLE's spawnstate to S_INVISIBLE
  solves the problem
2024-10-04 14:57:29 -07:00
toaster
af5a65440d Compilation error repair
The compiler is just not smart enough to see that program flow is completely under order, so make sure every variable is initialised
(also change some variable types here and there)
2024-09-28 20:27:50 +01:00
Oni
71588f490f Merge branch 'queue-skin' into 'master'
Queued skin/color changes

See merge request KartKrew/Kart!2452
2024-09-28 17:46:42 +00:00
Oni
c357f544d5 Merge branch 'descriptive-controls' into 'master'
Descriptive controls

See merge request KartKrew/Kart!2460
2024-09-28 17:46:12 +00:00
Antonio Martinez
94db0ebc0e Admin Tools descriptige input 2024-09-28 03:03:40 -07:00
Antonio Martinez
f721eca7be Shorter key names 2024-09-28 02:52:31 -07:00
Antonio Martinez
bac60e3af8 Improve descriptive zvote offsetting 2024-09-27 15:43:19 -07:00