Interactive 3D-field server/client simulation with UE4 client?


Which approaches are could be used to make an interactive 3D “density” field simulation for a multiplayer game?

  • Definitely, it should be calculated on server side, to be the same for all players.
  • Players could change the field density in any field point
  • The field should tend to keep density on the same level (so, it should “flows” from high-density points to low-density, similar to a water)
  • Should be calculated in real-time
  • About client side – it should be possible to visualize the field density in a 3D game in real time.

I’m not sure if there is effective math models for such thing? Or it’s better to implement it through some particle-based methods? Or, probably, there are other ways to do this?

Worry much less about the visuals, and much more about how it’s actually going to work.

Networking such a thing would be no small feat of engineering.

Well, I’ve made a prototype for similar basic mechanics, but for 2d discrete field. And it’s pretty simple in terms of networking. But for me the most complex part is exactly field behavior itself – flows between high/low regions and so on. Didn’t succeed yet, but I’ve not searched for any specific algorithms, doing all by myself.

Since this physics are very similar to graphical particles systems, and, especially, Nvidia’s PhysX Flex particles system, I’m assuming that there should be some algorithms for such systems.

About networking itself - it could be simplified to discrete regions (single region size should be small enough to keep general field logic, but large enough to decrease regions amount for efficient networking) and then just send an 2d/3d array to client. Again, I’ve made similar thing in javascript, but it’s not really efficient in terms of computing the field on the server and also has bugs in flows mechanic…

Huh, I can see lot of possible networking solutions, but still can’t find anything how to make visuals… And no one can answer here or in AnswersHub :frowning:

Is it viable to use particles for such thing? Or it will be too expensive?
Which other ways are exists?