Sẵn sàng cho vị trí Unity Intern / Fresher

Trần Văn Nam · Game Developer

Phát triển gameplay và hệ thống Unity.

Sinh viên Kỹ thuật máy tính tại Đại học Bách Khoa Hà Nội, định hướng Unity và C#. PokeMaster là dự án trọng tâm về kiến trúc RPG: dữ liệu, gameplay, trạng thái xuyên scene và trải nghiệm người chơi được tổ chức thành một luồng thống nhất.

Hà Nội, Việt Nam Unity 2022 LTS C# / 2D RPG
POKEMASTER_V1 PLAY
Thế giới 2D trong PokeMaster với thị trấn, NPC và các công trình
Built in Unity
Current build V1.0.0 RC

01 / Hồ sơ

Nền tảng kỹ thuật

Định hướng tập trung vào toàn bộ vòng đời của tính năng: nhận input, thay đổi state, cập nhật UI, phát event và lưu đúng dữ liệu khi kết thúc phiên chơi.

Học vấn

Đại học Bách Khoa Hà Nội

Kỹ thuật máy tính · 2021–2026

Kinh nghiệm

VNPT Media

Frontend Intern · 03/2026–07/2026

Hướng phát triển

Gameplay & Systems

Unity, C#, kiến trúc gameplay và công cụ dữ liệu

02 / Selected work

PokeMaster

Game nhập vai Pokémon 2D phi thương mại, được phát triển độc lập để học tập và nghiên cứu kiến trúc game.

UnityC#ScriptableObjectJSONCloudflare Worker
250Pokémon assets
573Move assets
22Build scenes

Vai trò

Solo Developer

Phân tích, thiết kế hệ thống, lập trình gameplay, tích hợp UI, dữ liệu và kiểm thử luồng.

Thời gian
10/2025–07/2026
Engine
Unity 2022.3 LTS
Nền tảng
Windows
Trạng thái
V1.0.0 RC

Bài toán

Tính liên tục giữa scene

Battle, story, quest, NPC và inventory đều có vòng đời khác nhau. Nếu mỗi phần tự điều khiển input, camera hoặc dữ liệu, game dễ xuất hiện hai controller, chồng scene, mất party khi cold-load hoặc chạy sai bước cốt truyện.

Cách tiếp cận

Một nguồn trạng thái

GameController FSM điều phối flow cấp cao; BootstrapLoader đảm bảo core systems chỉ được tạo một lần; dữ liệu nội dung tách khỏi runtime model; story và quest giao tiếp qua event thay vì giữ tham chiếu chéo không kiểm soát.

01

Data-driven content

ScriptableObject quản lý Pokémon, move, item, learnset và evolution để mở rộng nội dung mà không sửa battle code.

02

State-first flow

FSM khóa đúng input handler cho Overworld, Battle, Menu, Dialog, Cutscene, Shop và Storage.

03

Snapshot save

JSON snapshot lưu party, storage, item, badge, quest, story flag, trigger và trạng thái NPC theo slot.

04

Runtime bootstrap

Core systems được dựng từ một prefab chung và tồn tại xuyên scene, tránh duplicate singleton.

04 / Engineering

Kiến trúc 4 tầng

Luồng phụ thuộc 4 tầng
01

Presentation

Menu UI · Battle HUD · Input views · Pokédex · House UI

02

Gameplay

Battle · Overworld · Story / Quest · NPC interaction · Encounter

03

Systems

Game FSM · Save / Load · Inventory / Storage · Evolution · Companion

04

Common + Data

Dialog · Audio · Toast · Scene fade · ScriptableObject · Databases

Finite State Machine

Input theo state

GameController chỉ chuyển quyền update cho hệ thống tương ứng, giảm lỗi menu mở trong battle hoặc dialog kích hoạt cửa ngoài ý muốn.

Observer / Events

Giao tiếp qua event

Quest nhận event gameplay, dialog báo bắt đầu/kết thúc và battle trả outcome để story quyết định tiếp tục hay dừng.

Singleton + Bootstrap

Vòng đời global service

SystemRoot được tạo một lần trước gameplay scene; duplicate controller tự hủy để tránh hai state machine cùng xử lý input và camera.

Versioned Persistence

Save có version

SaveData có schema version, game version và được lưu tại persistentDataPath; dữ liệu cũ vẫn có đường fallback khi chuyển bản.

Đúc kết kỹ thuật

Debug theo luồng

Các lỗi khó nhất không nằm trong một hàm riêng lẻ mà ở ranh giới giữa scene lifecycle, singleton, coroutine và serialized data. Phương pháp kiểm tra ưu tiên log theo state, cold-load và toàn bộ chuỗi hành động.

05 / Toolkit

Công nghệ sử dụng

Game development

Unity 2D, C#, Tilemap, Animator, Physics 2D, Coroutine, SceneManager, UGUI, TextMesh Pro

Architecture

OOP, FSM, Observer, Singleton lifecycle, ScriptableObject, data-driven design, separation of concerns

Data & backend

JSON serialization, save migration, Resources database, REST API, Cloudflare Workers/KV

Workflow

Git, GitHub, code review, release checklist, regression testing, technical documentation

06 / Contact

Cơ hội Unity Intern / Fresher

Sẵn sàng trao đổi về vị trí Unity Intern / Fresher, gameplay programming hoặc systems development.