ช่วงหลังเน้นหนักไปนิดในเรื่องของ Mobile Game บน iOS ก็เลยคิดว่าจะลองวิเคราะห์ความแตกต่างระหว่าง Cocos2D และ SpriteKit ไหนดีกว่ากัน ครับ ก็เลยไปหาข้อสรุปมา
สำหรับ iOS Developer ทุกคนที่กำลังเริ่มต้นพัฒนาเกมครับ ก็จะทราบดีว่าเครื่องมือมากมายในการพัฒนาเกมนั้นมีหลายตัว โดยเฉพาะ 2D เกมครับ ก็จะมีตัวฟรีเด่นๆ คือ Cocos2D และสิ่งที่มากับ iOS7 อย่าง SpriteKit ครับ
ผมเองก็มี Tutorial ของการพัฒนาเกมจากทั้ง 2 Framework นี้อยู่เหมือนกัน คือ
และ
จะเห็นว่าโดยส่วนตัวผมมองว่า SpriteKit นั้นเขียนง่ายกว่า Cocos2D ครับเพราะใช้ภาษาที่ใกล้เคียงกับ Objective C ต่างกับ Cocos2D ที่ออกไปเชิง C++ และ Java ซะมากกว่า แต่บางครั้งมันก็จะเจอบางสิ่งที่ขัดใจเหมือนกัน ก็เลยมาลองวิเคราะห์เครื่องมือกันดูครับ
ข้อดีของการใช้ Native Framework อย่าง SpriteKit
เรื่องการรองรับ และประสิทธิภาพของการทำงานของเกม ที่ปราศจากการ Lack ใดๆครับ และไม่ต้องกังวลในเรื่องการเปลี่ยน OS Version ของเจ้า iOS ทีเปลี่ยนบ่อย เสียเหลือเกิน ต่างกับ Cocos2D ที่จะต้องมีการ Integrate กันเล็กน้อยกับเวอร์ชันของ OS ครับ
กลายเป็นว่าข้อดีสุดๆ ของ SpriteKit ก็คือ
- ความเป็น Native Framework เรื่องของ Performance นั้นไม่ต้องห่วง
- ใช้งานง่าย ไม่ต้องจำภาษาที่แตกต่างจาก Objective C
- มีการดึงประสิทธิภาพการประมวลผลกราฟิกผ่าน Core Image เลย
- มี Physics Simulation ให้ใช้
ข้อเสียของ SpriteKit คือ
- มันไม่ใช่ Open Source เพราะมันมากับ XCode 5 และ iOS7 มันจะ Port ไปแพลตฟอร์มอื่นไม่ได้
- มันเล่นได้แค่ iOS7 เป็นต้นไป
- เรื่องของ Shaders และ Camera หากทำเกม 2.5D จะลำบาก
ทีนี้มาดูฝั่ง Cocos2D ครับ Framework ที่กึ่งๆ 3rd Party ตัวนี้นั้นมีอะไรดีบ้าง
- ความเป็น Open Source ที่ทำงานได้ทั้งบนแพลตฟอร์มของ iOS และ Android ช่วงหลังมี Cocos2D-X มาร่วมอีก
- เรื่องของ Shaders และ Camera หายห่วง มี Tutorial มากมายที่พิสูจน์เรื่องนี้
- มีตัวอย่างให้ศึกษาเยอะกว่า SpriteKit และรองรับ iOS เวอร์ชันก่อนหน้า iOS7 ด้วย
- เรื่องกราฟิกอาจจะไม่ดีเท่า SpriteKit แต่ก็ใช้ง่ายกว่า OpenGL
ข้อเสียของ Cocos2D คือ
- Syntax ที่ไม่เกี่ยวกับ Native ของ Objective C เลย
- Physic Simulation นั้นต้องใช้ Template ของ Chipmunk หรือ Box2D ตั้งแต่แรกเริ่มก่อนพัฒนา
ดังนั้น การวางแผนพัฒนาเกมนั้น เราจะเลือกอะไรดี ระหว่าง SpriteKit และ Cocos2D
ให้มองว่า สเกล และแพลตฟอร์มเป็นตัวเลือกครับ ถ้ามีการวางแผนจะขยายข้ามแพลตฟอร์มแนะนำว่า Cocos2D และเป็นเกมขนาดใหญ่ๆ แต่ไฟล์ไม่ใช่ ส่วน SpriteKit นั้นถ้าเป็นเกมเล็กๆ หรือขนาดใหญ่ไฟล์จะใหญ่มาก และไม่สามารถข้ามแพลตฟอร์มได้นอกเหนือจาก iOS อย่างเดียว
ก็จะทราบแนวทางการเลือกพัฒนาแล้วนะครับ 😀 ว่าจะเลือกใช้อะไรดี ในการเริ่มต้น