DEBASER SMASH HUGO!!!

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:smile: :sad: :eek: :shock: :cool: :-x :razz: :oops: :evil: :twisted: :wink: :idea: :arrow: :neutral: :mrgreen:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: DEBASER SMASH HUGO!!!

by Kent » Thu Jul 03, 2003 1:07 pm

Yeah, if you're using a lot of dictionary words (which can be other things than nouns/adjectives; for instance, anything where you have 'x = "some string"' is a dictionary "word"), you can overflow the limit.

The compiler's default limits are basically sufficient to compile a medium-sized game with medium-ish demands in terms of number of objects, routines, and all that good stuff. The reason for this is to allow it to run on limited memory machines (like 640KB DOS environments). This is, arguably, unnecessary these days, and part of an argument to boost the default limits.

by Ice Cream Jonsey » Wed Jul 02, 2003 10:52 pm

Debaser wrote:That did her. Thanks, Robb.
M-M-M-M-MONSTER KILL!!!

There is probably a list the keywords in the manual, but for what it's worth (as I have it right in front of me) the maximum routines one is "$maxroutines".

Ok, I only typed this out because I wanted to do the monster kill thing.

by Debaser » Wed Jul 02, 2003 10:47 pm

That did her. Thanks, Robb.

by Ice Cream Jonsey » Wed Jul 02, 2003 10:40 pm

Debaser wrote:Hrm. The compiler aborts itself before those statistics come up, so no dice. The limit I'm exceeding by the way appears to be 1024. FoD apparantly has a 1749 word dictionary, which would lead me to believe I can adjust something somewhere. But that's strictly blind guessing.
If you'd like to zip up your directory and mail it to me, definitely feel free.

You're right about expanding the limits -- the very first non-comment line in Dawn is

Code: Select all

$MAXDICT=2048
I can't recall if 2048 is an upper bound or a hard limit. Unfortunately, I have been programming for so long that even if I could have easily made it 2000 or 3000 I probably would have selected 2048 because this is what this profession does to you -- it gets you living in a world where cavemen had 8 (or 16) fingers instead of 10.

But yeah, insert that line at the beginning of your code and let's see if that gets things to be more succulent and tempting.

by Debaser » Wed Jul 02, 2003 10:25 pm

Ice Cream Jonsey wrote:Obligatory question: you didn't do something like leave a quotation mark off a custom verb or something, did you?
This is what I'm getting after fixing all my quotes and braces and so-forth, and I don't see any similar errors in the vicinity of where the problem starts.
That can be generated when you do a hc -l -s gamename.hug. (It'll throw it into a text file for you if you do that.) If you get a chance, do that and paste it up here and we'll see what's what.
Hrm. The compiler aborts itself before those statistics come up, so no dice. The limit I'm exceeding by the way appears to be 1024. FoD apparantly has a 1749 word dictionary, which would lead me to believe I can adjust something somewhere. But that's strictly blind guessing.

by Ice Cream Jonsey » Wed Jul 02, 2003 10:14 pm

Hugo's limits are pretty elastic. You might be exceeding the limits of some of the smaller computers, but FoD is 699KB in size with a crapload of routines and synonyms and so forth.

Obligatory question: you didn't do something like leave a quotation mark off a custom verb or something, did you?

Here's FoD's compile stats:

Code: Select all

===============================================================================
HUGO COMPILER v3.0.01d STATISTICS FOR:  dawn.hug
07/03/03 00:23:23
===============================================================================
Total lines compiled:  42206

Objects:      655 (maximum  1024)      Routines:   322 (maximum   512)
Attributes:    44 (maximum   128)      Events:      50 (maximum   256)
Properties:    80 (maximum   254)      Labels:      10 (maximum   256)
Aliases:       41 (maximum   256)      Globals:     72 (maximum   240)
Constants:     78 (maximum   256)      Arrays:      25 (maximum   256)

Words in dictionary:  1749    Special words:    27    Verbs:   130

Object file:  dawn.hex (715323 bytes)
List file:    dawn.lst

Elapsed compile time:  2 seconds
===============================================================================
That can be generated when you do a hc -l -s gamename.hug. (It'll throw it into a text file for you if you do that.) If you get a chance, do that and paste it up here and we'll see what's what.

by Debaser » Wed Jul 02, 2003 10:03 pm

Okay, new issue:

I run the compiler today on my game, and suddenly the log is flooded with error messages, all labled "maximum dictionary limit exceeded", or something similair. Apparantly, I've got too many nouns and/or adjectives, which makes no sense, because I don't think that:

A. I'm providing a particularly amazing number of synonyms for the objects included herein.

B. I have anywhere near as many objects at this point as, say, Fallacy of Dawn.

So, anyway, I'm maybe a quarter or so of the way through the game at this point. If this is a legitimate limitation, I'm essentially screwed. But I refuse to believe it's not me doing something wrong, here.

by Ice Cream Jonsey » Sat Jun 21, 2003 8:59 pm

Confidential to T. Debaser, IL: Hey, if you end up being in need of an elevator, let me know. While there is an implementation of an elevator class for Inform. I did not actually go and translate it, though I probably should have. I just mucked about with rooms and parse_rank values to differentiate between the direction "down" and the "down button" and so forth. My implementation kind of sucks, but it's yours if you'd like it at some date as a starting point.

by Roody_Yogurt » Sat Jun 21, 2003 12:53 pm

Well, it sounds like you've got a grasp of the difficulty so I'm looking forward to seeing how you handle it. It's a respectable goal, and I hope it doesn't become too much of a hassle... says the guy who wouldn't even code a sink into the kitchen of his first and only real game.

by Debaser » Sat Jun 21, 2003 11:47 am

Roody_Yogurt wrote:I hope that most if not all of those bedrooms have something necessary to the plot or game play. Otherwise, as a player, I would probably prefer just not being able to go into them. For me, at least, rooms that are implemented just for the sake of logic often have a dead sort of feel to them.
Yeah, I know, and it's becoming a balancing act. I've got four bedrooms, a kitchen, and a living room, but I never let the player see the inside of the bathroom and I'm just pretending there's no back yard, which is something I dislike doing as I tend to find it hurts immersion to pretend something isn't there when it would logically be there. The first time you visit the house, one of the bedrooms is just kinda "there", one of them (which you can't access without solving a fairly simple optional puzzle) contains quite a bit of plot foreshadowing and some stuff that provides some background information on the setting and why its inhabitant is important to the plot. The other two both contain something you need to advance, but there's no real reason the two items couldn't both be in the same room, other than the fact that I've got four characters. I'm trying to alleviate this somewhat by making each room distinct in some way that will help characerization.

For instance, one of the house's inhabitants is a hard-core "fight the power" type with absolutely no money who's pretty much relying on the other inhabitants of the house to support her. So, when I put in her CD collection, I thought it would make sense for it to consist entirely of burned discs. That meant I had to put a computer with a cd burner somewhere and so, instantly, the one member of the foursome who I hadn't come up with anything to say about other than "really, really large" (of course, this brings up the issue of extraneous characters, which I'm having an even tougher time addressing) became the geek/computer savvy member of the group. Although he's asleep in this particular time block, visiting his room presents you wth this fact, because there's a top of the line computer and nothing else that looks like it could cost any money in there. In the same sense, by including their books and/or music selections and their choices of decore, I'm hoping to flesh these people out a bit for the player. I'm not sure how it will play to anyone who's not me, of course, and I won't until beta testing. At the very least, at some time block, each of the four rooms will contain it's corresponding character at a point when the player might want or need to speak with them.

To a certain, extent, I am really trying to realise a world, and I understand the pitfalls inherent. It's especially tough, because the game takes place across a fictional city and, at some essentially arbitrary point I keep having to tell the player "no, don't go any further in that direction, use the transit system". Plus, again, just finding some sort of "hook" for every place the player has to visit , something to make it memorable or at the very least distinct from everywhere else, is tough. And I'm probably not doing as well as I'd like, but I'm trying.

by Roody_Yogurt » Sat Jun 21, 2003 11:22 am

I hope that most if not all of those bedrooms have something necessary to the plot or game play. Otherwise, as a player, I would probably prefer just not being able to go into them. For me, at least, rooms that are implemented just for the sake of logic often have a dead sort of feel to them.

by Debaser » Sat Jun 21, 2003 10:23 am

Yeah. Part of the problem is that, right before that point I was doing this house that was owned by an NPC and rented out by 3 other NPCs, none of whom were fucking. So that meant 4 bedrooms. So that meant 4 beds (or bed-like items), 4 dressers, 4 music-playing devices, 3 collections of CDs, 2 bookcases, 2 collections of books and, some part of me had the integrity to say "each of these items must be distinct" and so they were. Then I took a break and got the transit code working. That was frustrating, but at least it was novel.

Then I did a store, the foyer of a library, and the inside of a more or less empty bar. Doing 3 seperate counters (or, in the case of the bar, a counter-like item) was some sort of breaking point. It took every ounce of willpower not to make the long_desc "It holds shit up. What the fuck do you want from me? It holds shit up. It's not important to any aspect of the game. It holds shit up. And don't you fucking dare try to put anything on top of it, asshole."

But I think I've recovered. Now we get to visit the PC's apartment. It should be an exciting portion of the game for the player. He gets to cast his first spell, has to sneak past a couple armed characters in masks, gets to find a couple important clues in the game's central mystery. But for me it means another bed, another dresser, at least one more bookcase, and at least one more set of books. If I'm going to have integrity about this, it's going to mean another music-playing device, and then I have to figure out what, beyond Wagner, the PC is likely to have in his CD collection.

by Ice Cream Jonsey » Sat Jun 21, 2003 2:14 am

Debaser wrote:I think I've added maybe two rooms worth of code and one brief conversation since getting that working. You know what I'm discovering: describing shit is a pain in the ass.
Chain Gang Guy is playing a number of characters in the thing I am currently working on, and for one character he had a picture taken of himself where he is hiding behind a big, leafy, potted plant.

I realized yesterday that I have just about run out of ways to describe big, leafy, potted plants.

In days of old, the editor to Amiga Power would ban the word "very" because it brings nothing to the table. But there I was, doling out the "very big" and "very large" text snippets like I was making the next Stiffy Makane adventure. I have nothing left to say about plants. I have nothing left to say about vegetables. I even passed freshman Botany -- I had an old, shriveled, wizened guy who would have looked more in place in a Harry Potter movie than in front of a bunch of students speak at great length about plants and plant cells and so forth for fifty minutes three days a week for three months of my life and STILL... I got nothing.

Luckily, a picture equals one thousand words, so I just threw CGG's mug up on the screen and added 1,000 to my word count.

by Debaser » Fri Jun 20, 2003 11:04 pm

I think I've added maybe two rooms worth of code and one brief conversation since getting that working. You know what I'm discovering: describing shit is a pain in the ass.

by Ice Cream Jonsey » Mon Jun 16, 2003 11:14 am

OK, cool, I am glad that you got it working. I got hung up on making the "2" appear correctly there. My sleeping habits have become quite poor, so being able to whip off a round of programming with the Debaser was a good way to kill the time until the angry glare of the sun came through my room.

by Debaser » Mon Jun 16, 2003 3:09 am

Thanks, Robb, I've figured it out. Once you pointed out I could just call GetDial, rather than reproduce the code (modulization!), it was basically just a matter of chucking GetDial(b) into what I already had and fiddling with the logic. Works perfect. Many many thanks for sticking it out with me all damn night.

by Ice Cream Jonsey » Mon Jun 16, 2003 2:10 am

Ah, right right right. Let me grab some sleep and I'll take another look at this and get it fixed with a fresh head.

by Debaser » Mon Jun 16, 2003 2:01 am

Not quite. Under that scheme, the input corresponds directly to the original array, rather than to the adjusted menu location. Inputing "2" gives you Adams Street because transit[2] refers to Adams Street. But inputting "1" gives you "Far West Side" (transit[1]), which isn't even a menu option, rather than "Gothic Street", which is the proper response.

by Ice Cream Jonsey » Mon Jun 16, 2003 1:22 am

OK, I see that you had GetDial() already in there -- if you change your routine to this, do you see more-or-less positive results?

Code: Select all

routine GoTransit
{
 local a, b, z
 "Choose a destination (0 to remain where you are):\n"
 for &#40;a=0; a<20 ; a++&#41;
 &#123;
  if &#40;transit&#91;a&#93; = 1&#41;
  &#123;
   b = b + 1
   print number b; "&#58; ";
   select a
    case 0 &#123; "Gothic St. &#40;Your Apartment&#41;" &#125;
    case 1 &#123; "Far West Side &#40;Mickey's House&#41;" &#125;
    case 2 &#123; "Adams Ave. &#40;Kingston University&#41;" &#125;
    case 3 &#123; "Independence Blvd. &#40;Downtown&#41;" &#125;
    case 4 &#123; "Olympus St. &#40;Greek Town&#41;" &#125;
  &#125;
 &#125;
 "\n>";

 GetDial&#40;z&#41;

 if &#40;word&#91;1&#93; = "0"&#41; &#123; "You decide to stay here." &#125;
 else
 &#123;
      select word&#91;1&#93;
      case "0" &#123; "Gothic St." &#125;
      case "1" &#123; "Far West Side" &#125;
      case "2" &#123; "Adams Ave." &#125;
      case "3" &#123; "Independence Blvd." &#125;
      case "4" &#123; "Olympus St." &#125;
  
  
  &#125;
&#125;
... For instance, with this, if I choose "2" when invoking the GoTransit routine, "Adams Ave." does indeed come up. Does this behave the same way for you?

by Debaser » Mon Jun 16, 2003 12:47 am

Should be on its way.

Top