You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Concurrent test players (issue #26): JoinPlayer can now be called multiple times on the same
world, one call per distinct player name, and the joined players coexist and act independently
(own connection, own inventory). Internally, each player rides its own dummy TCP socket: the
engine's packet loop iterates whatever socket array is installed, so Atlas grows the array by
one slot per player instead of multiplexing one slot; the single dummy UDP server the engine
hard-wires every singleplayer-type client to is shared. Joining twice under the same name still
throws AtlasSetupException up front - the server would treat the duplicate as the same
account reconnecting and kick the first player mid-scenario.
Changed
Breaking: IWorldSession.ExecuteCommand now returns Task<CommandResult> instead of void
(issue #25). CommandResult carries Ok, the localization-resolved Message, and the
engine's raw TextCommandResult as an escape hatch. Commands run as the engine's own console
caller (admin role, every privilege); deferred (async-parsing) commands are followed to their
final result; an unknown command completes with Ok = false instead of throwing, so scenarios
can assert on intentional failures. Scenarios that drove a fixture mod through commands no
longer need the SaveGame side channel to read outcomes, and a slashless command now throws ArgumentException instead of being silently misparsed by the engine's dispatch.