Báo cáo thực tập tốt nghiệp đề tài: tìm hiểu về lập trình game 2d với unity môn Công nghệ thông tin | Trường đại học kinh doanh và công nghệ Hà Nội

Khẩu hiệu : CHÚNG TÔI LÀ CODEGYM NỖ LỰC ĐỂ MANGĐẾN NHIỀU GIÁ TRỊ HƠN CHO CUỘC SỐNG Công nghệ Thông tin là một ngành lớn và quan trọng của Việt Nam, nhưng sự thiếu hụt nhân lực cả về số lượng và chất lượng luôn là một rào cản để phát triển. Tài liệu giúp bạn tham  khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!

lOMoARcPSD| 45469857
1
TRƯỜNG ĐẠI HỌC KINH DOANH VÀ CÔNG NGHỆ HÀ NỘI
KHOA
CÔNG NGHỆ TH
ÔNG TIN
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Đề tài:
TÌM HIỂU VỀ LẬP TRÌNH GAME 2D VỚI UNITY
Sinh viên thực hiện: Hoàng Minh Hùng
Lớp : PM25.14
Hà Nội - Năm 2024
lOMoARcPSD| 45469857
LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành tới Ban lãnh đạo của Công ty CP CodeGym Việt
Nam, các anh chị trong công ty đã tận tình hướng dẫn, chỉ bảo trong quá trình em
thực tập tại công ty. Đồng thời em xin được gửi lời cảm ơn chân thành tới quý thầy,
cô Khoa Công nghệ thông tin, Đại học Kinh doanh và công nghệ Hà Nội đã tận tình
chỉ bảo, hướng dẫn em trong quá trình thực tập, khi gặp phải những khó khăn và
vướng mắc liên quan đến kiến thức chuyên môn. Em xin chân thành cảm ơn.
lOMoARcPSD| 45469857
3
NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN Ở ĐƠN VỊ THỰC TẬP
Mục lục
Trang
Lời cảm ơn
Nhận xét của cán bộ hướng dẫn thực tập
Nội dung báo cáo thực tập
lOMoARcPSD| 45469857
Phần 1. Cơ sở lý luận
1.1 Giới thiệu về tổ chức thực tập
1.2 Nhiệm vụ chính được giao
1.3 . Lý do chọn đề tài
1.4 Công cụ thực hiện đề tài
1.5 Ngôn ngữ và giải thuật
Phần 2. Thực trạng đề tài
2.1 Thực trạng đề tài ở Việt Nam
Phần 3. Kết quả đạt được qua đợt thực tập
NỘI DUNG BÁO CÁO THỰC TẬP
PHẦN 1. CƠ SỞ LÝ LUẬN
1.1. Giới thiệu về tổ chức nơi thực tập: Công ty CP CodeGym.
- Khẩu hiệu : CHÚNG TÔI LÀ CODEGYM NỖ LỰC ĐỂ MANG ĐẾN
NHIỀU GIÁ TRỊ HƠN CHO CUỘC SỐNG Công nghệ Thông tin
một ngành lớn và quan trọng của Việt Nam, nhưng sự thiếu hụt nhân lực
cả về số lượng và chất lượng luôn là một rào cản để phát triển. Nhân lực
là mấu chốt quan trọng nhất để thúc đẩy ngành CNTT nước nhà phát
triển. Thấu hiểu được tình trạng đó, các nhà sáng lập của CodeGym
vốn xuất thân là các lập trình viên nhiều năm kinh nghiệm, giảng viên,
chủ doanh nghiệp phần mềm có tâm huyết – đã quyết định xây dựng nên
một mô hình đào tạo lập trình đột phá, giúp nâng cao hiệu quả và chất
lượng đào tạo. Không chỉ đủ để đóng góp một số lượng lớn lập trình
viên cho ngành, mà còn thông qua đó nâng cao tiêu chuẩn chất lượng
của ngành.
- Loại hình doanh nghiệp: Công ty cổ phần
1.2. Nhiệm vụ chính được giao
- Tìm hiểu lập trình game 2D cơ bản với Unity
1.3. Lý do lựa chọn đề tài
lOMoARcPSD| 45469857
5
Thực trạng ngành game Việt Nam hiện nay :
Phát triển mạnh mẽ:
Thị trường tiềm năng:
o Số lượng game thủ đông đảo: 60% dân số tham gia chơi game,
trong đó 43% chơi game mobile.
o Tỷ lệ người chơi chi trả cho game gia tăng: 75% người chơi sẵn
sàng chi tiền cho game.
o Lượng người xem eSports cao: 23 triệu người xem các giải đấu
eSports.
Sự tham gia của các nhà đầu tư:
o Lượng vốn đầu tư vào ngành game tăng cao: 200 triệu USD trong
năm 2022.
o Xuất hiện nhiều quỹ đầu tư chuyên biệt cho ngành game.
o Các startup game thu hút được nhiều vốn đầu tư.
Sự phát triển của các phân khúc game:
o Game mobile: Phân khúc phát triển mạnh nhất, chiếm 54% thị
phần.
o Game PC: Dù bị ảnh hưởng bởi sự phát triển của game mobile
nhưng vẫn duy trì lượng người chơi nhất định.
o Game console: Thị trường đang mở rộng với sự ra mắt của
PlayStation 5 và Xbox Series X/S.
Nền tảng livestream và eSports:
o Livestream game thu hút lượng lớn người xem: 40 triệu người xem
livestream game mỗi tháng.
o eSports phát triển mạnh mẽ, thu hút nhiều giải đấu và nhà tài trợ.
Tuy nhiên, vẫn còn một số thách thức:
Thiếu hụt nhân lực:
o Nhu cầu nhân lực cao nhưng nguồn cung chưa đáp ứng đủ.
o Chất lượng nhân lực chưa đồng đều.
Hạ tầng công nghệ:
lOMoARcPSD| 45469857
o Hệ thống internet chưa đáp ứng đủ nhu cầu chơi game online, đặc
biệt ở khu vực nông thôn.
o Giá thành thiết bị chơi game còn cao.
Sự cạnh tranh gay gắt:
o Thị trường game có nhiều nhà phát hành, cạnh tranh cao.
o Các game nước ngoài chiếm ưu thế trên thị trường.
Vấn đề quản lý:
o Hệ thống pháp lý chưa hoàn thiện, dẫn đến khó khăn trong việc
quản lý hoạt động game.
o Việc kiểm soát nội dung game còn nhiều hạn chế.
Nhìn chung, ngành game Việt Nam đang phát triển mạnh mẽ với nhiều
tiềm năng. Tuy nhiên, để phát triển bền vững, ngành game cần giải quyết các
thách thức về nhân lực, hạ tầng công nghệ, cạnh tranh và quản lý.
Vậy nên em lựa chọn bước đầu làm quen với việc làm game 2d cơ bản với
Unity với một số lý do sau:
1. Phổ biến và phù hợp: Unity là một trong những công cụ phát triển game phổ
biến nhất hiện nay. Nó hỗ trợ nhiều ngôn ngữ lập trình, nền tảng và loại game
khác nhau, bao gồm cả game 2D. Điều này giúp bạn có thể áp dụng kiến thức
học được vào thực tế một cách linh hoạt.
2. Dễ học: Unity có giao diện người dùng trực quan và nhiều tài liệu hướng dẫn,
giúp người mới học lập trình game có thể tiếp cận một cách dễ dàng. Bên cạnh
đó, Unity cung cấp một API mạnh mẽ và dễ sử dụng, giúp việc lập trình game
trở nên dễ dàng hơn.
3. Cộng đồng lớn: Unity có một cộng đồng lập trình viên game lớn và năng
động, nơi mà bạn có thể tìm thấy nhiều hướng dẫn, thảo luận và sự hỗ trợ. Điều
này giúp bạn có thể giải quyết các vấn đề gặp phải một cách nhanh chóng
hiệu quả.
4. Tiết kiệm thời gian và nguồn lực: Unity cung cấp nhiều công cụ và nguồn lực
sẵn có, giúp giảm thiểu thời gian và công sức cần thiết để phát triển một trò chơi
từ đầu. Ví dụ, Unity cung cấp hệ thống vật lý, hệ thống đồ họa, hệ thống âm
thanh, và nhiều công cụ khác
lOMoARcPSD| 45469857
7
1.4. Công cụ thực hiện đề tài
Unity là một game engine đa nền tảng được phát triển bởi công ty Unity
Technologies, chủ yếu được dùng để phát triển video game cho 21 nền tảng
bao gồm máy tính, game consoles (như PlayStation) và điện thoại,
Hơn 50% số lượng game trên thị trường được sản xuất bởi Unity. Một vài
tựa game vô cùng nổi tiếng được tạo ra bởi Unity có thể được kể đến như
Pokémon Go, Hearthstone, Ori And The Blind Forest, Monument Valley,
Axie Infinity,… Độ “phủ sóng” của Unity rất rộng, có thể được áp dụng phổ
biến trong nhiều dòng game khác nhau từ game “hạng nặng” Triple A
(AAA) cho đến game giáo dục đơn giản cho con nít.
Tính năng cơ bản của Unity là gì?
Unity hỗ trợ mạnh các tính năng sau:
Tạo giao diện UI của Game như tạo drop bar, textbox,…
Hiển thị mô hình 3D, 2D hệ thống vật lý 2D, 3D
Networking: Hỗ trợ tạo game chơi nhiều người cùng lúc
Hỗ trợ nền tảng đặc biệt mới: AR – Augmented reality (Thực tế tăng
cường), VR – Virtual reality (Thực tế ảo)
AI Hỗ trợ con bot trong màn hình game, hỗ trợ package tạo nên bot
trong game
Hỗ trợ hiển thị chữ bằng font đặc biệt
Ưu điểm của Unity:
lOMoARcPSD| 45469857
1. Dễ sử dụng và học tập :
Giao diện trực quan, dễ dàng thao tác bằng chuột và kéo thả.
Cộng đồng lớn với nhiều tài liệu hướng dẫn và hỗ trợ miễn phí. Nhiều
khóa học online và offline cho người mới bắt đầu.
2. Đa nền tảng :
Hỗ trợ phát triển game cho nhiều nền tảng như PC, Mac, Linux, mobile,
console, VR/AR.
Tiết kiệm thời gian và chi phí phát triển game cho nhiều nền tảng khác
nhau.
3. Hiệu suất cao :
Tối ưu hóa tốt cho cả phần cứng cấu hình thấp và cao. Phù hợp cho
việc phát triển game 2D và 3D.
4. Cộng đồng lớn và hoạt động :
Diễn đàn, nhóm thảo luận, blog với nhiều thông tin hữu ích.
Nhiều tài nguyên miễn phí và trả phí.
Các sự kiện và hội nghị thường xuyên được tổ chức.
5. Miễn phí :
Phiên bản Unity Personal miễn phí với đầy đủ tính năng cơ bản để phát
triển game.
Phiên bản Unity Professional trả phí với nhiều tính năng nâng cao hơn.
6. Linh hoạt :
Hỗ trợ nhiều ngôn ngữ lập trình như C#, JavaScript, Boo.
Cung cấp nhiều API và plugin để mở rộng tính năng.
Tích hợp với các công cụ khác như 3D Maya, Blender, Photoshop.
Nhược điểm của Unity:
1. Khả năng đồ họa :
Khả năng đồ họa không bằng Unreal Engine.
Không phù hợp cho việc phát triển game 3D cao cấp.
2. Khó khăn trong việc tối ưu hóa :
lOMoARcPSD| 45469857
9
Việc tối ưu hóa game cho các thiết bị di động có thể gặp nhiều khó
khăn. Yêu cầu kiến thức lập trình và kỹ năng để tối ưu hóa hiệu suất
game.
3. Hiệu suất trên web :
Hiệu suất game trên trình duyệt web có thể không tốt so với game chạy
trên máy tính.
Yêu cầu sử dụng các plugin hoặc công nghệ web để cải thiện hiệu suất.
4. Cộng đồng chủ yếu tập trung vào game 2D :
Cộng đồng Unity có nhiều người phát triển game 2D hơn là game 3D.
Khó khăn trong việc tìm kiếm hỗ trợ cho các vấn đề liên quan đến game 3
D.
5. Chi phí phát triển :
Phiên bản Unity Professional trả phí có thể đắt đỏ cho các nhà phát triển
indie.
Chi phí cho các tài nguyên như asset, plugin, server có thể cao.
Tóm lại, Unity là một công cụ phát triển game mạnh mẽ, dễ sử dụng và đa
nền tảng. Tuy nhiên, nó cũng có một số nhược điểm như khả năng đồ họa
hạn chế, khó khăn trong việc tối ưu hóa và chi phí phát triển cao. Lựa chọn
Unity hay không phụ thuộc vào nhu cầu, mục tiêu và ngân sách của bạn.
1.5. Ngôn ngữ sử dụng trong Unity
Ngôn ngữ chủ yếu sử dụng trong Unity là C#( hay C sharp) là một ngôn ngữ lập
trình đơn giản, được phát triển bởi đội ngũ kỹ của Microsoft vào năm 2000 .
C# ngôn ngữ lập trình hiện đại, hướng đối tượng được xây dựng trên nền
tảng của hai ngôn ngữ mạnh nhất là C++ và Java.
Đặc trưng của ngôn ngữ lập trình C# là gì?
C# là ngôn ngữ đơn giản
C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java và c++,
bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo.
Ngôn ngữ C# đơn giản dựa trên nền tảng C và C++. Nếu chúng ta thân thiện
với C và C++ hoặc thậm chí là Java, chúng ta sẽ thấy C# khá giống về diện mạo,
pháp, biểu thức, toán tnhững chức năng khác được lấy trực tiếp từ ngôn
ngữ C và C++, nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn.
lOMoARcPSD| 45469857
C# là ngôn ngữ hiện đại
Điều làm cho một ngôn ngữ hiện đại? Những đặc tính như là xử ngoại lệ, thu
gom bộ nhớ tự động, những kiểu dữ liệu mở rộng, bảo mật mã nguồn là những
đặc tính được mong đợi trong một ngôn ngữ hiện đại. C# chứa tất cả những đặc
tính trên. Nếu người mới học lập trình thể chúng ta sẽ cảm thấy những đặc
tính trên phức tạp và khó hiểu. Tuy nhiên, cũng đừng lo lắng chúng ta sẽ dần dần
được tìm hiểu những đặc tính qua các nội dung khoá học này.
C# là một ngôn ngữ lập trình thuần hướng đối tượng
Lập trình hướng đối tượng (OOP: Object-oriented programming) một phương
pháp lập trình 4 tính chất. Đó tính trừu tượng (abstraction), tính đóng gói
(encapsulation), tính đa hình (polymorphism) tính kế thừa (inheritance) . C#
hỗ trợ cho chúng ta tất cả những đặc tính trên.
C# là một ngôn ngữ ít từ khóa
C# ngôn ngữ sử dụng giới hạn những từ khóa. Phần lớn các từ khóa được sử
dụng để tả thông tin. Chúng ta thể nghĩ rằng một ngôn ngữ nhiều từ khóa
thì sẽ mạnh hơn. Điều này không phải sự thật, ít nhất là trong trường hợp ngôn
ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữ này có thể được sử dụng để làm
bất cứ nhiệm vụ nào.
lOMoARcPSD| 45469857
11
Phần 2. Thực trạng đề tài
2.1 . Thực trạng đề tài này tại Việt Nam
Thực trạng các công ty sử dụng Unity tại Việt Nam:
Sử dụng rộng rãi:
Unity là công cụ phát triển game phổ biến nhất tại Việt Nam, được sử
dụng bởi nhiều công ty game lớn nhỏ.
Lý do chính cho sự phổ biến này là do Unity dễ sử dụng, học tập nhanh
chóng, đa nền tảng và có cộng đồng hỗ trợ lớn.
Ứng dụng đa dạng:
Unity được sử dụng để phát triển nhiều loại game khác nhau, từ game 2D
đơn giản đến game 3D phức tạp, game di động, game PC, game VR/AR.
Một số công ty game lớn tại Việt Nam sử dụng Unity để phát triển game
như VNG, FPT Software, VinaGame, Gamota,...
Xu hướng phát triển:
Nhu cầu sử dụng Unity tại Việt Nam dự kiến sẽ tiếp tục tăng trong những
năm tới, do sự phát triển mạnh mẽ của thị trường game di động và
eSports.
Các công ty game Việt Nam đang ngày càng đầu tư vào việc phát triển
game chất lượng cao, sử dụng Unity như một công cụ chính để hiện thực
hóa ý tưởng của họ.
Tuy nhiên, cũng có một số thách thức:
Thiếu hụt nhân lực có kỹ năng sử dụng Unity là một thách thức lớn cho
các công ty game Việt Nam.
Chi phí bản quyền Unity Professional tương đối cao so với thu nhập bình
quân của người Việt Nam, gây khó khăn cho các công ty game nhỏ và
startup.
Nhìn chung, ngành công nghiệp game Việt Nam đang phát triển mạnh mẽ
và Unity đóng vai trò quan trọng trong sự phát triển này. Với những ưu
điểm và tiềm năng của mình, Unity hứa hẹn sẽ tiếp tục là công cụ phát triển
game được ưa chuộng tại Việt Nam trong thời gian tới.
Một số ví dụ về công ty sử dụng Unity tại Việt Nam:
lOMoARcPSD| 45469857
VNG: Sử dụng Unity để phát triển các game mobile nổi tiếng như
ZingSpeed Mobile, Võ Lâm Truyền Kỳ Mobile, 3Q Mobile.
FPT Software: Sử dụng Unity để phát triển các game PC như Kiếm Thế,
Cổ Kiếm, Võ Lâm 1.
VinaGame: Sử dụng Unity để phát triển các game mobile như MU
Origin, Phong Vân Truyền Kỳ, Võ Lâm Chi Mộng.
Gamota: Sử dụng Unity để phát triển các game mobile như Hải Tặc
Mobile, Truyền Thuyết Bánh Bao, Bích Tuyết Mobile.
SOFA Studio: Sử dụng Unity để phát triển game Flappy Bird VR, được
đánh giá cao trên thị trường game VR quốc tế.
Kết luận:
Unity là công cụ phát triển game mạnh mẽ, dễ sử dụng và đa nền tảng, được sử
dụng rộng rãi bởi các công ty game tại Việt Nam. Với những ưu điểm và tiềm
năng của mình, Unity hứa hẹn sẽ tiếp tục đóng vai trò quan trọng trong sự phát
triển của ngành công nghiệp game Việt Nam trong tương lai.
Phần 3. Kết quả đạt được qua đợt thực tập
Kiến thức:
Đồ họa 2D:
o Nắm vững các khái niệm cơ bản về đồ họa 2D, bao gồm: pixel,
sprite, texture, animation.
o Hiểu biết về các định dạng hình ảnh phổ biến trong game 2D (PNG,
JPG, GIF). o Có khả năng sử dụng các công cụ đồ họa 2D cơ bản
như Adobe Photoshop, GIMP.
Hệ thống tọa độ:
o Hiểu rõ hệ thống tọa độ 2D và cách sử dụng nó để xác định vị trí
của các đối tượng trong game.
o Có khả năng thực hiện các phép toán tọa độ cơ bản như cộng, trừ,
nhân, chia.
Vật lý 2D:
lOMoARcPSD| 45469857
13
o Nắm vững các khái niệm cơ bản về vật lý 2D, bao gồm: lực, chuyển
động, va chạm.
o Hiểu biết về các động cơ vật lý phổ biến trong game 2D (Box2D,
Chipmunk2D).
o Có khả năng áp dụng các nguyên tắc vật lý vào game 2D để tạo ra
chuyển động thực tế cho các đối tượng.
Giao diện người dùng (UI):
o Hiểu biết về các thành phần giao diện người dùng cơ bản (button,
label, image, etc.).
o Có khả năng sử dụng các công cụ UI trong công cụ phát triển game
để tạo giao diện người dùng cho game.
o Hiểu biết về các nguyên tắc thiết kế UI để tạo giao diện người dùng
đẹp mắt và dễ sử dụng.
Tương tác người chơi:
o Nắm vững các khái niệm cơ bản về tương tác người chơi, bao gồm:
sự kiện người chơi (nhấn phím, di chuyển chuột), phản hồi người
chơi.
o Có khả năng xử lý các sự kiện người chơi và tạo ra phản hồi phù
hợp trong game.
Âm thanh:
o Hiểu biết về các định dạng âm thanh phổ biến trong game (MP3,
WAV, OGG).
o Có khả năng sử dụng các công cụ âm thanh trong công cụ phát triển
game để thêm âm thanh và hiệu ứng âm thanh vào game.
o Hiểu biết về cách sử dụng âm thanh để tạo ra bầu không khí và trải
nghiệm tốt hơn cho người chơi.
Logic game:
o Nắm vững các khái niệm cơ bản về logic game, bao gồm: trạng thái
game, điều kiện, vòng lặp.
o Có khả năng lập trình logic game cơ bản để điều khiển cách thức
hoạt động của game.
lOMoARcPSD| 45469857
o Hiểu biết về các kỹ thuật thiết kế game để tạo ra game logic và thú
vị.
Lập trình hướng đối tượng:
o Nắm vững các khái niệm cơ bản về lập trình hướng đối tượng, bao
gồm: lớp, đối tượng, phương thức, thuộc tính.
o Có khả năng sử dụng lập trình hướng đối tượng để thiết kế và lập
trình game 2D.
o Hiểu biết về các lợi ích của việc sử dụng lập trình hướng đối tượng
trong phát triển game.
Kỹ năng:
Có thể tự tạo các game 2D đơn giản:
o Lập trình logic game cơ bản để điều khiển cách thức hoạt động của
game.
o Tạo đồ họa 2D và animation cho game. o Thêm âm thanh và hiệu
ứng âm thanh vào game. o Thiết kế giao diện người dùng (UI) cho
game.
o Kiểm tra và sửa lỗi game.
Có khả năng lập trình logic game cơ bản:
o Xử lý sự kiện người chơi (nhấn phím, di chuyển chuột). o Quản lý
trạng thái game (chơi game, kết thúc game). o Cập nhật và hiển thị
đồ họa game.
o Áp dụng các nguyên tắc vật lý vào game để tạo ra chuyển động
thực tế cho các đối tượng.
o Sử dụng logic game để tạo ra các thử thách và mục tiêu cho người
chơi.
Có khả năng sử dụng các công cụ phát triển game 2D:
o Sử dụng công cụ phát triển game để tạo sprite, animation, âm thanh,
giao diện người dùng.
o Viết code lập trình game bằng ngôn ngữ lập trình phù hợp.
o Kiểm tra và sửa lỗi game bằng các công cụ tích hợp trong công cụ
phát triển game.
lOMoARcPSD| 45469857
15
Có khả năng làm việc nhóm để phát triển game 2D: o Giao tiếp hiệu
quả với các thành viên khác trong
| 1/15

Preview text:

lOMoAR cPSD| 45469857
TRƯỜNG ĐẠI HỌC KINH DOANH VÀ CÔNG NGHỆ HÀ NỘI
KHOA CÔNG NGHỆ TH ÔNG TIN
BÁO CÁO THỰC TẬP TỐT NGHIỆP Đề tài:
TÌM HIỂU VỀ LẬP TRÌNH GAME 2D VỚI UNITY
Sinh viên thực hiện: Hoàng Minh Hùng
Ngành : Công nghệ thông tin Lớp : PM25.14
Hà Nội - Năm 2024 1 lOMoAR cPSD| 45469857 LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành tới Ban lãnh đạo của Công ty CP CodeGym Việt
Nam, các anh chị trong công ty đã tận tình hướng dẫn, chỉ bảo trong quá trình em
thực tập tại công ty. Đồng thời em xin được gửi lời cảm ơn chân thành tới quý thầy,
cô Khoa Công nghệ thông tin, Đại học Kinh doanh và công nghệ Hà Nội đã tận tình
chỉ bảo, hướng dẫn em trong quá trình thực tập, khi gặp phải những khó khăn và
vướng mắc liên quan đến kiến thức chuyên môn. Em xin chân thành cảm ơn. lOMoAR cPSD| 45469857
NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN Ở ĐƠN VỊ THỰC TẬP Mục lục Trang Lời cảm ơn
Nhận xét của cán bộ hướng dẫn thực tập
Nội dung báo cáo thực tập 3 lOMoAR cPSD| 45469857 Phần 1. Cơ sở lý luận
1.1 Giới thiệu về tổ chức thực tập
1.2 Nhiệm vụ chính được giao
1.3 . Lý do chọn đề tài
1.4 Công cụ thực hiện đề tài
1.5 Ngôn ngữ và giải thuật
Phần 2. Thực trạng đề tài
2.1 Thực trạng đề tài ở Việt Nam
Phần 3. Kết quả đạt được qua đợt thực tập
NỘI DUNG BÁO CÁO THỰC TẬP
PHẦN 1. CƠ SỞ LÝ LUẬN
1.1. Giới thiệu về tổ chức nơi thực tập: Công ty CP CodeGym.
- Khẩu hiệu : CHÚNG TÔI LÀ CODEGYM NỖ LỰC ĐỂ MANG ĐẾN
NHIỀU GIÁ TRỊ HƠN CHO CUỘC SỐNG Công nghệ Thông tin là
một ngành lớn và quan trọng của Việt Nam, nhưng sự thiếu hụt nhân lực
cả về số lượng và chất lượng luôn là một rào cản để phát triển. Nhân lực
là mấu chốt quan trọng nhất để thúc đẩy ngành CNTT nước nhà phát
triển. Thấu hiểu được tình trạng đó, các nhà sáng lập của CodeGym –
vốn xuất thân là các lập trình viên nhiều năm kinh nghiệm, giảng viên,
chủ doanh nghiệp phần mềm có tâm huyết – đã quyết định xây dựng nên
một mô hình đào tạo lập trình đột phá, giúp nâng cao hiệu quả và chất
lượng đào tạo. Không chỉ đủ để đóng góp một số lượng lớn lập trình
viên cho ngành, mà còn thông qua đó nâng cao tiêu chuẩn chất lượng của ngành.
- Loại hình doanh nghiệp: Công ty cổ phần
1.2. Nhiệm vụ chính được giao
- Tìm hiểu lập trình game 2D cơ bản với Unity
1.3. Lý do lựa chọn đề tài lOMoAR cPSD| 45469857
Thực trạng ngành game Việt Nam hiện nay :
Phát triển mạnh mẽ:
Thị trường tiềm năng:
o Số lượng game thủ đông đảo: 60% dân số tham gia chơi game,
trong đó 43% chơi game mobile.
o Tỷ lệ người chơi chi trả cho game gia tăng: 75% người chơi sẵn sàng chi tiền cho game.
o Lượng người xem eSports cao: 23 triệu người xem các giải đấu eSports. •
Sự tham gia của các nhà đầu tư:
o Lượng vốn đầu tư vào ngành game tăng cao: 200 triệu USD trong năm 2022.
o Xuất hiện nhiều quỹ đầu tư chuyên biệt cho ngành game.
o Các startup game thu hút được nhiều vốn đầu tư. •
Sự phát triển của các phân khúc game:
o Game mobile: Phân khúc phát triển mạnh nhất, chiếm 54% thị phần.
o Game PC: Dù bị ảnh hưởng bởi sự phát triển của game mobile
nhưng vẫn duy trì lượng người chơi nhất định.
o Game console: Thị trường đang mở rộng với sự ra mắt của
PlayStation 5 và Xbox Series X/S. •
Nền tảng livestream và eSports:
o Livestream game thu hút lượng lớn người xem: 40 triệu người xem livestream game mỗi tháng.
o eSports phát triển mạnh mẽ, thu hút nhiều giải đấu và nhà tài trợ.
Tuy nhiên, vẫn còn một số thách thức:
Thiếu hụt nhân lực:
o Nhu cầu nhân lực cao nhưng nguồn cung chưa đáp ứng đủ.
o Chất lượng nhân lực chưa đồng đều. •
Hạ tầng công nghệ: 5 lOMoAR cPSD| 45469857
o Hệ thống internet chưa đáp ứng đủ nhu cầu chơi game online, đặc
biệt ở khu vực nông thôn.
o Giá thành thiết bị chơi game còn cao. •
Sự cạnh tranh gay gắt:
o Thị trường game có nhiều nhà phát hành, cạnh tranh cao.
o Các game nước ngoài chiếm ưu thế trên thị trường. •
Vấn đề quản lý:
o Hệ thống pháp lý chưa hoàn thiện, dẫn đến khó khăn trong việc
quản lý hoạt động game.
o Việc kiểm soát nội dung game còn nhiều hạn chế.
Nhìn chung, ngành game Việt Nam đang phát triển mạnh mẽ với nhiều
tiềm năng.
Tuy nhiên, để phát triển bền vững, ngành game cần giải quyết các
thách thức về nhân lực, hạ tầng công nghệ, cạnh tranh và quản lý.
Vậy nên em lựa chọn bước đầu làm quen với việc làm game 2d cơ bản với
Unity với một số lý do sau:
1. Phổ biến và phù hợp: Unity là một trong những công cụ phát triển game phổ
biến nhất hiện nay. Nó hỗ trợ nhiều ngôn ngữ lập trình, nền tảng và loại game
khác nhau, bao gồm cả game 2D. Điều này giúp bạn có thể áp dụng kiến thức
học được vào thực tế một cách linh hoạt.
2. Dễ học: Unity có giao diện người dùng trực quan và nhiều tài liệu hướng dẫn,
giúp người mới học lập trình game có thể tiếp cận một cách dễ dàng. Bên cạnh
đó, Unity cung cấp một API mạnh mẽ và dễ sử dụng, giúp việc lập trình game trở nên dễ dàng hơn.
3. Cộng đồng lớn: Unity có một cộng đồng lập trình viên game lớn và năng
động, nơi mà bạn có thể tìm thấy nhiều hướng dẫn, thảo luận và sự hỗ trợ. Điều
này giúp bạn có thể giải quyết các vấn đề gặp phải một cách nhanh chóng và hiệu quả.
4. Tiết kiệm thời gian và nguồn lực: Unity cung cấp nhiều công cụ và nguồn lực
sẵn có, giúp giảm thiểu thời gian và công sức cần thiết để phát triển một trò chơi
từ đầu. Ví dụ, Unity cung cấp hệ thống vật lý, hệ thống đồ họa, hệ thống âm
thanh, và nhiều công cụ khác lOMoAR cPSD| 45469857
1.4. Công cụ thực hiện đề tài
Unity là một game engine đa nền tảng được phát triển bởi công ty Unity
Technologies, chủ yếu được dùng để phát triển video game cho 21 nền tảng
bao gồm máy tính, game consoles (như PlayStation) và điện thoại, …
Hơn 50% số lượng game trên thị trường được sản xuất bởi Unity. Một vài
tựa game vô cùng nổi tiếng được tạo ra bởi Unity có thể được kể đến như
Pokémon Go, Hearthstone, Ori And The Blind Forest, Monument Valley,
Axie Infinity,… Độ “phủ sóng” của Unity rất rộng, có thể được áp dụng phổ
biến trong nhiều dòng game khác nhau từ game “hạng nặng” Triple A
(AAA) cho đến game giáo dục đơn giản cho con nít.
Tính năng cơ bản của Unity là gì?
Unity hỗ trợ mạnh các tính năng sau: •
Tạo giao diện UI của Game như tạo drop bar, textbox,… •
Hiển thị mô hình 3D, 2D – hệ thống vật lý 2D, 3D •
Networking: Hỗ trợ tạo game chơi nhiều người cùng lúc •
Hỗ trợ nền tảng đặc biệt mới: AR – Augmented reality (Thực tế tăng
cường), VR – Virtual reality (Thực tế ảo) •
AI – Hỗ trợ con bot trong màn hình game, hỗ trợ package tạo nên bot trong game •
Hỗ trợ hiển thị chữ bằng font đặc biệt • …
Ưu điểm của Unity: 7 lOMoAR cPSD| 45469857
1. Dễ sử dụng và học tập :
Giao diện trực quan, dễ dàng thao tác bằng chuột và kéo thả. •
Cộng đồng lớn với nhiều tài liệu hướng dẫn và hỗ trợ miễn phí. Nhiều
khóa học online và offline cho người mới bắt đầu. 2. Đa nền tảng :
Hỗ trợ phát triển game cho nhiều nền tảng như PC, Mac, Linux, mobile, console, VR/AR. •
Tiết kiệm thời gian và chi phí phát triển game cho nhiều nền tảng khác nhau. 3. Hiệu suất cao :
Tối ưu hóa tốt cho cả phần cứng cấu hình thấp và cao. Phù hợp cho
việc phát triển game 2D và 3D.
4. Cộng đồng lớn và hoạt động :
Diễn đàn, nhóm thảo luận, blog với nhiều thông tin hữu ích. •
Nhiều tài nguyên miễn phí và trả phí. •
Các sự kiện và hội nghị thường xuyên được tổ chức. 5. Miễn phí :
Phiên bản Unity Personal miễn phí với đầy đủ tính năng cơ bản để phát triển game. •
Phiên bản Unity Professional trả phí với nhiều tính năng nâng cao hơn. 6. Linh hoạt :
Hỗ trợ nhiều ngôn ngữ lập trình như C#, JavaScript, Boo. •
Cung cấp nhiều API và plugin để mở rộng tính năng. •
Tích hợp với các công cụ khác như 3D Maya, Blender, Photoshop.
Nhược điểm của Unity:
1. Khả năng đồ họa :
Khả năng đồ họa không bằng Unreal Engine. •
Không phù hợp cho việc phát triển game 3D cao cấp.
2. Khó khăn trong việc tối ưu hóa : lOMoAR cPSD| 45469857
Việc tối ưu hóa game cho các thiết bị di động có thể gặp nhiều khó khăn.
Yêu cầu kiến thức lập trình và kỹ năng để tối ưu hóa hiệu suất game.
3. Hiệu suất trên web :
Hiệu suất game trên trình duyệt web có thể không tốt so với game chạy trên máy tính. •
Yêu cầu sử dụng các plugin hoặc công nghệ web để cải thiện hiệu suất.
4. Cộng đồng chủ yếu tập trung vào game 2D :
Cộng đồng Unity có nhiều người phát triển game 2D hơn là game 3D. •
Khó khăn trong việc tìm kiếm hỗ trợ cho các vấn đề liên quan đến game 3 D.
5. Chi phí phát triển :
Phiên bản Unity Professional trả phí có thể đắt đỏ cho các nhà phát triển indie. •
Chi phí cho các tài nguyên như asset, plugin, server có thể cao.
Tóm lại, Unity là một công cụ phát triển game mạnh mẽ, dễ sử dụng và đa
nền tảng. Tuy nhiên, nó cũng có một số nhược điểm như khả năng đồ họa
hạn chế, khó khăn trong việc tối ưu hóa và chi phí phát triển cao. Lựa chọn
Unity hay không phụ thuộc vào nhu cầu, mục tiêu và ngân sách của bạn.

1.5. Ngôn ngữ sử dụng trong Unity
Ngôn ngữ chủ yếu sử dụng trong Unity là C#( hay C sharp) là một ngôn ngữ lập
trình đơn giản, được phát triển bởi đội ngũ kỹ sư của Microsoft vào năm 2000 .
C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và được xây dựng trên nền
tảng của hai ngôn ngữ mạnh nhất là C++ và Java.
Đặc trưng của ngôn ngữ lập trình C# là gì?
C# là ngôn ngữ đơn giản
C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java và c++,
bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo.
Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++. Nếu chúng ta thân thiện
với C và C++ hoặc thậm chí là Java, chúng ta sẽ thấy C# khá giống về diện mạo,
cú pháp, biểu thức, toán tử và những chức năng khác được lấy trực tiếp từ ngôn
ngữ C và C++, nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn. 9 lOMoAR cPSD| 45469857
C# là ngôn ngữ hiện đại
Điều gì làm cho một ngôn ngữ hiện đại? Những đặc tính như là xử lý ngoại lệ, thu
gom bộ nhớ tự động, những kiểu dữ liệu mở rộng, và bảo mật mã nguồn là những
đặc tính được mong đợi trong một ngôn ngữ hiện đại. C# chứa tất cả những đặc
tính trên. Nếu là người mới học lập trình có thể chúng ta sẽ cảm thấy những đặc
tính trên phức tạp và khó hiểu. Tuy nhiên, cũng đừng lo lắng chúng ta sẽ dần dần
được tìm hiểu những đặc tính qua các nội dung khoá học này.
C# là một ngôn ngữ lập trình thuần hướng đối tượng
Lập trình hướng đối tượng (OOP: Object-oriented programming) là một phương
pháp lập trình có 4 tính chất. Đó là tính trừu tượng (abstraction), tính đóng gói
(encapsulation), tính đa hình (polymorphism) và tính kế thừa (inheritance) . C#
hỗ trợ cho chúng ta tất cả những đặc tính trên.
C# là một ngôn ngữ ít từ khóa
C# là ngôn ngữ sử dụng giới hạn những từ khóa. Phần lớn các từ khóa được sử
dụng để mô tả thông tin. Chúng ta có thể nghĩ rằng một ngôn ngữ có nhiều từ khóa
thì sẽ mạnh hơn. Điều này không phải sự thật, ít nhất là trong trường hợp ngôn
ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữ này có thể được sử dụng để làm bất cứ nhiệm vụ nào. lOMoAR cPSD| 45469857
Phần 2. Thực trạng đề tài
2.1 . Thực trạng đề tài này tại Việt Nam
Thực trạng các công ty sử dụng Unity tại Việt Nam:
Sử dụng rộng rãi:
Unity là công cụ phát triển game phổ biến nhất tại Việt Nam, được sử
dụng bởi nhiều công ty game lớn nhỏ. •
Lý do chính cho sự phổ biến này là do Unity dễ sử dụng, học tập nhanh
chóng, đa nền tảng và có cộng đồng hỗ trợ lớn.
Ứng dụng đa dạng:
Unity được sử dụng để phát triển nhiều loại game khác nhau, từ game 2D
đơn giản đến game 3D phức tạp, game di động, game PC, game VR/AR. •
Một số công ty game lớn tại Việt Nam sử dụng Unity để phát triển game
như VNG, FPT Software, VinaGame, Gamota,...
Xu hướng phát triển:
Nhu cầu sử dụng Unity tại Việt Nam dự kiến sẽ tiếp tục tăng trong những
năm tới, do sự phát triển mạnh mẽ của thị trường game di động và eSports. •
Các công ty game Việt Nam đang ngày càng đầu tư vào việc phát triển
game chất lượng cao, sử dụng Unity như một công cụ chính để hiện thực hóa ý tưởng của họ.
Tuy nhiên, cũng có một số thách thức:
Thiếu hụt nhân lực có kỹ năng sử dụng Unity là một thách thức lớn cho
các công ty game Việt Nam. •
Chi phí bản quyền Unity Professional tương đối cao so với thu nhập bình
quân của người Việt Nam, gây khó khăn cho các công ty game nhỏ và startup.
Nhìn chung, ngành công nghiệp game Việt Nam đang phát triển mạnh mẽ
và Unity đóng vai trò quan trọng trong sự phát triển này.
Với những ưu
điểm và tiềm năng của mình, Unity hứa hẹn sẽ tiếp tục là công cụ phát triển
game được ưa chuộng tại Việt Nam trong thời gian tới.
Một số ví dụ về công ty sử dụng Unity tại Việt Nam: 11 lOMoAR cPSD| 45469857 •
VNG: Sử dụng Unity để phát triển các game mobile nổi tiếng như
ZingSpeed Mobile, Võ Lâm Truyền Kỳ Mobile, 3Q Mobile. •
FPT Software: Sử dụng Unity để phát triển các game PC như Kiếm Thế, Cổ Kiếm, Võ Lâm 1. •
VinaGame: Sử dụng Unity để phát triển các game mobile như MU
Origin, Phong Vân Truyền Kỳ, Võ Lâm Chi Mộng. •
Gamota: Sử dụng Unity để phát triển các game mobile như Hải Tặc
Mobile, Truyền Thuyết Bánh Bao, Bích Tuyết Mobile. •
SOFA Studio: Sử dụng Unity để phát triển game Flappy Bird VR, được
đánh giá cao trên thị trường game VR quốc tế. Kết luận:
Unity là công cụ phát triển game mạnh mẽ, dễ sử dụng và đa nền tảng, được sử
dụng rộng rãi bởi các công ty game tại Việt Nam. Với những ưu điểm và tiềm
năng của mình, Unity hứa hẹn sẽ tiếp tục đóng vai trò quan trọng trong sự phát
triển của ngành công nghiệp game Việt Nam trong tương lai.
Phần 3. Kết quả đạt được qua đợt thực tập Kiến thức:Đồ họa 2D:
o Nắm vững các khái niệm cơ bản về đồ họa 2D, bao gồm: pixel, sprite, texture, animation.
o Hiểu biết về các định dạng hình ảnh phổ biến trong game 2D (PNG,
JPG, GIF). o Có khả năng sử dụng các công cụ đồ họa 2D cơ bản như Adobe Photoshop, GIMP. •
Hệ thống tọa độ:
o Hiểu rõ hệ thống tọa độ 2D và cách sử dụng nó để xác định vị trí
của các đối tượng trong game.
o Có khả năng thực hiện các phép toán tọa độ cơ bản như cộng, trừ, nhân, chia. • Vật lý 2D: lOMoAR cPSD| 45469857
o Nắm vững các khái niệm cơ bản về vật lý 2D, bao gồm: lực, chuyển động, va chạm.
o Hiểu biết về các động cơ vật lý phổ biến trong game 2D (Box2D, Chipmunk2D).
o Có khả năng áp dụng các nguyên tắc vật lý vào game 2D để tạo ra
chuyển động thực tế cho các đối tượng. •
Giao diện người dùng (UI):
o Hiểu biết về các thành phần giao diện người dùng cơ bản (button, label, image, etc.).
o Có khả năng sử dụng các công cụ UI trong công cụ phát triển game
để tạo giao diện người dùng cho game.
o Hiểu biết về các nguyên tắc thiết kế UI để tạo giao diện người dùng
đẹp mắt và dễ sử dụng. •
Tương tác người chơi:
o Nắm vững các khái niệm cơ bản về tương tác người chơi, bao gồm:
sự kiện người chơi (nhấn phím, di chuyển chuột), phản hồi người chơi.
o Có khả năng xử lý các sự kiện người chơi và tạo ra phản hồi phù hợp trong game. • Âm thanh:
o Hiểu biết về các định dạng âm thanh phổ biến trong game (MP3, WAV, OGG).
o Có khả năng sử dụng các công cụ âm thanh trong công cụ phát triển
game để thêm âm thanh và hiệu ứng âm thanh vào game.
o Hiểu biết về cách sử dụng âm thanh để tạo ra bầu không khí và trải
nghiệm tốt hơn cho người chơi. • Logic game:
o Nắm vững các khái niệm cơ bản về logic game, bao gồm: trạng thái
game, điều kiện, vòng lặp.
o Có khả năng lập trình logic game cơ bản để điều khiển cách thức hoạt động của game. 13 lOMoAR cPSD| 45469857
o Hiểu biết về các kỹ thuật thiết kế game để tạo ra game logic và thú vị. •
Lập trình hướng đối tượng:
o Nắm vững các khái niệm cơ bản về lập trình hướng đối tượng, bao
gồm: lớp, đối tượng, phương thức, thuộc tính.
o Có khả năng sử dụng lập trình hướng đối tượng để thiết kế và lập trình game 2D.
o Hiểu biết về các lợi ích của việc sử dụng lập trình hướng đối tượng trong phát triển game. Kỹ năng:
Có thể tự tạo các game 2D đơn giản:
o Lập trình logic game cơ bản để điều khiển cách thức hoạt động của game.
o Tạo đồ họa 2D và animation cho game. o Thêm âm thanh và hiệu
ứng âm thanh vào game. o Thiết kế giao diện người dùng (UI) cho game.
o Kiểm tra và sửa lỗi game. •
Có khả năng lập trình logic game cơ bản:
o Xử lý sự kiện người chơi (nhấn phím, di chuyển chuột). o Quản lý
trạng thái game (chơi game, kết thúc game). o Cập nhật và hiển thị đồ họa game.
o Áp dụng các nguyên tắc vật lý vào game để tạo ra chuyển động
thực tế cho các đối tượng.
o Sử dụng logic game để tạo ra các thử thách và mục tiêu cho người chơi. •
Có khả năng sử dụng các công cụ phát triển game 2D:
o Sử dụng công cụ phát triển game để tạo sprite, animation, âm thanh, giao diện người dùng.
o Viết code lập trình game bằng ngôn ngữ lập trình phù hợp.
o Kiểm tra và sửa lỗi game bằng các công cụ tích hợp trong công cụ phát triển game. lOMoAR cPSD| 45469857 •
Có khả năng làm việc nhóm để phát triển game 2D: o Giao tiếp hiệu
quả với các thành viên khác trong 15