- 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
Trang 1TRƯỜ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
Trang 2LỜ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
Trang 3NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN Ở ĐƠN VỊ THỰC TẬP
Trang 4Mụ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
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
Trang 5NỘ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
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
Trang 6o 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ệ:
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ý:
Trang 7o 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
Trang 81.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
Trang 9Ưu điểm của Unity:
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í
Trang 10 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:
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 3D
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
Trang 11Tó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
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
Trang 12C# 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
Trang 13Phầ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
Trang 14Một số ví dụ về công ty sử dụng Unity tại Việt Nam:
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
Trang 15Phầ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:
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:
Trang 16o 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
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