เพื่อนๆ พวกเธอ... จำความรู้สึกตอนที่เราอยากสร้างเกมครั้งแรกได้ไหม? เรามักจะเริ่มด้วยความตื่นเต้น ไปโหลดโปรแกรม Unity มาติดตั้ง แต่พอเจอหน้าต่างว่าง ๆ กับไฟล์สคริปต์ที่ต้องพิมพ์ภาษา C# เข้าไปเป็นร้อยบรรทัดเพื่อแค่ให้ "ตัวละครขยับได้" หลายคนก็ถอดใจไปซะก่อน เราก็เคยเป็นหนึ่งในนั้น! แต่ล่าสุดเราไปเจอขุมทรัพย์สำหรับมือใหม่มา คือโปรเจกต์ที่ชื่อว่า pm Spaceshooter โดยนักพัฒนาที่ชื่อว่า RalfG บนเว็บ itch.io ซึ่งเขาเอาโปรเจกต์ต้นแบบจาก Tutorial ระดับตำนานของ Hutong Games มาเรียบเรียงใหม่ให้เข้าใจง่ายกว่าเดิม วันนี้เลยอยากจะมาเล่าว่าทำไมโปรเจกต์เล็ก ๆ นี้ ถึงเป็นจุดเริ่มต้นที่ยิ่งใหญ่สำหรับนายได้ 1. Playmaker: อาวุธลับของคนเกลียด Code ก่อนจะไปดูตัวเกม เราต้องมารู้จักพระเอกของงานอย่าง Playmaker ก่อน โปรเจกต์ PM Spaceshooter นี้ไม่ได้เขียนโค้ดแม้แต่บรรทัดเดียว (Zero Coding) แต่ใช้สิ่งที่เรียกว่า Visual Scripting หรือการเขียนโปรแกรมด้วย "ภาพ" Playmaker จะใช้ระบบที่เรียกว่า FSM (Finite State Machines) ฟังดูยากใช่ไหม? แต่คือการคิดแบบเป็นขั้นเป็นตอนเหมือนเราวาด Flowchart เช่น สถานะที่ 1 (Idle): ยานอยู่นิ่ง ๆ -> ถ้ากดปุ่มลูกศร -> ให้เปลี่ยนไปสถานะที่ 2 สถานะที่ 2 (Move): ยานเคลื่อนที่ตามทิศทาง -> ถ้าปล่อยปุ่ม -> ให้กลับไปสถานะที่ 1 ในโปรเจกต์นี้ RalfG เขาโชว์ให้เห็นเลยว่า ระบบเกมยิงอวกาศทั้งเกม ตั้งแต่การยิงกระสุน การสุ่มศัตรูออกมา จนถึงการระเบิด ทุกอย่างทำได้ด้วยการ "ลากเส้นเชื่อมกล่องคำสั่ง" เท่านั้นเอง 2. แกะรอย PM Spaceshooter: ข้างในมีอะไรบ้าง? ตัวเกมเป็นแนว 2D Arcade Space Shooter แบบคลาสสิก (นึกภาพเกมยานยิงสมัยก่อนในตู้เกม) แม้หน้าตาจะดูเรียบง่าย แต่รวม "หัวใจ" ของการทำเกมไว้ครบเลยนะ: ระบบ Player Controller: เพื่อนๆ จะได้เห็นว่าเขาเซตค่าให้ยานเคลื่อนที่ยังไงให้ดูนุ่มนวล ไม่แข็งกระด้าง ระบบ Shooting & Projectiles: การสร้างกระสุน (Instantiate) และการทำให้กระสุนวิ่งไปข้างหน้า รวมถึงการทำลายตัวเองเมื่อหลุดขอบจอเพื่อไม่ให้คอมฯ ค้าง ระบบ Enemy Spawning: การใช้ตัวสุ่ม (Randomize) เพื่อให้ศัตรูโผล่ออกมาในตำแหน่งที่ต่างกัน ทำให้เกมไม่น่าเบื่อ ระบบ Collision Detection: ส่วนที่สำคัญที่สุดคือ "การชน" เมื่อกระสุนโดนศัตรูจะเกิดอะไรขึ้น? เมื่อยานเราชนศัตรูจะระเบิดไหม? ทั้งหมดนี้ในโปรเจกต์มีคำตอบให้ดูแบบจะ ๆ 3. ทำไม RalfG ถึงยอมปล่อย Source Code? คุณ RalfG เขาเขียนไว้ชัดเจนเลยว่า "Project นี้ไม่สมบูรณ์แบบ และเขาก็ไม่ได้ตั้งใจให้สมบูรณ์แบบ" แต่นี่แหละคือเสน่ห์! เพราะโปรเจกต์ที่สมบูรณ์เกินไป มักจะซับซ้อนจนมือใหม่ดูไม่รู้เรื่อง แต่ใน PM Spaceshooter เขาจงใจทำ FSM ให้มัน "เรียบง่ายที่สุด (Very Simple)" เพื่อให้คนที่เพิ่งหัดทำเกมไม่รู้สึกกลัว เขาอยากให้คนเห็นว่า "เฮ้ย! แค่ลากวางไม่กี่กล่อง เกมก็รันได้แล้วนะ" ซึ่งเป็นการสร้างความมั่นใจ (Confidence) ให้กับมือใหม่ได้ดีมาก ๆ 4. ประสบการณ์ตอนเล่น (และตอนแกะ) เราลองเล่นตัว Demo ที่เป็น HTML5 บนหน้าเว็บเลย คือลื่นไหลดีมาก ฟีลลิ่งการยิง เสียงประกอบ และแรงระเบิดทำให้เรารู้สึกว่า "นี่แหละคือเกมจริง ๆ" แต่ความสนุกที่แท้จริงคือตอนที่เราโหลดไฟล์โปรเจกต์มาเปิดใน Unity พอเราเห็นแผนภูมิ Playmaker ที่เขาจัดวางไว้ เหมือนเราได้เข้าไปนั่งในหัวของคนสร้างเกม เราจะเริ่มเห็นว่า "อ๋อ... ตรงนี้เขาเช็คคะแนนแบบนี้นะ" "อ๋อ... เสียงระเบิดถูกสั่งให้ดังตอนที่ศัตรูตายนะ" เหมือนการต่อจิ๊กซอว์ที่มองเห็นภาพรวมตลอดเวลา 5. บทเรียนที่ได้รับจากโปรเจกต์นี้ ถ้าถามว่าเราได้อะไรจาก PM Spaceshooter บ้าง? Logic เหนือ Syntax: เพื่อนๆ ไม่จำเป็นต้องจำ Syntax ของภาษา C# ว่าต้องมีจุดเซมิโคลอน (;) ตรงไหน แต่สิ่งที่สำคัญกว่าคือ "ตรรกะ" ของเกม ซึ่ง Playmaker ช่วยให้เราฝึกเรื่องนี้ได้เต็มที่ Iterative Design: การปรับแต่งเกมทำได้เร็วมาก สมมติอยากให้กระสุนรัวขึ้น นายก็แค่ไปเปลี่ยนตัวเลขในกล่อง Wait ใน Playmaker แล้วกด Play ทดสอบได้ทันที Community Power: โปรเจกต์นี้ย้ำให้เห็นว่า สังคมนักพัฒนาเกมมักจะมีการส่งต่อความรู้ (จาก Hutong Games มาสู่ RalfG และส่งต่อมาถึงเรา) ซึ่งช่วยย่นระยะเวลาการเรียนรู้ได้มหาศาล สรุป: ก้าวแรกสู่สังเวียน Game Dev สำหรับเพื่อนๆ คนไหนที่ยังมีโปรเจกต์เกมในฝันค้างอยู่ในหัว แต่ติดกำแพงเรื่องการเขียนโค้ด เราแนะนำแบบตะโกนเลยว่า "ไปโหลด PM Spaceshooter มาดูซะ!" อาจจะเป็นแค่เกมยิงลำเล็ก ๆ แต่คือรากฐานที่จะทำให้ไปสร้างเกม RPG, เกมแนวเอาชีวิตรอด หรือเกมอะไรก็ได้ที่อยากทำในอนาคต เพราะเมื่อเข้าใจ "ตรรกะ" ผ่าน Playmaker แล้ว โลกของการสร้างเกมจะเปลี่ยนไปทันที ภาพประกอบทั้งหมดโดยผู้เขียน เปิดประสบการณ์ความบันเทิงที่หลากหลายสุดปัง บน App TrueID โหลดเลย ฟรี !