Friday, February 28, 2014

Review: Corona SDK part.1

หลังจากใช้มาเกือบสองเดือน ก็เลยลองมาเขียนreviewขำๆดูหน่อยละกัน

*ภาพประกอบไม่เกียวข้องกับเนื้อหาแต่อย่างใด

Official site: http://coronalabs.com/

Corona SDK เป็นเครื่องมือทำทำให้เราสามารถสร้าง Mobile application ได้ง่าย แบบ ง่ายมากๆ
สามารถ Build ไปลงได้ทั้ง iOS และ Android และคุณไม่ต้องปวดหัวกับภาษาต่างดาวอย่าง Objective-C หรือ Java อีกต่อไป คุณแค่ต้องเปลี่ยนมาปวดหัวกับภาษา Lua แทน :D
เอาล่ะครับ เดียวกลับมาว่ากันเรื่องภาษานะ

มาดูกันว่ามันมีอะไรให้คุณบ้างนะ เจ้า Corona นี่ เอาที่ผมได้ใช้แล้วจริงๆนะ

1.อย่างแรกก็คือ มันวาดรูปได้!!
แหงอยู่แล้วป่ะ Tool สร้างเกม ดันวาดรูปไม่ได้ แล้วมันจะทำมาหากินได้ยังไง
เอาเป็นว่า คุณสามารถวาดรูปทรงพื้นฐานลงไปบนหน้าจอได้ครับ วงกลม สี่เหลี่ยม หลายเหลี่ยม รวมไปถึงกำหนดตำแหน่ง, สี, ฯลฯ อันนี้ไปดูใน API docs กันต่อนะครับ

2.โหลดรูปได้!!
พื้นสุดๆอ่ะ มันคือการเอาไฟล์รูป ประเภทต่างมาแปะบนหน้าจอได้ครับ Support ฟอร์แมตที่นิยมใช้ันอยู่ในสากลโลก ถ้าใช้ png ก็จะทำTransparentได้

3.ทำ Sprite ได้
เราทำ Animation เป็น sprite sheet มา แล้วก็โหลดเข้ามาในโปรแกรมแล้วก็ทำให้มันเล่นเป็น sequence ได้นะครับ Version ล่าสุดที่ผมใช้นี่เป็น native support แล้วด้วย เป็นของที่คนทำเกมขาดไม่ได้เลยล่ะ

4.การกำหนดตำแหน่ง เรากำหนด origin ได้
เมื่อวาดรูปขึ้นมาแล้ว มันสารถกำหนด anchorX, anchorY ให้กับ Object ได้ ปกติมันจะมีค่าเป็น 0 ทั้งคู่ ซึ่งหมายถึงจุดที่อ้างอิงตรงกลางของ object มีผลเวลาที่กำหนดตำแหน่ง x,y มันจะอยู่ตรงกลาง ...งงมั้ยครับ คือปกติ แล้ว เรามักจะคิดว่า 0,0 จะต้องเริ่มจากมุมซ้ายบนเสมอใช่มั้ยครับ แต่ Corona มันสามารถกำหนเได้ว่า 0,0 นั้น จะให้เริ่มที่ตรงไหน เช่น จากตรงกลาง หรือ มุมขวา ซึ่งช่วยอำนวยความสะดวกให้เราได้มากทีเดียวครับ

5.มี Transition
รู้จัก Tween กันใช่มั้ยครับ ถ้าไม่ก็มันคือการเคลื่อนที่ Object จากที่หนึ่งไปอีกที่หนึ่งแหละครับ แต่ถ้าเราไปแก้ค่า x,y โดยตรงเลย มันก็จะวาปไปอยู่ที่ตรงนั้นเลย แต่เราอยากให้มันเคลื่อนที่ไปแบบเนี่ยนๆ เราก็ใช้ Transition เข้ามาช่วยครับ กำหนดตำแหน่งปลายทาง แล้วก็ช่วงเวลาที่ต้องการ แล้วมันก็จะบินไปเองฮะ ง่ายป่ะล่ะ

6.Event driven
ก็เหมือนๆกับ GUI ทั่วไปนะครับ ที่ใส่ listener ให้กับ Object ทีเราต้องการได้ เช่น tap, touch นอกจากนี้ก็มีพวก Event เกียวกับ sprite ที่เพิ่มเติมเข้ามา เช่น Sprite animate เล่นจบแล้ว หรือเริ่มเล่นเป็นต้น แล้วก็พวก Event เกียวกับ Physics ครับ ที่นิยมใช้กันมากๆ ก็อย่างเช่นการตรวจจับ Colliison

7.Physics
ความเจ๋งอีกอย่างของมันคือมี 2D Physics มาให้เลยครับ แค่เราสั่งเปิดใช้เท่านั้น เกมของเราก็จะมีระบบฟิสิกส์ทันที แต่ต้องไปเพิ่มโค้ดอีกนิดหน่อย หาอ่านได้ใน Tutorial ครับ

มันยังมีอีกเยอะนะครับ เช่นมี Simulator ที่ดี, มี Features เกี่ยวกับการใส่ Ads ฯลฯ แต่เท่าที่เขียนมานี่ก็พอจะทำเกมง่ายๆแปะโฆษณาได้แล้วล่ะ

ลองมาดูข้อเสียกันบ้าง
 - เวลา Build ต้องส่งโค้ดของเราไปที่ server ของเค้า วันไหนเน็ตไม่ดีหรือล่ม ก็ลืมมันไปซะ (อยาก Build เองเหรอ จ่ายตังสิ)
 - ไม่มี Auto update นะ ติดตามกันเอาเอง
 - ไม่มีใน Linux
 - ง่ายเกินไป อันนี้ก็แล้วแต่คน แต่ถ้าติดกับความง่ายของ Corona แล้ว จะขยับไปหา Tool ตัวอื่นหรือเข้าถึง Native ลำบากนะ
 - External tool หรือ 3rd party lib ส่วนใหญ่ไม่ฟรี ในโลกของ Corona มันมีฝูงหมาป่ารอขย้ำคุณอยู่นะ ถ้าเป็นไปได้ก็พยายามพึ่งตัวเองให้ได้มากที่สุดครับ (ผมไม่ได้ห้ามซื้อนะ แต่อยากให้ดูดีๆก่อน ถ้าสักแต่ว่าซื้อๆ ก็อาจจะได้ของที่ไร้ประโยชน์มา เสียเงินเปล่า)
 - ไม่มี Styling  อยากทำ Font สวยๆ เดิ้นๆ มี Shadow มี outlined เหรอ เจ้าจงไปหาวิธีทำกันเอาเอง (หรือไม่ก็เสียตังซื้อ tool )

สรุปว่ามันเป็นเครื่องมือที่ดีตัวหนึ่งเลยนะครับสำหรับการทำเกม แค่เวอชั่นฟรีก็เพียงพอที่จะทำเกมได้ทั้งเกมแล้ว ใช้เวลาศึกษาไม่มาก(สำหรับมือใหม่จริงๆเลย) tutorial เพียบ community ค่อนข้างใหญ่ แต่ผมว่ายังไงก็คงต้องจ่ายเงินให้เขาสักวันล่ะนะ อิอิ

ไว้มาต่อ Part 2 เกียวกับตัวภาษา Lua



Tuesday, February 25, 2014

Lean coffee

พอดีมีโอกาสได้ไปเข้าร่วม Lean coffee กับคุณนนท์ ก็เลยมาบล็อกเก็บเอาไว้สักหน่อย



มันก็เป็นการ meeting รูปแบบหนึ่งแหละครับ ใน Official site บอกว่า มันคือ structured, but agenda-less meeting
เริ่มจากการให้ผู้ที่เข้าร่วมทุกคนเขียนหัวข้อขึ้นมา ใส่ card แล้วก็เอามาแปะๆไว้ แล้วก็ใช้เวลาอีกเล็กน้อยให้ทุกคนอธิบายหัวข้อของตัวเองว่ามันคืออะไรแน่

เสร็จแล้วก็ทำ  dot vote โดยที่แต่ละคนโหวตได้ 2 ครั้ง จะโหวตเรื่องของตัวเองหรือโหวตของคนอื่นก็ได้

พอโหวตเสร็จแล้ว ก็เอามาจัด priority ตามหัวข้อที่มีคะแนนโหวตมากที่สุด แล้วก็เริ่มคุยกัน

เมื่อเราเริ่มคุยกัน เราจะมีเวลา 5 นาที ในการคุยหัวข้อนั้น (มี facilitator คอยจับเวลา) ก็คุยกันไปครับ (ยอมรับเลยว่าเลเวลผมมันน้อยมากจริงๆ หาช่องพูดไม่ค่อยได้เลย เศร้า T-T) ถ้าหมดเวลาแล้วแต่ยังพูดไม่จบ ก็พูดต่อให้จบได้

พอหมดเวลาก็ให้สมาชิกมาโหวตอีกว่าจะคุยเรื่องนี้กันต่อมั้ย
โดยมีทางเลือก สามอย่าง คือ
Y = คุยต่อ
N = ไม่เอาละ
O = ยังไงก็ได้ (No vote) อันนี้โดนติงมาว่าอย่า no vote มาก ทำตัวไม่ถูก ก็น่าคิดนะฮะ ถ้า No vote กันหมดแล้วจะเอาไงต่อ ประเทศชาติจะเดินต่อไปยังไง ต้องปฏิรูปก่อนมั้ย ... เอิ่ม พอดีกว่า

เอาเป็นว่า ถ้า Y เยอะ ก็คุยเรื่องเดิมต่ออีก 5 นาที ถ้า N เยอะ ก็ เอาเรื่องต่อไปมาคุย

ทำอย่างนี้ไปจนหมดเวลา ซึ่งกำหนดไว้ที่ครึ่งชั่วโมง

ในตอนท้าย คุณนนท์ยังบอกอีกว่า ที่เราทำกันไปเป็น Lean coffee แบบมาตรฐาน สามารถนำไปปรับให้เข้ากับองค์กรณ์หรือทีมของตัวเองได้

เสร็จแล้วก็มาทำ Retrospect กันหน่อย อันนี้ส่วนตัวของผมนะ มีเพิ่มเติมนิดหน่อยครับ ตอนนั้นคิดไ่ม่ทัน แหะๆ
Good
 - มีเรื่องที่จะคุยชัดเจน มีเตรียมหัวข้อมาก่อน
 - Dead air น้อยมาก อาจจะเป็นเพราะสมาชิกแต่ละท่านเลเวลสูงๆกันทั้งนั้นเลย
ฺBad
 - มีหัวข้อที่ไม่ได้คุยเยอะ คนที่หัวข้อไม่ได้รับการโหวตอาจจะน้อยใจได้ :)
 - อุปกรณ์กับเน็ตผมกากมาก ทั้งหลุดทั้งส่งเสียงรบกวน
 - ผมพูดน้อยมาก
Try ตอนนั้นคิดไม่ทัน เลยบอกไปว่าไม่มี
 - ได้คุยกับพี่มุ้ยต่อหลังจากนั้น น่าจะเอาหัวข้อที่น่าสนใจ มาคุยต่อในกรุ๊ป
 - ใจกล้า หน้าด้าน หาช่องในการพูดบ้าง

หมดละครับ ขอบคุณคุณนนท์กับเพื่อนๆที่มาช่วยกันแชร์ครับ ผมนี่ไม่ค่อยได้แชร์อะไรเลย เฮ้อ



Official site http://leancoffee.org/