Health Informatics IT

Resus Days Development Retrospective: แชร์ประสบการณ์การสร้างเกมฝึกหัดกู้ชีพ ตั้งแต่เริ่มจนปัจจุบัน

11 July 2018

จะเป็นอย่างไรหากเราเล่นเกมแบบ Candy Crush แล้วได้ความรู้ทางการแพทย์ไปพร้อมกันด้วย? คำถามนี้เป็นคำถามที่เกิดขึ้นเมื่อผมเกิดไอเดียของโปรเจคท์นี้ใหม่ ๆ ครับ จริง ๆ การสร้างเกมที่มีจุดประสงค์อื่นนอกจากความบันเทิงนี้มีมานานแล้วครับ ศัพท์ในวงการเกมเรียกเกมเหล่านี้ว่า serious games ตัวอย่าง serious games ก็ตั้งแต่พวกบอร์ดเกม เช่น เกมเศรษฐี (Monopoly) ซึ่งทำมาให้คนเข้าใจการผูกขาดของระบบทุนนิยม หรือเกมอย่าง Civilization ก็มีคนจัดเป็นกลุ่ม serious games

แม้ว่า serious games จะมีมานานแล้ว (ในวงการ healthcare ก็มีการทำเกมมากขึ้นเรื่อย ๆ ในระยะหลัง) แต่ผมกลับรู้สึกว่าเกมที่สนุกด้วยและได้ความรู้ด้วยมันมีน้อยเหลือเกิน เหมือนวงการเกมแยกเป็นสองทางที่ขาดกันโดยสิ้นเชิง คือเกมที่สนุกแต่ไม่ได้ประโยชน์อะไร กับเกมที่ได้ประโยชน์แต่ไม่ได้น่าสนุกเลยซักนิด ผมว่าทุกคนที่สร้างเกมก็คงอยากให้เกมมันสนุกแหละครับ แต่น้อยคนมากที่จะประสบผลสำเร็จทั้งสองด้านได้พร้อมกัน และในวงการ medical serious games นี่ ผมก็ไม่เคยเห็นครับ ผมเลยอยากขอลองทำให้มันสำเร็จดูครับ

.

Resus Days คืออะไร

Resus Days เป็น mobile game สำหรับ iOS และ Android เป็นเกมจำลองสถานการณ์การกู้ชีพขั้นสูง (Advanced Cardiovascular Life Support – ACLS) ผู้เล่นจะได้รับบทบาทเป็นหัวหน้าทีมกู้ชีพที่ต้องเลือกคำสั่งที่ถูกต้องตามแนวเวชปฏิบัติ (Clinical practice guideline) ที่บุคลากรทางการแพทย์ใช้จริงเมื่อทำการกู้ชีพ หากผู้เล่นเลือกคำสั่งได้ถูกต้อง ผู้ป่วยก็จะพ้นขีดอันตราย และผู้เล่นก็จะชนะในด่านนั้น ๆ

ตัวอย่าง launch trailer

และ gameplay trailer

ส่วนข้างล่างนี้คือ Screenshot บางส่วนของเกมครับ



.


1. จุดเริ่มต้น

จุดเริ่มต้นจริง ๆ มันเริ่มตั้งแต่สมัยผมเป็นนักศึกษาแพทย์แล้วครับ ช่วงนั้นเป็นประมาณปี 2010 ผมต้องรับการฝึกและสอบเกี่ยวกับ ACLS ตามหลักสูตร ช่วงนั้นเป็นช่วงที่มี smartphone เครื่องแรกพอดี (Nexus S) ตอนเรียน ACLS ก็มีความรู้สึกว่า สิ่งที่ต้องทำในแต่ละขั้นนี่ ถ้ามี app ที่มาช่วยให้เราจำได้ก็คงดี เป็นคล้าย ๆ quiz ก็ยังดี ตอนนั้นพยายามหาใน store แต่ก็ไม่เจอที่ราคาเอื้อมถึงและคุณภาพดูน่าจะดีเลยครับ สุดท้ายก็เรียนและสอบไปตามปกติ (มีตกด้วยรอบนึง 55) หลังจากนั้นไอเดียเรื่อง app ที่มาช่วยสอน ACLS นี่ก็อยู่ในความคิดผมลึก ๆ มาโดยตลอด แต่ผมไม่ได้มี capability ที่พอจะทำอะไรได้

เวลาผ่านไปหลายปี หลังจากผ่านอะไรมาเยอะแยะ ผมสั่งสม software development skills มาระดับนึง คือคิดว่าถ้าจะทำ ACLS app จริง ๆ ก็ทำได้แล้วแหละ แต่ตลอดเวลาที่ผ่านมาก็ต้องโฟกัสกับสตาร์ทอัพต่าง ๆ ที่ตนเองทำมาตลอด เลยไม่มีเวลาที่จะมาทำโปรเจคท์นี้

จนมาเรียนต่อ Health Informatics ที่สวีเดน (ด้วยทุน SI) ซึ่งต้องทำวิทยานิพนธ์ (master thesis) เพื่อจบการศึกษา ก็ลองมอง ๆ หาไอเดียหลาย ๆ โปรเจคท์ที่เราจะสามารถนำเสนอทักษะที่เรามีออกมาได้ เผื่อมีโอกาสในการทำงานในอนาคต ซึ่งทักษะที่ผมอยากนำเสนอก็มี 3 ด้าน

  1. Medical เราสามารถทำความเข้าใจ medical knowledge และมันต้องเป็นเรื่องที่ลึกพอสมควร ไม่ใช่ความรู้แพทย์แบบพื้นฐาน
  2. Software development เราสามารถทำ software จนเสร็จด้วยตัวคนเดียวได้ และมันต้องเป็นเทคโนโลยีที่เราไม่เคยทำมาก่อน เพื่อแสดงให้เห็นว่าเราสามารถเรียนรู้เรื่องใหม่ ๆ ได้ ไม่ได้ยึดติดกับสิ่งที่เคยรู้มาก่อน
  3. Digital art เราสามารถออกแบบ software ที่มี user experience ที่ดีได้ คือความสวยโอเค ความใช้ง่ายโอเค แต่ขณะเดียวกัน มันต้องง่ายในการพัฒนาด้วย

ทั้งนี้ทั้งนั้น โปรเจคท์ดังกล่าวก็ต้องเป็นโปรเจคท์ที่สามารถนำไปใช้ได้จริง (ไม่ใช่ทำเพื่อพอให้จบการศึกษาเฉย ๆ) สามารถพิสูจน์ได้ว่ามีคุณค่าจริง ๆ โดยมีคนใช้จริงและยอมจ่ายเงินจริง

หลังจากคิดมาหลายโปรเจคท์ ก็ไปนึกถึงสิ่งที่เคยอยากทำในอดีตนั่นคือ ACLS app ที่ว่า ซึ่งมันก็ตอบโจทย์สิ่งที่เราอยากนำเสนอในวิทยานิพนธ์ของเรา หลังจากคิดไปคิดมาอยู่หลายไอเดีย ก็มาตกลงที่จะทำเป็นเกม

.

2. Development

หลังจากตัดสินใจได้แล้วว่าจะทำเกม ก็มาถึงการเลือกเทคโนโลยีที่จะใช้ และจะทำเกม 2D หรือ 3D สุดท้ายก็มาลงเอยที่ Unity + Blender ครับ เพราะลองดูคร่าว ๆ แล้วคิดว่าไม่ได้ยากเกินไปที่จะหัดในเวลาสั้น ๆ เลยเริ่มหัด Unity ในเดือนพ.ย. 2560 และ Blender ในเดือนธ.ค. ก่อนจะเริ่มเตรียมหาข้อมูล ทำ literature review ในเดือนม.ค. 2561 และเริ่มพัฒนาเกมในเดือนก.พ. จนเสร็จสิ้นทั้งหมดในและเปิดให้ดาวน์โหลดในวันที่ 24 เม.ย. ในระหว่างนั้นก็เตรียมเรื่องวิจัยเรื่องวัดผลอะไรไปด้วย รวมระยะเวลาที่ใช้ในการพัฒนาทั้งสิ้นประมาณ 600 ชม.

แสดงการพัฒนาตั้งแต่เป็น lo-fi prototype จน final product

.

2.1 How did I learn Unity?

ต้องบอกก่อนว่าพื้นเพเดิมผมเขียน JavaScript ได้อยู่แล้ว (ตั้งแต่สมัยเรียนกับ Udacity) และมาอยู่นี่ก็เขียน Java นิด ๆ หน่อย ๆ ดังนั้นการเรียน C# มันจึงไม่ได้ลำบากมาก แต่คอร์สที่จุดประกายให้ผมเลยจริง ๆ คือคอร์สที่ Unity ทำร่วมกับ Pluralsight ครับ นั่นคือ Unity Game Dev Courses: Fundamentals ครับ ในนั้นจะมีคอร์สย่อย ๆ อยู่หลายคอร์ส แต่ผมว่าขั้นต้นดูแต่คอร์ส Unity Fundamentals ก็พอครับ จะได้ไอเดียเลยว่า Unity ทำอะไรได้บ้าง ใช้ยังไง มีส่วนประกอบอะไรบ้าง การเรียนเรื่องย่อย ๆ ต่อจากนั้นก็ง่ายแล้ว ความรู้สึกครั้งแรกที่ผมนั่งดูคอร์สนี้ก็คือ เฮ้ย การทำเกมนี่มันง่ายขนาดนี้เลยหรอ เหมือนเล่นเกมแนว The Sims เลย (แม้ว่าต่อมาจะค้นพบว่ามันมีความยากกว่านั้นเยอะ 55)

หลังจากนั้นก็ผ่านการศึกษา Unity จากแหล่งต่าง ๆ ขอรีวิวดังนี้

  • Game development & design. Learn C# using Unity 4.6, 5 & 2018 (300 บาท) โดย Ben Tristem อันนี้เป็นคอร์สที่ดังมากใน Udemy ส่วนตัวผมว่า sections แรก ๆ ดีมากในการปูพื้น Unity ส่วนหลัง ๆ มาเริ่มมีความไร้ระเบียบแบบแผนบางอย่าง และผมรู้สึกว่าเขาไม่ค่อยอธิบายแนวคิดของแต่ละโปรเจคท์เท่าไหร่ เช่น ไม่วางโครงก่อนว่าเกมจะมี class หลัก ๆ กี่ class แต่ละ class จะทำอะไร เหมือนอยากเขียนอะไรก็เขียนไปเลย แล้วก็มาแก้ทีหลัง มันเลยมั่ว ๆ นิดครับ ผมเรียนไปประมาณ 10 sections รู้สึกว่าพอได้ไอเดียแล้ว ก็เลยเลิกไป
  • Unity tutorial by Unity (FREE) พอเสร็จคอร์สของ Ben แล้วก็เลยมานั่งดูเป็นเรื่อง ๆ เอาเรื่องที่สนใจจาก Official website ก็มาค้นพบว่าเขาทำดีมากนะครับ จริง ๆ ถ้านั่งทำตามโปรเจคท์ตัวอย่างในเว็บไซต์อาจไม่ต้องเรียนคอร์สของ Ben เลยด้วยซ้ำ อย่างไรก็ดี ผมก็ยังรู้สึกว่าตนเองไม่ค่อยเข้าใจว่าถ้าจะทำเป็นเกมจริง ๆ มันต้องวางโครงสร้างอย่างไร เลยอยากหาคอร์สแนวโปรเจคท์เรียนเพิ่ม ซึ่งเป็นที่มาของคอร์สที่สาม
  • Making a Simple RPG in Unity 2017 by GameGrind (FREE) อันนี้เป็นวิดีโอที่ดูฟรีใน YouTube ครับ ส่วนตัวว่าดีมาก พาเราสร้างเกม RPG ง่าย ๆ ผมบอกเลยว่า code ของ Resus Days จำนวนมากได้รับแรงบันดาลใจมาจากคอร์สนี้

อีกอย่างหนึ่งที่ผมทำก็คือการซื้อ project จาก Unity Asset Store เพื่อมาศึกษา code ตัวอย่าง ซึ่งก็คือ

  • City Building Perfect Kit (~3,281 บาท) ​เป็น Clash of Clans clone ก็ได้ไอเดียหลาย ๆ อย่างเอามาใช้ใน Resus Days เหมือนกันครับ
  • GUI Kit Sci-Fi Blue (~828 บาท) ซื้อมาดูตัวอย่าง UI ที่ค่อนข้างซับซ้อนและมี animation เยอะ สุดท้ายไม่ได้ทำตามครับ 55 เพราะรู้สึกใช้เวลาเยอะและไม่สำคัญขนาดนั้น

.

2.2 How did I learn Blender?

หลังจากรู้สึกเข้าใจ Unity ระดับนึงแล้ว ขั้นตอนต่อมาก็คือ Blender เพื่อใช้ทำ 3D model และ animation ซึ่งช่องทางหลัก ๆ ที่ผมใช้เรียนคือ

  • CG Cookie (~961 บาท/เดือน) ผม subscribe ไป 1 เดือนครับ แล้วก็นั่งเรียนและทำตามหลาย ๆ คอร์สในนั้น ผมว่าประมาณ 80% ของความรู้เกี่ยวกับ Blender ของผมมาจากเว็บนี้
  • Sebastian Lague Youtube คือจบจาก CG Cookie ผมยังมีความงงเล็ก ๆ ใน workflow ระหว่าง Unity และ Blender ซึ่งช่องนี้ของ Youtube ช่วยผมพอสมควรครับ จริง ๆ ก็มีเรื่องน่าสนใจอื่น ๆ อีกด้วยครับ
  • LowPoly SciFi Pack อันนี้เป็น Unity Asset ที่ผมซื้อมาศึกษาการทำฉากเกมเป็นหลัก แต่ก็ได้ใช้ตอนทำ prototype เกมด้วยครับ

.

2.3 รวม Software ทั้งหมดที่ใช้

Unity กับ Blender อันนี้คือ tool หลักแน่นอนครับ แต่ก็มี software อื่น ๆ คือ

  • Adobe Creative Cloud: Illustrator กับ Photoshop นี่คือตัวหลักเลยสำหรับการทำ UI อันนี้ผมไม่ต้องเรียนเพราะใช้เป็นมานานแล้ว นอกจากนั้นก็มี After Effect นิดหน่อยเพราะต้องทำ ECG animation
  • Sprite Sheet Generator Photoshop Script (FREE): เพราะใช้ Sprite sheet ในหลาย ๆ ส่วนของโปรเจคท์ ลองหาอยู่หลายตัว สุดท้ายก็เลือกของ bogdanrybak แต่ถ้าใครทุนหนาอาจลองพิจารณาพวก tool เสียเงิน เช่น SpriteSheetMaker เพราะจะทำ sheet ที่ advanced กว่าได้
  • MakeHuman (FREE): ถึงแม้เราจะขึ้นโมเดลตัวละครเองได้ แต่มันก็ไม่สวยและมีสัดส่วนที่ดีเหมือนโมเดลจาก software สำเร็จรูป ผมจำไม่ได้แล้วว่าทำไมถึงใช้ Adobe Fuse ไม่ได้ (เหมือนจะสมจริงเกินไปหรือเพราะ import rig เข้ามาใน Blender ไม่ได้นี่แหละครับ) สุดท้ายเลยไปจบที่ MakeHuman แต่ปัจจุบันเหมือนโครงการนี้ยุติไปแล้ว อาจต้องหา tool อื่น

.

2.4 รวม Unity Asset ที่ใช้ใน Resus Days

แน่นอนว่าจุดเด่นหนึ่งของ Unity ก็คือความเข้มแข็งของ platform และ community ดังนั้นหลาย ๆ สิ่งที่เราอยากจะทำก็จะมีคนทำไว้ก่อนแล้ว ทำให้เราไม่ต้อง reinvent the wheel สำหรับโปรเจคท์นี้ ผมก็ลองผิดลองถูกกับหลาย ๆ asset สุดท้ายแล้วใน production version ผมใช้ asset ดังต่อไปนี้:

  • TextMesh Pro (TMP) (FREE) เนื่องจาก native UI text ของ Unity ไม่สามารถทำหลาย ๆ อย่างได้ เช่น การจัด paragraph แบบ justify หรือทำได้ก็ไม่ง่าย เช่น การแทรกรูประหว่างตัวหนังสือ ปัญหาเหล่านี้ TMP ช่วยได้ครับ
  • Toony Colors Pro 2 (~1,326 บาท) เป็น shader หลักที่ใช้ในเกม
  • DOTween Pro (~497 บาท) ตอนแรกอยากทำเกมที่มี UI animation เยอะ ๆ เลยซื้อมา สุดท้ายทำไม่ทันเลยใช้แค่ fade เองครับ (ซึ่งจริง ๆ ไม่ต้องซื้อก็ได้ 😅) แต่จริง ๆ ใช้ทำอะไรได้มากกว่านั้นเยอะนะครับ
  • 3D Games Effects Bundle 1 (~1,160 บาท) อันนี้เป็น VFX หลักของเกม ที่แสดงตอนเลือกการรักษาต่าง ๆ
  • Build Report Tool (~331 บาท) เนื่องจากช่วงทำเกมใหม่ ๆ ผมมีปัญหาเกี่ยวกับ iOS build size (ก่อนจะค้นพบว่าไม่ต้องไปแคร์มันมาก เดี๋ยว archive แล้วมันเล็กเอง) จะเข้าไปดู report ปกติก็ไม่ค่อยสะดวก เลยซื้อตัวนี้มาช่วยแสดงผลครับว่า asset ไหนกินพื้นที่เยอะ
  • Interface and Item Sounds (~232 บาท) SFX หลักของเกม
  • Acid trance/retro style music pack (~331 บาท) Background music หลักของเกม
  • Unity IAP (FREE) สำหรับการทำ in-app purchase
  • Facebook Unity SDK (FREE) สำหรับการ track Facebook ads จำได้ว่าใช้เวอร์ชั่นล่าสุดแล้วมีปัญหาซักอย่าง (จำไม่ได้) เลยต้องไปใช้เวอร์ชั่นเก่าที่ stable กว่า

ส่วน Font ที่ใช้ในเกมคือ Nunito Fonts จาก Google Fonts ครับ

จริง ๆ มีพวก asset ที่ซื้อมาแต่ไม่ได้ใช้อีกพอสมควร รวมถึงพวกคอร์สที่ซื้อมาแต่ไม่ได้เรียน แต่คิดเฉพาะที่ได้ใช้ละกันครับ ดังนั้นต้นทุนก็จะเป็น 9,247 บาท

.

2.5 Game design decision

Real-time vs. turn-based

ไอเดียตั้งต้นของเกมจริง ๆ คือผมนึกถึง turn-based RPG เช่น Final Fantasy ยุค PS1 หรือไม่ก็ real time strategy เช่น StarCraft แต่ไอเดียก็ยังไม่ชัดเจนมากนัก ผมรีวิว mobile game ในตลาดเยอะมากว่าเขาทำ gameplay แบบไหน ส่วนใหญ่ไม่มีเวลาเล่นเอง แต่ใช้วิธีดูคลิปคนเล่นจากใน YouTube เอามากกว่า มีการถามเพื่อน ๆ แพทย์ว่าอยากได้แบบไหน รวมไปถึงการลองทำ paper prototype มาเล่นเกมจริง ๆ สุดท้ายก็ตัดสินใจได้ว่าจะเป็น real-time strategy game

Research เยอะพอสมควรกว่าจะออกมาเป็นแบบนี้

ตอนแรกก็คิดไปว่าจะให้กดเลือกตัวละครแต่ละตัวแล้วเลือกคำสั่งตาม แต่คิดไปคิดมาคือคนที่จะสั่งได้มันก็มีไม่กี่คน แถมทำแบบนั้นยังเป็นการเพิ่มความซับซ้อนในการพัฒนา เลยตัดไปใช้ระบบ indirect control ไม่คุมตัวละครเอง เลือกคำสั่งเลย เดี๋ยวระบบเลือกให้เองว่าจะให้ใครทำ อันนี้ทำให้เแอบเกิดความซับซ้อนตอนทำระบบสลับตัวละครที่ทำหน้าที่กดหน้าอก แต่มองย้อนไปผมก็ยังคิดว่าทำแบบนี้ดีแล้ว

หลังจากทำเกมไปได้ซักพัก ทดลองเล่นเกมจริง ๆ ผมก็พบว่าถ้าเป็น real-time ที่เวลาเดินตามโลกจริง มันจะช้ามาก และผู้เล่นจะได้นั่งรอเฉย ๆ (ที่โลกจริงเราไม่รู้สึกช้า เพราะมันมีรายละเอียดอีกเยอะที่ในเกมไม่มี) ก็เลยเปลี่ยนให้เวลาเดินเร็วกว่าโลกจริง 4 เท่า (ลองมาเยอะครับกว่าจะสรุปที่ตัวเลขนี้) และให้เกมช้าลงหรือหยุดในจังหวะที่จำเป็น การเปลี่ยนความเร็วเวลาไปมาแบบนี้ก็ทำให้เกิดความซับซ้อนในการพัฒนาเช่นกัน และ Unity เองก็มี bug เกี่ยวกับ timescale กับ animation อยู่บ้าง

ไอคอนของคำสั่งในเกม ผมพยายามออกแบบให้สื่อถึงการทำงานของการรักษานั้น ๆ

.

Realism

อีกหนึ่งคำถามสำคัญก็คือ เราต้องการความสมจริงขนาดไหนในเกมนี้ ถ้าสมจริงมากก็ใส่ความรู้เข้าไปได้มากขึ้น แต่จะแลกมาด้วยความซับซ้อนในการพัฒนา ความยากในการคงไว้ซึ่งความถูกต้องในทางการแพทย์ (medical accuracy) เพราะปัจจัยเข้ามาเกี่ยวมากขึ้น และอาจทำให้ความสนุกลดลงด้วย ซึ่งมันก็ต้องย้อนไปดูว่าจุดประสงค์ที่เราทำเกมนี่เราต้องการให้คนเรียนรู้อะไรบ้าง และเราอยากให้คนเล่นเกมด้วยความรู้สึกไหน

Software ที่โฟกัสที่ความสมจริง ก็คือ Simulations ส่วน software ที่โฟกัสที่ความบันเทิง ก็คือเกมต่าง ๆ ส่วน Serious games คือสิ่งที่อยู่ระหว่างสองขั้วนี้

ซึ่งสำหรับผมเอง ในแง่การเรียนรู้ ผมแค่อยากให้ผู้เล่นสามารถจำได้ (recognize) ก็พอครับ ว่าถ้า condition เป็นแบบนี้ จะต้อง treat แบบไหน ไม่ต้องลงไปถึงขั้นเข้าใจว่าเพราะอะไร และไม่ต้องจำได้ไปจนถึงรายละเอียดปลีกย่อย โดยผมหวังว่าความจำภาพรวมได้ จะกระตุ้นให้เกิดความอยากที่จะศึกษาต่อด้วยตนเองของผู้เล่นต่อไป เกมแค่ทำหน้าที่จุดประกายบางอย่าง หรือใช้เกมเป็นสิ่งทบทวนความรู้ที่ได้ศึกษามาแล้ว

ในแง่ความรู้สึกของผู้เล่น ผมอยากให้ผู้เล่นหยิบเกมขึ้นมาเล่นแล้วไม่เครียด ไม่ได้รู้สึกว่ากำลังจะอ่านหนังสือเตรียมสอบ อยากให้เล่นแล้วมีบรรยากาศความ casual บางอย่าง ซึ่งมันสะท้อนออกมาใน game design หลาย ๆ อย่างที่ใช้ เช่น การใช้ตัวการ์ตูนเป็นตัวละคร การใส่อารมณ์ขันเล็ก ๆ เข้าไปบ้างในคำพูดของตัวละคร แต่ในขณะเดียวกันก็ไม่ casual เกินไปจนเป็นเรื่องตลก เพราะการกู้ชีพไม่ใช่สิ่งที่ทำตลก ๆ ได้ ในชีวิตจริงมันคือความเป็นความตายของคน

ตอนขึ้นโมเดล 3 มิติของตัวละครเสร็จใหม่ ๆ

อีกอย่างคือ ถ้าอยากได้ realism ก็มีคนทำ software สำหรับ ACLS simulation มาเยอะแล้ว ไม่จำเป็นต้องทำซ้ำ แต่ยังไม่มีใครทำเป็นเกมที่มีบรรยากาศความ casual แบบที่ผมคิดไว้มาก่อน จากทั้งหมดนี้ ก็เลยตัดสินใจออกแบบเกมมาเป็นแบบที่เห็นครับ

.

Revenue model and pricing

จริง ๆ มีคำถามเยอะนะครับสำหรับเรื่องนี้ เริ่มจากข้อแรกเลยคือ จะเป็น Paid app หรือ Free app เนื่องจากมันไม่เคยมีคนทำเกมแบบนี้มาก่อน ผู้เล่นอาจไม่ค่อยเข้าใจว่ามันเป็นเกมอย่างไร เขาอาจจะไม่อยากลองจ่ายเพื่อเล่น หรือถึงยอมจ่ายถ้ามันไม่เป็นอย่างที่เขาคิด เขาอาจจะผิดหวัง สมมติทำเป็น Free app (with in-app purchase) อย่างน้อยเขาก็ได้ลองก่อน ถ้าไม่ใช่ก็จะได้ไม่ต้องซื้อ แต่ก็แลกมาด้วยการโดนผู้เล่นส่วนนึงด่าเหมือนเดิมว่ามีให้ลองด่านเดียวจะฟรีทำไม

ทีนี้ถ้าจะปล่อยฟรี แล้วจะทำเงินอย่างไร วิธีที่เป็นที่นิยมที่สุดก็คือระบบ in-game virtual currency เราชนะเกมแล้วเราก็ได้ reward มาจับจ่ายในเกม แต่วิธีนี้ก็พัฒนาได้ยากกว่าอีกวิธีหนึ่ง นั่นคือการให้เล่นฟรีไม่กี่ด่านจ่ายเพื่อ unlock ด่านทั้งหมด เนื่องจากระยะเวลาพัฒนาที่ค่อนข้างจำกัด (เพราะต้องปิดเล่ม thesis ซึ่งผมต้องการสถิติการใช้งานในโลกจริง ๆ ไปนำเสนอ) ก็เลยเลือกวิธีหลังไปเลย

คำถามสุดท้ายคือแล้วจะคิดกี่บาทเพื่อ unlock หลังจากผมถามเพื่อนจำนวนหนึ่ง ผมก็พบ pattern ว่า ถ้าผู้ซื้อเห็นคุณค่า (value) จะ $2, $3, $4, $5 ก็ไม่ต่างกันสำหรับเขา แต่ถ้าไม่เห็นคุณค่า จะกี่บาทก็แพง ($1 อาจจะพอรับได้) ผมมาคิดว่าถ้าเป็นตัวเอง จุดตัดที่เราว่าสำคัญคือ 100 บาท ต่ำกว่าร้อยกับมากกว่าร้อย มันดูต่างกันพอควร ก็เลยเลือกเป็น $3 หรือ 99 บาท

.

2.6 ปัญหาที่พบระหว่างการพัฒนา

ความเป็นเป็ดที่ทำได้ทุกอย่าง

การที่ผมทำได้ทุกอย่างในตัวคนเดียวนี่เป็นทั้งข้อดีและข้อเสีย ข้อดีคือเราทำทุกอย่างได้เร็วใน cost ที่ต่ำ เพราะขนาดผมเองทำทุกอย่างคนเดียวแท้ ๆ บางครั้งเกมเพลย์ที่ผมออกแบบมาและโค้ดจนเสร็จ มาเล่นจริงบางทีก็รู้สึกว่าไม่เวิร์ค ก็ต้องแก้ใหม่ ถ้าเป็นทีม 3 คน หมอ-dev-designer หมอคิดเกมเพลย์มา designer เอาไปออกแบบ เช็คกับหมอแล้วเหมือนจะโอเค เลยให้ dev เอาไปโค้ด พอโค้ดเสร็จไปให้หมอลองเล่น ปรากฎว่าไม่ถูกใจ มันก็ต้องไปวนไปแก้ใหม่ ซึ่งมันทำให้ช้า เวลารวมอาจมากกว่า 600 ชม.ที่ผมใช้ไป

ข้อเสียคือเราเป็นเป็ดที่ทำทุกอย่างได้ แต่ไม่เทพซักอย่าง เรื่องโค้ดเราก็ไม่ได้แม่น architecture หรือ design pattern ขนาดนั้น อีกอย่างก็เน้นเร็วไว้ก่อนมากกว่า code quality พอยิ่งทำยิ่งต่อเติมยิ่งเหมือนบ้านพัง ๆ ซ้ำร้ายคือทำ unit test ไม่เป็นอีก ไม่มีเวลาหัดแล้วด้วยตอนนั้น ช่วงท้าย ๆ นี่คือพังมาก เพิ่มฟีเจอร์นึง 30 นาที มานั่งแก้บั๊กที่ตามมาอีก 4 ชม. จะ refactor ก็คงหมดไปหลายวันอีก ยอมรับครับว่าโดยรวม code ในเกมก็ไม่ค่อยมีคุณภาพหรอก

จริง ๆ ไม่ใช่แค่เรื่อง code เรื่องความรู้หมอและ design เราก็ไม่ได้เทพ อย่างความรู้หมอ แม้จะรีวิวไกด์ไลน์อย่างละเอียดยิบคิดว่าทำตามทุกอย่างแล้ว แต่ในโลกความเป็นจริง การปฏิบัติงานจริง ๆ มันก็มีรายละเอียดปลีกย่อยที่ไกด์ไลน์ไม่ได้เขียน ก็ต้องอาศัยเพื่อนหมอมาช่วยเป็นที่ปรึกษาให้ (ขอขอบคุณทุกท่านมา ณ ที่นี้อีกครั้งครับ) เรื่อง design คือก็ยอมรับว่ามันก็ไม่ได้สวยขนาดนั้น digital painting skill ผมก็ค่อนข้างพัง วาดตัวละครเป็นวัน ออกมาไม่ได้สวยเท่าไหร่อีกฮะ

อย่างไรก็ดี โปรเจคท์นี้ก็ไม่ได้ต้องการ coding และ design skills ที่สูงอะไรมาก ก็เลยพอเข็นออกมาจนจบได้ครับ

.

User experience vs. development time

เรื่อง user experience (UX) เป็นสิ่งหนึ่งที่โดนโจมตีค่อนข้างเยอะครับ อย่างหนึ่งก็คือเรื่องคุณภาพของ tutorial level และ user interface (UI) ซึ่งสิ่งเหล่านี้มันก็ใช้เวลาในการทำนะครับ ดังนั้นมันก็เป็นความยากที่เราต้องหาจุดสมดุลดี ๆ ว่าจะให้เวลากับ UX ที่ดีมากน้อยขนาดไหนจึงจะคุ้ม อย่างเกมนี้เอง จริง ๆ สาเหตุที่ UI การเลือกคำสั่งมันต้องเป็นแบบนี้ เพราะโปรเจคท์ต้นแบบที่ผมทำตามมันเป็นแบบนี้ กว่าที่ skill ผมจะมากพอที่จะทำ UI แบบไหนก็ได้มันก็ช่วงท้ายแล้ว ถ้าจะแก้ก็ต้องรื้อเยอะมาก เป็นต้นครับ
.

3. ผลลัพธ์

3.1 ผลลัพธ์ของการทำ marketing

หลังทำเกมเสร็จ ผมก็พยายามทำ marketing หลาย ๆ อย่าง ขอสรุป lessons learned ดังนี้ครับ
.
Facebook Ads

  • การติด tracking code ในเกมนี่เป็นสิ่งสำคัญมาก ๆครับ ไม่งั้นเราจะไม่สามารถแน่ใจได้เลยว่า ads ที่เราซื้อไปได้ผลจริง การติด code ยังช่วยให้เราทำ custom audience เพื่อยิง ads อื่น ๆ ตามได้ภายหลัง
  • คน engage กับ gameplay trailer มากกว่า launch trailer อาจเพราะคนดู launch trailer แล้วไม่เข้าใจว่ามันคืออะไร แต่ดู gameplay trailer แล้วเขาเข้าใจว่านี่คือสิ่งที่มาจากวีชาชีพเขา
  • ลงโฆษณาไปเลยครับทั้ง Facebook, Instagram, และ Audience Network สุดท้ายแล้ว cost per result ออกมาเท่า ๆ กัน
  • กลุ่มประเทศ emerging market โดยเฉพาะละตินอเมริกาและเอเชียตะวันออกเฉียงใต้ เป็นกลุ่มที่ engage กับ ads เราค่อนข้างเยอะ ผมยังไม่แน่ใจเหมือนกันครับว่าเป็นเพราะอะไร
  • หลังจากปล่อย ads ไประยะหนึ่ง ads ผมก็ถูกแบนบอกว่ามีเนื้อหาที่รุนแรง (จริง ๆ ก็คือ gameplay trailer น่ะครับ ไม่รู้รุนแรงตรงไหน) appeal ไปทีมงาน Facebook ก็ไม่ตอบ ประกอบกับ cost per result ก็ขาดทุนมาซักระยะแล้ว ผมเลยหยุดโฆษณา Facebook ไป รวมทั้งสิ้นผมหมดเงินกับ Facebook ads ไป 71,679.52 บาท
  • สิ่งที่รู้สึกทำพลาดไปคือวันที่เปิดตัวผมแชร์ออกจาก Facebook ส่วนตัว ทั้ง ๆ ที่จริง ๆ น่าจะทำเพจตั้งแต่แรกแล้วใช้ Facebook ส่วนตัวแชร์มา แต่ตอนนั้นเป็นอารมณ์แบบ ไม่ต้องมีเพจก็ได้มั้ง คงไม่ซื้อโฆษณา สุดท้ายต้องทำอยู่ดี

.

AdWords

อันนี้ผมไม่ได้ทำอะไรมาก ไม่ได้ track install ด้วยครับ แต่ 3 เดือน ตก CPC 1.8 บาท ได้มา 3,000 คลิก ผลลัพธ์ก็คล้าย ๆ Facebook คือเป็นกลุ่มประเทศ Emerging market เป็นหลักที่ engage กับ ads เรา สรุปแล้วหมดเงินค่า AdWords ไป 5,360.94 บาท

.

สื่อต่าง ๆ, influencer, community

  • ผมพยายามส่ง Press release ไปยังเว็บไซต์ข่าวและ blogger ที่เกี่ยวข้องกับเกมทั่วโลก ทั้งสื่อที่โฟกัสเกมโดยรวม, เกมมือถือและอินดี้เกม รวมไปถึงสื่อที่เกี่ยวกับเทคโนโลยี, medical education, medical apps ฯลฯ รวมทั้งสิ้นกว่า 50 ราย ไม่มีใครติดต่อกลับหรือเขียนข่าวถึงแม้แต่คนเดียว 😅
  • ผมพยายามพิชเกมให้ Facebook Page ต่าง ๆ ที่น่าจะเกี่ยวข้อง โดยเฉพาะเพจที่เกี่ยวกับการแพทย์ที่หมอน่าจะตาม ไปจนถึงเพจของสมาคมนักศึกษาแพทย์ต่าง ๆ ส่วนใหญ่จะมีคนอ่าน แต่ไม่เกิดอะไรขึ้นตามมา
  • Facebook Group ถ้าเป็น medical community จะแทบไม่มีใครสนใจ แต่ถ้าเป็น group ของ indie game developer จะได้รับความสนใจระดับนึง แต่พวกเขาก็ไม่ใช่ target group เราไงฮะ
  • Reddit นี่มีกฎข้องข้างเข้มงวดและพวกแปลก ๆ เยอะ เคยโพสท์ในกลุ่มใหญ่กลุ่มนึงแล้วได้รับกลับมาแต่ hate speech (เดาว่าเขาไม่ชอบที่มาขายของ) สุดท้ายผมเลยโพสท์แค่ subreddit เดียวเกี่ยวกับหมอที่เล่นเกม ได้รับเสียงตอบรับที่ค่อนข้างโอเคเลยครับ
  • Quora ไปตอบคำถามอยู่สองข้อ (ตัวอย่าง) ได้ traffic กลับมาเล็กน้อย แต่ก็ชอบอยู่ที่คน upvote เยอะ
  • ผมพยายามส่งเมลไปหานักวิชาการที่ทำเรื่อง serious games, คนที่อยู่ในวงการนี้, คนที่ทำ startup เกี่ยวกับ medical education ก็มีตอบกลับมาบ้าง แต่สุดท้ายก็ไม่ได้เกิดอะไรขึ้นเช่นกัน

.

3.2 ยอดดาวน์โหลดและยอดซื้อ

เกม release บน app store วันที่ 24 เม.ย. ปัจจุบันก็ผ่านมาราว 2 เดือนครึ่ง ผมคิดว่ายอดคงไม่เพิ่มไปจากนี้เท่าไหร่แล้ว เพราะก็หยุด ads แล้ว (เหลือ AdWords ไว้นิดหน่อย) สรุปยอดทั้งสิ้นเป็นเหมือนกราฟนี้ครับ ช่วงแรกที่ขายดี ๆ ก็คือช่วงที่เปิดตัวเกมใหม่ ๆ แล้วคนแชร์ออกเยอะมากในไทย

ณ วันที่ 8 ก.ค. 2561 มียอดดาวน์โหลดทั้งหมด 16,547 ครั้ง (iOS 10,368, Android 6,179) ยอดซื้อ 2,148 ครั้ง (iOS 1,597, Android 551) คิดเป็น conversion rate ราว 13% ตีเป็นเงินไทยก็ราว 212,652 บาท ซึ่งต้องหัก 30% ให้ App Store และ Play Store ดังนั้นเหลือถึงผม 148,856 บาท หักต้นทุนค่า ads ไป 77,040 บาท และต้นทุนการพัฒนาอีก 9,247 บาท ดังนั้น กำไรสุดท้ายคือ 62,569 บาทครับ ซึ่งคิดแล้วคือกำไรประมาณ 1/3 ของรายได้เท่านั้น

จากยอดข้างต้น คิดเป็นกำไรต่อชม.ที่ทำงานไปก็คือ 104 บาท ถ้าทำงานวันละ 6 ชม. 22 วันต่อเดือน ก็จะเป็นรายได้ 13,728 บาทต่อเดือน ซึ่งไม่พอจะทำเป็นงานประจำแน่นอนครับ แต่อันนี้ถ้ามองว่าทำวิทยานิพนธ์ด้วยแล้วมีรายได้ด้วยมันก็โอเคนะครับ และก็บรรลุวัตถุประสงค์หลักที่จะได้แสดงทักษะที่ผมมีแล้วล่ะ

อย่างหนึ่งที่ต้องเข้าใจคือเนื่องจากเกมสามารถเป็นไวรัลเล็ก ๆ ในกลุ่มบุคลากรทางการแพทย์ในไทยได้ ผมว่าส่วนหนึ่งเป็นเพราะเขารู้ว่าผู้พัฒนาเป็นคนไทย และก็มีเพื่อนพี่น้องหลายคนช่วยแชร์ ถ้าไม่มีจุดตรงนี้ช่วย รายได้อาจจะต่ำกว่านี้เยอะครับ ซึ่งถ้าแยกตามประเทศ ก็จะแบ่งสัดส่วนรายได้เป็นดังนี้

.

3.3 ถ้าอยากทำเกมแบบนี้แล้วมีกำไรต้องตั้งเป้าเท่าไหร่

หากท่านใดก็ตามจะทำเกมสำหรับตลาดบุคลากรทางการแพทย์เหมือนที่ผมทำ (จริง ๆ ตลาด niche อื่นก็อาจจะคล้ายกัน) สมมติอยากมีทีมซัก 3 คน จ้างคนละ 50,000 บาทก็เป็น 150,000 บาทต่อเดือน (หรืออยากทำคนเดียวแล้วมีรายได้เท่ากัน) เนื่องจาก margin มันแค่ 1/3 ดังนั้นก็ต้องมี revenue ราว 450,000 บาทต่อเดือนครับ สมมติจะขายราคาเท่าเดิมคือ 100 บาท ก็ต้องมีลูกค้า 4,500 คนต่อเดือนครับ นี่คือแค่ให้เท่าทุนค่าจ้างคนด้วยนะครับ ยังไม่ทันมีกำไรเลย ถ้าคิดว่า conversion rate คือ 10% ก็ต้องมีคนเล่นเกมเรา 45,000 คนทุกเดือน

ใน US มีนักศึกษาแพทย์เรียนจบต่อปีราว 20,000 คน ไทยราว 3,000 คน ประเทศอื่น ๆ ผมไม่มีข้อมูล และมันก็เป็นไปได้ยากอยู่แล้วที่เราจะไปมี market share 100% ทุกคนซื้อของเราหมด ที่จะสื่อก็คือ มันไม่ง่ายที่จะหาคนในสายวิชาชีพนี้ 4,500 คน มาจ่ายเราเดือนละ 100 บาทได้ แม้จะเป็นตลาดโลกก็ตาม เพราะงั้นโอกาสเป็นธุรกิจได้ริบหรี่มาก ยกเว้นไปสาย non-profit

โดยปกติ ถ้าตลาดที่ market size เล็ก กำไรต่อหน่วยมันก็ต้องสูง ธุรกิจจึงจะอยู่ได้ ปัญหาของการทำเกมเฉพาะกลุ่ม (เช่น healthcare) คือผู้เล่นจะคาดหวังคุณภาพระดับสูง และมองว่าเกมที่เราทำมีราคาที่สูงเกินกว่าคุณภาพที่ได้ เนื่องจากผู้เล่นได้ผ่านการเล่นเกมสำหรับตลาดทั่วไปที่มีทุนทำ production สูง ๆ มาเยอะ ผู้เล่นจำนวนหนึ่งไม่ได้มองว่าเนื่องจาก market size ของเกมเพื่อความบันเทิงนั้นใหญ่มาก ๆ (คาดการณ์กันว่าจะมีผู้ใช้ smartphone กว่า 5 พันล้านคนในปี 2019 เทียบกับจำนวนนักศึกษาแพทย์แต่ละปีดูสิครับ) ผู้พัฒนาจึงลงทุนเยอะ ๆ ทำเกมดี ๆ มาแล้วขายราคาถูกได้ครับ แม้จะเป็น Free to play ก็ตาม (เพราะเดี๋ยวก็มีจังหวะที่ทำให้เราอยากจ่ายอยู่ดี) แต่เกมสำหรับตลาด niche มันทำแบบนั้นไม่ได้

แต่เรื่องนี้มีรายละเอียดค่อนข้างเยอะครับ ไว้มีโอกาส ผมจะมา discuss เรื่อง potential business model โดยละเอียดใน blog ถัด ๆ ไปครับ

.

3.4 ผลลัพธ์ที่ไม่ใช่ตัวเงิน

แม้ว่าผลลัพธ์ในรูปตัวเงินจะไม่เยอะ แต่ก็มีสองสิ่งที่ผมได้กลับมาที่ผมว่ามีค่ามาก ๆ

การค้นพบสิ่งที่ทำแล้วสนุกมาก ๆ

ก่อนเริ่มโปรเจคท์นี้ผมไม่ได้คิดอะไรเยอะเลยครับ แค่อยากทำโปรเจคท์ที่ไม่ได้ยากมากและได้แสดง skills ที่มีแบบที่ผมบอกไป แต่หลังจากทำไปได้ซักพัก ผมรู้สึกว่าโปรเจคท์นี้เป็นสิ่งที่เติมเต็มผมมาก เพราะมันรู้สึกเหมือนหลาย ๆ skills ที่เราสั่งสมมาตลอดชีวิต มันได้ถูกปล่อยออกมาในโปรเจคท์นี้ เหมือนทำให้เรารู้สึกว่าเราเกิดมาเพื่อสิ่งนี้แหละ

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

.

กำลังใจจากแฟนเกมทั่วโลก

คือเกิดมาก็ไม่เคยทำโปรเจคท์ที่มีประโยชน์ต่อคนในหลาย ๆ พื้นที่ของโลกแบบนี้มาก่อน รู้สึกดีทุกครั้งเวลามีคนรีวิวดี ๆ ใน store หรือเวลามีคนหลังไมค์มาตามช่องทางต่าง ๆ ว่าชอบเกมมาก เป็นกำลังใจให้ หรือว่าอาสาช่วยเรื่องต่าง ๆ เช่น แปลเป็นภาษาโปรตุเกส สิ่งเหล่านี้ทำให้ผมรู้สึกว่าสิ่งที่ตนเองทำมันมีคุณค่า ก็ยิ่งเติมเต็มเข้าไปอีก

ภาพนี้ผมแคปไว้นานแล้ว ปัจจุบันมีมากกว่านี้เยอะครับ ^.^

.

4. บทสรุป

แม้ว่าการทำเกมจะเป็นสิ่งหนึ่งที่ผมมี passion ที่จะทำ แต่เนื่องจากผมไม่สามารถทำให้มันตอบโจทย์ทางธุรกิจได้ และผมเองก็มี passion ด้านอื่น ๆ ที่ผมอยากจะทำอยู่ ดังนั้นจึงต้องพักเรื่องทำเกมไปก่อนครับ แต่อย่างไรก็ไม่ได้อยากทิ้งไปเลยนะครับ อย่างน้อย ๆ ก็ทำเป็นงานอดิเรก side-project อะไรไป ก็ไว้มีโอกาสก็คงได้มาพัฒนา Resus Days ต่อ หรือไม่ก็เป็น medical games อื่น ๆ ต่อไปครับ ก็อยากให้คอยติดตามกันนะครับ ติดตามผ่านทาง Facebook Fan page ของเกมก็ได้ครับ 🙂

สำหรับโอกาสหน้า ผมอยากมา discuss มากว่า challenge ต่าง ๆ ที่ผมเจอในการทำ medical serious games มีอะไรบ้าง ผมว่ามันมีความเฉพาะตัวหลาย ๆ อย่างที่ไม่เหมือนวงการอื่น ๆ ไว้มีโอกาสกลับมาเขียนนะครับ 🙂

You Might Also Like

2 Comments

  • Reply นวทรัพย์ 17 November 2018 at 09:47

    บทความนี้ช่วยได้เยอะจริงๆ ครับ กำลังหาข้อมูล อยู่ แบบว่าเพิ่งเริ่มแล้วจะเริ่มเรียนคอส อะไรดีจาก Udemy มีพื้นฐาน C# จากหนังทีซื้อมาจากร้านขายหนังสือในห้าง + กับไปยืนอ่านและ นั่งอ่าน จะลองเรียนคอสที่แนะนำตามบทความ ผฃแต่อยากรู้ คอสเรียนนี้มัน มีแบ่งเป็น section ด้วยเหรอ ถ้าครอสเรียน 10 section ก็เป็น 3000 หรือ 300กันครับ

    • Reply Rath Panyowat 18 November 2018 at 05:22

      ไม่แน่ใจว่ามีคอร์สแบบที่จ่ายแยกเฉพาะ section ไหม แต่เท่าที่ผมเรียนส่วนใหญ่ก็จ่ายครั้งเดียวเข้าได้ทุก section ครับ

    Leave a Reply