Using built-in akka configs, we are able to map Actors to dispatchers in
a fine-grained way. Now each session router, network listener, and zone
have a dedicated set of threads. Currently all WorldSessions are sharing
a single worker pool, which means that the server could still crash if
all worker threads are exhausted. To prevent conditions like these, the
amount of time spent on single actors based on time and number of
messages can be tuned.Threads when not receiving work exit to save
resources.
Also all .conf files are now included in the resource packing process.
Users should create user.conf to override these .conf files to avoid
losing edits when updating the server version.
PsAdmin uses a dedicated TCP port to allow for remote queries and
command to be sent to the running World/Login server. Commands are a
single command followed by zero or more arguments.
Commands may require access to the ActorSystem, so they will get their
own dedicated actors to be able to handle the different messages
required that can be sent in response to a query. The return line is in
JSON to allow for easy parsing by applications, such as web servers.
An interactive client is easy as being able to parse json and buffer
command input.
Some basic commands are implemented for now:
* shutdown - kills the actor system
* list_players - gets a list of players on the interstellar cluster
* dump_config - get the running config
* thread_dump - dumps all thread backtraces (useful for prod debugging)
More advanced commands like kick/ban will require additional testing.
* Add rotation to building constructor and map files
* Change non-radius based painfields to use a bounding box check based on nearby amenities (disabled in caves)
* Reduce pain field damage to 5
* reset pad order queueing system if the player forces a system fix; blocking dismounting of vehicle in certain situations, such as the vehicle just being spawned
* test fixes
* internalized the actions of the VehicleRemover into the vehicle control agency; this required modifications to vehicle deconstruction messaging, but also had implications for the vehicle spawn pad
* fixed tests; created a with-context ActorTest environment; hacked away the unnecessary aspects of VehicleRemover
* changes to tests; simplifications to terminated cargoing abilities
* removing unnecessary indirection from cargo handling at the end of a vehicle's life
* Fix resource silos not showing the correct charge levels after server startup
* Make all continents have broadcast warpgates, disable geowarps, common initialization functions for zones
* Make instant action respect spawn point overrides e.g. z offset
* /warp and /zone restrictions from PTSv3
* Allow players hit by EMPs to disable implants correctly to prevent infinite stamina drain
* Quick fix to stop VehicleRemover from crashing if the target vehicle has no Actor assigned
* refactored ZoneActor for external calls; earliest code for calculating Instant Action placement
* created a building definition so that SOI is no longer indeterminate; gave hot spots projector a longer-lasting backup for purposes of activity retention; instant action ramp-up works
* filled out instant action messages; refactored main method
* packet and initial tests for DroppodFreefallingMessage; drop pod definition, packet converter, and consideration in WSA and InterstellarCluster instant action functionality; droppods now work
* duplicated soi information; modified priority of instant action; assigned cavern status; added reset for instant action failure; implant interrupt condition; wrote comments
* no instant action droppods; added messages for cancelling instant action when certain conditions occur; wilderness instant action request
* made generic the entire instant action process to shoehorn the whole of the sanctuary recall process into it; I hope you're happy
* test fix; vehicle hacking fix; no more artificial NTU drain
* escape case for zoning last chance; descriptive mesages condense similar calls
* something of a merge repair