Xây dựng game planes sử dụng thư viện engine game libgdx

41 697 0
Xây dựng game planes sử dụng thư viện engine game libgdx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Với sự phát triển của ngành công nghiệp làm game ngày càng tăng cao, nhu cầu giải trí của con người ngày càng cao. Đồng thời xu hướng ứng dụng các loại engine vào làm game ngày càng nhiều. Vì vậy ta đặt ra bài toán “Xây dựng game Planes”.Trò chơi thuộc thể loại 2D, 2 máy bay sẽ di chuyển cùng với nhau về phía trước. Có những lúc bạn tưởng như đã vượt qua nhưng một tiếng nhạc vang lên – Game over. Tiếp sau đó là cảm giác tức giận, cay cú và quyết tâm chinh phục nó. Đó chính là đặc điểm của trò chơi “Planes”.Bạn phải điều khiển không phải một mà là hai máy bay bay qua những vách núi trong hang động tử thần. Nếu một trong 2 máy bay chạm vào chướng ngại vật thì trò chơi sẽ kết thúc. Khi cả hai máy bay vượt qua một vách núi thì người chơi mới nhận được một điểm. Có thể nói đây là một trò chơi có đồ họa cực kỳ đơn giản nhưng cũng cực kỳ điên rồ, khó chịu, khó nhằn và gây bực bội cho người chơi với độ khó của nó. Trò chơi đòi hỏi sự khéo léo, tinh thần đồng đội cực cao. Nếu đạt tới mức độ cao hơn bạn có thể phân thân điều khiển 2 máy bay bằng 2 tay của mình như 2 người chơi, mỗi tay điều khiển một máy bay.Cảnh báo: Trò chơi có thể gây nghiện cho người chơi vì nó có khả năng hút hồn người chơi về độ khó của nó. Cần demo liên hệ hoapham.epu.edu@gmail.com

TẬP ĐOÀN ĐIỆN LỰC VIỆT NAM TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN THỰC TẬP TỐT NGHIỆP XÂY DỰNG GAME PLANES SỬ DỤNG THƯ VIỆN ENGINE GAME LIBGDX Giảng viên hướng dẫn: ThS. LÊ HOÀN Sinh viên thực hiện: PHẠM THỊ HOA Ngành: CÔNG NGHỆ THÔNG TIN Chuyên ngành: CÔNG NGHỆ PHẦN MỀM Lớp: D6 CNTT Khóa: 2011 - 2016 Hà Nội, tháng 10 năm 2015. LỜI MỞ ĐẦU Sự phát triển của thị trường điện thoại di động ngày càng mạnh mẽ cùng với xu hướng lập trình phần mềm ứng dụng cho các thiết bị di động. Phần mềm, ứng dụng cho điện thoại di động hiện nay rất đa dạng và phong phú đang phát triển mạnh mẽ và thay đổi từng ngày. Các hệ điều hành như: J2ME, Android, IOS, Hybrid, … rất phát triển trên thì trường truyền thông di động. Trong những năm gần đây, các hệ điều hành di động như IOS, Android, Windows Phone… ra đời với sự kế thừa những ưu việt của các hệ điều hành ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay, đã được phát triển bởi các nhà công nghệ rất nổi tiếng hiện nay như là Google, Apple, Microsoft. Các hệ điều hành đã nhanh chóng là đối thủ cạnh tranh mạnh mẽ với các hệ điều hành trước đó và đang trở thành hệ điều hành di động của tương lai và được nhiều người ưa chuộng. Ngày nay với sự phát triển nhanh chóng của xã hội, nhu cầu giải trí mọi lúc mọi nơi trên các thiết bị di động là rất cần thiết, vì vậy em đã chọn đề tài “Xây dựng game Planes sử dụng thư viện Engine Game Libgdx” với mục đích nghiên cứu, tìm hiểu về một phương thức lập trình game cho các thiết bị di động để có thể đáp ứng được nhu cầu giải trí ngày càng cao của xã hội hiện nay. Tên đề tài: “Xây dựng trò chơi Planes sử dụng thư viện Engine Game Libgdx”. CẤU TRÚC ĐỀ TÀI Lời mở đầu: nêu rõ mục đích, ý nghĩa khi chọn đề tài. Chương 1: Tổng quan về game trên smartphone o Khảo sát thị trường game o Phát triển game trên các thiết bị smartphone Chương 2: Xây dựng game Planes o Đặt ra bài toán o Ý tưởng thực hiện o Phân tích chương trình o Thuật toán chương trình Chương 3: Cài đặt và thí nghiệm o Libgdx và cách tạo một dự án mới với libgdx o Xây dựng giao diện chương trình o Giao diện demo chương trình Kết luận: Kết quả đạt được, hạn chế và phương hướng phát triển. LỜI CẢM ƠN Em xin gửi đến Thầy cô ở Khoa Công nghệ thông tin – Trường Đại học Điện Lực lời biết ơn sâu sắc nhất, những người đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho em trong thời gian học tập tại trường. Em xin chân thành cám ơn Thạc sĩ Lê Hoàn đã tận tâm hướng dẫn em qua những buổi trao đổi. Trong thời gian được học tập và thực hành dưới sự hướng dẫn của thầy và anh, em đã thu được rất nhiều kiến thức bổ ích. Nếu không có những lời hướng dẫn, dạy bảo của thầy thì em nghĩ đồ án này của em rất khó có thể hoàn thành được. Xin gửi lời cảm ơn chân thành đến gia đình, bè bạn, đã luôn là nguồn động viên to lớn, giúp em vượt qua những khó khăn trong suốt quá trình học tập và thực hiện đồ án. Mặc dù đã rất cố gắng hoàn thiện đồ án với tất cả sự nỗ lực, tuy nhiên, do bước đầu đi vào thực tế, tìm hiểu và xây dựng đồ án trong thời gian có hạn, và kiến thức còn hạn chế, nhiều bỡ ngỡ, nên đồ án “Xây dựng game Planes sử dụng thư viện Engine Game Libgdx” chắc chắn sẽ không thể tránh khỏi những thiếu sót. Em rất mong nhận được sự quan tâm, thông cảm và những đóng góp quý báu của các thầy cô và các bạn để đồ án này ngày càng hoàn thiện hơn. Một lần nữa, em xin chân thành cám ơn và luôn mong nhận được sự đóng góp của mọi người. Sau cùng, em xin kính chúc các thầy cô trong Khoa Công nghệ thông tin dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau. Trân trọng! Hà Nội, ngày 09 tháng 10 năm 2015 Sinh viên thực hiện Phạm Thị Hoa MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU DANH MỤC KÝ HIỆU DANH MỤC KÝ HIỆU NHỮNG CỤM TỪ VIẾT TẮT DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU DANH MỤC KÝ HIỆU PHẦN TỬ Tác nhân (Actor) Use-case Mối quan hệ giữa các use case KÝ HIỆU Biểu đồ USE CASE Ý NGHĨA Một người / nhóm người hoặc một thiết bị hoặc hệ thống tác động hoặc thao tác đến chương trình. Biểu diễn một chức năng xác định của hệ thống Use case này sử dụng lại chức năng của use case kia Use case này kế thừa các chức năng từ use case kia Biểu đồ HOẠT ĐỘNG Hoạt động Mô tả hoạt động gồm tên hoạt động và đặc tả của nó Trạng thái khởi đầu Bắt đầu trạng thái hoặc hoạt động Trạng thái kết thúc Kết thúc trạng thái hoặc hoạt động Quyết định Mô tả một lựa chọn điều kiện Entity class Mô hình hóa các thông tin lưu trữ lâu dài trong hệ thống, nó thường độc lập với các đối tượng khác ở xung quanh Là một phương thức của một lớp mà đối tượng lớp 2 gọi thực hiện Procedure DANH MỤC CÁC CỤM TỪ VIẾT TẮT OPENGL ES Open Graphics Library for Embedded System Một phiên bản của OpenGL dành cho các hệ thống nhúng mà tiêu biểu là các thiết bị di động OpenGL Open Graphics Library Là một bộ thư viện đồ hoạ, bao gồm một tập khoảng 200 hàm, dùng trong các ứng dụng đồ hoạ 2 chiều và 3 chiều. CNV Chướng ngại vật Vật cản: vòm trời, mặt đất,… API Application Programming Interface Giao diện lập trình ứng dụng IVM Java Virtual Machine Nó tạo ra môi trường máy ảo để thực thi mã java bytecode, có sẵn trong nhiều phần cứng và nền tảng phần mềm (Load code, Verifies code, Executes code, Provides runtime enviroment) 7 CHƯƠNG 1 TỔNG QUAN VỀ GAME TRÊN SMARTPHONE 1.1 Khảo sát thị trường game trên thiết bị di động Ngày nay Công nghiệp giải trí hiện đang rất phát triển trên thế giới, bao gồm các thành phần cơ bản như: Game, âm nhạc, thời trang, chương trình truyền hình, điện ảnh, Gameshow, truyền thông, tổ chức live show,... Các mảng nằm trong ngành giải trí không chỉ mang tính giải trí mà còn mang nhiều giá trị về văn hóa, lối sống, phong tục và con người của từng vùng miền, đồng thời quảng bá hình ảnh của đất nước Việt Nam tới bè bạn khắp nơi trên thế giới. Có thể nói một trong những ngành giải trí mang lại nhiều lợi nhuận nhất đó là ngành Game. Game là lĩnh vực giải trí tương tác quan trọng hàng đầu trong ngành công nghiệp nội dung số. Doanh thu toàn cầu từ ngành này tăng trưởng nhanh chóng từ 7 tỷ USD (1994) lên 41.9 tỷ USD (2007) và dự đoán sẽ đạt 68 tỷ USD (2012). Với tốc độ tăng trưởng bình quân 9% một năm, Game đã trở thành ngành có tốc độ phát triển nhanh nhất trong lĩnh vực giải trí. Trong đó, Mỹ chiếm 40.42% thị phần, Anh 12.45% và Nhật 11.87%. Năm 2008, ngành Game ở Mỹ giá trị khoảng 22 tỷ USD vượt qua ngành công nghiệp âm nhạc (10 tỷ USD) và ngành công nghiệp phim ảnh (9,5 tỷ USD), thu hút hàng triệu lao động là các chuyên gia phát triển, phân phối và marketing Game. Việt Nam là thị trường Game lớn nhất trong khu vực Đông Nam Á với hơn 20 nhà phát hành Game trên cả nước. Doanh thu các năm gần đây liên tục tăng trưởng với mức trung bình 400 triệu USD/năm, chiếm 70% doanh thu của ngành nội dung số. Có mức tăng trưởng ấn tượng, nhưng ngành công nghiệp Game ở Việt Nam chỉ mới dừng lại ở mức phân phối phát hành và gia công các tựa Game nước ngoài. Một vài năm gần đây, các Studio được lập nên nhằm phát triển sản xuất Game thuần Việt. Tính đến giữa tháng 6 năm 2011, số lượng Game do Việt Nam sản xuất đang đưa vào triển khai trên thị trường có Thuận Thiên Kiếm (VNG), SQUAD, G3, Showbiz (VTC Studio) mới đây nhất là Jay Online (FGame) Tranh Hùng (SunSoft), Game offline có 7754 – một tựa Game rất thành công lấy đề tài chiến dịch Điện Biên Phủ. 1.2 Lập trình game Trò chơi Flappy Bird làm mưa làm gió trong thời gian gần đây, kèm với thông tin tác giả game – một chàng trai người Việt kiếm được tiền tỷ/ngày nhờ nó, đã khiến nghề viết ứng dụng điện thoại (viết app) được nhiều người quan tâm hơn bao giờ hết. Trò chơi Flappy Bird làm mưa làm gió trong thời gian gần đây, kèm với thông tin tác giả game – một chàng trai người Việt kiếm được tiền tỷ/ngày nhờ nó, đã khiến nghề viết ứng dụng điện thoại (viết app) được nhiều người quan tâm hơn bao giờ hết. 8 Thực ra, nghề viết app đã “hot” từ rất lâu trong giới lập trình. Khi mà thị trường smart phone bùng nổ trong những năm gần đây, các “chợ” ứng dụng như: Apple Store, Android Market, Ovi Store,… mọc lên với vô số ứng dụng và hàng tỷ lượt download, nghề này đã được rất nhiều lập trình viên, đặc biệt là các bạn trẻ theo đuổi. Hình 1.: Game Flappy Bird 1.3 Sức hút của nghề lập trình game Nghề lập trình game là nghề của đam mê và sáng tạo. Với các bạn trẻ yêu thích trò chơi, công nghệ và mỹ thuật, nghề lập trình viên game là mảnh đất “vàng” để phát triển các ý tưởng. Công việc của một lập trình viên game gồm quản lý dự án, phát triển ý tưởng, thiết kế kịch bản trò chơi, màn chơi, lập trình, vẽ đồ họa 2D, 3D và… chơi thử để tìm lỗi! Mỗi khâu đều đòi hỏi ở lập trình viên niềm đam mê với thế giới trò chơi và luôn trong trạng thái muốn sáng tạo những điều mới mẻ. “Làm game phải chơi game để tìm cảm hứng sáng tạo. Không “giữ lửa” được trong nghề này thì không thể tồn tại lâu được”, một game developer chia sẻ. Môi trường làm việc hiện đại cũng là điểm cuốn hút của ngành nghề này đối với giới trẻ. Dạo quanh các game studio của các công ty như FPT online, Gameloft VN, GlassEgg, Sáng Tạo, VNG…, các bạn trẻ có thể bị “choáng” vì bàn làm việc của mỗi người có thể gồm 2 màn hình, hai, ba chiếc di động và nhiều thiết bị hiện đại khác. Nhưng quan trọng nhất là triển vọng nghề nghiệp của lập trình viên game là rất cao. Tại Texas, Mỹ, theo thống kê của “The Texas Tribune”, lương trong ngành Mô phỏng và Lập trình Game từ 1.000 đến trên 40.000 USD/tháng. Game và nội dung thông tin số là ngành công nghiệp tiềm năng không chỉ trên thế giới mà cả tại Việt Nam. Lương lập trình viên game dao động từ 7 đến 15 triệu/tháng, đó là chưa kể nhiều 9 công ty thưởng lương tháng 13, thưởng thành tích và doanh thu sản phẩm khá cao. Các công ty game Việt Nam liên tục tuyển người nhưng vẫn thường xuyên rơi vào tình trạng “khát nhân lực” do nhu cầu cao nhưng số lượng đáp ứng yêu cầu công việc lại thấp. Game engine là gì? Nếu như chúng ta xem 1 game là 1 căn nhà, thì game engine là một trung tâm cung cấp vật liệu xây dựng, trang thiết bị để xây dựng ngôi nhà đó. Việc của chúng ta chỉ là thiết kế, lắp ghép chúng lại thôi. Nhờ có game engine mà việc làm game trở nên đơn giản và ít chi phí hơn. Một số game engine nổi bật hiện nay như: Cry Engine, Unreal Engine, Source Engine, Id Tech Engine, IW Engine, Unity Engine, Dead Engine…. 1.4 Phát triển game trên các thiết bị smartphone Thị trường game di động gần đây đang phát triển một cách nhanh chóng và thường được so sánh với các tên tuổi lớn trên thị trường máy chơi game cầm tay (console) như Xbox One hay PlayStation 4. Hình 1.: Game trên thiết bị cầm tay 10 Trên thực tế, game di động là một nền tảng thân thiện hơn với tính linh hoạt cao. Đây cũng là nền tảng có thể được chia sẻ trên nhiều thiết bị khác nhau vì các nhà phát triển games di động phát hành sản phẩm trên cả 2 hệ điều hành Android, iOS và trên các máy chơi game di động như Nintendo 3DS, 2DS, DSi hay PS Vita và PSP. Một nghiên cứu mới từ App Annie cho thấy thị trường game di động đang phát triển vượt bậc trong khi thị trường console game lại có vẻ hạ nhiệt. 1.4.1 Android là nền tảng dẫn đầu trên tablet và smartphone Thị phần Android tăng 8,4% trong quý 2 năm 2013, đạt mức 70% tổng thị phần hệ điều hành trên các thiết bị di động. Trong khi đó iOS giảm 1,9% và những nền tảng khác giảm tổng cộng 6,4%. Hình 1.: Thị trường game 1.4.2 Sức hút của các thiết bị chơi game cầm tay Mọi người gần đây rất ít khi mua các máy chơi game cầm tay làm quà tặng, cả Nintendo lẫn Sony đều gặp phải sự sụt giảm số lượng mua và tải trò chơi. Ngoài ra, hầu hết các loại thiết bị điều khiển chơi game cầm tay có doanh số giảm đến 27% trong giai đoạn quý 2/2013 - quý 2/2014. Các máy chơi game không có các phiên bản mới được nâng cấp qua mỗi năm như smartphone, vì vậy bạn có thể mua một chiếc và sử dụng trong thời gian dài mà không sợ lỗi thời. Doanh số trò chơi thực tế đang giảm cho thấy ngày càng có ít người muốn mua game hoặc nội dung số cho thiết bị console của mình. 11 Hình 1.: Thị trường thiết bị chơi game cầm tay 1.4.3 Game di động bùng nổ Mức tăng trưởng số lượt tải trò chơi có tỷ lệ phần trăm tương ứng với mức tăng trưởng tổng số lượt tải ứng dụng trên cả Google Play và Apps Store của Apple trong thời gian một năm trở lại đây. Điều này cũng tương tự với doanh thu của game di động và tổng doanh thu. Hình 1.: Doanh thu của ngành game 1.4.4 Doanh thu game di động tăng lên, máy console giảm xuống Doanh thu game ở Google Play tăng hơn 70% so với năm ngoái và doanh của game trên Apps Store của Apple cũng tăng không kém. Trong khi đó, doanh thu của game dành cho máy console lại giảm 28%. 12 Game di động ngày càng phát triển và ngày càng tốt hơn trong khi game cầm tay lại không có bất kỳ bước tiến vượt bậc nào trong vài năm qua. Người ta có thể chơi game trên điện thoại nhiều hơn bởi vì tính linh động của nó trong khi chơi game trên các thiết bị cầm tay yêu cầu bạn đồng bộ nhiều thiết bị cùng lúc. Hình 1.: So sánh doanh thu 1.4.5 IOS tăng trưởng ở châu Á, Android tăng trưởng ở Tây Âu Ở nền tảng iOS, thị trường Châu Á Thái Bình Dương tăng 8.6% doanh thu ở lĩnh vực trò chơi và tương tự là mức tăng trưởng 2,8% trên nền tảng Android ở thị trường Tây Âu. Trong khi đó, doanh thu game console tăng 1% ở thị trường Tây Âu. Sự hiện diện ngày càng nhiều của Apple ở khu vực Châu Á Thái Bình Dương trong năm qua cũng thúc đẩy thị phần của iOS tại đây, đồng thời khiến khu vực này trở thành thị trường lớn nhất của Apple. 13 Hình 1.: Sự phát triển game trong năm gần đây 1.4.6 Xu hướng trên các nền tảng khác nhau Cả 3 tựa game có doanh thu hàng đầu trên cả Android và iOS đều giống nhau và 9/10 tựa game hàng đầu trên Android và iOS không thay đổi kể từ tháng trước. Trong khi đó 3/5 tựa game hàng đầu trên hệ máy consle lại thay đổi liên lục từ quý 1/2014 đến quý 2/2014. Điều này có thể lý giải rằng các nhà phát hành game trên di động rất mạnh và người dùng thực sự yêu thích game của họ. Bên cạnh đó còn cho thấy các game trên những thiết bị cầm tay có vẻ thiếu tính cạnh tranh và bảng xếp hạng các game này liên tục thay đổi theo chu kỳ ra mắt game mới của các nhà phát hành. 14 Hình 1.: Xu thế chơi game trên các thiết bị Xu hướng tổng thể - Doanh thu game bùng nổ trên cả iOS và Android trong năm qua với iOS là trên 70% trong khi Android tăng gấp đôi, điều đó cũng cho thấy doanh thu của mỗi ứng dụng cũng tăng lên nhanh chóng. - Doanh thu mảng trò chơi trên nền tảng iOS tăng gấp đôi tại thị trường Hoa Kỳ và tiếp tục vượt lên trên nền tảng Android. Trong khi đó, Android vẫn tiếp tục tăng trưởng nhanh hơn iOS ở khu vực Châu Á Thái Bình Dương. - Vị trí xếp hạng các tựa game hàng đầu trên các thiết bị game cầm tay có xu hướng thay đổi nhiều hơn trò chơi trên di động. Trên điện thoại, 9/10 tựa game hàng đầu vẫn giữ nguyên trong nửa năm qua. - Các thiết bị chơi game cầm tay vẫn đang gặt hái doanh thu lớn và vẫn chưa có bằng chứng cho thấy sự tăng trưởng của game di động sẽ cạnh trực tiếp với game console, nhưng về lâu dài rất nhiều khả năng sẽ có sự ảnh hưởng và cạnh tranh trên thị trường trò chơi. - Theo App Annie, các nhà sản xuất và phát hành console game cũng đang có kế hoạch thúc đẩy doanh số trong nửa cuối năm 2014. Thật thú vị khi nhìn thấy cả hai nền tảng di động là Android và iOS cuối cùng bắt đầu trưởng thành về mặt game và doanh thu. 15 CHƯƠNG 2 XÂY DỰNG GAME PLANES 2.1 Mô tả bài toán 2.1.1 Lý do chọn đề tài Với sự phát triển của ngành công nghiệp làm game ngày càng tăng cao, nhu cầu giải trí của con người ngày càng cao. Đồng thời xu hướng ứng dụng các loại engine vào làm game ngày càng nhiều. Vì vậy ta đặt ra bài toán “Xây dựng game Planes”. 2.1.2 Phạm vi nghiên cứu, phạm vi ứng dụng - Phạm vi nghiên cứu: Tự nghiên cứu - Phạm vi ứng dung: Cá nhân 2.2 Ý tưởng thực hiện 2.2.1 Kịch bản game Trò chơi thuộc thể loại 2D, 2 máy bay sẽ di chuyển cùng với nhau về phía trước. Có những lúc bạn tưởng như đã vượt qua nhưng một tiếng nhạc vang lên – Game over. Tiếp sau đó là cảm giác tức giận, cay cú và quyết tâm chinh phục nó. Đó chính là đặc điểm của trò chơi “Planes”. Bạn phải điều khiển không phải một mà là hai máy bay bay qua những vách núi trong hang động tử thần. Nếu một trong 2 máy bay chạm vào chướng ngại vật thì trò chơi sẽ kết thúc. Khi cả hai máy bay vượt qua một vách núi thì người chơi mới nhận được một điểm. Có thể nói đây là một trò chơi có đồ họa cực kỳ đơn giản nhưng cũng cực kỳ điên rồ, khó chịu, khó nhằn và gây bực bội cho người chơi với độ khó của nó. Trò chơi đòi hỏi sự khéo léo, tinh thần đồng đội cực cao. Nếu đạt tới mức độ cao hơn bạn có thể phân thân điều khiển 2 máy bay bằng 2 tay của mình như 2 người chơi, mỗi tay điều khiển một máy bay. Cảnh báo: Trò chơi có thể gây nghiện cho người chơi vì nó có khả năng hút hồn người chơi về độ khó của nó. 2.2.2 Xây dựng giao diện và chức năng cho người dùng • Về giao diện sẽ có các giao diện chính sau: o Giao diện bắt đầu chơi o Giao diện điều khiển máy bay o Giao diện hiện thị khi người chơi bị thua cuộc o Giao diện điểm cao của người chơi • Các chức năng cần thiết trong từng giao diện o Chức năng chơi từ đầu. o Chức năng hiển thị điểm. 16 2.3 Phân tích chương trình 2.3.1 Biểu đồ Use Case Mô hình use case giúp ta mô hình hoá hệ thống từ hướng nhìn của người sử dụng. Hay nói cách khác mỗi use case mô tả cách thức actor tương tác với hệ thống để đạt được mục tiêu nào đó. Hình 2.: Mô hình Use case 17 Mô tả chi tiết các Use Case Bảng 2. Mô tả các use case STT TÊN USE CASE 1 Người chơi 2 Ý NGHĨA/GHI CHÚ Người dùng chơi game Có thể là một người hoặc 2 người chơi với nhau. Điều khiển máy bay 1 Điều khiển máy bay 1 Điều khiển máy bay 2 3 Điều khiển máy bay 2 Bắt đầu vào trò chơi 4 Bắt đầu chơi Thoát game 5 Thoát game Đặc tả các Use Case  Đặc tả use case Bắt đầu chơi: o Tóm tắt: Khi người chơi chọn “touch to play” trên giao diện o Dòng sự kiện: - Trên màn hình chính người chơi chọn chơi luôn - Hiện thị màn hình chơi - Kết thúc use case  Đặc tả use case Điều khiển máy bay: o Tóm tắt: Người chơi tự chọn máy bay mình điều khiển trên giao diện chơi game. o Dòng sự kiện: - Trên giao diện Game người chơi chạm và thả tay vào màn hình để điều khiển máy bay lên xuống. - Kết thúc use case. o Trạng thái của hệ thống sau khi thực hiện use case: - Máy bay sẽ di chuyển về phía trước. - Khi người chơi không chạm màn hình thì máy bay rơi xuống - Khi máy bay va chạm với chướng ngại vật như vách núi, đất, vòm trời… thì game kết thúc. 18  Đặc tả use case Thoát game Khi người chơi bấm nút Thoát trên màn hình o Tóm tắt: Khi người chơi bấm nút Thoát trên màn hình. o Dòng sự kiện: - Người chơi bấm nút Thoát trên giao diện Menu - Kết thúc use case o Trạng thái của hệ thống khi bắt đầu use case: - Khi trò chơi đang trong giao diện Menu o Trạng thái của hệ thống sau khi thực hiện use case: - Thoát chương trình 19 2.3.2 Các chức năng của hệ thống Bảng 2. Các chức năng chính của hệ thống Điều khiển máy bay 1 Tác nhân Mô tả Sự kiện Người dùng Người dùng điều khiển máy bay 1 phía bên trái giao diện Nhấn vào màn hình thì máy bay 1 sẽ đi lên Không nhấn vào màn hình máy bay 1 sẽ rơi xuống. Kết quả Máy bay 1 di chuyển lên xuống Điều khiển máy bay 2 Tác nhân Mô tả Sự kiện Người dùng Người dùng điều khiển máy bay 2 phía bên phải giao diện Nhấn vào màn hình thì máy bay 2 sẽ đi lên Không nhấn vào màn hình máy bay 2 sẽ rơi xuống. Kết quả Máy bay 2 di chuyển lên xuống Thoát game Tác nhân Mô tả Người dùng Người dùng nhấn vào thoát game trong menu ban đầu trên giao diện Sự kiện Nhấn vào “Exit” Kết quả Ra khỏi trò chơi Bắt đầu chơi Tác nhân Mô tả Người dùng Người dùng chọn bắt đầu chơi trong menu ban đầu trên giao diện. Sự kiện Nhấn vào “touch to play” Kết quả Bắt đầu quá trình điều khiển 2 máy bay. Lưu điểm Tác nhân Mô tả Hệ thống Sau mỗi lần game kết thúc, hệ thống sẽ so sánh điểm người chơi vừa chơi được với điểm mà hệ thống đã lưu trước đó. Nếu điểm vừa chơi lớn hơn thì sẽ được hệ thống lưu lại thành điểm cao mới. 20 Sự kiện Tự động Kết quả Điểm cao mới được cập nhật 2.3.3 Biểu đồ trạng thái Một trạng thái đại diện cho một tập hợp các giá trị cho một đối tượng. Một trạng thái có thể chuyển đổi sang một trạng thái khác khi có thỏa mãn một điều kiện nhất định. Vòng tròn nhỏ màu đen là trạng thái ban đầu. Một vòng tròn có gạch chéo là trạng thái cuối cùng. Hình 2. Mô hình trạng thái chơi game 21 2.3.4 Biểu đồ hoạt động Dòng điều khiển ở đây chạy giữa các trạng thái hành động liên kết với nhau. Biểu đồ còn có thể chỉ ra các quyết định, các điều kiện, cũng như phần thực thi song song của các trạng thái hành động. Biểu đồ ngoài ra còn có thể chứa các loại đặc tả cho các thông điệp được gửi đi hoặc được nhận về, trong tư cách là thành phần của hành động được thực hiện. Hình 2. Mô hình hoạt động chơi game 22 2.3.5 Biểu đồ trình tự Mô hình hóa các hành vi động của hệ thống và dễ hình dung cách liên lạc giữa các đối tượng. Biểu đồ tương tác có ích cho việc xác định các đối tượng bổ sung tham gia trong các Use Case. Trong biểu đồ có trình tự các thông điệp (message) được gửi giữa các đối tượng và trình tự tương tác giữa các đối tượng. Hình 2. Biểu đồ trình tự chơi game 23 2.4 Thuật toán chương trình Trò chơi đòi hỏi xử lý chạm đa điểm. Đây là một vấn đề khá khó với lập trình di động. 2.4.1 Thuật toán xác định chạm màn hình đa điểm Sử dụng thói quen cầm ngang màn hình của người chơi xác định hoành độ của mỗi lần chạm của từng người lên màn hình. Từ đó biết được máy bay nào sẽ được điều khiển. Chia giao diện chơi thành 2 bên. Mỗi người chơi sẽ điều khiển một máy bay. Người bên trái điều khiển máy bay bên trái, người bên phải điều khiển máy bay bên phải. Mỗi khi chạm vào màn hình máy bay sẽ đi lên. Còn không chạm máy bay sẽ rơi xuống. Sử dụng phương thức touchDown của InputProcessor để xử lý chạm màn hình. 2.4.2 Thuật toán va chạm của máy bay vào các đối tượng khác Khi một trong hai máy bay chạm vào chướng ngại vật như vách núi, mặt đất, vòm trời… thì game sẽ kết thúc. Đối với núi: Sử dụng hàm overlaps của lớp Rectangle (xác định khối củạ máy bay và đá) để xác định các khối có trùng nhau hay không. Từ đó suy ra trạng thái của game là tiếp tục hay kết thúc. Đối với nền đất: So sánh tung độ của máy bay với nền đất. Nếu tung độ của máy bay nhỏ hơn tung độ của mặt đất thì game over. Đối với vòm trời: So sánh với tung độ cộng thêm chiều cao của máy bay. Nếu tung độ của máy bay cộng thêm chiều cao của máy bay lớn hơn tung độ của vòm trời thì game over. 24 CHƯƠNG 3 CÀI ĐẶT VÀ THÍ NGHIỆM 3.1 Libgdx 3.1.1 Tổng quan về Libgdx Libgdx là một mã nguồn mở, đa nền tảng và được thiết kế để tạo những game sử dụng ngôn ngữ Java. Bên cạnh đó, Libgdx cũng sử dụng ngôn ngữ C cho những tác vụ quan trọng, kết hợp với những thư viện C cơ bản khác cho khả năng sử dụng trên đa nền tảng. Thông thường, để xây dựng ứng dụng chạy trên đa nền tảng với Eclipse, trước tiên bạn phải tạo một project để chia sẻ code, một project khác dành cho ứng dụng máy tính bàn, một project khác nữa dành cho ứng dụng Android, rồi iOS… Và tiếp theo phải cấu hình giữa các project, rất mất thời gian, và nhiều khi gây ra những lỗi cho những người thiếu kinh nghiệm. Mục đích của Libgdx là hỗ trợ tất cả các nền tảng đó bằng cách kết hợp chúng thành một, có thể gọi đó như 1 API. Một trong những điểm nổi bật của Libgdx là khả năng chạy và gỡ lỗi (debug) code của bạn trên desktop như là một ứng dụng thực sự. Điều này còn cho phép bạn sử dụng một cách thoải mái trên JVM, cũng như là Code Hot Swapping, do đó cho phép bạn ngay lập tức thấy được những hiệu ứng việc thay đổi code của bạn trong thời gian chạy (runtime) một cách nhanh chóng. Chính vì vậy nó sẽ làm giảm đáng kể thời gian code của bạn cũng như tìm và sửa chữa lỗi một cách nhanh chóng. Một điểm quan trọng nữa, đó là phải hiểu rằng Libgdx là một framework chứ không phải là một công cụ để tạo game. Chẳng hạn như một trình soạn thảo với mức độ toàn diện (với C# là Visual Studio chẳng hạn) và một quy trình làm việc xác định (Microsoft Project là một ví dụ). Điều này có vẻ như là một nhược điểm lúc bắt đầu nhưng thực sự nó lại là một lợi thế cho phép bạn tự do định nghĩa theo cách của riêng bạn cho từng dự án (Ví dụ công cụ lập trình có thể là: Eclipse, Netbean, Aptana… trình quản lý dự án có thể là RedMine…) Đồ họa _ Thông dịch qua OpenGLES 1.x và 2.0 trên tất cả các phiên bản. _ Chỉnh sửa OpenGLES 2.0 phù hợp cho Android từ phiên bản 2.0 trở lên _ Các helper ở mức độ thấp đối với người lập trình sử dụng OpenGL: + Vertext arrays và vertext buffter objects + Meshes + Textures 25 + Framebuffer objects (với phiên bản GLES 2.0) + Shaders (tích hợp dễ dàng với meshes) + Hỗ trợ hiển thị trên máy ảo (emulators) + Vẽ những hình dạng đơn giản (shape) + Định dạng hiển thị hình ảnh một cách tự động dựa trên yêu cầu phần cứng và phần mềm tương ứng (loại màn hình, ram, chip, nhà sản xuất điện thoại khác nhau) + Hỗ trợ ETC1 (nhưng không hỗ trợ Javascript tương ứng) + Tự động xử lý khi OpenGL ES khi bị mất bối cảnh (điện thoại bị treo, thoát ứng dụng) sẽ phục hồi tất cả textures, shaders và nhiều thứ khác nữa. _ Ở mức độ cao 2D: + Tùy chỉnh CPU với các thao tác đối với thư viện bitmap. + Các loại SmoothCamera…) camera khác nhau. (Bound Camera, Zoom Camera, + Hiệu suất cao khi xử lý các sprite, bộ nhớ đệm, xử lý hiển thị khác nhau giữa các hệ OpenGLES 1.x và 2. + Texture atlases (phần lưu trữ hình ảnh hiển thị được sử dụng bởi các sprite). + Hỗ trợ font chữ Bitmap với được load ra từ các file TTF. + 2D Particle system + Hỗ trợ TMX tile map + 2D scene-graph API + Thư viện 2D UI. _ Ở mức độ cao 3D: + Các loại camera phối cảnh (gần giống như với 2D ở trên) + Xử lý các loại quảng cáo 3D và hệ thống hạt (quảng cáo trên tường – như trong Counter Strike và hệ thống hạt – xử lý trong việc tạo các vụ nổ chẳng hạn) + Wavefront OBJ và MD5 + Hỗ trợ làm việc với: MD2, Ogre XML, FBX và tất nhiên là hỗ trợ việc hiển thị các đối tượng 3D. Âm thanh 26 _ Hỗ trợ nhạc nền và các hiệu ứng âm thanh đối với MP3, WAV và OGG (khuyên các bạn nên dùng OGG nếu muốn giảm nhẹ các package, nhưng hiệu ứng âm thanh không êm khi sử dụng với MP3 hoặc WAV) _ Truy cập trực tiếp đến phần cứng của thiết bị để ghi âm/phát lại (Không hỗ trợ cho Javascript) _ Giải mã các định dạng OOG và MPG3 (Không hỗ trợ Javascript) _ Chuyển dịch, kéo dài thời gian, thay đổi tốc độ phát âm thanh (giống như chức năng của 1 trình nghe nhạc chẳng hạn, và cũng như trên không hỗ trợ Javascript) Xử lý nhập liệu, thao tác _ Hỗ trợ chuột, bàn phím, gia tốc và con lăn hồi chuyển. _ Các thao tác cử chỉ như: gõ, di chuyển, ném, phóng to thu nhỏ,… _ Điều khiển từ xa (remote) ví dụ điều khiển máy tính thông qua ứng dụng trên Android chẳng hạn. Xử lý file _ Hỗ trợ lưu trữ trên trên tất cả các nền tảng. _ Chỉ đọc file trên máy ảo cho Javascript (các ứng dụng xây dựng trên nền web) _ Hỗ trợ binary file _ Ưu tiên thiết lập lưu trữ gọn nhẹ (Sử dụng SqlLite trên Android chẳng hạn) Công thức tính toán và nền tảng vật lý _ Ma trận, vector và phép xoay. Ma trận và vector được xử lý thông qua ngôn ngữ C để tăng hiệu suất (nếu có thể). _ Bounding shapes và volumes _ Vùng bao với hình dạng và khối lượng (sẽ được hiểu sau khi thực hành) _ Catmull-Rom splines. _ Common interpolators. _ Concave polygon triangulation. _ Tersection và overlap testing. _ JNI wrapper (sử dụng cho Box2D – Định nghĩa vật lý và các tác động vật lý đối với đối tượng trong game). 27 Tiện ích _ Hỗ trợ nhóm với các kiểu dữ liệu nguyên thủy _ Hỗ trợ sử dụng JSON _ Hỗ trợ sử dụng XML Công cụ hỗ trợ đi kèm _ Gdx Setup UI cho việc cài đặt project dễ dàng _ Particle editor (tạo hiệu ứng cho hình ảnh: bom nổ, đạn rơi, kính vỡ, máu me) _ Texture packer (sử dụng để ghép nhiều hình ảnh thành 1 ảnh lớn để làm giảm bộ nhớ và tăng tốc độ load hình) _ Bitmap font generator (tạo các font chữ trong game) 3.1.2 Tạo một dự án mới với Libgdx Thông thường, để xây dựng ứng dụng chạy trên đa nền tảng với Eclipse, trước tiên bạn phải tạo một project để chia sẻ code, một project khác dành cho ứng dụng máy tính bàn, một project khác nữa dành cho ứng dụng Android, rồi iOS… Và tiếp theo phải cấu hình giữa các project, rất mất thời gian, và nhiều khi gây ra những lỗi cho những người thiếu kinh nghiệm. Hình 3. Giao diện libgdx Bạn nhấn vào nút Create nếu muốn tạo một ứng dụng, và màn hình mới hiển thị ra, bạn sẽ thấy một hộp thoại tên là CONFIGURATION ở phía bên tay trái. Ở đây bạn sẽ cài đặt những cái mà tool sẽ khởi tạo. 28 Nhập vào demo ở mục Name, cái này sẽ định nghĩa tên ứng dụng của bạn. Mỗi khi chạy ứng dụng, sẽ thêm một đuôi phía sau như là –deskopt (Nếu như bạn đã chạy bằng máy bàn), hay –android (Nếu bạn chạy bằng android chẳng hạn). Bạn nhìn sang mục OVERVIEW phía bên tay phải sẽ thấy đó là những gì sẽ được tạo ra sau khi chúng ta hoàn thành. Mục Package định nghĩa tên gói ứng dụng của bạn. Nó phải là tên duy nhất và được viết bằng chữ thường (lowercase), nó có nguồn gốc từ tên miền đảo ngược + tên ứng dụng (Ví dụ ở đây là serivn.com + demo sẽ thành là com.serivn.demo). Bạn không phải thực sự sở hữu 1 tên miền, nhưng việc đặt tên như vậy là cần thiết đối với vấn đề bản quyền và sự nhất quán của ứng dụng. Mục Game class định nghĩa tên của class chính project chia sẻ. Nhập vào đó làMyDemo chẳng hạn. Sau đó, chọn thư viện Libgdx được yêu cầu. 29 Bạn có thể nhận thấy màu của đoạn text LibGDX chuyển sang màu xanh ngay lập tức và nút Open the generation screen không còn bị disable nữa. Bạn nhấn vào đó. Một màn hình khác hiển thị ra, lúc này nhấn vào nút Lauch! Và công việc tạo project của chúng ta hoàn tất. 30 Sau khi hoàn tất việc tạo project. Bạn có thể vào trong Eclipse và bắt đầu việc thêm chúng vào Package Explorer, nhấn File chọn Import... Cửa sổ Import mở ra, bạn lựa chọn thư mục Gereral > Existing Projects into Workspace và nhấn vào nút Next. 31 Một cửa sổ mới hiển thị ra, bạn nhấn vào nút radio Select root directory và lựa chọn đường dẫn đến các project vừa được sinh ra (Ở đây là C:\libgdx\). Eclipse sẽ tìm những project tồn tại trong thư mục và hiển thị phía dưới. Lúc này bạn lựa chọn toàn bộ các project và nhấn Finish để hoàn thành việc import. 32 3.1.3 Vòng đời, phân cấp của một game Libgdx Từ một cái nhìn tổng quát, một game có thể chia ra làm 2 thành phần: game assets và game logic. Game assets bao gồm tất cả mọi thứ, có thể hiểu như là dữ liệu cho game của bạn, chẳng hạn như là: hình ảnh, hiệu ứng âm thanh, nhạc nền, dữ liệu về cấp độ trò chơi. Game logic lưu trữ trạng thái của trò chơi hiện tại và cho phép định nghĩa một quá trình chuyển đổi trạng thái của trò chơi (qua bàn, chơi lại, va chạm vật thể…). Các trạng thái này có thể liên tục thay đổi theo thời gian (FPS) do các tác động của người chơi (vuốt, chạm, kéo…) hoặc logic riêng của trò chơi đặt ra (gặp vật cản thì trừ điểm, gặp tiền thường thì cộng điểm chẳng hạn). Hình 3. Vòng đời, phân cấp của một game Bước đầu tiên trong việc khởi tạo trò chơi là tải dữ liệu từ assets, tạo ra trạng thái ban đầu của các đối tượng trong thế giới trò chơi, và đăng ký với thiết bị (điện thoại của bạn, máy tính) một vài hệ thống xử lý đầu vào (chuột, bàn phím, cảm ứng, hiệu ứng âm thanh…). 33 Khi mọi thứ đã sẵn sàng, game logic sẽ tiếp nhận và tạo một vòng lặp cho đến khi tạm dừng hoặc kết thúc trò chơi, có thể gọi đơn giản là “vòng lặp game”. Bên trong vòng lặp game này, các dữ liệu sẽ được lưu và lấy ra sử dụng tùy vào mục đích của trò chơi, tác động của người chơi… 3.1.4 Cấu trúc game của Libgdx project Hình 3. Cấu trúc game Libgdx Các project trên chứa đựng những thư mục chia sẽ dữ liệu cho nhau (hay còn gọi là tham chiếu), mỗi project tương ứng với một nền tảng phát triển cụ thể. Class chính ở đây là MyDemo.java trong project demo sẽ được tham chiếu đến project khác, và chỉ việc tạo một thể hiện với cấu hình bên trong Main Class của project tương ứng. Vậy thì nguồn dữ liệu của bạn (ảnh, âm thanh, các file cấu hình, xml) sẽ được chứa ở đâu? Bạn hãy nhìn vào project demo-android, thư mục assets, ở đây sẽ là nơi bạn lưu trữ nguỗn dữ liệu và chia sẻ cho những project khác tương ứng. 3.1.5 Hệ thống trạng thái và chức năng của game Libgdx Libgdx là một tập hợp được xác định của một hệ thống riêng biệt xây dựng trên trạng thái của game. Danh sách các trạng thái của game bao gồm: create, resize, render, pause, resume, và dispose. Libgdx định nghĩa một giao diện (interface) là ApplicationListener chứa đựng 6 phương thức tương ứng với 6 trạng thái kể trên và một vòng lặp hệ thống. Tất cả những gì bạn cần phải làm là thực thi (implements) những phương thức này vào main class trong shared game code project. Và Libgdx sẽ gọi phương thức này vào những thời điểm thích hợp. 34 Hình 3. Các trạng thái của game Libgdx 3.1.6 Các thành phần của game Libgdx Hình 3. Các thành phần của game Libgdx - camera với kiểu class là OrthographicCamera được sử dụng hiển thị các cảnh 2D, chính là vùng hiển thị mà người chơi nhìn thấy được xác định bởi chiều rộng và chiều cao hay còn gọi là khung hình. (Ví dụ có 1 bức tranh, thì đây là khung - batch với kiểu class là SpriteBatch. Đây là nơi bạn gửi tất cả các lệnh vẽ đến Libgdx. Xa hơn nữa là vẽ lên những hình ảnh (image). Nó cũng tối ưu hóa khả năng vẽ trong hoàn cảnh nhất định. 35 - Biến texture sẽ tham chiếu đến hình ảnh thực tế và được lưu trữ trong bộ nhớ khi game chạy. - Biến sprite với kiểu class là Sprite. Đây là một loại đối tượng chứa dữ liệu phức tạp, chứa đựng nhiều thuộc tính đại diện cho 1 đối tượng đồ họa có vị trí trong không gian 2D có chiều rộng, chiều cao. Nó có thể được luân chuyển và thu nhỏ lại. 3.2 Xây dựng giao diện chương trình Dựa trên các công cụ: Photoshop để xây dựng và khởi tạo giao diện chương trình. Xây dựng từng hình nhỏ để ghép vào thành giao diện chương trình. Hình 3. Thiết kế background Hình 3. Thiết kế mặt đất, vòm trời 36 Hình 3. Thiết kế máy bay Hình 3. Thiết kế đá, vách núi Hình 3. Thiết kế hiển thị thua cuộc Hình 3. Thiết kế hiển thị bắt đầu chơi 37 3.3 Giao diện demo chương trình 3.3.1 Giao diện chuẩn bị chơi Hình 3.: Giao diện chuẩn bị chơi 38 3.3.2 Giao diện chơi Hình 3.: Giao diện chơi 39 3.3.3 Giao diện thua cuộc Hình 3.: Giao diện game over 40 KẾT LUẬN Thông qua bài tìm hiểu và xây dựng trò chơi em thấy rằng dù chương trình có đơn giản nhưng khi xây dựng em cũng mất rất nhiều công sức tìm hiểu, phát triển chương trình sao cho nó có thể ứng dụng một cách tốt nhất. Qua bài tập lớn này em bước thêm một bước trong việc lập trình, hiểu thêm hơn và lập trình Android cũng như sức hút và cống hiến của nó cho công nghệ di động thế nào. Kết quả đạt được Sau một thời gian nghiên cứu và bắt tay vào thực hiện, với mong muốn xây dựng game đáp ứng nhu cầu giải trí của người dùng, được sự quan tâm và hướng dẫn tận tình của ThS. Lê Hoàn em đã bước đầu hoàn thành đề tài:”Xây dựng game Planes sử dụng thư viện Engine Game Libgdx”. Kết quả đạt được: • Về mặt lý thuyết - Tìm hiểu và ứng dụng các thư viện của Engine Game Libgdx. • Về mặt ứng dụng thực tiễn. - Đây là 1 trò chơi mamg tính chất giải trí tốt đồng thời luyện khả năng làm việc đồng thời của 2 tay, tinh thần đồng đội. Mới chơi game khá là khó chơi, tuy nhiên game gây sự hứng thú cho người chơi mạnh mẽ. - Ứng dụng thực tiễn sự mạnh mẽ các thư viện của các Engine. - Xử lý chạm đa điểm. Hướng phát triển: Phát triển thêm các màn chơi. Hạn chế Thư viện của Engine Libgdx là quá lớn gây choáng ngợp với người mới học. Trong khi đó các forum nói về vấn đề lại quá ít và hoàn toàn bằng tiếng anh càng làm khó cho người tìm hiểu. Vì vậy khó khăn lớn nhất trong quá trình làm đồ án là quá trình tìm hiểu thư viện của Libgdx. Vì thời gian triển khai có hạn, và việc tìm hiểu công nghệ mới còn gặp nhiều khó khăn do không có nhiều tài liệu nên không tránh được những sai sót. Em rất mong nhận được sự đóng góp ý kiến và hướng dẫn của thầy cô để đồ án thêm hoàn thiện. Em xin chân thành cảm ơn! 41 TÀI LIỆU THAM KHẢO  Sách [1]. Sách AndEngine for Android Game Development Cookbook  Website [1]. http://www.serivn.com/2014/06/lap-trinh-game-voi-libgx [2]. http://www.gamefromscratch.com/page/LibGDX-Tutorial-series.aspx [3]. http://www.matim-dev.com/ [4]. https://github.com/libgdx/ [...]... trưởng thành về mặt game và doanh thu 15 CHƯƠNG 2 XÂY DỰNG GAME PLANES 2.1 Mô tả bài toán 2.1.1 Lý do chọn đề tài Với sự phát triển của ngành công nghiệp làm game ngày càng tăng cao, nhu cầu giải trí của con người ngày càng cao Đồng thời xu hướng ứng dụng các loại engine vào làm game ngày càng nhiều Vì vậy ta đặt ra bài toán Xây dựng game Planes 2.1.2 Phạm vi nghiên cứu, phạm vi ứng dụng - Phạm vi nghiên... của mặt đất thì game over Đối với vòm trời: So sánh với tung độ cộng thêm chiều cao của máy bay Nếu tung độ của máy bay cộng thêm chiều cao của máy bay lớn hơn tung độ của vòm trời thì game over 24 CHƯƠNG 3 CÀI ĐẶT VÀ THÍ NGHIỆM 3.1 Libgdx 3.1.1 Tổng quan về Libgdx Libgdx là một mã nguồn mở, đa nền tảng và được thiết kế để tạo những game sử dụng ngôn ngữ Java Bên cạnh đó, Libgdx cũng sử dụng ngôn ngữ... cũng sử dụng ngôn ngữ C cho những tác vụ quan trọng, kết hợp với những thư viện C cơ bản khác cho khả năng sử dụng trên đa nền tảng Thông thư ng, để xây dựng ứng dụng chạy trên đa nền tảng với Eclipse, trước tiên bạn phải tạo một project để chia sẻ code, một project khác dành cho ứng dụng máy tính bàn, một project khác nữa dành cho ứng dụng Android, rồi iOS… Và tiếp theo phải cấu hình giữa các project,... là thực thi (implements) những phương thức này vào main class trong shared game code project Và Libgdx sẽ gọi phương thức này vào những thời điểm thích hợp 34 Hình 3 Các trạng thái của game Libgdx 3.1.6 Các thành phần của game Libgdx Hình 3 Các thành phần của game Libgdx - camera với kiểu class là OrthographicCamera được sử dụng hiển thị các cảnh 2D, chính là vùng hiển thị mà người chơi nhìn thấy được... vòng lặp cho đến khi tạm dừng hoặc kết thúc trò chơi, có thể gọi đơn giản là “vòng lặp game Bên trong vòng lặp game này, các dữ liệu sẽ được lưu và lấy ra sử dụng tùy vào mục đích của trò chơi, tác động của người chơi… 3.1.4 Cấu trúc game của Libgdx project Hình 3 Cấu trúc game Libgdx Các project trên chứa đựng những thư mục chia sẽ dữ liệu cho nhau (hay còn gọi là tham chiếu), mỗi project tương ứng... vào project demo-android, thư mục assets, ở đây sẽ là nơi bạn lưu trữ nguỗn dữ liệu và chia sẻ cho những project khác tương ứng 3.1.5 Hệ thống trạng thái và chức năng của game Libgdx Libgdx là một tập hợp được xác định của một hệ thống riêng biệt xây dựng trên trạng thái của game Danh sách các trạng thái của game bao gồm: create, resize, render, pause, resume, và dispose Libgdx định nghĩa một giao... testing _ JNI wrapper (sử dụng cho Box2D – Định nghĩa vật lý và các tác động vật lý đối với đối tượng trong game) 27 Tiện ích _ Hỗ trợ nhóm với các kiểu dữ liệu nguyên thủy _ Hỗ trợ sử dụng JSON _ Hỗ trợ sử dụng XML Công cụ hỗ trợ đi kèm _ Gdx Setup UI cho việc cài đặt project dễ dàng _ Particle editor (tạo hiệu ứng cho hình ảnh: bom nổ, đạn rơi, kính vỡ, máu me) _ Texture packer (sử dụng để ghép nhiều... Finish để hoàn thành việc import 32 3.1.3 Vòng đời, phân cấp của một game Libgdx Từ một cái nhìn tổng quát, một game có thể chia ra làm 2 thành phần: game assets và game logic Game assets bao gồm tất cả mọi thứ, có thể hiểu như là dữ liệu cho game của bạn, chẳng hạn như là: hình ảnh, hiệu ứng âm thanh, nhạc nền, dữ liệu về cấp độ trò chơi Game logic lưu trữ trạng thái của trò chơi hiện tại và cho phép định... nhớ và tăng tốc độ load hình) _ Bitmap font generator (tạo các font chữ trong game) 3.1.2 Tạo một dự án mới với Libgdx Thông thư ng, để xây dựng ứng dụng chạy trên đa nền tảng với Eclipse, trước tiên bạn phải tạo một project để chia sẻ code, một project khác dành cho ứng dụng máy tính bàn, một project khác nữa dành cho ứng dụng Android, rồi iOS… Và tiếp theo phải cấu hình giữa các project, rất mất thời... xuống Sử dụng phương thức touchDown của InputProcessor để xử lý chạm màn hình 2.4.2 Thuật toán va chạm của máy bay vào các đối tượng khác Khi một trong hai máy bay chạm vào chướng ngại vật như vách núi, mặt đất, vòm trời… thì game sẽ kết thúc Đối với núi: Sử dụng hàm overlaps của lớp Rectangle (xác định khối củạ máy bay và đá) để xác định các khối có trùng nhau hay không Từ đó suy ra trạng thái của game ... mong muốn xây dựng game đáp ứng nhu cầu giải trí người dùng, quan tâm hướng dẫn tận tình ThS Lê Hoàn em bước đầu hoàn thành đề tài: Xây dựng game Planes sử dụng thư viện Engine Game Libgdx Kết... nhiên, bước đầu vào thực tế, tìm hiểu xây dựng đồ án thời gian có hạn, kiến thức hạn chế, nhiều bỡ ngỡ, nên đồ án Xây dựng game Planes sử dụng thư viện Engine Game Libgdx chắn tránh khỏi thiếu sót... bị di động cần thiết, em chọn đề tài Xây dựng game Planes sử dụng thư viện Engine Game Libgdx với mục đích nghiên cứu, tìm hiểu phương thức lập trình game cho thiết bị di động để đáp ứng nhu

Ngày đăng: 13/10/2015, 11:34

Từ khóa liên quan

Mục lục

  • CHƯƠNG 1 TỔNG QUAN VỀ GAME TRÊN SMARTPHONE

    • 1.1 Khảo sát thị trường game trên thiết bị di động

    • 1.2 Lập trình game

    • 1.3 Sức hút của nghề lập trình game

    • 1.4 Phát triển game trên các thiết bị smartphone

      • 1.4.1 Android là nền tảng dẫn đầu trên tablet và smartphone

      • 1.4.2 Sức hút của các thiết bị chơi game cầm tay

      • 1.4.3 Game di động bùng nổ

      • 1.4.4 Doanh thu game di động tăng lên, máy console giảm xuống

      • 1.4.5 IOS tăng trưởng ở châu Á, Android tăng trưởng ở Tây Âu

      • 1.4.6 Xu hướng trên các nền tảng khác nhau

      • CHƯƠNG 2 XÂY DỰNG GAME PLANES

        • 2.1 Mô tả bài toán

          • 2.1.1 Lý do chọn đề tài

          • 2.1.2 Phạm vi nghiên cứu, phạm vi ứng dụng

          • 2.2 Ý tưởng thực hiện

            • 2.2.1 Kịch bản game

            • 2.2.2 Xây dựng giao diện và chức năng cho người dùng

            • 2.3 Phân tích chương trình

              • 2.3.1 Biểu đồ Use Case

              • 2.3.2 Các chức năng của hệ thống

              • 2.3.3 Biểu đồ trạng thái

              • 2.3.4 Biểu đồ hoạt động

              • 2.3.5 Biểu đồ trình tự

              • 2.4 Thuật toán chương trình

                • 2.4.1 Thuật toán xác định chạm màn hình đa điểm

                • 2.4.2 Thuật toán va chạm của máy bay vào các đối tượng khác

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan