AGS Games: Extra content

Started by RenatoDias, Wed 23/01/2013 03:45:46

Previous topic - Next topic

RenatoDias

Is it possible to make a game that has extra downloadable content in AGS?
Example: I make a game and release it, then, I want to do a character and room pack with, let's say, 5 characters and 5 rooms(modifying some rooms to add these new areas). How could I do to distribute only the modified files?
Which files do I need to use for each content?
Thanks.

Babar

As it is now (with the specific situation you described), it is not possible.
If you made your initial game with an intention towards modularisation...like creating a tile-engine in AGS and then having external map files, it might be possible.
The ultimate Professional Amateur

Now, with his very own game: Alien Time Zone

Crimson Wizard

#2
To elaborate a bit, if we speak about rooms, characters and other in-game objects supported by AGS, it is possible only to make a new extended version which will fully replace older one. In such case, all saved games will become incompatible. AGS cannot update saved games to match new game version. Also you'll have to distribute an extended version as a full game, not just an extended part. That's because at the moment AGS itself can't split the game data into modules, it requires a seamless compilation.

There's an exception, however: digital audio and voice pack can be distributed separately. A new, or updated digital audio package may be replaced freely in game folder (you may check how this works if you copy audio.vox or music.vox from one game to another). Voice package may be added as well, if you have provided placeholders for speech in your game's dialogs.

Now, there's a way to actually make unlockable content, that is a content which exists in game from the very beginning, but becomes unlocked after you place some file into game folder (or change existing file). For example, when game is started, you open and read some "game.dat" binary file. If some "magic" code found inside, you make changes to the game in script, like setting global variables, toggling object/character visibility, and so forth.

Finally, it is possible to construct a game in a modular way, in certain cases. Like Babar mentioned, if your game reads levels, or similar data, from files on disk, you may easily extend your game by adding more data files. But in such case you will need to do everything manually (read, parse data), and this way also requires manual handling of game object data (practically building an engine inside an engine).

cat

Isn't it also possible to start an AGS game from withing a running AGS game? This could be a way to add more stuff i.e. change the game that is started. You can also make a special save game that is not visible in save game list and when this save game exists you can unlock extra content.

RenatoDias

QuoteTo elaborate a bit, if we speak about rooms, characters and other in-game objects supported by AGS, it is possible only to make a new extended version which will fully replace older one. In such case, all saved games will become incompatible. AGS cannot update saved games to match new game version. Also you'll have to distribute an extended version as a full game, not just an extended part. That's because at the moment AGS itself can't split the game data into modules, it requires a seamless compilation.
As you're saying, save files become corrupt when the game is updated? That's would leave the players pissed off, lol.

QuoteThere's an exception, however: digital audio and voice pack can be distributed separately. A new, or updated digital audio package may be replaced freely in game folder (you may check how this works if you copy audio.vox or music.vox from one game to another). Voice package may be added as well, if you have provided placeholders for speech in your game's dialogs.
Well, I don't plan to make it have voices, but external audio resources would already be good, thanks.

QuoteNow, there's a way to actually make unlockable content, that is a content which exists in game from the very beginning, but becomes unlocked after you place some file into game folder (or change existing file). For example, when game is started, you open and read some "game.dat" binary file. If some "magic" code found inside, you make changes to the game in script, like setting global variables, toggling object/character visibility, and so forth.
Code inside a .dat file? Well, that would create a illusion that the game has downloadable content. Not quite what I really want.


QuoteFinally, it is possible to construct a game in a modular way, in certain cases. Like Babar mentioned, if your game reads levels, or similar data, from files on disk, you may easily extend your game by adding more data files. But in such case you will need to do everything manually (read, parse data), and this way also requires manual handling of game object data (practically building an engine inside an engine).
Modularisation? Any reading sources about that? Also, can't modularisation be done with characters, inventory items or rooms?

Well, I plan to make a open-ended game, one that follows a story, but when you get to the end of the story, there will be more to play(refer to RDR and GTA).

Anyway, thanks for replying to my question. I'm still in planning stage on my game, haven't started work on it yet.

Crimson Wizard

#5
Quote from: RenatoDias on Wed 23/01/2013 13:58:24
As you're saying, save files become corrupt when the game is updated? That's would leave the players pissed off, lol.
No, of course it does not corrupt the save files. They simply don't load in the updated version, showing some error message. They will be still usable in old version.

Quote from: RenatoDias on Wed 23/01/2013 13:58:24
Modularisation? Any reading sources about that? Also, can't modularisation be done with characters, inventory items or rooms?
I was not clear enough here. As I said earlier, AGS itself does not support such thing. But there's a way to script some kind of "sub-engine" in AGS game, that will read data from files on disk and construct parts of game.

Most obvious example is making arcade levels in AGS. Levels are stored in separate data files, you read them and draw level layout in rooms manually, depending on what you read. But this would require handling almost every aspect of such level, that is - script your own types of game objects, their interaction, etc.

I believe it is theoretically possible to parameterize extendable adventure game in similar way. But since AGS does not let you create new game content (rooms, characters, objects) at runtime, you'll have to "simulate" them by manually drawing and handling their co-interactions. Or re-using same content multiple times. Thus, a single AGS room may serve a placeholder for unlimited number of rooms, if you would redraw its background (e.g. copying graphic from files). Or number of "dummy" characters could be reused to "perform" number of roles.
That would be a fair amount of work though.

Quote from: RenatoDias on Wed 23/01/2013 13:58:24
Well, I plan to make a open-ended game, one that follows a story, but when you get to the end of the story, there will be more to play(refer to RDR and GTA).
I would suggest to make separate games instead. If your extension is supposed to rely on previous chapter outcome, you may save a special file on chapter 1 ending, and read it at chapter 2 beginning, thus translating some information (think about Quest for Glory series, or many RPGs that would allow party transition between games). Or use a story transition code, by typing which players will define their stats and story state (you could see one used in "Barn Runner" series).

RenatoDias

Better not mess with that yet then. Thanks.

Khris

Another option is creating your own save games.
Store every in-game achievement in an array of ints, and when it comes to saving, write them in a file, together with inventory and character stats.
Extensions would simply expand the list of ints, so save games can be read by the new game.

Depending on how complex and linear your game is or isn't, this can be pretty simple (or become a huge mess :))

The downside of this is that you have to tediously initialize each room upon entering, based on the values of multiple ints.

The cool thing though is that your character could visit lots of games independently, retaining his items / skills / whatever else.

Babar

Khris brings up an interesting idea. You could set up your game with a command to run an ags game from within the original game, and to get the name of the exe from a data file. When you want to give extra content, you'd have a modified data file with the name of the new exe you had made, as well as the exe itself. Just before running the new ags game, save whatever pertinent data from the old game to a file that can be read by the new game.

Your "extra content" would probably have to have all the old data from the old game as well, but from the player's perspective, it'll seem like an add-on.
The ultimate Professional Amateur

Now, with his very own game: Alien Time Zone

Crimson Wizard

Quote from: Babar on Wed 23/01/2013 20:14:07
Your "extra content" would probably have to have all the old data from the old game as well, but from the player's perspective, it'll seem like an add-on.
Not necessarily, it may need to duplicate resources only partially, depending on whether this extension makes use of original locations or not.

SMF spam blocked by CleanTalk