top of page
  • LinkedIn
  • GitHub
  • Twitter
  • Instagram
Saleblazers is an online multiplayer shopkeeping survival game where players can build and maintain their shop while surviving in a dangerous open world.
Position: Gameplay Design Intern and Contractor

Saleblazers

Airstrafe Interactive LLC
Made with Unity
  • Designed, implemented, optimized, and polished multiple important features including Tech Trees for player progression, designed and balanced combat mechanics, polished fishing and lockpicking minigame, and created points of interest for level design.

  • Designed, implemented, and iterated a Fear System to make game characters react dynamically to players and the world using Behavior Trees and scripting tools.

  • Planned, placed, and balanced Kazai CastleCombat Encounters.

  • Created dialogue trees, scripted sequences with Lua, and wrote dialogue for Ronin Bouncer in Kazai Castle Bar.

  • Wrote Design Documents for Enemy Types.

  • Created prefab assets in a careful step-by-step process so they work with the game’s many existing systems and databases.

  • Worked with a team of over 30 from all departments to deliver a high-quality player experience for Steam Survival Fest 2022 and launch both in-person and remotely.

  • Self-taught how to implement code that fits with existing codebase including networking.

  • Animated in Maya a dance emote (The Griddy)

What I did

Fear System

The Fear System is a universal system that all NPC characters inherit to create more dynamic reactions and interactions between them and the game world. I was responsible for refactoring and redesigning the game's Fear System Behavior Tree using Behavior Designer and also scripting a useful tool so designers can create different Fear Profiles that can be assigned to the many NPC character types.

Tech Trees

(Research Table, Personal Mastery, Store Policy)

I worked on several of the Tech Trees such as the Research Table Tree, Player Mastery Tree, and Store Policies Tree for player progression. Player progression is important since it helps players set individual progression goals and also rewards them with new content that they work hard for as well as keep them invested in the game. Furthermore, my collaboration with an engineer resulted in seamless performance, allowing players to navigate through the progression system effortlessly.

Kazai Castle is a vital area in the main quest and I was in charge of the level design changes and combat encounters.

Kazai Castle

As a Gameplay Design Intern at Airstrafe Interactive, I was responsible for designing and implementing several important features that contributed for creating an open world shopkeeping survival experience for our players.

My Gameplay Design Work at Airstrafe Interactive

Kazai Bar

Kazai Castle Bar is one of the most noticeable land marks in Kazai Castle and I took ownership in designing interactions inside the bar from writing dialogue and implementing them in dialogue trees with Lua.

​Fishing and Lockpicking are features in the game that are both important and fun to the game experience. They both have challenging minigames for players to reap rewards. I was responsible for iterating and polishing these minigames to make them feel better with quality of life updates and game juice.

Fishing & Lockpicking Minigame

A big feature in Saleblazers is the combat in which players can use anything they pick up to use as a weapon whether that was a knife, chair, or even a refrigerator.

Combat Design

The Fear System is a universal system that all NPC characters inherit to create more dynamic reactions and interactions between them and the game world. I was responsible for refactoring and redesigning the game's Fear System Behavior Tree using Behavior Designer and also scripting a useful tool so designers can create different Fear Profiles that can be assigned to the many NPC character types.
New Features and Behavior I created:
  • Fear Configs Data Assets, to tweak different fear-related values for each type of character from Cowboys to Customer.
  • Characters looking behind and walking backward dynamically to see if their pursuer is still chasing them.
  • System-driven AI behaviors to fight back, call the police, and observe.
  • Fear History List System, a list of entities that cause fear in characters and make them flee when the characters sense any of these entities near them again.
  • Set up a framework and plan for increasing fear values in characters when they react to different player actions such as pulling out or using a weapon.
My first step to creating believable NPC reactions was by playing and watching gameplay of Grand Theft Auto V, Red Dead Redemption 2, and just thinking from the perspective of an inhabitant of the game's world.
After analyzing these started to narrow down the specific types of behaviors I wanted to capture that would make interactions with these characters interesting and made some rules and lists:
  • If attacked or provoked, some characters will choose to flee and some might choose to fight back
  • When fleeing, the character might want to check to see if they are still in danger.

Fear Behavior Tree

Fear System and Fear Config Data Asset Code Snippets

As I progressed with making my Fear Behavior Tree, I wanted to ensure that even though all NPCs will use the same tree, they could also be different from each other. So, I coded a Scriptable Object that will allow us designers to create different "Fear Profiles & Stats" for our variety of characters. Additionally, I refactored one of our other Fear Component Scripts so that there was new functionality in the fear system that reflected the overall Fear Behavior I wanted our NPCs to have.

Tech Trees

Fear System

Research Table Tree

The Research Table Tree features over 150 unlockables that players can unlock and then craft in the Crafting Bench. Players can craft weapons, displays, and technology to further their game experience. First I created a spreadsheet to track the skills we wanted to implement and their current in-game status. Next, I created a presentation to pitch different UI setups we can use to the Designer and Art Director.
I pushed for a 360-degree skill tree visual presentation since I wanted to convey how we are branching further out into different unlockable skills and at the same time group them. After it was chosen, I used the in-engine skill tree design tool to create it as well as set the unlocked requirements & costs, rewards, and other dependencies. I made several iterations over the duration of my internship.
In order to balance the requirements, costs, and rewards, I playtested the game to gauge if my progression was rewarding and at a reasonable pace. I also playtested in different playstyles to determine if the requirements were achievable in different game states.
Below are also some of the works I did for the Personal Mastery Tree and the Store Policies Tree. The Personal Mastery Tree allows players to unlock new skills such as combat and harvesting abilities. The Store Policies Tree allowed players to unlock upgrades that made their shopkeeping experiences better.

Personal Mastery and Store Policies Trees

Kazai Castle is one of the main content areas on the main quest line and I was responsible for iterating on its existing combat encounters to make it more challenging and structured similar to Sen's Fortress from Dark Souls. I filled each area with content and unique enemies that players had to fight while creating different paths with a variety of difficulties and shortcuts to the main goal: Leyasoon's Boss Fight.
My Kazai Castle Contributions:
  • Created level breakdown of preexisting Kazai Castle layout, divided each area based on difficulty, and drew out clear player paths.
  • Identified and analyzed areas that needed level design changes and worked with the art team to set dress and level.
  • Placed opportunities for players to find shortcuts to encourage exploration.
  • Created different combat encounters to challenge players.
My first step was to play the Kazai Castle Encounter and note down some of the possible paths the player can follow to go from the entrance to the entrance of the Leyasoon Boss Fight so I could communicate with my other teammates.
I created a Miro Board to post my detailed progress in redesigning the encounters and castle-level layout. While redesigning the level layout and creating different combat zones, I first listed out player mechanics I wanted players to use. Then I would compile a database of Ronin and Samurai enemies and place them into the zones I created on the Kazai Castle top down diagram.
Next, I hand-placed the enemies and their patrol paths while fine-tuning some of their variables so that they worked as intended in their respective encounter zones. After, placing them, I tested them out using different player-level presets to get a feel of how difficult the combat encounters were and how many tries it took to defeat one while finding ways to balance and improve the combat encounters.

Kazai Bar

Kazai Bar is one of the distinct locations inside Kazai Castle and I wanted to make some of the interactions that the player can experience here unique and memorable to the location.
My Kazai Bar Dialogue Contributions:
  • Wrote and revised witty and comical dialogues by infusing clever gameplay puzzle mechanics that players have to solve.
  • Created a new character: Ronin Bouncer who the player can interact with.
  • Scripted dialogue trees with Lua.
  • Animated a dance emote (The Griddy)
My first step was to create a locked door to the Kazai Bar entrance which the player must enter from. In order for the player to gain access to this exclusive bar, I made it a requirement that the character had to be wearing a Ronin mask to be admitted by the Ronin Bouncer.  I even snuck in an Easter Egg where if the player wears every single armor belonging to Lord Leyasoon, they will get a secret interaction! For the bar, I also created a Ronin Bouncer neutral enemy type that the players can interact with once they are inside the bar. I also gave this character grabber weapons so that if anyone attacks this character inside the bar, the bouncer will grab the person and fling them around. While planning out these dialogue interactions, I used Figma as a tool for me to visualize the Dialogue Tree when I was writing the dialogue.
After revising in Figma, I would use our Quest System to create Dialogue Trees and script using Lua the sequences, conditions, and interactions that I wanted the dialogue to have. I got super invested in the Ronin Bouncer's "No Dance Policy" dialogue branch choices that I taught myself how to animate for the first time, and in under an hour, I was able to animate our first dance emote: The Griddy.

Kazai Castle Combat Encounters

Fishing and Lockpicking Design & Polish

The fishing minigame allows players to fish in bodies of water if they equip a fishing rod. During the fishing minigame, players will have to aim their bobber over the "fish" swimming within the minigame's boundaries to fill up a catch meter. If the catch meter is filled within the timer, they have successfully caught an item, if not they failed. 
What I did for the fishing minigame:
  • Implemented the fishing animations
  • Added a "!" warning icon for when the bobber is being tugged to indicate when players can start reeling in
  • Added screenshake to create immersion and game juice
  • Coded the fishing caught item to fly from the body of water into an arc and landing in the player's hand

Fishing Minigame

Before Polish

After Polish

The lockpicking minigame allows players to use a lockpick that they find or craft to break into locked containers in order to steal items.
What I did for the lockpicking minigame:
  • Implemented the lockpicking animations for clients and hosts.
  • Coded an offset lockpicking distance so players have to be near containers to lockpick them as well as created a function to have players face the containers while lockpicking.

Lockpicking Minigame

Combat Design

What I did for the combat:
  • Worked with a combat designer and 2 animators to implement combat animations into the game.
  • Created Attack Data Assets to modify and tweak Attack Timing values from animation clips, damage values & modifiers, and status effects.
  • Used Unity Game Engine's Animation tools to ensure attack animations synced up and looked visually smooth.

Gallery

bottom of page