Ngày nay, điện thoại di động đã trở thành phương tiện không thể thiếu trong cuộc sống hằng ngày của chúng ta. Điện thoại không còn đơn thuần là dành cho những cuộc gọi hay nhắn tin nữa, nhu cầu sử dụng điện thoại bây giờ rất đa dạng và phong phú, trong đó không thể bỏ qua nhu cầu giải trí. Game trên trên điện thoại di động đã trở thành thú vui số 1 của giới trẻ. Tuy game trên điện thoại di động chơi không sướng như trên máy tính nhưng tính tiện lợi thì rất rõ, có thể chơi mọi lúc mọi nơi. Trước kia các ứng dụng game trên di động hầu hết là đồ họa 2D, nhưng với sự bùng nổ công nghệ hiện nay dẫn đến các thiết bị di động có đủ sức mạnh để chạy được các ứng dụng đòi hỏi cấu hình cao, các ứng dụng đồ họa phức tạp trong không gian 3 chiều.
MỞ ĐẦU Ngày nay, điện thoại di động trở thành phương tiện thiếu sống ngày Điện thoại khơng đơn dành cho gọi hay nhắn tin nữa, nhu cầu sử dụng điện thoại đa dạng phong phú, khơng thể bỏ qua nhu cầu giải trí Game trên điện thoại di động trở thành thú vui số giới trẻ Tuy game điện thoại di động chơi không sướng máy tính tính tiện lợi rõ, chơi lúc nơi Trước ứng dụng game di động hầu hết đồ họa 2D, với bùng nổ công nghệ dẫn đến thiết bị di động có đủ sức mạnh để chạy ứng dụng đòi hỏi cấu hình cao, ứng dụng đồ họa phức tạp khơng gian chiều Chính mà nhu cầu chơi game 3D di động trở nên tăng cao, hãng sản xuất liên tục cho đời thể loại game 3D hình ảnh đẹp mắt, âm sống động chạy thiết bị di động Song song đó, game Engine 3D không ngừng phát triển hỗ trợ làm game cho thiết bị di động với nhiều hệ điều hành khác Android, iOS Nội dung luận văn chúng em thực bao gồm việc tìm hiểu Engine Unity sử dụng Unity để xây dựng game 3D cho điện thoại di động môi trường Android i Chương Giới thiệu chung 1.1.1 Sự phát triển Android Vào tháng 10/2008 hệ điều hành Android xuất lần di động Trong suốt năm 2009 điện thoại chạy hệ điều hành Android đếm đầu ngón tay Nhưng thật đáng kinh ngạc năm 2010 hàng trăm thiết bị sử dụng tảng Android xuất rầm rộ, từ hãng tên tuổi lớn điện thoại vô danh Trung Quốc Các phiên liên tục cập nhật, nhờ mà nhà phát triển tự xây dựng ứng dụng hệ điều hành mở điểm làm cho Android phát triển nhanh chóng Lơi kéo đầy đủ tên tuổi lớn Samsung, LG, Sony Ericsson, HTC, Motorola đó, tất coi Android tảng cho thấy Google khơn khéo Và Android giúp Motorola thoát khỏi giai đoạn khủng hoảng Android trở thành hệ điều hành hàng đầu phổ biến giới Rất nhiều hãng sản xuất cho đời nhiều mẫu máy chủng loại sử dụng hệ điều hành Android từ phổ thông siêu cấp (a) T-Mobile G1 (HTC Dream) (Nguồn: http://www.htc.com) (b) Motorola-DROID (Nguồn:http://www.htc.com/) (c) Orange San Francisco Android (d) Samsung Galaxy S (Nguồn: http://www.slashphone.com/) (Nguồn: http://www.samsung.com/vn) (e) Sony Ericsson Xperia™ X1 (f) Galaxy Tab dùng Android (Nguồn: http://www.sonyericsson.com/) (Nguồn: http://www.sonyericsson.com/) Hình 1.1 Một số hình ảnh điện thoại chạy hệ điều hành Android Canalys, công ty phân tích thị trường lớn Mỹ đưa báo cáo chứng minh hệ điều hành Android vượt xa Symbian thị trường điện thoại di động thơng minh: Hình 1.2 Bảng thống kê tình hình tiêu thụ điện thoại hãng (Nguồn: http://www.canalys.com/) Những điện thoại thông minh sử dụng hệ điều hành Android vượt qua mặt Nokia Apple để dẫn đầu thị trường điện thoại thông minh giới Dựa theo số liệu phân tích thị trường năm 2009 năm 2010, công ty chuyên phân tích thi trường Canalys đưa báo cáo tình hình tăng trưởng hệ điều hành dành cho điện thoại quý IV năm 2010 Báo cáo cho thấy, năm vừa qua, Quý IV, điện thoại sử dụng tảng Android người mua nhiều so với số lượng bán dòng máy Symbian, với 33.300.000 điện thoại Android xuất xưởng Bên cạnh đó, hệ điều hành Android chiếm tới 32,6% người dùng toàn giới, nhiều 2,9% so với hệ điều hành Symbian Báo cáo rõ nhiều hãng sản xuất điện thoại tăng thị phần điện thoại thông minh nhanh chóng LG, Samsung, Acer HTC với mức tăng trưởng 4.127%, 1.474%, 709% and 371% so với kỳ năm trước Trong hãng HTC Samsung chiếm gần 45% thị trường điện thoại sử dụng hệ điều hành Android Đây kiện quan trọng thị trường di động 10 năm trở lại đây, chưa có hệ điều hành vượt mặt hệ điều hành Symbian Nokia Điều đáng nói, tốc độ tăng trưởng Android diễn nhanh chưa có dấu hiệu giảm lại Hình 1.3 Thống kê tình hình phiên Android (Nguồn: http://developer.android.com/) Theo phân tích đánh giá tình hình phiên hệ điều hành Android tính đến tháng 1/2011 cho thấy, phiên hệ điều hành Android 2.3 có mặt phân tích với 0,4% Như tính đến đầu năm 2011, tất phiên hệ điều hành Android 2.x chiếm đến 87,4%, tăng thêm 4,4% so với đầu tháng 12/2010 Theo dự đoán tháng đầu năm này, hệ điều hành Android 2.1 có mức giảm nửa phiên Android 2.2 2.3 có thêm mức tăng không cao báo cáo tháng Thống kê số lượng ứng dụng game Android Market đạt tới số 29.293 game chiếm 19.4% Hình 1.4 Số liệu thống kê ứng dụng xuất theo tháng (bao gồm ứng dụng game) (Nguồn: http://www.androlib.com) Hình 1.5 Số liệu thống kê tỷ lệ ứng dụng game (Nguồn: http://www.androlib.com/appstatstype.aspx) 1.1.2 Game 3D Android Thị trường game sôi từ nhiều năm Trong thời gian gần đây, với hỗ trợ công nghệ tiên tiến, giới game 3D thật diễn tả đầy đủ tồn sống thật Việc ứng dụng cấu hình phần cứng dựng sẵn xu hướng chung phát triển game mobile Từ ứng dụng cảm ứng đa điểm hệ cảm biến hành vi giúp xoay ngang, xoay dọc để điều khiển nhân vật game trở thành mặc định tựa game 3D cao cấp Năm 2010 kết thúc đánh dấu nấc thang vượt bậc tựa game di động bùng nổ tảng tiên tiến Và chắn, năm 2011 hứa hẹn thời khắc cao trào cạnh tranh, phát triển người dùng chứng kiến thời kỳ sôi động chưa thấy tựa game, cỗ máy di động đỉnh cao Một vài game 3D tiêu biểu Android: (b) Game đua xe Asphalt5 (Nguồn: http://tinhte.vn/) (a) Game Hero of Sparta (Nguồn: http://www.vietgiaitri.com/) (c) Real Football 2011 (d) Brother in Arm v3.1.2 (Nguồn: http://www.eurodroid.com/) (Nguồn: http://www.dalats.com/forum/) Hình 1.6 Một số hình ảnh game 3D Android Hiện nay, có nhiều engine hỗ trợ làm game 3D Android Do chúng em cần tìm game engine đủ tốt để xây dựng game Tiêu chí khảo sát chúng em engine phải render nhanh nhiều mơ hình lúc hình, làm mơ hình nhân vật chuyển động, hỗ trợ va chạm vật thể, hỗ trợ hiệu ứng particle tốt Sau số game engine 3D cho Android: jPCT-AE: jPCT-AE port từ engine jPCT sang cho Android Đây engine 3D miễn phí, nhỏ gọn, tính tương đối libGDX: thư viện viết chủ yếu NDK (công cụ cho phép gọi thực thi code C/C++ từ Java) nên cho tốc độ xử lý nhanh Một ưu điểm engine cho phép viết game test hoàn toàn desktop Tuy nhiên, lidGDX phát triển lúc đầu chủ yếu dành cho 2D nên thời điểm thư viện chưa hỗ trợ kiểm tra va chạm vật thể 3D Shiva3D: engine thương mại mạnh Shiva dùng ngôn ngữ Lua để viết script game, ngơn ngữ người biết đến Unity: game engine phổ biến nay, có khả phát triển trò chơi đa nền, trình biên tập chạy Windows Mac OS, xuất game cho Windows, Mac, iOS, Android, Wii, Web, Xbox 360, PlayStation Unity tạo nhiều loại game 3D đa dạng, hỗ trợ import nhiều mơ hình định dạng khác nhau, hỗ trợ tạo mơ hình trực tiếp Lượng tài liệu hướng dẫn nhiều, cộng đồng lớn với diễn đàn riêng Unity có phiên Unity Pro có tính phí Unity Free để người dùng dễ dàng lựa chọn, mà Unity khơng dành cho công ty lớn chuyên ngiệp, mà kể giới làm game khơng chun sử dụng cách dễ dàng Bởi tính tuyệt vời phổ biến Unity, nên luận văn nhóm chúng em giao nhiệm vụ tìm hiểu 1.2 Mục tiêu đề tài Đề tài thuộc hướng tìm hiểu cơng nghệ từ xây dựng ứng dụng Mục tiêu đề tài tìm hiểu engine Unity sử dụng Unity xây dựng thử nghiệm game 3D thể loại chơi theo lượt (turn-base) chạy môi trường Android cho thiết bị di động Để thực được điều nội dung luận văn bao gồm: Giới thiệu tổng quan Android Tìm hiểu tổng quan kiến trúc Unity cách tạo lập ứng dụng Unity Tìm hiểu vấn đề load mơ hình vào game, làm nhân vật chuyển động, cách tạo địa hình, giao diện, âm hiệu ứng particle… để từ đưa giải pháp Xây dựng phát triển ứng dụng game thể loại chơi theo lượt Unity 1.3 Nội dung luận văn Luận văn bao gồm chương: Chương 1: Giới thiệu tổng quan phát triển Android thiết bị di động môi trường Android, game 3D Android Chương 2: Giới thiệu tổng quan Unity, trình bày khái niệm bản, tính bật, giao diện, đặc biệt tổng quan kiến trúc Engine Unity chúng em xác định Chương 3: Trình bày vấn đề giải pháp xây dựng ứng dụng game 3D Unity cho Android Chương 4: Trình bày số đặc trưng ứng dụng game xây dựng kiến trúc game Chương 5: Kết luận hướng phát triển Fire Sword +3 Holy Arrow +2 Ralin Boot +1 Strengthen 10 11 12 -1 +5 Tactician +2 Telescope +1 Batte Axe +2 -1 Magic Water +12 -1 -1 4.3.6 Bài phép thuật Ngồi cách cơng đối phương vũ khí nhân vật, người chơi sử dụng phép để công trực tiếp đối phương Mỗi người chơi lúc ban đầu có số lượng định Mỗi lượt người chơi rút STT Tên lá Danh sách phép Hình đại diện The Judgement Hand Tác dụng Giảm 5HP quân lính 68 Goblin Fan Giảm 7HP quân lính Horn of the Unicorn Giảm 5HP tất qn lính tác động xung quanh Mystic Plasma Zone Giảm 9HP quân lính Paralyzing potion Giảm 6HP quân lính Ring of Destruction Giảm 10HP quân lính Molten Destruction Giảm 5HP tất qn lính tác động xung quanh Horn of Heaven Giảm 9HP qn lính Piercing Light Giảm 4HP quân lính Axe of Despair Giảm 11HP quân lính 10 69 4.4 Kiến trúc game 4.4.1 Kiến trúc tổng thể Hình 4.55 Kiến trúc tổng thể Hình 4.6 thể kiến trúc tổng thể game chúng em xây dựng dựa tảng Unity Các thành phần kiến trúc bao gồm: o Entity Factory: nhằm phục vụ việc tạo lập đối tượng game Các đối tượng game đơn vị lính, cơng trình, đồ, tính phép thuật có thêm game (xem chi tiết vể phân hệ phần 4.4.2) o Scenario Loader: Phân hệ nhằm giúp nạp game từ file scenario đặc tả trước bên (xem chi tiết vể phân hệ phần 4.4.3) 70 o Scenario Ending: Phân hệ nhằm đảm bảo game có khả dễ dàng thay đổi, bổ sung hay thêm kiện kết thúc chơi khác (xem chi tiết vể phân hệ phần 4.4.4) o Computer AI: Phân hệ nhằm đảm bảo game có khả dễ dàng thay đổi, bổ sung hay thêm AI khác (xem chi tiết vể phân hệ phần 4.4.5) 4.4.2 Kiến trúc xử lý, phát sinh đối tượng Trong game, chúng em sử dụng chế quản lý tập trung, tất liệu thông tin game load lần lúc khởi tạo game Với thực thể game có lớp Factory có nhiệm vụ đọc liệu theo cấu trúc định nghĩa sẵn file xml lưu thông tin vào Entity tương ứng Hình 4.56 Sơ đồ lớp khởi tạo phát sinh đối tượng Việc tạo lập xử lý theo kiến trúc đề nghị hình , tương ứng với loại thực thể cho trước Unit, Building, Map,… có lớp đối tượng chuyên tạo lập đối tượng thuộc nhóm tương ứng Ví dụ UnitFactory chun để xử lý, tạo lập đối tượng Unit, Ở đây, cấu trúc thực thể game chia làm nhóm: nhóm Visible đối tượng có khả hiển thị 71 hình nên cung cấp phương thức Render() dùng để hiển thị đối tượng, đối tượng khác xử lý mặt logic game khơng có nhu cầu hiển thị Card hay Ability Tương ứng với loại thực thể (Entity) có game quản lý việc tạo lập lớp đối tượng cụ thể kế thừa từ EntityFactory tương ứng Với kiến trúc trên, cần tạo thực thể thật sự, ta cần gọi hàm Create() với tham số ID Entity cần tạo lớp Factory tương ứng với loại thực thể 4.4.3 Kiến trúc nạp chơi Hình 4.57 Load chơi từ file xml Trong file đặc tả chơi cần có thơng tin sau: Tên chơi ID map (được đặc tả file khác) Điều kiện kết thúc chơi (xem chi tiết phần 4.4.4) PlayerList: định nghĩa thông tin người chơi game, với quy ước player người điều khiển, lại máy điều khiển o o o o o o o o Thông tin người chơi bao gồm: Tên người chơi Thông tin mô tả ngắn gọn Loại AI (người điều khiển ta cho 0) Số vàng lúc đầu người chơi Màu sắc người chơi (05) ID quốc gia (được đặc tả file khác) Phe (những người chơi phe có giá trị nhau, ngược lại kẻ thù) Danh sách quân lính ban đầu người chơi, phải ln có anh hùng (UnitList) o Danh sách Card người chơi (CardList) o Các loại quân lính người chơi mua (AllowBuyUnitList) 72 Lớp ScenarioLoader có nhiệm vụ đọc file thơng tin chơi đặc tả sẵn bên để tạo chơi game Với cách xử lý này, ta tạo chơi nhanh chóng dễ dàng Tên chơi Mô tả chơi ID đồ chơi Tên người chơi Thông tin ngắn gọn Loại AI (0: khơng có AI, 1: hiếu chiến, 2: AI trung hòa) Số vàng lúc đầu chơi Màu sắc người chơi (0->5) ID quốc gia Phe (Các người chơi phe có giá trị nhau) Vị trí dòng đặt unit Vị trí cột đặt unit Điểm kỹ lúc đầu Có phải anh hùng khơng (1: có, 0: không) 73 Hình 4.58 Nội dung file xml mơ tả chơi 4.4.4 Kiến trúc quản lý kiện kết thúc chơi Hình 4.59 Sơ đồ lớp quản lý kiện kết thúc chơi Mỗi chơi game có kiện kết thúc chơi khác quản lý lớp đối tượng xử lý kết thúc chơi Các đối tượng cung cấp hàm IsFinish() có nhiệm vụ kiểm tra chơi kết thúc Hiện game hỗ trợ dạng chơi: giết tất lính, giết tất tướng, sống sót qua lượt Để làm điều đó, game hỗ trợ lưu đặc tả kiện kết thúc chơi bên file đặc tả chơi thẻ EndingCondition với cấu trúc sau: // File đặc tả chơi Scenario.xml // // 74 Thuộc tính type qui định loại kiện kết thúc chơi: o type =1: kết thúc chơi giết tất lính o type =2: kết thúc chơi giết tất tướng o type =3: kết thúc chơi sống sót qua lượt Tùy vào type mà ta tạo lập đối tượng cụ thể dùng hàm ParseXML() để đối tượng tự đọc nội dung bên thẻ EndingCondition lấy thông tin xử lý kết thúc chơi Với kiến trúc theo mẫu Strategy ta thêm kiện kết thúc chơi vào game dễ dàng 4.4.5 Kiến trúc quản lý AI Hình 4.60 Sơ đồ lớp quản lý AI game Trong game, máy có nhiều dạng AI khác Mỗi AI quản lý lớp đối tượng kế thừa từ lớp PlayerAI Trong lớp cung cấp hàm Action() để tính tốn bước máy trả danh sách AIAction Máy có nhiều hành động khác đi, đánh, bắn, … Tương ứng với hành động thực thi hàm RunAction() lớp đối tượng kế thừa từ AIAction 75 Chương Kết luận hướng phát triển Nội dung chương này trình bày kết đạt trình thực luận văn và hướng phát triển đề tài 5.1 Các kết đạt 5.1.1 Ứng dụng game Sau tìm hiểu phương pháp xây dựng game 3D với engine Unity cho Android chúng em hoàn thành ứng dụng game thuộc thể loại chơi theo lượt Trong trình xây dựng game, chúng em nêu số vấn đề gặp phải, đưa số hướng giải pháp để giải Các hình giao diện game mà chúng em xây dựng luận văn này: Hình 5.61 Màn hình menu Game 76 Ở hình Menu chính, người chơi chọn “Play Campaign” để chọn chơi, chơi chơi qua có màu xanh, chưa chơi có màu tối chưa quyền chơi Hình 5.62 Màn hình menu chọn chơi Hình 5.63 Một cảnh chọn vào qn lính 77 Hình 5.64 Một cảnh đánh qn lính phe Hình 5.65 Một cảnh phóng lao lính 78 Hình 5.66 Một cảnh chọn vào nhà chiếm để mua lính Hình 5.67 Màn hình nâng cấp kỹ 79 Hình 5.68 Màn hình chọn xem thơng tin Hình 5.69 Một cảnh kéo phép vào lính 80 5.2 Hướng phát triển Tối ưu hóa xử lý giúp game chạy nhanh Game hỗ trợ chế độ nhiều người chơi lúc qua Bluetooth Internet Tăng thêm số lượng chơi để người chơi thêm nhiều lựa chọn Cung cấp thêm công cụ để người chơi chỉnh sửa tạo cho riêng hình ảnh nhân vật, hiệu ứng âm thanh, … Cải thiện trí thơng minh nhân tạo máy 81 82 ... ứng dụng game thể loại chơi theo lượt Unity 1.3 Nội dung luận văn Luận văn bao gồm chương: Chương 1: Giới thiệu tổng quan phát triển Android thiết bị di động môi trường Android, game 3D Android. .. làm game 3D nay, mang đến cho người chơi cảm giác khác lạ hào hứng chuyển động, tương lai công nghệ áp dụng vào game Việt Nam mở trang giới game 3D huyền ảo Unity 3D dùng để làm video game 3D, ... vào project Unity 2.6 Tổng quan kiến trúc engine Unity Android 2.6.1 Kiến trúc tổng quan Engine Unity hỗ trợ cho UnityAPI để viết script game UnityAPI API lập trình game Unity mạnh UnityAPI chứa