LẬP TRÌNH GAME TRÊN ĐIỆN THOẠI DI ĐỘNG BẰNG NỀN TẢNG COCOS2D-IPHONE

51 318 0
LẬP TRÌNH GAME TRÊN ĐIỆN THOẠI DI ĐỘNG BẰNG NỀN TẢNG COCOS2D-IPHONE

Đ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

Header Page of 113 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỖ QUANG DƯƠNG LẬP TRÌNH GAME TRÊN ĐIỆN THOẠI DI ĐỘNG BẰNG NỀN TẢNG COCOS2D-IPHONE LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội, 2016 Footer Page of 113 Header Page of 113 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỖ QUANG DƯƠNG LẬP TRÌNH GAME TRÊN ĐIỆN THOẠI DI ĐỘNG BẰNG NỀN TẢNG COCOS2D-IPHONE Ngành: Công nghệ thông tin Chuyên ngành: Truyền liệu Mạng máy tính LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TS TRẦN THỊ MINH CHÂU Hà Nội, 2016 Footer Page of 113 Header Page of 113 LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, không chép Các số liệu, kế t quả nêu Luận văn là trung thực và chưa từng đươ ̣c công bố bấ t kỳ công triǹ h nào khác Tôi xin cam đoan rằ ng các trić h dẫn Luận văn đã đươ ̣c chỉ rõ nguồ n gố c Ho ̣c viên thực hiện Luận văn Đỗ Quang Dương Footer Page of 113 Header Page of 113 MỤC LỤC LỜI CAM ĐOAN CHƯƠNG GIỚI THIỆU BÀI TOÁN 1.1 Hoàn cảnh toán: .4 1.2 Tình hình công nghệ giới: .4 1.3 Phát biểu toán CHƯƠNG MỘT SỐ FRAMEWORK LẬP TRÌNH GAME DI ĐỘNG .8 2.1 Cocos2d 2.2 Unity 10 2.3 SpriteKit 10 2.4 Các tảng khác .11 CHƯƠNG COCOS2D-IPHONE .14 3.1 Cấu trúc chương trình viết Cocos2d-iPhone .14 3.2 Các module thư viện lập trình Cocos2d-iPhone [8] 15 3.3 Quản lý đối tượng game 15 3.4 Quản lý hành động 16 3.5 Hiệu ứng vật lý 17 3.6 Hiệu ứng đặc biệt 18 3.7 Hiệu ứng âm 20 CHƯƠNG GẮN QUẢNG CÁO TRONG GAME DI ĐỘNG 21 4.1 Tổng quan 21 4.2 Các nhà cung cấp quảng cáo di động 21 4.3 Các hình thức tích hợp quảng cáo di động 23 CHƯƠNG SỬ DỤNG FRAMEWORK COCOS2D-IPHONE 27 5.1 Các game xây dựng từ Cocos2d-iPhone 27 5.2 Game 1: Xếp hình (Tetrix) 28 5.3 Game 2: Plane .41 CHƯƠNG KẾT LUẬN 47 Footer Page of 113 Header Page of 113 DANH MỤC CÁC BẢNG Bảng 2.1:so so sánh framework lập trình game di động 12 Footer Page of 113 Header Page of 113 DANH MỤC CÁC HÌNH VẼ Hin ̀ h 3.1:Giao diện phần mềm Spine 17 Hin ̀ h 3.2: Giao diện công cụ Particle Designer .19 Hin ̀ h 4.1:Một số nhà cung cấp dịch vụ quảng cáo Thiết bị di động 21 Hình 4.2:Quảng cáo dạng Banner Ads 24 Hình 4.3: Quảng cáo dạng Interstitial Ads 25 Hin ̀ h 4.4:Quảng cáo dạng In-app Purchase 26 Hin ̀ h 5.1: Game Tetrix 27 Hình 5.2: Game Line 98 27 Hình 5.3: Game Recuse Egg 28 Hin ̀ h 5.4: Game Plane 28 Hin ̀ h 5.5: Game KidGame .28 Hình 5.6: Giao diện game Tetrix 29 Hình 5.7: Các hình khối thông thường 30 Hin ̀ h 5.8: hình khối mở rộng 30 Hin ̀ h 5.9: Ăn điểm lên Level 32 Hình 5.10: Gắn quảng cáo dạng Banner 39 Hin ̀ h 5.11: Giao diện game Plane 41 Hin ̀ h 5.12: Giao diện game Plane 43 Hin ̀ h 5.13: Giao diện trước bật cửa sổ quảng cáo 46 Hình 5.14: Giao diện bật quảng cáo 46 Footer Page of 113 Header Page of 113 CHƯƠNG GIỚI THIỆU BÀI TOÁN 1.1 Hoàn cảnh toán: Năm 2013, game di động Flappy Bird tác giả Nguyễn Hà Đông gây tiếng vang lớn cho giới lập trình viên Việt Nam toàn Thế giới Vào tháng năm 2014, game đứng đầu danh sách download nhiều Apple Store, với hàng chục triệu download Game nhanh chóng làm cho tác giả Nguyễn Hà Đông trở lên tiếng toàn Thế giới, kiếm số tiền theo dự đoán khoảng 50.000 USD/ngày Doanh thu giúp Nguyễn Hà Đông thời gian ngắn trở thành tỷ phú Trong đó, với góc nhìn lập trình viên, game Flappy Bird game có đồ hoạ đơn giản, kỹ thuật chơi đơn giản không khó mặt kỹ thuật để tạo game tương tự Game nhân bản, clone với nhiều phiên ăn theo Tất forum lập trình game, trang hướng dẫn lập trình game có viết hướng dẫn tạo game tương tự Flappy Birds, nhiều tảng khác Cocos2d, Unity, Game Box, … Thông thường với lập trình viên học, khoảng đến ngày để tạo game tương tự Điều làm cho lập trình viên toàn giới đổ xô vào học lập trình game di động với hi vọng đạt kết Flappy Bird Game Flappy Bird cho thấy lập trình viên đơn lẻ, với chi phí nhỏ, không cần thuê hạ tầng máy chủ, không cần có đội ngũ đồ hoạ hỗ trợ, tạo game có giá trị hàng tỷ đồng Việt Nam, qua thúc đẩy lập trình viên toàn Việt Nam học xây dựng game di động Với học viên, không nằm ngoại lệ, có nhu cầu tìm học tảng lập trình game cho di động để tận dụng thời gian rảnh rỗi với hi vọng kiếm nguồn thu nhập thụ động từ viết game 1.2 Tình hình công nghệ giới: Hiện có nhiều tảng lập trình game di động, đại đa số miễn phí Vậy tảng lập trình game di động gì: công cụ hỗ trợ lập trình viên lập trình game di động public cho người dùng nhanh chóng, gồm: - Bộ thư viện lập trình: tập hợp class hỗ trợ việc lập trình game di động, gồm class quản lý đối tượng game, quản lý action (hành động), mô tượng vật lý va chạm, lực quán tính, ma sát, trọng lượng, mô âm thanh, ánh sáng, hiệu ứng đặc biệt mưa, lửa, khói, - Bộ công cụ đồ hoạ giúp việc lập trình game di động nhanh chóng, export game thành file chạy, tương thích với tảng iOS hay Android, Windows Phone, Footer Page of 113 Header Page of 113 Vậy với lập trình viên đơn lẻ, không để lập trình game di động, cần tìm framwork lập trình game thoả mãn yêu cầu: - Framework lập trình game di động, tạo game cho tàng iOS, Android - Frameword phải có công cụ hỗ trợ kiếm tiền từ việc bán đồ hay quảng cáo game - Framework phải miễn phí - Frameword hỗ trợ lập trình game 2D (vì với game 3D, đòi hỏi kiến thức nhiều phải có đội ngũ hỗ trợ đồ hoạ lớn, không phù hợp với lập trình viên cá nhân) - Framwork phải có cộng đồng phát triển lớn, để tra cứu, hỏi nhằm sửa lỗi - Framework phải có công cụ hỗ trợ đồ hoạ, giúp việc tạo game dễ dàng, nhanh chóng Học viên lập trình viên nêu trên, trình tìm hiểu, học viên tìm tảng thoả mãn yêu cầu nên Đó tảng Cocos2d-iPhone 1.3 Phát biểu toán Với lập trình viên bình thường, bắt tay vào học lập trình game cho thiết bị di động thông minh cần tìm hiểu công cụ gì? Cần kiến thức cách làm nào? Đây câu hỏi mà học viên gặp bắt đầu học lập trình game Dưới học viên xin tóm tắt lại điểm việc lập trình game di động: a Tìm hiểu tảng lập trình game di động Hiện có nhiều tảng lập trình game 2D thiét bị di động, đại đa số chúng miễn phí Có số framework có phí Unity Unreal, chi phí cho framwork đắt (như Unity có phí lên đến 1500$/hệ điều hành/1bản) Tại lại game 2D: việc xây dựng game 2D thường đỡ tốn công sức nhiều so với game 3D Game 3D thường dành cho lập trình viên nghiệp dư không chuyên làm game Để làm game 3D thường lập trình viên phải có hiểu biết sâu sắc việc dựng hình 3D, thuật toán tạo hình khối, công cụ lập trình game 3D thường phức tạp, đòi hỏi nhiều thời gian để học làm chủ công cụ Với game 2D, lập trình viên phát triển game mà không cần nhiều đội ngũ hỗ trợ nhân viên đồ hoạ, nhân viên âm thanh, Game 2D phù hợp với lập trình viên nghiệp dư Footer Page of 113 Header Page of 113 b Cách thức tìm kiếm doanh thu từ Game di động Có cách để tìm kiếm doanh thu từ Game di động: - Bán game di động: Công ty lập trình viên lập trình game bán chợ ứng dụng thông dụng App Store Apple Play Store Google, Game thường có giá từ 1$ trở lên Việc kiếm tiền từ cách khó, đòi hỏi game xây dựng phải hay thường công ty phát hành game phải có tiếng tăm thị trường - Bán đồ game: cách thức phổ biến Công ty làm game di động, thường họ tạo game có chất lượng tốt, kích thích người sử dụng mua vật phẩm game, ví dụ loại vũ khí, hiệu ứng đặc biệt, Cách thường phù hợp với game có chất lượng tốt, phức tạp có khả giữ người chơi thời gian dài - Quảng cáo game: cách thức phổ biến game di động thuộc loại đơn giản nội dung Với cách này, lập trình viên thường sử dụng thư viện API công ty quảng cáo Internet Admob, Unity Ads, Apple Ads để gắn vào game, giúp hiển thị quảng cáo game Lập trình viên trả tiền cho hiển thị quảng cáo game click vào quảng cáo người sử dụng c Tìm hiểu công cụ hỗ trợ Hầu hết tảng miễn phí thường có công cụ hỗ trợ, đòi hỏi lập trình viên phải tìm hiểu nhiều để tìm công cụ hỗ trợ thông dụng, dễ sử dụng, giúp việc lập trình thuận lợi, nhanh chóng Các công cụ gồm: - IDE: công cụ lập trình, cho phép biên dịch code thành mã nhị phân, thực thi thiết bị di động Các IDE hỗ trợ việc export file nhị phân tương thích với tảng di động, hỗ trợ việc upload file lên chợ ứng dụng - Công cụ hỗ trợ việc tạo chuyển động phức tạp: thông thường chuyển động phức tạp không nhân viên đồ hoạ tạo từ đầu, họ tạo thành phần đối tượng (như chân, tay, đầu, mình, đuôi, cánh, ) riêng Sau tuỳ theo chuyển động để tạo hình ảnh động tương ứng, từ việc kết hợp vị trí phận Công cụ hỗ trợ việc tạo chuyển động phức tạp giúp việc tạo chuyển động nhanh chóng hơn, đồng thời cho phép kết xuất file theo định dạng mà tảng lập trình game di động hỗ trợ - Công cụ hỗ trợ tạo chơi hay đồ: với game có đồ hoạ phức tạp, việc tạo chơi hay đồ hoàn toàn code vô phức tạp nhiều công sức, vậy, công cụ tạo đồ (map) đời, hỗ trợ nhiều cho lập trình viên Công cụ tạo đồ cách kéo Footer Page of 113 Header Page 10 of 113 - thả thành phần đồ, cho phép lập trình viên nhìn cách trực quan đồ này, giúp việc lập trình nhanh chóng hiệu Công cụ hỗ trợ việc tạo hiệu ứng đặc biệt lửa, khói, mưa, tuyết Thường hiệu ứng đặc biệt có khoảng 30 thuộc tính, việc lập trình tạo hiệu ứng khó nhiều thời gian để tinh chỉnh Công cụ hỗ trợ tạo hiệu ứng đặc biệt giúp lập trình viên nhìn thấy hiệu thay đổi tham số Qua phân tích nêu trên, cho thấy việc tạo game di động 2D hay tốn nhiều công sức lập trình viên, đòi hỏi phải tìm hiểu khối lượng công việc không nhỏ Đề tài tìm hiểu tổng quan việc xây dựng game cho thiết bị di động thông minh, khảo sát số framework hỗ trợ, cách thức tìm kiến doanh thu từ game di động, từ đề tài áp dụng cho việc xây dựng game di động để tạo thu nhập từ sản phẩm Nội dung đề tài gồm nội dung sau đây: - Giới thiệu tổng quan framework lập trình game di động lý chọn Cocos2d-iPhone để tìm hiểu - Cocos2d-iPhone module framework, công cụ hỗ trợ lập trình viên - Tổng quan cách thức tìm kiếm thu nhập lập trình game di động - Một số ứng dụng mà học viên xây dựng Cocos2d-iPhone Trên toán mà học viên cần phải giải quyết, nội dung chi tiết có chương Footer Page 10 of 113 Header Page 37 of 113 mBannerView = [[GADBannerView initWithAdSize:kGADAdSizeSmartBannerLandscape]; // Specify the ad's "unit identifier." This is your AdMob Publisher ID mBannerView.adUnitID = ADMOB_BANNER_UNIT_ID; // Let the runtime know which UIViewController to restore after taking // the user wherever the ad goes and add it to the view hierarchy mBannerView.rootViewController = self.navController; [self.navController.view addSubview:mBannerView]; //#ifdef DEBUG // GADRequest *request = [GADRequest request]; // request.testDevices = [NSArray arrayWithObjects:GAD_SIMULATOR_ID, nil]; //#endif // Initiate a generic request to load it with an ad [mBannerView loadRequest:[GADRequest request]]; CGSize s = [[CCDirector sharedDirector] viewSize]; CGRect frame = mBannerView.frame; off_x = 0.0f; on_x = 0.0f; switch (mBannerType) { case kBanner_Portrait_Top: Footer Page 37 of 113 34 alloc] Header Page 38 of 113 { off_y = -frame.size.height; on_y = 0.0f; } break; case kBanner_Portrait_Bottom: { off_y = s.height; on_y = s.height-frame.size.height; } break; case kBanner_Landscape_Top: { off_y = -frame.size.height; on_y = 0.0f; } break; case kBanner_Landscape_Bottom: { off_y = s.height; on_y = s.height-frame.size.height; } break; default: break; } frame.origin.y = off_y; frame.origin.x = off_x; mBannerView.frame = frame; Footer Page 38 of 113 35 Header Page 39 of 113 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.5]; [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; frame = mBannerView.frame; frame.origin.x = on_x; frame.origin.y = on_y; mBannerView.frame = frame; [UIView commitAnimations]; } -(void)showBannerView { if (mBannerView) { //banner on bottom { CGRect frame = mBannerView.frame; frame.origin.y = off_y; frame.origin.x = on_x; mBannerView.frame = frame; [UIView animateWithDuration:0.5 delay:0.1 options: UIViewAnimationCurveEaseOut animations:^ { CGRect frame = mBannerView.frame; frame.origin.y = on_y; Footer Page 39 of 113 36 Header Page 40 of 113 frame.origin.x = on_x; mBannerView.frame = frame; } completion:^(BOOL finished) { }]; } } } -(void)hideBannerView { if (mBannerView) { [UIView animateWithDuration:0.5 delay:0.1 options: UIViewAnimationCurveEaseOut animations:^ { CGRect frame = mBannerView.frame; frame.origin.y = off_y; frame.origin.x = off_x; mBannerView.frame = frame; } completion:^(BOOL finished) { }]; } } -(void)dismissAdView { if (mBannerView) Footer Page 40 of 113 37 Header Page 41 of 113 { [UIView animateWithDuration:0.5 delay:0.1 options: UIViewAnimationCurveEaseOut animations:^ { CGSize s = [[CCDirector sharedDirector] viewSize]; CGRect frame = mBannerView.frame; frame.origin.y = frame.origin.y + frame.size.height ; frame.origin.x = (s.width/2.0f - frame.size.width/2.0f); mBannerView.frame = frame; } completion:^(BOOL finished) { [mBannerView setDelegate:nil]; [mBannerView removeFromSuperview]; mBannerView = nil; }]; } } Kết thu hình vẽ đây: Footer Page 41 of 113 38 Header Page 42 of 113 Hình 5.10: Gắn quảng cáo dạng Banner 5.2.4 Nhận xét Với thư viện lập trình game Cocos2d-iPhone, việc lập trình game Tetrix đơn giản, chương trình có khoảng 5000 dòng code Nếu không sử dụng thư viện này, mà thực lập trình từ đầu, phức tạp, với việc thực chuyển động hay hiệu ứng mờ dần đối tượng đòi hỏi lập trình viên phải tạo nhiều thread để điều khiển Việc quản lý multi thread chương trình thường khó, nhiều công sức kinh nghiệm để thực Qua cho thấy tác dụng lớn việc sử dụng thư viện lập trình game Footer Page 42 of 113 39 Header Page 43 of 113 Trong chương trình tetrix, học viên chưa áp dụng module phức tạp Cocos2diPhone hiệu ứng vật lý, hay hiệu ứng đặc biệt, hoàn thành game tiếng Nếu nghiên cứu, áp dụng thêm hiệu ứng đặc biệt làm game hấp dẫn Footer Page 43 of 113 40 Header Page 44 of 113 5.3 Game 2: Plane Hình 5.11: Giao diện game Plane 5.3.1 Các yêu cầu - Có chơi, người sử dụng điều khiển máy bay tránh vật cản (máy bay khác, chim, đạn bắn từ hoa, cá mập, ) ăn đồng tiền dọc đường để có đủ lượng chạy đến cuối chơi - Người sử dụng điều khiển nhân vật (máy bay hay tàu ngầm) cách chạm vào hình, di chuyển ngón tay để nhân vật chạy theo, dùng cách lắc điện thoại, để nhân vật di chuyển theo - Các đối tượng game có hoạt hình tương ứng di chuyển, ví dụ máy bay chạy cánh quạt quay, chim bay, đồng tiền (coin) xoay - Có kiểm tra va chạm, nhân vật va chạm vào kẻ thù (máy bay khác, chim, cá mập hay đạn) máu giảm giọt Khi hết máu game over - Gắn quảng cáo dạng cửa sổ bật người chơi kết thúc chơi bị game over 5.3.2 Thực yêu cầu a Nhận kiện tác động người dùng: - Với kiện chạm di chuyển ngón tay người dùng hình: tương tự game Tetrix ta thực bắt hàm TouchBegin TouchEnd - Với kiện lắc điện thoại, nghiên để điều khiển nhân vật: /////////////// Footer Page 44 of 113 41 Header Page 45 of 113 //Xu ly su kien nguoi dung lac tay: (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration { } //Hai su kien xu ly su kien lac tay: - (void)onEnter { [super onEnter]; [_motionManager startAccelerometerUpdates]; } - (void)onExit { [super onExit]; [_motionManager stopAccelerometerUpdates]; } b Tạo hình ảnh động cho đối tượng game - Để tạo hình ảnh động cho đối tượng game, cách đơn giản có tập ảnh liên tiếp nhau, mô tả hành động game, sau khai báo gắn chúng với Animation Frame, đoạn code sau: - (id) init { //Tạo hình ảnh đầu tiên: sprite = [CCSprite spriteWithImageNamed:@"h0.png"]; // Tạo thêm hình ảnh khác, gắn vào Frame NSMutableArray* spriteframes = [NSMutableArray array]; for(int i = 0; i < 14; i++){ NSString *str = [NSString stringWithFormat:@"h%d.png", i]; CCSpriteFrame *frame = [CCSpriteFrame frameWithImageNamed:str]; [spriteframes addObject:frame]; } Footer Page 45 of 113 42 Header Page 46 of 113 //Tao animatin: CCAnimation delay:0.01f]; *animation = [CCAnimation animationWithSpriteFrames:spriteframes CCActionAnimate *animationAction = [CCActionAnimate actionWithAnimation:animation]; CCActionRepeatForever animationAction]; *action = [CCActionRepeatForever actionWithAction: [action setTag:100]; [sprite runAction:action]; return self; } Hình 5.12: Giao diện game Plane c Va chạm Để kiểm tra va chạm ta cài đặt theo cách: - Cách 1, dùng thư viện mô tượng vật lý Cocos2D, Chương II Phương án có nhược điểm hiệu kém, kiểm tra va chạm mô khó - Cách 2, đơn giản cần kiểm tra khoảng cách hai anchor point, khoảng cách mà nhỏ nửa tổng chiều dài va chạm Học viên lựa chọn cách thứ Với cách này, mã code đơn giản sau: - (BOOL) checkVacham:(CCSprite*) sprite{ Footer Page 46 of 113 43 Header Page 47 of 113 CGPoint postHero = heroSprite.position; CGSize sizeHero = CGSizeMake(heroSprite.contentSize.width *fabs(heroSprite.scaleX)/2, heroSprite.contentSize.height*fabs(heroSprite.scaleY)/2); CGRect rectHero = CGRectMake(postHero.x sizeHero.height, 2*sizeHero.width, sizeHero.height); - sizeHero.width, postHero.y - CGPoint postSprite = sprite.position; CGSize sizeSprite = CGSizeMake(sprite.contentSize.width * fabsf(sprite.scaleX)/2, sprite.contentSize.height * fabsf(sprite.scaleY)/2); CGRect rectSprite = CGRectMake(postSprite.x - sizeSprite.width, postSprite.y sizeSprite.height, * sizeSprite.width, * sizeSprite.height); if(!sprite.visible) return false; //Dang bien mat return CGRectIntersectsRect(rectHero, rectSprite); } 5.3.3 Gắn quảng cáo Học viên lựa chọn phương án gắn quảng cáo sử dụng thư viện API Google Admob cách gắn quảng cáo dùng cửa số bật game over người chơi hoàn thành chơi Để làm cách này, ta sử dụng class GADInterstitial thư viện Admob Cách thực sau: //Tao Admob - (void)preLoadInterstitial { //Call this method as soon as you can - loadRequest will run in the background and your interstitial will be ready when you need to show it GADRequest *request = [GADRequest request]; interstitial_ = [[GADInterstitial 1903138713698660/3686046XXX"]; alloc] interstitial_.delegate = self; [interstitial_ loadRequest:request]; } - (void)interstitialDidDismissScreen:(GADInterstitial *)ad { Footer Page 47 of 113 44 initWithAdUnitID:@"ca-app-pub- Header Page 48 of 113 //An interstitial object can only be used once - so it's useful to automatically load a new one when the current one is dismissed [self preLoadInterstitial]; } - (void)interstitial:(GADInterstitial *)error *)ad didFailToReceiveAdWithError:(GADRequestError { //If an error occurs and the interstitial is not received you might want to retry automatically after a certain interval [NSTimer scheduledTimerWithTimeInterval:2.0f selector:@selector(preLoadInterstitial) userInfo:nil repeats:NO]; target:self } - (void) showInterstitial { //Call this method when you want to show the interstitial - the method should double check that the interstitial has not been used before trying to present it if (!interstitial_.hasBeenUsed) [interstitial_ presentFromRootViewController:[CCDirector sharedDirector].navigationController]; } Mỗi cần thị quảng cáo gọi hàm showInterstitial Kết thu hình dưới: Footer Page 48 of 113 45 Header Page 49 of 113 Hình 5.13: Giao diện trước bật cửa sổ quảng cáo Hình 5.14: Giao diện bật quảng cáo 5.3.4 Nhận xét Trong game thứ hai, học viên sử dụng kỹ thuật: - Bắt kiện tương tác với người dùng qua hai phương án: chạm hình lắc hình - Tạo hoạt hình cho nhân vật từ tập ảnh cho trước - Tạo map cách sinh ngẫu nhiên đối tượng game (các đối tượng backgroud, máy bay, hoa, cá mập, cá, ) - Xử lý va chạm - Quảng cáo dạng cửa sổ bật người chơi kết thúc phiên chơi Footer Page 49 of 113 46 Header Page 50 of 113 CHƯƠNG KẾT LUẬN Đề tài tóm tắt lại kiến thức mà học viên thu thập trình nghiên cứu làm game cho di động, qua giúp người đọc có nhìn tổng quát trình làm game, cách thức tìm kiếm thu nhập vài so sánh framwork lập trình game phổ biến Sử dụng framework Cocos2d-iPhone, học viên xây dựng số ứng dụng public lên kho ứng dụng AppStore Apple, qua giúp học viên kiếm số thu nhập định Việc sử dụng framework Cocos2d-iPhone giúp việc lập trình game cho điện thoại di động thông minh iOS trở lên dễ dàng nhiều, không đòi hỏi lập trình viên phải tìm hiểu kỹ thuật phức tạp multithread hay hiển thị đồ họa phức tạp, rút ngắn thời gian phát triển ứng dụng game Các framework lập trình game ngày phát triển, tạo nhiều thuận lợi cho lập trình viên Tuy nhiên dẫn đến số lượng ứng dụng game ngày nhiều, làm tăng mức độ cạnh tranh ứng dụng với nhau, ứng dụng muốn thành công cần phải chau chuốt hơn, chỉnh chu hơn, có nội dung hay đồ họa đẹp Như vậy, hội cho lập trình viên đơn lẻ ngày hẹp hơn, cá nhân Nguyễn Hà Đông ngày Để tạo game di động thành công, đòi hỏi phải có nhóm làm việc, mà phải có cá nhân có kỹ đồ họa, âm thanh, xây dựng kịch game, …, lập trình viên không đóng vai trò định việc xây dựng ứng dụng game Với số lượng ứng dụng kho ứng dụng AppStore Apple, PlayStore Google lên đến số hàng triệu Việc ứng dụng muốn thành công, thân nội dung ứng dụng, có nhiều yếu tố ảnh hưởng đến nó, có yếu tố quan trọng tối ưu từ khóa việc đặt tên ứng dụng, mô tả ứng dụng để tăng hội người dùng tìm thấy ứng dụng chợ ứng dụng Đây hướng nghiên cứu học viên thời gian tới Footer Page 50 of 113 47 Header Page 51 of 113 TÀI LIỆU THAM KHẢO Tổng quan Cocos2d: http://cocos2d.org Unity: https://unity3d.com/ SpriteKit: https://developer.apple.com/spritekit/ GameMaker: http://www.yoyogames.com/gamemaker Contruct2: https://www.scirra.com/construct2 Buildbox: https://www.buildbox.com/ Unreal: https://www.unrealengine.com/what-is-unreal-engine-4 Cocos2d-iPhone SDK Spine: http://esotericsoftware.com/ 10 Particle Designer: https://71squared.com/particledesigner 11 Admob: https://www.google.com/admob/ 12 Unity Ads: https://unity3d.com/services/ads Footer Page 51 of 113 48 ... thụ động từ viết game 1.2 Tình hình công nghệ giới: Hiện có nhiều tảng lập trình game di động, đại đa số miễn phí Vậy tảng lập trình game di động gì: công cụ hỗ trợ lập trình viên lập trình game. .. Dưới học viên xin tóm tắt lại điểm việc lập trình game di động: a Tìm hiểu tảng lập trình game di động Hiện có nhiều tảng lập trình game 2D thiét bị di động, đại đa số chúng miễn phí Có số framework... Vậy với lập trình viên đơn lẻ, không để lập trình game di động, cần tìm framwork lập trình game thoả mãn yêu cầu: - Framework lập trình game di động, tạo game cho tàng iOS, Android - Frameword

Ngày đăng: 25/03/2017, 10:31

Từ khóa liên quan

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

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

Tài liệu liên quan