Game Engine là một công cụ hỗ trợ, mộtMiddleware giúp người phát triển viết Game một cách nhanh chóng và đơn giản,đồng thời cung cấp khả năng tái sử dụng các tài nguyên và mã nguồn cao c
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
PBL4: DỰ ÁN HỆ ĐIỀU HÀNH &
MẠNG MÁY TÍNH
Đề tài : XÂY DỰNG GAME CHƠI CỜ VUA
ONLINE
SINH VIÊN THỰC HIỆN:
GIẢNG VIÊN HƯỚNG DẪN: ThS.Trần Hồ Thủy Tiên
Trang 2PBL4: DỰ ÁN HỆ ĐIỀU HÀNH & MẠNG MÁY
TÍNH
MỤC LỤC
MỤC LỤC 2
DANH SÁCH HÌNH VẼ 4
MỞ ĐẦU 5
LỜI CẢM ƠN 6
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 7
1 TỔNG QUAN VỀ ENGINE UNITY VÀ KHÔNG GIAN 2D, 3D 7 1.1 Unity là gì? 7
1.2 T ổng quan về Game Engine 8
1.3 Unity Engine 9
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 13
1 CÁC ĐẶC ĐIỂM VÀ TÍNH NĂNG CỦA UNITY 13
1.1 Rendering (kết xuất hình ảnh) 13
1.2 Lighting (ánh sáng) 13
1.3 T errains (địa hình) 13
1.4 Substances (Texture thông minh) 14
1.5 Physics (vật lí) 14
1.6 Pathíinding (tìm đường) 14
1.7 Programming (lập trình) 14
1.8 Networking 14
2 CÁC THÀNH PHẦN TRONG UNITY 15
2.1 Assets 15
2.2 Scenes 15
2.3 Game Object 15
2.4 Component 16
2.5 Scripts 17
Trang 3PBL4: DỰ ÁN HỆ ĐIỀU HÀNH & MẠNG MÁY TÍNH
3.1 Giao diện và chức năng đăng nhập, đăng ký 19
3.1.1 Chức năng đăng nhập 19
3.1.2 Chức năng đăng ký 20
3.2 Giao diện và chế độ chơi Local , Online 21
3.2.1 Chế độ chơi Local 21
3.2.2 Chế độ chơi Online 22
CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 26
1 GIỚI THIỆU GAME 26
1.1 Quy luật chơi chính: 27
1.1.1 Di chuyển quân cờ: 27
1.1.2 Ăn quân cờ: 27
1.1.3 Đầu hàng (Surrend): 28
CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 28
1 KẾT LUẬN 28
2 HƯỚNG PHÁT TRIỂN 28
TÀI LIỆU THAM KHẢO 29
Trang 4DANH SÁCH HÌNH VẼ
Hình 1.1 Tổng quan Unity
Hình 1.2 Logo Unity
Hình 1.3 Kiến trúc Unity
Hình 2.1 Assets trong Unity
Hình 2.2 Scenes trong Unity
Hình 2.3 GameObject trong Unity
Hình 2.4 Component trong Unity
Hình 2.5 Tạo một Script mới
Hình 2.6 Một file Script đang gắn vào đối tượng
Hình 2.7 Một số đối tượng trong Prefabs
Hình 3.1 Thiết kế giao diện chính
Hình 3.2 Sử dụng Firebase để quản lý tài khoản đăng nhập vào gameHình 3.3 Thiết kế cho chức năng đăng ký
Hình 3.4 Quản lý tài khoản người chơi thông qua firebase
Hình 3.5 Giao diện sau khi đăng nhập
Hình 3.6 Vào game ngay sau khi chọn chế độ Local
Hình 3.7 Phần mềm Radmin VPN
Hình 3.8 Màn hình chơi Online
Hình 3.9 Màn hình chủ phòng đang đợi người chơi
Hình 3.10 Màn hình khi chủ phòng và người chơi đã kết nối thành công vàvào game
Hình 4.1 Màn hình di chuyển quân cờ
Hình 4.2 Màn hình ăn quân cờ
Trang 5MỞ ĐẦU
Trong thời đại công nghệ thông tin như hiện nay, sản phẩm công nghệ ngàycàng chịu sự đánh giá khắt khe hơn từ phía người dùng, đặc biệt là về sản phầnGame được nhận rất nhiều sự đánh giá từ phía các Game thủ, hay chỉ là nhữngngười chơi bình thường Ngành công nghiệp Game hiện nay có thể nói là bùng
nổ, với tốc độ phát triển đến chóng mặt, rất nhiều những Game hay và hấp dẫn
đã được ra đời trong thời gian qua Phía sau những Game phát triển và nổi tiếngnhư vậy đều có một Game Engine Game Engine là một công cụ hỗ trợ, mộtMiddleware giúp người phát triển viết Game một cách nhanh chóng và đơn giản,đồng thời cung cấp khả năng tái sử dụng các tài nguyên và mã nguồn cao có thểphát triển nhiều Game từ một Game Engine
Từ xu hướng phát triển và nhũng bất cập trên, đồ án này sẽ khảo sát vànghiên cứu về Engine Unity - một Game Engine rất phổ biến và không kémmạnh mẽ hiện nay nhằm thực nghiệm việc phát triển một trò chơi (Demo) CờVua 3D Chuẩn bị kiến thức và kỹ năng cho định hướng nghề nghiệp (phát triểnGame) sau này của chúng em, góp phần vào sự phát triển của ngành côngnghiệp Game nước nhà Các chương đầu trong tài liệu sẽ trình bày lần lượt cáckhái niệm chung về Game Engine về thế giới 3D
Các chương tiếp theo sẽ giới thiệu về Engine Unity bao gồm các đặc điểm,tính năng, công cụ và thành phần trong Engine này Sau những nội dung về thiết
kế, tài liệu sẽ trình bày về việc lập trình trên Untiy khi giới thiệu ngôn ngữ lậptrình cùng các lớp, hàm trong thư viện dựng sẵn của Unity thông qua các ví dụthực tế khi phát triển một game Cờ Vua 3D
Trang 6PBL4: DỰ ÁN HỆ ĐIỀU HÀNH & MẠNG MÁY TÍNH
LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn thầy cô Khoa Công Nghệ Thông Tin ,trường Đại học Bách Khoa Đà Nằng đã tạo điều kiện tốn cho chúng em thựchiện đề tài này
Em xin chân thành cảm ơn cô Trần Hồ Thủy Tiên, là người đã chỉ rõ nhữnghướng đi cũng như quá trình lựa chọn thực hiện và hoàn thành đề tài
Mặc dù chúng em đã cố gắng hoàn thành đồ án trong phạm vi khả năng chophép, nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong sự cảmthông và tận tình chỉ bảo của quý Thầy Cô và các bạn
Nhóm sinh viên thực hiện.
Nguyễn Mạnh ĐứcNguyễn Lê Nhật MinhNguyễn Văn Vĩnh
Trang 7CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1 TỔNG QUAN VỀ ENGINE UNITY VÀ KHÔNG GIAN 2D, 3D 1.1 Unity là gì?
Đã qua rồi thời kỳ làm game trên nền Flash căn bản và buồn chán vớinhững chuyển động thật cứng nhắc Unity mang lại sức mạnh kỳ diệu chonhân vật mà chúng ta muốn thể hiện sống động hơn trong không gian 3chiều đầy huyển ảo Công nghệ cao này tạo ra một bước đột phá mới về
sự khác biệt trong công nghệ làm game hiện này, mang đến cho ngườichơi 1 cảm giác rất khác lạ và hào hứng trong từng chuyển động, tươnglai công nghệ này được áp dụng vào game Việt Name sẽ mở ra một trangmới trong thế giới game 2D, 3D huyền ảo
Hình 1.1 Tổng quan Unity
Unity được dùng để làm video game, hoặc những nội dung có tínhtương tác như thể hiện kiến trúc, hoạt hình 2D, 3D thời gian thực Unityhao hao với Director, Blender game engine, Virtool shay Torque GameBuilder trong khía cạnh dùng môi trường đồ họa tích hợp ở quá trình pháttriển game là chính
Unity là một trong những Engine được giới làm game không chuyêncực kỳ ưu chuộng bởi khả năng tuyệt vời của nó là phát triển trò chơi đanền Trình biên tập có thể chạy trên Windows và MacOS, và có thể xuất
ra game cho Windows, Mac, Wii, IOS, Android Game cũng có thể chơitrên trình duyệt web thông qua plugin Unity WebPlayer Unity mới bổ
Trang 8sung khả năng xuất ra game trên widget cho Mac, và cả Xbox 360,
PlayStaytion 3, 4.
Chỉ với khoản tiền bỏ ra khá khiêm tốn ( 1.500 USD ) là phiên bảnpro đã nằm trong tay chúng ta, dĩ nhiên tại Việt Nam số tiền này vẫn làquá lớn nhưng thật may là đã có phiên bản Unity free Tuy nhiên, nhiềutính năng quan trọng (Network) bị cắt giảm nhưng đó không phải là vấn
đề quá lớn nếu muốn phát triển tựa game tầm trung
Vào năm 2009, Unity nằm trong top 5 game engine tốt nhất cho việcsản xuất game với chỉ sau 4 năm phát triển Unity đứng thứ 4, xếp sauUnreal Engine 3, Gamebryo Engine (được VTC Studio mua về phát triểnSQUAD) và Cry Engine 2 Lượng tài liệu hướng dẫn Unity rấy phongphú Hơn thế nó còn có sẵn một cộng đồng cực lớn với diễn đàn riêng.Bất cử điều gì không hiểu chúng ta đều có thể thoải mái hỏi và nhận đượccâu trả lời nhanh chóng, tận tâm
Quá trình tạo địa hình cũng như truy xuất từ các phần mềm 3DSMax,Mây, Cinema4D rất nhanh chóng, Sức mạnh và sự tiện lợi của Unity là
vô cùng lớn
Sức mạnh: Unity có thể tạo ra nhiều loại game 2D, 3D đa dạng, dễ sửdụng với những người làm game chưa chuyên nghiệp, chất lượng cao,chạy hầu hết trên các hệ điều hành
1.2 Tổng quan về Game Engine
a) Khái niệm
Một game Engine (hay công cụ tạo Game/động cơ Game) là mộtphần mềm được viết cho mục đích thiết kế và phát triển video Game Córất nhiều loại Game Engine dùng để thiết kế Game cho các hệ máy như hệConsoles hay máy tính cá nhân (PC) Chức năng cốt lõi của Game Enginephần lớn nằm trong công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh
2 chiều (2D) hay 3 chiều (3D), công cụ vật lý (hay công cụ tính toán vàphát hiện va chạm), âm thanh, mã nguồn, hình ảnh động (Animation), trítuệ nhân tạo, phân luồng, tạo dòng dữ liệu xử lý, quản lý bộ nhớ, dựngảnh đồ thị, và kết nối mạng Quá trình phát triển Game tiết kiệm được rấtnhiều thời gian và kinh phí vào việc tái sử dụng và tái thích ứng mộtEngine để tạo nhiều Game khác nhau
b) Mục đích
Trang 9PBL4: DỰ ÁN HỆ ĐIỀU HÀNH & MẠNG MÁY TÍNH
Game Engine cung cấp một bộ phận các công cụ phát triển trựcquan và có thể tái sử dụng từng thành phần trong đó Nói chung các bộcông cụ này cung cấp một môi trường phát triển tích hợp được đơn giảnhóa Phá triển ứng dụng nhanh (Rapid Application Development) choGame theo cách lập trình hướng dữ liệu, Những Game Engine này đôi khicòn được gọi là các “ phần mềm trung gian cho Game” (GameMiddleware), như ý nghĩa của thuật ngữ, chúng cung cấp một nền tảngphần mềm linh hoạt và dễ dàng sử dụng lại với mọi chức năng cốt lõi cầnthiết ngay trong nó để có thể phát triển một ứng dụng Game đồng thờigiảm giá thành, độ phức tạp, và kịp thời hạn phát hành - tất cả các yếu tốquan trọng trong nghành công nghiệp Game đầy cạnh tranh Giống nhưcác phần mềm trung gian khác, Game Engine thường cung cấp một nềntảng trừu tượng hóa, cho phéo một Game có thể chay trên nhiều hệ máybao gồm các hệ Consoles hoặc máy tính cá nhân với một vài thay đổi (nếucần) trong mã nguồn của Game đó Thông thường, phần mềm trung giancho Game được thiết kế với một nền tảng kiến trúc dựa trên các thànhphần khác, cho phép các hệ thống khác nhau trong Engine có thể thay thếhoặc mở rộng với các phần mềm trung gian khác chuyên biệt hơn như làHavok cho hệ thống vật lý trong Game, Miles Sound System cho âmthanh, hay Bink cho các đoạn video Một số Game Engine chỉ cung cấpkhả năng dựng hính (kết xuất) 3D thời gian thực hay một khả năng riêngbiệt nào khác thay vì rất nhiều chức năng trong phạm vi rộng mà Gameyêu cầu Loại Engine này thường được gọi là “Graphics Engine”,
“Rendering Engine”, hay “3D Engine) thay vì thuật ngữ bao quát hơn là
“Game Engine” Một vài ví dụ cho các Engine đồ họa là :RealmForge,Truevision3D, OGRE, Crystal Space, Genesis3D, Vision Engine, Irrlicht
và JMonkey Engine
1.3 Unity Engine
a) Giới thiệu chung
Trang 10PBL4: DỰ ÁN HỆ ĐIỀU HÀNH & MẠNG MÁY
TÍNH
Hình 1.2 Logo Unity
Nhà phát triển: Unity Technologies
Phiên bản mới nhất: Unity Version: 2020.3.17f1
Được viết bởi ngôn ngữ: C++;C#
Phát triển Game cho các hệ điều hành : Window, MacOSX, Wii,iPhone/iPad, Xbox 360, Android, PS3/
do chúng ta viết sẽ được Unity biên dịch ra Mono trước khi nó được thựcthi Điều này rất quang trọng cho Game để thực thi code vào những thờiđiểm cần thiết trong suốt thời gian chạy (RunTime)
Ngoài thư viện Mono, Unity cũng tận dụng chức năng của những thưviện phần mềm khác vào chức năng của nó, như Engine mô phỏng vật lýPhysicX của Nvidia, OpenGL và DirectX cho kết xuất hình ảnh 3D,OpenAL cho âm thanh, Tất cả các thư viện này được xây dựng thànhnhững tính năng tự độg hoặc công cụ trực quan vào Unity, vì thế chúng ta
Trang 11PBL4: DỰ ÁN HỆ ĐIỀU HÀNH & MẠNG MÁY TÍNH
không cần phải lo lắng về việc phải học thế nào để sử dụng
b) Kiến trúc Unity Engine
Engine Unity hỗ trợ cho chúng ta UnityAPI để viết các script game.UnityAPI là API lập trình game trong Unity rất mạnh UnityAPI chứa cácđối tượng và phương thức hỗ trợ hầu hết các đối tượng và các loại thànhphần trong Unity
Trong một scene thường có nhiều đối tượng game Mỗi đối tượngnày có thể có hoặc không có đoạn script nào gắn lên đó Nếu muốn gắnscript vào đối tượng, ta bắt buộc phải kế thừa class đó từ lớp
MonoBehaviour của UnityAPI và tên class phải trùng với tên file script.
Mỗi script khi gắn lên đối tượng game đều được đối tượng game xem nhưmột thành phần bên trong và được cấp phát vùng nhớ khi chạy game
Trang 12PBL4: DỰ ÁN HỆ ĐIỀU HÀNH & MẠNG MÁY
MonoBehaviour: Tất cả các script muốn gắn vào một đối tượng game bắt
buộc phải kế thừa từ lớp này
GameObject: Lớp cha của tất cả các thực thể trong scene.
Component: Lớp cha của tất cả các thành phần có thể gắn vào đối tượng Transíorm: Giúp thay đổi vị trí, xoay, biến đổi tỉ lệ mô hình.
Input: Hỗ trợ lập trình với chuột, cảm ứng đa điểm, cảm biến gia tốc Camera: Giúp lập trình camera.
Light: Giúp tạo ánh sáng trong game.
Projector: Giúp chiếu texture lên bề mặt vật thể.
ParticleEmitter: Hỗ trợ tạo hiệu ứng Particle đẹp mắt.
Audio: Hỗ trợ lập trình với âm thanh.
Animation: Chạy chuyển động của mô hình nhân vật.
Trang 13PBL4: DỰ ÁN HỆ ĐIỀU HÀNH & MẠNG MÁY TÍNH
Rigidbody: Giúp tạo hiệu ứng vật lý liên quan đến trọng lực như bỏng
nẩy, lăn
CharacterController: Giúp điều khiển nhân vật di chuyển theo độ cao
địa hình
Collider: Hỗ trợ lập trình va chạm giữa các vật thể.
GUI: giúp lập tình giao diện người dùng trên Unity.
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
1. CÁC ĐẶC ĐIỂM VÀ TÍNH NĂNG CỦA UNITY
1.1 Rendering (kết xuất hình ảnh)
Giống như tất cả các Engine hoàn chỉnh khác, Unity hỗ trợ đầy đủkhả năng kết xuất hình ảnh (rendering) cùng nhiều hỗ trợ cho phép ápdụng các công nghệ phổ biển trong lĩnh vực đồ họa 3D nhằm cải thiệnchất lượng hình ảnh Các phiên bản gần đây nhất của Unity được xâydựng lại thuật toán nhằm cải thiện hiệu suất kết xuất hình ảnh đồng thờităng cường chất lượng hình ảnh sau khi kết xuất
Một số hỗ trợ:
Unity cung cấp sẵn 100 Shaders với đầy đủ các loại phổ biến nhất
Hỗ trợ Surface Shaders, Occlusion Culling, GLSL Optimizer
Hỗ trợ LOD
1.2 Lighting (ánh sáng)
Ánh sáng là một điều thiết yếu giúp môi trường trở nên đẹp và thực
tế hơn Unity cũng cung cấp nhiều giải pháp đa dạng chi phép chúng ta ápdụng ánh sáng một cách tốt nhất vào môi trường trong trò chơi với nhiềuloại nguồng như ánh sáng có hướng (Directional Light), ánh sáng điểm(Point Light), Một số công nghệ kỹ thuật về ánh sáng được Unity hỗtrợ: Linghtmapping, Realtime Shadows, hiệu ứng Sunshafts và LensFlares
1.3 Terrains (địa hình)
Terrains còn gọi chung là địa hình bao gồm phần đất nền của môitrường trong trò chơi cùng các dối tượng tượng gắn liền như cây, cỏ
Trang 14PBL4: DỰ ÁN HỆ ĐIỀU HÀNH & MẠNG MÁY TÍNH
Unity cung cấp một công cụ hỗ trợ rất tốt khả năng này với tên gọi làTerrains Tools cho phép chúng ta thiết kết đại hình với các công cụ vẽdưới dạng Brush có nhiều thông số tùy chỉnh để tạo hình và lát Texturecho địa hình Cùng với Terrain Tools là Tree Creator, một công cụ mạnh
mẽ cho phép chúng ta tạo ra cây cối với hình dạng, kích thước và kiểucách đa dạng
1.4 Substances (Texture thông minh)
Substances có thể hiểu đơn giản là môt tùy biến Textures nhằm làm
đa dạng chúng trong nhiều điều kiện môi trường khác nhau Unity cungcấp khả năng này thông qua các API dựng sẵn trong thư viện, hỗ trợ lậptrình viên lập trình để tùy biến hình ảnh được kết xuất của Texture
1.5 Physics (vật lí)
PhysX là một Engine mô phỏng và xử lí vậy lý cực kỳ mạnh mẽđược phát triển bởi nhà sản xuất card đồ họa hang đầu thế giới NVIDIA.Unity đã tích hợp Engine này vào để đảm nhận mọi vấn đề vật lý Một sốvấn đề vật lý được hỗ trợ bởi Unity như: Soft Bodies, Rigitbodies,Ragdolls, Joints, Cars
1.6 Pathíinding (tìm đường)
Đây là một tính năng rất mới mẻ đến từ phiên bản Unity 3.5 trở lên.Với các phiên bản trước, để phát triển khả năng tìm đường cho trí thôngminh nhân tạo (AI), phà phát triển phải hoàn toàn tự xây dựng cho mìnhmột hệ thống tìm đường riêng biệt Tuy nhiên ở phiên bản 3.5 đến nay,Unity hỗ trợ cho chúng ta tính năng Pathfinding cho phép tạo ra khả năngtìm đường cho AI nhờ vào khái niệm lưới định hướng (MavMesh)
1.7 Programming (lập trình)
Lập tình là một trong những yếu tố quan trọng nhất trong phát triểnGame Lập trình cho phép nhà phát triển tạo nên khả năng tương tác, tríthông minh và yếu tố Gameplay cho trò chơi
Unity cho phép chúng ta lập trình bằng nhiều ngôn ngữ mạnh mẽ vàphổ biến với các lập trình viên như: C#, JavaScript và Boo
1.8 Networking
Networking cho phép chúng ta tạo ra các trò chơi trực tuyến (online)
- một trong những thể loại trò chơi thu hút được rất nhiều người chơinhất Tính năng này sẽ hỗ trợ đầy đủ để chúng ta tạo nên các khía cạnh