1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo Cáo Thực Tập Intern Unity Developer.pdf

21 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO THỰC TẬP

Intern Unity Developer

Công ty thực tập : Vitalify Asia Người phụ trách : Phạm Văn Tuấn

TP Hồ Chí Minh, tháng 12 năm 2023

Trang 2

2

LỜI MỞ ĐẦU

Ngày nay, ngành công nghiệp game là một bộ phận không thể thiếu của ngành công nghiệp phần mềm Với tốc độ phát triển vô cùng mạnh mẽ, ngành game đã và đang là nhân tố kích thích sự phát triển của công nghệ thông tin thế giới, cả về phần cứng và phần mềm

Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ Ngành công nghiệp game non trẻ Việt Nam đã và đang phát triển mạnh mẽ, để hòa nhập với những công ty hàng đầu về game trên thế giới Bên cạnh những công ty game trẻ tuổi trong nước, những công ty game (như Vitalify Asia) cũng gia nhập vào thị trường Việt Nam, góp phần rất lớn vào sự phát triển tích cực của ngành game Việt

Ngành game được sinh ra là do nhu cầu giải trí của giới trẻ bằng những thiết bị công nghệ mới nhất Và cũng chính giới trẻ sẽ là nguồn nhân lực quan trọng cho việc phát triển của ngành game sau này Vì lý do này, em quyết định chọn lập trình game làm định hướng cho việc học tập của mình

Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như muốn được tham gia làm game trong một môi trường chuyên nghiệp, em có dự định là sẽ thực tập trong hè

Trang 3

Đặc biệt cảm ơn anh Phạm Văn Tuấn, đã hướng dẫn, giúp đỡ cho em tận tình cả những

khó khăn trong công việc, đến những khó khăn việc làm quen với môi trường mới; cảm ơn anh

Đỗ Trí Khải, đã hỗ trợ em rất nhiều về các cách áp dụng toán học vô game Một lần nữa em xin

cảm ơn hai anh rất nhiều đã giúp em để có thể làm ra một sản phẩm trong thời gian qua

Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này

Nguyễn Văn Thiên Tp HCM, ngày 20 tháng 12 năm 2023

Trang 5

Chương 1: Giới thiêu công ty thực tập 7

1.Giới thiệu công ty Vitalify Asia 7

2.Sản phẩm của công ty 7

Chương 2: Nội dung thực tập 9

1.Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 9

2.Thiết lập, cài đặt công cụ làm việc và lên ý tưởng cho game 9

3.Thực hiện project 11

4.Lịch làm việc 11

Chương 3: Chi tiết về project 13

1.Giới thiệu về game 13

2.Thực hiện 14

2.1 Thiết lập môi trường 14

2.2 Tạo các đối tượng cơ bản trong game và áp dụng NavMeshNavigation 14

2.3 Tạo nhân vật Range Soldier và xử lý cơ bản 14

2.4 Xử lý trạng thái cơ bản cho nhân vật 14

2.5 Tạo nhân vật Canon và áp dụng toán vào game 14

2.6 Tạo đối tượng quản lý nhiều nhân vật 14

2.7 Xử lý nhân vật thông minh hơn 14

2.8 Xử lý thắng thua trong game 15

2.9 Xử lý và áp dụng vài logic mới 15

Trang 6

6

2.10 Tìm assets để sử dụng giúp game đẹp hơn 15

2.11 Tạo thêm hiệu ứng và chỉnh sửa UI 15

2.12 Tạo Turret 16

2.13 Tạo hệ thống save load cho game 16

2.14 Tạo hệ thống âm thanh cho game sống động 16

2.15 Tạo giao diện cho một số nhân vật, đối tượng 16

2.16 Chỉnh sửa và thêm UI 16

2.17 Xử lý hàng chờ và xử lý logic cho bot 16

2.18 Áp dụng Obstacle cho nhân vật 17

2.19 Tạo map 17

2.20 Tạo độ khó cho game 17

2.21 Cân bằng bot và sử dụng skybox 17

Trang 7

7

Chương 1: Giới thiêu công ty thực tập

1 Giới thiệu công ty Vitalify Asia

Công ty TNHH Vitalify Asia là công ty phát triển ứng dụng web và di động có trụ sở tại Thành phố Hồ Chí Minh, Việt Nam, được thành lập vào năm 2008 Chúng tôi cung cấp khả năng phát triển và cải tiến sản phẩm nhanh chóng trên cơ sở DevOps với đội ngũ cam kết mang lại giá trị cho người dùng

2 Sản phẩm của công ty

Theo đó, cùng kinh nghiệm nhiều năm phát triển ứng dụng web/smartphone và AI, Vitalify Asia đang từng bước đẩy mạnh nghiên cứu Game 3D, VR/AR với bộ phận phát triển riêng biệt mang tên “Unity Development Lab” Sản phẩm Game 3D đầu tiên của công ty - “Dungeon Dash” được ra mắt với 2 phiên bản iOS và Android trên cả 3 ngôn ngữ tiếng Việt, tiếng Anh và tiếng Nhật

Được biết, Unity là nền tảng phát triển Game được sử dụng nhiều nhất trên thế giới Không chỉ vậy, để đáp ứng nhu cầu phát triển ngày càng tăng cao, Unity còn được ứng dụng nhiều ở lĩnh VR/AR Trong những năm gần đây, rất nhiều game được phát triển trên nền tảng này, như Crossy Road, Fallout Shelter, Angry Birds 2

Nắm bắt xu hướng đó, cùng nguồn lực kĩ sư Unity và 3D designer ưu tú, Vitalify Asia đã thành lập và phát triển “Unity Development Lab” Trong đó, Unity

Trang 8

8 Development Lab (UDL) là một nhóm gồm những thành viên có nhiều năm kinh nghiệm trong lĩnh vực phát triển, thiết kế và quản lý các dự án game lớn nhỏ

Trang 9

9

Chương 2: Nội dung thực tập

Đợt thực tập nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình game 3D sử dụng công nghệ Unity Engine, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường phát triển game chuyên nghiệp

1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty

Thời gian : 1/2 ngày

Nội dung : Giới thiệu về công ty, cách tổ chức của công ty

Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triên (như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty

Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc…

Kết quả : Hiểu thêm về công ty Vitalify Asia, quá trình thành lập và phát triển Có thêm

các kỹ năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn

2 Thiết lập, cài đặt công cụ làm việc và lên ý tưởng cho game

2.1 Các công cụ làm việc

Thời gian : 1/2 ngày

Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc

Trong thời gian này, các anh mentor đã hướng dẫn thực tập sinh tìm hiểu về các công cụ sẽ giúp ích cho trong công việc sau này Sử dụng Chatwork để giao tiếp với các anh mentor cũng như các bạn trong công ty

Thực hiện : Cài đặt phiên bản Unity, tạo và config repository trên Github Kết quả : Sử dụng công cụ miễn phí và tiện lợi cho quá trình thực tập

2.2 Tìm hiểu coding rule của công ty

Thời gian : 1/2 ngày

Nội dung : Được training về các quy chuẩn, kiến thức quan trọng để làm việc nhóm

mượt mà hơn

- Các quy chuẩn chung:

Các kiến thức cơ bản về đặt tên biến, phương thức, tên file Ngoài ra, thực tập sinh còn được hướng dẫn về cách viết code sao cho giảm độ phức tạp, giúp quá trình review code thuận lợi và dễ dàng hơn

Trang 10

10 - Unit test :

Cách viết và thực hiện unit test trên Unity Engine - Git flow rule:

Thực tập sinh sẽ được hướng dẫn về cách đặt tên nhánh, cách làm việc cùng mọi người khi sử dụng Github và Sourcetree

- Nâng cao kỹ năng lập trình với ngôn ngữ C# và Unity Engine

- Có được những kiến thức quan trọng cho việc lập trình game đặc biệt trên nền tảng mobile sau này

- Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao cho đúng chuẩn, dễ đọc, dễ hiểu

- Biết cách làm việc chung với nhiều người thông qua Github và Sourcetree

2.3 Lên ý tưởng cho dự án thực tập

Thời gian: 1 ngày

Nội dung: Tìm hiểu và tham khảo các tựa game trên mạng theo ý thích - Các thể loại game chiến thuật thủ thành

Xác định được thể loại game sẽ làm, thực hiện trong thời gian sắp tới

Thực hiện :

- Tìm hiểu các thể loại game và chọn thể loại bản thân mong muốn làm - Tìm kiếm tài liệu trên mạng để tìm hiểu thêm về thể loại đó, cách thực hiện

Kết quả :

- Hiểu được những thể loại game cơ bản

2.4 Lập trình trên Unity Engine

Trang 11

11

Thời gian: 1 ngày

Nội dung : Các kỹ năng sử dụng Unity Engine, third-party, plugin và các assets nhằm

phục vụ việc phát triển một tựa game hoàn chỉnh - Định nghĩa về Unity Engine:

Unity Engine là một engine đa nền tảng được phát triển bởi Unity Technologies, nó được phát hành lần đầu vào năm 2005 tại hội nghị “Apple Worldwide Developers Conference” Nó hỗ trợ việc phát triển game đa nền tảng bao gồm desktop, mobile, console và cả virtual reality

- Lập trình game trên Unity sử dụng C#:

Các kỹ thuật để lập trình game đa nền tảng trên Unity Engine, quá trình sử dụng ngôn ngữ lập trình C# để tạo ra các trò chơi điện tử trên nền tảng Unity Unity là một công cụ game phổ biến được sử dụng để tạo ra các trò chơi 2D và 3D trên nhiều nền tảng khác nhau

Thực hiện :

- Tham gia đầy đủ các buổi training

- Tạo ra những ứng dụng cơ bản, lập trình game Unity trên Windows

Chi tiết đồ án sẽ được nói ở phần sau

4 Lịch làm việc

Tuần Công việc Người hướng dẫn

Mức độ hoàn thành

Nhận xét của người hướng dẫn

Trang 12

12 1

- Tìm hiểu về công ty, cách tổ chức của công ty - Làm quen với

các công cụ làm việc trong công ty

- Bắt tay thực project

- Tạo các nhân vật cơ bản

- Thực hiện logic cho nhân vật - Thực hiện các

animation cơ bản cho nhân vật

Anh Phạm Văn Tuấn

2

- Tìm kiếm model cho các nhân vật - Sử dụng model

đó vào game - Tạo và thực hiện

logic cho Tower

Anh Phạm Văn Tuấn

Anh Đỗ Trí Khải

3

- Tạo và thực hiện logic cho Turret - Thực hiện logic

thắng thua cho game

- Tạo hệ thống save load cho game

Anh Phạm Văn Tuấn

Anh Đỗ Trí Khải

4

- Tạo các effect cơ bản cho game - Thực hiện Fog of

war cho game - Thực hiện các

giao diện cơ bản cho game

Anh Phạm Văn Tuấn

Anh Đỗ Trí Khải

Trang 13

13

Chương 3: Chi tiết về project

1 Giới thiệu về game

Game lấy ý tưởng từ luật chơi của game chiến thuật rất nổi tiếng đó là World of

Trang 14

14

2 Thực hiện

Một mình em làm dưới sự hướng dẫn của các anh mentor, bao gồm:

2.1 Thiết lập môi trường

- Cài đặt Unity Editor version 2021.11.3, tạo repository trên Github

- Tìm hiểu và quyết định sẽ làm game chiến thuật tương tự World of Warcraft

2.2 Tạo các đối tượng cơ bản trong game và áp dụng NavMeshNavigation

- Tạo một vài đối tượng hình vuông tròn trong game, sử dụng NavMeshNavigation để điều khiển, di chuyển trên Terrain

2.3 Tạo nhân vật Range Soldier và xử lý cơ bản

- Tạo nhân vật Range Soldier đơn giản: nhân vật có thể tấn công từ xa - Xử lý chọn 1 hoặc nhiều đối tượng và di chuyển chúng

- Xử lý nhiều đối tượng được chọn cùng target đến một đối tượng

2.4 Xử lý trạng thái cơ bản cho nhân vật

- Xử lý trạng thái “đứng yên”, “tấn công”, “di chuyển” và “chết” cho nhân vật Range Soldier và Melee Soldier

- Xử lý tự động ngắm cho ArrowBullet(vũ khí ném bởi Range Soldier)

2.5 Tạo nhân vật Canon và áp dụng toán vào game

- Tạo nhân vật Canon cơ bản

- Áp dụng công thức toán phương trình bậc hai để làm cho quỹ đạo của ArrowBullet đẹp và mượt mà hơn

2.6 Tạo đối tượng quản lý nhiều nhân vật

- Tạo GameManager để quản lý toàn bộ game

- Tạo SoldierManager để quản lý việc tạo nhân vật trong game

- Xử lý việc dò tìm của nhân vật trong game: khi kẻ địch trong tầm nhìn, nhân vật sẽ tấn công kẻ địch

2.7 Xử lý nhân vật thông minh hơn

- Khi nhân vật bị tấn công, nó sẽ tấn công lại kẻ địch

Trang 15

15 - Tạo nhân vật DefenderMelee và Shield cho nhân vật đó: Shield có thể chặn được

ArrowBullet và có thể cầm để đập kẻ địch - Tạo Sword cho nhân vật

- Sửa vài lỗi liên quan tới NavMeshAgent

2.8 Xử lý thắng thua trong game

- Tạo đối tượng Tower: đối tượng mà người chơi phải bảo vệ Đối với Tower của kẻ địch, người chơi phải phá hủy hết nếu muốn dành chiến thắng

- Nhân vật bị đẩy lùi và bất động nếu bị ảnh hưởng bởi vụ nổ của CanonBullet(được bắn ra bởi Canon) trong vài giây

- Xử lý thắng thua logic cho game: thua khi bị kẻ địch phá hủy Tower, thắng khi người chơi phá hủy tất cả Tower của kẻ địch

2.9 Xử lý và áp dụng vài logic mới

- Bây giờ kẻ địch và đồng minh đều bị ảnh hưởng bởi CanonBullet, nhưng chỉ kẻ địch mới bị mất máu

- Tạo một vài animation cơ bản cho Attacker và Defender

- Xử lý logic cho việc tạo nhân vật trong game: sử dụng tiền của Tower - Xử lý việc chọn nơi mà nhân vật sẽ đi tới sau khi được tạo ra bởi Tower

2.10 Tìm assets để sử dụng giúp game đẹp hơn

- Tạo hiệu ứng nổ cho CanonBullet và tạo hệ thống quản lý tất cả các hiệu ứng

- Sử dụng asset miễn phí cho nhân vật Attacker, Defender và RangeSoldier: thay thế tất cả hộp vuông tròn thành nhân vật đẹp và hoàn chỉnh

- Thêm vòng tròn đỏ dưới chân nhân vật nếu được chọn bởi người chơi: người chơi chọn nhân vật bằng cách nhấn vào nhân vật, hoặc là kéo thả 1 vùng để chọn nhiều nhân vật

2.11 Tạo thêm hiệu ứng và chỉnh sửa UI

- Tạo hiệu ứng nổ đầu nòng Canon khi nó bắn, hiệu ứng khi Attacker chém kẻ địch và hiệu ứng của Shield khi chặn được ArrowBullet

- Tạo UI đơn giản màn hình chiến thắng và thua

- Tạo UI đơn giản cho việc nhấn để tạo nhân vật trong game

Trang 16

16

2.12 Tạo Turret

- Tạo Turret để thủ, bảo vệ Tower

2.13 Tạo hệ thống save load cho game

- Tạo các đối tượng lưu trữ thuộc tính của nhân vật, thuộc tính gồm: Type(enum), Position(Vector3), Stats(Dictionary)

- Cải tiến vài dòng code

- Tạo menu đơn giản để thử nghiệm hệ thống save load có hoạt động đúng như mong muốn hay không

2.14 Tạo hệ thống âm thanh cho game sống động

- Tạo SoundManager để quản lý âm thanh cho game: nhạc nền, hiệu ứng, … - Tạo UI cơ bản để điều chỉnh âm thanh

- Tạo hệ thống gacha đơn giản

2.15 Tạo giao diện cho một số nhân vật, đối tượng

- Tạo thanh máu cho Tower và Turret

- Tạo UI để hiển thị reward của người chơi: người chơi sẽ nhận được kim cương khi tiêu diệt kẻ địch

- Lưu trữ reward cho người chơi - Sửa lỗi di chuyển của các nhân vật

2.16 Chỉnh sửa và thêm UI

- Tạo UI cho hàng chờ tạo nhân vật

- Xử lý logic cơ bản cho gacha: random, reward, … - Tạo UI cơ bản cho gacha

2.17 Xử lý hàng chờ và xử lý logic cho bot

- Hiển thị hàng chờ tạo nhân vật

- Xử lý và sửa lỗi logic cho hàng chờ tạo nhân vật

- Tạo một vài quyết định cơ bản, giúp con bot nó thông minh hơn

Trang 17

17

2.18 Áp dụng Obstacle cho nhân vật

- Thêm Obstacle cho nhân vật: mỗi khi nhân vật đứng yên, nó sẽ trở thành obstacle, giúp cho những nhân vật khác sẽ tự động né tránh, không chen nhau

- Xử lý logic bật tắt của Obstacle

- Xử dụng Aminator Override Controller cho nhân vật

2.19 Tạo map

- Tạo một map đơn giản sử dụng tính năng Terrain của Unity - Ngẫu nhiên vị trí khi bắt đầu game của nhân vật và bot - Sữa lỗi cho code

2.20 Tạo độ khó cho game

- Tạo các mức độ: dễ, trung bình, khó cho game Càng khó càng phải đấu với nhiều con bot

2.21 Cân bằng bot và sử dụng skybox

2.23 Tạo hiệu ứng Fog Of War cho game

- Tạo Fog of War cơ bản cho game

- Sử dụng Newtonsoft để cải tiến hệ thống save load - Sử dụng Scriptable Object thay vì constant

3 Kế hoạch

Tiến trình:

- Hoàn thành các logic nhân vật cơ bản cho game

- Chỉ hổ trợ chế độ chơi với máy, nhưng có nhiều mức độ khó khác nhau - Áp dụng các model đã tìm được

- Tạo vài hiệu ứng cơ bản cho game

Trang 18

18 - Tạo Fog of War

- Hỗ trợ điều khiển bằng chuột và có thể sử dụng bàn phím để dừng, tạo nhân vật - Hỗ trợ save load

Kết quả :

- Hầu hết các tính năng trên đã được thực hiện

- Sử dụng thêm Unity AI giúp các nhân vật có thể tự né tránh địa hình, tránh chen chúc nhau

Ngày đăng: 15/05/2024, 09:22

TỪ KHÓA LIÊN QUAN

w