- The last project before leaving Vietnam for the UK - work on prototype and pre-production stages.
- The development process used Unity 2019.
- Work on several tools: quest creation and serialisation, player progress, dev-mode mock formation and more.
- Gameplay mechanis implementation: quest interaction, camera control, fog of war, dialogue system.
Arena of Survivors (Android, iOS)
with Hiker Games, 2018
- The development process used Unity 2017, Photon Unity SDK, Photon Quantum SDK.
- Take the main responsibility for input handler, core mechanics, network replication algorithms and data structures.
- Lead the learning and adapting process of Exit Games’ Photon Unity Network SDK, and later, Quantum Deterministic SDK for the team.
- Build a successful workflow based on git branching and Jenkins automated builds.
- Get myself familiar with a wide range of concepts along the way, including (notably) the Entity-Component-System (ECS) programming model, C# unsafe code, network optimisation, and CI/CD environment.
- Perform network and gameplay optimisation.
FZ9: Timeshift (Android, iOS)
with Hiker Games, 2017
- The development process used Unity 5.6.
- Fix legacy bugs and do refactoring occasionally.
- Work closely with game designers to deliver new features and content.
- Design and develop data structures to store configurations of new PvP mode, where players build their base to store their gold and get more of that by invading others’ bases.
- Expand the replay feature for the new PvP mode, where players can check how did other ones solve their formation.
- Design and program new features with code cleanness in mind.
- Using FSM and State pattern to create the boss of the story mode’s chapter 7.
Galaxy Gunner: Adventure (Android)
with Tofu Games, 2017
- The development process used Unity 5.6.
- Refactor legacy code to reduce technical debts.
- Develop gameplay systems: player combat system, enemy system and weapon system.
- Develop a simple 2D timeline system to play 2D cutscenes that can be triggered by various conditions.
- Create a data-oriented behaviour tree system for NPCs.
- Design and program data structures for storing player progress and inventories.
- Apply the git-branching model and train other teammates to use that.
- Assist other programmers when they need technical advice or a solution.
- Perform game optimisations.
Occasionally, I do pet projects for fun. These projects can be anything. Some of them are pieces that I find interesting at work. Some of them are just learning, research and experiment. Some of them are improvements to existing solutions, both mine and others. Some of them are tutorials for things that I made mistakes before and I want to share that painful experience.
Rewrite my first game in university with C++ and SDL using ECS architecture
I suddenly grew fond of ECS practices. I remember that my first game, written in C++ and SDL is shitty – no joke about this. I haven’t been touching C++ for a while as well, so this is a perfect opportunity to apply some new knowledge to make something familiar, just for fun (and for my Master’s graduation project).
The project is in a really early process though – more details to come! If you’re interested in examining what I’ve got, feel free to go to my GitLab repository.
June 2020’s update: https://twitter.com/tongtunggiang/status/1272581552061452295
ECS Experiment with Unity
- Use Unity 2019.3.
- Write two demos: one in traditional Mono and the other one in ECS and throw many agents to the scene.
- Performance comparison.
- Learn the uniform grid spatial partitioning technique and implement it in ECS using multi hash maps.
Line of Sight Implementation in UE4
- Use Unreal Engine 4.18.
- Playing around with UE4’s procedural mesh generation.
An Object Pool solution for Unity 3D
- A common optimisation practice.
- Data-driven workflow friendly allowing quick setup.
- Should be applicable on most Unity versions.
A C#-inspired event and delegate implementation in C++
- Built on the foundation of the Observer pattern.
- Featuring function pointers encapsulated in a class.
- … and a colourful output window just for fun.