Đại học Bách Khoa Hà Nội
Kỹ thuật máy tính · 2021–2026
Trần Văn Nam · Game Developer
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.
01 / Hồ sơ
Đị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.
Kỹ thuật máy tính · 2021–2026
Frontend Intern · 03/2026–07/2026
Unity, C#, kiến trúc gameplay và công cụ dữ liệu
02 / Selected work
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.
Vai trò
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.
Bài toán
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
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.
ScriptableObject quản lý Pokémon, move, item, learnset và evolution để mở rộng nội dung mà không sửa battle code.
FSM khóa đúng input handler cho Overworld, Battle, Menu, Dialog, Cutscene, Shop và Storage.
JSON snapshot lưu party, storage, item, badge, quest, story flag, trigger và trạng thái NPC theo slot.
Core systems được dựng từ một prefab chung và tồn tại xuyên scene, tránh duplicate singleton.
03 / Gameplay
Chọn hình để xem từng phần của game. Có thể dùng phím mũi tên khi đang ở gallery.

Tilemap, NPC, trigger và chuyển scene tạo thành lớp khám phá của game.

Move, type, PP, status và chuyển Pokémon được điều phối theo từng phase.

Dữ liệu Pokémon, learnset và evolution được truy xuất từ content assets.

Item dùng chung một inventory nhưng xử lý theo loại và ngữ cảnh battle/overworld.

Tính cách, friendship, mood và chat tạo thêm tương tác ngoài chiến đấu.

Dialog, event và story action phối hợp để chạy cốt truyện qua nhiều scene.
04 / Engineering
Menu UI · Battle HUD · Input views · Pokédex · House UI
Battle · Overworld · Story / Quest · NPC interaction · Encounter
Game FSM · Save / Load · Inventory / Storage · Evolution · Companion
Dialog · Audio · Toast · Scene fade · ScriptableObject · Databases
Finite State Machine
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
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
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
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á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
Unity 2D, C#, Tilemap, Animator, Physics 2D, Coroutine, SceneManager, UGUI, TextMesh Pro
OOP, FSM, Observer, Singleton lifecycle, ScriptableObject, data-driven design, separation of concerns
JSON serialization, save migration, Resources database, REST API, Cloudflare Workers/KV
Git, GitHub, code review, release checklist, regression testing, technical documentation
06 / Contact
Sẵn sàng trao đổi về vị trí Unity Intern / Fresher, gameplay programming hoặc systems development.