Many many rooms....

Hello everyone, especially avid i7 users.

I want to simulate 4 streets with 9 blocks (think tic-tac-toe). Each block has various adresses on each street (4 sides), and each number has a few stories. So this comes to about 75 apartments in first story only (or basement for european users). And as there are more stories and each apartment has a few to many rooms, …

Can i7 handle this? I need this variety for the world I want to simulate and have tested many things. I know about other engines, and would use them if necessary, the game is not intended for public release so far. Currently eg. a street is called Humble Avenue, the adress is 24 the apartment is in 2nd floor and has number 11. I’d call the rooms HA2411 bathroom HA2411 kitchen etc., the corridor would be HA242. I have done the streets, blocks, stories, corridors and the inner courtyards so far, and a few test apartments.

Only thing so far coming to my mind as to limit the number of rooms is to have rooms be enterable containers in one single “apartment room”. But then how can I hinder seeing outside a container, i.e. seeing the bathroom from “inside” the kitchen? It’s funny how things can only be set “in scope”, but not “out of scope”.

On a side note, how can I part the adjective and the noun of the name of a room, so the printed name would automatically be ONLY the noun? Can this be done?
EDIT: I know about “understand this as that”, but don’t want to do this for each single room, so I am looking for a general, concise and someway automatic way!

I admit english is not my mothers tongue, so there could subtleties in the documentation and examples I don’t catch. Thank you for any pointers!!!

This is already a massive undertaking. I suspect it would be untenable to do it by hand. If you do need it and decide on using procedural creation, then the process isn’t difficult: you simply create the illusion of said grid of rooms.

Just bear in mind that you’ll need to put a lot of effort into the appearance of variety. You’ll have an awful lot of similar objects no matter how you slice it, so you’ll almost have to go with this approach if you’re using I7.

That depends on how you decide to implement it. You could (if you wanted) hand-create the entire environment, although I suspect having all the rooms etc in play at the same time will break even Glulx and create horrific slowdown for very little gain. You could use sleight-of-hand to basically create a single floor or section of floor and then iterate it intelligently, moving all portable objects as appropriate. You can use algorithms, tables, or lists to define whatever you want. There are even extensions that allow for the dynamic creation of rooms at run-time.

What I’m saying is that there are several methods. You may need to figure out what’s actually necessary to your story.

Well, assuming I’m understanding you correctly, you’re considering using containers to simulate rooms. That can be a difficult thing to do. In this instance, scope, visibility and reach depend on such things as transparency and open/closed state of the (enterable) container. Conceivably, you could simulate a kitchen as a closed opaque enterable container; then, whenever you open the kitchen-container (by opening the door), the area enclosing the kitchen will pop into scope.

However, I think it’d really be much more straightforward to use the room object(s) to simulate the function of a room. Doesn’t have to be a single room object either, as this section about continuous spaces demonstrates.

Edit: Oh, and welcome! :slight_smile:

Some points are that NPCs will be home or not and in this or that room (but not conversationable since the main character is planned to be a ghost, luckily…), pedestrians should walk around scripted, objects can be learned to be interacted with, etc. Yep, this is massive, but I want a long term project and am ready to handcraft.

The point is that the main character has to find out who he is, which persons belong to him and so on.

I am currently concentrating on the center block and see what space will be left, technically and creatively. Would you have a suggestion wether a map can be build by means of a table and assigning some kind of apartment templates?

You might take a look at the extension Dynamic Rooms by Aaron Reed. I used it when I was experimenting with automatic room layouts and mapping.

There’s theoretically no limit to rooms and such, but you’d need to do some testing to see how it performs. I think it might be okay. The nice thing about Dynamic Rooms is that it would be easy to load the approximate number of rooms in and see if it’s possible in a bare bones form.

What’s the advantage to doing all of this, versus just the important places, or the important places plus a little padding to make the world complete? Are all the areas/apartments going to be plot-related, and/or have something interesting for the player?

By default, Inform is good about scaling to larger games as long as you don’t cram everything into a few rooms. That is, adding more rooms (with normal numbers of objects in them) doesn’t slow the gameplay down.

However, it’s easy to write rules that do start causing scaling problems. If you have lots of NPCs moving around through the game, their “every turn” rules are obviously going to cost you.

gravel, Dynamic rooms looks GOOD, I will try that out very soon. Thank you for telling me what I oversaw :wink:
I want distraction from the main theme, and with my knowledge growing I want to have more freedom and possibilities within the game world. And then, maybe I can use the streets and apartments for other projects, like alien uncovering missions etc.

zarf, with the work so far done I already had a memory warning and compiling wouldn’t commence. Only rooms (and even just one block first story), one door and the player-object, and a few rules. I added the “memory economy” line and that solves it for now.

I was talking about speed, not memory use. Sorry. Completely distinct problems.

If you have many complex objects, or many tables or relations of objects, you will quickly be pushed into Glulx.

Are you compiling to glulx? You can compile I7 projects into two formats (roughly), z-code and glulx; glulx has a lot more memory and has other features as well (I think Dynamic Rooms only works with glulx) [EDIT: wrong, I was thinking of Jesse McGrew’s dynamic objects, though if you want to put things in your dynamic rooms you might need that as well]. If you haven’t done so already, you should click on the “settings” tab and change the story file format to Glulx. That should save you from out of memory errors for a bit.

If you’re already up against the glulx memory limits, well, dang.

I didn’t have the time yet to try Dynamic Doors yet.

But I want to bump a question from one of my previous posts: Can I somehow seperate the adjective and the noun of a name of an object? For example I would like a printed name of a Green Grass to be “Grass”. I would be using the adjective of a room as its “backstage” identifier (like “flat134 Livingroom”), and am looking for a way for the printed name to be automatically “Livingroom” with a rule (for printing names of rooms?) or instead. Solving this could very well make me understand inform7 a bit more.

Additionally, could I take a identifier/adjective eg. from a table, and let an object be in the [adjective] Livingroom?

It may be easiest to do this by kind:

[code]A living room is a kind of room.

ABCD is a living room. Understand “living room” as a living room.

The printed name of a living room is usually “Living Room”.[/code]

This would allow you to do lots of other things to general living rooms, test if the player is in a living room, place a couch in every living room, etc. I’m sure there is a way with indexed text to suss out and say the second word of the name of a room, but since you’re probably going to be using kinds of rooms anyway . . .

Also noteworthy would be this variation on the above:

A living room has some text called descriptor. The descriptor of a living room is usually "Enormous". The printed name of a living room is usually "[descriptor of the item described] Living Room".

Hmm, I’ve tried kind of room already but the result wasn’t as hoped for, and can’t remember what exactly the error was right now. I will give it another go over the weekend, thanks.