top of page

Role:

Gameplay | AI Programmer
Enemy Behavior Designer

Project Type:

Academic Project

Date:

Aug 2022 - Apr 2023

Skills:

AI Programming | Behavior Systems
Team Collaboration | Role Awareness

Team Size:

11

DigiPen Game Gallery:



Project Description:

Chlorofell is an Isometric Shooter developed in a custom game engine, where I served as Gameplay and Enemy Behavior Programmer.


 My primary role involved the implementation of advanced AI systems, including Behavior Trees, A* Pathfinding, Flowfield Pathfinding, and Terrain Analysis. 


This project aimed to create an engaging isometric shooter experience with challenging AI opponents.

Contributions:

  • Developed player mechanics with physics-based projectiles, interactive reload, and explosive effects using C++.

  • Designed and implemented enemy AI behaviors with behavior trees.

  • Integrated A and Flow Field pathfinding* with terrain analysis.

  • Integrated Art Assets and implemented a custom component system to handle sprite sheets in a the custom engine, enabling efficient rendering and asset management.

Challenges:

  • It was my first project with multiple disciplines so there was a learning curve for understanding what their roles were.

  • We were working on creating a custom engine while simultaneously developing a game.

Accomplishments and Lessons Learned:

  • I realized how important it was to know what everyone on the team does and how they’re expected to contribute to the project. This was an idea I wanted to bring into my next team project: To make sure I had at least a basic idea of each role and how things work.

  • I set out to learn about enemy AI and methods to improve them.

    • I implemented A* and Flowfield pathfinding for different enemy types.

    • I applied boids techniques like separation to keep entities separated.

  • I implemented custom behavior trees:

    • My last project showed me that finite state machines are not very scalable.

    • I decided to learn new methods for creating and implementing enemy behaviors.

    • All enemy agents in this project use behavior trees.

  • Many of these techniques turned out to be taxing on performance, so I had to learn techinques for optimizing the algoritms.

    • One such technique I learned was multithreading however, that often would not be enough.

    • I had to learn more about data structures and understanding wich ones where appropriate to use for specific algorithms.

bottom of page