IlluministGames

เปิดเทอมมาได้อาทิตย์นึงแล้ว ก็ไม่ได้มามาอัพบล็อกนานไปหน่อย (ไม่รวมเอนทรี่เที่ยวรพ.อันที่แล้วนะ) ก็เปิดเทอมแล้ว เวลาว่างก็น้อยลงเพราะว่าเทอมนี้ลงโหด อัดไป 22 หน่วยกิตเต็มๆ หอก็ยังไม่มีให้อยู่อีก เฮ่อ~

ในขณะเดียวกันนี้ก็ต้องทำเอนจิ้นโมมิจิไปด้วย ไหนๆละก็อาศัยวิธีการ "เจียด" เวลาว่างอันแสนน้อยนิดมาทำเกม Space Flare ต่อสะหน่อย

 

คำเตือน : ถ้าท่านไม่สนใจด้านโปรแกรมมิ่ง และต้องการจะเล่นเกม จงข้ามไปยังท้ายเอนทรี่นี้โดยไว

 

ต่อจากครั้งที่แล้วที่เอา SS เกม Space Flare รุ่น 0.1b มาลงไว้ ตอนนี้ก็ได้มีการพัฒนาต่ออย่างก้าวกระโดด เพราะเพิ่งจะมารู้ว่า...

"Function ตรีโกณมิติ ใน Java มันใช้ Radian คิด!!!!"

เฟลกันอย่างแรงเลยทีเดียว ไอ้เราก็ใส่ degree มาตลอด

พอรู้งี้แล้วก็ แก้ไขกันมันเลย โชคดีที่จาวามีฟังก์ชั่น toRadian toDegree แถมมาให้ด้วย ก็เลยใช้ซะคุ้มค่าเลย

ปัญหาจากครั้งที่แล้วก็สามารถแก้ไขได้หมดแล้ว ซึ่งก็จะมีดังนี้

 

พาร์ติเคิลที่มีมันจะไม่แสดงผลในช่วงการเคลื่อนที่ 180-270 องศา

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

จาก expression เก่าที่ใช้คือ if(speed.x < uboundSpeed && speed.y < uboundSpeed) ก็จะสั่งให้พาร์ติเคิลนั้นเสีย แต่ปัญหาที่เกิดคือ ที่องศา 180-270 ความเร็วทั้งสองแกนจะเป็นลบทั้งคู่ ทำให้มีค่าต่ำกว่า  uboundSpeed จึงทำให้พาร์ติเคิลถูกดีดออกตั้งแต่แรกยังไม่ทันที่จะได้วิ่งด้วยซ้ำ

การแก้ไขคือ ใส่ฟังชั่น abs หรือค่าสมบูรณ์ ไว้ที่ความเร็วทั้งสองแกน ก็จะทำให้สามารถตรวจสอบได้แล้ว

 

 พาร์ติเคิลระเบิดที่เป็นวงกลมก็ไม่เป็นไปตามตำแหน่งที่วางไว้

ก็มีสาเหตุมาจากการวาดของ OpenGL โดย OpenGL จะมีวิธ๊การวาดคือย้ายจุดที่ต้องการวาดไปก่อน แล้วก็วาดจุดลงตำแหน่งที่สัมพันธ์กับจุดที่ย้ายไปก่อนหน้า

แต่ว่าของเก่าที่ผมทำคือ ย้ายจุดไปแล้ว แต่ว่าดันไปบวกพิกัดที่จะวาดเพิ่มเข้าไปอีก ทำให้พิกัดวาดนั้นเลยเถิดออกไปไกลทีเดียว

การแก้ไขคือ ลบพิกัดที่เผลอไปบวกเพิ่มนั่นซะ จบข่าว...

 

แรงต้านออปเจ็คเพี้ยน

อันนี้ผมไปหาข้อมูลบนอินเตอร์เน็ทมา จริงๆแล้วส่วนตัวผมเองก็ไม่เก่งในเรื่องฟิสิกซ์เท่าไหร่ แต่พอเห็นสมกาของจริงแล้วถึงบางอ้อเลยทีเดียว

สมการคิดตำแหน่งละความเร็วโดยขึ้นกับเฟรมเรตคือ position += speed * tick (แกนเดียวสมมุติว่าเป็นสองแกน)

สมการคิดแรงต้านใหม่ คือ

realResist = -speed * resistRate

speed += realResist * tick

ผลการทดสอบคือแรงต้านมีความเที่ยงตรงมากกว่าเดิม(เยอะเลยทีเดียว)

 

 

 -------------------------------------------------------------------------------------------

 

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

ตัวเกมนี้จะถูกโหลดมาจากเครื่องผมนะครับ เพราะพอดีว่าบล็อค exteen รู้สึกว่ามันจะอัพอย่างอื่นไม่ได้เลยนอกจากรูปภาพ แล้วก็ไม่รู้จะไปอัพโฮสต์ที่ไหนด้วย

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

เอาเป็นว่า ถ้ารูปข้างล่างนี้ไม่ขึ้นก็แสดงว่าเล่นไม่ได้นะครับ (ไม่นับพวกที่มี cache อยู่ในเครื่อง)

คลิ๊กที่รูปเพื่อเล่นเกม ถ้ารูปไม่ขึ้นแสดงว่ายังไม่สามรถเล่นได้ รออีกสักพักนะครับ

edit @ 15 Jun 2010 01:39:40 by Illuminist Ova

สวัสดีครับ

หลังจากที่ผัดผ่อนเรื่อง Screen  Shot ที่ว่าละลงไว้ให้มานาน ก็ขอลงตอนนี้เลยละกัน

 

ตัวนี้จะเป็นการทดสอบบน Windows 7 64bit ครับ
Free Image Hosting at www.ImageShack.us Free Image Hosting at www.ImageShack.us Free Image Hosting at www.ImageShack.us

 

ต่อไปก็คือผลการรันบน Linux Ubuntu 9.10 โดยทำงานบน VMware นะครับ

Free Image Hosting at www.ImageShack.us Free Image Hosting at www.ImageShack.us

Screen Shot จาก mac ยังไม่มีนะครับ เพราะไม่รู้จะลงยังไง xP ถ้าเป็นไปได้ก็คงจะไปถามหารุ่นพี่ให้ทดสอบให้ครับ

จากเอฟเฟคเงาที่เห็นจะเป็นการเรนเดอร์ซ้อนจากเฟรมที่แล้วครับ แต่ว่าวิธีนี้ยังมีจุดอ่อนคือเฟรมเรตทั้งเกมนั้นมันไม่คงที่ ส่วนไหนที่เฟรมเรตต่ำโดยเฉพาะช่วงที่มี object เยอะๆ จะทำให้เงาที่ออกมานั้นยาวขึ้นและไม่ต่อเนื่องกัน บางคนก็ว่าสวยดีนะ แต่ว่าเอฟเฟคนี้เป็นแค่เอฟเฟคสำรองเฉยๆ ยังไม่ใช่ของจริง -w-

 ปัญหาที่พบอีกอย่างคือในส่วนของพาร์ติเคิลที่มีมันจะไม่แสดงผลในช่วงการเคลื่อนที่ 180-270 องศา ส่วนนี้ยังไม่แน่ใจว่าเป็นเพราะอะไร และพาร์ติเคิลระเบิดที่เป็นวงกลมก็ไม่เป็นไปตามตำแหน่งที่วางไว้ซึ่งปกติจะตั้งไว้ที่ตำแหน่งหลังจากอุกบาตระเบิด และการคำนวณความเร็วยังขึ้นอยู่กับเฟรมเรตของเกมอยู่ในบางส่วนคืออัตราการต้านของออฟเจ็ค(คล้ายๆแรงต้านอากาศ แต่บนอวกาศไม่มีอากาศเลยไม่อยากเรียกแรงต้านอากาศ =w=)และการคำนวณความเร่งครับ ก็จะหาวิธีแก้ไขอีกที

 

 

 

ข่าวต่อไปคือผมมีแผนจะทำ engine ตัวใหม่ ใช้ชื่อว่า Momiji Engine จะถูกพัฒนาต่อยอดมาจาก Valaya Engine ในส่วนของคลาสเกี่ยวกับบทสนทนาที่คราวที่แล้วผมบอกว่าค่อนข้างสมบูรณ์ในส่วนนี้แล้วนะครับ ดังนั้น Momiji จะเป็นเอนจิ้นเกมที่ใช้สำหรับเกมจำพวก Visual Novel โดยเฉพาะเลย แผนนี้ได้มาจากการวางแผนงานโปรโมตชมรมคอมพิวเตอร์โดยใช้วิชวลโนเวลเป็นตัวโปรโมตครับ:P

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

 

สำหรับวันนี้ก็หมดแล้วนะครับ สำหรับเอนทรี่นี้ เจอกันคราวหน้านะครับ

edit @ 20 May 2010 22:39:06 by Illuminist Ova

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

วันนี้จึงเป็นวันที่ผมตื่นเช้าที่สุดในช่วงปิดเทอมที่อยู่บ้านครับ ด้วยความสามารถหรือจะเรียกอะไรก็ได้ที่ใกล้เคียงกันที่เวลามีนัดอะไรเช้าๆ ตอนก่อนนอนผมจะคิดไว้ในหัวว่าจะต้องตื่นกี่โมง ในคืนนั้นก็คิดว่าจะตื่น 7 โมง และในตอนเช้านั้นก็ตื่น 7 โมงจริงๆ

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

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

 

---------------------------------------------------------------------------------------

 

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

โดยเกมที่ผมจะทำตอนนี้มีอยู่สองเกมคือ

1. Space Flare

เกมขนาดเล็ก เป็นเกมแนว 2D Asteroid Shooting เขียนโดยใช้ภาษา Java และ OpenGL ทำให้เกมนี้สามารถ Cross-Platform ไปเล่นบน linux หรือ mac ได้ ใช้ไลบรารีของ lwjgl

จุดเด่นของเกมนี้คือจะเป็นการวาดสดของ OpenGL ไม่มีการโหลด Sprite จากภายนอก จึงทำให้ตัวเกมมีขนาดที่เล็กประมาณ 1 MB กว่าๆ (ยังไม่ได้ใส่เสียงและเพลง) และสามารถเล่นได้บนคอมพิวเตอร์ทุก OS ที่เครื่องที่การ์ดจอรองรับ OpenGL1.1 และมี Java Runtime Environment

ปัจจุบันยังอยู่ในช่วงการพัฒนา ซึ่งยังขาดในเรื่องต่างๆคือ

  1. การชนของ Player กับอุกบาตทั้งหลาย ส่วนนี้ยังอยู่ในช่วงเทสระบบต่างๆจึงยังไม่ได้เพิ่มเติมตรงนี้
  2. Life ของ Player อาจจะทำหลังจากการ Check Collision Player ต่ออุกบาต
  3. Item ของ Player
  4. Score
  5. Main Manu
  6. Font ในเกม ทำมาจากการวาดสดของ OpenGLอีกแล้ว แต่ว่าเพราะต้องใช้แรงงานมากในการลงแบบอักษรแต่ละตัวจึงอาจจะให้เพื่อนทำแทน ตอนนี้ทดสอบทำตัวเลขบางส่วนสามารถ Print out ทางหน้าจอเกมได้แล้ว
  7. อุกบาตรูปแบบอื่นๆ 
  8. เอฟเฟคภาพระดับสูง หมายถึง Effect Glow/Bloom ทั้งหลายแหล่ กำลังศึกษาวิธีทำกับ OpenGL
  9. เสียงเอฟเฟคและดนตรีประกอบ ส่วนนี้อาจจะให้เพื่อนทำให้ เพราะผมเองไม่ถนัดด้านนี้เท่าไหร่


2. Valaya Engine

ตัวนี้ไม่ใช่เป็นเกมจริงๆ แต่เป็นตัว Engine เกม RPG ที่คาดว่าจะเอาทำเป็นโปรเจ็คเกม RPG ขนาดกลาง ซึ่งได้เขียนโค้ดแผนที่และโค้ดบทสนทนาที่จะดึงออกมาจาก Script ภายนอก ในขณะนี้ยังใช้ xml เป็นตัวสคริปต์หลัก และยังอยู่ในช่วงศึกษาการเชื่อมสคริปต์ภายในเกมเข้าด้วยกัน

ตัวเอนจิ้นเขียนบน Java OpenGL lwjgl เหมือนกับเกม Space Flare แต่ติดปัญหาการ render texture ที่ยังให้สีเพี้ยนอยู่ เท่าที่ดูข้อมูลมาอาจจะเป็นเพราะว่าทำงานอยู่บน GPU ของ ATI แต่ยังไม่ได้ลองกับเครื่องอื่น

โปรเจ็คควบคู่กันคือ Valaya Scripter เป็นโปรแกรมที่ใช้สำหรับออกแบบ Map และบทสนธนาที่จะถูกใช้โดย Valaya Engine กำลังอยู่ในช่วงศึกษาเช่นกันว่าควรจะสร้าง Parser ใหม่ขึ้นมาหรือจะใช้ xml Parser เหมือนเดิม

 

3.Visual Novel

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

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

 

ในเอนทรี่หน้าก็จะเอา Screen Shot ของเกม Space Flare บางส่วนมาลงนะครับ เพราะว่าตอนนี้เกิดอุบัติเหตุเล็กน้อยเกี่ยวกับซอร์สโค้ดของตัวเกมจึงทำให้ไม่สามารถ debug ได้ งานที่จะเอามาลงวันนี้ขอเลื่อนไปโอกาสหน้านะครับ

edit @ 16 May 2010 23:28:01 by Illuminist Ova