Archive experiment#289
Open
riperiperi wants to merge 115 commits into
Open
Conversation
- Transitioning multiple from and back to a lot may error since you haven't left the first one yet - Weather "darken" not being properly set for lighting calculation is very noticable - Switching to city view for half a second sucks
Prevented joining lots in the first 10 seconds, and also messed with the shutdown process.
Configures the rate at which the server sends ticks, relative to its base rate of 30 ticks per second. Default is 4 (7.5 ticks per second), which was appropriate for an MMO scale server.
Also adds mgcb tooling to the project, fixes the project files and splits fonts to their own.
- Disables pixel snapping for sprites when scale isn't 1. (avoids weird holes in 9-slice textures and similar) - Enable scaling for masked UIListBox - Enable scaling for UI3DThumb - Use HighDpiMode.PerMonitorV2 for FSO.Windows - Fix ArchivePersonSelection when scaled - Fix bulletin board sticky rendering when scaled - Improve tooltip positioning at 100%
Reduces bad frametimes when running with high refresh rates like `-hz120` `-hz144` `-hz180`
TODOs: - Fix running back to previous lot causing sim-already-exists error - look over CoreGameScreen/CameraController3D changes (camera inheritance + transition) - VMNetGotoLotCmd level? - VMNetSimJoinCmd validate transition info!
It has some opinions on what settings should be, but generally uses the last known good configuration.
Needs Wrapped = true, but does work
CommandLineParser has been changed significantly, so there is some refactoring.
Export archive config to be used with FSO.Server.Core. Not currently tested.
- Plugin needs teleporter checks and committing reviewed json - Archive management needs a lot...
Most things should work now.
Should probably still support TLS to prevent mitm -> session hijack, but this should avoid client ID harvesting.
Still a bit buggy in some places (main window, avatar tool) but is actually usable now. Could do with hi-dpi support in the BHAV editor. Not sure what can be done about win forms super broken per-screen DPI switch.
- SetToNext often has StackObject scope, use prefetched objects when possible - Cheaper type checks for VMRoutingFrame and VMDirectControlFrame (they are less common cases, so a boolean to indicate the frame is normal is a lot faster). - Some cleanup for Pop method. Could be faster if the thread separately remembers the active frame for NextInstruction. - Some stackallocs that probably don't do much in .NET 9 but make me less unhappy
Also select voice randomly from installed selection based on persist id. (maybe users should be able to select a preference)
Use the mouse wheel to switch to a third person perspective. Currently still clips through walls a bit.
Should support combining different tile raycasts (floor/wall) into one. Used to push the 3rd person camera away from walls. - Ideally should be able to clip through fences - Core algorithm is based on the existing tile raycast, which isn't airtight. - Could start using for the terrain raycasts.
I guess this is a precision error?
Add some rudimentary validation for it, too. Should probably disable thumbnail and facade generation when exiting build/buy without changes.
Currently displays TSO credits, should allow switching between this and FSO credits in future
|
The archive experiment is just testing stuff no regular changes? |
* Server connection back Get the server connection working again that was lost by the Archive mode changes. Key changes: - Fix server connection bugs caused by the new Archive mode - Update Microsoft.Data.Sqlite.Core to 10.0.2 - Add allOpenable config flag for free roam lot transitions for normal servers. - Add city and lot server configuration options - Make UCP.InitArchive public for CoreGameScreenController - Archive UI improvements (join dialog with direct server IP join) * Keyboard navigation Add full keyboard and Tab navigation support to the UI framework. Key changes: - Tab/Shift+Tab navigation between focusable UI elements - Keyboard support for UIButton, UISlider, UIListBox, UICombobox - UIRadioButton arrow key navigation within groups - Mouse wheel scrolling for UIListBox - UIContextMenu keyboard navigation (arrow keys, Enter, Escape) - UIGridViewer keyboard support - Focus management via InputManager with IFocusableUI interface * FSO.Unix cross-platform support Add FSO.Unix project for native Linux and macOS support. Key changes: - New FSO.Unix project with cross-platform entry point - macOS .app bundle creation and deploy script for macOS/Linux - Native dialogs via osascript (macOS) and zenity (Linux) - ImageSharp-based bitmap/PNG handling instead of Windows drawing library for non-Windows platforms - GameLocator path fixes for TSO on macOS and Linux * Docker containers Add Docker configuration files for running a FreeSO server. Key changes: - Dockerfile and docker-compose.yml for server deployment - Entrypoint script with secret generation - OCI image labels for container metadata - Default server configuration template (config.json) * Spectator mode Allow non-roommate visitors to open and explore lots in a read-only spectator mode. Spectators can walk around and observe but cannot modify the lot (build, buy, delete objects, or use most interactions). Key features: - Basic spectator mode for non-roommate lot opening - Block VM commands, cross-room routing, and portal interactions for spectators - Block pie menu on lot objects with error feedback - Spectator-to-writable transition when a roommate/owner joins - Reload lot save and transition back when lot owner joins - Walls up with roof on spectator lot entry - Spectator label shown in UI - Admins excluded from spectator mode restrictions - Chat event when lot transitions from spectator mode - Allow spectators to use direct control - No spectator lots in Archive mode Also includes: cursor fixes for macOS/Linux, PriorityQueue pathfinder optimization, UIListBox focus fix, CurLoader BMP header fix, API config cleanup, and various other minor fixes. * Spector mode improvements
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.
I originally split this off due to using a custom version of Monogame and an experimental feature, but those things should be solved now.
There are a large number of changes in here to a lot of different things, the majority are around the lot connection lifecycle. Here are some highlights for other features: