Below the surface of the beautifully painted animations and backgrounds lies a world which is mostly hidden to the onlooker. It is a world of code and systems. Like the cogs and springs in a mechanical clock, all the underlying systems must work together in harmony to fulfill their part of a greater whole.
Due to the creative process required to create a great story and game, changes occur rapidly and give birth to new features which the existing systems don't always support. This can be anything from the kinds of interactions Anne is capable of to how the camera moves and behaves. Whether a system is to be redone or patched up has to be assessed in order to accommodate the demands. Redoing a system would take time from our already tight production plan, but too much patching could give rise to bugs and difficulties in maintenance down the road. Hence, a recurring challenge is to strike a balance in order to get the best result for both the game and the production. Since Forgotton Anne has a very distinct cinematic look, we had to ensure that the technology supported the vision for the game, and with this in mind the systems were created.
One of my main focus areas was the implementation of Anne’s behavior and controls. While the player explores the Forgotten Lands through button presses and joystick tilts, Anne’s underlying system must constantly shift her internal states to make sure she behaves according to the player’s intentions. Whether it is running, jumping, moving on stairs or ladders, her states constantly check for changes in input or the environment. “Does the player want to jump of the ladder?”, “am I touching a ledge I can grab onto?”, “and am I even touching the ground now!?” Anne must ponder these questions at all times and instantly react to the given situation in order to deliver a smooth enjoyable experience to the player.
Making these states required a solid and easy-to-maintain structure, as new features and iterations on the existing ones were a part of the everyday workflow. A complete overview was needed at all times, since a small change in one state of Anne might affect something in several others as they are all interconnected.
Anne performing a jump from ladder to ladder. Her different sensors are visible in different colors.
Besides her behavior, Anne also had to look right. This was of course ensured through our frame-based animations, but the animations also had to fit the environment in which she moves. Making sure that it looked like Anne was actually touching the ledges, ladders, stairs and other assets in the game world was a challenge. Especially when moving on stairs and ladders, we wanted it to look like she was shifting her weight from step to step in a realistic manner, instead of simply sliding up or down. This effect was achieved through offsets in the animations and position snapping of the player through code. I worked closely with the animators to ensure that Anne’s position and offsets were changed in the correct frames without destroying the illusion of her movement. It was an iterative process where we had to decide which offsets were to be applied on my side through code and which on the animator’s side in the actual animations.
Anne’s animation taking her out of her collider before snapping to the next step.
Anne is but one of the many systems in which I am involved. Just like Anne must shift from one state to the other, so must I in the production. When a bug creeps in or help with setup is needed in a system different to the one I am currently occupied with, a shift of focus must occur in order to avoid bottlenecks and delays in our tight production plan. This is at times a challenge but also a learning process which requires quick judgement in order to asses which task to prioritize and which task can afford to wait. Just like the systems of the game must work together in harmony, so must the forces in the production.