ใน Folder ของ irrlicht ที่เรา setup ลงไปนั้นจะมีโฟลเดอร์ ที่ชื่อว่า irrAppWizard2005 ให้เข้าไปข้างในแล้วเปิดไฟล์ .vcproj ขึ้นมาครับ เพื่อนำมาเริ่มใช้ในการเขียนเกม(copyตัวเดมเก็บไว้ด้วยนะครับ เอาไว้ใช้เวลาจะทำ projectใหม่) หลังจากเปิดมาให้เรากด F5 เพื่อ Run โปรแกรมจะพบว่าหน้าจอเป็น สีดำเนื่องจากเรายังไม่ได้ทำการเขียนโค้ดใดๆลงไป ก่อนที่เราจะทำการเขียนเกมนั้น ผมอยากจะอธิบายหลักการเขียนเกมง่ายๆ 3ขั้นตอนดังนี้
1.เปิดเข้าสู่โหมดเกม3มิติ
2.ประมวลผลเกม
3.ปิดโหมดเกม
ซึ่งทั้ง 3ตอนนี้เป็นหัวใจหลักของการเขียนเกมเลยทีเดียวครับ ต่อไปเรามาดูโค้ดโปรแกรมตามหละกการที่ผมบอกไว้กันครับ
1.เปิดเข้าสู่โหมดเกมสามมิติ
ให้ดูบรรทัดที่ 23 จะมีฟังชั่น init() มีหน้าที่จองจำmemmoryที่เราต้องการใช้ภายในเกม เราเกมของเราต้องการโหลดโมเดล ฉาก เพลง ให้มาเขียนในฟังชั่นนี้ครับ ต่อจากที่เขียนว่า //TODO: Initialize your own irr objects here
void init() { memset( &g_engine, NULL, sizeof(engine_t) ); g_engine.deviceType = video::EDT_DIRECT3D9; g_engine.windowSize = core::dimension2d<s32>(640, 480); g_engine.bits = 16; g_engine.fullscreen = 0; g_engine.receiver = &g_input; setupEngine( &g_engine ); g_input.init( ); // TODO: Initialize your own irr objects here }
2.ประมวลผลเกม
ในบรรทัดที่ 51 ฟังชั่น doframe() ภายในฟังชั่นนี้มีการทำงานเป็น loop ซึ่งมีไว้ในการประมวลผลหรือการทำซ้ำ
void doframe() { // TODO: Add code to draw your objects during each frame }
3.ปิดโหมดเกม
ในบรรทัดที่ 41 ฟังชั่น deInit() ฟังชั่นนี้มีหน้าที่ในการคืนmemmoryที่จองจำไว้ในส่วนขั้นตอนที่ 1 แต่ต้องจำไว้ในดีนะครับ มิฉะนั้นเกมของคุณอาจจะมีปัญหาเรื่องความจำภายหลังได้
void deinit() { // TODO: Destroy your irr objects here freeEngine( &g_engine ); }
เอาละครับทีนี้เราจะมาอธิบายคำสั่งต่างๆ ของโปรแกรมกัน ผมจะอธิบายเฉพาะส่วนหลักๆที่จำเป้นนะครับ ส่วนรายละเอียดปลีกย่อยไม่เข้าใจที่ไหนสอบถามได้นะครับ
void init() { memset( &g_engine, NULL, sizeof(engine_t) ); g_engine.deviceType = video::EDT_DIRECT3D9; g_engine.windowSize = core::dimension2d<s32>(640, 480); g_engine.bits = 16; g_engine.fullscreen = 0; g_engine.receiver = &g_input; setupEngine( &g_engine ); g_input.init( ); // TODO: Initialize your own irr objects here }
g_engine.deviceType = video::EDT_DIRECT3D9;
ส่วนนี้มีไว้กำหนด driverให้กับเกมมีดังนี้ครับ
Direct3D 9.0c = video::EDT_DIRECT3D9 Direct3D 8.1 = video::EDT_DIRECT3D8 OpenGL 1.5 = video::EDT_OPENGL Software Renderer = video::EDT_SOFTWARE Burning's Software Renderer = video::EDT_BURNINGSVIDEO NullDevice = video::EDT_NULL
จากด้านบนก็มีไดร์เว่อร์ให้เลือกใช้มากมาย ซึ่งความสามารถของแต่ละตัวก็ต่างกันออกไป เช่น DirectX และ openGL สามารถใช้ความสามารถของการ์ดจอเพื่อคำนวนvertexและpixel shaderได้
g_engine.windowSize = core::dimension2d<s32>(640, 480);
เป็นการกำหนดความละเอียดของหน้าจอเกมเราครับ
g_engine.bits = 16;
เป็นการกำหนดจำนวนสีที่จะแสดงผลบนหน้าจอ
g_engine.fullscreen = 0;
จะแสดงผลเต็มจอหรือไม่ 1=yes ,0=no ก็คือ windows modeนั้นเอง
เท่านี้เราก็พร้อมที่จะลงมือเขียนเกมแล้ว
ส่วนวิธีการในขั้นต่อไปนั้นอยู่ในบทต่อไปครับ......
|