Meadgard



Intro

Worked as a Game Programming Intern
2026 January - 2026 June

What I worked on:

  • Events
  • Abilities
  • Menues
  • Input rebinding
  • NPC behaviour
  • And more…

During my last 6 months as a student at Yrgo I got the opportunity to do an internship at Oddiko. They have an office in Gothenburg and I’m very grateful that I got to know and work with these great people! They are currently working on their first game, Meadgard, releasing late 2026! During my time there I worked on several new and existing features.
Due to NDA I’m not allowed to post any code samples at the moment.


Trailer


My work

Below is a selection of the systems and features I developed for Meadgard during my internship at Oddiko.

Skvader Enemy Behaviour


Above: The node canvas section I set up for the Skvader’s attack pattern.

I was given the chance to implement a completely new enemy. Oddiko uses a plugin called Node Canvas for configuring most NPC behaviours. Creating my own enemy I got the chance to learn the ins and outs of Node Canvas. In Meadgard most enemies follow the same base for their behaviours,with the exception of attack and ability patterns.

Description of photo The Skvader will start in a grounded state, performing 4 sporadic leap attacks towards players. It will then take off into the air, switching it's attack pattern to ranged AOE missiles and becoming invulnerable. After performing 3 ranged attacks it will charge down aiming at one of the players, causing a large AOE attack when it hits the ground. After hitting the ground it will be vulnerable again and stunned for a short time, creating an attack window for players.

To switch between a flying and grounded state I created a “swap weapon” task for Node Canvas. Calling the “swap weapon” task the Skvader will switch between walking and flying animations since the animations used for movement can be overriden by the equipped weapon. It will also gain access to different attacks based on the equipped weapon. From there it was just a matter of setting up the rest in Node Canvas, ensuring the correct sequence.

Exploration Events


Freyja
Description of photo

As one of my first tasks I got to make a musical challenge for the god Freyja. During the challenge the players will have to hit the corresponding input in beat with the music being played. As it was one of my first tasks I had a to familiarize myself with a lot of the existing systems; interaction, music playback, inputs and multiplayer functionality. I’m happy that I got to utilize existing functionality while also building new logic for the minigame and wherever it was necesarry.



Thor
Description of photo

A few months into the internship I got to make another challenge, this one is a PVP challenge where the last player standing wins a goat. Making this challenge I had to familiarize myself with the ability system, utilizing it to make the lightning strikes seen to the left. The most interesting aspect of this task was implementing a PVP mode. Since Meadgard’s combat system used a static faction system I couldn’t add or remove enemy factions at runtime. Expanding the system to allow for temporary factions came with a few challenges. But rewriting some logic I was able to ensure all relevant scripts where had the correct enemy faction data. But when I enabled players to attack their own faction another issue revealed itself: ranged weapons would sometimes trigger on yourself. To resolve this some extra safeguards where in the hit detection functionality, ensuring you could never hit yourself.