Iron ChIF: Season One Episode 2 (Audience Commentary)

In Dialog it’s certainly possible to have two different rooms with the exact same name, but since there’s a built in world model, it’s easier to adapt that.

More detailed explanation of different implementations

You can specify the temporal and spacial location of each room such that duplicate, identically-named rooms have the same spacial location. Then, when the player switches between time periods, you can find the room with the same spacial location but a different temporal location, and move the player to that room. The downside of this method of implementation is that you have to create multiples of every single room, and everything the player could enter or sit on. (For instance, if there’s a bench in a room and the PC is sitting on it, when they move forward in time they should stay on the bench, but any other items that were on the bench should stay in the past.)

You can also implement the system in such a way that you only need one room per location. Dialog’s world model is written in Dialog code, which makes it fairly simple to modify. Additionally, you can easily create a single room with a description that varies based on a particular condition. Instead of creating duplicate objects, you can specify the initial temporal location of each object and the time periods in which each room is accessible and keep track of which time period the player is currently in. You can then prevent any item that’s not in the current time period from being treated as if it were in the room. I find this solution preferable; it’s much simpler to keep track of the world model, since there’s no risk of mixing up different versions of the same room, and it scales up much better, since you don’t need to duplicate large parts of the game world.

For comparison purposes, I implemented a small demo game twice: once using identically-named rooms and once using only different time periods. Here’s the source code and compiled versions of both implementations:

time_travel_tests.zip (72.9 KB)

(“time_travel_test.dg” and “time_travel_test.z8” are for the implementation modifying the default world model, and the ones ending in “multi_room” use duplicate identically-named rooms.)

7 Likes