Mục lục

  • Giới thiệu thông tin sơ lược về bản thân
  • Chia sẻ mục tiêu nghề nghiệp
  • Kĩ năng, kiến thức của bản thân
  • Video demo sản phẩm cá nhân
  • Giải thích sơ lược về screenflow của game
  • Chia sẻ về một số kiến thức, kĩ năng đã ​được áp dụng trong sản phẩm cá nhân

Nguyễn Trung Hiếu

Un​ity Game Developer

Số điện thoại: 0386410587

Nơi ở: Hà Nội

Ngày sinh: 29/04/1995

Email: nguyentrunghieuk34@gmail.com

Mục tiêu nghề nghiệp

  • Phát triển kĩ năng lập trình game bằng C# và Unity. Sau khi đã sử dụng thành thạo ngôn ngữ lập trình ​C# và công cụ Unity, có thể tiếp tục mở rộng sang học thêm ngôn ngữ lập trình và các công cụ khác, ​chẳng hạn như Unreal Engine, để đáp ứng tốt hơn nhu cầu sử dụng trong công việc, cũng như phát ​triển các dự án cá nhân.
  • Thông qua các dự án thực tế để làm quen với phương thức và quy trình sản xuất game, từ đó nắm rõ ​hơn cách lên ý tưởng, xây dựng bố cục và kế hoạch để phát triển game, cách để phân chia công việc và ​phát triển game theo đội ngũ. Nhanh chóng hòa nhập vào đội ngũ của công ty để phát triển các sản ​phẩm đảm bảo chất lượng.
  • Mục tiêu dài hạn: Ngày càng hoàn thiện vốn hiểu biết và kĩ năng của bản thân hơn về ngành game, để ​có khả năng phát triển đa dạng các loại game khác nhau.
  • Tập trung phát triển kĩ năng và kiến thức về lập trình, để có thể đáp ứng được mọi yêu cầu, không chỉ là ​lập trình game mà cả về những mảng liên quan như back-end, front-end develop, server, ....
  • Nắm thêm được những kiến thức cơ bản về những mảng khác trong ngành công nghiệp game bên cạnh ​việc lập trình, chẳng hạn như game design, game art.

Các kĩ năng, kiến thức đã học

  • Kiến thức căn bản về lập trình với C#.
  • Các quy tắc SOLID, tính chất của lập trình hướng đối tượng - OOP - và cách áp ​dụng vào trong việc viết code sạch, đảm bảo code dễ bảo trì, dễ mở rộng.
  • Sử dụng công cụ Unity để làm game.
  • Học cách áp dụng một số design pattern thường gặp nhất trong lập trình game ​để giúp tăng hiệu năng và đảm bảo quản lý code, giao tiếp giữa các script được ​hiệu quả hơn, chẳng hạn như Observer, ObjectPool, Singleton, Adapter.
  • Được giới thiệu căn bản về một số thư viện, phần mềm, dịch vụ của bên thứ ba ​thường được dùng trong Unity để tăng hiệu quả làm việc và áp dụng vào việc ​thương mại hóa. Ví dụ: Advanced Playerprefs Package, Dotween, cách làm việc ​với Firebase, cách tải game lên cửa hàng Google Play, thêm vào IAP, ...

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