Commit graph

40 commits

Author SHA1 Message Date
MysterD
b5de854674 Added chat commands: /kick /ban /permban /players 2022-02-12 15:23:05 -08:00
MysterD
d92ea3ff21 Lua networking improvements
More types can be sent over the network
SyncTables are synchronized on client join
2022-01-31 19:09:03 -08:00
MysterD
20599aa6f3 Made globalIndex able to be determined by just localIndex
refactored the ugly spaghetti mess that was network_player_connected()
2022-01-31 00:29:44 -08:00
MysterD
e9d3bf49da Initial foundation for lua networking 2022-01-30 23:11:33 -08:00
MysterD
75dfb45c6b Decreased the amount of back and forth for downloads
Server sends 5 chunks before waiting for another request
Download packets resend at a slower rate
2022-01-23 02:33:25 -08:00
MysterD
cdbf9eaabf Networking improvements
Reliable packets now save the actual remote address
Clients now only accepts server packets from the desired server
2022-01-23 01:55:43 -08:00
MysterD
767809f56a Lua mod table and download
Mods are now loaded into a table
Clients now request a mod list from the server, then download each file one at a time before joining
Embedded constants.lua into the program
2022-01-22 23:59:49 -08:00
MysterD
f45ae4a115 Allow players to change name/model/palette while connected 2022-01-20 22:23:57 -08:00
MysterD
401e6169d5 Make packet duplication checking more intelligent by checking hashes 2021-08-25 18:05:36 -07:00
MysterD
a081327ef1 Add packet debug sync to make debugging sync ids easier 2021-08-25 18:02:30 -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
9699d79dd7 Fix Discord connections on unstable 2021-07-31 17:24:13 -07:00
MysterD
033a9aa1a8 Hide other players in main menu 2021-07-30 18:47:09 -07:00
MysterD
4e0a3e3e57 Merge branch 'dev/djui' into dev/unstable 2021-07-22 20:38:21 -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
3eef4076b9 Possibly fixed Discord issues 2021-06-19 21:59:06 -07:00
MysterD
6aded174e9 Synchronized moat draining and cap switch unlocks 2021-06-14 19:59:11 -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
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
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
843a8cd18f djoslin0's new warp code 2021-04-05 03:21:37 +03: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
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
edc275b5e8 Enhancements to networked player infrastructure 2020-10-10 01:18:45 -07:00
MysterD
b673457a48 Synchronized mips/toad star spawning 2020-10-02 21:05:02 -07:00
MysterD
8c7f55a1fb Synchronize instant warps 2020-09-28 19:58:37 -07:00
MysterD
168a41f0f6 Drop various types of packets if level/area doesn't match 2020-09-26 15:52:00 -07:00
MysterD
20ab5ec9f6 When client selects to save, server will save 2020-09-23 20:44:44 -07:00
MysterD
f8bffd3b2a Added player connected/disconnected events
Changed synchronizing text to be more descriptive
Added 'player connected', 'player disconnected', 'network shutdown' chat messages
Prevented someone from joining through Discord while in another lobby
Added the distinction of sending a packet to all vs to a specific player
Enforced lobby size of 2, multiple joiners in a direct connection will be booted
Stored network destination for each player
Detected network drops
2020-09-18 23:06:26 -07:00
MysterD
3a37b79286 Renamed packet_save_file to packet_join 2020-09-15 23:07:00 -07:00
MysterD
2a10cca29a Refactored packet code out of network.c/h 2020-09-15 22:58:16 -07:00