Duy Phuong Doan Game Programmer • Game Designer

About Me

Greetings weary traveller, my name is Phuong, an experienced game developer who has recently dabbled in game design.
I am concerned with everything to do with ideas and game development. Should you require assistance, my wisdom is all yours.

Code

CSharp
C++
Python

Tools

Riders
VStudio
Git

Engines

Unity
UE4
Godot

Teamwork

Teams
Jira
Trello

Media

DaVinci
Paint.NET
Blender

Game I play

Minecraft
Civ 5
Factorio

Featured Projects

Gallos Kernow

Check it out
mountains mountains mountains

Featured Roles

 Gameplay Engineer, UI/UX Programmer

My experience

 During my 2 years of game programming career, I have come up with many game ideas, I would go to work in the day and work on my projects in the night. Life was fine until I realized I had no idea how to make a game fun, that's why I decided to go on a journey to Falmouth to learn game design. The course is great, and the lecturers offer a lot of advice and insights into the game design process. We learned a few things about project management and prototyping different types of games that have social impacts and are not purely entertainment.
 This project here is Gallos Kernow, which means "Cornwall's strength". It's a council interest project that aims to help teach primary school children resilience in civil emergencies, it's kinda like a client project where we meet a member of the council to discuss promising features. My team was rather imbalanced in terms of disciplines, we had 5 designers, 2 programmers and one artist, this was mainly because the course leader decided that teams should be formed in a free-for-all. That being said I'm glad to have met the folks in my team, they are some of the chillest people I know.
 At the start of the project, our team divided members into different research criteria, I was in charge of gathering knowledge about how children from 6 to 12 years old process information. I gathered studies from multiple sources, summarised their findings and comprised a list of good gamification practices that we can have in the game.
 Due to the lack of programmers in the team, I also had to fulfil the programmer role. The gameplay features weren't technically challenging, the only problem was the volume of work that we had to divide between the two programmers. For my part, I had to implement various features such as a resource production system similar to those in an idle game, a medical quiz minigame for medical scenarios, and a system where scenarios are randomized without repeating. I didn't encounter any problem understanding the other programmer's code, I offered him a few of my technical advice throughout the development process. Additionally, I was "on call" to fix every single bug that spawned in the game, most bugs just take one or two minutes though I had to fix some bugs of the other programmer who was occasionally busy. I love fixing bugs, did I mention that I love fixing bugs?
 Overall, it was a pretty interesting experience working with people of another culture with different perspectives. I really enjoyed it and am looking forward to my future endeavour in the UK.

Sygil

Check it out
mountains mountains mountains

Featured Roles

 Systems designer, Level designer, Gameplay engineer.

My experience

 This one is a pretty interesting small prototype I made for one of the gamejams in the course. The theme for the jam was "Small scale, large scope", and after a while of shuffling different potential ideas, I settled on the grand mechanics of combining sigils into spells. This is an extremely interesting mechanic that is not very well explored in modern games, probably due to how complex they are to learn or how slow they are to cast in complex games. Old games like Tyranny and Two Worlds have attempted the sigil mechanic but it was not the highlight of them and hasn't been fully explored yet. I have solved some of the problems that they might have had with expanding the mechanics itself and noted them down for future reference.
 During the development process, I learned about a pretty handy algorithm for recognizing combinations regardless of order, it's Aho-Corasick and no doubt is one of the most valuable knowledge I have learnt for game programming. I also have the readied code to confidently make any puzzle minigame as side content for live service games like Arknight and Reverse 1999.
 Due to the limited time of one week, I only managed to create a small puzzle game with 5 levels. I think it was pretty cool, my peers seem to agree. I pulled some inspiration from Pokemon Red/Blue's ice-sliding puzzle and old puzzle games like Sokoban. The levels are designed so that each one teaches the player something about the mechanics as well as challenges their lateral thinking ability.
 In retrospect, I think that the most time-consuming part is my tendency to try to make the initial design perfect like the beginning of a waterfall project, I realized afterwards that it's time-consuming and is not as effective as the iterative design process. For the game, I think that it will be the 3rd project that I will be invested in for its potential.

Milk Farm Tycoon

Check it out
mountains

Featured Roles

 UI/UX programmer, Gameplay engineer, Bridge engineer, Intern supervisor, Test programmer, Tool programmer.

My experience

 My two years working as a programmer at NoPowerUp was a very memorable experience for me. You know how companies often say "We are like a family". For me, it did feel like a big family there, everyone was really friendly and knowledgeable.
 After my brief internship, I was included in a new company project that is an idle game about simulating the production of dairy products from the farm to the factories. In the early stages of the project, I was the only programmer in the team, I was given an idle 2D game framework by our partner overseas and tasked with implementing a 3D grey box project with basic idle game features like resource production when the device is offline, check factory details, upgrades and stats, and different factory productivity modifiers. There were also a few experimental features that were suggested to me by my product manager like a secondary resource that is milk, the ability to turn off automation to control the flow of milk consumption and various minor UI changes.
 The workload was huge but I didn't pale in the face of adversity, I sorted which tasks were core, did research and implemented them, and ensured the code was easy to read, maintainable and scalable. After some additional artists and programmers were included, the project started to really come together.
 During my time working on the project, I also got an abundance of opportunities to communicate professionally with our overseas partner East Side Games, mostly we would communicate about game events' balancing data, potential framework or game bugs and discuss future technical changes. About one year after I joined, the company started expanding the office space and hired new interns, I was assigned as an intern supervisor who could answer their questions about the company project structure and codebase.
 I had a pretty good rapport with all my coworkers, especially the testers, which is pretty rare for a programmer. I love fixing bugs, I'm the go-to guy when it comes to bugs in the project, and testers love reporting bugs to me since I know who is responsible and can fix them quickly. When I was not too busy working on new features or fixing bugs, I would write unit tests for different parts of the game to ensure there would be no recurring bugs. The testers also ask me to implement debug tools like money or unlock cheats into the dev version of the game to speed up the testing process.
 In the end, it's my undying ambition that kept me from being contented and so I left NoPowerUp to seek new perspectives, new knowledge and new opportunities to make games I want to see actualized.

Super Space Rhythm

Check it out
mountains mountains

Featured Roles

 Engine Developer, Enemy AI Programmer, RPG Developer, Level Designer

My experience

 Working on Super Space Rhythm is a moment in my life that I can always look fondly upon. Our university required a mandatory internship in a big company so I and my two friends decided to take Gameloft HAN's summer internship. We were briefly walked through openGL and box2D and then given exercises to do. After that, we were divided into teams for the internship gamejam. I and my friends were in separate teams but I managed to convince them otherwise on the condition our team was one member short.
 We had one month to make our game, two of my friends quickly got to the drawing board while I put together a simple game engine in C++ inspired by Unity with an asset loader, render pipeline, text rendering, scene loader and input manager... Afterwards, we decided on the idea of a rhythm game where the player has to act on the beat, this includes attacking, evading and switching forms. Riding the wave of enthusiasm, I got to adding features like map random, core game loop, health, damage, powerup and controllable character state machine. I then wrote documentation for the engine so that my friends could easily import assets and create scenes.
 After coding a rudimentary AI system using a finite state machine, I designed a few simple enemies, there is the knight who gets a shield every few seconds, there is the wizard who shoots projectiles, and a lizard man who places bombs on the floor... I then went on to design different levels and power-ups with my friends, and we had a great time. The most memorable level to me was the explosive level where there was a bunch of TNT that exploded when hit or touched and then tons of lizard mobs that placed pressure bombs all over the place as well. After beating a level, the player can choose between 3 buffs and then move to the next level. The 4th level is a final boss, I didn't code it but I did help my friend with troubleshooting from time to time, the boss is a real challenge with 4 different states with a unique bullet rain pattern.
 In the end, I and my friends presented our game together, the supervisors and the audience were very impressed, we got first place in the internship gamejam and were very proud of our achievement.

Slack Slayer

Check it out
mountains

Featured Roles

 Systems Designer, Level designer, Gameplay engineer

My experience

 Sometimes after working professionally as a programmer, I began to be confident of my ability to code a game so I started to branch out into learning about game design. One of my favourite YouTube channels for game design familiarization was Game Maker Toolkit, they create medium-length videos about different techniques like positive/negative feedback loop, environmental storytelling and immersive tutorials with professionally edited videos that are interesting and easy to understand. Game Maker Toolkit also has an annual game jam that they host every August and this game is my submission with another friend.
 The game jam has a two-day period, so we quickly got to the drawing board as soon as the theme was unveiled. The theme was "Out of control", we first got rid of the most surface ideas like taking player input away or giving the player an actual control button in the game because those will be the most popular. After 2 hours of brainstorming, we decided on making a game about a manager trying to keep their employees from slacking in work hours. We distributed our tasks, my friend was in charge of finding sprite assets and I got to coding the basic components of the game like employee slack state, manager movement and manager's utility belt. One of the most novel ideas to come out from that game was a dog helper companion that I coded, at level 4 the player gets a dog that can wake up slacking employees, it was a pretty fun feature, I will probably add that to another game in the future. After that, I designed 7 levels, the first 6 serve as introductions to the game mechanics and the last level is a test of skills. I also worked on implementing a simple tutorial system to make sure the player won't get confused.
 After submission, we were amazed by the volume of submissions, a lot of games have artists and readied code on standby and they made a lot of impressive games with creative ideas like the player can use the input keys as platforms but also disable that key. The submission's rating is also based on word of mouth so we didn't really get a lot of players due to how unappealing the sprites were lol. Despite that, I think that it was a pretty interesting experience and I'm very proud of the game that we managed to create in 2 days. For future references, definitely look for a smaller game jam to gauge how good your team is at making video games.

Kanji learning game (Prototype)


mountains

Featured Roles

 VR Programmer, Game Designer

My experience

 One of the things I find hardest to do when learning Japanese is remembering vocabulary, the teachers I had could only recommend rote learning methods like flashcards and those have never worked for a kinematic learner like me. This project's goal is to offer the player an interactive and stimulating experience through the gamification of reading and writing Japanese words.
 The basic premise of the game is that the player can write Japanese words on the air and turn them into a spell. For example, if they write りんご (apple), the player can spawn an apple, if they write 小さい (small), they can target an object and turn it small, or if they write 飛ぶ (to fly) and apply it on themselves, they can fly for awhile. There are 1500 frequently used beginner words when learning Japanese, I had to use Python to scrape a dictionary website for word data and then convert them into Lua script for reusability. Some words are also tricky to create meaningful spells for them like 上 (up)、下 (down)、左 (left)、右 (right) but I have drafted a few puzzles that should be optimal for learning vocabulary.
 Right now I am only focusing on Japanese and English because those are the two languages I'm familiar with but in theory and in production I should be able to implement other languages like Chinese or Spanish as well. Additionally, I have looked into voice recognition technology and believe it's feasible to implement voice recognition so that the player can quickly cast spells and learn pronunciation. I will be releasing an early beta version somewhere at the end of my Game Design MA course at Falmouth University so I hope you will keep an eye out for it :).