[v4.2] Lots of improvements and new features!
๐๏ธ Changelog: ๐๏ธ
- Collisions revamp. Entities can now have rotating colliders
- (Now depending on "detect-collisions", which wraps "rbush" and "sat", instead of using "rbush" directly)
- Change client-side collisions to check based on the "solid" asset tag rather than just hard-coded oWall object
- New Warp Portal entity and proper room transition
- Queue packets for later using
queuePacket()
(e.x. for when you receive entities while still changing rooms) - Position interpolation for entities to drastically reduce jittering
- Entity positions are now automatically rounded up to 1/100ths each tick to account for 0.1 + 0.2 = 0.30000000000000004
- Entity props and improved .yy room loading (now also loading variable definitions)
- A critical fix that finally prevents the game from occasionally crashing when ran over WAN with a latency
- Fixes a bug with the entities that started in the room that would load them twice into the rtree
- Fixes a bug that would load non-solid entities into the rtree
- Performance improvements
- A Stress Test room with 50 boxes
- New demo rooms to showcase the Warp Portals
- Rooms automatically stop processing entities when there are no players present for X seconds (you can change/disable it in the config)
- Purge all local entities on room start (GMS2) - to avoid creating duplicates when loading entities from the server
- Bundle "entity" commands into a single "entities" command that each room is sending once per tick. Also adds meta-data to see which room sent the entities
- Optimize the lobby packets to only send relevant info (instead of all the entities of every room)
- Bumps the packet size header bytes from u16 to u32
- Adds a new "initial_lobbies" config that controls how many lobbies the server creates on start
- Adds a new "verbose_lag" config that sends warning when the server is running below its tps
- Minor QoL improvement to the Demo's menu rooms - pressing escape now sends you back to main menu
- Adds a "Reconnect" button in the main menu
- Console output styling using the "chalk" library
- Implement a gulp script to preserve newlines when building TypeScript to JavaScript, which enables me to publish (an actually humanly-readable) JS version of the server in just a couple minutes
- Fixes a bug that would infinitely flood the global.clients list when reconnecting to an already running server
- Fixes a typo/bug when if you used the --port command line argument it would try to assign the same port to both TCP and WS servers
- Minor change to wrapping outside room - the object now has to be moving away from the room for the wrapping to happen
- Adds pinging functionality
Enjoy!
- Evoleo