This interview is part three of a series from an interview with Jongwoo Kim, the creative director of Lucifer Within Us, a unique mystery game. To read our writeup on the game, click here. To read part two, click here.
Technical Troubles of Transforming Time
Fritz Wallace: Lucifer Within Us has an incredibly unique timeline mechanic that allows you replay and see what each suspect claims to have been doing at any given point in time, and to rewind and move around. How does that system work?
Jongwoo Kim: I’m not sure if you’re aware of this, but most games with a replay system won’t let you rewind. For example, if you watch a replay of a game like StarCraft, or an RTS, it’s usually not actually a replay, it’s just a recording of all the button presses.
But for Lucifer Within Us, because the player needs to be able to smoothly rewind, we had to record the animation data for anyone point in time, in addition to recording all the animations and false testimony for any given point in time. And in addition to that recording, we had to make sure all of this was consistent with the audio for any given point in time.
For example, if Gideon says one thing, but is located somewhere else, it won’t be a smooth experience. So you have to be sure when things are going to play, aligning your time cube.
It’s actually a weird technical challenge that isn’t done often. It’s the kind of thing I’m quite proud of, like a very cool toy sort of thing. It’s quite satisfying for me to be able to rewind things back and forth, and see the characters move around.
Fritz Wallace: I’m curious about this, since I’ve done a small amount of work with Unity myself. What made it so difficult?
Jongwoo Kim: So certain parts are Unity specific, but the bigger problems are “How do you make a system where the player can rewind to any point, at any time, and still have it make sense?” And there are quite a few problems.
The first one is logistics. How do you ensure a character’s movements are believable and make sense if the player can watch every moment of what they’re doing? Especially if what they’re doing a lie. The simple solution is to have them idle for a large amount of time once they reach what they’re doing.
Before we implemented rapid scrolling/skipping, it was frustrating for the player experience to watch everything happen slowly, when you have idling like that. But if we’re assuming that the player should be able to navigate at any point in time (which is what you’d want to be able to do as an investigator), there are other weird challenges.
For example, characters say their lines, but that won’t necessarily line up with the length of a given section of movement. Initially we had extensive testimony lines, but we realized players don’t want read paragraphs of text. Also, any text that’s not explicitly describing the actions being taken tended to be misleading, and players wanted to ask questions. There needed to be coherence between what was spoken, what was happening, and what was seen.
But all of this still has to align with the logistics of the case, how the character gets there, and be continuous, because it’s a timeline. So the solution we came up with was that we had an editor built on top of Unity, that would allow us to record the case from beginning to end for every possible variant. And there are additive variants, it’s not like it’s just every single variation. So you’d have the vague testimony for every character, the true timeline for every character, and then every layer in between.
Fritz Wallace: So for example, in the third case, where each of three suspects has to still line up and make sense at any point in their stories.
Jongwoo Kim: So yeah, those three paths have to happen, but you have to keep in mind, sometimes the timing of objects involved in the case changes too. For example, in Gideon’s case, when and how he manipulates the coronet changes the testimony and outcome. The same is true of Abraham and the shovel. So you have to make sure certain objects disappear from the timeline, and only appear when they’re speaking.
The coronets explosion example, she (Alex Bull, 3D Artist) had to make an animation, and then adapt the animation so it’s rewindable, but with the pieces still appearing and being discoverable on the ground.
If you go back and look at everything side by side and where things are, you actually might notice a few small changes. There are some errors, and we tried to be very careful about avoiding them, but it was very tricky. We also discovered during testing that certain players are much more obsessive about certain errors then others. In the first case, the glass door and its position at the start of the case would frustrate players, because the door ends the testimony closed, but if it was open when the player gets there, it raises questions about who opened it, because someone must have.
And so any error like that in the recordings became frustrating to players because it both throws the player off, and breaks that sense of being a detective. The vision of the game was for the player to use everything they see, and figure out the answer themselves. It was damaging and misleading when we made mistakes like that.
From a very tech point, and this is Unity specific. There’s no built-in system in Unity that supports rewinding animations for the duration of the cases we have. While Unity does have a system that can work for 2 minutes in length, there was no guarantee that our cases would be under 2 minutes. It also has further restrictions: i.e., can only record during run-time. So a player would have to watch full case normal speed 1 before that system was usable.
So we had to figure out another way. I won’t go too much into details, since I’m not sure that’s interesting to anyone who isn’t trying to perfectly recreate the system in Unity. There was an alternative animation system available in the Unity made by the developers that allows you to play any animation arbitrarily. And so by using that system, and then another way to capture either every frame, or however many intervals you wanted, to take a snapshot of a character, their exact animation state, what they were holding. And we’d take snapshot after snapshot, and then using those snapshots, we didn’t have to use Unity’s animation system any more. And using those snapshots, we could interpolate between the states.
It’s a bit strange to say snapshots though, because that makes it seem like it’s an actual film in a way, right? But in reality, it’s still taking place in the physicals space of the game, the characters still are moving around, and have physical properties.
In the ideal world, I would have wanted it so you could just reverse time whenever you wanted. If someone threw an object, you would just have the physics system run in reverse, accelerate it in the other direction. But because the player could skip around to any moment in time, and physics going backward is not something Unity supports, the approach we took was different, by recording at every major interval and interpolating, and taking enough snapshots that it looks smooth.
Fritz Wallace: That’s a pretty intense technical challenge.
Jongwoo Kim: Yeah, I don’t think the studio ever talked much about the technology we built for this project, but it is certainly something weird and unique about the game.
Fritz Wallace: So it seems like a lot of effort was put into both designing these systems and making them work technically, which is fairly impressive.
Jongwoo Kim: Yup.
Fritz Wallace: Would you ever want to make more games using the timeline mechanics? Or more games in that setting?
Jongwoo Kim: Yeah, so if I were given the opportunity to revisit that world, I’d really love to. Would I like to revisit those mechanics, whether it was using that IP or not? My answer would be a careful “Yes”.
While we didn’t milk everything we could out of it, in terms of logistics and mechanics, it’s a very particular setup. In the sense of, not just the implications of the mechanics, as much as the logistics of making a game like that work. In order for that to happen, since I no longer have access to the code base, I’d have to rebuild a lot of things. And that’s the main thing I’d be reluctant to do.
If I could, I’d love to make more cases. I think a timeline based approach has a lot more space to be explored. I also think some of the choices we made for Lucifer Within Us do restrict some future possibilities because of the narrative commitments of that project. I’m very happy with those narrative commitments, but at the same time a digital exorcist needs to exorcise demons. So we have to provide demons, and that narrows the possibilities compared to a traditional investigator. I don’t think that pertains to the timeline though.
This concludes part 3 of the interview. The final part will go up tomorrow and involves the games lore, headcannon, and some of the lessons learned from the project.