2008/Oct/09

ต่อไปนี้เป็นบรรยายออนไลน์ฟรีในกระบวนวิชา : คู่มือเอาชีวิตรอดในการบริหารโครงการเกมไทย #5

เกริ่นนำ
หลังจากดองเค็มมานานในที่สุด Entry มีสาระที่หลายๆท่านรอคอยก็กลับคืนมาแล้วนะขอรับ !! ขอออกตัวก่อนเลยว่าตลอดหลายเดือนที่ผ่านมานี่ ผมค่อนข้างวุ่นๆ กับการพยายามประคับประคองบริษัทให้สามารถผลิตงานออกมาให้ได้ตามเป้าซึ่งก็ต้องงัดเอาวิชาที่สะสมมาชนิดหมดก้นหีบ... และก็เอาตัวรอดมาได้สำเร็จ(ถ้าไม่สำเร็จคงไม่มีหน้ามาสอนต่อ... แต่อาจารย์บางคนทำเกมเจ๊งก็ยังหน้าด้านมาสอนทำเกมเนาะ... พิลึกจริงๆ)

เราจะมาต่อกันจากคราวที่แล้ว(ถ้ายังจำกันได้ !?)บุคลากรประเภทต่างๆที่ผมแบ่งอย่างหยาบๆตามที่เห็นในองค์กรในประเทศไทยทั้ง 5 ประเภทนะครับ

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

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

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

ผู้บรรยายขอฝากโฆษณาว่ากำลังรับสมัครพนักงานตำแหน่งนี้ 1 ตำแหน่ง ท่านใดสนใจทิ้ง ems ไว้ได้เลยครับ

C/C++ จากประสบการณ์ผมขอยอมรับเลยว่าเป็นภาษาหนึ่งที่ถูกใจผมมากที่สุดในการใช้เขียนโปรแกรม และก็เป็นภาษาที่ผมยอมรับว่าใช้ค่อนข้างยาก และใช้เวลาเรียนรู้ รวมไปถึงการฝึกฝนที่นานมากภาษาหนึ่ง

สำหรับท่านที่กำลังสนใจจะจัดตั้งทีม หรือเปิดบริษัทและกำลังมองหาบุคลากรประเภทนี้อยู่ควรพิจารณารับบุคลากรที่มีคุณสมบัติดังนี้

- มีประสบการณ์การใช้ภาษา C/C++ เขียนโปรแกรมมาไม่น้อยกว่า 2 ปี(จะให้ดี 5 ปี+ )
- อย่างน้อยต้องเคยทำเกมด้วยภาษานี้ จนสามารถนำมาแสดงให้ดูได้อย่างน้อย 1 เกม(ผ่อนปรนเป็นโปรแกรมอื่นๆก็ได้ในกรณีที่ไม่มี)


ไม่แนะนำอย่างยิ่งให้รับเด็กจบใหม่ที่ไร้ประสบการณ์... ประเดี๋ยวท่านจะได้ชีช้ำระกำทรวงกับเด็กเกรด 3 กว่าๆที่ไม่เคยรู้เลยว่า for loop ทำงานยังไง...(ประสบการณ์ตรง)

2.1.2 JAVA Programmer
อีกภาษายอดฮิตหนึ่งภาษาที่ถ้าเป็นเมื่อสัก 3-4 ปีที่แล้วจะเป็นที่ต้องการตัวของบริษัทเกมไทยมาก โดยมากแล้วงาน JAVA นั้นจะเป็นงานแบบ web-based หรืองานเขียนโปรแกรมบน platform อื่นๆที่ไม่ใช่ PC อาทิเช่น โทรศัพท์มือถือ เป็นต้น

เป็นภาษาที่ไม่ยากนัก แต่ก็ไม่ง่ายหากจะเขียนให้ดีและมีประสิทธิภาพ ข้อดีของบุคลากรที่ใช้ภาษานี้ได้คือ สามารถทำงานได้ค่อนข้างหลากหลายและไม่จำเป็นต้องยึดติดกับ platform อย่าง PC อย่างเดียว อีกทั้งยังสามารถเขียน web application หรือเกมที่เล่นบนเวบได้อีกด้วย วิเศษไปเลยใช่มั้ยล่ะ !?(แต่มันก็ไม่ง่ายขนาดนั้นหรอกสำหรับการ port...)

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

2.1.3 C#/XNA Programmer
น้องใหม่ไฟแรงที่ลูกพี่ Microsoft ดันเต็มที่ สุดแสนสะดวกสบาย... เด็กหัดใหม่ก็สามารถทำเกม Casual หน้าตาดูดีๆได้โดยไม่ต้องเสียเวลาไปเก็บประสบการณ์เป็นแรมปี นอกจากนี้ยังพ่วงการ port ลงเครื่องเกม console อย่าง XBOX 360 ได้แสนสะดวกสบายเพิ่มช่องทางขายให้อีก ข้อเสนอน่าสนใจ... ที่แลกมาด้วยราคาแพง

การผูกติดกับ platform คือสิ่งที่ไม่สามารถหลีกเลี่ยงได้... บุคลากรสายนี้พึงยอมรับชะตากรรมเลยว่า ท่านคือผู้ปฏิญาณตนว่าจะเชื่อฟังและจงรักภักดีต่อพี่ใหญ่ Microsoft ไปตราบจนมันจะเจ๊งหรือตายจากกันไปข้างเลยทีเดียว... ดังนั้นภาษานี้จึงไม่เหมาะกับผู้ที่รักอิสระ... ผู้นิยม Linux... ผู้รัก Opensource... และผู้ที่คิดว่า Microsoft จะเจ๊งในเร็ววัน

ปัจจุบัน... เท่าที่ผมทราบตอนนี้บริษัท Novaleaf จำกัดกำลังเปิดรับสมัครบุคลากรทำเกมด้วยภาษานี้อยู่ ผู้ใดสนใจโปรดใช้ Google สืบเสาะเอาเองเพราะบอกชื่อให้แล้ว

ถ้าท่านคิดจะทำเกมบนเครื่อง console XBOX 360 ด้วยหวังการขายผ่านช่องทาง XBOX Live ที่มียอดขั้นต่ำหลักพันต่อ Title นั้นท่านก็ควรจะหาบุคลากรประเภทนี้เอาไว้ใช้สอย ซึ่งผมต้องกราบขออภัยด้วยที่ไม่สามารถแนะนำได้ว่าต้องคัดเลือกยังไงเพราะขาดประสบการณ์จริงๆ แต่มีคนกระซิบว่าสามารถดัดแปลงเอาจากผู้เคยเขียน JAVA มาแล้วได้

2.1.4 RPGMaker/GameMaker/Dark Basic Developer
ไม่ขอพูดมากนะครับ... เอาเป็นว่าในระดับอุตสาหกรรมแล้วไม่ค่อยเป็นที่ยอมรับมาใช้ หรือควานหามาใช้เสียเท่าไหร่ พูดมากไปจะไปเหยียบเท้าอาจารย์หลายท่านเข้า... ขัดลาภมิดีๆ

ลักษณะงานเขียนโปรแกรมเกม
สำหรับงานเขียนโปรแกรมเกมนั้นหากจะแบ่งแยกย่อยก็คงจะพอแบ่งแยกได้เป็นประเภทคร่าวๆดังต่อไปนี้นะครับ

- Engine

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

- Game Logic / Game Client
การเขียนโปรแกรมส่วนหลักของเกม ส่วนตรรกะที่แสดงผลออกมาทางหน้าจอ ส่วนควบคุมการเคลื่อนไหว บลาๆสุดแท้แล้วแต่จะสาธยายกัน หัวใจหลักที่ทำให้เกมเป็นเกมและเป็นส่วนที่ขาดไม่ได้

- Server
การเขียนโปรแกรมในส่วน Server โดยมากจะใช้กับเกม Online หรือ เกมที่สามารถเล่นผ่านเครือข่ายได้ มีตั้งแต่เขียนกันอย่างง่ายๆแค่ chat room เพื่อใช้จับคู่ระหว่างเครื่องคนเล่น 2-8 เครื่อง ไปจนถึงเป็นตัวประมวลผลการเล่นของผู้เล่นนับพันๆแบบ MMO(Massive Multiplayer Online) งานเขียนโปรแกรมในส่วนนี้ควรคำนึงถึงการออกแบบรูปแบบการจัดส่งข้อมูลที่ดี เล็ก กระชับ และไม่กำกวม ถือเป็นจุดคอขวดอีกหนึ่งจุดที่หลายบริษัทตกม้าตายกันเป็นประจำ...

- Effect
การเขียนโปรแกรมจัดการเกี่ยวกับการแสดงผล Effect ในเกม มีตั้งแต่การย่อขยายภาพ / การหมุนภาพ / Particle ต่างๆมากมาย แต่โดยมากหลายๆที่มักจะผลักภาระส่วนนี้ให้ Artist ทำภาพสำเร็จมาเลย

- Script
การเขียนโปรแกรมจัดการส่วนของ Script ที่ใช้สำหรับการจัดการควบคุมเนื้อหาในเกม อาทิเช่น คุณสมบัติของ Item ในเกม Online หรือ การจัดการนำภาพมาเรียงเป็นภาพเคลื่อนไหว ถ้าเป็นทีมงานที่มีประสบการณ์ Script เป็นสิ่งที่ควรจะทำเพื่อดันงานส่วนที่ไม่ใช่ logic ออกจากโปรแกรมไปให้หมด
การเขียนโปรแกรมในส่วนนี้นั้นโดยมากไม่ยาก แต่ใช้เวลานานและเห็น output ช้า แต่จะช่วยให้งานในช่วงหลังๆมีประสิทธิภาพมากขึ้น

- Tool
การเขียนโปรแกรมสร้าง Tool หรือเครื่องมือช่วยเหลือต่างๆที่จำเป็นสำหรับการทำเกมอาทิเช่น โปรแกรมอ่าน Script จัดการภาพเคลื่อนไหว / โปรแกรมสร้างฉาก / โปรแกรมเข้ารหัสข้อมูล / โปรแกรมสร้างแผ่นที่ เป็นการเขียนโปรแกรมเล็กๆขึ้นมาเพื่อช่วยให้งานเร็วขึ้น หรือเพื่อใช้สร้างข้อมูลสำหรับใช้ในเกมอีกทีหนึ่ง

- UI / User Interface
การเขียนโปรแกรมจัดการส่วนควบคุมผู้ใช้ เป็นส่วนที่สำคัญ ไม่ยากแต่ต้องใช้เวลาค่อนข้างมาก โดยมากแล้วหลายบริษัทในต่างประเทศจะนิยมจ้างบริษัทหรือทีมข้างนอกทำในส่วนนี้ให้ ส่วนในบ้านเราก็ทำเองในครัวเรือนนี่แหละครับ หรือไม่ก็อาศัยเด็กฝึกงานหรือพนักงานใหม่ทำกัน เป็นงานที่เรียกได้ว่าโยนให้นักเขียนโปรแกรมคนไหนทำ คนไหนก็ทำได้...(ใครทำไม่ได้ ควรพิจารณาตัวเองจริงๆนะครับ... แต่ทำไม่ทันมันก็อีกเรื่อง)

- อื่นๆ
ส่วนปลีกย่อยอื่นๆที่ผมตกหล่นไป... อันนี้ก็แล้วแต่ทีมงานของท่านล่ะครับว่าจะเขียนอะไรพิเศษหรือเปล่า

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




smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry
ถ้าผมเป็นโปรแกรมเมอร์ ผมคงบอกว่า
"เรียนเขียนโปรแกรมให้ถ่องแท้"
จบออกมา ถ้าไม่ได้ทำเกม ก็ยังไปทำอาชีพอื่น ๆ ที่วิชาของเราพอจะอำนวยไปได้
#1  by  นิเกะ At 2008-10-09 07:58, 
Hot!
เอาดาวไป ถ้ามันจะพอจะทำให้เด็กใหม่ ๆ ใช้สติในการเลือกเรียนในวิชา "ทำเกม"
#2  by  นิเกะ At 2008-10-09 07:59, 
อ่า.......

เจิมไก่ย่างก่อน
Hot! Hot! Hot! Hot! Hot!

C# มีของ Linux แล้วครับ
ใช้ตัวเฟรมเวิร์ค ชื่อ Mono แทน .Net
Mono รันในวินโดวแทน .Net ได้ด้วย และโค้ดที่คอมไพล์สำเร็จใน Mono ก็สามารถคอมไพล์ได้ใน C# ได้แน่นอน
ตัว Mono กำลังพยายามอัพตัวเองให้ใช้บน Mac ได้
และ C# ใช้ DirectX และ OpenGL ได้เหมือน C++ รวมถึงมีคำสั่ง DLLImport ทำให้เอาไลบรารี่ธรรมดาๆ ของ C หรือ C++ หรือภาษาอื่นๆบางภาษามาใช้บน C# ได้
ซึ่ง OpenGL กับ DirectX ก็เหมือนกัน เป็นการเขียน OpenGL Core ด้วย C แล้วเอาคำสั่ง DLLImport ไปดึงมาใช้

โดยรวมแล้วยังขาดความเก๋าและความเร็วที่จะทำให้คนเชื่อมั่นว่ามันเอามาใช้ทำเกมได้
แต่ก็มีการจับตามองกันอยู่ว่ามันอาจจะเอามาใช้แทน C++ ได้จริงๆ
ซึ่งถ้าใช้ OpenGL แล้ว ก็เป็นไปได้ว่าเขียนโค้ดทีเดียว คอมไพล์บน .Net รอบนึง Mono รอบนึง ก็ครอสแพลตฟอร์มได้แล้ว
Hot! Hot! Hot! Hot! Hot!

*-* ไม่รู้เรื่อง.....เอาดราก้อนบอลไป 5 ดวงพอ อิอิ
#4  by  joyka At 2008-10-09 09:49, 
แก้คำผิด

- และโค้ดที่คอมไพล์สำเร็จใน Mono ก็สามารถคอมไพล์ใน .Net ได้แน่นอน
ขอบคุณครับ
เป็นประโยชน์มากเลย อาจได้เอาไปใช้ในอนาคต big smile
#6  by  Akara_gat At 2008-10-09 11:46, 
Hot! Hot! wink
#7  by  bellbell At 2008-10-10 01:41, 
สนุกดีครับ
อ่านแล้วมองภาพรวมการทำเกมส์ออกเลยทีเดียว
สรุปว่า ภาษาที่เหมาะกับการทำเกมส์ น่าจะเป็น C หรือ C++ เหรอครับเนี่ย

เนื่องจากไม่เคยเขียน -_-' ยังนึกภาพการนำมาใช้ทำเกมส์ไม่ออกเหมือนกัน

มันลูปได้ มัน On Event ได้ แต่มันจะคิดแบบไหน
เพื่อให้ได้ภาพ Concept ของเกมส์ ไว้จะมาติดตามต่อครับ

ปล.ใช้แต่ VB เปิด-เปิด Database เหอๆ ;P
#8  by  ★ STARBUCKS! no coffee,no me and no you! At 2008-10-10 05:18, 
ถ้าทำเกมที่เล่นบนเว็บแบบต่างประเทศนี่
มันยากมากแค่ไหนครับ
#9  by  Dearcool At 2008-10-10 08:50, 
ผมเกือบ F เพราะ C/C++ มาแล้วครับ
#10  by  Junior At 2008-10-10 15:57, 
#8 เอาไว้จะหาโอกาสสัก entry เขียน pseudo code กับ concept ง่ายๆให้ดูนะครับ
#9 ไม่ยากมากครับแต่ยุ่งแล้วก็วุ่นวาย กับการออกแบบและจัดการ ต้องค่อนข้างชำนาญเรื่องฐานข้อมูลพอสมควรน่ะครับ
รออ่านตอนถัดไป
#12  by  LostOfCTRL At 2008-10-10 22:29, 
อือออ

ผมว่าคนไทย ยังมีมุมในการทำเกมส์แปลกๆอยู่

ส่วนใหญ่มักจะบอกว่า การทำเกมส์คือการทำโคด

แต่ิจริงๆ การทำเกมส์ คือ การทำ Game play ซึ่งไม่ค่อยเป็นที่พูดกันในไทย

มักจะคุยแต่เทคนิกในการทำเกมส์นั้นเกมส์นี้มากกว่า มันก็เลยหยุดอยู่ที่การเลียนแบบ แต่การสร้างอะไรใหม่ๆ ก็ยังมีให้เห็นน้อยมาก
#13  by  xinnix At 2008-10-11 02:55, 
ผมเคยคิดว่า

เขียนเกมมือถือขายจะพอขายได้

มีเงินใช้ซะอีก
#14  by  LinGmnZ At 2008-10-11 23:50, 

<< Home


Thanit A.
View full profile