Max Szlagor

Max Szlagor is a programmer who has worked on several Nintendo projects. He was the Enemy Programmer for Metroid Prime Hunters and detailed his work on a Google Site.

Website
 Project Highlights 


 * Metroid Prime Hunters Metacritic average - 85 Percent.
 * Metroid Prime Hunters is a first person shooter single player experience set in the Metroid universe with a robust online multiplayer mode on the Nintendo DS.
 * Metroid Prime Hunters: First Hunt is a demo of the full game that was packed in with the Nintendo DS during the initial hardware launch period. I was involved in both projects.
 * My primary focus was developing and iterating on boss and enemy AI, multiplayer UI, world objects, and tools design.

 Enemy AI Development and Design 

Boss Development and Design

Boss 1: Cretaphid and its 4 variations' I was responsible for developing, balancing, and exposing tuneables for the first boss. This boss encounter is placed 4 separate times in different levels of Metroid Prime Hunters, and I had to create the intial boss as well as each of the 3 variations.

The development and design process went like this:


 * First, the boss and its environment were rendered in concept drawings.
 * After the look had been decided, I was tasked with creating a fun battle that fit within the constraints of the concept drawings.
 * The primary design restriction was: the boss had to be a large cylindrical shape character that battled in a tall circular room. This boss is a sentry protecting a valuable artifact.

Cretaphid was set up as follows:
 * Cylinder shaped enemy consisting of 3 rotating segments that each contained 4 weak spots.
 * These weak spots could be toggled on and off at different points during the fight, and they are able to shoot any type of projectile.
 * In addition, the boss had special lasers that rotated up and down from the weak spots as the segments also rotated around.
 * Once the weak spots are destroyed, a shield atop the spire reveals a crystal enemy that proceeds to attack the player.
 * The crystal has its own health and projectiles, and fires shots until it retracts and the cylinder weak spots regenerate.
 * If the weak spots regenerate, the boss goes back to the same type of attacks it was using before.
 * On the other hand, if the crystal received enough damage, the spire would then go into a potentially different attack state.
 * As one example, it may use lasers for stage 1, homing plasma balls for stage 2, and quick firing projectiles for stage 3.


 * In addition, the spire could use an editable path node network to move around the room while attacking.
 * There were two other bosses created for single player and I assisted with building parts of each of those battles, although a different programmer was assigned to each one.




 * This boss features 3 independently rotating segments with red and blue targeting spots on its body.
 * The blue spots represent vulnerable points while the red ones are invincible and represent firing origins for its weapons.
 * In this first version, Cretaphid fires lasers that rotate along with its body as well as rotating up and down, making most of the room a dangerous place unless the player strafes.
 * Once all the weak spots have been destroyed, the top segment of Cretaphid opens up to reveal a crystal that fires projectiles at the player.
 * If this crystal takes enough damage, the boss advances to the next stage, where the weapons, weak spots, rotation, and possibly movement of the boss can change.
 * If the crystal does not take enough damage, it retracts and the boss resumes its previous attack pattern.


 * While this boss was constrained by the concepts for its shape and the room, when developing, tuning, and exposing properties that could be modified I kept everything as flexible as possible.
 * For example, each weak spot could potentially fire a different projectile, stages can change each weak spot individually, the crystal could fire different projectiles between stages, the rotation rates and direction could change, the angles of the lasers could be modified, etc.




 * Cretaphid version 2 uses a homing plasma ball attack instead of the laser attack and the weak spots are vulnerable less frequently.
 * Cretaphid version 3 uses a combination of laser attacks and plasma attacks that close in on the player but ultimately freeze in place, making the environment feel more cramped.
 * Cretaphid version 4 uses a combination of the lasers and the plasma attacks that stop. It also moves around the room, damaging the player if they come in contact with it.

Boss 2: Slench




 * I wrote the code for communicating between the attachment modules and the main body part of Slench.
 * Before players can attack Slench, they must weaken a series of modules attached to the wall, where Slench has tentacles entrenched.
 * Once all 3 modules are weakened, Slench opens up its pupil and flies around the room. During this time, the player can damage Slench.

Enemy AI

The enemies developed for Metroid Prime Hunters included both traditional franchise characters and all new monsters in addition to human-like hunter bots. I was responsible for nearly all of the monster enemies while a different programmer created the bots. As we branched out into designing newer monsters, I worked closely with the game director, single player designer, and animators to create enemies with several unique behaviors.

Psycho Bit




 * These enemies flew around in a variety of designer specified volumes and could be assigned arbitrary weapons and vulnerabilities.
 * These enemies acted as flying sentries. Once they detected the player was in range, they fired several shots before cruising off to a new position within its attack volume.
 * If the Psycho Bit is being shot by the player, they attempt to change positions more regularly and fire fewer shots before picking a new position to keep pressure on the player.

Geemer and Zoomer




 * These enemies traveled along a unique, somewhat unpredictable path that included the walls of each environment.
 * Further along in the adventure, the player faces off against a stronger cousin of the Geemer - the Zoomer.
 * Zoomers have a hard shell that is immune to most of the player weapons.
 * In addition, they have hidden spikes that come out when they are shot at by ineffective weapons or when the player gets too close.

Ithrak



Behavior
 * This enemy hangs from many of the dark corridors of the world. When the player gets within striking range, the Ithrak jumps down, lets out a cry, and chases the player.
 * The Ithrak switches between two types of attacks depending on range.
 * If the player is further away, it will attempt to lunge.
 * If the player is nearby, it will close in for a melee attack.


 * In addition, the Ithrak has a very thick skin on most of its body, with its main weakness being a small spot on the end of its tail.
 * One of the strategies a player can engage in is luring the Ithrak into lunge range, then dodging out of the way, letting it slip and fall, then attacking the weak spot on its tail while it recovers.

Design This enemy was one of the new monsters introduced in Metroid Prime Hunters and went through a fair amount of iteration.
 * Specifically, I worked closely with the animator to tighten up the number of frames of animation used to begin the melee attack and the duration of the lunge.
 * I tuned the animation counts locally on my machine until I got to a point where the movement and duration felt solid, then I went back to the animator to see how we could make the animation work within that time window.
 * Another change involved the way the Ithrak responded when the player went out of range.
 * Initially, the Ithrak returned to its perch when the player attempted to run away.
 * After playtesting this idea a bit, many people felt that it looked silly and that the Ithrak was hard to keep track of, due to its dark color which was necessary for the initial surprise drop.
 * When I removed this feature, I changed its behavior so that the Ithrak would return to a territory that it patrolled, and then modified it to regularly turn to face the player and taunt them when they stood far away.

Alimbic Statue
 * This is a slow moving enemy that can only be damaged on a spot underneath its body.
 * When the player gets close to the statue, it will headbutt them.
 * When the player gets far enough away, the statue will launch itself in the air and attempt to launch itself on top of the player.
 * During the time the enemy is in the air, the weak spot can be damaged, but the player must move quickly so they do not get stomped by the Alimbic Statue.
 * For this enemy, getting the timing of the jump, hover, and smash behaviors feeling good was the primary design and programming challenge.

World Objects

In addition to enemies, I created several world objects such as jump pads, gravity volumes, damage volumes, and elevators. Because of our flexible world editor format, these objects all had a number of editable properties that allowed them to be combined in interesting ways in both single and multiplayer levels.



Examples of world objects I created:
 * A gravity volume that serves as a lift. Gravity volumes could be used for morph ball wind tunnels and project velocity in different directions.
 * A damage volume for lava and other hazards. Damage volumes allowed for different damage types and allowed for instantaneous damage or damage over time, or a combination of the two.
 * A series of jump pads for the single player experience that send the player flying at a specific angle. The jump pads had several settings for their strength and direction of impulse.
 * A flexible set of elevator platforms. Each of these objects was easy to modify via the world editor.  The elevator lifts had properties to specify path node order and type, activation time, rotation along the path, and velocity, among other attributes. One of the single player rooms used the lifts as a makeshift bridge that started out rotated on its side and required the player to press a switch and scale a wall before the bridge returned to its inactive state.

Online Multiplayer UI Development and Design

Metroid Prime Hunters was one of the first 3 games to use the Nintendo DS Wi-Fi service, and as a result, much of the multiplayer UI had to be created from scratch.


 * Metroid Prime Hunters features a robust online lobby that stands above and beyond most games on the Nintendo Wi-Fi service.
 * There is quickplay matchmaking, a directory to store friends and rivals, lobby voice chat, a reward and level based advancement system, a player stats profile, and a number of ways to customize map options and game types.
 * In addition, several of the maps and characters are unlockable, which means that the system has to be versatile enough to account for players with different unlocked features to play with each other.

Hunter's License




 * This is the central player stats reporting and progress tool.
 * Players also have the ability to view the Hunter's License of all players that they add to their Friends and Rivals list.
 * I worked with the UI artist and a design coordinator to define and implement the layout and functionality of this multiplayer component.
 * One of the design constraints we encountered included narrowing down the stats we wanted to track to a manageable number that fit on the low resolution screen in six different languages.
 * We also had to find additional graphic ways to represent progress rather than text.
 * Some of these graphical touches included the changing Samus icon in the upper left corner, the favorite character portrait on the right, and the star rating system depicted at the top of the card.
 * There is also another icon spot available in the upper right corner for demonstrating significant single player achievements and a progress counter on the bottom of the card indicating the requirements for the next achievement level.

Friends and Rivals Registry




 * This is the player directory that allows you to track who you have played, their stats, when you last played them, which people you can voice chat with, and what their online status is.
 * This was another piece of the online front end that I implemented and developed with the UI artist.
 * Some of the design goals included allowing both controller and touch based input for as many menus as possible, providing a convenient way to manage the friend codes used by the Nintendo WiFi service, and creating quick and elegant transitions between a large number of menus.

Design and development of world editor

My passion for great tools and experience on previous projects led me to be proactive about how the team would approach our world development tools.
 * The goal was to make a tool set that was accessible to all members of the team, including those who were not very familiar with 3d software packages or editors.
 * Initially, I explored the option of using Maya as a world editor.
 * Once I evaluated the APIs and the import/export process, I pushed for a proprietary solution instead because I thought it could be done faster and provide an easier to use interface.


 * Using the .NET framework I was able to build an early version of geometry importing and object modification in short order.
 * From there, I worked with artists, designers, the lead engine programmer and the lead tools programmer to define file formats, interface, and features.
 * I maintained the technical and help documentation for the world editor throughout the project and kept myself in a feedback loop with the lead tools engineer and designers to make sure that the editor continuously improved and evolved to suit the needs of the project.