Every game message still written or read by hand is now a NetGameMsg with
Serialize and Deserialize, in per-domain files:
- MovementMessages: teleport, platforms (resync and its request), orient to
angle, node rotation lock, gravity scale, jetpack mode, control scheme,
respawn checkpoint, rails (set/start, ready, cancel, arrived), mount
inventory ID, dismount complete, possession ack, ghost reference override
and position, camera cycling (eCameraTargetCyclingMode moves here).
- ZoneMessages: player loaded (the old PLAYER_LOADED case), ready for
updates, player ready, restore to post load stats, server done loading,
invalid zone transfer list, zone summary display/dismissed, level
processing complete, object world state, and the localized announcement
WorldMigration wrote by hand.
- PlayerMessages: chat mode, GM level, LEGO score, currency, reputation,
GM invis, pickup currency, zone and player statistics, chat commands, bug
reports, verify ack.
- ObjectMessages: fire event client/server side, notify client
(zone) object, notify object, script network vars, failed preconditions,
terminate interaction, set name, request use, request server object info.
- QuickBuildMessages: notify state, enable, cancel.
- ActivityMessages gains match response/update/request, leaderboard request
and data, shooting gallery score/rotation/fire, activity state change.
- MissionMessages gains MissionDialogueCancelled (a no-op, as before).
The wire structs left in GameMessages.h move to their domains (tooltip and
emote to Effects, loot and item use to Inventory, model build to Building,
behavior sound to Property, skill sets to Skill) and gain the missing
direction. The dismount logic moves to PossessorComponent::OnDismountComplete.
Every inbound message is registered in the GameMessageHandler map; the
switch is gone, and GameMessages.cpp only holds the GameMsg/NetGameMsg base
code. Call sites build the structs (NotifyClientObject, TerminateInteraction,
Teleport, PlatformResync, FireEventClientSide, NotifyObject and
NotifyClientZoneObject get convenience constructors like PlayFXEffect).
Dead senders are dropped: SendSetShootingGalleryParams (no callers, field
order was a guess), SendTeamPickupItem (the struct already existed),
SendRequestActivitySummaryLeaderboardData (the struct covers it).
Verified with RemainingMessagesTests: every old Send* function is frozen
verbatim in Legacy/RemainingMessagesLegacy.h and compared byte for byte
(same bits, destination and broadcast flag) over grids of inputs; every old
Handle* read sequence is frozen as a Read* oracle and compared with the
struct's Deserialize; round trips, truncation and a golden packet.
PlayerLoaded (0x00dc36f0), SetGMLevel (0x00dd6230), MissionDialogueCancelled
(0x00d9cc10) and LocalizedAnnouncementServerToSingleClient (0x00f23c50)
were checked against the client. Behaviour notes: an inbound message that
fails to deserialize is dropped, so ParseChatMessage over MAX_MESSAGE_LENGTH
is dropped instead of truncated, and PLAYER_LOADED / READY_FOR_UPDATES /
MISSION_DIALOGUE_CANCELLED now read their (unused) client fields.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The NexusDashboard-parity dashboard (dDashboardServer) and everything built on it on the experimental branch:
accounts, characters, properties and moderation tools, permissions shared with in-game slash commands, economy
reports, World 3D and property 3D views with client scenery, scheduled events (features, vanity changes, live
events, announcements, restarts), vanity files and events, the CDClient browser, the message inspector with saved
captures, chat filter tools, community challenges, live ops, the AI moderator helper, and the server-side changes
they need.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* change network settings from vector to LwoNameValue
* move settings on Entity to managed memory
* Migrate more members
* chore: remove pointer leakage from raw ldf pointers
* feedback
* fix ci
* feat: convert character ids to 64 bits
remove all usages of the PERSISTENT bit with regards to storing of playerIDs on the server. the bit does not exist and was a phantom in the first place.
Tested that a full playthrough of ag, ns and gf was still doable. slash commands work, ugc works, friends works, ignore list works, properties work and have names, teaming works.
migrating an old mysql database works . need to test an old sqlite database
* fix sqlite migration
* remove nd specific column migration
* Database: Convert to proper namespace
* Database: Use base class and getter
* Database: Move files around
* Database: Add property Management query
Database: Move over user queries
Tested at gm 0 that pre-approved names are pre-approved, unapproved need moderator approval
deleting characters deletes the selcted one
refreshing the character page shows the last character you logged in as
tested all my characters show up when i login
tested that you can delete all 4 characters and the correct character is selected each time
tested renaming, approving names as gm0
Database: Add ugc model getter
Hey it works, look I got around the mariadb issue.
Database: Add queries
Database: consolidate name query
Database: Add friends list query
Update name of approved names query
Documentation
Database: Add name check
Database: Add BFF Query
Database: Move BFF Setter
Database: Move new friend query
Database: Add remove friend queries
Database: Add activity log
Database: Add ugc & prop content removal
Database: Add model update
Database: Add migration queries
Database: Add character and xml queries
Database: Add user queries
Untested, but compiling code
Need to test that new character names are properly assigned in the following scenarios
gm 0 and pre-approved name
gm 0 and unapproved name
gm 9 and pre-approved name
gm 9 and unapproved name
Database: constify function arguments
Database: Add pet queries
* Database: Move property model queries
Untested. Need to test
placing a new model
moving existing one
removing ugc model
placing ugc model
moving ugc model(?)
changing privacy option variously
change description and name
approve property
can properly travel to property
* Property: Move stale reference deletion
* Database: Move performance update query
* Database: Add bug report query
* Database: Add cheat detection query
* Database: Add mail send query
* Untested code
need to test mailing from slash command, from all users of SendMail, getting bbb of a property and sending messages to bffs
* Update CDComponentsRegistryTable.h
Database: Rename and add further comments
Datavbase: Add comments
Add some comments
Build: Fix PCH directories
Database: Fix time
thanks apple
Database: Fix compiler warnings
Overload destructor
Define specialty for time_t
Use string instead of string_view for temp empty string
Update CDTable.h
Property: Update queries to use mapId
Database: Reorganize
Reorganize into CDClient folder and GameDatabase folder for clearer meanings and file structure
Folders: Rename to GameDatabase
MySQL: Remove MySQL Specifier from table
Database: Move Tables to Interfaces
Database: Reorder functions in header
Database: Simplify property queries
Database: Remove unused queries
Remove extra query definitions as well
Database: Consolidate User getters
Database: Comment logs
Update MySQLDatabase.cpp
Database: Use generic code
Playkey: Fix bad optional access
Database: Move stuff around
WorldServer: Update queries
Ugc reduced by many scopes
use new queries
very fast
tested that ugc still loads
Database: Add auth queries
I tested that only the correct password can sign into an account.
Tested that disabled playkeys do not allow the user to play the game
Database: Add donation query
Database: add objectId queries
Database: Add master queries
Database: Fix mis-named function
Database: Add slash command queries
Mail: Fix itemId type
CharFilter: Use new query
ObjectID: Remove duplicate code
SlashCommand: Update query with function
Database: Add mail queries
Ugc: Fix issues with saving models
Resolve large scope blocks as well
* Database: Add debug try catch rethrow macro
* General fixes
* fix play key not working
* Further fixes
---------
Co-authored-by: Aaron Kimbre <aronwk.aaron@gmail.com>
* Logger: Rename logger to Logger from dLogger
* Logger: Add compile time filename
Fix include issues
Add writers
Add macros
Add macro to force compilation
* Logger: Replace calls with macros
Allows for filename and line number to be logged
* Logger: Add comments
and remove extra define
Logger: Replace with unique_ptr
also flush console at exit. regular file writer should be flushed on file close.
Logger: Remove constexpr on variable
* Logger: Simplify code
* Update Logger.cpp
* Move EntityManager to Game namespace
* move initialization to later
Need to wait for dZoneManager to be initialized.
* Fix bugs
- Cannot delete from a RandomAccessIterator while in a range based for loop.
Touchup zone manager initialize
replace magic numbers with better named constants
replace magic zonecontrol id with a more readable hex alternative
condense stack variables
move initializers closer to their use
initialize entity manager with zone control
change initialize timings
If zone is not zero we expect to initialize the entity manager during zone manager initialization
Add constexpr for zone control LOT
* Add proper error handling
* revert vanity changes
* Update WorldServer.cpp
* Update dZoneManager.cpp