issues with a thousand room game

Started by EnterTheStory (aka tolworthy), Thu 03/06/2004 22:55:07

Previous topic - Next topic

EnterTheStory (aka tolworthy)

I am one year into creating a very large game in Sludge. (Three years if you include preparation) For several reasons I am now tempted to move over to the Dark Side (that is, AGS). I was told to ask my questions here. Are you sitting comfortably? Here goes:

1. I gather that the editor can list only 300 rooms, but AGS can use more than that. Is this true? My game currently has about 300 rooms, and will have about 1500 when complete. Would this be a problem?

2. I am told that there is effectively no limit to the number of strings. In one room I have the philosopher Plato, and the user can interact with his famous Dialogues. This might end up with a tree of more than a hundred choices and perhaps a thousand strings, just for that one character. Would this be a problem?

3. It appears that AVG is limited to 50 characters. Is there any way around this? My game will include 60-100 sub-games, each with at least five new characters, probably more. Is it possible to have a thousand characters, perhaps by reusing old characters with new costumes and new names?

4. I believe that there is a limit to hotspots on each room, but there are workarounds. Is this true?

5. How flexible is the scripting? Be honest. Can a determined scripter do just about anything? 

6. Is the speed of an AVG game affected by the size of the game? That is, does a thousand room game run slower than a ten room game? 

7. Is transparency processor intensive? Can I use full screen (640x480) transparency in an animation without seeing a performance hit?

8. I have heard that some things cannot be deleted completely (as a way to protect newbies from common errors). Would this be a problem in a large game where, by the end, there might be thousands of routine deletions while coding?

9. I understand that AGS compresses images. What is a typical file size? How does it compare to 16 bit compressed TGAs? (My game averages 50K per 16 bit 640x480 image, or half that when using lots of plain color.)

10. May game should be 600 meg when finished (i.e. it comfortably fits onto a CD). Would this cause any speed or memory problems?

11. Finally, one of the biggest attractions of AVG for me is the royalty free OGG sound for commercial use. This sounds too good to be true (the Sludge sound code has a ten thousand dollar charge for full scale commercial games). Are there any catches? If in ten years I make a ton of money (I can dream can't I) will I find someone saying "I own some of that code, pay me"?

Thanks for your patience.  :)

Pumaman

Greetings!  :)

Quote from: tolworthy on Thu 03/06/2004 22:55:07
1. I gather that the editor can list only 300 rooms, but AGS can use more than that. Is this true? My game currently has about 300 rooms, and will have about 1500 when complete. Would this be a problem?

AGS currently supports up to 1000 rooms, 300 of which can be state-saving (ie. the other ones don't remember the location of objects, etc when the user leaves the room).

Increasing these limits would not pose a problem should you get close to breaching them - the only difference having more rooms would make is increasing the save game size.

Quote
2. I am told that there is effectively no limit to the number of strings. In one room I have the philosopher Plato, and the user can interact with his famous Dialogues. This might end up with a tree of more than a hundred choices and perhaps a thousand strings, just for that one character. Would this be a problem?

It depends what you mean by strings. If you use the built-in dialog tree system, it does have some limits on the total number of strings you can have, but these can be increased fairly easily (currently it's 2000 IIRC).

If you're just coding directly with the script, there's no limit on how many strings you can use.

Quote
3. It appears that AVG is limited to 50 characters. Is there any way around this? My game will include 60-100 sub-games, each with at least five new characters, probably more. Is it possible to have a thousand characters, perhaps by reusing old characters with new costumes and new names?

AGS currently supports 150 characters. You could re-use characters for multiple purposes, or it may be possible to increase the limit if it posed a real problem - it's not something I've had to do in ages so I can't tell you offhand how much effort it would be.

Quote
4. I believe that there is a limit to hotspots on each room, but there are workarounds. Is this true?

Yes, there is currently a limit of 19 hotspots per room. Workarounds include using an object instead of a hotspot, and dividing a hotspot into two manually by checking the mouse X/Y co-ordinates.
There is currently an outstanding feature request to increase the hotspots per room to 30 or more, which is something I'm planning to do soon anyway.

Quote
5. How flexible is the scripting? Be honest. Can a determined scripter do just about anything?

I can't really answer this one honestly -- I'm sure someone else will reply and let you know if there's something they haven't been able to achieve with the script.

Quote
6. Is the speed of an AVG game affected by the size of the game? That is, does a thousand room game run slower than a ten room game?Ã, 

The number of rooms makes no difference to speed - after all, only one is loaded into memory at any one time. There are other things that can impact the game speed - such as the total number of characters you have, but I'm not aware of any significant problems.

Take KQ2VGA, which is probably the largest AGS game to be made so far - it has over 150 rooms, 5000 sprites and 10000 lines of global script. I haven't found it to be noticably slower than any single-room test games.

Quote
7. Is transparency processor intensive? Can I use full screen (640x480) transparency in an animation without seeing a performance hit?

Yes, transparency is CPU intensive. Using a 640x480 transparent object is likely to incur a performance hit.

Quote
8. I have heard that some things cannot be deleted completely (as a way to protect newbies from common errors). Would this be a problem in a large game where, by the end, there might be thousands of routine deletions while coding?

All scripts can be deleted. The things that can't be deleted are things like views and characters - but if you don't need one any more, then simply wipe its contents and re-use it next time you want a new view.

Quote
9. I understand that AGS compresses images. What is a typical file size? How does it compare to 16 bit compressed TGAs? (My game averages 50K per 16 bit 640x480 image, or half that when using lots of plain color.)

AGS uses a compression algorithm similar to GIF files for backgrounds. I don't have any stats offhand, but try it out and see. Sprites are not compressed for performance reasons -- but when distributing your game, the sprite file compresses well in WinZip.

Quote
10. May game should be 600 meg when finished (i.e. it comfortably fits onto a CD). Would this cause any speed or memory problems?

That would depend on what sort of things were causing the large size. For example, if you had a 400 MB speech file then that won't cause any problems - on the other hand, a 400 MB sprite file is likely to cause slow loading times (although it shouldn't impact run-time performance).

Quote
11. Finally, one of the biggest attractions of AVG for me is the royalty free OGG sound for commercial use. This sounds too good to be true (the Sludge sound code has a ten thousand dollar charge for full scale commercial games). Are there any catches? If in ten years I make a ton of money (I can dream can't I) will I find someone saying "I own some of that code, pay me"?

I'm sure you can find the OGG license online -- I believe its only requirement is that you include its copyright message in your game (see the license_alogg.txt file in the AGS Docs folder for the full license).

EnterTheStory (aka tolworthy)

A thousand "thank you"s. AVG is looking better and better. Next stop I think is to download and experiment.

Scummbuddy

its AGS, not AVG, and the scripting is fairly easy, and you will find that you can do just about anything within ags.
- Oh great, I'm stuck in colonial times, tentacles are taking over the world, and now the toilets backing up.
- No, I mean it's really STUCK. Like adventure-game stuck.
-Hoagie from DOTT

TerranRich

And by "anything", what do you mean exactly? Name something and I or someone else can definitely tell you if it's possible, and how easily it can be done.
Status: Trying to come up with some ideas...

EnterTheStory (aka tolworthy)

Quote from: Scummbuddy on Fri 04/06/2004 01:32:01
its AGS, not AVG.
Whoops! Sorry, that was my anti virus prog. It was late at night :)

Quote from: Moebius 5.18 on Fri 04/06/2004 06:25:20
And by "anything", what do you mean exactly? Name something and I or someone else can definitely tell you if it's possible, and how easily it can be done.

Two simple examples:
1. I wrote a simple function to make doors open automatically when ego moves near. I just define the hot area and a simple sprite. The program then detects when ego is near the door and opens (or closes) it.
2. I have one line of code for adding a link to another room. It calls a function that calls all the other common functions for both leaving and entering - hotspots, changing rooms, removing or adding ego, etc. Plus it makes ego walk a few steps onto or off the screen (so ego does not just 'appear'). It saves me a lot of time when adding a new room.

Would that kind of thing be straightforward in AGS?

Radiant

Quote from: tolworthy on Fri 04/06/2004 08:19:09
Two simple examples:
1. I wrote a simple function to make doors open automatically when ego moves near. I just define the hot area and a simple sprite. The program then detects when ego is near the door and opens (or closes) it.
Almost trivial.

Quote
2. I have one line of code for adding a link to another room. It calls a function that calls all the other common functions for both leaving and entering - hotspots, changing rooms, removing or adding ego, etc. Plus it makes ego walk a few steps onto or off the screen (so ego does not just 'appear'). It saves me a lot of time when adding a new room.
I'm doing the exact same thing. It takes a little effort to get it going but it's certainly possible.

In general the scripting language is very much like C, so you can go from there. It is possible to duplicate just about any part of AGS in scripting (i.e. dialogs, interactions, etc). I'd say you won't find something more versatile any time soon.

Good luck! Wow, you're into big stuff!

Hollister Man

I think although it would be slow beyond words, the engine is even capable of rendering 3 dimentional objects (flat shaded, of course.)  if you wanted it to be.  Its all a matter of scripting.  In the last two years, CJ has implemented some of the most advanced functions and features ever used in an adventure game.  Full anti-aliased scaling, lightening, darkening, 32 bit color, the works.
That's like looking through a microscope at a bacterial culture and seeing a THOUSAND DANCING HAMSTERS!

Your whole planet is gonna blow up!  Your whole DAMN planet...

TerranRich

In #2, if you mean having the player walk from the previous room, it's very possible. In fact, I'm doing that in my own game. All you have to do is get the character[CHAR].prevroom variable and depending on what room (s)he came from, walk from that area. This is good for hallways and such.
Status: Trying to come up with some ideas...

Ishmael

#9
See this little contraption of mine for example of scripting...

http://www.adventuregamestudio.co.uk/yabb/index.php?topic=9363.0

Mostly the mouse routines I speak of. I've yet to code custom walk command, walking-from-room-to-room and such; I use the character[GetPlayerCharacter()].prevroom variable to stop the player from appearing in new rooms randomly, in case of a code slipup or the "jump to room" debug feature use, so the player is always able to move. I've got big plans for this game, and making those plans work requires a big load of scripting.
I used to make games but then I took an IRC in the knee.

<Calin> Ishmael looks awesome all the time
\( Ö)/ ¬(Ö ) | Ja minähän en keskellä kirkasta päivää lähden minnekään juoksentelemaan ilman housuja.

jetxl

If you have so many rooms, sprites and characters, you might want to spit things up in more then one game.exe. Check the manual and you'll find that theÃ,  AGS-engine can start up another AGS game in the script itself. And it can write a file to the hard disk.

Lets say you split your game up in chapters. When the player reached chapter 2, the game starts up chapter2.exe and if the player hasn't, it will start up chapter1.exe. A file is written to the hard drive that will tell wich chapter has been reached. So if the player starts up chapter3.exe it will automaticly start up chapter1.exe.

SMF spam blocked by CleanTalk