2007/Dec/02

เผื่อมีใครจะทำเกมเป็นโปรเจคจบเป็นเกม3มิติ ใช้ตัวนี้ก็จะง่ายขึ้นกว่าการที่เราจะต้องไปนั่งเขียนC++ กับ DirectX
A7 จะเปลี่ยนมาใข้ Lite-C แทนC Scriptที่ใช้อยู่กับ A6 (เวอชั่นเก่า)
โดยตัวที่เอามาแจกนั้น เป็นPro Edition ไม่มีการLimit จำนวนผู้เล่น Multiplayer
โดยโปรแกรมนี้จะรวมเครื่องมือทุกอย่างที่ใช้ในการสร้างมา ทั้งเรื่องAI ฟิสิกEngine เสียง ภาพ และeffectต่างๆ

โดยตัวโปรแกรม โหลดได้จากlinkนี้

http://www.4shared.com/file/29868177/f007f...GameStudio.html

ผู้ใช้สามารถที่จะสร้างเกมได้ โดยที่ไม่ต้องเขียนCode โดยผ่านโปรแกรมที่ชื่อว่า WED ซึ่งเป็นโปรแกรมสร้างฉากของ A7 Gamestudio เพียงแค่โหลดTemplate(เหมือนโครงสร้างของเกม ทั้งเกม) แล้วสร้างฉากของเราเอง
ซึ่งในเวบของผู้ผลิตนั้น มีTemplate สำเร็จรูปให้โหลดอยู่มาก ทั้งพวกเกม เกินหน้ายิง เกมมุมมองบุคคลที่3 แต่โดยทั่วไปแล้ว เราควรที่จะเขียนเองดีกว่า ซึ่งโปรแกรมที่ใช้เขียนนั้น ชื่อSED โดยภาษาที่ใช้นั้นจะเป็นScript ที่ชื่อ Lite C ไวยกรต่างๆก็จะเหมือนภาษาC ธรรมดาๆ นี่แหละ เพียงแค่ไม่ต้องไปนั่งจัดการmemเองหรืองานอื่นๆ แค่เขียนในส่วนของLogic ของเกมก็พอ

อันนี้จะเป็นTutorial ของ Lite-C
http://www.4shared.com/file/29870453/3b439...c-Tutorial.html

Tutorial สอนการใช้โปรแกรมสร้างฉาก WED
http://www.4shared.com/file/29868718/326f3...tutorial_e.html

ถ้าทำกัน2คน คนที่เขียนโปรแกรมก็เขียนTemplateไปให้ฝ่ายศิล เป็นคนออกแบบฉากและวางอาวุธหรือพวกองค์ประกอบฉากได้เลย

โดยแนะนำให้อ่านTutorial ของ LiteCก่อน แล้วจึงมาอ่าน WED แล้วจะได้ภาพการทำงานรวมๆของEngine ตัวนี้ โดยในนั้นจะสอนตั้งแต่ขึ้นพื้นฐาน ยัน การนำระบบฟิสิกมาใช้ในเกมเลย ไม่ยาก หรือถ้าใตรอยากเพิ่มคุณสมบัติใหม่ๆลงไป ในนั้นจะมีSDK มาด้วย เราสามารถเขียนPlugin เองได้ตามต้องการ ในManual ที่มากับตัวProgram นั้นจะมีบอกวิธีเขียนไว้ให้ เพียงแต่เราต้องใช้กับVc++ เท่านั้น(กรณีเขียนPlugin เอง) แต่ถ้าเราไม่กะจะเพิ่มอะไร ใช้ SED ก็เหลือแหล่แล้วครับ


ปล. ถ้าไม่ชอบ LiteC มันจะมี Library มาให้เรานำไปใช้กับ Vc++ ได้ด้วย แต่มันไม่มีTutorial สอนไว้นะสิ ดังนั้น ควรจะหัดใช้ LiteC ให้คล่องก่อน ให้คุ้นคำสั่งต่างๆแล้วค่อยเปลี่ยนไปเขียนด้วย Vc++ ทีหลัง

2007/Dec/02

เบื่อหรือไม่ กับความอืดอาดยืดยาดดังรัฐบาลขิงแก่ของDarkBasicและหลักไวยกรณ์โบราณๆของภาษาBasic ที่ไม่มีความเป็นOOP ของDarkbasic

มาลองของใหม่(หรือป่าว)กันดีกว่า GDK เป็นGameEngine ตัวเดียวกับDarkBasic เด๊ะๆ คำสั่งวิธีการใช้งานต่างๆ เหมือนกันเด๊ะๆ ใครที่เคยใช้งานDarkbasic อยู่สามารถเปลี่ยนมาศึกษาและใช้งานGDKได้ทันทีโดยไม่ต้องไปศึกษาอะไรเพิ่มเติม โดยที่เราสามารถไปหาคู่มือและtutorial ต่างๆของDarkbasic มาประยุกใช้กับGDK ได้ทันที
คำสั่งของGDK จะเหมือนDarkBasic ทุกอย่าง เพียงแค่เพิ่มคำว่าdb มาด้านหน้าเท่านั้นเอง
เช่น
DarkBasic

loadobject(1,1)

ถ้าเป็นGDK
dbloadobject(1,1);

อันนี้เป็นการเปรียบเทียบประสิทธิภาพของdarkbasic และgdk

http://darkgdk.thegamecreators.com/?f=darksdkvsdbpro

เมื่อโหลดไปแล้วนั้น ก็setค่าเหมือนการImport Libraryอื่นของVc++ ธรรมดาๆโดยมันจะมีคู่มือบอกวิธีการsetค่าไว้ให้แล้วในไฟล์ที่แจกไปให้

แต่ก่อนที่เราจะใช้งานมันได้นั้น เราต้องลงDirectX SDKก่อน ซึ่งสามารถไปโหลดได้ตามนี้เลย
http://download.microsoft.com/download/3/3...sdk_aug2007.exe


GDK ตามลิ้งข้างล่างนี้เลยครับ
http://www.gigasize.com/get.php?d=szhso9f8s2b


ข้อดีของGDK ก็เหมือนDarkbasic คือมันง่ายในการใช้งา่น คำสั่งมันตรงๆตัวดี
ส่วนข้อเสียของGDKนั้น นอกจากเรื่องภาพที่ไม่ค่อยจะสวยเท่าไรแล้ว ยังมีเรื่องการเช็คการชนกันแบบPolygon และการสนับสนุนชุดคำสั่งใหม่ๆ ที่สำคัญก็คือ เหมือนว่าทีมพัฒนาจะหยุดการพัฒนาไปแล้ว(ไปทุ่มเวลาทำProjectอื่นๆอยู่) แต่มันก็ยังเป็นตัวเลือกที่ดีของคนที่อยากทำเกม3d เป็นโปรเจคจบ หรือทำพวกงาน3D ต่างๆ เช่นพวกโปรแกรมนำเที่ยว จำลองสถานที่ต่างๆ

 

วันนี้มาแจกก่อน รายละเอียดการใช้งานไว้ว่ากันทีหลังครับ

2007/Oct/15

 

          Lesson3: Hello World 2

      จากความเดิมตอนที่แล้ว เราว่าด้วยเรื่องของNamespace ตอนนี้ให้เปิดโค๊ดของคราวที่แล้ว ใครที่ใช้VB จะพบว่า ตัวโปรแกรมนั้นไม่ได้ทำการสร้างNamespace ขึ้นมาให้เหมือนกับของVc# Vc++

สำหรับ 2อันหลังนั้น โปรแกรมจะทำการสร้างNamespace ขึ้นมาตามชื่อของโปรเจคที่เราสร้างขึ้นมาตอนแรก

การสร้างNamespace ของVb นั้นทำได้ดังนี้

Namespace MyNamespace

        Class X

        End Class

End Namespace

 

หลักภาษาของVb นั้น จะต่างกับC มากพอสมควร กล่าวคือ ภาษาตระกูลC ทั้งหลายจะไม่สนใจบรรทัด การจะจบคำสั่งใดๆนั้น จะต้องลงท้ายด้วยเครื่องหมาย ";" เสมอ เช่น

Test(Input1

     ,Input2

      ,Input3);

จะมีค่าเหมือนกับ Test(Input1,Input2,Input3);

ในขณะที่ VB นั้นจะ นับการเว้นบรรทัด เป็นการจบคำสั่ง  เช่น

DIM Test as Integer =5            ประการศัวแปรชื่อTest เป็นInteger มีค่าเท่ากับ5

DIM TestB as String ="Test"       ประกาศตัวแปรชื่อTestB เป็น String มีค่าเท่ากับ"Test"

หรืออย่างการประกาศฟังชั่นต่างๆ เงื่อนไข นั้น ถ้าเป้นภาษา C จะใช้เครื่อหมาย {......} เพื่อครอบคลุมและระบุว่า คำสั่งหรือตัวแปรใดๆที่อยู่ระหว่างเครื่องหมาย { }นี้ จะเป็นของฟังชั่น หรือ เงื่อนไขด้านบน ยกตัวอย่างเช่น

int TestFunction()

{

int a=5;

}

จากตัวอย่างนี้ a จะเป็นตัวแปรที่อยู่ภายในฟังชั่นที่ชื่อTestFunction จะเห็นว่าภาษาตระกูลC จะใช้{ } เพื่อบอกจุดเริ่มต้น และจุดจบของฟังชั่น

ในขณะที่Vb จะใช้คำว่าEND แทน เช่น

Function TestFunction() as integer

      Dim a as integer =5

End function

ฟังชั่นนี้จะเหมือนกับตัวอย่างด้านบนทุกประการ แต่จะเห็นว่า ในVb จะไม่มีการใช้เครื่องหมาย{ }อีกต่อไปแล้ว

 ข้อควรระวังที่สำคัญอีกอย่างก็คือ ในภาษาC นั้น จะเป้นCase Sensitive หมายความว่าตัวหนังสือตัวใหญ่และตัวเล็กถือว่าเป็นคนละตัวกัน เช่น

int Test=1;

int test =2;

ตัวแปรTest และ test นั้นจะถือว่าเป็นตัวแปรคนละตัวกัน แต่ในภาษาVb นั้น ตัวใหญ่และตัวเล็กไม่มีผล ถือว่าเป็นตัวเดียวกัน

 

ให้กลับมาที่หน้าDesign โดยการคลิ๊กขวาที่Form1 ในหน้าต่างSolution เลือกView Designer

      ไปที่ToolBoxด้านซ้ายมือ เปิดTabที่ชื่อ "All Windos Forms" เลื่อนมาข้างล่างเลือกTextBox

 

         จากนั้น วาดมันลงไปบนฟอร์มเลยครับ จะตรงไหนก็ได้ เสร็จแล้วจะได้ตามรูปนี้

 

          จากนั้นให้ดูหน้าต่างProperty ด้านขวาล่าง หรือถ้าไม่มี ให้เลือกTextboxที่เราวาดไว้คลิ๊กขวาเลือก Property ช่องProperty จะหน้าตาประมาณนี้

         ลองดูสัญลักษณ์ด้านบนกันก่อนว่ามันหมายถึงอะไรกันบ้าง

 

                          1    2     3     4

 

          รูปที่ 1. เป็นการสั่งให้Property Window นี้แสดงผลPropertyของ Object ที่เราเลือกอยู่ โดยแยกออกตามหมวดหมู่

             2. เป็นการสั่งให้Property Window แสดงผลProperty Propertyของ Object ที่เราเลือกอยู่ โดยให้เรียงกันตามตัวอักษร

             3. สั่งให้Property Windowนี้ แสดงผลของProperty

             4. สั่งให้Property Window นี้แสดงEvent ทั้งหมดที่มีอยู่ของObjectที่เราเลือก

 

 

     ในตอนนี้นั้นให้เราเลือกหมายเลข2 กับ3 ก่อน(คือให้แสดงค่าProperty ของObject โดยเรียงตามตัวอักษร) ดูที่ช่องที่เขียนว่า Name (อันที่3จากอันบนสุด) จะเห็นว่า Object ที่เราเลือกนี้ ใช้ชื่อว่า

TextBox1 ชื่อนี้นั้นจะเป็นชื่อที่เราใช้อ้างอิงถึงTextBoxตัวนี้สำหรับการตั้งชื่อนั้น ผมแนะนำให้ตั้งชื่อตามลักษณะของObjectที่เราสร้างขึ้นมาครับ อย่างเช่นTextBoxตัวนี้ ให้ตั้งชื่อไปก่อนว่า

tx_Show

  tx ย่อมาจากTextBox, ทำไมต้องตั้งแบบนี้ คำตอบก็คือ เพื่อให้ง่ายต่อการเขียนโปรแกรมต่อๆไปครับ

จริงๆจะตั้งแบบไหนก็ได้แล้วแต่เราอยาก แต่ควรจะแบ่งหมวดหมู่หรือใช้ชื่อที่สื่อถึงนิดนึง อีกอย่าง ในVisual Studio นั้น มีระบบที่เรียกว่าInteligent ก็คือระบบที่จะตรวจว่าตัวแปรหรือสิ่งที่เรากำลังพิมไปเนี่ย มันคืออะไร แล้วมันจะแสดงค่าต่างๆที่น่าจะเป็ฯไปได้ว่าเราจะมาออกมา เช่นรูปนี้ครับ

   หรือบางที เราลืมชื่อตัวแปร แต่พอจำได้ว่ามันขึ้นต้นด้วยคำว่าTmp เราก็แค่พิมคำว่าTmp ลงไปและกดCtrl+Spacebar เพื่อเรียกหน้าจอนี้ มันก็จะขึ้นรายชื่อตัวแปร หรือฟังช่นทั้งหมดที่ขึ้นต้นด้วยTmp มาให้เราดู ซึ่งด้วยวิธีนี้ มันทำให้ง่ายเวลาเราจะเรียกใช้ตัวแปรหรือฟังช่นต่างๆ เพราะถ้าเราตั้งชื่อเป็นหมวดหมู่ที่ชัดเจน เวลาเราเรียกintel ขึ้นมา มันก็จะแสดงเฉพาะในส่วนที่เราต้องการจะใช้ และอีกอย่าง มันช่วยเวลาเราdebugโปรแกรมด้วย เพราะเวลาจะเห็ฯจะรู้ทันทีว่า มันมาจากส่วนไหน หรือเป็นตัวแปรประเภทอะไร เป็นต้น

 

เอาละ เมื่อเราเปลี่ยนชื่อ เป็น tx_Showเรียบร้อยแล้ว คราวนี้ ให้เราวาด ปุ่มลงไปในFormของเราบ้าง

ไปที่Toolbarเหมือนเดิมครับ เลือกที่Button จากนั้นวาดมันลงไปในForm เมื่อวาดเสร็จแล้ว ให้เราDouble click ที่ปุ่มที่เราวาดครับ มันจะเข้าหน้าจอแสดง Code โดยมีCodeใหม่เพิ่มมาดังนี้

Vc#

private void button1_Click(object sender, EventArgs e)

{

}

 

Vc++

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)

{

}

 

VB

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

End Sub

 

ฟังชั่นพวกนี้นั้น เป็นฟังชั่นที่ถูกสร้างขึ้นมาอัตโนมัติโดยโปรแกรม ซึ่งฟังชั่นเหล่านี้ถูกเรียกขึ้นมาอัตโนมัติเมื่อเกิดเหตุการณ์ต่างๆ หรือที่เรียกันว่าเกิดEvent นั่นแหละครับ เมื่อดูจากชื่อฟังชั่นแล้ว จะเห็นว่า มีคำว่า

"Click" ปนอยู่ด้วย นั่นหมายความว่า นี่เป็นฟังชั่นที่จะถูกเรียกเมื่อเกิดEvent Click พูดง่ายๆ เราคลิ๊กมันเมื่อไร ฟังชั่นนี้จะทำงานทันที

ใหเราเพิ่มCode ต่อไปนี้ไว้ในFunction พวกนี้นะครับ

VB

tx_Show.Text = "Hello World"

 

VC# &Vc++

tx_Show.Text = "Hello World";

 

จากนั้นให้เราลองrunดูครับ (ปุ่มPlay ด้านบน หรือไม่ก็ไปที่ Debug->StartDebuging)

เมื่อโปรแกรมมันรันขึ้นมาแล้ว ให้เราลองกดปุ่มดูครับ มันจะได้หน้าจอแบบนี้

 

 

 

 

edit @ 19 Oct 2007 22:43:20 by GusZ