mirror of
https://github.com/tiennm99/cv.git
synced 2026-10-11 12:18:53 +00:00
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
260 lines
10 KiB
YAML
260 lines
10 KiB
YAML
# 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: []
|