TGDN Forum มาแล้วครับ
มิถุนายน 13th, 2008เปิดตัว ส่วนที่หลายๆคนคงรอคอยนั่นคือ forum หรือ บอร์ดของเรานั่นเองครับ เขจ้าไปสมัครสมาชิกกันได้เลยที่ www.tgdn.org/forum
เปิดตัว ส่วนที่หลายๆคนคงรอคอยนั่นคือ forum หรือ บอร์ดของเรานั่นเองครับ เขจ้าไปสมัครสมาชิกกันได้เลยที่ www.tgdn.org/forum
Havok ผู้นำของ Software ประเภท middle ware ที่ใช้กับงานเกมส์ ทั้งด้าน physics และ animation มีการใช้งานในรูปแบบของ Suite ครบชุด ไม่ว่าจะเป็น
Havok Behaviour ใช้จัดการเรื่อง การตอบสนองและ พฤติกรรม ของ ตัวละครในเกมส์
Havok Physics เป็นตัวชูโรงของ havok จริงๆ จัดการเรื่องเกี่ยวกับ physics ทั้งหมด ทำให้เกมส์สมจริงมากขึ้น
Havok Animation ใช้สร้างงาน animation ที่ใช้งานร่วมกับ Physics และ behaviour
Havok Cloth เป็นตัวของ physics ในเรื่องของ soft body อย่างการเคลื่อนไหวของ ผ้า และ อื่นๆ
Havok Destruction สร้างการพังทะลาย และ ความวินาศสันตโร ได้สมจริง
ตอนนี้ได้เปิดให้ดาวน์โหลดไปใช้กันในงานที่เป็น Non Commercial กันฟรีๆ นับว่าเป็น โอกาสอันดีเลยครับ สำหรับหลายๆ คนที่อยากสัมผัสกับ Software ระดับเทพๆ และ เอาไปใช้ในการพัฒนาตัวเองได้ดี เลยทีเดียว เสียดายที่มีแต่ Version ที่ทำงานบน Windows
ไป Grab มาได้เลยที่
ช่วงนี้ admin ไม่มีเวลามา update blog เลยครับ ขออภัยยุ่งจริงๆ ทั้งเรื่อง เรื่องเรียน วันน้ได้โอกาสดี เขียนเรื่องเบาๆ บ้างครับ จาก Ubuntu 8.04 ได้ออกมาสดร้อนๆ ในเดือนเมษา ที่ผ่านมา นับว่าเป็นตัว ที่หลายๆ คนรอคอย เพราะเป็น LTS (Long Term Support )

Support กันย๊าวยาวถึง 3 ปีทีเดียวครับ สำหรับ Desktop มีอะไรที่เพิ่มขึ้นหรือ ตัดออกไปจาก Gutsy gibbon 7.10 บ้าง มาดูกันเลย
1 สามารถลงระบบใหม่โดยไม่ เขียนทับส่วนของ /home มีประโยชณ์มากครับ สำหรับการระบบใหม่ ไม่ต้องเสียเวลา Back up ข้อมูลอีก
2 Support Hardware ได้มากขึ้น และ ดีขึ้น มี Hardware Testing เป็นความสามารถที่เพิ่มขึ้นมา และ รองรับ Wide screen ได้ดีทีเดียว สำหรับ hardy heron แถมยังสามารถ Detect รีเฟรชที่เราสามารถใช้ได้เอง โดยไม่ต้องไปแก้ไฟล์ xorg.conf
3 มี utility สำหรับตรวจพื้นที่ของ Harddisk และ มีตัว Clean up ช่วยเพิ่มพื้นที่ บ้าง ก่อนที่ harddisk ของเราจะเต็มไปด้วยขยะครับ
4 ปรับปรุงระบบการ boot และ shutdown ให้เสถียร ราบรื่น มากขึ้น
5 Compiz fusion ที่มีลูกเล่นมากขึ้น Theme ใหม่ๆ ที่ทำให้ หน้าจอของเราดูดีขึ้น
6 ปรับปรุง wine ให้ทำงานได้ดีขึ้น เข้ากับ ระบบได้มากขึ้น ทีนี้เราก็ สามารถใช้งานโปรแกรมของวินโดว์ได้ เกมส์หลายๆ ที่เล่นได้บน linux แล้วครับ
เออ ยังมากมายก่ายหน้าผาก
เอามาสาธยายต่อคราวหน้า โอ้ยง่วง …….
หลังจากที่เรา คลุกตัวเองอยู่กับการ Design หน้าตาของ terrain ของเราอยู่นาน คราวนี้เรามาหาวิธีทำให้มันเป็นจริง ในแบบ real time กันดีกว่า
Basic Mesh
วิธีสร้าง mesh จาก heightmap ที่เรามี ก็คือ การสร้าง patch ย่อยๆ ให้มีจำนวนเท่ากับ heightmap ใจแต่ละด้านจำนวน 2n

จาก Wireframe เราจะเห็นครับว่า เราสร้าง mesh ของ terrain อย่่างไรหนึ่ง patch มี 2 polygon ที่เห็นเป็นจุด Vertex แต่ละจุดนั่นเราจะใช้ค่า y จาก heightmap มากำหนดค่า
ดูจากโค้ดข้างล่างเราจะสร้างข้อมุลของ vertex ใน component x และ z โดยการวนลูป
double dStartX = - 100.0;
double dStartZ = -100.0;
const unsigned int uNumPatch = 513;
Vertex patch[uNumPatch ][uNumPatch ];
for(unsigned int i = 0; i < uNumPatch; i++)
{
for(unsigned int j = 0; j < uNumPatch; j++)
{
patch[i][j].x = dStartX + i;
patch[i][j].z =dStartZ + j;
patch[i][j].y = heightmap[i][j];
}
}
แค่นี้เราก้ได้ ข้อมุลของแต่่ละ patch แล้วละนะ แต่สำหรับแต่ใช้งานจริง ๆ มันไม่ง่ายแบบนี้นะสิครับ เพราะถ้า Terrain ของเรามีขนาดใหญ่ ซ่ะ ใครๆ ก็อยากให้มันมีขนาดใหญ่ละ พื้นที่แคบ ๆ ไม่สวยงามแน่นอน เวลาเรา render แล้วใช้ความละเอียดปกติ ทำให้โปรแกรมของเราทำงานข้าลง ดงั้นัน้ จึงมีการคิดค้น technique ที่เรียกว่า LOD (Level of Detail) ขึ้น
LOD หรือ Level Of Detail นั่นเป็นเทคนิคที่เราจะเลือกใช้ในการเลือกความละเอียดของ mesh สมัพันธ์กับความจำเป็นที่ต้องใช้งาน อย่างเช่น ถ้า mesh นั่นอยู่ใกล้เราจะใช้ polygon ทั้งหมดในการ render แต่เมื่อมันห่าง ออกไป ไกล ห่างออกไป ไกลซ่ะเหลือเกิน ไปโน่นแล้ว เราจะลดความละเลียดของ mesh ลง โดยใช้ Algorithm หลายๆรูป แบบในการจัดการ งงไหม เนี่ย ถ้าคุณงง คุณไมรู้ เราจะตามไปดู แต่ถ้าคุณเข้าใจที่ผมบ่นมาแล้ว ไม่ต้องดูนะ

ภาพยอดฮิตสำหรับการอธิบาย เกี่ยกวับ LOD น้อง bunny กระต่ายน้อยเป็นสัตว์ ตัวแรกที่เค้าใช้ทดลองกันครับ ก็คล้ายกับ Utah Teapot ละนะ
จากที่เห็น เรามีกระต่ายตัวเดียวแต่ มีหลายๆ Resolution แต่ก็คงรูปร่างเดิมไว้ จากนั้นเราลองเอามาวางในตำแหน่งที่ห่างจากจุดเรามอง เริ่มจากตัวที่มีจำนวน polygon มากที่สุด ไปถึง ตัวที่ ขี้เหร่ ที่สุด ผมเรียกงั้นละนะ (แทบจะไม่ใช่กระต่ายแล้วละ ) พอจะเห็นประโยชณ์ของ LOD ยังละ เมือ่วัตถุอยู่ไกลออกไป เราสามรถใช้ความละเอียดที่ตำ่ลงตามไปด้วยได้ โดยไม่เห็นความเปลี่ยนแปลง
มีถึงวิธิการ ส่วนนี้ยากเข้าขั้นพอสมวรใคร ปวดหัวไปหายาแก้ปวดมากินได้ อนุุญาติ เอ้า ลุยกันต่อ จะเขียนแค่คร่าวๆ นะครับ
Mesh Simplification
ก็ตรงๆ ครับไม่อ้อมค้อม Simply ก็คือทำให้ง่ายขึ้นนั่นเอง การลดความาซับซ้อนของ Mesh ดูจากภาพ

เรียก Edge Collape ครับ เป็นการลบ Edge หรือ เส้้นที่เชื่อมระหว่าง Vertex นั่นละออก ไปซ่ะ
ยิ่งมีอีกหลายวิธีเพื่อที่จะสร้าง LOD ในแต่ละ level อาเหนื่อยคราวหน้ามาว่ากันต่อ ละกันนะครับ ….
งานของเราเป็นงานด้าน Computer Graphicใช้การคำนวนเยอะ แหละ ต้องอาศัย hardware ที่ทำงานเกี่ยวกับ Graphic อย่าง VGA card มาช่วยคำนวนด้วย และสิ่งที่ทำให้ได้ มาซึ่ง ประสิิทธิภาพ และ คุณภาพของงานคือ แก๊สโซฮอล …….
Graphic API ตังหาก
ในยุคปัจจุบันสำหรับเครื่อง PC มีอยู่ 2 ตัวคือ
Direct3D หรือ Direct Graphic ผลิตผลของบริษัทยัักษใหญ่ Microsoft
ตัว SDK นั้นฟรี มีครบเรื่องสร้างเกมส์ แล้วยัง Support คอมโซลยอดฮิต Xbox360 ด้วย
OpenGL เป็น library ด้าน graphic ที่ใช้กันมานมนาม 10 กว่าปีแล้วครับ open นี่ที่คือ เปิดกว้างตามชื่อละ และยังเปิดเป็น open source อีกด้วย มีให้ใช้งานกันบนทุกระบบจริงๆ ไม่เว้นแม้่แต่ มือถือ PDA หรือ Hanheld device อื่นๆ น่าสนใจไหมละครับ
เอาเป็นว่าผมเลือก OpenGL แล้วกันเพราะผมใช้ linux อาไม่ต้องกลัว สำหรับแฟน Windows (ของแท้) แต่ละระบบมี library ที่แตกต่างกันไป ขึ้นอยุ่กับ ตัว compiler ที่เราใช้ การเขียนไม่แตกต่างกันครับ แล้วผมจะใช้ library ที่เป็นตัวกลางระหว่างระบบ กับ โปรแกรมของเรา เขียนเหมือนกันทุกประการ แต่ เอาไปใช้ compile ใช้งานในแต่ละระบบเท่านั้นเอง
ภาษาโปรแกรม
C/C++ เพราะต้องใช้ native ผมคิดว่านะ ถึงแม้เครื่องในปัจจุบันจะแรง มากก็ตาม แต่สำหรับงานในรูปแบบนี้ต้องใช้พลังของเครื่องมหาศาล
IDE(Integreted Development Environment)
ตัวที่มีให้ใช้ ทุกบน Windows และ linux ขอแนะนำ www.codeblocks.org ครับ พัฒนาเรื่ือยๆ จนมี Feature ที่น่าสนใจ อย่างสามารถใช้ compiler ได้หลายตัว ๆ แม้แต่ Tri core

GLUT
OpenGL Utility Toolkit เป็น library สำหรับสร้าง application และมีคำสั่งช่วยงานหลายอย่างมาก ถือว่าเป็นตัวกลางของเรา กับระบบเเลยทีดียว และลดงานของการ setup เพื่อใช้งาน OpenGL ในแต่ละระบบด้วย
สำหรับ Mingw32 หาได้จาก
http://www.martinpayne.me.uk/software/development/OpenGL/GLUT/GLUT-MinGW-3.7.6-2.mp.zip
สำหรับสาวก linux ใช้ freeglut ครับผม
ก่อนอื่นเราต้องหาวิธีเก็บข้อมูลของภูมิประเทศของเราก่อนวิธีที่ง่าย และ ใช้เนื้อที่ในการเก็บน้อยคือ
Height Field Terrain
แปลงตรงตัวคือ “สนามความสูง” แค่นี้เราก็รู้แล้วละว่า terrain ของเราจะแบ่งออกเป็น Cell ย่อยๆ ซึ่งแต่ละส่วนย่อยๆ นั้นจะมีค่าความสูงต่างกันไป เพื่อให้เกิดภูมิประเทศ

จากรูป ด้านซ้ายจะเป็นข้่อมูลที่เราเก็บไว้ในไฟล์ เราจะเก็บในภาพ แบบ Grey Scale 256 สี เพราะเราต้องการเก็บความสูงเท่านั้น เพียงพอครับ ข้างล่างตัวอย่างของไฟล์ที่ใช้เก็บ height map
อยู่ในรูปแบบของภาพครับ ลองมาดูวิธีิีสร้างกันคร่าวๆ ก่อนอื่น เปิด gimp ขึ้นมาทำงานก่อน แล้วเลือกที่ Script Fu->Patterns->Render Map จะได้หน้าต่าง Set ค่าสำหรับสร้าง height mเลือก 
เลือก gradient เป็น Default เพราะต้องการแค่ ดำ -> ขาว เท่านั้น ส่วน image size และ granularity ซึ่งเป็นค่าความละเอียดของแต่ละหน่วยใน terrain แล้วจะ Set ครับ ตามใจชอบ
มีอีกวิธีหนึ่งที่จะสร้าง heightmap ได้หลากหลายและ ได้ดั่งใจกว่านี้ครับ คือใช้โปรแกรมที่สร้าง Terrain ด้วยเฉพาะอย่าง
Terraform สำหรับผู้้ที่ใช้ linux และ Mac OS ถ้าใช้ Debian Base ( ubuntu , mint , TLE ….) ลงได้จาก synaptic หรือ apt-get เลยครับ
หรือว่าถ้าใช้ M$ Windows และ Mac OS ก็ต้อง Terragen (free for non-commercial)
ใน blog นี่ผมจะอธิบาบวิธีใช้คร่าวๆ แค่ Terraform เพราะผมเป็นแฟน linux อิอิ
พอเราได้ terraform มาอยู่่ในมือแล้ว จัดการ new terrain เลยวิธีการสร้างของ เค้ามีหลายแบบคือ
ผมเลือก Perlin noise นะครับ จากนั้นไปที่ File->New->Perlin noise

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

เปลี่ยน view เป็น 3d light จะเห็นภาพคร่าวว่า Render ออกมาแล้วจะเป็นอย่างไร สวยงามหรือเปล่า
ื
จบไปอีกหนึ่งตอน พักก่อนครับ ติดตามต่อไปตอนหน้า ![]()
SCEE หรือ Sony Computer Entertainment Europe มีแผนที่จะเปิด Studio ที่ เมือง NUMBAI ประเทศอินเดีย จะอยู่ในรูปแบบของ free project ซึ่งนำเอา “หนุมาน” มาเป็นตัวเอก อีกทั้งยังจะจัด event อย่าง DevStation เพื่อส่งเสริมและให้ความรู้ในการพัฒนาเกมส์บน PS3 อีกด้วย