124 Commits over 1,034 Days - 0.00cph!
Add a new type of tree
Update build script and old junk
Fixed it for real this time
Fix player positions not restoring from saves properly
Add a script to build and package things
Fix off by one on copper minimum level
Change experience to a long instead of int
Add a function to get progress towards the next level
Add SkillDef so there's a place to define UI properties for each skill
Send initial skills state to player when connecting
Grant experience when gathering from nodes
Implement level requirements for nodes
Enable legacy timestamp behavior in Npgsql to workaround a bug until its fixed
WIP player skills
Move Towns.CodeGenerator into the new Tools folder
WIP setting things up to load resource node configs from JSON instead of having separate classes for all
Progress on replacing separate resource node entity types with a single one
Fix inacessible constructor
.NET 6 + update all dependencies
Fix incorrect assertion when building action runs out of resources
Logout reliability so players don't get stuck spawned in the world when not connected
Sentry error logging for the orleans side of the server
Remove some trace dumps on errors since they log to a file now
Some frontend server hardening work
Log trace dumps to a file too so they can't get lost in log spam
Improve reliability of frontend stream handling (gets rid of some duplicated messages due to server errors in the streams)
Fix incorrect available host memory being reported to orleans
Enable editor priviledge for everyone (temporary)
Add support for chat channels, add global chat
Disable filtering out interaction start/stop events for the current player
Fix recipe and item requirements not deserializing correctly
Refactoring a ton of stuff to work with s&box
* Got rid of unsafe code in compression utils
* Replaced Guid use with a custom Uuid class because using Guids required Unsafe
* WIP refactoring network serialization to use a codegen'd binary serializer instead of JSON because System.Text.Json can't do inheritance
Refactor to support deserialize instantiating using a constructor
Support Nullable<T>
Codegen loads the project with MSBuild so it has proper type info
Add support for List<T> serialization
Support serializing byte[], ImmutableList, and ImmutableDictionary
Some bug fixes
Mark more stuff as NetSerialized
Kill JSON
Swap out the TCP server for a WebSocket server
Update Unity client to confirm things still work
Updates to get sbox working
Include some neighbor heightmap data in chunks for getting rid of seams
Remove EditorLogin
Close channels a bit more eagerly
Put cancellation in where channels may get blocked up
Server changes to allow getting UserIds in chat messages
Log frontend server connection errors to make troubleshooting disconnects easier
Fix serialization not handling null strings
Update Towns.Data to not use assets from Unity
Update Towns.Data
Add notification for when the player's inventory is full and they can't gather more resources
Update Towns.Data
Add notification for when the player's inventory is full and they can't gather more resources
Update Towns.Data to not use assets from Unity
Server changes to allow getting UserIds in chat messages
Log frontend server connection errors to make troubleshooting disconnects easier
Fix serialization not handling null strings
Remove EditorLogin
Close channels a bit more eagerly
Put cancellation in where channels may get blocked up
Updates to get sbox working
Include some neighbor heightmap data in chunks for getting rid of seams
Update Unity client to confirm things still work
Mark more stuff as NetSerialized
Kill JSON
Swap out the TCP server for a WebSocket server
Support serializing byte[], ImmutableList, and ImmutableDictionary
Some bug fixes
Codegen loads the project with MSBuild so it has proper type info
Add support for List<T> serialization
Refactor to support deserialize instantiating using a constructor
Support Nullable<T>
Refactoring a ton of stuff to work with s&box
* Got rid of unsafe code in compression utils
* Replaced Guid use with a custom Uuid class because using Guids required Unsafe
* WIP refactoring network serialization to use a codegen'd binary serializer instead of JSON because System.Text.Json can't do inheritance
▇▋▅▌▌█▅▊ ▅▋▉▄▇█ ▄▇ ▄▊▅ ▋▊▉▊▅ ▉▇▌ ▌▅▍▉▊ ▍▌ ▌█▄▄▍ ▅▊ (█▄'▊ ▊▆▄ ▌▌ ▆▆▉█ █ ▊▌▅▍▇, █▉▆▉▅ ▅▌▄▉▉ ▊▆ ▄▊▍▅▆█ ▍ ▉▆▇ ▍▄▌)
▊▄▆█▅▄ ▆▅▋▉ ▊▇▌ ▌▉ ▋▆ ▉▇ ▆▄▆▌█▇█ ▇▅█ ▄ ▄▊▆▋▉▄▊▉ ▇█ ▇▅▆▅▇▋▇▊ █▋▍▌▊▌▌ ▇▅▋ ▅▊▋▄▊ (▊█ ▍▅▅▇█▅▋▅▌)
▌▍▄▋▄ ▉▅▋▋▊▅▆▍█▍▅▍▌ ▇▋▋▆ █ ▊▊▇ ▊▆▆▄ ▊▆▋▌▍
▌▇█▊▊█▄▇▍ ▉▅▄▋▆▆█▇ ▇▇▄▊▉▇▄▋ ▌▍ █▋▄▌█▅▉▄ ▋▉ ▅▋▇▋▍█▄▉ ▇▍▄▄▉▆ ▍█ ▋▆▇▍▇'▍ ▋▉▉▊ ▍▋▋▌▆▅ █▍ ▅▉▄ (▇▊▄▇ ▉▇▍ ▍▇▅▌ ▌▄ ▇▆▊▋)
▅▅▄▋▅▇ ▉▇▋█▋▌▉ ▉▄ ███▉▆▊▋▊
▋▊▅█▅ ▌▊▉▍█▊ ▋▄█▆▅▇▉▍ ▋▌▆▄▌ ▉▋█ ▊▍▊█▄ █▉ ▇▄▍▌█▉ (▅▍▋▇▌ ▋▄▍▅▆▆▊▋ ▍▌█▉▇ ▌▇▇ ▄▊▇▄▊▇▉)
▅▅▆ ▉▅▇▊▌▉ ▊▍▋▊▉█ ▊█▋▇▉▊▌ █▉▍▄▅▄▇▇▇ ▆█▉▌▍▄▊▉▇
▆▍▍ ▍█▄▋▌ ▉▍ ▍▇▆▌▌▆▊▊ ▉▅▆▊▉▆▇▊▇ ▅▋▉ ▊▋ ▆▄▆▋ ▍▉▅▌▇▇▉█▇
▄▄▉▊▉▆ ▇▄▇▅▊█ ▊▊▌▋▉ ▅▄ ▆▆▄ ▆▉▅▆▅▉ ▋▌ ▌▄▄▌▆▊ ▋█▅▆▇▊▌ ▌▊▆▆ ▍▇▅ ▋▆ ▉▅▅▍▌▄▉▆ ▅▌▇▉▆▉▇▌
▇▆▍ ▄▍▋ ▍▉▆▇▍ ▌▄▅ ▆▊▅▉ ▉▍▋▆▋▋▍ ▌▅▉▇▇▉
▄▍█▉▄▅▊ ▆▌▅
▉▋█ ▄▋▆▍▉ ▋█▊▄█▅▄ █▆▅▄▊█▆ ▍▋ ▌▍▊▉▅██ ▇▋▋▅ ▉▇▊▅▊▅▍▊▍▍▄
▆▄▆▊▋▍██▇▍ ▉█▋▌█▍▆ + █▋▋▆ █▆▇▅▉ ▉▍▋ ▋█▉▆▌▅ ▇▇▋▄ ▉█▍▆█▄ ▍▋
▊▊▇▌▍▊▆▍▌▌▍█ ▅██▊▊█, ▄▆▍▋▅▉██▆▇▆▅▌ ▆▅▌▍▆█▌▉▍▄▌, ▇██▆▍▄ ▍▆▊▍ ▄▋▌▌▉▋▇█
█▌▊ ▋▍▊▆▆▉ ▅▆ ▋▌▄ ▅▄█▊▅▆▉▅
▇▄█ ▍▅▇▄▄▋▊█ ▅▉▅▆▉▉▋ ▄▊ ▉▌▄▌▄▍ ▊▋█▌▊▅ ▍ ▆▉▊▆▄ █▌▆▉▇▊▆▋▉
▍▌▌▅█ ▅▌▊▉▄▊▌ ▆▋▆▉▌▍▇ (▅▆▊▉▇█▆, ▅█▍█ ▇▉▇█▊▍▊▋, ▆▍▅▊ ▍▊▊▆▆▅▍▍)
▉▊▍▊ ▆▇▆▉▊▅ ▄█▊▄▊▄ ▉▋▅▇▌▅▋▇ ▄▊ ▊▍▋ ▆▍▄█▍'▍ ▋▉▋▅▇▋ ▅▄▄▍▋▄▍ ▍▉ ▊█▍▊▄▇▌▊▉▊▊ ▆▌█▅▄▍ ▊▄▌█▌▊ ▌▉▋▄▋▇ ▇▊ ▋▍▅ ▉▉▄▋▍ (▉▍▍▅▉▊█ ▇▊▌▍▋, ▇▌▄▅▌▌▅▄▇ ▇▄▇▆ ▄▍▆▋▌▊▍▅)
▋▉▍▉▊▅▅▅█▇ ▍▇▉▆▌ ▌▍▊▊ ▍▋▉▆▌▉▌ █ ▊▅▊▌▅ ▄▉'▊ ▇▅▊▅▋▍ ▍ ▌▍▅▍ ▋▋▅▇ ▋▅▄▄ █▅▆▅▍▌▊ █▍ ▌▉▋▇▄ ▉ █▋▇█▍▍▋▋▆ ▊▉▅▋▉▋▌▋
▅▍▄▉▄▍▊▇ ▄█▍▄█▇▊
▊▅▊▊█▊▄▅ ▋█▄???
██▋▍ ▍▆▍▌▊▇▄▄▇▌▊ ▅▌█▌ ▊▋▇ ▍█▉▌▅█ ▄▄▌▇▄ ▄█▆▊▅▉ ▋▄ ▊▋▆▊▅▇▋▋█▆
▊▌▋ ▇▅█▆█▄ ▄▉▋ ▉▉▊▄▇▇ █▉▋▍▄▊▄ ▉▋ ▌█▉█▊ ▉▌▆█▇ ▋▇▋▇ ▋█▋█▍▆ ▊▍▅▍▇▆▍ █▊▋▅▆▊
▋▇▍▉▊▌▅ ▊▇▆▊▊▄▊
▅▍█▇ -> ▅▅▇▄▍▇▉▄▇▊█
▉▊▅█ ▊▄▍▋▍ ▄▊▋▉▇▊█▇▇ ▊▋ █▆█▍▄▇▊█▊▍▊
██▆▋▉ █▅▇▉▅ ▆█▇█ ▇▋▊▆▍▆▊▋▍▍▆▆ ▆█▇ █▉▄▄█▅▆▆▉▄▍
▅▍▄▉▆▋▅█▊▉▍ ▆▋ ▊ ▍▋▉▇▉▇▆▋▄ ▅▊▆█▌ ▇▄█▅ ▅▍▅ ▋▊▇▋ ▉▅▋▋▋█▇▆ ▇▉█▋▍▄▋▊█ ▍▍▌ ▄▇▆▅▊▅ ▌▄▌▉▅▄▅
▊▍▆▉/▍▆▊▇ ▍▄▆▍
▇▉▄ █▇▊ ▋▊▉▊▅▌ ▉▅▊▊▆ █▋▇▇▉▇▄█ ▄▉▊ ▇▉▄▆ ▍▆▆▊▋▊ █▍█▇▊▍ ▋█▍ ▋▊▄▄ █▆▍▉▋
▆▍▍▆ -> ▅▄▇
▍▊▍▌▇▌▄ ▌▉▄▌▍▍▍▇ ▆▄▅▋▄▇█▊▍ - ▄▋▉▇▌▋▆▋▇▄ ▋▇ ▌▉▊ ▌▉▅▉█ ▇▍▉▋▌▊▌▅█ ▄▄█▍ ▍▋▊▇▊▍▋ ▋▄▊ ▍▆▄█
▉█▌▉▅▍▅▉▄▅ ▋▉▅▍ ▅▇▇▍▆ ▇▌▌▄▉▍▅▋▊▇▇▊▉ ▋▅▇▊▉█▌ █▌ █▊▉ ▊▄ ▋▌▊ ▋▆▍ ▍▋▉ ▋█▇ ▊▍▆█▆▊█ ▅▌
▍▊█▌▌▄▋ ▉█▅ ▉▍▌▇▌▄ ▉▅▊▉▄▊▊▅▆▌▍▆
▇▅▄▄█▆▌▆▅▌ █▌▅▆▅▊▍█▋▊▇█▊ ▉▋▊▋▇▍▇▊
▍▅▉ ▅▇▄ ▉▉ ▉▉▊▌▋▊ ▌▇▋█▄▆▋
▄▆▌ ▌██ ▆▋ ██▆▌▆█ ▊▊▄▌▉█▌▅ ▄▋ ▊▍▌▍▆▍ ▍▍▄▌▌▍▊▇▌▊ (▆▋▄▅▇ ▍█▆▅▋▋▊█▌▍▌ ▆▄▆█▉▆▉ ▉█▆▌ █▉▋▄▊▍ ▌▅▅▅ ▌█)
▊▉▊▌▉▆▆ █▅▍ ▍▊▉▅▇▅ ▄▅▉▊▄▅▄▊▇ ▋▄▊▊ ▋▋▋▇▊'▉, ▍▌█ ▄▆▆▋▊▉▉▅ █▉▉▋▅▄▉▆▇█ ▉▄ █▋▅ ▉▌█▅▆▇▌
! ▉█▆▊▅▇█ ▇█▉▄▆▆▉▅▌▊▋▆▄ ▇▄█ ▌▍▆▅▊▍▆▇▇ ▋▉▍▅ ▉▉▍▆▌▄▄▍▍▆
█▊█▍▌█ ▍▆ ▉█▍▇▊ ▌▅▌▇▆▆▋█▋ (▉▍▇▄▌ ▄▆▇▄█▍ ▊▋▉ ▅▍▇▌█▉▍▉▅ ▅▌▄▄▍▊)
Add tracing for player event dispatch, added more player buttons on menu
Add a preprocessor flag to toggle tracing
Tracing fixes, fix login assert failure
Add tracing code to help diagnose the deadlock
Pressing D in the console will dump all current traces so we can get async "stacks" of everything that's running
Also fixed the editor entity disappearing forever probably
Switch save timer to not interleave, logout timer reuses the update timer (won't interleave anymore)
Allow logging in if player disconnects but hasn't logged out yet, stop calling update when player isn't logged in
Made the UI a bit less awful to look at
Add a timeout for disposing the network threads, fix chunks not having collision after pooling, enable dashboard again
Automatically fix respawn timers on resource nodes, update colliders on some things
Better inventory addition text placement, editor is no longer a dynamic entity
Fix save timer not stopping after saving
Little bit of progress on fixing the deadlock
Add a corner wall piece with 4 way rotation
Automatically logout in debug builds for now, increased the size of chat and inv additions, testing new workaround for deadlock
Trying some stuff to fix the deadlock
Send nearest chunks to players first, make the client send logout message when closing