Draft
Conversation
That's not how locks work
SpriteBatch doesn't work with linear space lighting, so I just converted the multiple to SRGB.
Add streaming update queue, fix premultiplication showing through fog
Speeds up debug a lot. Maybe slower on release?
These slow down debug builds a lot, and can slow down release a bit.
Avoids walls/floors/lighting all being loaded at the end. Still stutters more than I'd like during the loading dialog, but it's better than during the transition.
Reduces latency for hosting a property
Avoids recreating a hashset every frame. There's still a small issue where trees don't get recalculated when the occupied tile set changes.
- Much faster loading for properties during loading screens. Disabled during typical gameplay. - Need to add some better handling for invalid FSOM data or textures. right now it just fails silently (it should regen the cached mesh) - Probably needs a bunch of testing to see if things ever break.
- Fix issue where mailbox and phone could be rotated incorrectly in surrounding lots - Object placement in unowned lots is now deterministic (always the same for each location) - Fixed an issue where surrounding lots would be culled when they were clearly in view - Removed road grass stamp on unowned lots - Properly fixed the issue where sloped water terrain would be bumpy - Allow blank lots with landmark objects. They become invisible and intangible.
Maybe could be important if an avatar joins and then instantly tries to leave (they wouldn't be on the previous tick), but in that case they would have nothing to save anyways...
* Add FSO.DotNet9 MonoGame project for .NET 9 * Remove tso.client project and update DotNet9 references * Add FSO.Client project file * Migrate FSO.Common to SDK-style project and .NET 9 * Migrate FSO.Common to .NET 9.0 build as Class Libary succeeds in VS2022, I have not tried building game, need to migrate all other first * Add package and project references * Made NET 9.0 project forFSO.UI to SDK-style project * Migrate FSO.Files to .NET 9.0 build as Class Libary succeeds in VS2022, I have not tried building game, need to migrate all other first * Start of migrate FSO.HIT project to .NET 9 * Try converting * Work in progress migration to 9.0 * Wip * SimAntics compiles * Working on FSO.UI and FSO.Client * Start of migrating FSO.Server * Migrate to .NET 9 and update JWT implementation * Migrate FSO.Server.Protocol Need to look at packages later, it somehow compiles * Refactor clients for async/await for RestSharp * Add new project references to FSO.Client.csproj * SimAntics JIT compiles to NET 9.0 * Updated FSO.Server.Api.Core and FSO.Server.Database projects to target .NET 9 * Migrate projects FSO.Server.DataService etc * Migrate FSO.Server.Domain to SDK-style project * Build FSO.Server.Common * Test * Brought back original FSO.Server * using old PortableJWT needs maybe replaced later for .NET 9.0 * Add System.IO.FileSystem.Primitives dependency * FSO.Server build * Remove FSO.Server.Debug references and add PortTransformer * Fix build failing * Remove IsAotCompatible and set PublishAot to False othwerwise it wont compile DynamicCode does not work with AOT * MSFData to .NET 9.0 * MSDFExtension to .NET 9.0 * Remove mp3sharp library replaced with Nuget MP3Sharp * Remove license file and fix solution config * Brought back old tso.client from Archive * TSO client build * FSO Windows, compiles but has Errors with old MonoGame linking * Remove FSO.DotNet9 project and update Windows build * Why does MSDF data not work * Fixed MSDF fonts in content * Refactor content pipeline and update font loading * Working .NET 9.0 build, playable on Windows * Fix image loader * Made some libaries AOT * Update FSO.Windows.csproj * Restore OnExiting override * Made VoronoiLib .Net 9.0 * Remove MIConvexHull no .dll available * Migrate projects to SDK style and remove unused dlls * Migrate FSOFacadeWorker to .NET 9.0 * WindowsDX added as default for windows via MonogameLinker * Fixed not launching GL with -gl argument * Volcanic / FSO.IDE working on .NET 9.0! Currently working, only need to make the buttons in Volcanic fit the frames no they are almost invisible, (E.g at creating new .iff file) * FSO.Debug now compiles and runs but is non functional * Add launchSettings.json for FSO.IDE * Fix crash when Loading job lots in sandbox mode * Remove old TSOClient Network files * Remove unused debug and rendering files Deleted several debug UI and rendering-related source files from TSOClient. Also updated the .mgcb files for the new Fonts /outputDir:../Content * Fix FSO.Server.Core compiling Removed AOT compile from FSO.Server.Core that caused issues with Dynamic Code * Remove Nancy dependency and its Severs\Api files * Update font loading paths in TSOGame.cs to root Content folder * Add ApplicationDefaultFont property to IDE * Remove Admin files from FSO.Server compile The FSO.Server project needs to exclude the Admin folder, as node_modules can contain cs files for build scripts * [Audio] Refactor MP3Player to use async buffer queue (.NET 9.0) Refactors MP3Player to replace old thread-based decoding and buffer management with a .NET 9.0 async/Task-based implementation using ConcurrentQueue and SemaphoreSlim. Improves performance, reduces GC pressure with ArrayPool<byte>, and makes resource management and cancellation more reliable. Simplifies buffer submission logic and adds preload/buffer tuning options. * Ignore .idea/ from Rider Added .idea/ directory to .gitignore to prevent JetBrains Rider IDE files from being tracked in the repository. * Migrate FSO.Watchdog to .NET 9 and made the application work again, because .NET 9 no longer supports AppDomain.CreateDomain. and AppDomainSetup.ConfigurationFile is also removed in .NET Core/.NET 5+ * Migrate FSO.Patcher to .NET 9.0 * Disable nullable in all projects * DatabaseScripts files * Replaced async login in FSOFacadeWorker Refactor FSOFacadeWorker login logic and update project files - Removed config.json from FSO.Server output - Added discord-rpc.dll to FSO.UI - Refactored login logic in FSOFacadeWorker to remove async/await - Updated method calls to use discard (_) for tasks * Refactor login Regulator by removing async/await usage During migration, this method was made async to get the project to build properly. But now it builds succesfuly without async, so restoring the original archive branch implementation. * Exit game fix Fixes that sometimes after closing the game, it not fully closes, it was still running in the background. - It works but is it good to call Environment.Exit(0); ? or are there maybe background processes running that are not finshed yet, and i just kill now? * [Volcanic] Improve Font sizing in IDE Fixes some/most of the scaling issues in Volcanic for dotnet9, and updates default font to modern Segoe UI. * BHAV Editor window, font & sizing consistency * Remove conflicting form closing handler Should prevent the game from accidentally staying open and fix the archive closing dialog --------- Co-authored-by: riperiperi <rhy3756547@hotmail.com>
Gets some easy wins, especially with walls/floors. It could be even faster with a full rewrite, but I don't think it's that high a priority.
Faster texture loading, less allocations and less stupid algorithms for calculating normals, roofs etc.
Doesn't need to recreate this every time.
Maybe should be moved to predraw.
We don't use plugins.
Unfortunately needs constantly signing into github with a PAT token...
Normally ticks are buffered together to reduce the server load (30fps vs 30/4tps - 7.5 ticks per second), but this can notably increase join times. Disable this while new players are joining, so the state serialization/join delay is minimized.
Saves waiting a tick
This reverts commit c40be47.
* UIListBox keyboard navigation (Sandbox mode) * Add focus support to UIListBox UIListBox now implements IFocusableUI, instead of MouseOver * Fix UIListBox up key selection when no row selected Previously, pressing the up key with no selected row, it would wrap to somewere in the middle. Now, it correctly selects the last item. * Removed focus from UIListBox constructor and moved it to UISandboxSelector * Show surrounding terrain on start in Sandbox Before, when joining Sandbox mode, the surrounding terrain wouldn’t show up until you manually toggled the “Surrounding Lots” graphics setting On & Off. Now it shows the surrounding terrain right away when Sandbox mode launches. Let me know if this is the right way to enable it at launch, or if there’s a better approach. I’m still getting familiar with the codebase * Set Sandbox lot time to TSOTime The time set above was getting overwritten, I think inside BlueprintReset(lotName). I dont know if that is intentional to reset lots to "12:00 am", but now the times match again with TSOTime * Add admin chat commands for tickrate and speed Mainly for use with sandbox mode
…and some updates for handling install paths (#287) * Copying Steam data over properly * Helping with easier start up process. * cleaning up logs per PR feedback
* Improve Insensitive method for path resolution Enhance Insensitive method to resolve file paths case-insensitively on Linux/macOS and check file existence on Windows. * Update FSO.Server.Api.Core.csproj * Update FSO.Server.Watchdog.csproj * comment cleanup * Refactor OS check for Windows platform
…ollers and exp pack data loaded (#288) * Fixing issues with loading fresh lots * Removing unneeded fallback code * Removing unneeded check per PR feedback
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Large scale changes to the client and server to support running in "archive mode", a mode that uses a local sqlite database cloned from a live server to provide a simple self-hosted exploration experience for users. It's a bit like those videos of abandoned shopping malls, except the houses don't grow vines, fall apart or generate their own copy of the backrooms.
There are a lot of additional changes that improve game performance and fix bugs. Obviously it's still in progress.
Right now this PR doesn't support running with a regular server - it's just here to keep track of diffs vs master. At some point, I would like to make it possible to build the game both in archive mode (with the embedded server) and in its normal form (without the embedded server, so shouldn't bundle with sqlite etc).