Commercial AGS Boot Camp - 5 common issues

Started by Dave Gilbert, Thu 08/08/2013 23:13:05

Previous topic - Next topic

Monsieur OUXX

#60
On Indiana Jones and the Seven Cities of Gold, we implemented an implicit fix to the "patching breaks saved games" thing.
We have a system of automated teleportation (for debug purposes), that brings the player to key places of the game, with all the needed inventory items. I suppose everyone does that, but we really made it natural (there's a gui as soon as you start the game, asking you where you want to start it -- also we have A LOT of those checkpoints).

It would be extremely easy to hide that gui somewhere in the final release (like "press Ctrl+D to make it appear") that would display a text box where the player has to enter a code to access the corresponding checkpoint. The codes would be known only to us.
It's pretty much what old consoles did, when you had to enter a secret code to access a level.

Therefore, when Dave wrote "it's a pain to release saved games to rescue players who got their saved games broken by patches", we wouldn't be impacted by that issue: what we would do, is publish this on the game's forum: "the patch broke your saved game? Well, press Ctrl+D and enter the following code in the textbox to access that part of the game". Needless to say, we wouldn't reveal the existence of that Gui nor the exact code to enter unless the need for it arose.


 

qptain Nemo

I would call that a hack rather than a fix... :)

Calin Leafshade

In my latest AGS game I am experimenting with not using the AGS save system at all.

Using Lua (i know, lol) one can serialized data *in lua* so you can save a file that looks like this:

Code: lua

return {
 characters =
 {
    { -- Character 0
      Room = 3,
      x = 5,
      y = 6
    },
    { -- Character 1
      Room = 1,
      x = 180,
      y = 25
    }
  },
  rooms = 
  {
    -- now save the room states 
    -- In our new lua based system rooms are global and so they can be changed and accessed at any time
    {  -- Room 1
      objects = {
        { -- object 0
          x = 60,
          y = 85,
          visible = false
        }
        -- and so on
      } 
    }
  }
}


Then you just load that file as a lua file and it returns an object already formatted for you which you can distribute to the various objects automatically.

This is quite simple to set up and guaranteed to be future proof since you can assume default values for new variables not contained in the save file. You can even save a game version number to the save so you can handle the logic manually.

I find this approach to be better simply because adventure game states are actually very simple. Usually its just a couple of object/character positions, the inventory and a handful of state variables. Also, the whole process can be automated fairly easily by having a "game state" object where you put game state variables:

Code: lua

 gameState = {}
 gameState.hasSeenEventOne = true

 --then we can just serialise this object as well.
 --This approach also makes it easy to track the game state.

Dave Gilbert

#63
Agreed. It's a hack, and not the best solution either. When you take achievements, multiple paths, and various states of the game, it becomes a massive muddle. Not only that, but you will have to test each save point (from the point it starts till the end of the game) to make sure it works properly.  It's much more preferable to play through the game once and make savefiles as you go - that way you know for sure that they all work.  There's also the logistics of telling everyone about the hack. Answering emails and telling them about the hack, or answering emails to give them a link to new save files - same thing. :)

Neither of these methods solve the core problem, though. Short of re-writing how saves work, it's difficult to get around.

KodiakBehr

Thanks Dave, solid guidance here.

Had this particular post been around last year, I probably could have avoided a lot of headaches.

Radiant

Quote from: Monsieur OUXX on Tue 03/09/2013 12:26:20
We have a system of automated teleportation (for debug purposes), that brings the player to key places of the game, with all the needed inventory items. I suppose everyone does that, but we really made it natural (there's a gui as soon as you start the game, asking you where you want to start it -- also we have A LOT of those checkpoints).
That only works if your game is fairly linear, though. If you have five or six puzzles that can be solved in any order, I don't think a menu like that would help.

Crimson Wizard

I was thinking there could be a "states list" with checkboxes (to mark which checkpoints were passed/puzzles solved).
Too bad AGS does not have built-in "checkbox" control :-\.

Monsieur OUXX

#67
Yes, I didn't think of such modern wizardry like achievements. (even though we're very close to addressing branched puzzles with a finite state machines system).
I only mentionned that minimalist, obvious option because I think that, despite what Dave says, it could help avoiding a short period of panic for both players and developers after all the saved games get broken.


Quote from: Crimson Wizard on Tue 03/09/2013 13:39:21
Too bad AGS does not have built-in "checkbox" control :-\.
We wrote a module for that! Dod you want it? ;) (just kidding -- it does exist, but it's so ugly we'd never share it with anyone!)
 

donkeymilk

#68
I totally agree with the points you made Dave.
I'm a game player(as opposed to game maker!)and while as you say the old style methods of playing the game by having to click on a talk icon first or the hand icon and then move that click over to whatever you are doing ingame is really frustrating and puts me off playing some games.
I think peoples brains have become rewired to expect a more fluid way of progressing in the game.
It's like Sam and Max(Telltale),where you hold the click and Sam starts running along,clever.
The 320x200? what is that?It's never worked on any ags game i've played and i don't understand why it's there (prob.just my computer eh?).I always have to fiddle with the options or usually use the next available working option which is 640x400
Anyway, these are just some things I've noticed, as a bog standard game player.
Keep making great games ,thanks

P.S.. When are we getting a new follow up,i miss joey and the gang!(primordia was great too!)

Radiant

Related to these issues, I'm curious what people's experiences are with distributing as an installer EXE vs distributing as a ZIP?

Calin Leafshade

I generally wont bother with an AGS game thats distributed as an EXE. That might seem petty but it just annoys me and most AGS games are on a knifes edge anyway with regards to whether or not i'll give them a shot.

Dave Gilbert

As a whole, most prefer EXEs to ZIPS. You'd be surprised how many people don't know what ZIPS even are!

Radiant

Interesting, thank you. Do you have recommendations for a (preferably freeware) tool that makes EXE installers?

Crimson Wizard

#73
Quote from: Radiant on Mon 28/10/2013 12:40:26
Do you have recommendations for a (preferably freeware) tool that makes EXE installers?
For AGS betas I use InnoSetup :)

Also, regarding EXE vs ZIP: I have nothing against EXE if the game is full-length, because it usually automatically creates icons for easy launching. I prefer to have zips for shorter games, that may be passed in couple of hours to couple of days period. Simply a matter of convenience.

Snarky

Quote from: Dave Gilbert on Mon 28/10/2013 12:12:27
As a whole, most prefer EXEs to ZIPS. You'd be surprised how many people don't know what ZIPS even are!

I think this is another of those things that separates Wadjet Eye's "casual" general audience from more computer-savvy (or just AGS-savvy) players. Zips are easier and less hassle if you're familiar with them, you get to control where the files end up, and they're not going to clutter up your menus or registry. And it can be reassuring just to see the usual AGS files, as opposed to an installer EXE that's going to do god knows what.

But if you don't have a clue about any of this stuff, obviously an EXE is better. And since this is a thread about going commercial, you have to assume most of the audience is going to be clueless. (It might still be worth providing ZIPs as an option, though.)

qptain Nemo

Quite a dilemma. I suppose some kind of ideal solution would be an installer that is also recognized by archivers as a self-extracting archive so you can just open it with them and extract stuff wherever you want. Then you can just add a note that points that fact out so experienced users can take advantage of that fact if they wish.
Or am I just being a perfectionist and overcomplicating everything again?

Crimson Wizard

Why not allow users to select which file format to download? E.g. download as installer, download as archive.

Snarky

Yeah, but the archive version should be a tarball distributed inside an ace file, to ensure that only qualified users go down that path. (When I worked as a set-top box developer, that â€" or something much like it â€" was how we put the software package onto the boxes, for some bizarre reason.)

Monsieur OUXX

Quote from: qptain Nemo on Mon 28/10/2013 14:23:42
Quite a dilemma. I suppose some kind of ideal solution would be an installer that is also recognized by archivers as a self-extracting archive.

Yes. There is nothing that annoys me more than an installer that gives me a CRC error when, instead of double-clicking it, I right-click on it and select my beloved "extract here".
 

qptain Nemo

Quote from: Crimson Wizard on Mon 28/10/2013 14:42:45
Why not allow users to select which file format to download? E.g. download as installer, download as archive.
No big reasons but: it requires you to provide two links (per platform?) all the time and doubles the storage space. Still, it's probably the optimal solution in most cases. Though...

What about big games? Let's say the game is 1 Gb or more. Would any experienced usersâ,,¢ still want a separate archive version?

SMF spam blocked by CleanTalk