Decentralised MMORPG on the SAFE network

Heh, this made me think about that discussion concerning SAFE citizenship and all that… You’d be able to truly live on the SAFE network as well! :smile: Well, your character at least. :stuck_out_tongue:

5 Likes

Could the latency issue be resolved by have a single node set a time zero for every other node in a game. A kind of global system clock for the game. If this where used the game would have a kind of clock cycle and shots at different times could be analyses into proper sequence every cycle for proper scoring. I still want quantum communication even if it leads to time machines so we can play with the fabled “computronium”- wouldn’t matter where the atoms in the universe used to compute with are located they would act like one superposed entity.

This seems to speak to another potentially much more important problem. I think Artemis uses a couple Mac Servers each with a couple high end Intel CPUs to get its super low latency (sub ms) super low power, precise positioning, high bandwidth, linear scaling SDR system to work for a mass of download bandwidth in a carrier friendly way for a wide local area. There may also be custom asics in those Macs. So for symmetric upload and download with similar stats on mesh without the toll road back channel would we need phones approaching the power of those Macs? Even a phone with a K1 in it would be a long way from that- symmetric may imply double that power power to begin with. Or given a minimum number of current phone nodes with SDR chips and SDR antennas could the load be spread across a group of phones to achieve the effect for a wide area. Its interesting because prior the grouping those cells would presumably have higher latency and even when they achieve sub ms latency that is still glacial for the compute purpose of sustaining the effect compared to what is going on inside those Mac servers.

1 Like

I’m a realist when it comes to what works. And “turn-based” games seem doable down the road. I see it as baby steps towards real-time games. There’s so much we don’t know about SAFE network performance.

At the very least, single-player social games is a good starting point.

1 Like

@dirvine There’s an exchange algorithm that could use some network capabilities :wink:

Those are perfect for MMORPGs in fact it is modelled after 15 years experience using digital exchange and gaming item and value transfer systems :stuck_out_tongue:

Even exploring the VIrtual Reality scene and expanding experience and a team with Unity in order to render avatars and NPCs running autonimity algorithms.

4 Likes

Another model would be simulation games like the Sims or Spore that technically you play single player but rely on huge libraries of user created content. And if those libraries could be quickly and easily accesses and produced via safe then the game would run all that more smoothly. Also consider that one could get paid via safecoin for one’s creations.

2 Likes

Communicating the global time itself to other systems also suffers under the latency, so this is problematic. There is for example the Network Time Protocol, but it’s accuracy is usually within tens of milliseconds. But even if you do manage to implement time synchronisation, a high latency (because of more than one hop) will still cause a very noticable delay between cause and effect in a real-time game, which makes it practically unplayable.

Sharing of static data is what SAFE excels at, so these are valid use cases. Games like Minecraft or Life is Feudal where players shape the world itself through terraforming could also greatly benefit from using SAFE
for world data. SAFE could really solve some scalability issues in that area.

3 Likes

Have you considered it might be possible to formulate temporary spontaneous servers as they are needed the same way we generate network churn? Doesn’t anyone remember the days we played over LAN connections or simply hosted a game and waited for others to join it? Say you want to create a temporary decentralized game server. Let’s assume there are 4 players. Let’s also assume they know the game is about to commence, so they’re sitting in a lobby somewhere. Each of them would commit a portion of processor power and space so 4 players = 1/4 resources required for the session to run per player. Whatever resources that the game required would be distributed among the entire group. Now obviously different people would have different capabilities to contribute. Some people have more or less processor power, bandwidth, or space, but in any case we could write a little method that averaged it all out. However even doing that this would still select against those that couldn’t contribute their portion. Say in our scenario above one of our players didn’t have the resources to contribute the 1/4 resources needed. Then in that case he couldn’t play and the server couldn’t be formed. No more arguements about lag. He’d have to go to a different game with more players where he’d be contributing a smaller percentage or less players with less demand for resources. By doing this the problem with hops could be solved because as I understand it if you load a file the nodes close to you get a copy of it. So if you preload it then you’d be drawing from close nodes and the only data you’d be exchanging on the fly is playing and communications data.

1 Like

It was already about that, the static data is not the problem with a MMO a la World of Wacraft. I think the point you are missing is that there are multiple types of “lag” in games. There is lag due to a client-side system resource shortage, which causes too low FPS and causes a game to “stutter”, and there is lag to due to communication delays, which I much rather call latency. The former type of lag is not the problem, in MMO’s the big-battle lag that you get is a communication problem.

Seneca, why not allow both shots to go through? One of the things that makes Mexican standoffs so dangerous is that the second mover can oftentimes get a lethal shot off, even though the first mover has already set in motion a chain of events that will kill the second mover. Having both parties die, and thus no clear winner, may be different from the structure of conventional MMORPGs but is there any reason why that sort of outcome couldn’t be coded?

Or alternatively have a defensive bullets function, that says that if the local nodes of both player think that “their” player fired first then the bullets (or spells) collide and (allowing for differing power levels of spells) cancel each other out.

4 Likes

If this can be solved for instant messaging why can’t it be solved for game communication? It’s the same problem isn’t it, exchanging information between parties in real time? And given that in safe all one is exchanging is the location of data maps I don’t see why it should matter greatly if one was exchanging text or graphics data as it’s all just datamaps or a small bit of text anyway and should be instantaneous to transmit. I really don’t see how you can be complaining and worried about gaming and not worried that the whole system is going to break.

1 Like

The essence of the problem here is causality, the shooting was just an example. In this example it’s acceptable to not cause instant death when hit, which would allow for a short while to fire off a shot. But then you remove the requirement that a player should not be hit to be allowed to take a shot rather than solving the essence of the problem.

Reimagine it as two spaceships shooting at each other with lasers (light speed, so instant delivery) that instantly explode when hit. Causality demands that the spaceship that is hit first cannot shoot anymore. If there’s no arbitrator that gets the final say on which ship shot first, you get the effect on both player’s sides that they shoot, it appears they shot first, the enemy explodes, and half a second later there suddenly comes a laser shot from the location where the enemy’s ship was located, destroying you as well.

No it’s a different problem, as I just explained above. Actions of players in games change the states of other players, and those states determine what kind of actions are allowed for each player. To have a working game there needs to be a clear order of events to have a correct chain of cause and effect.

When instant messaging, the messages that you receive have absolutely no impact on what you can send. On a technical level, there is no causality in instant messaging.

2 Likes

Actually, this problem is very similar to the double spending problem in cryptocurrencies that the blockchain solved and MaidSafe is now solving in a new way. Perhaps that makes it more clear to you guys. The difference is that low latency (100 ms at most, preferably lower than 50) is now essential, at least for a real-time game. You can’t really afford to wait for a consensus group to validate and register your actions, it simply takes too long.

2 Likes

Yes, I understood that I was proposing a gameplay solution rather than a technical solution. That was sort of the point that I was making. I know that the Safe Network creates solutions in a different fashion than traditional client-server architecture, and so I would assume that there would be certain disadvantages to go with the advantages. My question was, assuming the technical difficulties that you are discussing have no solutions, if those differences necessarily prevented the development of enjoyable MMORPG gameplay?

Could you give me another example where precise causality is critical to gameplay? Maybe I’m missing something thats obvious to you because you are so familiar with the issues.

Hey @dirvine, when you said churn events took milliseconds, like how many milliseconds were we talking about?

1 Like

[quote=“kirkion, post:34, topic:1369”]
My question was, assuming the technical difficulties that you are discussing have no solutions, if those differences necessarily prevented the development of enjoyable MMORPG gameplay?[/quote]

For competitive reflex-based (real-time) games, yes.

[quote=“kirkion, post:34, topic:1369”]
Could you give me another example where precise causality is critical to gameplay?[/quote]

Anytime there is a “race” to do something before someone else. Whether it is activating an object before the other player, blocking or evading an attack, shooting first, crossing the finish line in a car race before the other racer, etc. It determines who wins and who loses.

Edit: The car race example is not very good, because if the race is over after crossing the finish the network can take a few seconds to compare timestamps or something like that to declare a winner. However, if the game continues and the outcome of crossing that finish line first is a condition for what happens next in the game, low latency is again required.

2 Likes

Notice of a vault going off is likely network speed so perhaps 30ms, account xfer etc. is something we are continually working on, in fact we just completed a pretty huge sprint on that. If a node goes dead or ungracefully exists the time to notice that can be 10 secs, but that is a single node and not a group quorum, so would not affect anything and should not be noticed.

4 Likes

So if the system could notice a vault going offline why couldn’t it relay information and events in a game at those speeds as well?

1 Like

Becausing relaying information and events isn’t done directly, but indirectly through a consensus group that manages your request. That consensus group needs to decide what to do with your request so it’s members need to communicate amongst themselves, which is also subjected to latency.

Why? You send an instruction from point A, a package. It get’s shipped by mail to point B. The mailman doesn’t need to look at what’s in the package or decide what to do with it, he just needs to get it from point A to B. The processing would be done at either end wouldn’t it? If player A shoots player B and either event results in a series of game actions that’s irrelivent to network processing time because all the network has to worry about is communicating the event from player A to player B that player A has shot player B. The network doesn’t decide what to do with that information, it just delivers the message. It’s the game that decides.

Just because our mail is encrypted (the mailman doesn’t look at it) doesn’t mean the mailman has to decide anything. Basically what you’re saying is the chunking and unchunking process required to encrypt and decrypt information would cause additional lag. But as I understand it this process runs in parallel and actually speeds up perfmorance not slows it down.

To prevent cheating. Player’s systems should be treated as untrusted clients and shouldn’t get to make decisions on their own state or states of other players. Cheating in a game is in essence the same as cheating in a decentralized payment system like Bitcoin or SAFE. In a game “state” is about your character’s health/items/ammo/position etc, in a payment system “state” is the amount of currency on your account/address.

In both cases a third trusted and objective party needs to be the authority on changing state. In a classic centralized game architecture that party is the official game server owned by the game company. In Bitcoin it’s the collective of miners. In SAFE it’s a consensus group formed based on XOR distance of network ID’s.