Mikkel Andresen

Gameplay/AI Programmer

About

Hi, I’m Mikkel Andresen, a Norwegian Staff Unity Engineer.
Below are the public games I’ve worked on, I also have some breakdown of the features I worked on for each game in their respective pages. In early 2019 I transitioned from indie game development to simulation and visualization based on Unity for a company called OSC located in Ålesund.
Since 2023 I’ve been working in Oslo for Attensi who makes gamified training products for businesses based on Unity engine.
I have a strong interest in software architecture and I also like to work on shaders when it fits the problem. I like to keep a good balance between performance and code complexity.
In the recent years I have been leaning more towards more enterprise software architecture in favor of flexible styles. However, when flexibility is called for I turn back to more flexibile arcitecture for faster iteration time.

Off hours I play all kinds of game genres, I really like Oxygen Not Included, Civilization, Divinity Original Sin, Mass Effect and Company of Heroes. I do also keep some personal projects such as an RTS game prototype based on DOTS and a Unity conditional copy algorithm using the job system and LLVM.

Games

oVRshot/Stryker

Platforms: Steam, Oculusovrshot

oVRshot is a player vs player archery virtual reality game published for the HTC Vive and the Oculus Rift using Unity3D and Photon networking.
It currently features two game modes, three maps, class system, bots and skill based matchmaking.

Blindventurers League

Platforms: Google Play StoreDesktop 06.01.2017 - 19.28.07.03.png

Blindventurers League is a 2D puzzle game for Android and IOS developed using Unity3D and C# by me and five others. It features over 30 levels, three characters, one ability per character and many types of traps. It was available on the Google Play Store, but we’ve not updated it to 64 bit.

 Nord Hunt

Platforms: Google Play Store and App Store

nordhunt

Nord Hunt is a team based competitive game made to familiarize students with the
Nord University campus through location based mini games. It was published on Android and IOS, it was made to be event based so it can only be played by students at a certain time like the introduction weeks at Nord University.

It features multiple mini games such as an AR collector game, quiz game and an anagram game. The quiz and anagram game are both team based, so if you find one, it gets relayed to the rest of your team so that they can also play the same game.

It is not publicly available as this was a contract project for Nord University.

Companies

OSC

Since early 2019 I’ve been working for OSC on a simulation product (based on Unity3D) which is aimed at giving engineers the ability to create their own simulation scenarios without having to create a project through OSC.
So essentially we’re trying to move to a product model from a project model.

Some examples of the work I’ve done

  • Virtual sonar producing an image based on a 3D world in Unity3D.
  • Full UI for interacting with the simulation and creating scenes using UGUI.
  • Backend and higher level networking.
  • Making our simulation visualization VR compatible.
  • VR crane simulator.
  • Smart city data visualization in accurate digital twin terrain.
  • Migrating from a large legacy code base
  • Created a basic C# testing framework using reflection and attributes.
  • A lot of performance passes on rendering, networking, UGUI and other systems.

Attensi

I have been working for Attensi in Oslo since 2023. Attensi uses Unity to create gamified training products for various companies. At Attensi I’ve adopted a unique versatile role where I switch between 7 different products as well as doing work on the core internal Unity packages. Since the start I recognized that they were lacking in automated testing and product stability. I started an initative to familiarize, upskill and mentor the team in automated testing and the architecture needed to support it.

  • Led development of a new Meta Quest product
  • Other VR projects
  • Implemented CI/CD for legacy products
  • Published three legacy products on WebGL, iOS, Android and Windows
  • Sole developer on a regression testing bot for all our Unity products
  • Helped consolidate our Github Workflows into composite actions
  • Developed a Roslyn Analyzer for preventing use of threading API on WebGL
  • Developed a mockable interface based singleton
  • Helped in the introduction of dependency injection to the team
  • Hosted three workshops on automated testing
  • Held several talks on automated testing, memory management and C# architecture
  • Led selection and integration of a game streaming provider
  • Mentored team members when they were open to it
  • Helped team members debug and troubleshoot complex issues

Game Jams

Kormet Doesn’t Like Spiders 3D

Itch.io

The player must control Kormet the puppet to survive an endless onslaught of spider clones.
For this two day game jam (July 22) me and my GF decided to explore VR and hand tracking to see if we could come up with something interesting. The end result is a top down melee fighting game where the player controls the player using their dominant hand. We used Unity engine and their navmesh system and the wrist bone from the hand tracking as the target position while the puppet stays on the ground.
The two sword hands used to kill spiders are controller by the thumb and index fingers, there’s is no special technique, only that you need to hit the spiders with a minimum velocity.
The game itself is really simple, just an infinite wave based defense with no end state other than the player dying.
We focused on getting the hand tracking and player controller right and I think we mostly got there, but there is a lot to be improved as with basically any game jam.

Below I’ve posted a short gameplay session showing me using my right hand to move Kormet and his arms.

Borg Ball

Itch.io

Description:

In this space sport game, you pilot your Borg cube and must capture the asteroid using your powerful tractor-beam then launch it at the opposing team’s planet which has totally been evacuated before the game.
There are two teams Blue which is played by cube ships and Red which is played by sphere ships.
Joining players are automatically added evenly to each team. The goals/planets are color coded, so you just need to launch it at the opposing color.
It supports up to 6 players per match.

How it was made:

The game was made in two days by me, one artist and one additional programmer. using Unity 2021 and Photon Fusion for networking.
The pitch for the game was “Space football with celestial objects using gravity to affect the ball”, which I correctly estimated would be doable for two experienced programmers.

This game’s main challenges were the tech and the game design.
The tech challenges were that we needed to make a functional multiplayer physics game and learn Photon Fusion as this is very different from older Photon systems I used in the past.
The game design challenges were creating a fun player controller for the spaceships and balancing how the ball and celestial objects interacted with one another using fake gravity.

I spent the first day of the game jam writing up a very simple design document, agreeing on task division with my coworkers, setting up git repo and implementing code for photon game lobby, networked rigidbodies, ball mechanics, UI and the teams system.

On the second day I managed to get in some basic gravity and faked celestial orbits using a synchronized float and then offsetting each orbiting object. I choose to create fake orbits because that way the map won’t change over time and the game will be more stable, predictable and have no chance of de-synchronization. I spent the last part of the day playtesting and tuning the forces of the ball, player controller and the gravity affecting the ball.

The last day I spent setting up better lighting and vfx alongside our artist then presenting the game.

Below is a gameplay video I made with one of my coworkers.