มาทำความรู้จักกับ LibGDX กันครับ
วันนี้ผมมีวิธีการเขียนเกมมานำเสนอครับ เป็นการเขียนเกมบนมือถือแอนดรอยส์ แต่จริงๆมันก็สามารถ Cross-Platform ไปรันได้ทั้งบราวเซอร์ Desktop และ iOS ครับ โดยบทความนี้จำเป็นต้องใช้ Framework เข้ามาช่วย นั้นก็คือ libgdx นั่นเอง
Libgdx คืออะไร?
Libgdx เป็น Game Framework พัฒนาด้วยภาษา java ที่สามารถเล่นได้ทุก Platform (cross-platform) ทั้งบน Windows, Linux, Mac OS X, Android, iOS หรือแม้แต่ HTML5 บน browser.
ทำไมผมถึงเลือก libgdx
แทนที่จะเป็นเจ้าใหญ่ๆอย่าง Unity, Cocos2d หรือแม้แต่ AndEngine ก็เพราะว่า libgdx นั้นเขียนด้วย java ซึ่งส่วนตัวผมมีความคุ้นเคยอยู่แล้ว ประกอบกับมันสามารถรันได้แบบ Cross-Platform เขียนที่เดียว รันได้ทุกเครื่อง นี่แหละเหตุผลหลักที่เลือก
ภาพรวมของ Libgdx
การทำงานของ Libgdx คือ เราเพียงแค่เขียนโค๊ดเพียงแค่ครั้งเดียว ด้วย java และสั่ง deploy ไปหลายๆ platform ได้เลย โดยไม่ต้องไปแก้ไขตัว source code โดยทาง Libgdx นั้นเตรียม ฟังค์ชั่นที่จำเป็นๆ ให้เราหมดแล้วเช่น File System, Input Device, Render Sprites & Text, User Interface, Audio, OpenGL เป็นต้น โดยความเห็นส่วนตัวของผม มองว่า Libgdx ดูเหมาะจะเป็น Library มากกว่า Framework เมื่อเทียบกับเจ้าอื่นๆ เช่น Unity Framework หรือ AndEngine
ตัวอย่างเกมส์ที่ทำด้วย Libgdx
ภาพด้านล่างคือตัวอย่างเกมที่ทำด้วย Libgdx ครับ มีเยอะครับ
โครงสร้างและการทำงานของ libgdx
libgdx จะมีโครงสร้างของโปรเจ็คแบ่งออกตามแต่ละ Platform และมี main โปรเจ็ค 1 โฟลเดอร์สำหรับจัดการตัว Game ต่างๆครับ
สมมติผมตั้งชื่อเกมส์นี้ว่า gdxahoy ตัวโปรเจ็คและโครงสร้างของ libgdx จะประกอบไปด้วยโฟลเดอร์
- gdxahoy : เป็นโฟลเดอร์หลักสำหรับเขียนทั้งตัว MainGame, Game Loop ทุกอย่างทำที่นี้หมด
- gdxahoy-android : สำหรับเปิดบน Android ไว้สำหรับเก็บ คลาส AndroidStarter และไฟล์ assets/ ต่างๆ จะถูกเก็บไว้ที่นี่
- gdxahoy-html : สำหรับรันด้วย HTML5 โดยใช้ GWT ในการรัน เมื่อได้ไฟล์ war สามารถอัพขึ้นโฮสหรือ tomcat, jetty ได้เลย เหมือน java ทั่วๆไป
- gdxahoy-desktop : สำหรับเปิดบน Desktop
- gdxahoy-robovm : สำหรับเปิดบน iOS
โดยทุกๆโฟลเดอร์จะลิงค์ไปที่ไฟล์ assets เดียวกันคือที่โฟลเดอร์ของ gdxahoy-android
assets คือไฟล์พวกรูปภาพ เสียง ฉาก ฟ้อน ต่างๆ
หากเราต้องการให้ตัวเกมส์สามารถรันบนเครื่องแอนดรอยส์ได้ เราก็เพียงแค่ สร้าง AndroidStarter คลาสขึ้นมา ในโฟลเดอร์ gdxahoy-android ตัว AndroidStarter จะไปทำการเปิดตัว MainGame ใน gdxahoy อีกทีนึง ซึ่งโฟลเดอร์ gdxahoy นี้คือหัวใจของเกมเลยครับ เพราะเวลาเขียนโปรแกรม เราจะเขียนกันที่โฟลเดอร์นี้แทบทั้งหมด ส่วนโฟลเดอร์อื่นๆ เป็นเพียงแค่คลาส Starter
เครื่องมือที่ใช้เขียน
- JDK สิ่งนี้ต้องมีแน่นอนอยู่แล้ว หากเคยเขียน Java หรือ Android มาก่อน
- Android SDK อันนี้ก็จำเป็นต้องมี เพราะว่าเป้าหมายคือเกมส์บน Android
- Eclipse หรือ ADT Bundle หรือ IntelijIDEA
หากใครยังไม่มีเครื่องมือ หรือไม่รู้ว่าจะเริ่มอย่างไร อ่านบทความนี้ได้ครับ
เอาละครับ เกริ่นนำไปพอสมควร สำหรับ Libgdx คิดว่าภาพรวมคงยังนึกไม่ออก ว่าจะเขียนยังไง มีวิธีการอย่างไรบทความต่อไปผมจะมานำเสนอวิธีการติดตั้งเครื่องมือ ตั้งค่าโปรเจ็คสำหรับเขียนเกมส์ด้วย Libgdx กันครับ รอติดตามกันได้เลยครับ
Update
ตอนนี้ทางเว็บได้เพิ่มในหมวด Tutorial สำหรับ LibGDX แล้วนะครับ สามารถติดตามอ่านได้จากลิงค์ด้านล่างได้เลย
- ขั้นตอนการติดตั้ง LibGDX สำหรับเขียนเกม Android ด้วย Android Studio
- รู้จักกับ Module ใน LibGDX
- เขียนเกมด้วย libGDX #1 – สร้างโปรเจ็ค
- เขียนเกมด้วย LibGDX #2 – Hello World
- เขียนเกมด้วย LibGDX #3 – Render และการรับ input
- เขียนเกมด้วย LibGDX #4 – Simple Game ภาคแรก
- เขียนเกมด้วย LibGDX #5 – Simple Game ภาคจบ
- เขียนเกมด้วย LibGDX #6 – Simple Game ภาคพิเศษ
- เขียนเกมด้วย LibGDX #7 - Simple Game - scene2d.ui
- เขียนเกมด้วย LibGDX #8 - Simple Game - Actor
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust