Summary
This is my Master's Thesis project, done as part of Petri Lankoski's PhD project for the Medialab in University of Art and Design Helsinki. It's an adventure game about romance, focusing on social interaction with computer-controlled characters. The player is Abby, who's made a bet that she can seduce a Christian rock singer. To succeed, she needs to work her way into his social network, manipulating his friends to help her. The game is based largely on dialogue, with some minigames thrown in. At the core is the Impression System, a memory and personality model that determines what the NPCs think of Abby.The game is freely downloadable here. There's also a video (by Petri Lankoski).
The Team
- Petri Lankoski acted as creative lead, participating in many tasks such as concept design, game design, writing and programming.
- Raisa Omaheimo developed the basic story and characters and wrote some of the cutscenes.
- Mike Pohjola wrote most of the dialogue and story content, and helped develop the dialogue editor.
- Niklas Gustafsson designed the 3D characters and modeled and animated Abby.
- The other characters were modeled and animated by Reettakaisa Neittaanmäki, Linda Kronman, and Anne Parkkali.
- Kimmo Karvinen designed and modeled the scenes, and made the UI graphics.
- Jari Suominen made the music and sound effects, and did programming related to that.
- Josie vd Stel proof edited the dialogue.
- I focused on game design and implementation, developing the personality model and the AI system, and did most of the programming and building work. I also created a dialogue editor, and participated in the writing.
Technologies I Used
- Unity 3D engine and development tool
- C# for scripting
- Java for a dialogue editor (Swing, XML, DOM)
- Pathfinding algorithms (Navmesh, A*)
The Impression System

The system models two things: the memory and personality of the NPCs. Both are centered around Abby: what they've witnessed her doing and what they think of it. From this, an overall attitude score is calculated. This is how it works:
The NPCs estimate Abby according to a specific set of characteristics, called impressions. There are twenty impressions altogether, such as: Religious, Slutty, Lesbian, Rich, Intelligent, Exquisite... Whenever Abby says or does something, all NPCs in the vicinity adjust their view of her: for example, flirting with someone will increment the Slutty impression in those who witness it. The impressions can then be directly referred to in conversations (the NPCs might, for example, discuss how slutty they think Abby is, or directly critisize her). They are also used to calculate the general attitude the NPCs have towards Abby.
This is where personality modeling comes in. Each NPC has an opinion about each impression, reflecting if they like or dislike that quality and how strongly. For example, Chris loathes slutty girls while Lord James loves them. The overall attitude, determining general reactions, is calculated as follows:

I think the impression system works pretty well, though there are some oddities, and a lot of tweaking was needed to balance the game of course. It's certainly an improvement to the single-value system used in Meren Vangit.
Working with Unity 3D

Besides that, there was also lots of tweaking and bizarre problems to solve. We used Softimage XSI to create the models and animations, and importing via the .fbx format proved tricky: sometimes our characters looked less like people and more like aliens from outer space, reflected in one of those funhouse mirrors. Genuine bugs on our part also caused amusing effects: the characters had the tendency to float around in their chairs for instance, or wave full glasses of bear around when walking or talking. Suicide by bad pathfinding was also a common occurrence. Fortunately, we got most of that stuff out by the release. (Not all, though: Probably due to some compatibility issue, there's some annoying graphical bugs on some video cards...)

I'm hoping the use of development environments like this will become more commonplace. It seems like a good way to counter the increasing workloads in game development. Personally, of course, I hope Unity becomes big so my skills will be in greater demand.