Professional Projects
プロフェッショナルプロジェクト

Skull and Bones

Skull and Bones Cover

An open-world naval ship sandbox game, filled with dangerous ships to defeat. Quick overview of my work on the game:

    AI

  • Environment Query System - Contributed to the implementation of a spatial awareness system used by the AI agents to query the environment in order to find the best position for it to move.
  • Archetype Behaviors - Implemented different ship archetypes using Behavior Trees (e.g. guarding ships; ships targeting the player's side; ...).
  • Utility AI - Used to decide on the high level behaviors of the agents (e.g. in combat; out of combat; fleeing; ...).
  • AI Proxy - Created simple proxy objects representing the agents for when they are out of the player's loading range, allowing them to simulate some simple behaviors and keep some state while very far away from the player, saving computational costs.
  • Threat System - Contributed to a system that tracks all entities that are in combat with an agent and how much threat they each pose, allowing to make decisions based on the threat each pose (e.g. attacking the entity that the agent considers more threatening; attacking the least threatening entity first to focus on the others later).
  • Attack Ticket System - Contributed to a system that gives out tickets allowing agents to attack other agents or players (e.g. only allow 4 attack tickets to be given to agents targeting the player, so that the player never gets too overwhelmed).

  • Narrative

  • Dialogue & Story Controller - Implemented a fully event-driven, time-sliced dialogue controller for the game's narrative, supporting concurrent dialogues for both land and sea. This system is able to analyse the state of the game and decide which dialogue scene it should play.
  • Sound Matching Lip Sync - Integrated lip syncing technology in the engine, handling the logic for the lip's movements and integrating it into the animation graph.
  • Remember Player-Actions System - Implemented a system that keeps track of dozens of player actions, allowing characters to respond to those same actions (e.g. player defeated an enemy with a specific weapon, so some characters might react to that when the player talks to them).
  • Dialogue Editor - Supported and extended a tool for the creation of dialogue scenes.
  • Created debug tools using ImGui.
  • Worked with Technical Animators in the Animation Graph.
  • Autonomously drove features forward, actively reaching out to designers and producers to keep things on track.


Far Cry 6
Far Cry 6 (ファ-クライ 6)

Far Cry 6 Cover

An open-world shooter set in a tropical island called Yara. Quick overview of my work on the game:
テスト日本語.

  • Heat Mechanic - Player has to carry a bomb-like item and shield it from the sun, otherwise it overheats and explodes.
    → Used periodic raycasts to detect line-of-sight with the sun.
    → Cached closed-by bushes to verify if the player was inside them using collision detection.
    → Built water objects to cool the bomb (e.g. sprinkle that can be turned on/off; water park mushroom; water sink that can be interacted with).
  • Player Lives - Implemented an arcade "player lives" feature for the Special Operations game mode, where players have a limited number of times they can die before failing the mission. Required integration with the normal quest flow and UI elements.
  • Interaction System - Improvements on the interaction system, creating different scoring profiles for new gameplay functionalities (e.g. interacting with teammate; picking up a bomb).
  • Networking - Wrote multiplayer code for the gameplay systems I was in charge of.
  • Animations - Worked with animators to link animations to gameplay systems.
  • Exposed C++ functionalities to blueprint nodes through LUA, used by quest and technical designers.
  • UI - Worked closely with UI artists for new HUDs and screens that new gameplay features required. Created a tutorial video for programmers teaching how to code/use the UI framework.


Ganbatte

Ganbatte Cover

~ Steam Page ~ Cats, in space, eating sushi! Ganbatte is a competitive social multiplayer arcade game, where you try to eat as much valuable sushi as you can to reach the highest score. Quick overview of my work on the game:

  • Gameplay implementation - Plate's respawn system, combo system, player interaction, game state...
  • AI - Used Behavior Trees to implement the AI Agents behavior (and adapt it to a multiplayer setting), like the heuristic to follow when choosing the plate to eat, their movement, and social interactions with the player.
  • Networking - Implemented the required network code to allow the game to be played in a multiplayer setting, both for the player and for AI agents.
  • Animation Graphs - Facial states of the cats, including eye blinks and facial moods.
  • UI - Implemented diegetic UI used to convey the game state to the players (scoring, round information, combos, etc).
  • Worked constantly with artists and designers to build the levels, adapting all the 3D models and the animations.
  • Very active on the game's design process through ideas, concepts and game balancing.

Personal Projects

Magis

Magic Cover

A VR game where the player is a wizard and can shapeshift into other creatures with a variety of abilities, enabling them to solve puzzles. Be a cat to see in the dark, a crow to fly to the skies, a monkey to climb what's in your way, and a hamster to enter tiny holes on the walls!

  • Gameplay - Creature's gameplay (running using the touch controllers, grabbing objects, shapeshift into other creatures), inventory system (with a portal-representation) and scripted events.
  • AI - Used Behavior Trees to program the game's AI.
  • Animation Graphs - Implemented the animation graphs of each creature.
  • Sound - Worked with a sound designer on the setup of the sounds of the game (sound classes, attenuation).

Deus Ex based Stealth Prototype

Deus Ex based Stealth Prototype Cover

A "Deus Ex: Human Revolution" inspired stealth prototype.

  • Pawn sensing (vision and hearing) detection system for the AI enemies.
  • Cover system, allowing the character to move around corners and to jump between cover to cover.
  • Grabbable objects that are grabbed from the side the player is facing.
  • Stealth radar that takes player and enemy rotation into account.

Behavior Tree Plugin for Unity

														
// Simple Demonstration.
[Serializable]
public class BT_Player : BehaviourTree {
  public BT_Player(BB_Player blackboard) : base(blackboard) {
    root =
      new MemSelector(new List {
        new MemSequence(new List {
	      new BTTask_MoveTo(ref blackboard.nextPointVector, 3.0f)
        }, new BlackboardCondition(ref blackboard.heroState, Hero.State.Unprotected, Utils.KEY_QUERY.IS_EQUAL_TO))
      });
  }
}
														
													

My Behavior Tree plugin for the Unity Engine, complete with Blackboards, Composite Nodes, Tasks, Decorators and Behavior Trees. Access the open source repository here.


Unstatic

Unstatic Cover

A Star Wars inspired multiplayer-droid-racing game, where each droid has a unique special ability.

  • Gameplay - Implemented player controller, lap manager with checkpoint system, live-leaderboard during the race, and characters' abilities (warp screen shader on the opponents; spawning of a companion which would detonate once an opponent came close enough; player increases size to throw off opponents; dash velocity; etc).
  • Networking - All the gameplay elements are multiplayer-ready, as well as the game state.
  • UI - Implemented the required HUD visualizations, like the leaderboard, current time, lap, and power usage.

Skills

Artificial Intelligence

One of my favorite fields. I've worked with Behavior Trees and Finite State Machines, implemented a multi-agent cooperative system in which the agents have to exit an unknown space, features like A* pathfinding and Dijkstra shortest path and even my own Behavior Tree System for Unity, all of these from scratch. I've used Environment Query Systems (EQS) to create tactical responses in gameplay, and I'm familiar with GOAP systems.

3D Math

I like to implement systems based on math solutions (examples of previous work): simulation of object placement in a 3D world with collision constrains (using vector scaling projection and dot product); enemy-perception system (vision and hearing senses), hand-slapping detection; stealth cover system following the meshes' limits; lever's rotation in VR, etc.

Code Architecture and Design Patterns

I thoroughly enjoy designing new gameplay systems from scratch and coming up with a good architecture to make it as efficiently designed and data-driven as possible, using design patterns whenever possible. Allowing designers to create different gameplay scenarios just by manipulating data is something I always strive for.

Animation Graphs

Experience working with Animation Graphs, like defining the different animation state machines and their transitions, making use of additive animations, as well as blending between different ones. This is an aspect of game development I find very rewarding, it's a bridge between tech and art where the character comes alive!

Networking

Experience with techniques like client-side prediction, server reconciliation and entity interpolation, as well as working with replication models. Worked with both dedicated and listen servers.

Debugging

Tracking bugs with the help of data breakpoints and memory changes, making good use of the callstack and the watch window, and loading in dump files when a crash happens can help with pinpointing the issue and fixing it ASAP.

Others

Languages: C++, C#, C, Javascript.
Engines: Unreal Engine 4, Unity and other AAA proprietary engine technologies.
Version Control Software: Perforce, Git.

Career Path

Ubisoft Singapore

Ubisoft Logo

AI & Gameplay Programmer

October 2020 - Present

Moved to Singapore to experience working on a studio that was the lead studio on a AAA project (Skull and Bones).

Ubisoft Berlin

Ubisoft Logo

Junior Gameplay Programmer

September 2019 - September 2020

Started working at Ubisoft Berlin immediatly after finishing university, through the Ubisoft Graduate Program, which is a worlwide highly competitive program where recent university graduates apply.
Worked on Far Cry 6 throughout my stay there.

Mimicry

Mimicry Logo

Gameplay Programmer | Gameplay Programmer Internship

June 2017 - April 2018

My stay at Mimicry started as a summer internship, which became a part-time position while I was studying during my Master's Degree.

Contact Me