Orientation 2018 กับการสร้าง SIT Dino ที่ไม่ได้ให้แค่การเป็นเกมบนเว็บไซต์

Chotiga Pianpatanavit
Alchemist
Published in
4 min readAug 25, 2018

--

หน้าแรกของเกม SIT Dino ที่น่ารักที่สุดในสามโลก

⸻ วันนั้นเป็นวันแรกของการประชุมงาน SITOrientation2018

เป็นวันหนึ่งในช่วงกลางเดือนมิถุนายน และก็เป็นช่วงปิดเทอมด้วย วันนั้นเป็นวันที่ทีม Alchemist ทั้งหมดมารวมตัวกันเพื่อวางแผนสิ่งที่จะทำต่อจากนี้ ซึ่งก็มีหลายโปรเจ็คด้วยกัน อาทิ KMUTT Passport, ASK รวมถึง Orientation ซึ่งแปลเป็นไทยได้เป็น ปฐมนิเทศ ซึ่งมันก็คือ โปรเจ็คเกมในวันปฐมนิเทศ นั่นเอง

เกมในวันปฐมนิเทศมีไว้เพื่ออะไรกันนะ?

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

ปีที่แล้วตอนยังเป็นเด็กน้อยปีหนึ่ง ก็มีเกมในวันปฐมนิเทศแบบนี้เหมือนกัน

จากที่คิดว่ามันต้องน่าเบื่อไปทั้งงานแน่ๆ — จนกระทั่งช่วงท้ายๆ จู่ๆก็มีเกมบนเว็บไซต์ให้เราเข้าไปเล่น เป็นเกมเขย่าโทรศัพท์ เลือกตัวละครเสร็จก็เขย่า แล้วก็จะได้แต้มไปโหวตให้อาจารย์แต่ละคน อาจารย์ท่านไหนที่มีแต้มสูงสุดก็จะได้รับเชิญออกมาพูด เรียกได้ว่าเป็นวิธีที่ทำให้อาจารย์มีส่วนร่วมกันกับนักศึกษาได้แบบสนุกสนานเป็นกันเอง ได้ยินเสียงหัวเราะและรอยยิ้มกลางงานน่าเบื่อๆแบบนี้ บอกได้เต็มปากเลยว่าเป็นหนึ่งในหลายๆสิ่งที่ทำให้เรารู้สึกประทับใจกับไอทีบางมดแห่งนี้มากๆ ใครจะไปคิดล่ะว่างานปฐมนิเทศจะมีเกมแบบนี้ด้วย โคตรเท่!

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

หยุดช่วงย้อนอดีตแล้วกลับมาที่งาน⸻

(อารมณ์แบบดีดนิ้วดังเป๊าะที่ข้างหูให้หลุดจากภวังค์)

วันประชุมงานวันแรกนั้น สิ่งที่ทีมวางไว้มีเพียงแค่เอนจิ้นทำเกม Phaser 3 หรือ Phaser.js สำหรับทำเกมขึ้นเว็บไซต์, ใช้ Node.js ในการ Build & Run, Socket.io สำหรับการใช้งานฟังก์ชันต่างๆ การแสดงผลแบบ Real-time รวมถึงการสร้างห้องเพื่อรองรับคนด้วย ส่วนธีมที่ได้รับมาคือไดโนเสาร์

ทีม Orientation วางหน้าตาเกมกันคร่าวๆกันว่าจะมีอะไรบ้าง (จริงๆในบรรดาเราๆปีสองก็คุยฟุ้งเรื่องเกมนี้กันตั้งแต่ตอนนั่งกินข้าวเที่ยงเลยล่ะ ละคุยกันจริงจังมากเว่อร์) หลังจากถกหาข้อสรุปที่เหมาะสมอยู่นาน โดยมีการวางไว้ 2 Phase คือ

หนึ่ง ช่วงก่อนวันปฐมนิเทศ จะเป็นเกมเลี้ยงไข่ไดโนเสาร์

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

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

ภาพร่างเกมรูปแรกๆทำให้พอเห็นหน้าตาคร่าวๆได้ว่าเป็นยังไง โดยวาดในโทรศัพท์ Samsung Galaxy Note 5 ลูกรักของลาร่าเองค่ะ

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

ภาพร่างในช่วงหน้าต่อสู้กับบอสไดโนเสาร์ ลายมือสวยมากๆค่ะ (ประชด)

จากภาพร่างเหล่านั้นก็พอทำให้เราได้อ๋อและเข้าใจคร่าวๆแล้วว่า เกมของเราจะมีอะไรบ้าง ทั้งหน้าตา ฟังก์ชันต่างๆที่ต้องมี เป็นต้น พอทุกคนในทีมเข้าใจตรงกันแล้ว ขั้นต่อไปก็คือลงมือทำงาน … แต่เอ๊ะ ที่ผ่านมาเรายังไม่เคยใช้ Phaser 3 เลยนะ แล้วจะทำได้ยังไงกันล่ะ? ที่ผ่านมาก็เคยใช้แค่ Phaser 2 (ตอนเกมรามรัน) แล้วเวอร์ชั่น 3 มันแตกต่างจากเวอร์ชั่น 2 เยอะไหม? รอบนี้ต้องเขียนแบบ ES6 ด้วย แล้วมันคืออะไรง่ะ? ไหนจะ Socket.io อีก น้องงงไปหมดแล้วค่ะ

ในขณะที่เดฟหญิงคนเดียวในกลุ่มอย่างอิฉันกำลังนั่งเอ๋อตาแป๋วแหว๋วเป็นปลาทองในขวดโหล พี่เบ๊นซ์ก็พูดขึ้นมาว่า ยังไม่เคยใช้มาก่อน ก็ลองทำ Hello World สิ

… ม .. มันคืออะไรหรอคะ?

ตามความเข้าใจของเราหลังจากได้ฟังพี่เบ๊นซ์อธิบาย

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

(ที่มาของประโยคนี้แบบเต็ม)

ซึ่งเราก็ต้องมาทำความเข้าใจกับตัวภาษาที่ใช้เขียนก่อนกว่าจะแสดงผลประโยคนี้ได้ เช่นเดียวกับ Phaser 3 ที่เราจะต้องใช้ เราก็ต้องไปเรียนรู้และทำความรู้จักกับมันจนเข้าใจก่อนถึงจะเขียนเกมได้

ซาลาร่ากับการ Hello World

เรียกได้ว่ามืด 20 ด้าน (ยืมคำพูดไนล์มา) แต่ก็พยายามเริ่มจากตัว Phaser 3 ที่เราจะใช้เขียนเกมก่อน วันแรกที่เริ่มนี่ก็แอบท้อ ทั้งวันหมดไปกับการ Clone ตัวอย่างต่างๆมาเพื่อดูโค้ด การติดตั้ง Node.js ลงในตัวเกม การทำความเข้าใจกับการเขียนแบบ ES6 การทำความเข้าใจกับการแบ่ง State ต่างๆของ Phaser 3 บลาๆๆ

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

ส่วนวันที่หก … พบว่าเขียน Phaser ผิดเวอร์ชั่นมาตลอด เผลอทำด้วย Phaser 2 จ้า (ยิ้มแห้ง) แต่ถ้ามองในแง่ดี อย่างน้อยเราค้นคว้าและเห็นโค้ด Phaser 3 แบบผ่านๆ แถมได้ทำความรู้จักกับการเขียนแบบ ES6 (แม้จะใช้เป็นแค่ let กับ const) ด้วยนะ แหะๆ

ประชุมงาน แบ่งงาน คุยกันให้เห็นภาพตรงกัน

และแล้วการประชุมทุกสัปดาห์ก็วนเวียนมาอีกครา

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

ข้อดีของการแบ่งงานเป็น Task ให้เห็นภาพโดยละเอียดคือทำให้เราได้เห็นว่ามีอะไรที่ต้องทำบ้าง ช่วยให้เราจัดระเบียบในตัวเองได้ว่าทำส่วนนี้เสร็จจะทำส่วนไหนต่อ วันนี้จะทำอะไรและพรุ่งนี้จะทำอะไร การทำแบบนี้ทำให้เพื่อนๆฝ่าย Dev รวมถึงตัวเราเองทำงานกันเป็นระบบมากขึ้นเยอะเลย

หน้าตา Task งานทั้งหมดของทีม Dev จะเห็นได้ว่ามีทั้งชื่อฟังก์ชันต่างๆ รวมถึงการประเมินเวลาในการทำงานคร่าวๆด้วย

ซึ่งทุกครั้งที่ประชุมงาน ฟังก์ชัน ระบบของตัวเกม หน้าตาก็จะเปลี่ยนไปเรื่อยๆ เรียกได้ว่าเป็นรูปเป็นร่างขึ้นเรื่อยๆนั่นแหละ หลอด Mood จะไว้หน้าแรกไหม? กดดูตรงชื่อแล้วจะมีอะไรแสดงบ้าง? ระบบ Energy พร้อมตัวเลขจะอยู่ตรงไหน? ระบบ EXP จะเป็นยังไง? ยิ่งเราคุยกัน ทิศทางของเกมก็มีแต่จะดีขึ้น ดีสุดๆไปเลย ❤

ภาพหน้า UI จากฝ่าย Design ของทีมเกม

คำว่าพยายามไม่เคยทำร้ายสักคนที่ตั้งใจ

(อยากจะเปิดเพลง Shonichi ประกอบ)

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

ความรู้สึกที่ได้เรียนรู้อะไรใหม่ๆมันน่าตื่นเต้นอยู่เสมอเลยเนอะ

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

และแล้ว ซาลาร่าก็ทำได้ (เย้)

ภาพแห่งความสำเร็จ (ซ้าย: หน้าเกม, ขวา: รูป UI ของเกมจากฝ่าย Design)

แม้จะไม่เป๊ะ แต่กว่าจะมาถึงจุดนี้เราก็เข้าใจถึงการใช้ Phaser 3 ในระดับที่มากพอจะดราฟเกมตัวเองให้ออกมาเป็นหน้าตาแบบนี้ได้ รวมถึงการเรียกใช้ฟังก์ชันต่างๆ ถึงแม้จะเป็นแค่เป้าหมายเล็กๆแต่สำหรับเราแล้วมันคือภาพแห่งความสำเร็จจริงๆ

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

เรียกได้ว่างานดราฟ UI ตัวเกมเราจะรับหน้าที่เอง ทั้งการ Preload รูปเข้ามา, การเซ็ต x y ให้กับรูป, scale ของรูป, ฟังก์ชันการเปิดปิดการแสดงผลของรูป รวมถึงฟังก์ชัน Responsive …

ฟังก์ชัน Responsive ตัวร้าย!

ด้วยความที่เราโค้ดเกมและรันบนจอคอมพ์มาตลอด ทำให้เราเห็นการแสดงผลของตัวเกมกับทุกหน้าจอโทรศัพท์ได้ไม่มาก แต่ละครั้งที่คนอื่นเข้าเว็บมาลองก็ล้วนมีปัญหากับ Responsive ของหน้าจอ แล้วเราเป็นคนที่รับทำในส่วนนี้ไง แก้วนไปค่ะ

หลังจากที่ตบตีกับมันจนท้อไปหลายที ก็แก้จนผ่านไปได้ด้วยดี โคตรภูมิใจตัวเองเลย เก่งมากแล้วนะคะลาร่า ❤

ทั้งหมดทั้งมวล เกือบทุกอย่างที่เห็นในตัวเกมคือฝีมือเราเอง เรียกได้ว่าค่า x y คือมือซ้าย ค่า scale คือมือขวา สมองคือ setVisible() หัวใจคือฟังก์ชัน Responsive ออกมาเป็นพลังแห่งซาลาร่า (เว่อร์)

ยังไม่นับฟังก์ชันอีกหลายตัวที่เป็นส่วนช่วยให้เกมมันทำงานได้ รวมถึงฟังก์ชันบางตัวที่เขียนได้แล้วยังขนลุกตัวเองว่าเขียนได้ไงฟะ!

ยอมรับเลยนะว่าการมาทำตรงนี้ทำให้ Logic เราดีและไวขึ้นจริงๆ ;)

หน้าตาโค้ด Phaser 3 ที่เขียนขึ้นมา

ในระหว่างนี้ เอนจิ้นที่ต้องใช้งานก็มีเพิ่มขึ้นมาอีกมาก อาทิ Vue.js สำหรับแสดงผลบนจอโปรเจ็คเตอร์, React, Axios สำหรับดึงค่าจาก Database โดยตัวที่ใช้คือ MariaDB แต่เราที่หนักไปทางการโค้ด Phaser แล้วเลยไม่ได้มาช่วยทางนี้ซักเท่าไหร่ เลยไม่ได้รู้เรื่องอะไรทางนี้เท่าไหร่เลย ฮือๆ

แต่ละครั้งที่ประชุม ก็ได้อะไรใหม่ๆกลับมาเสมอ

“วันนี้เราจะมาเขียน Blueprint กันนะ”

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

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

พูดถึงระดับของ A-DAPT Blueprint ก่อน ซึ่งจะพูดจากบนสุดลงลึกไปเรื่อยๆ

  • Acceptance Test หรือที่ย่อว่า Test คือหัวข้อของสิ่งที่จะเกิดขึ้น

ตามรูปด้านล่างแม้จะพูดถึงระบบเลือกบอสไดโนเสาร์ไปรอหน้าต่อสู้เหมือนกัน แต่เหตุการณ์ที่เกิดขึ้นไม่เหมือนกัน อันแรกคือกรณี User มีการเลือกบอส ก็จะส่ง User ไปห้อง Socket ที่เลือกไว้ แต่หากไม่ได้เลือกล่ะ? ก็จะเป็นอีก Test หนึ่งนั่นคือกรณีที่ User ไม่ได้เลือกบอส ทำให้เราต้องมาคิดเพิ่มว่าเราจะทำยังไง ทำให้เกมของเราครอบคลุมสภาพแวดล้อมอื่นๆที่จะเกิดขึ้นได้มากขึ้น ซึ่งเราได้วิธีแก้ปัญหาเป็นการ Random ให้นั่นเอง (ซึ่งก็ไม่คิดเลยว่าส่วนนี้จะกลายมาเป็นระบบกันตายในงานวันจริง เดี๋ยวจะพูดอีกทีนะ)

  • UI (User Interface) คือหน้าตาที่ User จะเห็น
  • State หรือส่วนที่เป็นโค้ดและฟังก์ชันในการทำงาน ทำให้เราเห็นได้ว่า การที่ User จะเปลี่ยนจากหน้านี้ไปหน้านี้เราต้องมีอะไรบ้าง มีการเก็บค่าหรือเรียกใช้อะไรไหม
  • API (Application Programming Interface) เป็นส่วนที่เชื่อมระหว่างโค้ดกับดาต้าเบส หรือบ้างก็เรียกใช้ฟังก์ชันอื่นๆนอกเหนือจากโค้ดของตัวเกม อาทิ การดึงข้อมูล การควบคุมการเปลี่ยนหน้าผ่าน Socket
  • Database สำหรับเก็บข้อมูล User ไว้และเรียกใช้เมื่อต้องการ อะไรที่เกี่ยวกับดาต้าเบสก็จะเขียนในส่วนนี้
  • 3rd Party จะพูดให้เข้าใจง่ายๆคือสิ่งที่อยู่นอกเหนือจากนี้ เราไม่ได้เขียนโค้ดขึ้นเอง แต่นำมาเรียกใช้ อย่างเช่นการใช้งานระบบ Login ด้วย Facebook นั่นเอง
ภาพแสดง Blueprint ของระบบเลือกบอสไดโนเสาร์เพื่อต่อสู้ด้วย รวมถึงการสุ่มบอสในกรณีที่ไม่ได้เลือก

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

ด้วยความที่การเขียน Blueprint มันก็เปลืองกระดาษอะนะ #ทีมเกมทำให้โลกร้อน

บางวันที่ไม่เหลือกระดาษ ก็กลายเป็นว่าต้องติดบนกระจกซะงั้น (ฮา)

การเขียน Blueprint มิติใหม่ แปะบนกระจกไปเลยค่ะ!

ส่งเกมออกสู่สายตาโลกภายนอก

และแล้ววันนี้ก็มาถึง … วันปล่อยเกม SIT Dino นั่นเองงงงงงงงงง (จุดพลุ)

ภาพที่แคปจากโทรศัพท์เราเอง เจ้า saguins เลเวล 7

ระหว่างที่ทำนี่ก็มีเพื่อนหลายคนแวะมาบอก

“ลาร่า อยากเล่นเกมเลี้ยงไข่แล้วอะ” บ้างก็ “เมื่อไหร่จะเปิดให้เล่น อยากเลี้ยงงงง”

การเรียกร้องของท่านสิ้นสุดลงแล้วค่ะ!

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

ทั้งๆที่เป็นช่วงปล่อยเกมแท้ๆแต่กลับไม่ค่อยรู้สึกตื่นเต้นเลย คงเป็นเพราะอยู่กับเกมนี้มานานแล้วล่ะมั้งคะ อยู่ด้วยกันมาตั้งสองเดือนแน่ะ (ฮา)

วันนี้ที่ลอยคอ เอ้ย! รอคอย

ความรู้สึกที่ได้เห็นโลโก้เกมตัวเองที่โชว์หราอยู่บนจอท่ามกลางผู้คนนับร้อย เป็นอะไรที่สุดยอดมากๆ

วันงาน วันจริง วันนี้ที่รอคอย วันที่จะชี้ว่าสิ่งที่ทำมา จะรอดหรือจะร่วง

เข้ามาช่วงเกมจะเริ่มพอดี ได้เห็นลำดับเกมตัวเองตั้งแต่ต้นจนจบงาน …

หน้าซีด..

เกมบัคตั้งแต่จบการเลือกบอสครั้งแรก พอจะเลือกบอสครั้งที่สองนั้นเกิดการบัคทำให้มีตัวที่เลือกไม่ได้มากกว่า 3 ตัว ได้ไปฟังจากพีเบ็นซ์ตอนจบงานได้ความว่า ข้อมูลที่ส่งมาหา Socket มันเยอะและเป็นก้อนใหญ่เนื่องด้วยในห้องรับรองมี User จำนวนมาก ทำให้ตอนปิดรับข้อมูลมีข้อมูลตกค้างที่ยังส่งมาไม่ถึง ทำให้ส่วนที่ตามมานั้นทับกับที่มีอยู่ กลายเป็นว่าข้อมูลที่เก็บไว้ในดาต้าเบสบึ้มไปเลย … โอ้

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

โล่งใจ…

ขอกราบขอบคุณการเขียน A-DAPT Blueprint มา ณ ที่นี้ด้วยค่ะ (ฮาาาาา)

จบจากงานนี้ช่วงบ่ายก็ได้เอาเรื่อง SIT Dino นี้ไปพูดต่อในงาน BrownBag ด้วย มีน้องๆเข้ามาฟังจนเต็มห้อง Train 4 เลยทีเดียว ขอบคุณที่มาฟังพี่พูดนะคะ ❤

ปิดท้ายด้วยรูป Github ตัวเอง ที่เขียวๆช่วงขวามือก็นั่นแหละ ช่วงทำงาน SIT Dino นั่นเอง

โปรเจกต์นี้สอนให้รู้ว่า

  • จงอย่า Hello World ผิดอย่าง เพราะมันจะทำให้เสียเวลาที่ต้องเรียนรู้เพิ่ม
  • ได้ฝึกการเขียนโค้ดที่เป็นระเบียบมากขึ้น (อย่างน้อยก็มากกว่าเกมก่อน ฮาา) รวบอะไรได้รวบ รวมถึงเป็นครั้งแรกที่ได้ลองเขียนแบบ OOP สุดยอดไปเลย
  • คุยกันเยอะๆ คุยกันดีๆ เพื่อให้งานเราเดินไปในทางเดียวกัน
  • การจัดการงานเป็นระบบล้วนส่งผลดีต่อตัวเอง ต่องาน ต่อผู้อื่น
  • ได้เรียนรู้การใช้ Tools ใหม่ๆ ทั้งเอนจิ้นเกมที่ใช้ หรือแม้แต่โปรแกรมคุยงานอย่าง Slack ซึ่งโคตรจะคูล
  • ไม่มีอะไรที่เราจะผ่านไปไม่ได้ พยายามเข้าไว้ เหนื่อยก็พัก ไม่ไหวก็นอน อย่าหักโหมเมื่อพร้อมแล้วก็ลุยต่อได้เลยยย
  • จะทำอะไรอยากให้คำนึงในมุมมองของ User ไว้เสมอว่ากับสิ่งๆหนึ่งมันจะสามารถเกิดเหตุการณ์แบบไหนได้บ้าง ยากไปซับซ้อนไปรึเปล่า
  • ได้อะไรมามากมายเกินคาดไว้มากๆ การได้เรียนรู้สิ่งใหม่ๆ จัดการตัวเองได้เป็นระบบมากขึ้น ได้การทำงานใหม่ๆมา ความรู้สึกที่ได้เรียนรู้อะไรใหม่ๆนี่มันดีจริงๆเลยค่ะ

รักทุกคนที่มีส่วนร่วมกับงานนี้และทำให้งานนี้ผ่านไปได้ แม้อาจจะไม่ได้เอ่ยชื่อเลย ทั้งทีมเกมฝ่าย Developer, Design, Sound, Infrastructure ขอบคุณทุกคนจริงๆค่ะ

ขอขอบคุณทุกคนจากใจ ❤

⸻ ลาร่า, Developer หญิงคนเดียวในกลุ่มทีมเกม

--

--

Lara | SAGUINS | IT23@SITKMUTT | GAME Alchemist | Former UX/UI Designer Internship | Freelance Game Writer