Tempin - detective game
Back in 2014 I got my first job in a videogame company, Kef Sensei.
Core team was formed by a 2D artist, 3D and technical artist, game designer and a developer (guess who!).
Company got funding and assembled a lean team for the development of a 3D game that mixed up virtual characters and real world environments. Something like the Space Jam movie, but with 3D characters. This game was targeting mainly iPad and other mobile devices.
Real world environments
For the environment generation there was a separate team that would take pictures of different scenarios and got multiple angles for each of them. Our technical artist would then create some 3D planes and other shapes were he would project the 2D pictures. By creating different shapes at multiple depths, we could hide a virtual character behind 'real world' objects. We had no internal tools or asset integration pipeline at the time, everything was brand new. Because of that I had to create my first ever Unity custom window, where a user could select the 3D assets and import them into the scene. During the import process, some hierarchy reorganizations were made, and some objects needed to be rotated or flipped because of the 3D model tool different standards. Also some scripts were added to the game objects representing each camera angle, and the tool would then list all camera views available in that scenario. Each camera angle could be tested by clicking on it, and this would turn on/off the corresponding game objects and move the main camera to the target position and rotation. Really nice tool, pretty simple, but saved hours of setting up scenarios and checking if everything was ok.
Dialog system
One of the main mechanics of the game was to interview a suspect and try to get a confession. For this, the user could select what to say, and with what attitude. For example being aggressive could bring some short term benefits at the cost of the suspect getting angry and refusing to give more information. When we first started and I got these requirements, it was clear to me that we needed a dialog system, and some tool for content creation.
Check out the final results before I keep going deeper into the requirements and solutions:
How could we facilitate content creation for the dialogs? Dialog and options were clearly a tree, so I started googling for dev tools I could use. I found a very simple(too simple...) graph editor implemented with Windows Presentation Foundation (WPF) and C#, so I jumped into it. At the end we got a Windows standalone app where the writer could add dialog nodes, set the dialogs for each step, select which camera angle would be used, and export the content as a JSON file. After that I could just load the file in the same tool and choose other things like the animations that would play for each character in each stage of the dialog. The dialog editor was a little buggy when dialogs scaled, but hey I had no idea of WPF and spent 2-3 weeks of effort in it because I had to keep going with the game. So even if it wasn't as awesome as the writer would've liked, it was a really cool tool and I felt really proud of it.
After having the dialog content in data, I just ran that through the dialog engine and everything would magically happen. Mission accomplished!
Game progress
Game would take different paths depending on what you chose to say. For that I just used a collection of flags, to track what had happened before. Then some parts of the game would just check for those flags to see if they had to be available at that point or just stay hidden. Simple solution, but it just worked.
Crime scenes
Detective could access his memories about crime scenes so that it narratively made sense to visit the crime scenes. The game is played in the interview room, and the detective never leaves until getting a confession, so the memories were a nice idea by our game designer.
In crime scenes, player could walk around by tapping on the screen, and could examine the surroundings by tapping on things around.
For navigating the scene, we purchased a pathfinding library for Unity, that included a graph editor and an implementation of the A* algorithm. Setting up the graph was a challenge because of how the environments worked. Getting one to fit all the camera angles was pretty impossible, to I had to find a middle ground that looked good enough for each one.
After having the navigation graphs in place, I just had to run the pathfinding algorithm and move towards each node in order. We weren't using root motion, just plain moving animations, so the character looked a little weird when turning around because of the feet sliding around, but we didn't even understand root motion at the time and was the best we could do with our experience.
When examining some key elements in the scene, some flags would be marked as true to make the rest of the game react accordingly to the progress being made.
Here's how a scene setup would look like, you can see the graph and the custom menu at the end to change the cameras:
How did this end?
After one year under development we had issues finding the balance and fun factor, so there were too many intermediate iterations. This caused that we exceeded the scheduled time and effort for the project, and ended up creating a demo to get more funding.
After that I was supposed to jump into some other projects, but I realized after this time that I didn't want to focus on mobile games, monetization strategies, user conversion, etc. I just loved 3D but wanted to create more hardcore experiences. Dreamt with AAA games and working for big companies at the time, so I just moved on.
(spoiler alert!)
I never worked in AAA titles later, I worked in native Android dev and got back to web dev trying to make money to go to Australia on a working holidays visa. And I did go to Australia, worked in a bar in Brisbane, and then a supermarket in Melbourne. And then got back to Uruguay and started fresh. Sometimes we just need that.
Comments
Post a Comment