Mục lục
Nguyễn Trung Hiếu
Unity Game Developer
Số điện thoại: 0386410587
Nơi ở: Hà Nội
Ngày sinh: 29/04/1995
Email: nguyentrunghieuk34@gmail.com
Git repo của sản phẩm cá nhân:
https://github.com/BlackPig95/Unity-Otherworldly-Adventure/tree/master

Mục tiêu nghề nghiệp
Các kĩ năng, kiến thức đã học
Sản phẩm cá nhân
Game: Otherworldly Adventure
Thể loại: Adventure, Platformer
Video demo: Vui lòng xem tại đây
Screenflow của game
Bắt đầu màn chơi bằng việc lựa chọn nhân vật


Sau khi ấn OK, người chơi được đưa vào màn chơi với nhân vật đã chọn

Giao diện của game bao gồm một số phím chức năng cơ bản như phím pause game, phím chỉnh âm thanh. Game cũng hiển thị thanh máu của người chơi và của quái


Người chơi có thể nhận được các vật phẩm giúp hồi máu, tăng tốc độ di chuyển trên đường đi, cũng như có thể chạm tới Save Point để lưu lại tiến trình



Sau khi chạm vào vạch đích, người chơi được chuyển sang màn chơi mới, tiếp tục cho đến khi gặp và tiêu diệt được boss

Tiêu diệt boss thành công, người chơi chiến thắng và có thể lựa chọn chơi lại


Một số kiến thức, kĩ năng đã áp dụng trong quá trình phát triển game
Sử dụng các công cụ có sẵn của Unity như Canvas, Prefab, Tilemap, Animation, hệ thống âm thanh, để tạo ra, chỉnh sửa và lưu lại các màn chơi


Sử dụng các công cụ tạo Animator, Animation, Animation Event và Animation StateMachine để tạo ra các hoạt ảnh chuyển đổi mượt mà, dễ dàng kiểm soát thông qua code





Áp dụng tính chất Inheritance , thông qua Interface tạo nên hệ thống tấn công dễ dàng áp dụng cho cả người chơi lẫn quái. Các script có thể gọi method gây sát thương thông qua Interface mà không cần quan tâm đến logic được thực thi trong class con




Tương tự, áp dụng tính chất Inheritance, sử dụng Abstract class kết hợp với Scriptable Objects để tạo nên hệ thống Powerups dễ dàng mở rộng. Player có thể sử dụng tất cả các loại Powerups thông qua việc gọi Base class mà không cần quan tâm đến logic trong class con




Một số Design Pattern đã triển khai
Observer pattern: Cho phép các class giao tiếp, gọi các method của các class khác mà không cần phải tạo ra Instance của class đó. Đồng thời cho phép gọi nhiều method cùng một lúc, và cũng tránh được lỗi logic khi gọi các method (trong trường hợp method gọi không thành công, Observer sẽ không gọi method nhưng cũng không gây ra lỗi nghiêm trọng khiến crash game)



ObjectPooling: Giảm bớt việc phải liên tục Instantiate và Destroy các Object, gây lãng phí tài nguyên máy


Singleton: Đảm bảo chỉ có một Instance của class tồn tại trong game scene. Pattern này thường được áp dụng cho các class/ script quản lý luồng game, tiêu biểu là GameManager


Xin chân thành cảm ơn vì đã xem