Voxel game project: Rituals of the old

Games like this (like WoW for example) that use TCP tend to be turn-based games masquerading as real-time games. Every now and then you will get this two second pause and then suddenly all of the action plays back very fast… but it didn’t really matter so much to the game because you didn’t attack in direction x,y,z from x,y,z at time t… you attacked object 123 a time t - your turn/round start time.

I mean, I can only guess. Often these games will open up three or four TCP connections at once, too. It’s not clear which traffic they are juggling to which pipe but if it were me, the back-control (“I attacked monster X at time t”) would be its own channel which somewhat mitigates TCP stall.

Edit: and note: doing this has nothing at all to do with network traffic, really. It often has to do with load balancing which I guess is easier with stateful TCP connections. (Though I’m not sure I buy that unless you are using off-the-shelf load balancing designed for web servers.)

Still seems a lot compared to 1500 bytes total 20x a second.

this game supports non-target system :wink: in many cases you attack from x,y,z to x,y,z :wink:

When I worked on my own implementation of free server of Tera-Online game(5-6 years ago), I had 500-1000 online players with high activity, TCP network worked without high loading on my server, because the server sent only visible events to clients, and the clients sent only change requests to the server. But this game required low latency because it was non-target MMO.

…at least it lets you think so. My guess is that the client decided and sent the data. The server merely confirms that it was possible.

Edit: I mean, I guess you’ve seen the code but it still seems like a bad way to me. I tried to sync cameras between 4 machines on the same gigabit network using TCP and it was completely unacceptable.

Yeah, that’s what SimEthereal does automatically. Zone-based updates. It’s why it can manage so manage objects at once.

Why the message size is small is because it’s sending only the changes since that last agreed-upon good frame. It’s quite complicated… but I already did it. :slight_smile:

1 Like

I worked on my own implementation of this game’s server, so I know how it works :wink:

let me provide another example… when your player is stopped, your client doesn’t send anything, if your player is walking without changes speed and direction, you send this event once, when you a little bit change direction or your speed, the client sends only this event per change.

SimEthereal doesn’t at all control or dictate how the client sends move events to the server.

It’s only job is to provide object sync updates to clients based on where they are on the server. This does involve sending ACK messages back from time to time.

Edit: but note, server-client TCP is already sending those same ACKs… it’s just also sending a bunch of possibly redundant data, too.

3 Likes

Yeah, seriously guys TCP is not good for anything except turn based games and such where reliability is more important than speed of delivery.

And you can add the reliability of delivery functionality to UDP like pspeed has done with SimEthereal so it’s really not a TCP-only thing. Essentially you can implement the whole TCP protocol on top of UDP if you really want to do it. But that would be kind of crazy.

But that is not to say that you can’t use TCP even for a quick paced shooter. You certainly can but it’s not the best choice. It’s just the easiest one. I wouldn’t recommend it though.

1 Like

About SimEthereal, as far as I see, it isn’t based on java.NIO, right?

I really like this article on TCP vs UDP in games, it’s a good introduction to some of the cons and pros:

1 Like

It defers to SpiderMonkey which uses java.nio when it wasn’t stupid to do so.

1 Like

6 Likes

This is the WEIRDEST version of “The Lusty Argonian Maid” books I’ve ever read. :wink:

Nicely done!

1 Like

Haha! Yes, I really love The Lusty Argonian Maid and generally the book models in Skyrim and Oblivion - and the HQ book cover mod for Skyrim and Oblivion! It’s pretty obvious when you look at the model where I’ve taken my influences. :slightly_smiling_face:

1 Like

Been working on an undercarriage of a wagon. The idea is that players can build their own horse drawn wagons and carriages block by block on top of undercarriage. The wagon can be made livable. It is designed so that it can hold bed, wood fired stove, etc.

Not sure how detailed I want to make the crafting of the undercarriage. A lot of study has gone into understanding how these things work and how they are constructed.

I think I’d like it personally if you had to make all the parts one by one and put it all together bolt by bolt, nail by nail - without any instructions or UI to guide you of course. But… I’m not sure. It might not appeal to the majority of players and it would be a lot of work to model, animate and code.

Perhaps some kind of compromise with some work phases skipped or combined. I have to think about it.

My Summer Car 2: The Middle Ages

3 Likes

I made this exact same joke yesterday :rofl:

But all jokes aside… that doesn’t sound half bad :grimacing:

I’ll post this here too in case some 3D modelers / multitalented people are lurking:

We are looking for a 3D modeler superhero! Read more below.

I feel you so much, Got the same problem… Not to bash on them but on 20 peoples, i couldn’t find 1 reliable person yet :confused:

Ended making a Geometry Procedural Generator to make Billion of different tree type and shape.
And my game is now working with a Building maker where you build structure by hand.