[Official website](https://www.ubisoft.com/en-gb/game/star-wars/outlaws){:target="_blank"}
Worked as an Engine Programmer in Star Wars Outlaws.
Mario + Rabbids Sparks of Hope
Ubisoft
Date:
October 2022
[Official website](https://www.ubisoft.com/en-us/game/mario-rabbids/sparks-of-hope){:target="_blank"}
Worked as a Tech Gameplay Programmer in Mario + Rabbids Sparks of Hope and its 3 DLCs.
Starbase
Frozenbyte Oy
Date:
July 2021 (Early access release)
[Official website](https://starbasegame.com/){:target="_blank"}
[Steam page](https://store.steampowered.com/app/454120/Starbase/){:target="_blank"}
Starbase was released into early access on July 27th 2021. Starbase is a space themed sandbox MMO, emphasizing creativity and player interaction. In Starbase players can create spaceships using a very detailed in-game editor, build space stations, mine asteroids and engage in faction politics and PVP combat. The game uses Frozenbyte's own in-house game engine.
I started as an user interface programmer in the project, but my responsabilities have also included gameplay and network programming. More specifically, I was reponsible for designing the architecture and implementing the code of our ingame bug reporting tool, the quest/tutorial system, ingame mail, and server side support for all these features. In addition, since June 2021 I have been the senior developer responsible for organizing the UI code team's work. This consists mainly of writing documentation, mentoring new UI coders, and making sure every UI coder is adhering to our UI code best practices and patterns correctly.
The bug reporting tool was able to succesfully handle the massive amount of reports right after the early access release, and it provided us valuable telemetry data to discover new bugs. I worked closely with our support team to provide them the information they needed for automating support functions as much as possible. The tool includes functionality for creating surveys with various question types and the tool is connected to both ingame mod tools and a backoffice web application. I implemented the player facing UI of the tool and an ingame screenshot editor, the backoffice web application, and the server handling the storage, indexing and processing of the reports. The biggest challenge with the server was to develop efficient server side search and sorting functionality, so that our support team could search and filter the reports efficiently based on various criteria.
The ingame mail system allows players to send mail and credit attachments to other players, admins are also able to send items as attachments. I implemented the user interface of the system, integrating it with our other social tools, to allow the player to for example select friends, group members and clan members more easily as recipients. I also implemented the server side support for the mail system. The operations for sending mail, receiving attachments and returning attachments needed to be implemented carefully to ensure the atomicity of the operations to make sure no attachments are lost and to prevent for example duplication bugs. Both the UI and server side code needed to be heavily integrated into bank and inventory systems to allow sending attachments.
The quest/tutorial system consists of the quest backend, which is responsible for handling the lifetime of quests, checking objective completion and triggering different quest events, and of the actual quest gameplay logic that uses the quest backend. In addition, the quest system is tied to quest menus, which display for example objective information and hints. I was responsible for the implementation of the quest system, quest menus and the tutorial gameplay code. In addition, I implemented the necessary server side support for the system to for example track player progress in quests and handle quest rewards. The tutorial especially depends on many different gameplay systems, so implementing it gave me a very good overview of most gameplay systems.
- Team size: 50+
- Technologies used: C++, LUA, SVN, in-house build pipeline
Here are some screenshots from the features I have been working on.
OpenGL Game Engine
Own Project
Date:
January 2020
I have been learning more about game programming by writing a OpenGL-based 3D game engine with C++. The goal of the project has been to create a basic game engine focusing on extensibility and to learn C++ programming techinques and patterns that are useful for game programming. I have used various tutorials and books as a reference, but always made sure fully understand everything I implement instead of just blindly copying code from those.
The engine has a component system for game objects, support for basic LUA-scripting (although the API currently only supports moving and rotating game objects and activating particles), resource system with loaders for different types of resources, 3D rendering with a basic lighting model, normal and shadow mapping, text rendering and a FPS-style camera. The work is still in progress, and some of the features on my todo-list are: more complex lighting model with multiple light sources and point lights, basic physics, more complex UI support and more advanced scripting for game objects and at scene level.
- Code repository: [https://github.com/elidepa/HobbyEngine](https://github.com/elidepa/HobbyEngine){:target="_blank"}
- Binary release: [https://github.com/elidepa/HobbyEngine/releases](https://github.com/elidepa/HobbyEngine/releases){:target="_blank"}
New online game architecture
Veikkaus Oy
Date:
October 2018
I worked in a team developing a new in-house game engine for the online casino games on the veikkaus.fi website. The game engine consists of an API for implementing gameplay logic in the games, session handling for gaming sessions, integrations to Veikkaus’ customer database and wallet system, real time monitoring of playing statistics and a backoffice application for our customer service. We also worked with the Finnish goverment’s lottery controllers and implemented a system to ensure the fairness of the games according to the contoller’s specifications. The new game engine went into production in the Fall of 2018, and is currently used for some of the most played Veikkaus’ casino games.
I ported the web versions of three different Veikkaus’ slot machine games (Kultajaska, Kultajaska 2 and Emma) to Veikkaus’ new game engine. This consisted of updating the games to use the new engine, converting the build system to support the new CI pipeline and implementing support for visualizing game round results to both the player and Veikkaus’ customer support.
Team size: 1
Technologies used: Java, Javascript, React.js
Mestarietsivä
Veikkaus Oy
Date:
September 2018
I implemented the gameplay logic of the online version of Veikkaus’ new slot machine game. The gameplay logic handles the simulation of the slot machine reels as well as calculations for the bonus games. I worked closely with QA and Veikkaus’ mathematicians to make sure that the simulation was correct and matched the specifications. I also communicated throughout the project with the team building the graphics and the UI to help them integrate with the game engine.
Team size: 6
Technologies used: Java
Aalto Interface Metrics
Aalto University
Date:
October 2017
Our research group got funding for a project based on developing new ways of how web page user interfaces and UI layouts could be optimized for ease of use.
My contribution to the project was to create a platform for analyzing user interfaces based on around 20 different research based metrics. I created a web service for uploading screenshots of UIs, selecting different metrics and then visualizing the results. I also implemented the back end running the actual metrics, which were written in a couple of different programming languages. The back end was written with modularity in mind, so that new metrics would be easy to add.
Continuation of the typing project done with the Department for Work and Pensions of the UK government. The aim of the project was to create a typing course based on the findings of the previous study. The course included regular typing tests, and daily excercises selected from a pool of a few different excercise types designed to train different motor and cognitive skills associated with fast typing. These excercises included having to type sentences with a visual distraction shown regularly, being shown an unintuitive keyboard layout and having to find certain keys from there and having to memorize and input certain common key combinations. Users logged in to the course page and followed personal training schedules. The users were employees of a couple Department for Work and Pensions offices whose job consisted of transcribing paper forms into digital format.
My job was to implement the course application including the front and back ends, and implementing the course excercises according to specs given by our researchers.
Project done together with the Finnish company Typingmaster that specialises in gamified typing training courses. The aim of the project was to make a typing speed test, that was used to collect as much typing data as possible. The typing test was put on Typingmaster’s web page, and over a few months we gathered a total of 136M keystroke data points.
My responsibility was to code the test platform, including the back and front ends and separate real time plotters showing statistics compared to other people doing the test.
Team size: 2
Technologies used: Scala, MySQL, Play! Web framework, Javascript, jQuery