Commit graph

1266 commits

Author SHA1 Message Date
MysterD
1952c42769 Fixed being unable to interact with objects when dying outside the castle 2021-08-23 18:32:55 -07:00
MysterD
b53283dbf0 SL: Prevented multiple people from sending snow mount spawns, fixed sinking animation 2021-08-23 18:11:12 -07:00
MysterD
e0cb832c21 Fixed late join sync for goomba triplets 2021-08-23 00:02:46 -07:00
MysterD
9363de073f Cached network IDs for each area to prevent area swapping from assigning a different set of sync IDs 2021-08-22 16:04:14 -07:00
MysterD
7c9b9a60d5 Bumped version to unstable 10 2021-08-21 15:56:54 -07:00
MysterD
7294e127f5 Fixed over 100 code warnings 2021-08-19 18:16:16 -07:00
MysterD
04d01667c3 Added a callback for area timer objects to only run certain things once per frame 2021-08-19 00:31:20 -07:00
MysterD
667cac9831 Rewrote the core of how the game determines how quickly it should run at
Allows vsync to be enabled regardless of the monitor's refresh rate
Automatically drops frames when it needs to
The game no longer runs fast on 144hz monitors
2021-08-18 23:50:40 -07:00
MysterD
b8e70fb46f Add range checks to model index 2021-08-18 22:58:54 -07:00
MysterD
4688ffe1f0 Added toad player character 2021-08-18 22:55:31 -07:00
MysterD
1d23f07429 Added an argument to backface culling 2021-08-18 22:52:48 -07:00
MysterD
d31eb41e7e Move character names to character struct 2021-08-18 21:51:55 -07:00
MysterD
8a40aeddea Refactored how enemies display a cap in their hand 2021-08-18 21:39:39 -07:00
MysterD
3bf9db3bbc Discord client hotfix 2021-08-16 19:29:37 -07:00
MysterD
e0815520b7 Fix client's vision of server palette 2021-08-15 13:56:11 -07:00
MysterD
1ef97584b2 Bumped version to unst 9 2021-08-15 12:55:39 -07:00
MysterD
43932249c6 Added support for spawning Luigi-versions of metal/vanish/wing cap as items 2021-08-15 11:46:28 -07:00
MysterD
efd22a81ab Added hacks for fire spitter and skeeter to prevent glitching through the floor on water level change 2021-08-14 20:17:57 -07:00
MysterD
d911c09c25 Added okey-dokey sound and transition to host menu 2021-08-14 18:45:25 -07:00
MysterD
f71cb26f64 Play menu music in main menu 2021-08-14 18:34:22 -07:00
MysterD
ee53beb10b Coin/star collection packet fixes
Added flag to send packet to everyone in the level regardless of area.
Coin collection packets now send to everyone in the level which keeps
coin counts consistent among players.
Star collection packets will no longer collect the wrong star if in a
different area than the originating player.
2021-08-14 17:53:08 -07:00
MysterD
0b88ed7cce Resynchronized racing penguin for late join 2021-08-14 12:13:55 -07:00
MysterD
ed95bd317b Resynchronized Koopa the Quick and race timers for late join 2021-08-14 11:48:15 -07:00
MysterD
b0267a5a31 Switch all malloc() calls in djui to calloc(). Possibly fixes menu bug 2021-08-14 11:03:31 -07:00
MysterD
bdabb26f81 Fix display of water droplet splashes 2021-08-12 18:53:17 -07:00
MysterD
68e04a74bc Fixed late join for items a Boo was carrying 2021-08-12 18:48:17 -07:00
MysterD
3edb08c98d Allow multiple players to interact with the same BBH cage 2021-08-12 18:18:28 -07:00
MysterD
7e59d34939 Added new MAXIMUM type to network area timer system. Exclamation boxes now reappear at the correct time 2021-08-12 18:13:41 -07:00
MysterD
383feba3b1 DJUI: Made panel movement screen-relative, always force current panel location 2021-08-12 00:15:10 -07:00
MysterD
64ab95efe1 Made inactive players drop held/heldby/ridden objects 2021-08-12 00:02:59 -07:00
MysterD
7ae2239670 Hid HUD while in main menu 2021-08-11 23:30:01 -07:00
MysterD
da31495564 Refactor player sounds, added pitch scale for player sounds 2021-08-11 23:24:53 -07:00
MysterD
142d21426d Make the join process a bit smoother 2021-08-11 00:39:11 -07:00
MysterD
0ce11ee2b1 Prevent main menu player model from corrupting while joining 2021-08-11 00:23:25 -07:00
MysterD
caf975a793 Player 'enter/leave level' popups now appear for bonus courses 2021-08-10 22:41:43 -07:00
MysterD
22121eea6b Fixed loading of certain save flags, e.g. lakitu 2021-08-10 22:25:34 -07:00
MysterD
d9ab09ee64 Critical fix to ordered packet system 2021-08-10 22:07:02 -07:00
MysterD
61ed5a774c Drop all reliable packets that are going to someone that disconnected 2021-08-10 21:06:10 -07:00
MysterD
58914e993f Prevent sending object-related packets until the area is synchronized 2021-08-10 18:46:33 -07:00
MysterD
fecba91c5e Rewrite the core of network area timer (yet again) 2021-08-10 18:29:49 -07:00
MysterD
f82b6c7ad0 1-frame smoothing of network area timer 2021-08-10 00:48:39 -07:00
MysterD
7044485431 Make clock fall back to REALTIME when MONOTONIC isn't supported 2021-08-09 23:58:28 -07:00
MysterD
d772764c4e Fixed cap-on-ground colorization behavior 2021-08-09 23:39:29 -07:00
MysterD
0c61b9fd07 Fixed crash when a hanging player was pushed off of the ceiling 2021-08-09 22:43:09 -07:00
MysterD
024ae36003 Retry Discord lobby creation on failure 5 times before giving up 2021-08-09 22:27:52 -07:00
MysterD
6f9b447468 Add null-checking to intro warp pipes 2021-08-09 22:06:51 -07:00
MysterD
5b0d4c60b3 LOGFILE_ calls now print to the terminal in DEBUG mode again 2021-08-09 00:09:44 -07:00
MysterD
fbbfcd6275 Fix compile error 2021-08-08 23:58:20 -07:00
MysterD
961723f22d Rewrote logfile API, made discord log to a file 2021-08-08 23:42:20 -07:00
MysterD
83f84fc3c0 Bumped version number to 8 2021-08-08 16:51:44 -07:00
MysterD
a5b8483100 Removed SDL2 API calls from SDL1 backend 2021-08-08 16:50:44 -07:00
MysterD
710a7e4749 Color detached caps according to player palette 2021-08-06 01:02:07 -07:00
MysterD
16fb9d3dff Add popup to inform a player when other players enter/leave the level they're in 2021-08-05 19:13:12 -07:00
MysterD
723a5cc46e Prevent transmission of player information when the player was in the main menu 2021-08-05 18:36:01 -07:00
MysterD
dafa5536a1 Move water level syncing from level packets to area packets 2021-08-05 00:40:43 -07:00
MysterD
cbb7eb419c Prevent level/area/object sync during credits sequence 2021-08-05 00:22:03 -07:00
MysterD
0d05853138 Fix ending cutscene crash and make game playable afterward without rehosting 2021-08-04 23:56:33 -07:00
MysterD
3ba77087e9 Prevent DJUI from creating and removing a panel at the same time 2021-08-04 23:55:46 -07:00
MysterD
4a3b39061f Force players in the credits sequence into the 'credits' instance 2021-08-04 13:01:59 -07:00
MysterD
8984ec3ba8 Adjust main menu cutscene and camera 2021-08-04 19:15:42 -07:00
MysterD
354146e3ac Make final Bowser star interactable for all players 2021-08-04 18:55:32 -07:00
MysterD
00da6b48f5 Fade out players when they leave/disconnect 2021-08-04 18:47:59 -07:00
MysterD
ab9056bb68 Make players invisible until their level/area can be verified 2021-08-04 18:15:46 -07:00
MysterD
7c8bddde28 Prevent capless flags from ever being set 2021-08-04 00:05:51 -07:00
MysterD
b1acd644f7 Invalidate area/level sync when unloading the area/level 2021-08-03 23:58:17 -07:00
MysterD
a2546055b2 Delay the display of the join text in star selection screen 2021-08-03 23:44:57 -07:00
MysterD
c5700825a8 Resynchronized WF tower platforms using Network Area Timer 2021-08-03 23:39:28 -07:00
MysterD
e17cba85f3 Allow host to own objects when no one else is connected 2021-08-03 23:26:51 -07:00
MysterD
f8c5fb0725 Resynchronize WF platforms using Network Area Timer 2021-08-03 23:26:32 -07:00
MysterD
6a957757d4 Refactored network area timer system 2021-08-03 19:21:50 -07:00
MysterD
a84e7a73fe Resync bomp using Network Area Timer 2021-08-03 18:52:48 -07:00
MysterD
a520b25c26 Fixed Network Area Timer system 2021-08-03 18:02:21 -07:00
MysterD
95fa0c626e Show normal mouse cursor when DJUI panels are closed 2021-08-03 00:12:16 -07:00
MysterD
33c82b7514 Capitalize palette strings 2021-08-02 23:08:00 -07:00
MysterD
f9695ca40c Copy over an ASCII version of Discord username if a username hasn't been set 2021-08-02 23:07:15 -07:00
MysterD
5625505660 Fix server-override of local player's palette 2021-08-02 23:00:03 -07:00
MysterD
726f10f231 Fixed strange desync when a player left 2021-08-02 22:57:06 -07:00
MysterD
5dba8daa4f Merge branch 'unstable' into dev/unstable 2021-08-02 22:35:37 -07:00
MysterD
d7b0945410 Added configurable player name, model, and palette 2021-08-02 22:33:38 -07:00
MysterD
4d997ba05e Fix long-standing chair crash in BBH 2021-08-02 19:45:13 -07:00
MysterD
3d067637b5 Added list of patch names to Discord's activity information 2021-08-02 19:35:32 -07:00
MysterD
68fe7af455 Chat rendering optimizations 2021-08-02 19:22:16 -07:00
MysterD
951d8e6fe7 Prevent segfault when hovering over a DJUI element 2021-08-02 18:57:19 -07:00
MysterD
44850f7b57 Switch from clock() to clock_gettime() due to implementation differences 2021-08-02 11:49:57 -07:00
MysterD
8642479d82 Fix Mac + DISCORD_SDK compilation errors 2021-08-02 02:59:45 -07:00
MysterD
f9a144b6c1 Fix segfault when comparing mods 2021-08-02 00:33:34 -07:00
MysterD
c18413ed2a Changed gDjuiFonts to an array of pointers (possible Mac compilation fix 2021-08-01 17:29:02 -07:00
MysterD
0b819c01e9 Switch from using clock() to time() for rate limiting (Linux-fix) 2021-08-01 17:04:08 -07:00
MysterD
bb4b666735 Erasing a save slot will now erase the correct slot 2021-08-01 13:45:26 -07:00
MysterD
05432c692a Updated star count on host/join 2021-08-01 13:40:31 -07:00
MysterD
7a61c61051 Fixed DJUI panels getting stuck when spamming B button 2021-08-01 13:29:21 -07:00
MysterD
a2bb578dbf Made the 'R Button - Options' text only appear on pause 2021-08-01 13:26:57 -07:00
MysterD
3085b9b749 Changed popup sound 2021-08-01 13:20:22 -07:00
MysterD
aedba38ca5 Made DJUI no longer take priority over arrowkey/enter binds when no panel is active 2021-08-01 13:18:22 -07:00
MysterD
caa13fb69f Made configfile save on quit button press, panel close, options menu close 2021-08-01 10:53:29 -07:00
MysterD
da13828509 Made rumble strength and deadzone settings apply instantly 2021-08-01 10:44:50 -07:00
MysterD
97d353c7aa Fixed typo 'play intro cutscene' -> 'skip intro cutscene' 2021-08-01 10:37:51 -07:00
MysterD
26720f9c47 Made camera settings apply instantly 2021-08-01 10:36:50 -07:00
MysterD
1917c6231b Changing controller/keyboard binds will now apply immediately 2021-08-01 10:23:33 -07:00
MysterD
cd913345ca Fix spacebar in chat 2021-08-01 10:12:18 -07:00
MysterD
922499dada Adjusted where selectionbox is defined 2021-07-31 20:53:11 -07:00
MysterD
2580e6a681 Bumped version number to unst 7 2021-07-31 17:27:41 -07:00
MysterD
9699d79dd7 Fix Discord connections on unstable 2021-07-31 17:24:13 -07:00
MysterD
7757a69145 Briefly forgot how IP addresses worked 2021-07-31 03:18:00 -07:00
MysterD
0b3f363130 DJUI: Ignore garbage text inputs if there are no valid characters 2021-07-31 03:02:30 -07:00
MysterD
98b7dba74b DJUI: Added mouse support to DX11/DX12 2021-07-31 02:30:10 -07:00
MysterD
661f2c28dc Readded player died popup 2021-07-30 19:37:20 -07:00
MysterD
3ee3f3e5bd Added simple rate limiting of packets 2021-07-30 19:33:09 -07:00
MysterD
033a9aa1a8 Hide other players in main menu 2021-07-30 18:47:09 -07:00
MysterD
1845f8aaaf DJUI: Resize HUD scale based on window resolution 2021-07-30 18:41:49 -07:00
MysterD
d615dcfbce DJUI: Added sounds to popups 2021-07-30 18:22:32 -07:00
MysterD
4e0a3e3e57 Merge branch 'dev/djui' into dev/unstable 2021-07-22 20:38:21 -07:00
MysterD
1ddb27d1ad DJUI: Default menus to keyboard/gamepad controls 2021-07-21 00:58:19 -07:00
MysterD
64648a8ce3 DJUI: Reimplemented chat 2021-07-21 00:53:28 -07:00
MysterD
321e101b30 Made cheats server-setting, created cheat menu 2021-07-16 18:43:21 -07:00
MysterD
6ad96d5e69 Removed luigi sound config 2021-07-16 18:12:56 -07:00
MysterD
7e1a05a40b DJUI: Replaced old ingame menu with new DJUI menu 2021-07-15 19:37:09 -07:00
MysterD
c0ec2caac1 DJUI: Made cursor hover location control-configurable 2021-07-15 18:47:19 -07:00
MysterD
a89dd55081 Added knockback strength to host setting menu 2021-07-15 18:33:27 -07:00
MysterD
f44d8ffc4c DJUI: pressing B or escape will go back one menu 2021-07-15 18:11:37 -07:00
MysterD
3d0d87a4eb DJUI: Made cursor movement more predictable 2021-07-14 19:25:39 -07:00
MysterD
b0453da5e4 DJUI: Changed quit menu into confirm menu, confirmed save erase 2021-07-14 19:14:07 -07:00
MysterD
28d63b2c87 Added save file selection to host menu 2021-07-14 18:58:52 -07:00
MysterD
f51f60ba24 Prevent the ability to host when Discord failed to initialize 2021-07-12 20:18:15 -07:00
MysterD
3395ba26f4 Added host port inputbox to host menu 2021-07-12 20:06:51 -07:00
MysterD
46f905f4a3 DJUI: Created popup system, re-added missing popup messages 2021-07-12 18:29:39 -07:00
MysterD
4fb951c0bf Fix commandline params for client/server 2021-07-11 02:04:26 -07:00
MysterD
ec2f07f20d DJUI: Made join IP inputbox work correctly 2021-07-11 01:21:56 -07:00
MysterD
5c4677ca77 Added a join message screen
Displays an animation while joining
Shows version mismatch error in join message screen
Shows mod mismatch error in join message screen (displays mismatching mods now)
Displays party is full / host closed connection in join message screen
Added string builder
2021-07-10 22:30:58 -07:00
MysterD
13d504a953 Replaced old host/join menu with new DJUI menu system 2021-07-04 22:40:04 -07:00
MysterD
733217a07a Removed old custom menu system 2021-07-01 21:27:57 -07:00
MysterD
58eec0e19f Removed old chat system 2021-07-01 21:14:11 -07:00
MysterD
1b1ed0038f DJUI: Added join panel 2021-07-01 21:03:14 -07:00
MysterD
b4418bbd4f DJUI: Made inputbox usable
Added keyboard support to inputbox
Fixed how inputbox text is clipped
Added on_enter_press callback for inputbox
Added ability to set clipboard text
Adjusted how components can be focused, and when they lose focus
Erased most of the text input stuff in controller_keyboard
Disabled major parts of old chat system
Disabled major parts of old menu system
2021-07-01 20:03:54 -07:00
MysterD
e424b9f9f3 DJUI: Started adding inputbox 2021-06-29 19:04:23 -07:00
MysterD
df20408a93 DJUI: Added button style for back button 2021-06-28 18:25:06 -07:00
MysterD
fc1db575bd DJUI: Make cursor movement more predictable 2021-06-28 18:15:59 -07:00
MysterD
2a4817b29b DJUI: Adjusted normal font, added missing characters 2021-06-28 18:08:24 -07:00
MysterD
8f5f94f0c7 DJUI: Removed unimplemented Player menu 2021-06-28 00:07:07 -07:00
MysterD
8b7ab3c35c DJUI: Added host menu
Added host message menu
Refactored how panel menus are constructed
Adjusted normal font's line height
Adjusted how text boxes detect max lines
2021-06-28 00:04:48 -07:00
MysterD
4504b2c21b DJUI: Added controls menu 2021-06-27 15:54:10 -07:00
MysterD
a6c204e1cf Fixed how players compare their area numbers 2021-06-27 00:40:30 -07:00
MysterD
ad3ee677c6 Fixed cannons, possible fix to star unlocks 2021-06-27 00:33:31 -07:00
MysterD
59eef70183 Prevent player-to-player interactions from messing up other ones 2021-06-26 21:51:00 -07:00
MysterD
974d9b52cf Prevented initial level dialog from appearing twice 2021-06-26 20:36:18 -07:00
MysterD
3625ad8883 Made clients send keep-alive packets again 2021-06-26 20:25:38 -07:00
MysterD
6c687a5a73 Prevent walking through warp doors 2021-06-26 20:20:19 -07:00
MysterD
b7795fd9d1 Prevent packet_save_set_flag from looping 2021-06-26 16:54:43 -07:00
MysterD
e85e6b9983 Bumped version to unst 6 2021-06-26 15:29:59 -07:00
MysterD
f13b7990a0 More networking adjustments
Adjusted when a join request is sent, and who it is sent to
Adjusted default course/act/level/area for new players
Added a sequence id to level area inform
Adjusted reliable packets to be sent half as frequently
2021-06-26 15:28:51 -07:00
MysterD
8b403d4509 DJUI: Added selectionbox 2021-06-26 14:20:39 -07:00
MysterD
1e4acef2e0 DJUI: Added checkbox and camera panel 2021-06-25 23:03:38 -07:00
MysterD
bf54a305d4 Hide cursor regardless of window mode 2021-06-25 15:56:28 -07:00
MysterD
28ce5e9cdf DJUI: Added sliders, made Sound menu work 2021-06-25 15:50:31 -07:00
MysterD
05c32ea73e DJUI: Wrote active panel system 2021-06-24 18:15:59 -07:00
MysterD
5131665be2 DJUI: Added 'Three Panel' component 2021-06-23 19:17:46 -07:00
MysterD
56a6532d9c DJUI: Improved keyboard/gamepad input 2021-06-22 21:35:55 -07:00
MysterD
580f19dcc9 DJUI: Added keyboard/gamepad support 2021-06-22 20:01:16 -07:00
MysterD
a3947b3800 DJUI: started adding options menu 2021-06-22 00:13:37 -07:00
MysterD
dfef74e727 Added custom title font
Adjusted text system to have multiple fonts
Added color escape to text
2021-06-21 21:18:27 -07:00
MysterD
7aec232450 Added quit menu
create enabled switch to disable interactables
fixed djui_base_destroy()
added on_click() event
2021-06-21 03:11:53 -07:00
MysterD
c0b093b11f DJUI: Created main menu panel
Added ability to make a DjuiBase keep its aspect ration
Added on_render_pre callback
Added ability to display 32b images
Added DjuiFlowLayout
Added logo
2021-06-20 23:34:14 -07:00
MysterD
99308a3145 Many small adjustments to networking code
In an attempt to track down an issue that causes packet flooding and
hanging, I've looked at every step of the networking process and tried
to clean up anything strange I saw.
2021-06-20 04:36:33 -07:00
MysterD
ac85a7e4a7 Re-disable Discord until issues are sorted 2021-06-20 00:49:52 -07:00
MysterD
3eef4076b9 Possibly fixed Discord issues 2021-06-19 21:59:06 -07:00
MysterD
5e6eb8e833 DJUI: Added interactable mousedown events 2021-06-19 19:50:59 -07:00
MysterD
6e23c952f9 DJUI: Rendering, interactable, and mouse adjustments
Made DJUI render at 60 fps
Added mouse cursor and hooks in SDL for capturing the window-relative mouse position
Started creating an interable system where elements can respond to events such as on_mouse_hover
2021-06-19 18:22:44 -07:00
MysterD
63e9621d56 DJUI: Added drop shadow to text 2021-06-19 01:21:25 -07:00
MysterD
b80cc50cd0 DJUI: Added padding to DjuiBase 2021-06-19 01:10:24 -07:00
MysterD
f27a6b2469 DJUI: Added borders to DjuiBase 2021-06-18 18:53:41 -07:00
MysterD
368157fbcd DJUI: added ability for x/y/w/h values to be relative to parent's size 2021-06-18 16:16:41 -07:00
MysterD
038c1135b3 Initial DJUI commit
The birth of a custom user interface system.

Has the ability to draw things to the screen at native resolution
regardless of window size.

Components can be nested within one another to an arbitrary depth.

Text rendering is completely rewritten.

Text and images can be clipped by their parent container.
2021-06-18 15:23:59 -07:00
MysterD
52d07c4dde Bump version number to 5 2021-06-15 21:27:59 -07:00
MysterD
939318041e Bowser, cannon door, and eyerok no longer require server to be in level
All have been switched from being owned by the server to being owned by
the player with the lowest global ID in the level.
2021-06-15 21:04:51 -07:00
MysterD
f60b861d73 BBH bookshelf manager no longer requires the server to be in BBH
Instead of only allowing the server to update the bookshelf manager, allow the
lowest global ID player to update it.
2021-06-15 21:01:28 -07:00
MysterD
4c401f9ba8 Resynchronized DDD poles to use area timer system 2021-06-15 18:01:03 -07:00
MysterD
4396381d60 Change unstable build disclaimer 2021-06-15 00:20:29 -07:00
MysterD
15f8b12770 Fixed Discord packet system for >2 players 2021-06-15 00:15:03 -07:00
MysterD
10e8af83ba Fixed how Linux registers the discord executable 2021-06-14 23:31:22 -07:00
MysterD
0c459294bb Fixed the merry go round in BBH
Fixed releasing of sync objects that otherwise don't sync their death events
Fixed using/releasing reserved objects in an area that the server isn't in
2021-06-14 21:06:07 -07:00
MysterD
ef2287a5d5 Resynchronized checkerboard elevators to use area timer 2021-06-14 20:29:08 -07:00
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
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
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
Avery
b68d5b107a
make discord max party size equal to MAX_PLAYERS 2021-03-06 21:07:55 -08: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
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
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
MysterD
2519c59958 Merge branch 'unstable' of https://github.com/djoslin0/sm64ex-coop into unstable 2020-10-16 23:37:01 -07:00
Victor Diego Alejandro Diaz Urbaneja
26928ac6f5
overlay error (#88)
* overlay error

fixed compilation error

* Update custom_menu_system.c

Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
2020-10-16 23:36:31 -07:00
MysterD
615c19be6f branch 'unstable' of https://github.com/djoslin0/sm64ex-coop into unstable 2020-10-16 23:33:47 -07:00
MysterD
1564ac7c0f Translated Luigi sounds through new Character system 2020-10-16 23:33:41 -07:00
MysterD
a5a4c3c324 Make gControllers respect MAX_PLAYERS
fixes Linux crash when MAX_PLAYERS is increased
2020-10-16 22:22:28 -07:00
MegaMech
33dda3322c
Added connection transition (#86)
* Added content to custom_menu_destroy()

* Added connection transition

* Update custom_menu_system.c

Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
2020-10-16 21:43:26 -07:00
anzz1
130cfefa82
Fix DISCORD_SDK=0 building (#85)
Co-authored-by: anzz1 <>
2020-10-16 20:20:14 -07:00
anzz1
d1739648e1
Added Luigi sounds (#77)
* added a new audio bank 10 for luigi sounds
* made some audio memory buffers larger to fix sound cuts
* added option to enable/disable luigi sounds in the sound options menu
* added Andrat's "90's Classic Luigi Voice Pack" as default luigi sounds

Co-authored-by: anzz1 <>
2020-10-16 11:54:59 -07:00
MysterD
2b0f892251 Misc adjustments to recent PRs
Switched from manual checking of Luigi to using new Character structs
Synchronized cap spawning for mario_blow_off_cap()
Added declarations for network_send_death() and network_receive_death()
2020-10-16 03:59:24 -07:00
MysterD
05fd683c64 Fix UNSTABLE_BRANCH checking 2020-10-16 03:56:37 -07:00
anzz1
bc7ec31c02
Enemy hat fixes (#83)
* Ukiki now steals Mario/Luigi hat correctly
* Klepto now steals Mario/Luigi hat correctly
* Mr. Blizzard now knocks off Mario/Luigi hat correctly
* Fwoosh now knocks off Mario/Luigi hat correctly

Co-authored-by: anzz1 <>
2020-10-16 03:03:25 -07:00
MegaMech
e447332cec
Added server settings: shared lives and skip intro
Adds button to the host menu to allow shared lives.
Resolves #37

Buttons are now resizeable. Use gButtonScale.<size> (large, medium, or small).
It could be argued that we don't need the small size. However, it may be beneficial for the future if the menu becomes more complex.

large is the normal default size. Or at least it was the size already being used by sm64ex-coop (0.11111111f)

Note: Buttons for changing menu's should be gButtonScale.large as the menu animation is made for large buttons. To keep consistency it's probably a good idea for buttons that transfer you to a new menu to always be set to large. As such, I didn't feel it necessary to extend this feature to these methods: bhv_menu_button_growing_from_custom and bhv_menu_button_shrinking_to_custom.

Resolves #60
2020-10-16 02:58:57 -07:00
MysterD
c49ba7cdd8 Change version to beta 2, prepare unstable branch 2020-10-16 01:04:07 -07:00
MysterD
9f158de95d Remove two-player hack for controlled warp 2020-10-15 18:04:53 -07:00
MysterD
48aee0c7be Enemies drop player when picked up 2020-10-14 23:52:07 -07:00
MysterD
66eb163339 Prevent playing star cutscene when in cutscene 2020-10-14 23:36:19 -07:00
MysterD
71bc444fa2 Desync fixes for hoot, piranha, spiny 2020-10-14 23:25:59 -07:00
MysterD
c50794773c Allow bubbled players to go through elevators 2020-10-14 23:20:43 -07:00
MysterD
196ac547ef Bubbled visual improvements (pitch to player) 2020-10-14 23:18:05 -07:00
MysterD
040aa92fd1 Prevent people from hosting a discord game when discord fails 2020-10-14 21:17:28 -07:00
MysterD
8750198750 Prevented vanish cap players from interacting with other players 2020-10-14 20:58:03 -07:00
MysterD
cfd559bc74 Sync riddenObj, prevent remote interaction with shell 2020-10-14 20:50:55 -07:00
MysterD
8fc8ca6ca7 Prevent players from interacting with a shell that someone else is riding 2020-10-14 20:42:04 -07:00
MysterD
cb902c519d Properly synchronize koopa shells spawned from boxes 2020-10-14 20:34:38 -07:00
MysterD
d882e8a039 Added a way to debug sync object tables through chat 2020-10-14 20:33:23 -07:00
MysterD
16b95fdbca Prevent cursor from going past array in course completion screen 2020-10-14 20:03:05 -07:00
MysterD
85c05e7d56 Removed two-player hacks for packet_spawn_objects 2020-10-14 00:15:56 -07:00
MysterD
28ad7f91ed Smooth over transition from sending raw enums 2020-10-13 23:04:08 -07:00
MysterD
55bbe8d4d9 Removed two-player hacks for heldObj and spawning offsets 2020-10-13 22:26:13 -07:00
MysterD
c8a45235ca Removed two-player hacks from cannon and object packets
Increased error checking of get_behavior_from_id
Made failure logging for packet_object a lot better
Changed debug logging to show global index instead of "Server/Client"
Changed debug keyboard binds to support more keyboard types
Made SyncObject's rxEventId de-duplication per-player instead of one-player
Removed sizeof(enum) from packet_read/packet_write
2020-10-13 21:44:27 -07:00
MysterD
aaa7e65b65 Created character struct for mario/luigi asset differences
Removed multiple two-player hacks in the process
2020-10-13 18:33:51 -07:00
MysterD
f230d4fe63 Removed two-player hack for held objects 2020-10-13 18:12:33 -07:00
MysterD
9f1d03d5b4 Remove two-player hack for packet_object 2020-10-13 18:11:40 -07:00
MysterD
66af03c41d Slight improvement to small breakable box sync 2020-10-12 18:10:40 -07:00
MysterD
c214800faf Standardized de-duplication of reliable packets 2020-10-12 18:40:38 -07:00
MysterD
5d9d5ed9d7 Added ability for client to send a packet to server, and for the server to broadcast to all clients 2020-10-12 18:23:48 -07:00
MysterD
3f798609be remove unused version call 2020-10-11 20:45:44 -07:00
MysterD
8b6bfc2369 Possible fix for big bully spawn 2020-10-11 19:16:21 -07:00
MysterD
d4f92ed209 Reset override_ownership to null (fixes crash in THI) 2020-10-11 18:54:05 -07:00
MysterD
7bf2ebd7e8 Made version mismatch screen more descriptive 2020-10-11 18:26:10 -07:00
MysterD
342a048e0e Display instructions on how to fix Discord error to user 2020-10-11 18:11:11 -07:00
MysterD
adb7fe86eb Fix how scancodes are read for text input
May fix issue where spanish keyboards are unable to press enter to chat
2020-10-11 17:20:47 -07:00
MysterD
feb9bead02 Synchronized the controller properly (fixes 64bit-to-32bit communication bug) 2020-10-11 17:20:08 -07:00
MysterD
c0a30c8de6 Establish new versioning system (beta 1) 2020-10-11 15:49:24 -07:00
MysterD
7791e03d6a Added all levels to support levels! 2020-10-11 14:55:08 -07:00
MysterD
1345b8d9d0 Synchronized Bowser 3 fight platforms 2020-10-11 14:54:16 -07:00
MysterD
b536fcfdb0 Added RR to supported levels 2020-10-11 14:42:04 -07:00
MysterD
13fdf6ceaf Added TTC to supported levels 2020-10-11 14:40:13 -07:00
MysterD
dbe1e21b87 Synchronized TTC treadmill 2020-10-11 14:39:41 -07:00
MysterD
f64e315c74 Synchronized TTC spinner 2020-10-11 14:39:32 -07:00
MysterD
7167c8537b Synchronized TTC rotating solid 2020-10-11 14:39:21 -07:00
MysterD
52510de84e Synchronized TTC pit block 2020-10-11 14:39:07 -07:00
MysterD
4cb089c428 Synchronized TTC pendulum 2020-10-11 14:38:56 -07:00
MysterD
788dc5310c Synchronized TTC moving bar 2020-10-11 14:38:44 -07:00
MysterD
63af39cd53 Synchronized TTC elevator 2020-10-11 14:38:30 -07:00
MysterD
83baf2eac6 Synchronized TTC cog 2020-10-11 14:38:19 -07:00
MysterD
cbeea0472c Synchronized TTC 2d rotator 2020-10-11 14:38:07 -07:00
MysterD
e1ca3b963d Misc gMarioState/gMarioObject cleanup 2020-10-10 16:12:29 -07:00
MysterD
229880cfda Synchronize burning player smoke + misc version improvements 2020-10-10 15:49:17 -07:00
MysterD
b7cf6cdf5c Synchronized 'donut platforms'... the slow falling ones in RR 2020-10-10 15:33:17 -07:00
MysterD
736fba54a2 Synchronized swing platform 2020-10-10 15:32:39 -07:00
MysterD
edc275b5e8 Enhancements to networked player infrastructure 2020-10-10 01:18:45 -07:00
MysterD
5282c461fa Fix typo, whoops. 2020-10-08 23:53:16 -07:00
MysterD
392471eb1f Bugfix for spiny override ownership 2020-10-08 23:40:01 -07:00
MysterD
2fb2fc81e1 Add THI to supported levels 2020-10-08 23:38:43 -07:00
MysterD
2adea6aad6 Synchronized Wiggler 2020-10-08 23:37:01 -07:00
MysterD
fadea702ff Synchronized THI top 2020-10-08 23:07:32 -07:00
MysterD
c958837333 Somewhat synchronized fire piranha plants 2020-10-08 23:05:06 -07:00
MysterD
55939e6eda Synchronized enemy lakitu and spiny 2020-10-08 22:14:17 -07:00
MysterD
3bb96fa609 Synchronized Bubba 2020-10-08 22:05:21 -07:00
MysterD
028990302d Prevent star dance spam 2020-10-08 21:31:53 -07:00
MysterD
8360df84fe Add chat message when a player dies 2020-10-08 21:19:16 -07:00
MysterD
ff1b19e2ee Prevent King Bobomb from grabbing while thrown 2020-10-08 21:13:56 -07:00
MysterD
e4c1640c56 Change disclaimer 2020-10-08 21:03:35 -07:00
MysterD
597cc14ccf Add TTM to supported levels 2020-10-08 20:57:56 -07:00
MysterD
5924ed9485 Disable force-synchronizing of TTM slide 2020-10-08 20:57:11 -07:00