หลังจากจบมหาลัยมาผมก็เริ่มหางานที่เกี่ยวกับการพัฒนาโปรแกรมและ AI และหลีกเลี่ยงงานที่จำเจ (routine) ไม่ให้ความสนใจเรื่องเงินมากนักเพราะรู้ตัวว่าเกรดไม่ดี ไม่เก่งและที่สำคัญภาษาอังกฤษแย่มาก
หางานใน Jobdb เจอบริษัท Novaleaf ประกาศรับสมัคร game developer ที่มีคุณสมบัติต่างๆ มากมาย แต่ก็มีคุณสมบัติบางข้อที่ผมให้ความสนใจคือ game, AI และ programming และก็มีคุณสมบัติหลายอย่างที่ผมทำไม่ได้และที่สำคัญสัมภาษณ์งานเป็นภาษาอังกฤษ แต่สุดท้ายผมตัดสินใจมาสัมภาษณ์ลองดู (ตอนแรกตัดสินใจไม่มาแล้ว แต่เพื่อนชาวเวียดนามบอกให้ผมลองไปดู ไม่เห็นมีอะไรเสียหาย ผมคิดตาม ก็จริงไม่มีอะไรให้กลัว กลัวอะไรผมมี talking dictionary) แล้วผมก็ได้งานทำ
เมื่อเริ่มทำงานความรู้ในการเป็น Game developer แทบจะเป็น 0 และได้เข้าใจการเรียนเพียงเอาความรู้ไปสอบให้ได้เกรดช่างไร้ความหมาย สิ่งที่สำคัญกว่าคือการฝึกฝนเอาความรู้อย่างถ่องแท้สำคัญกว่า (practice make prefect)
ผมเริ่มด้วยการฝึก Programming (C#) จากเดิมที่รู้เพียงชื่ออย่างเช่น interface, delegateและ event อื่นๆ ให้เข้าใจและใช้ได้ถูกต้องตามสถานการณ์
ต่อมาเริ่มลงทำเกม ทำให้เพิ่มใช้ความรู้ Programming และ Math for game อย่างเช่น Vector และ Matrix มากขึ้น คลายกับความรู้ ม.ปลายที่เรียนมา
ได้มาทำในส่วน Spatial partitioning ที่ต้องใช้ความรู้เรื่อง data structure อย่างเช่น Tree, graph และความรู้เรื่อง Basic Geometry Math อย่างทรงกลม (sphere) กล่องที่อยู่บนแกน (Axis aligned bounding box: AABB) หาว่าทับกันหรือไม่ ห่างกันเท่าไร
ทำในส่วน Collision Detection ที่ต้องใช้ความรู้เรื่อง Geometry Math, Vector and Matrices algebra อย่างเช่น ray, line, plane and OBB (Oriented-Bounding Box) , และมีความเกี่ยวข้องกับ spatial partitioning โดยตรง
ในการทำในส่วน AI ซึ่งได้ลองทำในรู้แบบ state machine และ behavior tree ยังคงใช้ความรู้เรื่อง data structure & algorithm ทั้งในส่วน tree, graph การ search ในรู้แบบต่างๆเช่น ในการทำ path finding และใน heap, hash และ sorting ในการเพิ่มความเร็ว AI ที่เคยเรียนมาในตอนมหาลัย (Academic AI) จะมี search , rule –based expert system, fuzzy logic , neural network และ genetic programming ค่อนข้างจะแตกต่างกับ Game AI เน้นเรื่องการ search และบางเกมส์มีใช้ rule base system(SimCity) .
จากประสบการณ์ 3 ปีในการทำเกม ในความสีงที่ผมได้(Realize) ในพื้นฐานการที่จะเป็น game developer นั้นจะต้องมีความรู้พื้นฐาน
1. Concept programming ที่เข้าใจ (ผมคิดว่ารวมไปถึงการเข้าใจ OOP : Object-oriented programming และ Design Pattern)
2. Data structure and Algorithm พื้นฐานช่วยให้เข้าใจ Game algorithm ต่างๆ
3. Performance Optimization, การเพิ่ม speed ของเกม ถ้ามีความรู้ข้อ 1 และ 2 แล้วจะช่วยได้มาก
4. Math for game, จะเป็นพื้นฐานในการศึกษาและพัฒนาในส่วนต่างๆ อย่างเช่น Collision detection, Physics, Animation and Computer graphic(rendering) เป็นต้น ของเกมได้ง่ายๆ ขึ้น
5. English (สำหรับบางคนรวมทั้งผม) เนื่องจากแหล่งข้อมูลเกือบทั้งหมดเป็นภาษาอังกฤษ
การพัฒนาเกมต้องใช้ความรู้มากมายและใหม่ และมีสิ่งที่น่าสนใจให้ศึกษามาก ผมคิดว่าผมยังจูเนียร์
Sarayut (Bank)
