Tuy nhiên, tất cả những đam mê, năng lượng và những đêm trắng đó đều rất đáng công khi bạn thấy sản phẩm của mình được ra đời với sự hoàn thiện và nhận được sư hưởng ứng nhiệt tình của g
Trang 1LỜI CẢM ƠN
Em xin chân thành cảm ơn tới các thầy cô giáo của trường Đại học Công nghệ Thông tin và Truyền thông Thái Nguyên đặc biệt là các thầy cô giáo khoa Công Nghệ Thông Tin và các thầy cô trong bộ môn Công nghệ phần mềm đã tạo điều kiện cho em thực tập chuyên ngành và đã trang bị cho em những kiến thức cơ sở, kiến thức chuyên ngành để em thực hiện làm hoàn thành đề tài thực tập Và em cũng xin chân thành cảm ơn thầy cô đã nhiệt tình hướng dẫn
em trong suốt thời gian thực hiện làm thực tập chuyên ngành vừa qua
Trong quá trình làm đồ án cũng như là trong quá trình làm bài báo cáo em khó tránh khỏi những sai sót, em rất mong thầy cô thông cảm bỏ qua cho em
Em rất mong nhận được ý kiến đóng góp quý giá của các thầy cô để bài thực tập chuyên ngành của em hoàn thiện hơn
Em xin chân thành cảm ơn!
Thái Nguyên, ngày 25 tháng 5 năm 2016
Sinh viên thực hiện
Nguyễn Văn Vượng
Trang 2LỜI CAM ĐOAN
Em Nguyễn Văn Vượng xin 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
- Đồ án được thực hiện hoàn toàn mới, là thành quả của riêng tôi
- 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 sao chép không hợp lệ, vi phạm quy chế của nhà trường, tôi xin hoàn toàn chịu trách nhiệm
Thái Nguyên, ngày 25 tháng 5 năm 2016
Sinh viên
Nguyễn Văn Vượng
Trang 3LỜI MỞ ĐẦU
Ngành công nghệ thông tin là một ngành khoa học ngày càng phát triển mạnh mẽ và ứng dụng rộng rãi trên nhiều lĩnh vực khác nhau đã đóng góp phần lớn cho sự phát triển của đất nước và sự phát triển của con người Hiểu theo nghĩa rộng và tổng quát là việc sử dụng công nghệ hiện đại vào việc tạo
ra, lưu trữ, truyền dẫn thông tin, khai thác thông tin Cùng với xu hướng phát triển của các phương tiện truyền thông như Radio, Báo,… thì việc sử dụng Internet ngày càng phổ biến hơn, chúng ta có một kho thông tin khổng lồ phục vụ mọi nhu cầu, mục đích mà ta cần dùng Và công nghệ thông tin sẽ ngày càng được phát triển hơn vì những lợi ích nó đã đem lại cho tất cả người dùng và cho xã hội
Ngày nay, Một báo cáo mới đây đã chỉ ra rằng lĩnh vực game trên toàn cầu đang trên đường trở thành 1 nền công nghiệp nhiều tỷ USD, với giá trị dự kiến lên tới 117 tỷ USD (khoảng hơn 2,2 triệu tỷ VND) trong 2 năm tới Theo ông Darwin Tardio, ở Philippines hiện nay có khoảng 50 công ty phát triển game và khoảng 4,000 nhân viên hoạt động trong ngành Ông cũng nhắc tới Việt Nam là 1 quốc gia có tiềm năng phát triển game lớn với khoảng 10,000 người làm việc trong lĩnh vực game và đang trên đà phát triển rất mạnh Sự tăng trưởng liên tục này cũng có thể là do sự phổ biến của điện thoại di động
và smartphone Trước đây, nhắc đến công việc phát triển game thì mọi người đều lắc đầu và cho rằng đây là định hướng nghề nghiệp khó khăn với đầy sự thử thách, hoài nghi Tuy nhiên, công việc phát triển game đã trở nên thoải mái hơn rất nhiều khi nó không còn bị giới hạn trong các nền tảng có phần hardcore như console hoặc PC Những thiết bị mới nổi như smartphone, tablet và các thiết bị di động khác với hệ điều hành đáng tin cậy đã tạo nên nhiều cơ hội hơn dành cho những nhà phát triển game triển vọng Phát triển
Trang 4trò chơi là một sự thử thách nhưng rất vui.Theo như những chia sẻ của các chuyên gia trong ngành, phát triển game là một công việc không hề đơn giản chút nào Nó không phải là cái gì đó được thực hiện chỉ bằng việc chơi thật nhiều game Trên thực tế nó được thực hiện bởi 1 quá trình bao gồm nhiều đêm không ngủ, sự nỗ lực hết mình, và sự cống hiến của mọi thành viên Tuy nhiên, tất cả những đam mê, năng lượng và những đêm trắng đó đều rất đáng công khi bạn thấy sản phẩm của mình được ra đời với sự hoàn thiện và nhận được sư hưởng ứng nhiệt tình của game thủ.
Sau một thời gian em tìm hiểu về unity và tiến hành xây dựng game candy nhằm mục đích là biết cách sử dụng thành thạo công cụ phát triển này
và tạo ra một game nhằm mục đích đáp ứng được nhu cầu giải trí của con người Trong qua trình tìm hiểu unity và xây dựng game còn nhiều thiếu xót, kiến thức học hỏi của em còn hạn chế Do đó, em chưa làm được một game hoàn thiện toàn diện, chưa đầy đủ về mọi mặt, chưa dùng hết các thành phần của unity
Trong quá trình em Tìm hiểu công nghệ Unity và xây dựng Game Candy làm bài báo cáo còn nhiều thiếu xót em rất mong nhận được sự đóng góp ý kiến của thầy cô
1.1.2 Quy tắc lập trình, ứng dụng Console Application 6
1.1.3 Kiểu dữ lệu - Cấu trúc điều khiển - Cấu trúc lặp 7
1.1.4 Cấu trúc điều khiển 8
1.1.5 Cấu trúc lặp 10
1.2 Tổng quan về Unity 12
Trang 51.2.1 Giới thiệu về Unity 12
1.2.2 Các khái niệm cơ bản 13
1.3 Tựa Game Puzzle 28
1.3.1 Giới thiệu Game Puzzle28
1.3.2 Xu Hướng Phát triển tựu game Puzzle 29
CHƯƠNG 2 KHẢO SÁT,PHÂN TÍCH THIẾT KẾ GAME 34
CHƯƠNG 3 XÂY DỰNG GAME CANDY 49
3.1 Giới thiệu chương trình 49
3.2 Giao diện trò chơi 50
KẾT LUẬN 56
TÀI LIỆU THAM KHẢO 57
Trang 6CHƯƠNG 1 CƠ SỞ LÝ THUYẾT1.1 Tổng quan về ngôn ngữ C#
Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấy kiểu dữ liệu được xây dựng sẵn Tuy nhiên, ngôn ngữ C# có ý nghĩa cao 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 Và ngôn ngữ C# hội
đủ những điều kiện như vậy, hơn nữa nó đượ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 Ngôn ngữ C# được phát triển bởi đội ngũ
kỹ sư của Microsoft, trong đó người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth Cả hai người này điều là những người nổi tiếng, trong đó Anders Hejlsberg được biết đến là tác giả của Turbo Pascal, một ngôn ngữ lập trình PC phổ biến Và ông đứng đầu nhóm thiết kế Borland Delphi, một trong những thành công đầu tiên của việc xây dựng môi trường phát triển tích hợp (IDE) cho lập trình client/server Phần cốt lõi hay còn gọi là trái tim của bất cứ ngôn ngữ lập trình hướng đối tượng là sự hỗ trợ của nó cho việc định nghĩa và làm việc với những lớp Những lớp thì định nghĩa những kiểu dữ liệu mới, cho phép người phát triển mở rộng ngôn ngữ để tạo mô hình tốt hơn để giải quyết vấn đề Ngôn ngữ C# chứa những từ khóa cho việc khai báo những kiểu lớp đối tượng mới và những phương thức hay thuộc tính của lớp, và cho việc thực thi đóng gói, kế thừa, và đa hình, ba thuộc tính cơ bản của bất cứ ngôn ngữ lập trình hướng đối tượng Trong ngôn ngữ C# mọi thứ liên quan đến khai báo lớp điều được tìm thấy trong phần khai báo của nó Định nghĩa một lớp trong ngôn ngữ C# không đòi hỏi phải chia ra tập tin header và tập tin nguồn giống như trong ngôn ngữ C++ Hơn thế nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho phép chèn các tag XML để phát sinh tự động các document cho lớp C# cũng
Trang 7hỗ trợ giao diện interface, nó được xem như một cam kết với một lớp cho những dịch vụ mà giao diện quy định Trong ngôn ngữ C#, một lớp chỉ có thể
kế thừa từ duy nhất một lớp cha, tức là không cho đa kế thừa như trong ngôn ngữ C++, tuy nhiên một lớp có thể thực thi nhiều giao diện Khi một lớp thực thi một giao diện thì nó sẽ hứa là nó sẽ cung cấp chức năng thực thi giao diện Trong ngôn ngữ C#, những cấu trúc cũng được hỗ trợ, nhưng khái niệm về ngữ nghĩa của nó thay đổi khác với C++ Trong C#, một cấu trúc được giới hạn,
là kiểu dữ liệu nhỏ gọn, và khi tạo thể hiện thì nó yêu cầu ít hơn về hệ điều hành và bộ nhớ so với một lớp Một cấu trúc thì không thể kế thừa từ một lớp hay được kế thừa nhưng một cấu trúc có thể thực thi một giao diện Ngôn ngữ C# cung cấp những đặc tính hướng thành phần (component-oriented), như là những thuộc tính, những sự kiện Lập trình hướng thành phần được hỗ trợ bởi CLR cho phép lưu trữ metadata với mã nguồn cho một lớp Metadata mô
tả cho một lớp, bao gồm những
phương thức và những thuộc tính của nó, cũng như những sự bảo mật cần thiết và những thuộc tính khác Mã nguồn chứa đựng những logic cần thiết để thực hiện những chức năng của nó Do vậy, một lớp được biên dịch như là một khối self-contained, nên môi trường hosting biết được cách đọc metadata của một lớp và mã nguồn cần thiết mà không cần những thông tin khác để sử dụng nó Một lưu ý cuối cùng về ngôn ngữ C# là ngôn ngữ này cũng hỗ trợ việc truy cập bộ nhớ trực tiếp sử dụng kiểu con trỏ của C++ và từ khóa cho dấu ngoặc [] trong toán tử Các mã nguồn này là không an toàn (unsafe) Và bộ giải phóng bộ nhớ tự động của CLR sẽ không thực hiện việc giải phóng những đối tượng được tham chiếu bằng sử dụng con trỏ cho đến khi chúng được giải phóng
1.1.1 Biến, hằng, toán tử
Biến
Trang 8a 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 9 Giá trị hằng (literal)
Biểu tượng hằng (symbolic constants)
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ê:
Trang 10 Toán tử tăng / giảm: += , -= , *= , /= , %=
Toán tử tăng / giảm 1 đơn vị: ++ ,
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ả
b Ứng dụng Console Application
Là ứng dụng giao tiếp với người dùng thông qua bàn phím và không có giao diện người dùng (UI)
Trang 11VD: using System;
class ChaoMung
{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
Kiểu dữ liệu dựng sẵn
Bảng 1.1 Kiểu dữ liệu dựng sẵn
Trang 13Bảng 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
Trang 14<Khối lệnh Điều_Kiện sai>]
VD: static void Main()
Câu lệnh switch
Cú pháp:
Trang 15case ‘c’:
Console.WriteLine("Day la chu c") ; break;
default:
Trang 16Console.WriteLine("Khong phai la chu gi") ; break;
} }
Console.WriteLine("i = {0}",i) ; i++ ; // tang bien dem,
} }
Trang 17i++ ; // tang bien dem } while (i<= 10) ;
1.2 Tổng quan về Unity
1.2.1 Giới thiệu về Unity
Trang 18Unity3D là phần mềm làm games trực tiếp theo thời gian thực, mà không cần render, cho phép người design game có thể thiết kế InterfaceGraphic, map hay character … từ một phần mềm thứ 2 (thường
là các phần mềm thiết kế đồ họa chuyên nghiệp như 3Dsmax, Blender, Maya, XSL,Cinema4D,Cheetah3D, Modo, Autodesk FBX, LightWave…) sau đó chỉ việc import nó vào trong Unity với định dạng của tập tin là
*.FBX hay *.dae, *.3DS, *.dxf và *.obj, nhưng định dạng *.FBX hay được dùng vì được tối ưu hóa hơn, còn dùng các định dạng khác ngoài FBX thì phải cài phần mền thiết kế character tưng ứng thì mới dùng được (tức
là dùng Maya có định dạng *.mb, *.ma thì muốn dùng được phải cài Maya)
Ngoài ra khi bạn design được một game thì bạn có thể xuất được ra một file.exe và có thể chạy và chơi được trên PC khác.
Một thế mạnh nữa của Unity là bạn có thể chạy demo game của bạn ngay trongkhi design, nó có hỗ trợ hai chế độ là Scene và Game, rất thuận tiện cho việc test thử các modulGame.
Unity3D 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í.
Khi tải Unity về các bạn 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ì các bạn 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à bạn có thể sử dụng một bản Unity free.
Trang 19Tả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
I Cài đặt và sử dụng các đối tượng trong Unity
Để cài đặt các bạn vào:http://unity3d.com/ để download phiên bản free
Trang 20Sau khi cài dặt xong các bạn mở chương trình unity và chú ý các hình sau:Hình:
+ Scene: là giao diện thiết kế game unity
+ Game: là giao diện hiển thị chương trình game unity
Hình:
Tương ứng với 4 phím (Q,W,E,R), trong đó:
+ Q có biểu tượng bàn tay giúp bạn dịch chuyển vị trí màn hình
+ W dùng để lựa chọn các đối tượng, dịch chuyển theo 3 hướng x (màu đỏ), y(xanh lam), z(xanh da trời) Bạn muốn đối tượng dịch chuyển theo 3 chiều khác nhau chỉ việc click vào mũi tên và kéo theo chiều đó
+ E dùng để xoay các đối tượng theo các hướng khác nhau
Trang 21+ Phím R đùng để kéo đối tượng to hơn hoặc nhỏ hơn so với kích thước
Ví dụ:
Trang 22Các bạn làm quen với các trục tọa độ như hình dưới:
Ở đây là tọa độ theo 3d, nếu bạn muốn chuyển về tọa độ 2d theo chiều chọn bạn chị việc nhấn vào từ “Persp” phía dưới thành
Giao diện tiếp theo của Unity đó là Hierarchy: dùng để chứa các đối tượng cần lập trình trong Unity
Trang 23Bạn có thể tạo ra đối tượng bằng cách nhấn vào Create, ở trên màn hình đang chỉ vào đối tượng “Cube” Muốn tìm đối tượng này trong màn hình thiết
kế (Scene) bạn chỉ cần nhấn phím “F”
Trang 24Giao diện Inspector:
Đó chính là thuộc tính của đối tượng unity, với hình trên trong bài này 3dvietpro chỉ cho các bạn biết về:
+ Position: vị trí của đối tượng theo 3 chiều x, y, z mặc định là 0
+ Rotation: Vị trí xoay của đối tượng theo 3 chiều x, y, z, mặc định là 0 + Scale: phóng to thu nhỏ đối tương theo các chiều x, y, z
Nếu bạn thay đổi lộn xộn các vị trí các đối tượng unity bạn chỉ cần nhấn vào biểu tường bánh răng bên phía tay phải chọn “reset”, tức là đối tượng sẽ trở về trạng thái ban đầu
Giao diện Project:
Dùng để chứa các file lập trình, âm thanh, hình ảnh, hiệu ứng, texture trong unity
Hướng dẫn làm đối tượng di chuyển và nhảy bằng unity
Trang 25Hôm nay mình sẽ hướng dẫn các bạn mới học unity một bài khá đơn giản
và cơ bản trong viêc học unity, đó là điều khiển một trái bóng di chuyển các hướng và nhảy lên bằng bàn phím
Bước 1: các bạn tạo ra 1 quả bóng và 1 mặt phằng để quả bóng có thể di chuyển trên đó
Các bạn nhìn trên thẻ Hierarchi có Create, các bạn vào đó và lần lượt chọn Sphere( khối cầu) và Plane (mặt phẳng)
Các bạn có thể Create thêm Direction light để không gian sáng hơn
Trang 26Các bạn kéo trục tọa độ Y để quả cầu nằm trên mặt phẳng.
Trang 27Sau đó các bạn kéo chiều dài và chiều rộng của mặt phẳng ra lớn hơn
để quả bóng có thể di chuyển thoải mái bằng cách chỉnh thông số Scale của Plane trong thẻ Inspector
Vậy là các bước chuẩn bị đã hoàn thành
Bước 2: Để quả bóng di chuyển được, chúng ta cần viết script cho nó, các bạn nhìn trên thẻ Project, chuột phải vào Assets -> Create -> C# Script (ở đây mình dung ngôn ngữ C#)
Trang 28Một Script mới sẽ được tạo ra, các bạn đặt tên cho nó Mình đặt tên là
“move”.Sau đó các bạn nháy đúp vào script, cửa sổ MonoDevelop sẽ được mở
ra để chúng ra code trong đó
Các bạn code như sau:
Trang 29Câu lệnh “rigidbody.Addfore” giúp ta đẩy quả bóng đó đi với 1 lực theo 1
Trang 30vector nào đó.
Sau khi code xong các bạn ấn Ctrl+S để lưu lại rồi quay lại cửa sổ Unity, dùng chuột kéo file script (của mình là file move) vào đối tương Sphere (quả bóng)
Bây giờ thì đối tượng Sphere đã được điều khiển bằng script
“move”
Trang 31Vậy là ta đã xong phần viết lệnh điều khiển trái bóng.
Bước 3 Để quả bóng có thể nhận lực tác dụng vào thì nó phải có khối
Trang 32lượng, để tạo khối lượng cho quả bóng, các bạn chọn vào “Add component” trong thẻ Inspector của Sphere Các bạn chọn Physics -> Rigidbody.
Trang 34Bây giờ các bạn có thể tăng giảm khối lượng quả bóng.
Trang 36Bây giờ bạn thử ấn play và sử dụng phím lên xuống trái phải để di chuyển quả bóng, phím cách để nhảy :D
Bước 4: Để quả bóng đẹp hơn thì ta nên tạo cho nó 1 màu sắc hay họa tiết
gì đó
Các bạn lấy ảnh của 1 họa tiết bất kì mà bạn muốn tô cho quả bóng, sau đó kéo nó vào ô Assets của thẻ Project Mình chọn họa tiết caro
Sau đó bạn dùng chuột kéo file đó thả vào quả bóng, vậy là quả bóng
đã được tô màu, các bạn có thể làm tương tự với Plane để tạo mặt đất đẹp hơn
Trang 37Vậy là các bạn đã hoàn thiện việc điều khiển quả bóng chạy theo các hướng và nhảy.
Cách biên dịch ra file APK trong unity
Để thực hiện biên dịch được các bạn làm theo các bước sau:
* Bước 1:
Download:
Trang 38+ File android sdk tại đây
+ File JDK tại đây (Với jdk các bạn phải chọn phiên bản đúng với hệ điều hành của chúng ta là 32bit hay là 64bit)
Sau khi down load xong các bạn giải nén và trỏ vào thư mục như hình ảnh phía dưới: (Nằm trong Menu>edit>References)
*Bước 2: Trong giao diện unity vào File>BuildSettings
Trang 39Bản thân unity chúng ta có thể biên dịch ra rất nhiều môi trường khác nhau, nhưng trong bước này các bạn lưu ý phần android và các phân mà tôi bôi màu đỏ.
* Bước 3: Các bạn chọn Player Settings trong phần màu đỏ ở bước 2, sau khi chọn xong xuất hiện cửa sổ bên phía tay phải của các bạn như sau:
Trang 40Trong phần hình ảnh của bước 3 này các bạn lưu lý phần tôi đánh dầu là phần 1, 2 Với phần 1 các bạn phải nhập tên công ty hay tập thể cá nhân của các bạn, và 2 các bạn phải đưa kích thước ảnh icon cho game (Lưu ý phải là hình vuông, thông thường tôi để 400x400)
Bước 4: Các thành phần trong cửa số player setting
- Với phần Resolution and presentation