Polarity Shift

Polarity Shift is a co-op platformer featuring two golems exploring the ruins of an ancient civilization. The players traverse this dark and atmospherical environment together by using their powers of attraction and repulsion interacting with objects in their environment and each other.

There is no correct way to make it through the level but instead left up to the players to use the environment and their abilities as they want to find the solution that fits them.

1 / 4
Explore a forgotten cave..
2 / 4
..together with a friend
3 / 4
Make your way through together..
4 / 4
..and solve puzzles YOUR way

Level Design
  • Taking the level from conceptual idea to finished product.
  • Building the level up from whiteboxing to finished product through several iterations. Puzzle design.
  • Collaborated on the lighting and set dressing with the artists.

  • Scripting and Gameplay
  • Level functionality like doors and checkpoints in blueprints.
  • Worked with the programmers iterating on the attraction/repulsion mechanics and player controls.

  • Audio - Editing, Mastering and Implementing all Audio via blueprints.

    General - Technical support for any issues with Version Control and Unreal Engine. Performance fixes. Brought cookies.

    Polarity Shift is all about finding the solutions that fits you and your friend best. Use your abilities to experiment and find your own solutions.


    Will you do the obvious?.


    ..or find a solution that fit you better?


    There is no correct solution!

    Work together to make your way through the game...


    Extend your range together with your co-op partner to reach hard to reach spheres.

    Help your partner by lifting him up

    Trust your co-op partner to catch you when you fall...!

    ...or throw him off a cliff when he gets too annoying.

    The blueprint part of the checkpoint system, containing the animation, vfx and audio triggers. Also every part of the level containing a puzzle is located in its own sublevel and is reloaded via the Reset Puzzle Event.
    The checkpoint in action (audio).

    Simple blueprint for snapping the box to the switch and playing animations/vfx/audio and then informing the door what to do depending on if the door is already open or not.

    The Door blueprint, checking wether we have activated enough switches to trigger the door opening and cues for animation/vfx/audio.
    The door in action (audio).

    All the audio was set up with simple sound cues having a couple of different sounds blended together and mixed at random pitches and volumes to attempt to avoid repeating any one sound too much.

    Polarity Shift was my second game project at Future Games and we went into it with the theme being "Emergent Gameplay". Meaning we needed to design something relatively simple that can be used in many different ways. Initially the project was meant to be done with 12 developers but we lost one permanently the first week and then the entire project was plagued by illness and we were missing 3-6 people every day which led to some additional stress and needing to scale down our scope mid-project.

    I had not worked with any of the people in my team at the start of the project and we spent the first day getting to know each other a little bit trying to figure out what skill sets we have, what type of game we would like to make etc.

    The entire first week of the project we dedicated to pre-production, discussing, trying to include everybody in the team in the discussion when finding our game concept. Creating moodboards finding our visual style. By the end of the week we had a clear idea for what we wanted to make within the scope of the project and a minor prototype was made.

    During the first week I helped setting up Unreal, version control and all the practical parts of setting up the project inside the engine. Creating a folder structure, naming conventions, set up level streaming and started on a GDD.

    The second week was the big production week. We improved on our prototype and added the beam mechanic as it added a whole other dimension to what the players can do.

    During this week I made most of the level design that was going to be used in the final version of the game. Spent much time on tweaking the core mechanics together with the programmers, testing everything looking for bugs attempting to make sure our core mechanic is as polished as possible.

    At the start of the third week I realized I spent too much time trying to keep the GDD up to speed. It became an impossible task to keep it up to date due to the nature of the rapid development and it quickly became unreliable and can't be used as a reference for the team.

    I finalized the level design so the 3D artists could start dressing the level and shifted my focus to polishing the mechanics and cleaning up some blueprints improving the code.

    We had a big hiccup in the middle of the week as our programmers decided to refactor the code for the player character in order to make the code more readable and easier to bugfix but forgot to branch the project. So for the next ~5 days the latest version of the project did not work. I was still sitting on an older version and decided not to update before they were done so I could still do playtesting and iterate on the level and do set dressing.

    At this point we had the worst luck with illness and had half the team missing for a part of the final weeks.

    I felt that the final week would become stressful for those of us who were healthy so I spent my sunday created a sprint document for the final week detailing our focus for the week. What to prioritize, what can be cut if we don't have time, what parts of the game needs some additional polish and how to achieve it with audio, vfx etc. More than what made it into the game in the end.

    The week for me started with getting all of the audio into the game. So I spent some time going through my sound library and searching through some online libraries looking for the audio I wanted. Once I found one I brought it into Audacity, cut it if needed, made multiple versions of the same audio with some variations and normalized them. By wednesday I had everything implemented in the engine with sound cues hooked up to events in blueprints and shifted my focus entirely to polish.

    For the level design, I didn't want to change much this late so I only did very minor changes, fixing spots where the player could get stuck and adding some visual queues for where the edges are to make it more clear where you need to jump. I also spent time doing set dressing adding additional detail, replacing the final placeholders. I took responsibility to find the best light bake settings and doing the final light build the night before our deadline.

    Thursday, the final day of the project we set a deadline for 18:00 sharp and we got done with everything we really needed to do in time. I spent some time doing a little bit of extra work, adding an end screen, an ambient wind sound effect and not making any changes that could potentially break the game this late. I made several different builds of the game testing the game as much as I could to find any bug or issue that could show up for our pitch & presentation the next day.

  • The first 2D game I have worked on. Got to do some research on designing for 2D.
  • Creating levels in 2D, for platforming and puzzles.
  • My first co-op game, learned a lot about design for co-op.
  • I improved my communication skills, being more vocal with how I would like to do things.
  • I learned first hand why you should branch your project when doing big changes to the code.
  • Keeping a project in scope even when losing members of the team unexpectedly.
  • Adapting to multiple team members becoming sick. Making sure anyone can access and pick up and continue on that persons work if needed.
  • Working in a team with programmers coding C++ for the first time. Learned a lot about how programmers work on games, how they work together with designers and roughly what types of tasks the programmer could be expected to perform.

  • BACK TO TOP!