Evaluating BOLT as a solution for dedicated Unity headless Linux servers

Hi!

I'm prototyping a PvP game based on Unity and currently trying to pick an appropriate tech for the networking.

I'm planning to use a dedicated server(s) because it simplifies lots of things even though the latency will be higher than for P2P. Since it's going to be a 'room based' game where up to 6 opponents fight on an arena I'm going to spawn headless server instances on demand using Amazon services. Furthermore I don't need any matchmaking support since it will be implemented on a different level using our already exsisting TCP based RPC solution.

Another important thing is capability to run the dedicated server right in the Editor during development and capability to emulate several clients connected to the server(also providing an option to switch between them). I could achieve that with my custom prototyping code(with some limitations) and it was _such_ a time saver for fast iterations.

I'm also looking for a library which doesn't allocate memory like crazy. Having released couple of Unity based games I can tell for sure that exessive memory allocations is the top application stablity issue.

I'm not yet sure but BOLT looks like the best solution for the task. And I'd rather go with it but I'm not sure if the pricing policy fits me. It's based on CCUs but I'm going to have my own server(s). Why would I connect to Photon services at all? I don't need that(like I said above I don't need any 3d party matchmaking). Furthermore I'm not sure if Bolt is Linux friendly. I read somewhere that Photon server is a Windows only solution. I'm not against Windows but I simply don't have enough devops expertise for its maintenance and it's going to heavily affect the whole production pipeline.

Comments

  • Bolt is pretty optimized and used in a lot of games that use dedicated servers (Aftercharge, Pantropy, many others)

    Our current policy for dedicated servers is that you can host dedicated servers and not worry about CCU as long as you are making less than 100k USD a year. Otherwise come talk to us.

    Bolt runs well on Linux. Photon Server is a separate Photon product that we have an integration for. It has nothing to do with Bolt itself.
  • stanchion said:

    Bolt is pretty optimized and used in a lot of games that use dedicated servers (Aftercharge, Pantropy, many others)

    Thanks a lot for the feedback and clarifications.

    Another question is whether it's possible to specify network replicated state configuration via code or maybe external files. As a programmer I don't find it convenient to do this via UI :)
  • Tokens can be done entirely outside of the "UI" system. I think you'll find that it is quick and saves a lot of time. I can create an inventory state with hundreds of properties, fully compressed as I wish, add and remove parts any time I want, and make automatic callbacks in seconds. Sometimes being "fully code" would be convenient but it doesn't really cause any friction.
  • I also had a look at the tutorial and while it's great one thing which bothers me whether it's possible to start server and multiple clients in the Editor(I asked about this in the very first post).

    In the tutorial the server is setup in the Editor and clients are standalone applications. While this is good for isolation it's quite slow for quick development iterations and debugging.

    When I prototyped a small game using Unity's LLAPI I managed to setup the described schema(using split screen for up to 4 clients).

    Is it possible with BOLT? I'm asking this because judging by the API docs there are many static methods and properties(e.g BoltNetwork.isServer) which make this option impossible.
  • Bolt doesn't support that. What is the issue causing slowness? In terms of build times I'm able to keep build times very low even with a big project using assetbundles and sometimes script only builds.
  • stanchion said:

    Bolt doesn't support that. What is the issue causing slowness? In terms of build times I'm able to keep build times very low even with a big project using assetbundles and sometimes script only builds.

    Well it's anyway much slower than just pressing the play button in the Editor :) Plus I can't inspect client scene and objects hierarchy. And I can't see client logs in the Editor console.
  • You can change "editor mode" in the Bolt scene window to client then click debug start, then one of the standalone apps will run the server.