CHƯƠNG 1. GIỚI THIỆU BÀI TOÁN 1. Hoàn cảnh bài toán: Năm 2013, game di động Flappy Bird của tác giả Nguyễn Hà Đông đã gây một tiếng vang rất lớn cho giới lập trình viên tại Việt Nam và toàn Thế giới. Vào tháng 1 năm 2014, game đã đứng đầu trong danh sách download nhiều nhất trên Apple Store, với hơn hàng chục triệu download.
Game đã nhanh chóng làm cho tác giả Nguyễn Hà Đông trở lên nổi tiếng toàn Thế giới, và kiếm được số tiền theo dự đoán khoảng 50. Doanh thu này giúp Nguyễn Hà Đông trong một thời gian ngắn trở thành tỷ phú. Trong khi đó, với góc nhìn của các lập trình viên, game Flappy Bird là một game có đồ hoạ đơn giản, kỹ thuật chơi đơn giản và không hề khó về mặt kỹ thuật để tạo ra một game tương tự. Game đã được nhân bản, clone với rất nhiều phiên bản ăn theo.
Tất cả các forum về lập trình game, các trang hướng dẫn lập trình game đều có ít nhất một bài viết hướng dẫn tạo game tương tự như Flappy Birds, bằng nhiều nền tảng khác nhau Cocos2d, Unity, Game Box, … Thông thường với một lập trình viên mới học, cũng chỉ mất khoảng 2 đến 7 ngày để tạo ra một game tương tự. Điều này làm cho các lập trình viên toàn thế giới đổ xô vào học lập trình game di động với hi vọng đạt được kết quả như Flappy Bird. Game Flappy Bird cho thấy một 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ợ, cũng có thể tạo ra một game có giá trị hàng tỷ đồng Việt Nam, qua đó thúc đẩy các lập trình viên trên toàn Việt Nam học và xây dựng game di động. Với học viên, cũng không nằm ngoại lệ, đã có nhu cầu tìm và học một nền tảng lập trình game cho di động để tận dụng thời gian rảnh rỗi và với hi vọng có thể kiếm được nguồn thu nhập thụ động từ viết game.
Tình hình công nghệ thế giới: Hiện nay có rất nhiều nền tảng lập trình game di động, trong đó đại đa số là miễn phí. Vậy nền tảng lập trình game di động là gì: đó là một bộ công cụ hỗ trợ lập trình viên lập trình game di động và public cho người dùng nhanh chóng, gồm: - Bộ thư viện lập trình: là tập hợp các class hỗ trợ việc lập trình game di động, gồm các class quản lý đối tượng trong game, quản lý action (hành động), mô phỏng các hiện tượng vật lý như va chạm, lực quán tính, ma sát, trọng lượng, mô phỏng âm thanh, ánh sáng, và các hiệu ứng đặc biệt như 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 nền tảng như iOS hay Android, Windows Phone,. 4 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Vậy với một lập trình viên đơn lẻ, không biết bắt đầu từ đâu để lập trình game di động, anh ta cần tìm một framwork lập trình game thoả mãn các yêu cầu: - Framework lập trình game di động, có thể tạo ra game cho các nền tàng iOS, Android.
- Frameword phải có các công cụ hỗ trợ kiếm tiền từ việc bán đồ hay quảng cáo trong 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 rất nhiều và 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, để có thể 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 ra game dễ dàng, nhanh chóng hơn. Học viên cũng là một trong các lập trình viên nêu trên, và trong quá trình tìm hiểu, học viên đã tìm được một nền tảng thoả mãn các yêu cầu nên trên. Đó là nền tảng Cocos2d-iPhone.
Phát biểu bài toán Với một lập trình viên bình thường, khi 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 những công cụ gì? Cần kiến thức gì và cách làm như thế nào? Đây là các câu hỏi mà học viên cũng đã từng gặp khi bắt đầu học lập trình game. Dưới đây học viên xin tóm tắt lại các điểm chính của việc lập trình game di động: a. Tìm hiểu nền tảng lập trình game di động Hiện có rất nhiều nền tảng lập trình game 2D trên thiét bị di động, đại đa số chúng đều miễn phí. Có một số framework có phí như Unity và Unreal, trong đó chi phí cho các framwork này khá đắt (như Unity có phí lên đến 1500$/hệ điều hành/1bản) Tại sao lại là game 2D: bởi việc xây dựng game 2D thường đỡ tốn công sức hơn rất nhiều so với game 3D.
Game 3D thường không phải dành cho những lập trình viên nghiệp dư hoặc không chuyên về 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 về việc dựng hình 3D, các thuật toán tạo hình khối,. và các công cụ lập trình game 3D thường khá phức tạp, đòi hỏi nhiều thời gian để học làm chủ công cụ. Với game 2D, một lập trình viên có thể phát triển game mà không cần nhiều đội ngũ hỗ trợ như các nhân viên đồ hoạ, nhân viên âm thanh,.
Game 2D phù hợp hơn với các lập trình viên nghiệp dư. 5 LUAN VAN CHAT LUONG download : add luanvanchat@agmail. Cách thức tìm kiếm doanh thu từ Game di động Có 3 cách để tìm kiếm doanh thu từ Game di động: - Bán game di động: các Công ty hoặc lập trình viên lập trình game và bán trên các chợ ứng dụng thông dụng như App Store của Apple hoặc Play Store của Google, các Game này thường có giá từ 1$ trở lên. Việc kiếm tiền từ cách này rất khó, đòi hỏi game xây dựng phải hay và thường công ty phát hành game phải có tiếng tăm trên thị trường.
- Bán đồ trong game: đây là cách thức khá phổ biến của các Công ty làm game di động, thường họ tạo ra các game có chất lượng rất tốt, có thể kích thích người sử dụng mua các vật phẩm trong game, ví dụ các loại vũ khí, hiệu ứng đặc biệt,. Cách này thường phù hợp với các game có chất lượng tốt, phức tạp và có khả năng giữ người chơi trong một thời gian dài. - Quảng cáo trong game: đây là cách thức phổ biến của các game di động thuộc loại đơn giản về nội dung. Với cách này, lập trình viên thường sử dụng các thư viện API của các công ty quảng cáo trên Internet như Admob, Unity Ads, Apple Ads để gắn vào game, giúp hiển thị quảng cáo trong game.
Lập trình viên sẽ được trả tiền cho các hiển thị quảng cáo trong game và các click vào quảng cáo của người sử dụng. Tìm hiểu công cụ hỗ trợ Hầu hết các nền tảng miễn phí thường có ít 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 các công cụ hỗ trợ thông dụng, dễ sử dụng, giúp việc lập trình được thuận lợi, nhanh chóng. Các công cụ ở đây 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 được trên thiết bị di động. Các IDE còn có thể hỗ trợ việc export ra file nhị phân tương thích với từng nền tảng di động, và hỗ trợ việc upload file lên các chợ ứng dụng.
- Công cụ hỗ trợ việc tạo các chuyển động phức tạp: thông thường các chuyển động phức tạp không được các nhân viên đồ hoạ tạo ra ngay từ đầu, họ tạo ra các thành phần của đối tượng (như chân, tay, đầu, mình, đuôi, cánh,. Sau đó tuỳ theo chuyển động để tạo ra các hình ảnh động tương ứng, từ việc kết hợp vị trí của các bộ phận này. Công cụ hỗ trợ việc tạo các chuyển động phức tạp sẽ giúp việc tạo các chuyển động này nhanh chóng hơn, đồng thời cho phép kết xuất ra file theo định dạng mà nền tảng lập trình game di động hỗ trợ. - Công cụ hỗ trợ tạo màn chơi hay bản đồ: với các game có đồ hoạ phức tạp, việc tạo ra một màn chơi hay bản đồ hoàn toàn bằng code là vô cùng phức tạp và mất rất nhiều công sức, vì vậy, các công cụ tạo bản đồ (map) ra đời, hỗ trợ rất nhiều cho các lập trình viên.
Công cụ này sẽ tạo ra các bản đồ bằng cách kéo 6 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com thả các thành phần của bản đồ, cho phép lập trình viên nhìn một cách trực quan bản đồ này, giúp việc lập trình nhanh chóng và hiệu quả. - Công cụ hỗ trợ việc tạo các hiệu ứng đặc biệt như lửa, khói, mưa, tuyết. Thường mỗi hiệu ứng đặc biệt có khoảng 30 thuộc tính, việc lập trình tạo ra một hiệu ứng rất khó và mất nhiều thời gian để tinh chỉnh. Công cụ hỗ trợ tạo hiệu ứng đặc biệt sẽ giúp lập trình viên nhìn thấy ngay hiệu quả của mỗi khi thay đổi các tham số.
Qua các phân tích nêu trên, cho thấy việc tạo được một game di động 2D hay tốn khá nhiều công sức của lập trình viên, đòi hỏi phải tìm hiểu một khối lượng công việc không hề nhỏ. Đề tài tìm hiểu tổng quan về việc xây dựng game cho thiết bị di động thông minh, khảo sát một số framework hỗ trợ, và 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ừ các sản phẩm đó. Nội dung của đề tài gồm các nội dung chính sau đây: - Giới thiệu tổng quan về các framework lập trình game di động và lý do vì sao chọn Cocos2d-iPhone để tìm hiểu. - Cocos2d-iPhone và các module chính của framework, cũng như các công cụ hỗ trợ lập trình viên.
- Tổng quan về cách thức tìm kiếm thu nhập trong lập trình game di động - Một số ứng dụng mà học viên đã xây dựng bằng Cocos2d-iPhone. Trên đây là bài toán mà học viên cần phải giải quyết, nội dung chi tiết sẽ có trong các chương tiếp theo. 7 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com CHƯƠNG 2. MỘT SỐ FRAMEWORK LẬP TRÌNH GAME DI ĐỘNG Chương này mô tả một cách tổng quan về các framework lập trình game di động và so sánh giữa các frawework, và lý do vì sao học viên lựa chọn frawework Cocos2d- iPhone.