section c

It is especially important to communicate enemy spawns to players so that they are able to tactically plan around them.  This section of Kismet visually communicates the state a Summoner is in: the casting or recharge state.  If the Summoner is in the casting state, magic particles surround each living Summoner.  If the Summoner is in the recharge state, these particles are toggled off.

section b

Once the script has confirmed that a Summoner is still alive and is ready to summon an enemy, it proceeds to this section of Kismet.  Here, it randomly chooses to summon either a melee or ranged unit.  Here is where it gets tricky, because UDK's spawn system assumes that there is not a pawn standing on the path node that the enemy is scripted to spawn.  If there is, the game will display error messages.  This section of script uses trigger volumes to detect if there is a pawn standing on the spawn point and sets a variable accordingly.  If there is a pawn standing on the spawn point, the variable will toggle and the enemy will spawn in a different nearby location that is not already inhabited.

Additionally, this section uses a camera scene to communicate to the player that enemies are being spawned at a particular location.

section  a                              section  b                               section  c               

section a

This section of Kismet checks whether or not an enemy is being summoned on that turn so that it can perform the correct actions for that turn.  Summoners spawn enemies every two turns, and so the game must know whether the Summoner is in the casting or recharge state, which is the purpose of this part of the script.  It must also know if that Summoner is alive or dead, as well as how many Summoners remain, since dead Summoners cannot summon enemies and each Summoner behaves differently based on how many Summoners remain alive.


design goals

  • Create a turn-based tactics game that features unique and balanced characters and abilities
  • Develop an ability system that allows for strong synergy between characters to create build diversity
  • Design interesting gameplay encounters that are original to each level
  • Build immersive levels using visuals, sound, dialogue, and story to convey the feeling of journeying through a mythological Norse environment


Midgard Saga is a 3D turn-based tactics game developed in UDK, consisting of five visually unique levels. The player controls four Viking characters as they journey from the snowy realm of Midgard, up the colossal tree of Yggdrasil, and finally to the spectacular gates of Asgard, while fighting off hordes of bandits, ghostly beings, and other dangerous foes.  Each character has access to a unique set of abilities that the player may choose from to customize their party and suit their own preferred strategy and play styles.


  • Created balance charts in Microsoft Excel for balancing units and abilities
  • Gameplay design for levels 2 and 4
  • Gameplay scripting for levels 2 and 4 with Kismet
  • Designed systems and abilities through paper-prototyping
  • Balanced units and abilities
  • Balanced AI encounters in levels 2 and 4 to ensure a balanced difficulty curve between levels
  • Acquired, modified, and implemented many sound effects for the game

development info

  • Role:  Level/Systems Designer
  • Game:  Midgard Saga
  • Genre:  Tactics
  • Development Time:  6 months
  • Team Size:  15
  • Engine:  UDK

click image to


excel sheet

Roskilde (summoners)


Balancing a tactics game with dozens of abilities can be quite a task.  For Midgard Saga, developing a balance sheet in Microsoft Excel helped with the balancing process.  Each cell is color-coded to show the relative power of each offensive ability's effectiveness against each enemy type, listing how many hits it takes to kill that enemy with a specific ability.  It also takes the same abilities and combines them with different possible buff combinations. Click on the picture below to view the full balance sheet.

Red = Weak

Yellow = Medium

Green = Strong

(AB) = Attack Buff

(BL) = Bloodlust

(max) = All possible buffs for that character


Below are a few of the Kismet segments required to make the Summoners in the "Roskilde" level work correctly.  It utilizes custom Kismet nodes that our programmers provided to us as well, such as the "Beginning of Enemy Turn" event.