TGDN Forum มาแล้วครับ

มิถุนายน 13th, 2008

เปิดตัว ส่วนที่หลายๆคนคงรอคอยนั่นคือ forum หรือ บอร์ดของเรานั่นเองครับ เขจ้าไปสมัครสมาชิกกันได้เลยที่ www.tgdn.org/forum

Havok เปิดให้ใช้กันฟรีแล้ว ข่าวดีสำหรับนักพัฒนา

มิถุนายน 10th, 2008

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 :P

ไป Grab มาได้เลยที่

http://tryhavok.intel.com/

มีอะไรใหม่ใน Ubuntu 8.04 Hardy Heron !

มิถุนายน 6th, 2008

ช่วงนี้  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 ของเราจะเต็มไปด้วยขยะครับ :P

4  ปรับปรุงระบบการ boot และ shutdown ให้เสถียร ราบรื่น มากขึ้น

5  Compiz fusion ที่มีลูกเล่นมากขึ้น  Theme ใหม่ๆ ที่ทำให้ หน้าจอของเราดูดีขึ้น

6   ปรับปรุง wine ให้ทำงานได้ดีขึ้น เข้ากับ ระบบได้มากขึ้น ทีนี้เราก็ สามารถใช้งานโปรแกรมของวินโดว์ได้ เกมส์หลายๆ ที่เล่นได้บน linux แล้วครับ

เออ ยังมากมายก่ายหน้าผาก

เอามาสาธยายต่อคราวหน้า โอ้ยง่วง …….

LOD คำนี้สำคัญไฉน

พฤษภาคม 19th, 2008

หลังจากที่เรา คลุกตัวเองอยู่กับการ 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 หลายๆรูป แบบในการจัดการ งงไหม เนี่ย ถ้าคุณงง คุณไมรู้ เราจะตามไปดู แต่ถ้าคุณเข้าใจที่ผมบ่นมาแล้ว ไม่ต้องดูนะ :P


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

มีถึงวิธิการ ส่วนนี้ยากเข้าขั้นพอสมวรใคร ปวดหัวไปหายาแก้ปวดมากินได้ อนุุญาติ เอ้า ลุยกันต่อ จะเขียนแค่คร่าวๆ นะครับ

Mesh Simplification

ก็ตรงๆ ครับไม่อ้อมค้อม Simply ก็คือทำให้ง่ายขึ้นนั่นเอง การลดความาซับซ้อนของ Mesh ดูจากภาพ

เรียก Edge Collape ครับ เป็นการลบ Edge หรือ เส้้นที่เชื่อมระหว่าง Vertex นั่นละออก ไปซ่ะ

ยิ่งมีอีกหลายวิธีเพื่อที่จะสร้าง LOD ในแต่ละ level อาเหนื่อยคราวหน้ามาว่ากันต่อ ละกันนะครับ ….


เสาะหาเครื่องมือเพื่อทำงานของเรา

พฤษภาคม 19th, 2008

งานของเราเป็นงานด้าน 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 ครับผม :D

http://freeglut.sourceforge.net/

Terrain Construction

พฤษภาคม 16th, 2008

ก่อนอื่นเราต้องหาวิธีเก็บข้อมูลของภูมิประเทศของเราก่อนวิธีที่ง่าย และ ใช้เนื้อที่ในการเก็บน้อยคือ

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 สร้างความสูงจากการใช้ noise function
  • fractal ข้อมูลจากากรคำนวนที่รููปแบบซ้ำๆ มีแบบแผน
  • subdivision แบ่งพื้นผิวเป็นส่วนย่อยสร้างรายละเอียด ของ terrain

ผมเลือก Perlin noise  นะครับ จากนั้นไปที่  File->New->Perlin noise

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

เปลี่ยน view  เป็น 3d light จะเห็นภาพคร่าวว่า Render ออกมาแล้วจะเป็นอย่างไร สวยงามหรือเปล่า

จบไปอีกหนึ่งตอน พักก่อนครับ ติดตามต่อไปตอนหน้า :D

SCEE เตรียมเปิดแล้วที่ India

พฤษภาคม 15th, 2008

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