how does DLC work?
Members - Reputation: 392
Posted 01 December 2012 - 08:47 AM
Members - Reputation: 328
Posted 01 December 2012 - 12:57 PM
EDIT: I misread your post originally, but the links might be useful for someone wanting to submit to XBLIG
Edited by gfxgangsta, 01 December 2012 - 12:58 PM.
Members - Reputation: 414
Posted 04 December 2012 - 01:29 PM
- Each store tends to have it's own way of installing the game onto a gamers computer, some have a set process (Desura/Indie city), while others request you provide an installer (Indie Vania etc...). You may have to give instructions to gamers for each situation so they know how to install the DLC correctly.
- XNA has two hardware profiles HiDef and Reach. If you release your game targeting reach, then you need to make sure that the DLC you provide also corresponds with that profile.
Hope this helps
Edited by AmzBee, 04 December 2012 - 01:30 PM.
Members - Reputation: 1866
Posted 04 December 2012 - 08:37 PM
Each publisher (at least for consoles) has a fairly exhaustive checklist that you have to pass for DLC. Things like "Make sure the game still runs if you install and then uninstall the DLC".
If you have multiplayer, do you let people with DLC play with friends who don't have it? You have to test to make sure the person without the DLC doesn't crash due to a missing file.
There are a few different approaches for multiplayer. For example, in the Borderlands series:
- A player with the Mechromancer class DLC can play with anyone else, even if the other people don't own the Mechromancer DLC. This implies that the player model, sounds, etc are made available to everyone, but only people who bought the DLC can actually create that character.
- If a player tries to changes maps to an area only available in DLC, anyone without the DLC pack will get kicked from the server.
- Borderlands 2 still managed to miss one case: The Pirate DLC includes some player customization heads that you can use on your character. If you're using one of them, any player without that DLC will crash.
It's also possible that you just don't let people join the game at all if they don't own the DLC. It's kind of mean, but if your game wasn't designed with DLC in mind, you may have no choice.
If you patch the game (to support new level/item scripts or whatever) people who don't buy the DLC will still get the patch, so you need to make sure that the patch explicitly checks to see if they own each DLC pack.
Your savegame system needs to keep track of which DLC was in use when the save was made, since it's likely that the save cannot be loaded if the user uninstalls that DLC for some reason. This can also happen if a user shares his savegame files with a friend.
As far as actual implementation goes, patch the game for new code, have the code search for content, keep a separate list of whether someone has actually purchased the content or not (if you care, otherwise just base it off of whether the content is available). How you set up your XNA projects is up to you. You could easily just put all of the content in your main project and give each content file a special prefix which you use to split files into separate distributions.
Edited by Nypyren, 04 December 2012 - 08:56 PM.
Members - Reputation: 1670
Posted 05 December 2012 - 03:02 PM
Depending on how you design your code, and what you add with DLC, you might not even have to write a new class at all. If your software is designed around the kinds of data it reads in and creates with (like script files, meshes, textures, property files/materials, etc) then you could create entire additional levels, maps, storylines, and so on without having to touch the code. If your game just reads in an arbitrary "map" file, as an example, then nothing stops you from making as many individual maps as you want, and selling them in batches of add-on content.
okay so do I just make more class files for the DLC Levels instead of making a Windows Library? and we are trying to target STEAM so would we only have to make a separate XNA project for DLC Packs?
Now, if you're adding new functionality, your game will need to be patched with the modified compiled source, and that's where you get into the "write new class files" territory.
Members - Reputation: 507
Posted 05 December 2012 - 10:10 PM
okay thats useful we're actually trying to make extra levels built with Tiled. so how can I just have the game read downloaded maps?
As a simplistic example....
Your game could be written to pull in the file name of maps that are stored in the 'resources/map/' folder with .ringo extension. Then after pulling in the file names from the folder, it could have the user choose which one of those files he wants to play.
Once the user selects one, the game could load the map in, validate that is in the format that you expect (after all, anyone could make a .ringo file and put it in that folder), and then have your game load and use the map.
Adding maps could be as simple as adding a new map to that folder. As long as it has the same .ringo extension that your program expects, is in the expected location of 'resources/map/' and is in the same format that can be read by your game, the new map could be playable without you having to change the game program itself.