TÓM TẮT NỘI DUNG ĐỀ TÀINgày nay, với sự phát triển và lan rộng một cách nhanh chóng của các thiết bị như PC, smartphone, việc chơi game trên các thiết bị này đã trở nên hết sức phổ biến. Các thiết bị này được chạy trên các nền tảng khác nhau: iOS, Android, Windows Phone, Windows, Mac... Chính điều này đã làm cho việc đưa một ứng dụng trò chơi (gọi tắt là game) lên nhiều nền tảng khác nhau trở nên khác tốn công sức. Tuy nhiên, với sự xuất hiện của các Game Engine như libGDX, Cocos2dx, Unity... thì việc phát triển các game đa nền tảng đã trở nên hết sức đơn giản. Game Engine hỗ trợ các nhà phát triển có thể viết game một cách nhanh chóng và đơn giản, có khả năng tái sử dụng cao. Hầu hết các Engine này đều có bản miễn phí, vì vậy không chỉ các công ty chuyên nghiệp mà ngay cả những người mới bắt đầu cũng có thể sử dụng.Khóa luận tôi thực hiện lựa chọn Unity Engine để tìm hiểu và xây dựng một game chạy trên nhiều nền tảng khác nhau. Đây là một gameengine tốt và dễ tìm hiểu cho những người mới bắt đầu và có ít kinh nghiệm phát triển. Mục tiêu đặt ra của khóa luận này là tìm hiểu các tính năng chính của Unity Engine để xây dựng game mô phỏng lại thế chiến thứ 2, được đặt tên là Nations War, với tiêu chí có thể hoạt động trên nhiều nền tảng khác nhau. Khóa luận bao gồm 4 chương, thể hiện các nội dung chính như sau:Chương 1. Tổng quan về đề tài: giới thiệu tổng quát về đề tài và lý do lựa chọn đề tài, mục tiêu và phạm vi nghiên cứu đề tàiChương 2. Unity và các công nghệ sử dụng: đề cập đến các tính năng và khái niệm quan trọng trong Unity, giới thiệu các đặc tính và cách quản lý đối với SQLite, CChương 3. Phát triển game Nations War: áp dụng các tính năng đã tìm hiểu trong Unity để xây dựng game 2D Nations War, các vấn đề gặp phải và giải pháp.Chương 4. Tổng kết: rút ra các nhận xét về việc sử dụng Unity để phát triển game đa nền tảng, các mặt ưu điểm và hạn chế trong khi thực hiện khóa luận
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Thái Mạnh Tuấn
PHÁT TRIỂN GAME ĐA NỀN TẢNG VỚI
UNITY ENGINE
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Trang 2KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Trang 3Cán bộ hướng dẫn: TS Nguyễn Ngọc Hóa
HÀ NỘI - 2015
Trang 4Tôi xin cảm ơn Khoa Công nghệ thông tin, trường Đại học Công nghệ đã tạo điều kiện tốt cho tôi thực hiện đề tài này.
Cuối cùng, mặc dù tôi đã cố gắng hoàn thành khóa luận một cách tốt nhất trong khả năng cho phép, tuy nhiên vẫn không thể tránh khỏi những thiếu sót Tôi rất mong
sự cảm thông, đóng góp và chỉ bảo của các thầy, cô và các bạn
Sinh viên thực hiện
Thái Mạnh Tuấn
Trang 5Khóa luận tốt nghiệp – Thái Mạnh Tuấn
LỜI CAM ĐOAN
Tôi xin cam đoan khóa luận này là do tôi thực hiện dưới sự hướng dẫn của TS Nguyễn Ngọc Hóa Tất cả các tham khảo từ những nghiên cứu liên quan đề được nêu nguồn gốc một cách rõ ràng từ danh mục tài liệu tham khảo trong khóa luận Khóa luận không sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ vê mặt tài liệu tham khảo
Hà Nội, ngày 28 tháng 04 năm 2015
Sinh viên
Thái Mạnh Tuấn
2
Trang 6Khóa luận tốt nghiệp – Thái Mạnh Tuấn
TÓM TẮT NỘI DUNG ĐỀ TÀI
Ngày nay, với sự phát triển và lan rộng một cách nhanh chóng của các thiết bị như PC, smartphone, việc chơi game trên các thiết bị này đã trở nên hết sức phổ biến Các thiết bị này được chạy trên các nền tảng khác nhau: iOS, Android, Windows Phone, Windows, Mac
Chính điều này đã làm cho việc đưa một ứng dụng trò chơi (gọi tắt là game) lên nhiều nền
tảng khác nhau trở nên khác tốn công sức Tuy nhiên, với sự xuất hiện của các Game Engine như libGDX, Cocos2dx, Unity thì việc phát triển các game đa nền tảng đã trở nên hết sức đơn giản Game Engine hỗ trợ các nhà phát triển có thể viết game một cách nhanh chóng và đơn giản, có khả năng tái sử dụng cao Hầu hết các Engine này đều có bản miễn phí, vì vậy không chỉ các công ty chuyên nghiệp mà ngay cả những người mới bắt đầu cũng có thể sử dụng
Khóa luận tôi thực hiện lựa chọn Unity Engine để tìm hiểu và xây dựng một game chạy trên nhiều nền tảng khác nhau Đây là một game-engine tốt và dễ tìm hiểu cho những người mới bắt đầu và có ít kinh nghiệm phát triển Mục tiêu đặt ra của khóa luận này là tìm hiểu các tính năng chính của Unity Engine để xây dựng game mô phỏng lại thế chiến thứ 2, được đặt
tên là Nations War, với tiêu chí có thể hoạt động trên nhiều nền tảng khác nhau
Khóa luận bao gồm 4 chương, thể hiện các nội dung chính như sau:
- Chương 1 Tổng quan về đề tài: giới thiệu tổng quát về đề tài và lý do lựa chọn đề
tài, mục tiêu và phạm vi nghiên cứu đề tài
- Chương 2 Unity và các công nghệ sử dụng: đề cập đến các tính năng và khái niệm
quan trọng trong Unity, giới thiệu các đặc tính và cách quản lý đối với SQLite, C#
- Chương 3 Phát triển game Nations War: áp dụng các tính năng đã tìm hiểu trong
Unity để xây dựng game 2D Nations War, các vấn đề gặp phải và giải pháp
- Chương 4 Tổng kết: rút ra các nhận xét về việc sử dụng Unity để phát triển game đa
nền tảng, các mặt ưu điểm và hạn chế trong khi thực hiện khóa luận
3
Trang 7Khóa luận tốt nghiệp – Thái Mạnh Tuấn
MỤC LỤC
LỜI CAM ĐOAN 2
TÓM TẮT NỘI DUNG ĐỀ TÀI 3
DANH SÁCH HÌNH VẼ 4
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 2
CHƯƠNG 2 UNITY VÀ CÁC CÔNG NGHỆ SỬ DỤNG 4
CHƯƠNG 3 PHÁT TRIỂN GAME NATIONS WAR 18
CHƯƠNG 4 TỔNG KẾT 46
TÀI LIỆU THAM KHẢO VÀ NGHIÊN CỨU 47
DANH SÁCH HÌNH VẼ Hình 2.1 - Logo của Unity Engine 4
Hình 2.2 - Hình ảnh trong game được phát triển bởi CryEngine 6
Hình 2.3 - Hình ảnh trong game được phát triển bởi Unity Engine 6
Hình 2.4 - Giao diện các panel trên Unity Editor 9
4
Trang 8Khóa luận tốt nghiệp – Thái Mạnh Tuấn
Hình 2.5 - Scene control tools và cụm nút Play 10
Hình 2.6 - Transform Component 11
Hình 2.7 - Các Component có thể add thêm 11
Hình 2.8 - Tags 12
Hình 2.9 - Properties của một camera 13
Hình 2.10 - SQLiteManager 16
Hình 3.11 - Biểu đồ Use Case hệ thống 19
Hình 3.12 - Use Case Play game 21
Hình 3.13 - Use Case Pause game 22
Hình 3.14 - Use Case Continue game 23
Hình 3.15 - Use Case Quit game 23
Hình 3.16 - Use Case Highscore 24
Hình 3.17 - Bảng Stats lưu giá trị thuộc tính của từng loại lính 25
Hình 3.18 - Bảng ModeSelection lưu lựa chọn chơi của người dùng 25
Hình 3.19 - Bảng HighScore lưu điểm cao trong game 26
Hình 3.20 - Bảng Sound lưu các thiết lập cài đặt âm thanh 26
Hình 3.21 - Tạo hình các chủng loại lính trong game 27
Hình 3.22 - Sprite cần thiết để xây dựng nhân vật 28
Hình 3.23 - Tạo xương cho nhân vật sử dụng Puppet2D 29
Hình 3.24 - Xây dựng animation cho nhân vật 30
Hình 3.25 - Animator và State transaction 31
Hình 3.26 - Sử dụng Control Freak để tạo phím điều khiển ảo trong game 33
Hình 3.27 - Collider trong game 38
Hình 3.28 - Một box giao diện được thiết kế bằng NGUI 39
Hình 3.29 - Cài đặt kết nối với server Photon 40
Hình 3.30 - Giao diện kết nối trong game 41
Hình 3.31 - Giao diện hiển thị phòng và chức năng tạo phòng, tham gia phòng 42
Hình 3.32 - Màn hình bắt đầu của game 43
Hình 3.33 - Màn hình xem thông tin nhân vật 44
Hình 3.34 - Màn hình lựa chọn nhân vật và màn chơi 44
Hình 3.35 - Màn hình chính của trò chơi 45
5
Trang 10CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu đề tài
Ngày nay, với sự phát triển và lan rộng một cách nhanh chóng của các thiết bị như PC, mobile, việc chơi game trên các thiết bị này đã trở nên hết sức phổ biến Các thiết bị này được chạy trên các nền tảng khác nhau: iOS, Android, Windows Phone, Windows, Mac Chính điều này đã làm cho việc đưa 1 tựa game lên nhiều nền tảng khác nhau trở nên khác tốn công sức Tuy nhiên, với sự xuất hiện của các Game Engine như Unreal Engine, Cocos2dx, Unity thì việc phát triển các game đa nền tảng
đã trở nên hết sức đơn giản Các engine này giống như một hệ thống cung cấp cho ta đầy đủ các vật liệu và cách thức sử dụng, kết hợp chúng Từ đó ta hoàn toàn có thể thiết kế một game hoàn chỉnh một cách đơn giản
Nổi lên trong số các engine hiện nay đó chính là Unity Engine Đây là một Engine có chất lượng đồ họa vừa đủ, không yêu cầu cấu hình quá cao Bên cạnh đó, Unity có những ưu điểm lớn mà không phải engine nào cũng có như: hỗ trợ đa nền tảng, dễ sử dụng, có phiên bản miễn phí và trả phí
Từ xu hướng thực tiễn trên, tôi đã quyết định xây dựng đề tài: “Phát triển game
đa nền tảng sử dụng Unity Engine” Đề tài tập trung vào việc giới thiệu các thành
phần, tính năng của Unity Engine cũng như các bước để phát triển một game hoàn chỉnh Từ đó, vận dụng kiến thức thu được để xây dựng gamemô phỏng lại thế chiến
thứ 2, được đặt tên là Nations War, với tiêu chí có thể hoạt động trên nhiều nền tảng
- Xây dựng được game mô phỏng lại thế chiến thứ 2, được đặt tên là Nations
War, với tiêu chí có thể chạy được trên nhiều nền tảng: PC, Android, Web Player,
Trang 11Flash , sử dụng SQLite để lưu trữ dữ liệu cục bộ và có thể được quản lý từ hệ thống phát triển dựa trên máy chủ Photon.
- Người chơi tương tác với game thông qua các phương thức tương tác thông dụng trên các thiết bị di động thông minh (chạm - touch) hoặc thông qua bàn phím
1.2.3 Phạm vi nghiên cứu
- Nghiên cứu các tính năng của Unity
- Nghiên cứu cách sử dụng một số plugin thông dụng của Unity: NGUI, SimpleSQL
Trang 12CHƯƠNG 2 UNITY VÀ CÁC CÔNG NGHỆ SỬ DỤNG
1.3 Unity Engine
1.3.1 Tổng quan về Game Engine
Một game engine là một phần mềm được viết để thiết kế và phát triển video game, hiểu đơn giản nó là loại phần mềm trung gian kết nối tương tác của nhiều ứng dụng trong cùng 1 hệ thống với nhau 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 engine phầ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ất nhiều thời gian và kinh phí vào việc tái sử dụng và tái thích ứng một engine để tạo nhiều game khác nhau [1]
Hiện nay có rất nhiều game engine được phát triển: LibGDX, Cocos2d-x, CryEngine, Unreal Engine, Unity Engine Hầu hết các engine này đều hỗ trợ đa nền tảng và sử dụng các ngôn ngữ lập trình bậc cao như C++, C#
1.3.2 Giới thiệu chung về Unity Engine
Unity là một game engine đa nền tảng được phát triển bởi đội ngũ Unity Technologies Hiện tại Unity Technologies đã cho ra thị trường đến bản Unity 5
Hình 2.1 - Logo của Unity Engine
Unity có thể được sử dụng để phát triển game cho 21 nền tảng, có thể chuyển đổi với nhau dễ dàng: iOS, Android, Windows Phone 8, BlackBerry 10, Tizen, Windows, Mac, Linux, Web Player, Flash, các hệ máy console như PS hay Xbox, Wii
Trang 13Website: http://unity3d.com/
1.3.3 Sự hình thành và phát triển của Unity Engine
Ban đầu, Unity được viết bởi Joachim Ante vào năm 2001 Sau khi thành lập công ty vào năm 2005, Unity được tung ra phiên bản 1.0 với phương châm
“Democratizing games development” Ở phiên bản này, Unity còn hết sức đơn giản và
gần như chỉ hướng tới các nhà làm game không chuyên với các tính năng cơ bản Unity hỗ trợ cho iPhone vào năm 2008 và Android vào năm 2010 Các phiên bản về sau, Unity được cải tiến, nâng cấp và tích hợp nhiều thành phần, công nghệ mạnh mẽ khác để đủ sức phát triển một serigame Hiện nay, Unity đã ra đến phiên bản thứ 5, là một phiên bản lớn nhất bao gồm nhiều tính năng mạnh mẽ Có thể thấy Unity được phát triển với tốc độ rất nhanh, thể hiện qua việc ngày càng có nhiều cá nhân và công
ty sử dụng Unity để phát triển các tựa game của mình
Unity chắc chắn không phải một engine đứng đầu về mặt đồ họa Hiện nay, CryEngine với khả năng thể hiện đồ họa 3D chân thực của mình vẫn đang dẫn đầu Có thể thấy rõ điều đó thông qua các game đình đám được phát triển bởi engine này như Crysis 3, The Collectables, Ryse: Son of Rome Engine này đòi hỏi cấu hình khá cao, cũng như giá thành để sử dụng là không nhỏ Tuy không thể so sánh được về mặt đồ họa nhưng chất lượng hình ảnh mà Unity đem lại cũng là vừa đủ để đáp ứng người dùng phổ thông
Trang 14Hình 2.2 - Hình ảnh trong game được phát triển bởi CryEngine
Hình 2.3 - Hình ảnh trong game được phát triển bởi Unity Engine
Về mặt tính năng, thật sự không có một engine nào hoàn toàn nổi trội so với các engine khác Unity chứng tỏ được lợi thế nhất định của mình đó chính là thời gian Nhà phát triển hoàn toàn có thể tạo một game có độ phức tạp cao trong thời gian ngắn Cùng với đó là các đặc điểm khiến Unity được ưa chuộng như có gói Free dành cho người dùng cá nhân và công ty có thu nhập dưới 100.000 USD/năm, hỗ trợ lập trình bằng nhiều ngôn ngữ: C#, Javascript, Boo Bên cạnh đó các thư viện như Mono,
Trang 15OpenGL, physics được tích hợp một cách tự động và trực quan, có hỗ trợ Networking Cuối cùng, Unity có một cộng đồng sử dụng lớn mạnh, luôn sẵn sàng giải đáp mọi khúc mắc.
1.3.4 Các tính năng
General
- Lựa chọn viết các script bằng C#, Javascript, Boo
- One-click Deployment: lựa chọn nền tảng để build game thông qua 1 nút và có thể chuyển đổi giữa các nền tảng với nhau dễ dàng
- Action-Packed Physics: tương tác vật lý chân thực với NVIDIA PhysX 3 và Box2D physics engine
- Optimized Graphics: Unity có khả năng tối ưu hóa đồ họa cho cả DirectX và OpenGL Bên cạnh đó là hệ thống Mesh, Partical System, Advance lighting, Shadow giúp tạo hiệu ứng
Animation
- Intergrated Animation Editor: Unity tích hợp sẵn một cửa sổ giúp nhà phát triển
dễ dàng chỉnh sửa các animation của nhân vật
- Animation state: Mỗi một trạng thái animation của nhân vật được gọi là một state, và Unity quản lý các state này bởi State machine – máy trạng thái
- Blend Trees: giúp nhân vật có khả năng di chuyển liên tục giữa các trạng thái như Running, Walking
- Sync Layers: Có khả năng tạo nhiều layer – các lớp chứa các trạng thái khác nhau trong một nhân vật
Trang 16- Hỗ trợ khả năng tìm đường đi (Pathfinding) trong game 3D
- Có khả năng stream video và phát trong game
1.3.5 Giao diện làm việc của Unity Engine
Giao diện của Unity Editor có khả năng điều hướng rất dễ dàng Phần chính của editor bao gồm 5 panel chính:
- Scene view: nơi mà ta sẽ xây dựng game, điều chỉnh các Object dưới dạng 2D và 3D
- Game view: nơi xem trước game Panel Gameview được active khi bấm nút Play trên Editor, cho phép ta chơi thử game ngay trên Editor Gameview còn cho phép lựa chọn độ phân giải để hiển thị
- Hierarchy: liệt kê toàn bộ GameObject có trong Scene view theo thứ tự abc Hierarchy còn thể hiện quan hệ parent giữa các GameObjectvới nhau
- Project Panel: liệt kê toàn bộ assets đang làm việc, cho ta khả năng truy cập nhanh tới mọi thứ để xây dựng game: scripts, texture, model, audio
- Inspector: Hiển thị toàn bộ các thuộc tính của object, assets, panel mà ta đang lựa chọn Các thuộc tính trên Inspector thay đổi ngay khi ta lựa chọn 1 thứ khác
Trang 17Hình 2.4 - Giao diện các panel trên Unity Editor
Ngoài ra trên panel cũng có 1 số nút bấm:
- Pause
- Play next frame
Các nút này có tác dụng để chạy thử game Bên góc trái của Editor có 1 cụm nút gọi là Scene control tools, cho phép ta thu nhỏ, phóng to, xoay, di chuyển các GameObject
Trang 18Hình 2.5 - Scene control tools và cụm nút Play
Ta hoàn toàn có thể thay đổi vị trí các Panel bằng cách kéo thả, hoặc mở thêm các Panel khác
1.3.6 Một số khái niệm cơ bản
GameObjects
Tất cả các đối tượng trong game được gọi là GameObjects Các GameObjects cần có các thuộc tính khác nhau, để trở thành Character, Enviroment, Effect Nói cách khác, GameObjects giống như một đối tượng, có thể chứa nhiều thành phần khác nhau là các Components Tùy thuộc vào loại đối tượng cần tạo, ta sẽ thêm vào các Components thích hợp vào
Components
Components được coi là các mảnh ghép chức năng của một GameObject Mặc định mỗi GameObjects sẽ có một Transform Component Transform quy định vị trí, góc quay cũng như tỉ lệ scale của GameObjects đó
Trang 19Hình 2.6 - Transform Component
Khi ta click vào một GameObject, ở panel Inspector sẽ có nút Add Component Thông qua đó có thể thêm vào rất nhiều loại Component khác nhau vào GameObject
Hình 2.7 - Các Component có thể add thêm
Trên mỗi Component đều có các thông số riêng có thể tùy chỉnh cho phù hợp Có
2 kiểu thông số chính: dạng giá trị (values) và dạng tham chiếu (reference) Dạng Values được dùng để khai báo giá trị, còn dạng References được dùng để liên kết tới các thuộc tính cũng như Objects khác
Tags
Tag là một từ khóa dùng để liên kết 2 hoặc nhiều GameObjects với nhau Vd ta
có thể sử dụng tag “Enemy” cho tất cả các GameObject quân địch Tag có thể sử dụng
để tìm một hoặc nhiều GameObject xác định
Trang 20Hình 2.8 - Tags Assets
Assets là tập hợp tất cả các tài nguyên trong game: Texture, Audio, GameObject, Script Assets có thể được thêm vào bằng cách kéo thả hoặc import
Unity có một cửa hàng riêng để bán và cung cấp các loại Assets Ta có thể tải về các Asset thích hợp thông qua Assets Store
Scene
Một scene chính là một vùng nội dung hiển thị trên Scene view Với mỗi scene được tạo, ta có thể coi chúng như một map, một màn chơi hoặc một vùng giao diện hiển thị
Prefabs
Khi ta có một GameObject cần sử dụng nhiều lần, có thể biến nó thành một prefab để tái sử dụng bằng cách kéo thả GameObject đó từ Hierarchy vào Project Panel
Ta có thể kéo thả một prefabs vào Hierachy hoặc Scene view để tạo ra nhiều GameObject giống nhau Khi thay đổi thông số của prefab, thông số của các GameObject này cũng tự động thay đổi theo
Camera
Cũng giống như camera trong phim ảnh, camera trong Unity được dùng để hiển thị các GameObject Cần có ít nhất 1 camera trong 1 scene, tuy nhiên cũng có thể tạo nhiều camera khác nhau Ta có thể chuyển động các camera, hoặc điều khiển chúng với các tương tác vật lý
Trang 21Hình 2.9 - Properties của một camera
Scripts
Scripts là một thành phần cực kì quan trọng, không thể không nhắc đến Nếu như các Component Sprite hay Texture giúp tạo hình ảnh cho GameObject thì Scripts giống như bộ não Tất cả các kịch bản của game đều được viết trong các Scripts này
Ta có thể lựa chọn viết script bằng C#, Javascript hoặc Boo Tên của script bắt buộc phải trùng với tên class được khai báo bên trong Với mỗi GameObject, ta có thể add một hoặc nhiều Script khác nhau
Để chỉnh sửa Scripts, Unity có hỗ trợ một IDE là MonoDeveloper Tuy nhiên hoàn toàn có thể sử dụng một IDE khác để chỉnh sửa các script này
Trang 22Vòng đời của một Scripts được tính kể từ khi chạy Scene cho tới khi Scene tắt hoặc chuyển qua Scene khác
1.3.7 Kiến trúc tổng quan của Unity Engine
Unity sử dụng UnityAPI để hỗ trợ việc viết các scripts API này cung cấp khá nhiều phương thức hỗ trợ các đối tượng cũng như thành phần trong game Một script trong Unity mặc định được kế thừa lớp MonoBehavior để có thể thêm vào vào một GameObject
Một số lớp quan trọng có thể kể đến trong UnityAPI: MonoBehaviour, GameObject, Transform, Rigidbody, Collider, Input
GameObject
UnityAPI
MonoBehaviour
Scripts Transform Rigidbody
Awake
Start
Update
Tắt hoặc chuyển Scenes
F
Destroy
T
Collider
Trang 23Mỗi Script được viết sẽ bắt đầu chạy từ khi scene được chạy tới khi tắt hoặc chuyển qua scene khác Một chu kì của Script trải qua thứ tự sau: Awake, Start, Update, Destroy
- Awake(): được gọi trước khi có bất kì frame nào được chạy
- Start(): được gọi sau khi frame thứ nhất được chạy
- Update(): gọi liên tục ở mỗi frame, sau Start()
- Destroy(): gọi khi script bị hủy
Ngoài ra còn có hàm FixedUpdate – gọi sau mỗi khoảng thời gian cố định (0.02s)
1.4 SQLite
1.4.1 Giới thiệu về SQLite
SQLite là một hệ quản trị CSDL tương tự MySQL, gọn, nhẹ, không cần server và cấu hình Sử dụng SQLite, ta không cần quan tâm đến các thông số như user, password hay phân quyền
SQLite không thích hợp cho các hệ thống lớn, tuy nhiên với các hệ thống vừa và nhỏ, đặc biệt là lưu trữ dữ liệu trong game thì SQLite tỏ rõ được thế mạnh của nó SQLite truy cập các file lưu trữ của nó một cách trực tiếp và đảm bảo tính vẹn toàn dữ liệu
1.4.2 Các đặc tính của SQLite
- Không đòi hỏi server riêng biệt để chạy (serverless)
- Không cần config (zero-configuration )
- Dữ liệu được lưu trữ trong 1 file duy nhất
- Rất nhỏ, chỉ từ 250KB tới 400KB
- Không phụ thuộc bên ngoài
- Đảm bảo tính ACID
- Có thể chạy trên Windows, Linux, iOS, Android
1.4.3 Quản lý và thao tác với Plugin SQLiteManager trên Firefox
Để quản lý dữ liệu trong SQLite, ở đây ta sử dụng một plugin trên Firefox là SQLiteManager
Giao diện của plugin này như sau:
Trang 26CHƯƠNG 3 PHÁT TRIỂN GAME NATIONS WAR
1.6 Giới thiệu game
Tên game: Nations War
Platform: Windows XP/7/8/;Android 4.0+
Tổng thể tương tác giữa người chơi và hệ thống
Lựa chọn chế độ chơi
Bật tắt âm thanh Thay đổi ngôn ngữ Xem điểm cao Thao tác trong game
Lựa chọn chơi 1 hoặc nhiều người
Lựa chọn nhân vật, màn chơi
Điều khiển nhân vật
di chuyển Thao tác nhảy, bắn Tạm dừng game, thoát game
Trang 271.7 Phân tích thiết kế hệ thống
1.7.1 Phân tích yêu cầu dữ liệu
Dữ liệu đầu vào: thông tin về các màn chơi, thông tin về ngôn ngữ, thông tin về các thao tác của người dùng
Dữ liệu đầu ra bao gồm: thông tin về dữ liệu lưu trong Cơ sở dữ liệu, đánh giá kết quả chơi
1.7.2 Phân tích yêu cầu chức năng
Tác nhân
Tác nhân ở đây là người chơi: sử dụng trực tiếp hệ thống, sử dụng các chức năng
mà hệ thống cung cấp
Biểu đồ Use Case hệ thống
Hình 3.11 - Biểu đồ Use Case hệ thống