How would you prefer to save progress?


skeezix

Internal Development
Joined
Mar 11, 2003
Messages
8,063
Website
www.codejedi.com
Thoughts from middle of the night while sleep deprived.. ;) tl;dr -- for a offlilne/online game, where do you keep the character?


I'm working on a persistant online game .. you join in, do your business, and come back another day; its not 'too persistant' (may last for a few hours, days or weeks, but depends on setup of the game.)


I'm thinking of avoiding 'create account' and all that business, especially if I ever get it working on tablets or phones .. you want a nice easy quick join, and some unique way to identify the device, but withotu sharing any private info. So one starting point is to (say) make a hash of the mac-id of the interface, and send that up to the server to say 'this is who I am'; it'd be unique, but meaningless. Or woudl that offend people as a form of 'tracking' (even though its only for one game.) The other option is letting folks create an account/password, but thats work for the user, and amounts to the same thing. (a hash can be used automatically on multiple servers, to save creating accounts on every server; think Quake, thats how it works.. no accont, jut a unique identifier.)


Anyway, so you can play the game as single player on your pandora, or join up to a server (which could be someone elses pandora, or some dedicated server.)


The real question is .. where does your 'character' live?


Could create the character locally (on the device), so that you can use it single player, and then also multiplayer.. sign into a server and it could send up your character (identified by the unique hash or login created above, internally); you could name your guy (since I imagine half pandoras have the username 'pandora' :) so that as you run around, your name could show up as needed. When you log out, your guy vanishes from the world, and yuo could level up locally on your own or whatever.


Another option is to create the character on the server .. your device joins the server of choice,a nd gets a list of your characters there (based on your login or unique hash as above .. ) and oyu go form there. Implications are .. harder to 'hack your character' for 'cheating', since its on the server; but also means you can't use one character across servers (since its on a given server), and can't use it for local play. Could perhaps download copies of the character for local play, but that wouldn't then sync back up to the server (violates trust, since woudl enable cheating.)


--


My thoguht (again, 3am :) was to just have the unique-hash and server-side character; so first game is .. fire up the game, start a local game,m start a server game on your unit, or join a list of already running games (think Quake lobby again.) If you hit 'join up online' (thats the main goal, or single player) it'd show yo a list of servers and population count, and you pick one and *poof* you're in, no muss, no fuss; pick your class and away you go, sort of thing.


Come back later, pick the same server and poof, theres your guy back where he was; pick anotehr server, a new guy. Maybe client woudl keep a list of recent servers so you know where your characters are lieing around.


--


But as I didn't sleep much, and these things are often personally feeling, I wanted to ask.


I doubt anyone really cares about the unique-hash and how its generated, but I do think people care about if the character is stored locally, or stored on a server.


(and yes you coudl still cheat.. if you start up a server on your pandora, and then join *it*, your character files coudl still be hacked there; or have a friend run a server and he coudl hack the files; but everyone knows the risk of joining Bobs server, that Bob could hack aroun the files :p Hence online trusted servers.)


(and likewise, hacked files are also otherwise known as mods, and thats a good thing so you don't want to block everything, nor do I have time to create super secure hardcore design here, just want folks to have fun :)


--


Your thoughts?


jeffsleepy


PS: How important is crafting and 'easy player modding'? Terraria and Minecraft and so forth really kicked it up a notch (ha, see what I did there?), but does every game need that? its not hard to add into this game, but its hard to design well to be fun and interesting .. if peopel really want it (withotu me spilling the game design at all), .. well, I'll just go get WizStan to help me with it :p But do you want to just jump intot he action and go nuts, or do you also want to be able to explore, craft, and chill out with less violence? (me, I don' bother crafting in games.. I want more violence!)
 
I'm not very into online games, but my thought is if you want it to be anonymous, keep an ID on the user's computer (randomly generated), and use that to find the character on the server.
 
Thats my thought as well; i suppose the whole post could be summarized:


Is a character shared from single player to many servers, or should single player and each server have a character?


Its an action game with perks and gear; in Terraria you had your local CHaracter and cOuld take him anywhere.. Or have it more like an MMO where char is saved to server?


Jeffphone .. It is amazingly difficul to type with two sleep babies on you :)
 
Last edited by a moderator:
So one starting point is to (say) make a hash of the mac-id of the interface, and send that up to the server to say 'this is who I am'; it'd be unique, but meaningless.
Maybe this is safe on the pandora, but on other platforms the mac id isn't always unique.


I've had several network cards that come with a program that lets you set the mac to anything you want.


Most devices these days probably use the universally administered address scheme, but locally administered addresses (set it to whatever you want) are still part of the spec.
 
Yep, I'm not worried or going to detail but my key would be like .... Login - mac - epoch time - random .... Then hashed :)
 
Just store the character locally. There is no real way of preventing client-side hacks to the character without completely hijacking the system using some horrible kind of DRM to prevent modification of the client.
 
Many Pandoras will probably be used on the road, with shitty network-connectivity at best. So, if the game has singleplayer, storing the savegame locally is pretty much a must.


You could let server-admins decide what other servers to trust, and what to do with local savegames, so that everyone can be catered to.


As for authentication, use (ssl)-certificates. Create one upon first play, and use that as the ID on servers, and to sign savegames.
 
As an overkill anti-cheating measure you could create a mathematical function like bitcoin does that can't really be modified without being noticed (At least that's how I understood it o_o") I don't know how much I'd try to stop cheating, I always thought the community took care of that by kicking/banning (obvious) cheaters.


Also you could sync the servers like DayZ does. You have one character across all the servers that are in "the Hive". Honestly, I don't even trust cable-bound internet connections, had too many bad experiences with unstable connections across all media, so I'd rather offline characters.
 
Naturalyl in single player, the server would be local to you, so your files would all be local (no networking going on outside your device.)


I'm rather thinking right now of keeping the characters locally on the device, and then when you connect to any server it just uploads the character and joins in; ie: so you could level up on one server, then find a friend on another server and go strut your stuff, no fuss.


My earlier stance is really.. keeping the chars on a server means you tend to have a home server, and you sign into it and theres your guys, and they belong 'there'; thats where they leveled up, and it 'makes sense'.. their gear/etc came from there, the maps you played them on are there.. that characters history is all there; go somewhere else, and you make a new guy there. Makes sense too.


So.. really, both approaches make sense, hence why I thoguht I'd post, see what people thought, or if they care at all (and probably do not.. most peope will just play however it is, if they like it at all :eek: )


But in the name of player flexibility and trusting the player, keeping it locally sounds 'better'? I'll have to have some signing function to sign the player files with, to help avoid tampering, so someone doesn't just level themselves up day with an editor (or at least, if they do, I'd know and could flag them as a cheat online and have all the monsters attack only them, say ;)
 
Hmm, a sort of DayZ system. Where servers report back to a central server about your stats, position and gear. With the possibility of running your own local server, which would pretty much be single-player, that would then sync up with the master server once you regain connection.


Or keep separate systems, servers that only keep server-side characters. While other servers allow for offline character export/import. Characters from server-side and from locally stored servers can't be mixtured.
 
Since trust doesn't seem to bother you too much, I'd go with something along the lines of keeping the savegames + character locally, when connecting to a server, the server asks you if you want to sync your character, create a new character or migrate a character from another server.


That way there only exists, at most, two versions of the same character in total, and just one character online, and you sort of get the feeling you are moving to a new "home" whenever you migrate.


I guess you could include some sort of guest/Friend invite thing as well, so you can join friends on different servers without the need to actually migrate your character.
 
Back
Top