LỜI NÓI ĐẦUVới sự phát triển một cách nhanh chóng như vũ bão của công nghệ và internet của thế giới nói chung và Việt Nam nói riêng thì game gần như không còn là một khái niệm xa lạ đối
Trang 1LỜI CẢM ƠN
Đồ án tốt nghiệp là bước cuối cùng để đánh dấu sự trưởng của một sinh viên ở giảng đường Đại học Đồ án hoàn thiện hơn với sự giúp đỡ của các thầy cô, bạn bè, Do đó, em muốn gửi lời cảm ơn tới những người đã giúp em hoàn thiện đồ
án này
Trước hết, em xin gửi lời cảm ơn chân thành nhất tới cô Hoàng Thị Cành
Thạc Sĩ Công Nghệ Thông Tin Cô đã hướng dẫn và theo sát ý tưởng về đồ án cho tới lúc hoàn thiện Sự chỉ bảo của cô không chỉ có giá trị đối bản thân đồ án nói riêng mà còn giúp em thêm nhiều kinh nghiệm quý báu Đề tài sẽ không thể hoàn thành nếu không có sự giúp đỡ của cô
Em cũng xin chân thành cảm ơn quý thầy, cô trong khoa Công Nghệ Thông Tin, Trường Đại Học Công Nghệ Thông Tin và Truyền Thông đã tận tình truyền đạt kiến thức trong 5 năm học tập Với vốn kiến thức được tiếp thu trong quá trình học không chỉ làm nền tảng quá quá trình nghiên cứu mà còn là hành trang để em bước vào đời một cách vững chắc
Trong quá trình thực hiện đề tài đồ án cũng như trong quá trình làm báo cáo với giáo viên hướng dẫn, khó tránh khỏi sai sót, rất mong các Thầy, Cô bỏ qua Đồng thời do trình độ lý luận cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo không thể tránh khỏi những thiếu sót, em rất mong nhận được ý kiến đóng góp Thầy, Cô để em thêm được nhiều kinh nghiệm giúp em hoàn thiện bản thân hơn
Cuối cùng em xin kính chúc các Thầy, Cô luôn có một sức khỏe dồi dào, đạt được nhiều thành công trong công việc, sự nghiệp cũng như trong cuộc sống
Em xin chân thành cám ơn!
Thái Nguyên, tháng 6 năm 2016
Sinh viên
Trang 2Nguyễn Thái Ninh
Trang 3LỜI CAM ĐOAN
Đồ án tốt nghiệp là thành quả từ sự nghiên cứu hoàn toàn thực tế trên cơ sở các số liệu thực tế và được thực hiện theo hướng dẫn của giáo viên hướng dẫn, được thực hiện hoàn toàn mới, là thành quả của riêng em
Mọi sự tham khảo sử dụng trong đồ án đều được trích dẫn các nguồn tài liệu trong báo cáo và danh mục tài liệu tham khảo
Mọi tài nguyên của chương trình để miễn phí trên internet, dưới đây là các trang web cung cấp tài nguyên
Music
"Sax, Rock, and Roll" Kevin MacLeod (incompetech.com) - Game Scene
"Welcome to the Show" Kevin MacLeod (incompetech.com) - Menu Scene
Sounds
Player Explosion - freesound.org
Laser Beam - freesound.org
Power Up - freesound.org
Menu Beeps - freesound.org
Ships & Other Sprites
Enemy Ships - MillionthVector
Player Ship - Egemen Ilbeyli
Power Ups - opengameart.org
GUI
Font: Aldo the Apache
Health Bar - opengameart.org
Trang 5MỤC LỤC
1.1 Tổng quan về ngôn ngữ C# 7
1.1.1 Biến, hằng, toán tử 8
1.1.2 Quy tắc lập trình, ứng dụng Console Application 10
1.1.3 Kiểu dữ lệu - Cấu trúc điều khiển - Cấu trúc lặp 11
1.1.4 Cấu trúc điều khiển 12
1.1.5 Cấu trúc lặp 14
1.2 Tổng quan về Unity 16
1.2.1 Giới thiệu về Unity 16
1.2.2 Các khái niệm cơ bản 17
1.2.3 Làm quen với môi trường Unity 20
CHƯƠNG 2 KHẢO SÁT, PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 252.1 Khảo sát, kịch bản, xác định yêu cầu 25
2.1.1 Khảo sát 25
2.1.2 Kịch bản game 30
2.1.3 Xác định yêu cầu của đề tài 38
2.1.4 Thuật toán được sử dụng 38
2.2 Phân tích thiết kế chương trình 40
2.2.1 Các chức năng của chương trình 40
2.2.2 Biểu đồ Use Case (Use Case Diagram) 41
2.2.3 Biểu đồ trình tự (Sequence Diagram) 42
2.2.4 Biểu đồ lớp (Class Diagram) 45
2.2.5 Biểu đồ hoạt động (Activity Diagram) 47
CHƯƠNG 3 XÂY DỰNG GAME SPACE SHOOTER - Z 50
3.1 Giới thiệu chương trình 50
3.2 Giao diện trò chơi 50
KẾT LUẬN 57
TÀI LIỆU THAM KHẢO 58
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 59
DANH MỤC HÌNH ẢNH
Hình 1.1 Download Unity 17
Trang 6Hình 2.5 Tiêu chí lựa chọn game 27
Hình 2.6 Nguồn thông tin game 28
Hình 2.7 Khó khăn khi chơi game 28
Hình 2.8 Những khó khăn khi chơi game 29
Hình 2.9 Khách hàng tiềm năng của game 29
Hình 2.10 Những khó khăn, bất cập khi sử dụng game mobile 30Hình 2.11 Màn chơi 30
Trang 7Hình 2.29 Biểu đồ Use Case tổng quát 41
Hình 2.30 Biểu đô Use Case chức năng 42
Hình 2.31 Biểu đồ trình tự giao diện chính 42
Hình 2.32 Biểu đồ trình tự chơi game 43
Hình 2.33 Biểu đồ trình tự giao diện tạm dừng 44Hình 2.34 Biểu đồ trình tự thu nhặt vật phẩm 45Hình 2.35 Biểu đồ lớp 47
Hình 2.36 Biểu đồ hoạt động Menu 48
Hình 2.37 Biểu đồ hoạt động xử lý va chạm 48
Hình 2.38 Biểu đồ hoạt thu thập vật phẩm 49
Hình 3.1 Giao diện chính 50
Hình 3.2 Giao diện khi chơi 51
Hình 3.3 Hiệu ứng khi tàu địch bị tiêu diệt 51
Hình 3.4 Vật phẩm khi tiêu diệt địch rơi ra 52
Trang 8Hình 3.11 Giao diện Home 56Hình 3.12 Giao diện Pause 56
Trang 9LỜI NÓI ĐẦU
Với sự phát triển một cách nhanh chóng như vũ bão của công nghệ và internet của thế giới nói chung và Việt Nam nói riêng thì game gần như không còn
là một khái niệm xa lạ đối với mỗi cá nhân, ngược lại còn cảm thấy rất gần gũi trong cuộc sống chúng ta Chúng ta có thể bắt gặp những trò chơi trên những thiết
bị công nghệ nhỏ nhất cho đến những thiết bị công nghệ cao hơn
Nói đến game thì chắc hẳn phần lớn mọi người đều đồng ý đó là một loại hình giải trí có sức thu hút rất lớn,nhất là với giới trẻ hiện nay Đặc biệt sau sự ra đời của Internet, game online xuất hiện và nhanh chóng gây được sức hấp dẫn to lớn Chúng ta có thể chơi game online trên mạng, các game offline trên PC, các game trên các dòng máy chuyên như Play Station của hãng Sony với những phiên bản PS2, PS3, P4… hiện nay game cũng đang được phát triển mạnh trên các thiết
bị di động như điện thoại di động, các máy Xbox…Hàng năm lợi nhuận từ game đem về doanh thu lên đến hàng tỉ đô la cho những công ty chuyên phát triển và sản xuất game như ở các nước phát triển như Nhật Bản, Mỹ có rất nhiều các công ty chuyên về sản xuất game như Nintendo, Sony, Sega và mỗi năm các công ty này đạt doanh thu hàng tỷ USD Hay với các nước đi sau như Hàn Quốc,Trung Quốc cũng có được một ngành công nghê game rất mạnh nhờ có sự đầu tư đúng đắn và chiến lược phát triển tốt Một trò chơi được mua về với giá hàng ngàn hay thậm chí hàng triệu, hàng tỷ đô la Không phải là những game cấu hình cao, đồ họa khủng mới có thể đêm về nguồn lợi nhuận khủng khiếp như vậy mà có những game rất đơn giản cấu hình thấp, đồ họa của những năm đầu tiên của thế giới công nghệ nhưng vẫn rất hấp dẫn và thu hút người chơi chỉ với những lối chơi cực kì đơn giản, nó không phải là một vẫn đề khó hiểu trong thời đại công nghệ hiện nay
Mặc dù VINASA xếp game là một trong 3 định hướng công nghệ chiến lược của hiệp hội này trong giai đoạn 2006-2010, bên cạnh định hướng phần mềm nhúng và ERP nhưng hiện tại thị trường game ở Việt Nam còn rất yếu
Trang 10CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
Tổng quan về ngôn ngữ C#
Ngôn ngữ C# khá đơn giản, chỉ khoảng hơn 80 từ khóa và hơn mười mấy kiểu dữ liệu được dựng sẵn Tuy nhiên, ngôn ngữ C# có ý nghĩa to lớn khi nó thực thi những khái niệm lập trình hiện đại C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Những tính chất đó hiện diện trong một ngôn ngữ lập trình hiện đại Hơn nữa ngôn ngữ C# được xây dựng trên nền tảng hai ngôn ngữ mạnh nhất là C++ và Java Tóm lại, C# có các đặc trưng sau đây:
C# là ngôn ngữ đơn giản
C# là ngôn ngữ hiện đại
C# là ngôn ngữ hướng đối tượng
C# là ngôn ngữ mạnh mẽ và mềm dẻo
C# là ngôn ngữ hướng module
C# sẽ trở nên phổ biến
C# là ngôn ngữ đơn giản
C# loại bỏ được một vài sự phức tạp và rối rắm của các ngôn ngữ C++
và Java
C# khá giống C / C++ về diện mạo, cú pháp, biểu thức, toán tử
Các chức năng của C# được lấy trực tiếp từ ngôn ngữ C / C++ nhưng được cải tiến để làm cho ngôn ngữ đơn giản hơn
C# là ngôn ngữ hiện đại
C# có được những đặc tính của ngôn ngữ hiện đại như:
Xử lý ngoại lệ
Thu gom bộ nhớ tự động
Có những kiểu dữ liệu mở rộng
Trang 11 Bảo mật mã nguồn
C# là ngôn ngữ hướng đối tượng
C# hỗ trợ tất cả những đặc tính của ngôn ngữ hướng đối tượng là:
C# được sử dụng cho nhiều dự án khác nhau như: tạo ra ứng dụng xử lý văn bản, ứng dụng đồ họa, xử lý bảng tính; thậm chí tạo ra những trình biên dịch cho các ngôn ngữ khác
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
dùng để mô tả thông tin, nhưng không vì thế mà C# kém phần mạnh mẽ 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
C# là ngôn ngữ hướng module
Mã nguồn của C# được viết trong Class (lớp) Những Class này chứa các Method (phương thức) thành viên của nó
Class (lớp) và các Method (phương thức) thành viên của nó có thể được
sử dụng lại trong những ứng dụng hay chương trình khác
Trang 12a Khái niệm
Biến là một vùng lưu trữ ứng với một kiểu dữ liệu
Biến có thể được gán giá trị và cũng có thể thay đổi giá trị trong khi thực hiện các lệnh của chương trình
b Khai báo biến
Sau khi khai báo biến phải gán giá trị cho biến
<Kiểu_Dữ_Liệu> <tên_biến> [ = <giá_trị> ] ;
Trang 13 Kiểu liệt kê (enumerations)
b Giá trị hằng
Trong C#, trước khi dùng một biến thì biến đó phải được khởi tạo nếu không trình biên dịch sẽ báo lỗi khi biên dịch Ta có thể khai báo biến trước, sau
đó khởi tạo và sử dụng; hay khai báo biến và khởi gán trong lúc khai báo
VD: int x; // khai báo biến trước
x = 5; // sau đó khởi gán giá trị và sử dụng
int y = x; // khai báo và khởi gán cùng lúc
c Kiểu liệt kê
Là tập hợp các tên hằng có giá trị số không thay đổi (danh sách liệt kê)
Cú pháp kiểu liệt kê:
Toán tử tăng / giảm: += , -= , *= , /= , %=
Toán tử tăng / giảm 1 đơn vị: ++ ,
Trang 14 Toán tử gán: =
Toán tử quan hệ: == , != , > , >= , < , <=
Toán tử logic: ! , && , ||
Toán tử 3 ngôi: (Điều_Kiện) ? (Biểu_Thức_1) : (Biểu_Thức_2) ;
1.1.2 Quy tắc lập trình, ứng dụng Console Application
a Quy tắc lập trình
Khi tạo một chương trình trong C#, chúng ta nên thực hiện theo các bước sau:
Bước 1: Xác định mục tiêu của chương trình
Bước 2: Xác định những phương pháp giải quyết vấn đề
Bước 3: Tạo một chương trình để giải quyết vấn đề
Bước 4: Thực thi chương trình để xem kết quả
{static void Main()
{// Xuat ra man hinh chuoi thong bao 'Hello world'
Console.WriteLine("Hello world") ;
Console.ReadLine() ;
}
}
1.1.3 Kiểu dữ lệu - Cấu trúc điều khiển - Cấu trúc lặp
C# chia kiểu dữ liệu thành hai tập hợp kiểu dữ liệu chính:
Kiểu xây dựng sẵn (built-in): do ngôn ngữ cung cấp cho người lập trình
Kiểu do người dùng định nghĩa (user-defined): do người lập trình tạo ra
Trang 15 Kiểu dữ liệu dựng sẵn
Bảng 1.3.1-1 Kiểu dữ liệu dựng sẵn
Trang 16Bảng 1.3.1-2 Bảng các ký tự đặc biệt
Chuyển đổi kiểu dữ liệu
Có hai cách chuyển đổi kiểu dữ liệu là chuyển đổi ngầm định và ép kiểu
x = (short) y ; // ép kiểu tường minh, trình biên dịch không báo lỗi
1.1.4 Cấu trúc điều khiển
a Câu lệnh if else
Cú pháp:
if (Điều_Kiện)
<Khối lệnh Điều_Kiện đúng>
Trang 17<Khối lệnh Điều_Kiện sai>]
VD: static void Main()
Trang 19} while (i<= 10) ;
}
Trang 201.2.1 Giới thiệu về Unity
- Unity3D là một môi trường phát triển tích hợp, mạnh mẽ, hỗ trợ thao tác kéo thả, tuỳ biến giao diện nhanh chóng, trực quan
- Cung cấp các công cụ xử lý đồ hoạ, tích hợp sẵn thư viện vật lý, tính toán
va chạm
Trang 21- Hỗ trợ phát triển cả game 2D và 3D.
- Hỗ trợ nhiều nền tảng thông dụng như OSX, Linux, Window, Web, iOS, Window Phone 8, Android, PS3, BB…
- Cộng đồng người dùng, hỗ trợ rộng lớn
- Có phiên bản miễn phí có thể chạy được trên Window và Mac OSX
- Unity3D hướng tới người sử dụng chuyên nghiệp và cả nghiệp dư, nên khá dễ để sử dụng Với ngôn ngữ lập trình bằng C#, JavaScript hoặc BOO
Ngày nay rất nhiều nhà phát triển game lựa chọn Unity3D để phát triển bởi khả năng hỗ trợ đa nền tảng và sự mạnh mẽ tiện dụng của Unity3D
Đến với Unity, các bạn sẽ không cần phải băng khoăn về các vấn đề xử lý, các khái niệm đồ hoạ phức tạp tất cả đều trở nên dễ dàng và nhanh chóng với Unity
Một số game được phát triển trên Unity như AngryBird, Elegy of War,…
Ta có thể vào đây để download và cài đặt Unity3D trực tiếp tại trang chủ : http://unity3d.com/unity/download/
Unity có 2 loại phiên bản, một cho người dùng free, và một phiên bản pro thì mất phí
Trang 22Hình 1.1 Download Unity
Tải Unity về cài đặt bình thường, đến khi kết thúc cài đặt nền các bạn chọn phiên bản Pro thì cần phải mua, còn nếu là người dùng free thì chọn kích hoạt qua web, chỉ cần có kết nối mạng internet, sau đó chọn cài đặt thủ công và nhập mail, chọn free là có thể sử dụng một bản Unity free
1.2.2 Các khái niệm cơ bản
Trang 24f Prefabs
- Là một khái niệm trong Unity, dùng để sử dụng lại các đối tượng giống nhau có trong game mà chỉ cần khởi tạo lại các giá trị vị trí, tỉ lệ biến dạng và góc quay từ môt đối tượng ban đầu
Ví dụ: Các đối tượng là đồng tiên trong game Mario đều có xử lý giống nhau, nên ta chỉ việc tạo ra một đối tượng ban đầu, các đồng tiền còn lại sẽ sử dụng prefabs Hoặc khi ta lát gạch cho một cái nền nhà, các viên gạch cũng được
Trang 26tượng
Trang 271.2.3 Làm quen với môi trường Unity
Trang 28- Phần số 3 màu xanh lá cây
- Phần này hiển thị thư mục Assets, chứa tất cả các tài nguyên của dự án game
- Ở phần này, bên cạnh tab khác, có phần Console để hiển thị các log trong quá trình debug
- Phần này chứa các nút chuyên dụng:
+ Bốn nút bên trái: (1) tuỳ chọn cho phép dùng chuột kéo toàn bộ scenes, phóng to, thu nhỏ, lựa chọn các đối tượng trong scenes (2) cho phép dùng chuột
di chuyển các đối tượng trong scenes, (3) cho phép dùng chuột quay các đối tượng (4) cho phép dùng chuột phóng to, thu nhỏ các đối tượng
+ Ba nút ở giữa: (1) cho phép chạy demo game, (2) cho phép dừng game tại một frame nào đó, (3) cho phép chạy từng frame
+ Hai drop list bên phải: (1) cho phép tuỳ chọn hiển thị các layer, (2) cho
Trang 29phép chọn và lưu các bố trí do người dùng thiết lập.
Ngoài ra còn có các cửa sổ khác của Unity, như Sprite Editor, Animation, Animator, Console và ta có thể tự tuỳ biến cho mình một bố cục sao cho thuận tiện với mình nhất nhưng khuyến cáo thì vẫn nên dùng bố cục mặc định (Chọn ở Top bar chọn Layout > Default)
1.2.3.2 Tạo và cấu hình với dự án 2D
a Tạo dự án
- Bật Unity lên, đặt tên cho Project và vị trí lưu trữ Sau đó chọn 2D hoặc 3D rồi “Create project”
Hình 1.5 Tạo Project
Trang 30New Project
Chọn loại project là 2D sau đó gõ tên project xong nhấn Create Project Kết quả như sau:
Hình 1.6 Project mới
Trang 31 Cấu hình dự án 2D
Sau khi tạo dự án xong, ở Hierarchy sẽ có một đối tượng là Main Camera Chúng ta cần điều chỉnh kiểu hiển thị Scene là 2D
Hình 1.7 Thanh điều khiển
Ở cửa sổ Hierarchy chọn Main Camera Ở cửa sổ Inspector sẽ hiển thị các thông số của camera, ta sẽ chọn lại giá trị Projection hay phép chiếu là phép chiếu vuông góc thay cho phép chiếu phối cảnh
Trang 32Hình 1.8 Thuộc tính
Tiếp theo, ở cửa sổ Project, ta sẽ tạo sẵn các thư mục để chứa tất cả các tài nguyên có sử dụng trong game sau này lần lượt là: Animations, Prefabs, Scripts, Sprites, Sounds, Scenes
Click chuột phải vào thư mục Assets ở cửa sổ Project, ta chọn Create, chọn Folder
Trang 33Hình 1.9 Tạo thư mục
Kết quả như hình sau:
Trang 355 lần so với hiện tại, đạt khoảng 75 triệu người.
- 5 năm tới ngành công nghiệp game sẽ mở rộng cả về phát hành lẫn phát triển
- Việt Nam hiện đang có khoảng 165 triệu thuê bao di động, mỗi người dân
sở hữu hơn 1,5 thuê bao, tỷ lệ tăng trưởng lên đến 183%
- Với số lượng người sử dụng điện thoại di động còn nhiều hơn cả số lượng người sử dụng internet, cộng thêm việc dân số trẻ, thì thị trường các nội dung số dành cho thiết bị di động là một thị trường cực kỳ tiềm năng
Độ tuổi sử dụng Game mobie:
Phần lớn người chơi game mobile là những người trẻ, trong độ tuổi từ 18 đến 35: Trong đó có 70% người chơi thuộc độ tuổi từ 18 đến 25 và 27% người chơi thuộc độ tuổi từ 26 đến 35
Hình 2.1 Biểu đồ độ tuổi sử dụng game mobie
Thời gian chơi game trung bình / ngày.
Thời gian chơi game trung bình phổ biến nhất là dưới 1h/ngày:
47.5% Tuy nhiên lượng người chơi từ 1h đến 2h/ngày và từ 2h đến 3h/ngày
Trang 37Hình 2.3 Mục đích chơi game
Thể loại game
Thể loại game được chơi nhiều nhất là game chiến thuật với 25.5% Sau đó
là đến game giải đố, giáo dục (24.1%)
Trang 38Hình 2.4 Thể loại game
Tiêu chí lựa chọn game
Trong danh sách được liệt kê, các tiêu chí như đồ họa đẹp, dễ thao tác, nội dung hấp dẫn được đánh giá cao nhất Và trong đó nội dung hấp dẫn là tiêu chí ưu tiên hàng đầu với 26%
Trang 39Hình 2.5 Tiêu chí lựa chọn game
Nguồn thông tin game
Theo kết quả điều tra, phần lớn đáp viên cập nhật game mới từ các forum, website (32%) và App Store (27%) Ngoài ra bạn bè cũng là một nguồn tham khảo
có ảnh hưởng lớn
Trang 40Hình 2.6 Nguồn thông tin game
Khó khăn gặp phải khi chơi game
Lỗi lớn nhất mà người dùng gặp phải khi chơi game là kết nối chậm (45% người trả lời), những khó khăn khác do mạng hoặc nội dung game cũng khá phổ biến