Hi! I'm Maiko Steeman, a Game Programmer.
Looking for an internship starting September 2020.

I am specialized in C++ Backend Systems.
And would like to become an Engine Programmer.

Portfolio

I work mostly in C++ and C#. But I am also proficient in Rust, Python, Lua and Javascript.

Games

Reptoads

Engine: Custom (Tomorrow Engine)

This project was a 16 week long project where we made a networked card game engine in a team.

C++ HLSL PSSL Lua
Windows Playstation 4

VR Tower

Engine: Unity

This VR game was made in a big team throughout a year.

C# Unity ShaderLab
Windows SteamVR Oculus VR


Libraries

Here will be smaller, but high quality libraries I made. Mostly in C++.

FlatValueMap<EntityHandle, Entity> entities{};

auto dogHandle = entities.push_back(Entity{ "Dog", {"Animal", "Good boi"} });
auto catHandle = entities.push_back(Entity{ "Cat", {"Animal", "Lazy"} });

// O(1) iteration speed because the entities are stored in a vector.
for (Entity& entity : entities) {
  if (entity == Entity{ "Cat", {"Animal", "Lazy"} }) {
      std::cout << "I know this one!\n";
  } else {
      std::cout << "Unknown entity detected! named: " << entity.name << \n';
  }
}

// Lookup times are constant (on average) because the handles are stored next to the indices in an hash map
Entity& dog = entities[dogHandle];
std::cout << "I'm going to play fetch with: " << dog.name << '\n';

entities.erase(dogHandle);
assert(entities.size() == 1);
entities.erase(catHandle);
assert(entities.empty());

FlatValueMap

This library implements a map like structure, where all the values are still stored contiguously.

using IntDoubleEvent = EventDef<int, double>;

GenericEventSystem eventSystem{};

StructWithIntDouble handler{};
{
  auto memFuncHandle = 
      eventSystem.RegisterMemberFunction<TestEvent>(
          &handler, &StructWithIntDouble::PrintCallback);

  auto freeFuncHandle = 
      eventSystem.Register<TestEvent>(&FreeFunctionCallback);
  
  eventSystem.FireEvent<IntDoubleEvent>(105, 4.2);
}
// func handles will automatically unregister themselves. thus making the next event not handled by any callback:
eventSystem.FireEvent<IntDoubleEvent>(-11, 1.1);

// callbacks can also be manually unregistered by calling `Unregister` like this:
auto funcHandle2 = 
  eventSystem.Register<IntDoubleEvent>(&TestFuncTest);
eventSystem.FireEvent<IntDoubleEvent>(20, 20.1);
eventSystem.Unregister(funcHandle2->Id());

Generic Event System

An Event system which holds all the event handlers and invocations in one place.

Skills

Languages:

C++

4 years

C++

C#

5 years

C#

Rust

2 years

Rust

HLSL

1 year

HLSL

GLSL

1 year

GLSL

Python

1 year

Python

Lua

1 year

Lua

Engines / Frameworks:

Unreal Engine 4

2 years

Unreal Engine 4

Unity

3 years

Unity

Custom Engine

4 months

Custom Engine

Tools:

Perforce

1 year

Perforce

Git

1 year

Git

Jira

1 year

Jira

Trello

1 year

Trello

Visual Studio

1 year

Visual Studio

PS4 Tools

4 months

PS4 Tools

Platforms:

Windows

10 year

Windows

Playstation 4

4 months

Playstation 4

Raspberry pi

2 months

Raspberry pi

Projects

Here are my projects in more detail.

Reptoads

This project was a 16 week long project where we made a networked card game engine in a team.

VR Tower

This VR game was made in a big team throughout a year.

FlatValueMap

This library implements a map like structure, where all the values are still stored contiguously.

Generic Event System

An Event system which holds all the event handlers and invocations in one place.

This project was designed with ease of use and least complexity in mind. The meta template code is kept to a minumum and value semantics are used in favor of compile time recursion to aid in maintainability.

About Me

I am a game programmer who likes to build engines. And other cool tech.