A (claimed) General Solution to Multiplayer Online Non-streaming Games 0 - Raodmap

Started by
3 comments, last by DinS 2 years, 8 months ago

I have spent three years working on a project called World_Gate (project available on gamedev). It is a platform where you can build, run and share a multi-agent strategic environment, i.e., a world.

And along the way I think I got a general solution to multiplayer online non-streaming games. So I'd like to share what I've got so far.

If you find it helpful, that's great. If you think the solution fails in some cases, feel free to point out. That's a good reason for me to improve the design.

Due to the bulk of the contents, I'll discuss it in several articles. The index will be:

  1. System & Session
  2. Synchronization
  3. Field of View
  4. Realtime Strategy
  5. Network exception
  6. Security
  7. Scale Out

The first one deals with the architecture about this solution. 2-4 are about game logic. 5-7 are about network.

Although I designed it with strategy game in mind, it can be applied to other types such as RPG or puzzle, as long as it is not of streaming nature.

What do I mean by "streaming" and "non-streaming"? It may be hard to explain unless you understand the architecture of the solution. But I can give a few examples here for the time being.

Board games, turn-based strategy/rgp (e.g. Hearthstone), puzzle games (all match-3), RTS (e.g. Age of Empire), MOBA (League of Legends) are generally non-streaming games.

ACT (e.g. King of Fighters), FPS (e.g. Counter Strike) are generally streaming games.

In fact the commonly used game type doesn't matter in this solution, since I defined strategy in a very broad sense. Strategy is making decisions to reach certain goals under restricted conditions.

In this sense, RPG is also strategy games. You click somewhere(making decision) to move your character(goal) inside the map(condition).

We'll talk about it more in the "Realtime Strategy" article.

In these articles I will refer to World_Gate from time to time. This shouldn't be surprising since World_Gate is an implementation of this solution. By showing something working, I can demonstrate my point better.

However, I will not go into details on how to use World_Gate to make games. The focus is architecture and design choice. For the same reason there's no coding in these articles.

As long as the things, games or academic research, you want to make falls into my definition of strategy, you can use World_Gate to achieve that with minimum cost. But that's out of the scope of these articles.

I claim this solution can:

  • Solve any multiplayer online non-streaming games
  • Work properly even under poor network conditions
  • Handle millions of users at the same time(TBD)

The first point is just restating it is a general solution to multiplayer online non-streaming games.

The second point is important for programs of online nature. I personally verified that users can still play games normally when the network speed is 10-20 kbps with occasionally packet loss.

The third point holds in theory but not yet examined by practice. Up to the time this article is written, World_Gate only has very few users. So that is to be determined.

I will gradually fill up the contents. It won't be too long but don't expect quick updates. Got other stuffs to do.

None

Advertisement

DinS said:
I'll discuss it in several articles.

Moving thread to Your Announcements.

-- Tom Sloper -- sloperama.com

There are MOBAs that need just as much twitch networking as FPS-es do.

You're making up a brand new term: “Streaming Games.” (This term is previously used by systems like OnLive or Stadia to mean something different.)

You're claiming that, as long as games are “Streaming,” then your suggested approach will work wonders.

It would be a lot easier to understand what you're talking about if you could be specific about the characteristics that make a game “streaming” versus not, and what the general idea behind the savings in networking would be. E g, is this input-synchronous, deterministic, predicted, partitioned, and so on? How is it different from the alread-described models of Age of Empires (1500 archers,) Counter-Strike ("source networking,") Unreal Engine, Second Life, Street Fighter (ggpo,) and so on? A few sentences for the specifics would be a lot more helpful than a full page that tells me exactly nothing of actual facts.

enum Bool { True, False, FileNotFound };

@hplus0603

Thanks for your detailed reply, and for pointing out the existing models.

I admit this article is a bit length. I'll start talking about the real contents in the following articles, and keep them concise and to the point.

None

This topic is closed to new replies.

Advertisement