Contact me:
Morgan Goin
  • Home
  • Projects
    • Redfall
    • Mafia: Definitive Edition
    • Mafia 3: Sign of the Times
    • Mafia 3
  • Resume
  • About
  • Student Work
    • Solo Work >
      • Xen Monsters
      • The Sixteenth Accord of Madness
    • Team Games >
      • Identity
      • SteamDrunk
      • Zero & One

Xen Monsters

A mod for Half-Life 2: Episode 2
Picture

Level Overview

Development info
  • Role: Solo developer
  • Engine: Source SDK
  • Genre: 1st Person Turn-Based Pet Battle
  • Players: Single-player
  • Development time: ~124 hours, 2014
Level features
  • Level up a headcrab in a series of Pokemon-inspired battles
  • Experience and leveling system, not native to Source
  • Defense and attack status effects during battle
Level summary
“Xen Monsters” is a single player stand-alone level for Valve's Half-Life 2: Episode 2. The player takes control of Gordon Freeman as he discovers and masters a new technology brought to Earth by the Combine: the ability to capture and train species from the multiverse for battle. Freeman must train a tamed headcrab in the White Forest and use it to fight his way past the monsters of the other resistance trainers in a series of Pokemon-inspired, turn-based battles.

Design Goals

Learn a new engine quickly. I had four weeks to build a complex level with interesting gameplay in an engine I had never worked in before.

Improve my skills as a scripter. I deliberately chose some technically challenging mechanics to replicate in the Source engine.

Incorporate playtester feedback into the design. I knew this would be a project that might not easily convey all of the necessary information to new players, and implemented every piece of playtester feedback that I could. Sometimes this meant changing my design from something I saw as obvious initially.

Xen Monsters

Picture

Picture
Picture
Picture
Picture

Overview map

Picture

Post Mortem

What went right
  • Stretching myself. By choosing a gametype that I knew would be difficult (turn-based combat) I was able to expand the range of features I could mock up with a limited toolset.
  • Scope. Initially this project was much larger, including a bigger map and the ability to catch and train multiple Xen monsters. It remains a large project, but I learned the difference between crucial features and ancillary goals.
  • Problem solving level up! I ran into so many problems with this project, but I expanded my debugging skills by fixing them.
What went wrong
  • Scope. This project became way more work than it should have been. Even with many features on the cutting room floor, there remained a set of core interconnected systems that had to be created and debugged together or the entire project would not capture the essence of Pokemon-style gameplay I was looking for.
  • Scripting interconnected systems. If even one component failed, the entire level collapsed.
  • Conveyance.  In trying to replicate some of the complex systems of Pokemon-style turn-based combat, I had failed to also include the excellent tutorials that came with it.
What I learned
  • Underscope. Projects always expand once I get into them. It would be better to deliberately underscope, particularly with projects in engines I am unfamiliar with. There are only so many hours in the day, and hard work is not enough to compensate for large initial scope.
  • If a feature is not conveyed to the player, it is not done. I spent the majority of my time on very intricate systems, and the rest of the time setting up the battle arena conveyance.
  • Be willing to admit when something is out of reach. I spent the better part of the first week, that I could have spent prototyping, trying to figure out Source SDK's GUI code so that I could have truly interactive arena buttons on the screen. I overestimated my abilities and wasted time because of it. 

Scripting

Code entities for all arena battles
Groups of code entities, labeled by function.
Grub entities. All enemies have a similar set of commands.

Full Playthrough Video

Credits

"POKEMON- Route One" by MF-Greth

"Showdown (Pokemon Style)" by pokerockmario
Contact me: