Files
cv/miti99.yml
T
tiennm99 1fd3f8e283 Enrich Survival2D thesis description with technical details
Add authoritative server architecture, QuadTree collision detection,
FlatBuffers serialization (76% packet reduction), behavior tree AI bots
with A* pathfinding, and server-side anti-cheat via visibility culling
2026-03-31 21:41:45 +07:00

260 lines
10 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# yaml-language-server: $schema=https://raw.githubusercontent.com/rendercv/rendercv/refs/tags/v2.8/schema.json
cv:
name: Tien Nguyen Minh
headline: Senior Software Engineer
location: Ho Chi Minh City, Vietnam
email: tiennm99@outlook.com
photo: img/avatar.jpg
phone: (+84) 869 156 149
website: https://miti99.com/
social_networks:
- network: LinkedIn
username: miti99
- network: GitHub
username: tiennm99
- network: Telegram
username: tiennm5
custom_connections:
- fontawesome_icon: "facebook"
placeholder: "fb.com/tiennm99"
url: "https://www.facebook.com/tiennm99/"
sections:
education:
- institution: Ho Chi Minh City University of Technology
area: Computer Science and Engineering
degree: B.E. in Computer Science
date:
start_date: 2017-09
end_date: 2023-06
location: Ho Chi Minh City, Vietnam
highlights:
- "GPA: 8.0/10 — Academic Excellence Scholarship; Five Good Student Award (university-wide recognition for academic performance, personal conduct, and community involvement)"
- "Thesis: Survival2D — Built a 2D multiplayer Battle Royale game server in Java (Netty/WebSocket) with authoritative server architecture, QuadTree-based collision detection, FlatBuffers serialization (76% packet reduction vs JSON), behavior tree AI bots with A* pathfinding, and server-side anti-cheat via visibility culling"
experience:
- company: ZingPlay Game Studios, VNG Corporation
position: Senior Software Engineer
date:
start_date: 2020-07
end_date: present
location: Ho Chi Minh City, Vietnam
summary: Joined VNG as a Game Programming Fresher and progressed through Associate Software Engineer and Software Engineer to Senior Software Engineer. Focused on scalable game server architecture and backend systems in Java (Netty, Vert.x), with consistent cross-functional contributions to client-side logic in Cocos2d-x and Godot. Passionate about architecture design and delivering reliable services to large user bases.
highlights:
- "[Chaos Age 2](https://play.google.com/store/apps/details?id=vn.zps.tl2): Sole server developer on a 4-person team (1 server, 2–3 client); architected the backend from scratch for a global strategy game, supporting more than 300 concurrent users; also assisted the client team with networking and game logic integration"
- "[Show](https://play.google.com/store/apps/details?id=zps.games.show) & [Burkozel](https://play.google.com/store/apps/details?id=zps.games.burkozel): Full-stack contributor on a 2-person team (1 server, 1 client) for two real-time card games targeting the Myanmar and Russian-speaking markets; delivered both server-side game logic and significant client-side feature work"
- "[Bida3D](https://play.google.com/store/apps/details?id=zps.games.bida3d.vn): Implemented matchmaking system on the server and cue direction logic on the client for a global 8-ball pool game on a 10-person team; applied mathematics, physics, and geometry to deliver accurate ball trajectory simulation"
- "[Sky Garden](https://play.google.com/store/apps/details?id=vn.kvtm.js): Maintained server stability for a live farm game with up to ~5,000 concurrent users on a 4-person team (2 server, 2 client); proactively detected and resolved production issues, developed new event features, and supported customer care workflows"
projects:
- name: "[Survival 2D Server](https://github.com/survival2d/server)"
start_date: 2021-09
summary: University thesis — a 2D multiplayer Battle Royale game server in Java (Netty) over WebSocket. Designed an authoritative server with client-side prediction, QuadTree spatial indexing for efficient collision detection, and procedural map generation. Applied FlatBuffers serialization to reduce packet sizes by 76% compared to JSON. Implemented AI bots using behavior trees with A* pathfinding, and server-side anti-cheat through visibility culling to prevent ESP exploits.
highlights:
- name: "[VN GeoGuessr](https://github.com/tiennm99/vngeoguessr)"
summary: A location-guessing game for Vietnam built with Leaflet.js, Mapillary, and OpenStreetMap, featuring street-level panoramic imagery and interactive map-based scoring.
highlights:
- name: "[Store Scraper Bot](https://github.com/tiennm99/store-scraper-bot)"
summary: A Telegram bot that automates scraping and reporting of app metadata from mobile stores, useful for monitoring app listings and tracking store presence.
highlights:
- name: "[Static websites with Hugo](https://tiennm99.github.io/)"
start_date: 2020-01
end_date: present
summary: Personal blog and static site portfolio on GitHub Pages using the Hugo framework. Also built a site for Ngăm, a community charity project.
highlights:
- name: "[Pet Projects & Open Source](https://github.com/tiennm99)"
summary: Maintain a variety of personal projects spanning game servers, bots, web tools, and more. Occasionally contribute fixes and improvements to open-source projects when encountering issues while using various tools and services. Full portfolio available on GitHub.
highlights:
skills:
- label: Languages
details: Java, Go, JavaScript, Shell
- label: Frameworks & Libraries
details: Netty, Vert.x, Spring Boot, Cocos2d-x, Godot
- label: Databases
details: Couchbase, Redis, MySQL, ClickHouse
- label: Infrastructure & DevOps
details: Docker, CI/CD (GitHub Actions/GitLab CI), Git, Linux, Oracle Cloud Infrastructure (OCI)
- label: Architecture
details: Game server architecture, real-time multiplayer systems, event-driven design
- label: Languages (Spoken)
details: Vietnamese (Native), English (TOEIC 600+)
design:
theme: engineeringresumes
# page:
# size: us-letter
# top_margin: 0.7in
# bottom_margin: 0.7in
# left_margin: 0.7in
# right_margin: 0.7in
# show_footer: true
# show_top_note: true
# colors:
# body: rgb(0, 0, 0)
# name: rgb(0, 79, 144)
# headline: rgb(0, 79, 144)
# connections: rgb(0, 79, 144)
# section_titles: rgb(0, 79, 144)
# links: rgb(0, 79, 144)
# footer: rgb(128, 128, 128)
# top_note: rgb(128, 128, 128)
# typography:
# line_spacing: 0.6em
# alignment: justified
# date_and_location_column_alignment: right
# font_family:
# body: Source Sans 3
# name: Source Sans 3
# headline: Source Sans 3
# connections: Source Sans 3
# section_titles: Source Sans 3
# font_size:
# body: 10pt
# name: 30pt
# headline: 10pt
# connections: 10pt
# section_titles: 1.4em
# small_caps:
# name: false
# headline: false
# connections: false
# section_titles: false
# bold:
# name: true
# headline: false
# connections: false
# section_titles: true
# links:
# underline: false
# show_external_link_icon: false
# header:
# alignment: center
# photo_width: 3.5cm
# photo_position: left
# photo_space_left: 0.4cm
# photo_space_right: 0.4cm
# space_below_name: 0.7cm
# space_below_headline: 0.7cm
# space_below_connections: 0.7cm
# connections:
# phone_number_format: national
# hyperlink: true
# show_icons: true
# display_urls_instead_of_usernames: false
# separator: ''
# space_between_connections: 0.5cm
# section_titles:
# type: with_partial_line
# line_thickness: 0.5pt
# space_above: 0.5cm
# space_below: 0.3cm
# sections:
# allow_page_break: true
# space_between_regular_entries: 1.2em
# space_between_text_based_entries: 0.3em
# show_time_spans_in:
# - experience
# entries:
# date_and_location_width: 4.15cm
# side_space: 0.2cm
# space_between_columns: 0.1cm
# allow_page_break: false
# short_second_row: true
# summary:
# space_above: 0cm
# space_left: 0cm
# highlights:
# bullet: •
# nested_bullet: •
# space_left: 0.15cm
# space_above: 0cm
# space_between_items: 0cm
# space_between_bullet_and_text: 0.5em
# templates:
# footer: '*NAME -- PAGE_NUMBER/TOTAL_PAGES*'
# top_note: '*LAST_UPDATED CURRENT_DATE*'
# single_date: MONTH_ABBREVIATION YEAR
# date_range: START_DATE – END_DATE
# time_span: HOW_MANY_YEARS YEARS HOW_MANY_MONTHS MONTHS
# one_line_entry:
# main_column: '**LABEL:** DETAILS'
# education_entry:
# main_column: |-
# **INSTITUTION**, AREA
# SUMMARY
# HIGHLIGHTS
# degree_column: '**DEGREE**'
# date_and_location_column: |-
# LOCATION
# DATE
# normal_entry:
# main_column: |-
# **NAME**
# SUMMARY
# HIGHLIGHTS
# date_and_location_column: |-
# LOCATION
# DATE
# experience_entry:
# main_column: |-
# **COMPANY**, POSITION
# SUMMARY
# HIGHLIGHTS
# date_and_location_column: |-
# LOCATION
# DATE
# publication_entry:
# main_column: |-
# **TITLE**
# SUMMARY
# AUTHORS
# URL (JOURNAL)
# date_and_location_column: DATE
locale:
language: english
# last_updated: Last updated in
# month: month
# months: months
# year: year
# years: years
# present: present
# month_abbreviations:
# - Jan
# - Feb
# - Mar
# - Apr
# - May
# - June
# - July
# - Aug
# - Sept
# - Oct
# - Nov
# - Dec
# month_names:
# - January
# - February
# - March
# - April
# - May
# - June
# - July
# - August
# - September
# - October
# - November
# - December
settings:
current_date: "2026-03-31"
render_command:
design:
locale:
typst_path: miti99.typ
pdf_path: miti99.pdf
markdown_path: README.md
html_path: index.html
png_path: miti99.png
dont_generate_markdown: false
dont_generate_html: false
dont_generate_typst: false
dont_generate_pdf: false
dont_generate_png: true
bold_keywords: []