🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

In-Memory Key-Value Databases (ncache/redis/homebrew)

Started by
23 comments, last by Septopus 5 years, 7 months ago
Quote

I'm not even sending time stamps with my data

My experience (and following other people on this board over time) suggests that you'd probably be better off if you did include simulation frame numbers with data, but you do what you do :-)

And, after all, Roblox defaults to client autoritative, because that's an easier model for developers to get started with, although it allows you to move authority to servers if you choose to. And Roblox is now a $2.5 billion company, so it's clear that there's room for all kinds in the world!

Also, Unreal Engine also allows you to be client authoritative if you want, and some games are. If those games get popular, they get hacked. Oh, well.

Btw, if all you want to do is make a multiplayer game, you could do worse than downloading Roblox Studio and try it out. They take care of all the physics/rendering/matchmaking/networking, and you write your game in Lua. It's not for everyone, but it's super simple to get something real written!

enum Bool { True, False, FileNotFound };
Advertisement
1 hour ago, hplus0603 said:

My experience (and following other people on this board over time) suggests that you'd probably be better off if you did include simulation frame numbers with data, but you do what you do ?

And, after all, Roblox defaults to client autoritative, because that's an easier model for developers to get started with, although it allows you to move authority to servers if you choose to. And Roblox is now a $2.5 billion company, so it's clear that there's room for all kinds in the world!

Also, Unreal Engine also allows you to be client authoritative if you want, and some games are. If those games get popular, they get hacked. Oh, well.

Btw, if all you want to do is make a multiplayer game, you could do worse than downloading Roblox Studio and try it out. They take care of all the physics/rendering/matchmaking/networking, and you write your game in Lua. It's not for everyone, but it's super simple to get something real written!

Yeah, I'm sure I'll need a time reference for some things, but not frame numbers.  There is no frame level synchronization, so frame numbers wouldn't be much help, they'll be different for every client.  I use a per client recycling packet sequence number to keep track of the relative order of events, mostly for throwing away out of sequence data.  As well, the clients synchronize to the server time so if/when I do need to relay time sensitive data, they can.  But that is all I'm using currently.  If the data being sent from the client doesn't vibe with a reasonably recent matching historical scenario, then the shot/kill/etc will not create a loot drop or cause the target to "die". ;)  They might see it go down at first, but then it'll just shake it off and run away/come back at em.

I've already built a whole world to serve out in Unity, and I'm good enough with C#.  I just ported the first of the 6 servers over to Linux today, it's already behaving better, so I think I've got the all the right tools in place to make my vision a reality. 

Honestly, when it comes to hackers, my game is going to be fairly adaptive and my hope is that I can generate the algorithms to detect in-game cheating and modify the game behavior to make it less effective.... And/Or convert it into a type of game-play.  As I said, I'm still building an authoritative server system, it's just not completely centralized...  The client is authoritative on the 3d simulation, it moves the characters around according to server dictated constraints.  As well as determining if a projectile hit another player/npc, the damage and/or the result of these actions will be finally determined by the closest authoritative node in the network, and then relayed back to the client.  As for physical network hackers, I've spent many days and nights in the trenches fighting that beast, I've some tricks up my sleeves here and there. ;)

Now, how many of my grand ideas make the final cut is a whole other story.. :D

 

Also, there are worse things than making a game that gets hacked.

Making a game that nobody cares about is worse. Or not finishing the game at all, which is the most common problem :-)

enum Bool { True, False, FileNotFound };

Indeed, let them hack!  lol :D

I took a look at Roblox just because I was curious.  Apparently I am building something of an analogue to how their system works.  Though I'm not entirely sure if I'll be handling simulation object ownership exactly like they do...  Who knows, I hadn't even though about approaching it like that.  They auto assign simulation "ownership" of gameable objects to the closest player character's simulation and if/when that simulation makes changes to the object it distributes those changes to the network.  Which is more or less creating the effect that I'm after.. haha.  But I would still rather develop my own system and have it  be re-useful for my own purposes.  I'm a glutton for punishment like that.

This topic is closed to new replies.

Advertisement