Home | Documentation | Atomic Chat | Github

Server sided simulation


#1

Hey community,

I am building a simulation/game. The simulation is server/client sided, because its a heavy data load. Can I use it on the server side (and client but I know that works)? I am unsure because there is no graphical output needed. Only the movement/collusion stuff is needed. At least on the server side. There are many entities to simulate. Its a very detailed traffic simulation. Also is it possible to run it in another process? The simulation logic, database connections, plugins, etc. would need low latency when accessing information about positions and other properties so it should be embedded within the same process.

Hope its clear what I mean. Don’t hesitate to ask. I am new to game/simulation development and therefore I am very unexperienced. However I know much about C# and Backend/GUI programming.

Also the world is dynamically generated and can not be premodeled (just as a note).

Greedings,
Julian


#2

Hi Julian,

First, a disclaimer: I haven’t dived into Atomic yet, so I can’t speak to specifics about the engine at this point. I’ve been using Godot for my previous game, but I’m looking for something possibly more robust for my next endeavor, and that’s why I’m here.
First off, it would be helpful to know a bit more about your proposed game/app infrastructure (as much as you care to share). Is it is going to be multi-player or standalone, does it have AI, is it fast action twitch or build and observe, etc.
I presume that by client/server, you mean over a network. I’m a bit old school and maybe the stigma of old slower networks unduly influence my thinking, but i’d only go with a distributed model if if it is multi-player or if it relies on a huge database.
Also, without knowing specifics, I would think that the “movement/collision stuff” would be done by the physics engine on the ‘client’ side. I’m sure that multi-threading would help if your simulation is too much for one CPU, but I have zero experience in that area at this point, so I’m no help there :slight_smile: .
As for running Atomic on the ‘server’, I don’t see any point. As you said, it won’t be handling any graphics, and that’s where the meat of any game engine lies. I think you would be better to write handlers, DB interfaces, AI, etc in C++ or even C# on the server side if you go that route.
It really comes down to the scale of your “game world” and your target hardware as to the performance you or player/users will get. Not sure if any of that helps, but maybe gives you food for thought.

Best of luck,
Michael


#3

Hi Michael,

the app is going to be open-source, so I can share my thoughts freely. The app should be a traffic simulation. The focus lies on public transport. This is a mixture of simulation and game. It is the users task to setup schedules, buy vehicles, organize everything, discuss with the government about building new roads, rail tracks and stuff. The new roads will be built as a progress and don’t appear like magic. Besides this it is also possible to roam the world freely by feet or vehicle. Also it should be possible to control the individual vehicles in public transport e.g. trains or just travel using them and enjoy the scenery.
As if this is not complicated enough the world can also be imported by merging multiple sources like OpenStreetMap, OpenDEM and others.
The mutliplayer is because mutliple players can organize a company or compete against others. And because of not every player can control a car an AI is needed of course. And fast action is only needed when in “roaming mode” otherwise build and observe.
This is a lot of data to store (thats on the server) and to handle during a simulation step. The physics don’t have to be that complicated only some accelarating/breaking and collision (for “accidents”, but its also possible to force some accidents). Specialised for the vehicles of course.
We thought about simulating the relevant stuff on the clients. But when two clients are in the same area they need to synchronize. I only need the physics component of Atomic and not any rendering. As the server needs the e.g. positions of busses to process statistics and other stuff the delay has to be the lowest possible. Also there is (as always) the synchronization problem. I am really not familiar with game development and therefore very unexperienced. So please forgive me for any wrong estimations/knowledge/assumptions.

It is not that easy to summarize all ideas for this biiig project into one answer so sorry for missing parts :wink:

Greedings,
Julian