Rafael Hedman, Game Programmer

// Infusing things with spirit
rafael@rafael.se
+46 73 397 92 58
CV
LinkedIn
GitHub

Released Games

{
Undead Inc. {

A high-risk, high-reward, real-time resource management simulator; Rightsized Games' debut title.


Being aboard on the two-year adventure of creating this game from beginning to end, is to date by far the most invigorating time of my professional life. Doing the initial technical design of the map creation system together with a like-minded programmer was a joy. We divided the work into architecture and construction, where the architect's job was to produce a detailed plan for the constructor to follow. I shouldered the architect, where procedural generation of maps for the game's career mode became the majority of the work. Starting in 3D, I found myself going backwards to 2D and finally realizing it was a 1D problem, where the essential work was done. Conceiving and giving birth to that algorithm for producing a map layout according to the input criteria, especially connecting underground compartments with navigation buildings, was a feat I'm really proud of. A set dressing system was also memorable. Other than that I did some camera controls, visual effects, post-processing, prototyping of policies and events.


Techniques: C++, Unreal Engine 4.27
Platform:   Windows
Team size:  ~15 – 20
Time:       2022 – 2024; 2 years, 1 month
Developer:  Rightsized Games
Publisher:  Team17
Stores:     Steam, Epic Games Store

}

Candy Crush Friends Saga {

King's latest addition to the Candy Crush franchise. A more attractive and accessible game, bringing the characters to life with revamped 3D graphics and animations, and introducing more social gaming than the other titles.


I had the privilege of working on this flagship game during the final stages, and attending its worldwide launch. Worth mentioning among the things I contributed to is the introductory tutorial with Mr. Toffee, shown when playing level 1 for the first time. I also accomplished the effect on the character charge meter when collecting your assisting character's favorite candy. I realized the similar effect on the move counter when reaching five remaining moves, and reworked the triggering of changes in character animation and music. I implemented the large animated Raspberry Twister Cake blocker, and also prototyped a new blocker concept. I was the contact point for the audio team, caring for the game's music and sound effects. I brought about A/B tests for a number of features.


Techniques: C++, Fiction Factory
Platforms:  iOS, Android, Windows
Time:       2018; 6 months
Team size:  ~50
Developer:  King
Demos:      Intro tutorial, Favorite candy, Few moves left, Raspberry Twister Cake
Stores:     App Store, Google Play, Microsoft, Amazon

}

Slot games {

Development of the game clients for the titles Cygnus, Micro Knights, Io, Nitropolis; taking them from pre-production to release, usually as the 1 of around 1.5 programmers, in small teams of about 5 people. Very close dialog with art directors, artists and animators. The work revolved around constructing and composing timelines of 2D-animations, exported from AfterEffects using custom sequencing technology.


Techniques: JavaScript, PixiJS, Make
Platforms:  Web browser (Canvas, WebGL)
Time:       2018; 6 months
Team size:  ~20
Developer:  ELK Studios
Game pages: Cygnus, Micro Knights, Io, Nitropolis

}
}

Explorations & Exercises

{
Krull {

Ever-ongoing procedural animation experiment.


When studying game programming I played around with a self-drawing line, randomly scribbling curly drawings I found best described by the Swedish word "krull". The first version was a simple two-dimensional red line making preprocessed drawings using C++ and DirectX. Some years later I remembered and picked it up again during a quiet moment. This time I made it move around in three dimensions, having a camera follow the growing end of the line in real-time, using ActionScript, Flash and a bit of homemade 3D projection. A couple of years after that, I was working in Unity and took some spare time to make the line itself three-dimensional, procedurally generating a growing tubular mesh with varying thickness, and sophisticating the curling motions. Over a decade later, I decided to recreate it as a programming test in Unreal and finally gave the beholder control of the motion via mouse input. I really like the concept, so simple yet quite mesmerizing, and love to keep exploring it. If it's one thing of all I've programmed I like the most, it's this. The next step is to make a game out of it, and the idea for it finally came to me the other night. Hopefully it will be out before the end of life.


Techniques: C++, C#, ActionScript, Unreal Engine, Unity, DirectX, Flash
Platforms:  Windows, web browser
Time:       2003, 2007, 2009, 2022, 2026; 1 month
Team size:  1
Demo:       Krull

}

Boids Performance {

Flocking behavior performance experiment for the purpose of learning the Entity–Component–System and Data-Oriented Design.


Techniques: C#, Unity DOTS, ECS
Time:       2024; 1 week
Team size:  1
GitHub:     boids-performance-improvement

}

Tower of Hanoi {

Physically animated toy implementing the legendary puzzle Tower of Hanoi with four discs.


Techniques: C#, Unity
Time:       2019; 2 weeks
Team size:  1
Demo:       Tower of Hanoi
GitHub:     tower-of-hanoi

}

N-body Simulation {

Physical simulation of many mutually gravitating colliding shapes in 2D. Optimization exercise focusing on spatial partitioning, collision detection and performance. Diving into molecular dynamics, trying out various approaches like the Verlet neighbor list.


Techniques: C++
Time:       2019; 3 weeks
Team size:  1
GitHub:     n-body-simulation

}

Pathfinder {

A* search algorithm implementation with focus on code quality, performance, thread safety and error handling.


Techniques: C++
Time:       2024; 1 week
Team size:  1
GitHub:     pathfinder

}

TGA Resampler {

Command line tool for scaling and resampling Truevision TGA images. Diving into image resampling and signal processing. First and foremost an exercise in writing clean code that's easy to read and understand, using modern pure C++.


Techniques: C++
Time:       2021; 2 weeks
Team size:  1
GitHub:     tga-image-resampler

}

Board Game Quiz {

Simple tile-based board game with question cards on certain tiles. An exercise in separating game logic and presentation. Focused on creating a pure game logic, independent of everything in Unity scenes or game objects. The complete game state at any point is defined by a data structure. The game logic is updated with a pure deterministic function, taking a game state as input and returning an updated game state as output. A complete chronological history of states is kept, allowing skipping back and forth like on a timeline. An invalid game state is simply recreated by inputting the preceding valid game state, all in order to facilitate debugging. Saving and loading at any time is easily done as well. The game logic hands a state to the game presentation which then handles placement and animation of player pieces, quiz screens and everything concerning the visual representation accordingly.


Techniques: C#, Unity
Time:       2025; 1 week
Team size:  1
GitHub:     board-game-quiz

}

Asteroids {

Exercise writing a simple game prototype, focusing on readability, clarity, SOLID principles and testability.


Techniques: C#, Unity
Time:       2021; 2 weeks
Team size:  1
GitHub:     asteroids

}

Match 3 Demo {

Interactive 3D match 3 game demo with physically animated bouncing motions.


Techniques: C#, Unity
Time:       2019; 2 weeks
Team size:  1
GitHub:     match-3-demo

}

Match 3 Puzzle {

Playable 2D match 3 game prototype with physically animated bouncing motions.


Techniques: C++, SDL
Platform:   Windows
Time:       2018; 5 weeks
Team size:  1
GitHub:     match-3-puzzle

}

Pac-Man {

Exercise in optimization.


Techniques: C++, SDL
Platform:   Windows
Time:       2018; 2 weeks
Team size:  1
GitHub:     pac-man

}

Soft Wheels {

Soft-body simulation of a minimal drivable car chassis.


Techniques: C++, DirectX
Platform:   Windows
Time:       2004
Team size:  1
School:     PowerHouse
GitHub:     soft-wheels

}

Quantum Ocean {

Procedural voxel generation and animation forming an infinite surging ocean.


Techniques: C++, DirectX
Platform:   Windows
Time:       2003
Team size:  1
School:     PowerHouse
GitHub:     quantum-ocean

}

Ray Tracer {

Recursive ray tracing of colored spheres reflecting one another.


Techniques: C++, DirectX
Platform:   Windows
Time:       2003
Team size:  1
School:     PowerHouse
GitHub:     ray-tracer

}

Coin Shower {

Procedural animation of cascading coins in mimicked 3D.


Techniques: JavaScript, PixiJS
Platform:   Web browser
Time:       2019; 2 days
Team size:  1
Demo:       Coin Shower
GitHub:     coin-shower

}
}

Prototypes

{
Space Invaders 2000 {

With my mathematics fresh from university, I constructed 3D projections by programmatically manipulating vertices and colors of polygonal shapes and lines in real-time, using Lingo in Director. This was a couple of years before the 3D support that came with Director 8.5. I used this to create an interpretation of the classic game Space Invaders. It began with a magnificent narrative intro with programmed 3D animations and humoristic twists. Then the game started, with flocks of space invaders twirling around in various formations, and a turning animated cannon to blast them with.


It was a complete solo project.


Techniques: Lingo, Director
Platform:   Web browser
Time:       1999; 3 months
Team size:  1
School:     Capital School of Multimedia

}

Integrationstestet {

I got the artistic freedom to create an educational quiz game about integration and Swedish integration policy. I designed it as a board game with a traffic theme, including a 3D animated traffic light indication whether your answer was correct.


I did concept, game design, graphic design, animation and development.


Techniques: ActionScript, Flash, 3ds Max, Illustrator, Photoshop
Platform:   Web browser
Time:       2004 – 2005
Team size:  1
Client:     Integrationsverket
Demo:       Integrationstestet

}

Stardust {

Web-based 3D community, with innovative visualizations of friends, contacts and interactions.


Starting in your own space, you saw your contacts surrounding you as avatars on the inside surface of a sphere, with tubes leading outwards from each one. Selecting a person would take you into the timeline tunnel of interactions with that person, with symbols for emails, messages and calls that you could revisit. Reaching the end of the tunnel would bring you into that person's space, from where you could move on in the same way, making your way through the network. There was also a view where you could see the entire network from the outside, looking like a galaxy of spiky plates and connections in-between.


I developed the timeline tunnel view, and did some graphic design.


Techniques: C#, Unity, Illustrator, Photoshop
Time:       2009; 3 months
Team size:  ~6
Developer:  Modesty
Client:     Vodafone
GitHub:     stardust-tunnel

}

Baby Diary {

We created a mobile app, where you could follow the baby's development week by week, viewing it as a 3D model in a lifelike surrounding, and reading what happens during that time. You saw the baby floating around, slightly turning according to how you held the phone in your hand. With one finger you controlled your point of view, to see the baby from different angles. Putting two fingers on the screen would pull out a measuring tape between them, to check different parts of the baby with, getting an idea of its actual size. There was also a list for entering your name suggestions, and a notebook for keeping a diary.


I did all the development, and some graphics.


Techniques: C#, Unity, Photoshop
Time:       2010; 3 months
Team size:  2
Developer:  Modesty
GitHub:     baby-diary

}

PolyPets {

Children's mobile 3D game, where you connected dots to form different animals coming alive.


I produced the music and sound effects.


Techniques: Reason, Audacity
Time:       2009
Team size:  3
Developer:  Modesty

}
}

Web Games & Interactive Campaigns

{
SBAB Football Challenge {

I was given free hands to create a game where you as a football player were to make tricks with a ball, bouncing it on your feet, knees, shoulders, chest and head. I made the player character in 3D, assembled of textured polygons, programmatically manipulated in Director. Seen from a limitation of angles it looked quite good. This was before the 3D support that came later.


I did design, artwork and development, single-handedly.


Techniques: Lingo, Director, Photoshop
Platform:   Web browser
Time:       2001; 1 month
Team size:  1
Developer:  Starlet Deluxe
Client:     SBAB

}

Do you have what it takes to become a popstar? {

In this campaign for Popwire, we made a music sequencer and a drum machine, in the shape of web banners, with which you could compose your own tunes and beats. By submitting your creation you entered a contest, and were brought to a site with the works of all participants to listen to, and vote for if I remember correctly.


I developed the banners single-handedly, and did the sound design, as my code test for the job at Starlet Deluxe actually.


Techniques: Lingo, Director
Platform:   Web browser
Time:       2000; 2 weeks
Team size:  3
Developer:  Starlet Deluxe
Client:     Popwire
Awards:     Golden Egg, The Golden Egg Awards 2000; Bronze, Clio Awards, 2001

}

Info Panic {

We made a game about stress at work. Alone in the office, you were to answer calls on a fixed and a mobile, check incoming emails on the computer, and answer to messages on a PDA, and open the door for bike messengers knocking on it. With increasing speed and hand sweat it became harder and harder to react to all alerts in time. When having missed 3 alerts the game was over.


I did artwork for the prototype, developed the game, did the sound effects, wrote the rules and instructions.


Techniques: ActionScript, Flash
Platform:   Web browser
Time:       2001; 1 month
Team size:  2
Developer:  Starlet Deluxe
Client:     Telia

}

Emfas Business Quake Banner {

We created a small game in web banner format for Emfas, the predecessor to Eniro. You moved around inside a 3D office space, in first person view with your hands in front of you, trying to get a hold of business people. When having caught someone by their shoulders they said things like "You're the Emfas man right? Who gathers all the businesses." The 3D background effect was achieved by programmatically manipulating textured polygons in Director, before the 3D support that came later.


I developed the game, and did the sound effects.


Techniques: Lingo, Director
Platform:   Web browser
Time:       2000; 1 month
Team size:  2
Developer:  Starlet Deluxe
Client:     Emfas
Award:      Diploma, The Golden Egg Awards 2000

}

Diesel Genes of Sweden {

We did a campaign for Diesel, asking people ?What?s in your genes?, inviting them to design a personal pair of jeans. In a web-based editor we provided them with tools to be creative. You could spray paint, causing drips and everything when concentrating much paint in the same place. You could also splash paint around in different manners, dragging the mouse with various velocity and direction. There was a sewing machine for making zig-zag seams, with varying magnitude and thickness decided by the mouse movements.


I contributed to the concept and developed the creative tools, among other things.


Techniques: ActionScript, Flash
Platform:   Web browser
Time:       2009; 3 months
Team size:  6
Developer:  AD&D
Client:     Diesel
Awards:     Finalist, New York Festivals 2009; FWA of the Day, FWA, 2008
Demo:       Diesel Genes of Sweden

}

Car Wash {

This was a game challenging you to wash off all dirt from a car with a water hose as fast as possible. I put effort into creating a realistic 3D water beam, consisting of many small particles.


I developed the game and did graphics for the water.


Techniques: ActionScript, Flash
Platform:   Web browser
Time:       2008; 1 month
Team size:  2
Developer:  AD&D
Client:     Avis

}

AXA Pasta {

3D web application where you could explore AXA's different pasta products. Having selected a product, you got that package to play with, spin around and look at from any angle. Then you could click on a side to look closer at and read the fine print, like ingredients and nutritional value for example.


I contributed to the concept, and did all the development.


Techniques: ActionScript, Papervision3D, Flash
Platform:   Web browser
Time:       2009; 2 months
Team size:  2
Developer:  AD&D
Client:     Lantmännen
Press:      AXA Pasta

}

KP Skrubben {

I was asked to create a dollhouse-like playground, as the main feature for the younger visitors of Kamratposten's website. I made a dynamic house structure that children could extend with new rooms in available directions. You created a room of your own, decorated it and added things to play with, like a football to bounce for example. The room was saved the way you created it. Everyone could explore each other's rooms and play in them.


I did design, illustrations, graphics and development.


Techniques: ActionScript, Flash, Illustrator, Photoshop
Platform:   Web browser
Time:       2009; 2 months
Team size:  2
Developer:  Modesty
Client:     Bonnier Tidskrifter
GitHub:     kp-skrubben

}
}