ขั้นตอนการติดตั้ง LibGDX สำหรับเขียนเกม Android ด้วย Android Studio

ขั้นตอนการติดตั้ง LibGDX สำหรับเขียนเกม Android ด้วย Android Studio Cover Image

อัพเดทล่าสุด : 26 มกราคม 2558 โดยเพิ่มส่วน gdx-setup.jar และใช้ libGDX เวอร์ชัน 1.5.3

หลังจากที่ผมเคยเขียนบทความเกี่ยวกับการทำ Game ด้วย libGDX กันไปแล้ว เนื่องจากว่า libGDX นั้นเป็น Library ที่สามารถจะเขียนโค๊ดเพียงแค่ครั้งเดียว แล้วรัน Cross Platform ได้เลย ทำให้บทความเก่าๆ ผมไม่ได้โฟกัสไปที่ Platform ใดๆเลย แต่พูดถึงภาพรวม function และ feature ของ libGDX และวิธีการเขียนเกมซะมากกว่า

ในบทความนี้ จะเน้นการติดตั้ง libGDX สำหรับมือใหม่ เพื่อพัฒนาเกมลงบน Android ส่วนเครื่องมือที่ใช้ก็จะเป็น Android Studio นะครับ

สำหรับบทความ LibGDX ที่เคยเขียนไว้แล้ว มีดังนี้ครับ (สามารถอ่านเพิ่มเติมได้ครับ)

Prerequisite

การเตรียมเครื่องมือให้พร้อมที่จะเขียนเกมบน Android อย่างแรกเลย ที่ทุกคนต้องมีคือ

Installation

ขั้นตอนการติดตั้ง libGDX เริ่มแรกให้เข้าไปยังเว็บไซต์ของ LibGDX จากนั้นเลือกดาวน์โหลด

Download

ทำการดาวน์โหลดตัว GDX-Setup.jar เมื่อดาวน์โหลดเสร็จแล้ว เปิดโปรแกรมขึ้นมา

Setup Project

ต่อมา เมื่อเราเปิดโปรแกรม GDX-Setup.jar ขึ้นมาแล้ว ให้ทำการ Setup ตัวโปรเจ็คของเรา ตามรูปข้างล่างเลย (ส่วนนี้ คือการตั้งค่า เพื่อที่จะให้ libGDX ทำการ Generate Project ให้เรา)

LibGDX Setup

  • Name : คือชื่อโปรเจ็คที่เราต้องการต้ัง เช่น AhoyShooter
  • Package : ชื่อ Package ของโปรเจ็ค เช่น com.devahoy.games
  • Game Class : ชื่อของคลาสหลัก ที่เราจะเอาไว้เขียนเกม เช่น Game, MyGame, Shooter
  • Destination : คือโฟลเดอร์ที่เรา้ต้องการบันทึก หลังจากที่ทำการ Generate Project เสร็จแล้ว
  • Android SDK : คือ path ที่อยู่ของ Android SDK ที่เราทำการติดตั้งไว้ ส่วนมากจะอยู่ที่โฟลเดอร์ที่ติดตั้ง IDE เช่น eclipse/sdk หรือ android-studio/sdk

ในส่วนของตัวโปรเจ็ค ก็ทำการเลือกแค่นี้ ต่อไปในส่วนของ libGDX version ล่าสุดจะเป็น Release 1.5.3

ต่อมาในส่วน Sub Folder เลือกเฉพาะ Android เนื่องจากเป้าหมายคือ ต้องการรันบน Android อย่างเดียว (แต่ว่าในกรณีที่ต้องการรันหลายๆ Platform ก็เลือกตามใจเลยครับ)

ส่วนสุดท้าย Extensions ไม่ต้องเลือกครับ ในส่วนเริ่มต้นเขียน ยังไม่มีความจำเป็นต้องเลือกครับ แต่ว่า default ของมันจะเลือก Box2D มาให้ หากใครจะเลือกก็ไม่มีปัญหาครับ ทำการกด Generate

หากใครขึ้นข้อความแบบนี้ จะเกิดในกรณีที่เรามี API มากกว่า 19 ติดตั้งอยู่ในเครื่อง เนื่องจากว่า มี API สูงกว่า 19 ซึ่งเป็นเวอร์ชันที่ libGDX แนะนำ หากต้องการใช้เวอร์ชันที่สูงกว่า ก็กด Yes แต่หากต้องการใช้เวอร์ชัน 19 ก็กด No

Warning

ตัว libGDX-Setup จะทำการ config และดาวน์โหลดไฟล์ต่างๆ ที่ใช้ในการเขียนเกม มาให้เราทั้งหมด สิ่งที่เราทำได้ตอนนี้มีอย่างเดียว คือนั่งรอมันดาวน์โหลดจนเสร็จครับ

libgdx downloading

เมื่อเสร็จแล้ว จะมีข้อความขึ้นประมาณนี้

BUILD SUCCESSFUL

Total time: 37.096 secs
Done!
To import in Eclipse: File -> Import -> Gradle -> Gradle Project
To import to Intellij IDEA: File -> Import -> build.gradle
To import to NetBeans: File -> Open Project...

เมื่อเข้าไปดูโฟลเดอร์ที่เราเลือก Destination ก็จะเห็นโฟลเดอร์ต่างๆดังนี้ ต่อไปก็เตรียมตัวนำไป Import ได้เลย

Project Structure

ในส่วน Extensions หากใครไม่ต้องการรู้ก็ข้ามไปได้เลยครับ อันนี้จะอธิบายคร่าวๆ ว่าแต่ละ Extensions มันคืออะไร

  • Bullet : เป็นส่วนเสริม ของ 3D เกี่ยวกับการ Collision(การจับการชนกันของวัตถุ)
  • Freetype : ส่วนเสริมสำหรับการ Custom Font ต่างๆของเรา เช่นเปลี่ยน Font-Family
  • Tools : ส่วนเสริม Tools ต่างๆ เช่น Texture Packer สำหรับรวมรูปภาพ เป็นไฟล์เดียวกัน, Hiero ตัวช่วยสำหรับรวม Bitmap Font, 2D Particle Editor ทำ effect
  • Controllers : เป็นส่วนเสริมในกรณีที่ต้องการเขียนติดต่อกับ gamepads หรือ Joystick
  • Box2d : เป็น Physics Library น่าจะรู้จักกันดี อ่านเพิ่มเติมจากเว็บนี้ Box2D
  • Box2dlights : ส่วนเสริมเกี่ยวกับพวก Shadow Light แสงเงา โดยใช้ Box2d และ OpenGL 2.0
  • Ashley : เป็นส่วนเสริมเกี่ยวกับการจัดการพวก Entity ภายในเกม Entity คืออะไร? อ่านโลด

Import Project

ขั้นตอนต่อมา เมื่อทำการ Generate LibGDX เสร็จเรียบร้อยแล้ว ขั้นตอนต่อมาก็ทำการ Import Prject ที่ได้ ด้วย Android Studio โดยเปิด Android Studio ขึ้นมา ให้เปิดหน้าแรกเลย หากใครค้างโปรเจ็คไว้อยู่ ก็กด Close Project ซะก่อนนะครับ

จากนั้น กด Import Project..

Import Project

ทำการ Browse ไปที่โฟลเดอร์ที่เราเลือก Destination ตอน Generate ไว้ เลือกที่ build.gradle กด OK

Choose Folder

รอให้ Android Studio ทำการ config ค่าต่างๆอีกซักครู่ เช่นพวก Gradle File การ cache ต่างๆ ปรากฎว่ามี error เกิดขึ้นครับ ดังภาพ

Error

เนื่องจากว่า Android Studio เวอร์ชันล่าสุด รองรับ Gradle Plugin เวอร์ชั่น 0.12 ขึ้นไป (ถ้าจำไม่ผิด) แต่ว่า libGDX ยังใช้ gradle plugin เวอร์ชัน 0.10.4 อยู่เลย เพราะฉะนั้นต้องแก้ด้วยการเปลี่ยนเป็นเวอร์ชันล่าสุด ทำได้โดยการกด Fix plug-in version and re-import project หรือเลือกที่ไฟล์ build.gradle ของ Root Project แล้วเปลี่ยน เป็น

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.2'
    }
}
...

กด Try Again หรือ Sync Project with Gradle Files.

Start Application

หลังจากที่เราทำการ Import Project มาเรียบร้อยแล้ว จะเห็นว่า Project เราจะมี 2 module คือ app และ android ในส่วน app จะเป็นโมดูลที่เป็น core คือการเขียนโค๊ดทั้งหมดจะทำที่โมดูลนี้ ในขณะที่ app เป็นเพียงแค่โมดูลที่เอาไว้สร้าง AndroidLauncher เท่านั้น

Project ของเราจะมีโครงสร้างประมาณนี้

├── android
│   ├── android.iml
│   ├── AndroidManifest.xml
│   ├── assets
│   ├── build
│   ├── build.gradle
│   ├── ic_launcher-web.png
│   ├── libs
│   ├── proguard-project.txt
│   ├── project.properties
│   ├── res
│   └── src
├── build.gradle
├── core
│   ├── build.gradle
│   ├── core.iml
│   └── src
├── gradle
│   └── wrapper
├── gradle.properties
├── gradlew
├── gradlew.bat
├── libgdx-game.iml
├── local.properties
└── settings.gradle

ทำการเปิดคลาสหลัก ที่อยู่ในโฟลเดอร์ core ชื่อคลาส ตามที่เราตั้งค่า Game Class ตอนที่ทำการ Generate ส่วนตัวผม ตั้งชื่อว่า Shooter เพราะฉะนั้นเปิดไฟล์ Shooter ขึ้นมาดังนี้

package com.devahoy.games;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class Shooter extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;

    @Override
    public void create () {
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(img, 0, 0);
        batch.end();
    }
}

แก้ไขในส่วน render() โดยเปลี่ยน ตรง batch.draw(img, 0, 0); เป็นแบบนี้

batch.draw(img, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

ด้านบนเป็นการนำรูปที่ชื่อ badlogic.jpg ในโฟลเดอร์ android/assets/badlogic.jpng ขึ้นมาแสดง แบบเต็มหน้าจอ

ต่อมา ให้เราทำการเลือกโมดูล android จากนั้นกด Run เพื่อทำการทดสอบ จะเห็นหน้าตาประมาณนี้ (เทสได้ทั้งบนเครื่องจริง หรือ Emulator ที่มี GPU Support)

result2

สรุป

ขั้นตอนแรกของ libGDX ก็จบไปแล้ว ทั้งการติดตั้ง การ Generate Project, การ Import Project และการทดสอบรันโปรแกรมเบื้องต้น ไม่ได้พูดถึง รายละเอียด หรือวิธีการเขียน libGDX นะครับ หากต้องการรายละเอียดเพิ่มเติม ก็อ่านจากบทความเก่าๆ ไปก่อนครับ ส่วนบทความใหม่ๆ กำลังทยอยอัพเดท เรื่อยๆครับ หวังว่าบทความนี้จะเป็นประโยชน์แก่ผู้ที่กำลังเริ่มศึกษา libGDX หรือว่ากำลังศึกษาการเขียนเกมบน Android อยู่นะครับ

Chai Chai Phonbopit : MEAN Stack @Nextzy • ผู้ชายธรรมดาๆ ที่ชื่นชอบ Android, JavaScript (Node.js) และ Open Source มีงานอดิเรกเป็น Acoustic Guitar และ Football

บทความล่าสุด