Commit graph

1273 commits

Author SHA1 Message Date
MysterD
e7d0f8ec8b Resynchronized LLL puzzle pieces
Created a timer based on area that is shared. The puzzle pieces will
execute rapidly to catch up to the timer on level join. This keeps them
in sync without constantly needing to acknowledge that a puzzle piece
had moved before continuing.
2021-06-14 20:14:47 -07:00
MysterD
6aded174e9 Synchronized moat draining and cap switch unlocks 2021-06-14 19:59:11 -07:00
MysterD
02fbdca868 Fix bowser key unlock sync 2021-06-14 19:21:47 -07:00
MysterD
8e52960cf7 Added indication of which players are in which acts 2021-06-14 19:11:26 -07:00
MysterD
361a57edb6 Instance levels based on which star was selected
Previously the levels were instanced based on "act" which is a concept
that is invisible and unintuitive to the user.
2021-06-14 18:25:24 -07:00
MysterD
cd48d177b0 Additional synchronization + misc fixes
Prevented crash that happened when an upstairs painting was entered
Synchronized TTC speed setting
Synchronized WDW water level on late join
Player packets no longer broadcasted to clients in a different location
2021-06-14 18:13:58 -07:00
MysterD
b1ac0c9f7f Adjusted how "static" sync entities are removed
No longer needs hacky stuff like relying on the macro for goomba triplet removal.
Instead we simply keep a list of sync ids of objects that were removed (but were
around at the start of level loading)
2021-06-13 19:00:55 -07:00
MysterD
3ab1b0b4b5 Synchronized red coin count on join. 2021-06-13 18:32:35 -07:00
MysterD
518a1fda4b Server makes sure the client can receive the packet before sending/tunnelling 2021-06-13 17:57:54 -07:00
MysterD
59d08a90b9 Fixed how "levelAreaMustMatch" packets are sent/processed
Instead of the server dropping them immediately, the server only drops the processing. This allows it to broadcast/send the packet to the correct client without the server processing it.

Fixed how "static" level objects were detected. The old way was error prone and would consider spawned objects to be static anyway.

Made ERROR_LOGs always show up, "disabling" logging only turns off INFO_LOGs now.
2021-06-13 17:47:58 -07:00
MysterD
7ae26b3ea0 Complete rewrite of entity ID reservation system
Now "syncId"s can only be reserved at ID 127+. This ensures that static level
objects and spawned reserved objects never clash. The server keeps track of
every player's list of reserved IDs, as well as when an ID is used, or when
an entity using that ID is destroyed. This is much more complicated than it
used to be, but this complication is required due to players being allowed to
be in different areas of the game.
2021-06-13 16:04:28 -07:00
MysterD
fde6eaf0a3 Added ordered packet system
Now packets can be grouped up and sent separately, but still be processed
sequentially regardless of how much they get scrambled over the network.
If a packet group isn't received for 15 seconds, all unprocessed packets
in that group will be dropped. Packet ordering is required for level and
area synchronization information when someone joins the level late.
2021-06-11 19:37:32 -07:00
MysterD
b6959dc7ea Informed players of ent deletions in a different area (but same level)
Added packet_level_respawn_info to inform the players of entity
deletions in a different area of the same level. Currently it's
massively noisy due to sending out a new packet for each entity
destroyed. This can cause chaos when collecting a series of coins.

Ideally this information would be batched and sent in one big blob every
so often.
2021-06-11 16:19:24 -07:00
MysterD
6bfdcbcb7b Complete rewrite of level-change/area-change system
Now level changes and area changes are separated. Entity deletions are
properly tracked on level change or area change. Late entity
synchronization is now triggered on any area change.
2021-06-11 14:39:25 -07:00
MysterD
0b3a97d405 Improvements to late-join synchronization
Removed (slightly) old coin and static ent removal system
Resynchronized respawners
Added packet for macro deletions
    better than previous system since the entities don't need a sync id and we can synchronize deletion station across areas
    allows the synchronization of odd entities like lines of coins
Added packet for spawn info deletions
Split packet_location_request into multiple files
2021-06-09 22:35:34 -07:00
MysterD
6e7c542068 Synchronized race timers 2021-06-08 22:05:12 -07:00
MysterD
33fbed94e4 Synchronized respawners and entities created after level load 2021-06-08 21:21:52 -07:00
MysterD
5db1a9e827 Synchronize late-join coin collection 2021-06-08 02:26:35 -07:00
MysterD
4be00a2eb1 Late-join synchronized chain chomp and exclamation box 2021-06-08 01:29:21 -07:00
MysterD
050d940d53 Added ability for clients to send packets to each other skipping server
Added memory of last reliable packet about each sync object
2021-06-07 23:12:17 -07:00
MysterD
e593bedc77 Keep track of static level spawn removals and sync them on location response 2021-06-07 19:25:31 -07:00
MysterD
bbdc942501 Ripped out level synchronization/warp code
Began writing new system that synchronizes course/act/level/area per
player and 'ownership' of that location.
2021-06-07 12:19:59 -07:00
djoslin0
48c2d91eef
Merge pull request #103 from fgsfdsfgs/coop-dev
custom player colors (and other "unstable 3" changes)
2021-04-08 00:11:02 -07:00
fgsfds
b12bf38abd sync with stable 2021-04-06 22:56:08 +03:00
fgsfds
4ba30ebd9e windows: bump SO_SNDBUF size when playing with >4 players 2021-04-06 18:09:07 +03:00
fgsfds
abd3a0a130 add more player colors 2021-04-06 18:08:41 +03:00
fgsfds
60c8da9479 bump MAX_PLAYERS to 16 2021-04-06 02:32:06 +03:00
fgsfds
10c63a1706 bump unstable version number 2021-04-06 02:30:54 +03:00
fgsfds
511b1352b8 colorize chat messages with player color 2021-04-06 02:30:37 +03:00
fgsfds
109e713689 implement changeable model colors
in a very dumb way:

the custom colors are set for lights 3, 4, 5, 6 in a GEO_ASM callback, then copied to lights 1, 2 using gsSPCopyLightEXT
2021-04-06 00:22:42 +03:00
fgsfds
798389b527 added new GBI command: G_COPYMEM
exclusively for copying lights around for now; required for my retarded model color implementation
2021-04-06 00:18:04 +03:00
fgsfds
d4cdd89683 everyone except host is luigi 2021-04-05 04:21:23 +03:00
fgsfds
8f4965e05d partially fix jitter with two of the same model 2021-04-05 04:21:14 +03:00
fgsfds
843a8cd18f djoslin0's new warp code 2021-04-05 03:21:37 +03:00
djoslin0
85984dacc5
Merge pull request #98 from averysumner/coop
Make discord max party size equal to MAX_PLAYERS
2021-03-06 21:31:33 -08:00
Avery
b68d5b107a
make discord max party size equal to MAX_PLAYERS 2021-03-06 21:07:55 -08:00
djoslin0
b5218d15ee
Merge pull request #95 from MegaMech/patch-2
Readme added build instructions link
2021-02-14 02:13:36 -08:00
MegaMech
dae94fe9a6
Link to build instructions 2021-02-14 03:11:19 -07:00
MysterD
dd90132145 Whoops, actual release 2020-10-18 22:24:37 -07:00
MysterD
a0b5f28b38 Beta 2 release 2020-10-18 22:21:25 -07:00
djoslin0
c10ef56ba9
Merge pull request #90 from djoslin0/unstable
Merge unstable to coop branch
2020-10-18 22:20:26 -07:00
MysterD
c0652f8a48 Allocate the correct number of controllers on stable branch 2020-10-18 22:15:52 -07:00
MysterD
281e45051b Prevent racing penguin crash when one player cheats
Fixes #87
2020-10-18 18:21:19 -07:00
MysterD
e753c8fc33 Add bash shebang to developer scripts 2020-10-18 16:33:03 -07:00
MysterD
f88aee251e Keep BETTERCAM/bubbled players within the minimum Y bounds of levels
Players/cameras were able to clip inside of island-like levels
previously. I have hardcoded sane minimum Y values for the following
courses: WF, CCM, PSS, BITDW, TTM, RR, BITS
2020-10-18 11:57:45 -07:00
MysterD
4cb49d3946 Misc sync fixes to various enemies
Considered nearest player for various things within the following
entities that I missed the first time around: cloud, koopa, monty mole,
moving coin, piranha bubbles, scuttlebug, shock wave, spindrift.
2020-10-17 23:58:24 -07:00
MysterD
cbf8505516 Misc fixes to bub 2020-10-17 23:43:29 -07:00
MysterD
f4263deea9 Fix wiggler softlock and intangibility 2020-10-17 23:38:32 -07:00
MysterD
98cc31d6cb Do not consider inactive players when bubbled 2020-10-17 23:27:34 -07:00
MysterD
eea5ebb94b Fixed command-line launch segfault
custom_menu_destroy() was causing a segfault when launching the game via
command-line parameters
2020-10-17 23:04:59 -07:00