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 đã xin được thực tập tại công ty CGT
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
LẬP TRÌNH GAME ORDINAL NUMBER BẰNG UNITY
TP Hồ Chí Minh, tháng 06 năm 2020
Trang 2LỜ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 Đặc biệt là những công ty trẻ là nơi phát triển của những ý tưởng mới mẻ và táo bạo
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 đã xin được thực tập tại công ty CGT, một môi trường làm việc năng động, sáng tạo, là nơi sẽ giúp em thực hiện được dự định này
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn công ty CGT đã tạo điều kiện cho em có cơ hội được thực tập tại công ty
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của nhóm trainer, nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm được một game trên nền tảng Unity với những yêu cầu của một sản phẩm thực tế Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra nhiều thời gian,công sức để hướng dẫn chúng em hoàn thành đợt thực tập này
Đặc biệt cảm ơn anh Nguyễn Văn Sinh, đã training về kĩ thuật cũng như hướng dẫn, giúp
đỡ cho chúng em trong việc làm quen với cách thức làm việc trong thực tế của công ty cũng như hỗ trợ trong về cách làm báo cáo, lên kế hoạch và những kỹ năng khác để nhóm có thể hoàn thành 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
Bùi Trần Uyên Quang
TP Hồ Chí Minh, tháng 6 năm 2020
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
LỜI MỞ ĐẦU 1
LỜI CẢM ƠN 2
MỤC LỤC 4
Chương 1: Giới thiêu công ty thực tập 5
1 Giới thiệu công ty CGT 5
2 Sản phẩm của công ty 5
Chương 2: Nội dung thực tập 6
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 6
2 Nghiên cứu kỹ thuật 6
2.1 Các công cụ làm việc 6
2.2 Tìm hiểu thiết kế giao diện 2D trên Unity 6
2.3 Xử lý hiệu ứng với DOTween 7
3 Thực hiện project 9
4 Lịch làm việc 9
Chương 3: Chi tiết về project 11
1 Giới thiệu về game 11
1.1 Gameplay 11
1.2 Hệ thống level up 12
2 Thực hiện 14
3 Kế hoạch 14
TÀI LIỆU THAM KHẢO 16
TỔNG KẾT 17
Trang 6Chương 1: Giới thiêu công ty thực tập.
1 Giới thiệu công ty CGT.
CGT là một công ty chuyên về đào tạo đồ họa game, anime Tuy nhiên, trước sự bùng nổ của thị trường mobile game và những nguồn lực sẵn có, CGT bắt đầu lấn sang lĩnh vực phát triển game, chủ yếu trên nền tảng Android và iOS thông qua engine là Unity
Với việc là một công ty còn khá mới mẻ trong thị trường game nói chung và thị trường mobile game nói riêng, CGT hướng đến các dòng game puzzle, thiết kế không quá phức tạp nhưng đảm bảo chất lượng để đủ sức cạnh tranh với các đối thủ khác
2 Sản phẩm của công ty.
Một số sản phẩm tiêu biểu được thực hiện bởi đội ngũ phát triển game của CGT
có thể kể đến như Block Puzzle Jewel, Solitaire Tripeaks, Wood Block, …
Trang 7Chương 2: Nội dung thực tập.
Trong đợt thực tập, nhóm được giao cho đề tài thực hiện lại tựa game “Ordinal Number” thông qua việc sử dụng engine Unity, đồ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, năng động, sáng tạo
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 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 các công cụ giao tiếp
và quản lý trong công việc, …
Kết quả : Hiểu thêm về công ty CGT Có thêm các kỹ năng về việc sử dụng các công cụ
hỗ trợ giao tiếp và quản lý task 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 Nghiên cứu kỹ thuật.
2.1Các công cụ làm việc.
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, supervisor đã 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 Một số phần mềm trong số đó như SourceTree – sử dụng cho việc quản source code và project, Shoebox – tool hỗ trợ tạo bitmap font, xử lý tạo sprite sheet và một số tác vụ khác cho các file liên quan đến phần hình ảnh, Slack – công cụ hỗ trợ giao tiếp giữa các thành viên trong nhóm, Trello – phần mềm giúp quản lý danh sách công việc đã, đang và sẽ thực hiện cũng như các dự án có liên quan
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả : Các công cụ sử dụng trong quy trình của công ty tương đối giống với một
số công cụ sinh viên đã từng sử dụng trong quá trình học tập tại trường nên có thể làm quen nhanh chóng
2.2Tìm hiểu thiết kế giao diện 2D trên Unity.
Nội dung : Được training về các kỹ thuật trong thiết kế và xử lý giao diện 2D Unity.
- Xử lý trên canvas:
Phân biệt được các đối tượng dạng UI (text, sprite, …) nằm trong canvas, cách xử
lý các đối tượng UI này Điều chỉnh để đảm bảo canvas đó có tính responsive, không bị tình trạng vỡ hình ảnh khi chạy game trên nhiều thiết bị
- Xử lý ngoài canvas:
Trang 8Biết được điểm khác biệt ảnh hưởng đến component transform nói riêng và các thành phần khác nói chung khi các đối tượng không nằm trên một canvas Ảnh hưởng lẫn nhau khi trong cùng một scene có cả các đối tượng nằm và không nằm trên canvas Hiểu rõ được khi nào nên và không nên để đối tượng trên canvas
- Raycast:
Tìm hiểu về kỹ thuật raycast, cách cài đặt và các trường hợp cần sử dụng đến raycast Sử dụng phối hợp raycast cùng với canvas trong cùng một game để tạo ra
cả phần UI và phần xử lý có chất lượng tốt nhất Dùng kỹ thuật raycast để bắt các
sự kiện đặc biệt device như tap ở hai vị trí khác nhau và xử lý các sự kiện đó
- Camera:
Biết được cách xử lý camera để hoạt động tốt với raycast hay canvas khi được sử dụng trong các project Điều chỉnh camera để đảm bảo reponsive cho game
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty
- Thực hiện các kiến thức được trên các project mẫu được giao tương ứng
Kết quả :
- Nâng cao kỹ năng lập trình với Unity
- Có được những kiến thức quan trọng cho việc lập trình game mobile sau này
- Nắm được cơ bản cách để thiết kế giao diện cho mobile game
2.3Xử lý hiệu ứng với DOTween.
Nội dung: Biết được những kiến thức cơ bản để sử dụng thư viện DOTween cả trong
xử lý các thành phần của UI và cả xử lý logic trong game
- Khái niệm cơ bản về DOTween.
DOTween là một animation engine hỗ trợ việc thực hiện các thao tác liên quan đến xử lý animation cho các đối tượng hình ảnh trong Unity thông qua việc sử dụng code, hoặc chỉnh sửa thông số trong component
Ngoài ra, có thể coi DOTween như một thư viện bởi những hàm mà nó cung cấp giúp cho việc thực hiện animation không cần phải thông qua animator và animation như cách thông thường ở Unity, thay vào đó, các state và quá trình thực hiện có thể dựa vào các hàm được DOTween cung cấp
- Các phương thức tác động lên transform:
Nắm bắt được các phương thức tác động lên chỉ số của transform và RectTransform cũng như ứng dụng vào thực tế trong việc thiết kế UI và phối hợp với một số logic game Trong đó, phân biệt được xử lý trên tọa độ local và tọa độ world để kết hợp với xử lý logic bằng raycast
Trang 9- Các phương thức tác động lên màu của component hình ảnh:
Hiểu rõ được cách thức hoạt động của các phương thức tác động lên màu của các component liên quan đến hình ảnh nhằm ứng dụng trong việc tạo nhiều hiệu ứng hình ảnh hơn trong game, đồng thời là kiến thức nền tảng để phối hợp với phần sequence phía sau, tạo ra hiệu ứng hình ảnh tốt nhất, tận dụng tối đa khả năng của DOTween
- DOVirtual:
Bao gồm những phương thức hỗ trợ việc tác động yếu tố thời gian đến một đoạn
xử lý như trì hoãn việc gọi một đoạn xử lý trong một khoảng thời gian hay cho một giá trị đối với đoạn xử lý đó chạy từ mốc này đến mốc kia trong khoảng thời gian cho trước
- Sequence:
Cho phép điều khiển một chuỗi các Tweeners hay các xử lý dùng DOTween trên một hay nhiều đối tượng, xem chuỗi DOTween này như một mảng động Mỗi Tweener cũng có những phương thức tác động tới việc thực hiện animation của nó như tạm dừng, tua ngược hay loop
Ngoài ra, các Tweener còn có thể điều khiển mức độ thay đổi các giá trị của animation thông qua phần phương thức SetEase
Thực hiện :
- Tham gia đầy đủ các buổi trainning
- Thực hiện thiết kế các giao diện cho sản phẩm thông qua việc sử dụng thư viện DOTween
- Áp dụng DOTween vào phần xử lý của các dự án thay thế cho việc sử dụng animation truyền thống
Kết quả :
- Hiểu được những khái niệm cơ bản trong thiết kế giao diện với DOTween
- Tạo được giao diện cũng như tối ưu hóa phần xử lý cho một số dự án thông qua DOTween
3 Thực hiện project.
Sau một tháng được training và thực hành, thực tập sinh đã nắm được những kiến thực
cơ bản về sử dụng Unity và các công cụ liên quan Trong tháng thứ hai, trainer đã hướng
Trang 10dẫn thực tập sinh áp dụng những kiến thức đã học để thực hiện một project game hoàn chỉnh
Chi tiết đồ án sẽ được nói ở phần sau
4 Lịch làm việc.
Mức độ hoàn thành
Nhận xét của người hướng dẫn
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
- Học cách trao đổi, làm việc nhóm qua email và các công
vụ khác
Anh Nguyễn Văn
2
- Tìm hiểu thiết kế giao diện 2D trên Unity
- Thực hiện các kiến thức đã học trên một số project mẫu được giao
Anh Nguyễn Văn
3
- Tìm hiểu về DOTween
- Thực hành thiết kế giao diện và viết xử
lý có ứng dụng DOTween
Anh Nguyễn Văn
4
- Tìm hiểu về tích hợp package để chạy Admod, tích hợp Facebook SDK
và Google Play Game Services
- Tích hợp các package vào project
đã thực hiện, sử các lỗi phát sinh
Anh Nguyễn Văn
5 Giai đoạn phát triển 1:
- Lên kế hoạch Anh Nguyễn VănSinh 100%
Trang 11- Viết các xử lý sườn.
- Thống nhất với
artist số lượng
sprites cần thiết
6
Giai đoạn phát triển 2:
- Hoàn thiện hệ thống
level up
- Thực hiện hoàn
chỉnh giao diện
Anh Nguyễn Văn
7
Giai đoạn Alpha:
- Thay đổi cách nhận
input ở mode
ordinal cho phù hợp
với tập users của
sản phẩm
- Thêm hai mode
cộng và trừ
- Cải thiện các hiệu
ứng particle
Anh Nguyễn Văn
8
Giai đoạn Beta và giai
đoạn kết thúc, báo cáo :
- Cải thiện UI, UX và
hiệu ứng của game
- Fix bug logic và các
bug hiệu ứng gây
khó chịu cho users
- Báo cáo cuối đợt
thực tập
Anh Nguyễn Văn
Trang 12Chương 3: Chi tiết về project.
1 Giới thiệu về game
Ordinal Number là một game toán đơn giản hướng đến đối tượng users là trẻ em dưới
12 tuổi, vừa tạo ra một trò chơi giúp các em nhỏ có thể giải trí nhưng đồng thời có thể luyện thêm về phản xạ tính toán
1.1 Gameplay
Thiết kế ban đầu game sẽ gồm 4 chữ số khác nhau trên màn hình được sinh ra ngẫu nhiên, người chơi cần chỉ ra chuỗi từ nhỏ đến lớn của 4 chữ số đó thông qua việc chạm lần lượt các chữ số
Ngoài ra, game còn hai chế độ chơi khác là cộng và trừ, xuất hiện một phép toán tương ứng và yêu cầu người chơi chọn đáp án chính xác trong 4 đáp án được đưa ra
Gameplay theo dạng endless tính điểm Tất cả mode chơi đều sẽ có một đồng hồ đếm thời gian, nếu trả lời sai (quá số lần quy định đối với chế độ cộng và trừ) hay không trả lời kịp thời gian thì màn chơi sẽ kết thúc đồng thời tiến hành ghi điểm lại nếu vượt qua số điểm cao nhất hiện tại
Hình ảnh gameplay ở chế độ ordinal
Trang 13Hình ảnh gameplay ở chế độ toán cộng và trừ.
Giao diện menu chính của game
1.2 Hệ thống level up.
Do là một game theo dạng endless nên cần phải thiết kế một hệ thống level up hợp lý, tạo cho người chơi cảm giác hào hứng nhưng phải đảm bảo game không
bị quá dễ hoặc quá khó Ngoài ra cần phải đảm bảo section của game trong khoảng vừa đủ cho người chơi cũng như trong việc hiện quảng cáo thu về doanh
Trang 14Trước yêu cầu đó, hệ thống level up được thiết kế dựa theo hai dạng Đối với người chơi mới sẽ lấy một số mốc điểm cố định để phân chia độ khó, đối với người chơi đã quen thuộc sẽ tiến hành phân chia độ khó của game tăng tiến theo
số điểm cao nhất mà người chơi đã đạt được Từ đó game sẽ luôn thay đổi độ khó theo khả năng của người chơi, tránh tình trạng game rơi vào trạng thái quá khó, không thể vượt qua
Đoạn xử lý phân cấp level
Sau khi đã phân cấp được level hiện tại, tiến hành tăng độ khó của game bằng cách cho khoảng giá trị random của câu hỏi tăng dần, yêu cầu người chơi phải tính toán nhiều hơn
Trang 15Đoạn xử lý thay đổi text của phép toán theo level hiện tại.
2 Thực hiện
Thành viên thực hiện Ordinal Number:
- Bùi Trần Uyên Quang
- Dương Gia Bảo
Và sự giúp đỡ tận tình của anh Nguyễn Văn Sinh
3 Kế hoạch
Giai đoạn phát triển 1:
- Viết xử lý cho core gameplay mode ordinal theo thiết kế chạm – kéo
- Hiện thực các thành phần UI cơ bản
- Tạo một số hiệu ứng particle sơ bộ
Kết quả :
- UI còn sơ sài
- Hệ thống level up hiện tại chưa hoàn thiện
Trang 16Giai đoạn phát triển 2:
- Phát triển hệ thống tính điểm
- Phát triển sơ bộ hệ thống level up cho mode
- Hoàn thành cơ bản UI
- Tiến hành test thử gameplay
Kết quả :
- Các tính năng đề ra đều được hoàn thiện, chuyển sang cho bộ phận testing gameplay design
- UI cơ bản đã hoàn thành
- Hệ thống level up cần được cải thiện thêm
Giai đoạn alpha:
- Thay đổi lại input cho chế độ ordinal theo dạng touch từng số theo thiết kế mới
- Thêm mode cộng
- Thêm mode trừ
- Cải thiện hiệu ứng particle
Kết quả : Các tính năng mới được hoàn thành
Giai đoạn Beta:
- Nâng cấp UI, UX dựa vào sprites do artist cung cấp
- Fix bug input ở mode ordinal và một số bug hiển thị ở các mode cộng, trừ
- Fix các bug liên quan đến flick khung hình ở UI khi hiện các dialog
- Tích hợp các package hiện show quảng cáo và Google Play Game services
Kết quả : Hoàn thành được các yêu cầu đã đề ra
Trang 17TÀI LIỆU THAM KHẢO
DOTween
http://dotween.demigiant.com/documentation.php
For Particle
https://docs.unity3d.com/ScriptReference/ParticleSystem.html
For Raycast
https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
For PlayerPrefs
https://docs.unity3d.com/ScriptReference/PlayerPrefs.html