how does DLC work?

Started by
8 comments, last by j-locke 11 years, 4 months ago
I was wondering how is DLC created in XNA for a store like STEAM? Would I make a Windows game Library? Is there a Example online to see?
Advertisement
I never used XNA but the method is probably the same for everything of this sort. You will need a connection to the server holding DLC to download it to you client computer. You need to program your game to know where to look for DLC's - this is probably the same as mods folder in quake 3 arena and later games. There are some basic networking tutorials on the internet but i don't know is there some on how to download file from internet. Hope this helps.
If you're talking about an XNA publishing on Xbox Live Indie Games... then someone please correct me if I'm wrong, but I thought DLC was not allowed in XBLIG. I was under the impression that, to update your XNA game, you needed to resubmit it for evaluation. Things may have changed since I last checked, though.

http://xboxforums.cr...553.aspx#644553

http://xboxforums.cr...716/102917.aspx

http://xboxforums.cr...914.aspx#280914


EDIT: I misread your post originally, but the links might be useful for someone wanting to submit to XBLIG
As far as XBLIG goes yes you can't provide downloadable content, however if your game is targeted towards the PC then things are different as there is nothing stopping an XNA game reading more XNB content files than were originally provided by the official release. From experience when we released our recent game Genix there are a few things you have to take into account:

- 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

Aimee
Xpod Games

We are now on Tumblr, so please come and check out our site!

http://xpod-games.com

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?
DLC can be fairly tricky:

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.

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?

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.

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.

Hazard Pay :: FPS/RTS in SharpDX (gathering dust, retained for... historical purposes)
DeviantArt :: Because right-brain needs love too (also pretty neglected these days)

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?

so how can I just have the game read downloaded maps?
However you like, it;s your game. Organize it in a way that makes sense to you.

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.

This topic is closed to new replies.

Advertisement