Saturday, September 27, 2014

Cocos2d-x - Cài đặt và thiết lập môi trường trên MAC OS


Cài đặt Cocos2d-x và các công cụ liên quan

  • Cocos2d-x là một cross-platform dùng để phát triển Game đa nền tảng dành cho iOS, Mac OS, Android, Window Phone, Window Desktop.
  • Chúng ta sẽ tìm hiểu các bước cài đặt và cấu hình Cocos2d-x trên máy MAC để phát triển game cho 2 nền tảng Mobile thông dụng là iOS và Android.
  • Trước hết chúng ta cần download Cocos2d-x và các công cụ hỗ trợ cần thiết liên quan:

 

Cocos2d-x

  • Hiện tại là phiên bản 3.2: http://www.cocos2d-x.org/download
  • Sau khi download, giải nén ở thư mục làm việc
  • Lưu ý là chúng ta không được phép đặt tên có ký tự trắng trong đường dẫn đến các thư mục làm việc này

Python

  • Để run các script tạo dự án, build, run trong Cocos2d-x chúng ta cần cài đặt Python. Tuy nhiên, rất may là MAC đã có sẵn
  • Lưu ý, Cocos2d-x 3.2 chỉ hỗ trợ với Python 2.7.x

Môi trường phát triển iOS

Môi trường phát triển Android

  •  Tất nhiên để phát triển Android, trước hết chúng ta cần cài đặt Java
  • Cài đặt ADT là bộ công cụ phát triển Android: eclipse, sdk. Download tại: http://developer.android.com/sdk/index.html
  • Cài đặt NDK (Native Development Kit), lưu ý Cocos2d-x 3.2 làm việc tốt với NDK phiên bản r9d. Download tại: https://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2
  • Cài đặt Ant, phiên bản hiện tại là 1.9.4. Download tại http://ant.apache.org/bindownload.cgi
  • Sau khi tải và giải nén hoặc cài đặt vào vùng làm việc, chúng ta tạm có các thư mục như sau

Thiết lập Cocos2d-x

  • Phần này chủ yếu là thiết lập các biến môi trường cho việc build các project trên nền tảng Andriod
  • Mở cửa số Terminal và chuyển đến thư mục Cocos2d-x-3.2
cd <path>/cocos2d-x-3.2
  • Sau khi đã chuyển đến thư mục cocos2d-x-3.2, thực hiện đoạn script setup bằng python
./setup.py
            mucdongs-Mac:~ mucdong$ cd /Volumes/DATA/DevTools/cocos2d-x-3.2
            mucdongs-Mac:cocos2d-x-3.2 mucdong$ ./setup.py

  • Khi đó bạn sẽ được hỏi lần lượt các đường dẫn cần thiết, hãy thiết lập giá trị cho chúng
o   NDK_ROOT: <path>/android-ndk-r9d
o   ANDROID_SDK_ROOT: <path>/adt-bundle-mac-x86_64/sdk
o   ANT_ROOT: <path>/apache-ant-1.9.4/bin
  • Các biến môi trường này sẽ được add vào file .bash_profile
  • Sau đó chúng ta cần “refresh” để các biến môi trường này có hiệu lực
source <path>/.bash_profile
mucdongs-Mac:cocos2d-x-3.2 mucdong$ source /Users/mucdong/.bash_profile
  • Nếu muốn edit hoặc xem lại bạn có thể gõ
open –e <path>/.bash_profile
  • Lưu ý: tất cả các đường dẫn đến các thư mục sẽ không có ký tự trắng

Khởi tạo mới một dự án Cocos2d-x

  • Để tạo dự án Cocos2d-x mới chúng ta sẽ sử dụng CommandLine để thực hiện
  • Giả sử chúng ta sẽ tạo một dự án game có tên là AirHockey
  • Mở Terminal và gõ vào nội dung
  • cocos new AirHockey -p com.cannshine.airhockey -l cpp -d /Volumes/DATA/Projects/cocos2dx-workspace
  • Trong đó
o   AirHockey: là tên của dự án, đồng thời cũng là tên thư mục chính chứa dự án
o   –p với tham số đằng sau là package name hoặc bundle id
o   –l cpp chỉ ra ngôn ngữ lập trình sẽ là C++, chúng ta có thể lựa chọn là js hoặc lua
o   –d là đường dẫn chứa thư mục dự án


mucdongs-Mac:cocos2d-x-3.2 mucdong$ cocos new AirHockey -p com.cannshine.airhockey -l cpp -d /Volumes/DATA/Projects/cocos2dx-workspace

Running command: new

> Copy template into /Volumes/DATA/Projects/cocos2dx-workspace/AirHockey

> Copying cocos2d-x files...

> Rename project name from 'HelloCpp' to 'AirHockey'

> Replace the project name from 'HelloCpp' to 'AirHockey'

> Replace the project package name from 'org.cocos2dx.hellocpp' to 'com.cannshine.airhockey'

mucdongs-Mac:cocos2d-x-3.2 mucdong$

-       Vào thư mục AirHockey để xem cấu trúc dự án vừa tạo

-       Trong đó
o   Classes: chứa tất cả mã nguồn cross-platform mà chúng ta sẽ xây dựng cho dự án
o   cocos2d: chứa thư viện của Cocos2d-x
o   proj.android: chứa các file dự án liên quan của nền tảng Android
o   proj.ios_mac: chứa các file dự án liên quan của nền tảng iOS-MAC
o   proj.linux: thư mục này gần như trống, hiện tại Cocos2d-x chưa hỗ trợ Linux
o   proj.win32: chứa các file dự án liên quan của nền tảng Window
o   proj.wp8-xaml: chứa các file dự án liên quan của nền tảng Window Phone 8
o   Resources: chứa tất cả các tài nguyên của dự án
-       Như vậy, chúng ta sẽ viết mã nguồn trong Classes, thay đổi các tài nguyên trong Resource, sau đó sẽ mở các dự án theo từng nền tảng (Eclipse cho Android, Xcode cho iOS, Visual Studio cho Win 32), sau đó build theo mỗi nền tảng đó.

Bulid và Run dự án trên nền tảng iOS và Android

Nền tảng iOS

  • Vào thư mục proj.ios_mac, mở file dự án với Xcode
  • Giao diện trong Xcode như sau
 
-       Chúng ta chọn Build và Run thử dự án trên Simulator

Nền tảng Android

-       Trên giao diện Terminal, chúng ta chuyển thư mục làm việc đến proj.android của dự án AirHockey vừa tạo
mucdongs-Mac:cocos2d-x-3.2 mucdong$ cd /Volumes/DATA/Projects/cocos2dx-workspace/AirHockey/proj.android
-       Sau đó chúng ta run script build_native để build dự án cho Android
./build_native.py
mucdongs-Mac:proj.android mucdong$ ./build_native.py
-       Và tiếp theo là ngồi đợi, nhâm nhi tách café :)


  • Đến đây là kết thúc quá trình Build dự án. Thỉnh thoảng (như mình thì đã mất nguyên 1 ngày) quá trình build này bị lỗi, chỉ mới chạy được chưa đến 10 giây là Leaving directory với các lỗi là no file input, blad blad, với lỗi này sau khi research tan nát Google, mình quyết định là tải lại NDK (vẫn bản r9d) và cả ADT (có thể hơi bị cũ), vâng kết quả ngoài mong đợi, đã có thể uống được ly café :)
  • Tiếp đến, chúng ta sẽ Import dự án này vào Eclipse để test việc build và run trên Android


  •  Lưu ý ta sẽ trỏ đến thư mục AirHockey, chứ không trỏ đến thư mục proj.android
  • Sau đó sẽ hiện ta 1 list các project có thể import, ở giai đoạn đầu tìm hiểu, chúng ta bỏ chọn hết tất cả, sau đó chọn 2 mục: libcocos2dx và AirHockey của chúng ta
 
-       Giao diện sau khi Import vào Eclipse

              
      Có một điều là không hiểu sao Eclipse không nhận ra được đường dẫn NDK_ROOT
 
-       Do vậy chúng ta cần thiết lập lại biến này cho Eclipse để có thể build cho dự án.
o   Chọn dự án, Propertise
o   Ở mục C/C++ Build, chọn Enviroment
-       Build ứng dụng và chuẩn bị Run
-       Trước hết chúng ta cần tạo một AVD để có thể run dự án trên giả lập thiết bị Android. Từ công cụ AVD Manager, chúng ta tạo mới một AVD, thiết lập các thông số.
-       Lưu ý Cocos2d-x 3.2 cần hỗ trợ OpenGL 2.0 do đó bạn cần check Use Host GPU
-       Sau đó chọn Project và chọn Run As \ Android Application và đợi….
-       Sau khi Emulator chạy và có thể chúng ta sẽ nhận được một thông báo rất thảm hại sau

-       Trong trường hợp này khả năng rất lớn nằm ở vấn đề hỗ trợ OpenGL của Emulator, bạn phải đảm bảo chắc chắn là đã check Use Host GPU
-       Sau đó có thể thêm một thao tác để đảm bảo hơn nữa, trong phần Run Configurations… thêm tham số -gpu on trong mục Addtinational Emulator Command Line Options

-       Tắt Emulator đang chạy và thực hiện Run lại dự án
-       Kết quả mong đợi

 Hy vọng qua bài viết này sẽ giúp các bạn giảm thiểu được phần nào thời gian mày mò cài tới cài lui, xóa đi, tải lại mà mình đã trải qua :)

No comments:

Post a Comment