Atto is an Unreal Engine plugin that implements a minimalistic backend / meta service.
Important
|
Atto is not intended for high-load production use. Also, Atto server API can be exploited to break things. Project goal is just to have a meta service for early game development. |
Atto aims to be fully compatible with Unreal Engine Online Subsystems, so you should not need to write Atto-specific code in your game. If you do have for some reason, either you’re using OSS API wrong, or there could be a bug in Atto. If you’re sure it’s the latter, consider reporting it to Atto issue tracker.
-
Auto-starts in editor, so it is immediately available for PIE
-
Provides online subsystem implementation
-
Zero cloud dependencies
-
Absolutely free and open-source
-
Persistent data storage
-
Implement more OSS interfaces
-
Add OnlineServices implementation
-
Add API for game-specific logic
-DisableAttoServer
-
Disables Atto server in cases where it would normally start (for example, in editor).
-EnableAttoServer
-
Enables Atto server in cases where it would normally not start (for example, game client)
-AttoListenPort=27777
-
Specifies network port for Atto server
-AttoBindAddress=0.0.0.0
-
Specifies bind address for Atto server
-AttoUrl=ws://localhost:27777
-
Specifies Atto server address to connect to
-AttoPublicAddress=<ip_address>
-
When creating online session, this parameter allows specifying which IP address it will announce for incoming connections
-AttoPublicPort=<port>
-
When creating online session, this parameter allows specifying which network port it will announce for incoming connections
Suppose, you want to start a separate Atto server, connect one or more dedicated servers to it and one or more game clients.
Now, start Atto server:
$ ./Binaries/<PLATFORM>/<PROJECT_NAME>Server AttoServer -EnableAttoServer -log
You may pass additional command-line options to configure it.
Verify that Atto server is listening to incoming connections by looking for a relevant log entry:
LogAtto: Atto Server started accepting connections on :27777
Next, start dedicated server instance:
$ ./Binaries/<PLATFORM>/<PROJECT_NAME>Server <YOUR_GAME_MAP> -AttoUrl=ws://localhost:27777 -log
Atto plugin provides a reference AttoGame
map with BP_AttoGame
game mode that uses AttoGameSession class.
AttoGameSession auto-creates online session when map is loaded and destroys when map is unloaded.
Alternatively, you will need to manage online session in your game code.
You might need to alter -AttoUrl=…
argument if your Atto server is running on a different port or machine.
Ensure that dedicated server has properly connected to Atto server and created online session by looking for a relevant entry in dedicated server logs:
LogOnline: OSS: Atto server url: ws://localhost:27777 LogOnline: OSS: Created online subsystem instance for: Atto LogOnline: OSS: TryLoadSubsystemAndSetDefault: Loaded subsystem for type [Atto] ... LogAtto: Creating game session: GameSession LogAtto: OnCreateSessionComplete GameSession bSuccess: 1
Finally, start your game client:
$ ./Binaries/<PLATFORM>/<PROJECT_NAME> -AttoUrl=ws://localhost:27777
You might need to alter -AttoUrl=…
argument if your Atto server is running on a different port or machine.
Ensure that client has properly connected to Atto server by looking for a relevant entry in client server logs:
LogOnline: OSS: Atto server url: ws://localhost:27777 LogOnline: OSS: Created online subsystem instance for: Atto LogOnline: OSS: TryLoadSubsystemAndSetDefault: Loaded subsystem for type [Atto] ... LogOnline: OSS: Successfully logged into Atto server, userId=<value>
What’s next?
You can use AdvancedSessions plugin or built-in Online Subsystem blueprint nodes or just use OnlineSubsystem from C++.