(More images coming post-release!)
In July 2023, I joined Kittehface Software as a Unity Software Engineer for the Broken Roads project by Drop Bear Bytes. Broken Roads is an isometric RPG set in a post-apocalyptic Australian Outback, featuring turn-based combat, a unique morality system, and decision-driven storytelling.
My primary focus starting on the project was continuing development of the game's AI and combat systems where previous developers had left off. Over the course of the project, I also spent a considerable amount of time working with the team's animator to add additional functionality such as narrative driven combat animations and fine-tuning animation IK, along with handling bug fixes. I was also able to get introductory experience in a well-known narrative software design tool used in the project. Broken Roads has been the largest project I've worked on to date, and it was critical to be able to quickly learn about the game's architecture and navigate the codebase and Unity project.
Working on Broken Roads with the teams at Kittehface Software and Drop Bear Bytes has been a fantastic experience and I am fortunate to have had the opportunity.
Broken Roads on Steam: https://store.steampowered.com/app/1403440/Broken_Roads
Drop Bear Bytes: https://www.dropbearbytes.com
Skills and Experience - Creating and/or Managing:
Turn-based Combat Systems
- Enemy and ally turn management
- Weapon and item use
- Cover and retreat mechanics
- Presentation mechanics and visuals for skills and abilities
- Character skills, abilities, and status effects
- Character Action Points and Movement Points
- Chance to hit calculations
- Character combat animations
Combat AI
- AI decision ratings for skills and abilities
- AI navigation decisions in a continuous (non-grid) combat area
- AI combat schemes/personalities
- AI combat retreat
- Creating Unity Editor tooling for visualizing AI decision making
Animations
- New animation functionality driven by the narrative design tool
- Troubleshooting animation controller states, state transitions, and timings
- Troubleshooting IK issues with weapons, items, and other gestures
- Troubleshooting animation controller layer issues
- Collaboration with team's Animator on features and fixes
Narrative Design Tool
- Dialog events used to drive in-game events and effects
- Global variables and conditions
- In-game dialog system driven by dialog trees
- Querying the design tool
- Troubleshooting data import and export issues in a custom Unity importer
- Troubleshooting game flow issues resulting from errors in flow setup
UI (UGUI)
- Quest tracker functionality and display
- UI display updates for Options page
- UI display updates for Save and Load screens
- Combat UI updates
- Managing items in inventory, barter, and stash screens
Playtesting and QA
- Conducting playtesting, emphasizing details and edge cases
- Reporting on issues found in a categorized and prioritized format
- Providing details, steps to reproduce, screenshots, or clips with issue reports as needed
- Creating a team procedure for smoke testing
Tooling usage
- Frequent use of Jira for task management
- Basic use of Jira dashboards and queries for personal use
- Standard usage of Git for source control
- Bitbucket for source repositories
- Discord, Slack, and video calls for communication
- Confluence for game design information
- Basic use of Adobe Premier Pro for gameplay captures
General Developer Skills
- Quickly onboarding into a new system, being able to provide information to other developers about the system on day one
- Creating documentation on game functionality
- Creating standard work processes for various areas of in-game asset setup
- Collaborating with coworkers and client engineers to design solutions and fix issues
- Reducing disruptions for client engineers by carefully considering the frequency and necessity of requests for assistance.
- Time tracking for personal reference and invoicing purposes, and providing Toggl activity reports with each invoice
- Participating in ad-hoc standups and providing weekly work summaries
- Participating in weekly collaboration meetings with client dev team
- Writing code that preserved the style and intention of original authoring developers, where appropriate