So, i have a game that i’m hoping to make the equivalent of DLC packs. thing is, not downloaded, more like it’s “unlocked”
the mechanism is as such… three chapters, each has three characters to each one. it has multiplayer in it but also a single-player campaign.
I’m thinking that the single-player element will be downloadable (i imagine it’s only a matter of downloading the client itself and it’s got the information relevant to their choice) but for multiplayer, i want the player to be able to be fought by anyone, including players that have chapters they don’t have. I think with this i’ll have to add in all nine player classes to the root engine and “neuter” it from letting the player choose a character class they don’t have.
thing is, i’m trying to figure out how i can manage this… i had thought using player-prefs but that’d be hack-able (and probably pretty easily.) i toyed with the idea of a code they input but then that opens the door for people sharing the code. i’ll have to set some sort of system up with the distributor to handle the “codes” (or however they plan on doing that kinda thing… Steam is the distributor i’m aiming for) as to which chapters they have, but as for the “unlocking” bit, i’m wondering what sort of system would be ideal.
so, TL:smile:R= I want to have all nine character classes in the game so they can see them and go up against them in multiplayer but lock out some depending on which package they’ve purchased. where would i access this information that is not hack-able? how would you approach this kind of problem?
I guess a more appropriate way of putting it is like this.
let’s use World of Warcraft as an example. (this is not an MMO game though, it just has multiplayer stuff like deathmatches, capture the flag, etc)
so, you purchase the core game… this one has 3 core character classes and a self-contained storyline for the single-player campaign. you can play multiplayer against anyone with the core game of course…
now, say you purchase an expansion pack and this one adds 3 more character classes and a continuation of the single-player campaign with more levels. say you’re playing multiplayer against someone whom only has the core game, they can still see your character class’s mesh and it’s weapons behaviors but they (since they haven’t bought the expansion pack) can only select in multiplayer the core 3 classes which come with the core game… but, thing is, you (since you have purchased the expansion pack) CAN select from a wider group of character classes to play against anyone, whether they have the expansion or not.
see how this is going?
the aim for my game is to have a core install (like the main WoW client) but you can purchase additional expansions will will increase the number of character classes you can play as…
even further; if you have all the expansions, you can play the first campaign (the core campaign) as any of the classes available…
what i’m trying to figure out is how to “unlock” the additional character classes in such a way as it’s not possible to just hack them in or input a code which can be shared online but will not cause a problem for users that don’t have this expansion when it comes to the multiplayer aspects.
For multiplayer I imagine that running a verification of the player’s privileges on your data server when the player signs in or connects to a game would prevent the player from accessing paid content that they haven’t purchased. For single player this would work similarly if you require the player to have an internet connection and to sign in each time they run the game. This way you can distribute unique license keys as a form of DRM.
Yeah I think Steam’s API includes it’s own form of DRM as well as microtransactions and authentication. I don’t know the details of integrating Steam’s API with a Unity game, but I’m sure Steam will work with you to get it done; Unity games have been distributed on Steam.
cool, i’ll see if i can find a way to get in touch with the people over at Valve/Steam to see how they do things there… I just hope that they’re open to talking about it.