ThaiGameDevX - Thai Game Developers eXchange Forums
27 September 2017, 08:43:11 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: หากมาครั้งแรก เชิญอ่าน ประกาศเจตนารมณ์ของ ThaiGameDevX และ กติกา ข้อตกลงในการใช้เว็บบอร์ด ครับ
 
   Home   Help Search Calendar Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: [FAQ]ทำไมเราจึงไม่ควรใช้ CDX!!  (Read 13176 times)
0 Members and 1 Guest are viewing this topic.
นายตาหวาน (Mr.Tawan)
Global Moderator
Hero Member
*****

จำนวน ชม/ไม่พอใจ: +61/-36
Offline Offline

Gender: Male
Posts: 1,591


« on: 07 October 2007, 03:55:32 AM »

เดี๋ยวมันต้องมีมาแน่ ๆ ว่า จะใช้ CDX ทำอย่างโง้น จะใช้ CDX ทำยังงี้ อะไรแบบนี้  ดังนั้นขอแรงผู้(เคย)เชี่ยวชาญ CDX ทั้งหลายบนบอร์ดนี้ มาคุยกันดีกว่าว่าทำไมเราจึงไม่ควรใช้ CDX !!!

เริ่มจาก CDX คืออะไรก่อนดีกว่า เนื่องจากว่าเวปของ cdx (http://cdx.sourceforge.net/) ได้ตายอย่างสงบไปนานจนจำไม่ได้ว่ามันตายไปตอนไหน ... ผมขอด้นเองละกัน ก่อนอื่นต้องบอกก่อนนะครับว่าไม่เคยใช้ จะลองค้น ๆ แล้วมาอธิบาย

CDX  นั้นไม่มีใครรู้ว่าย่อมาจากอะไร (เนื่องจากเวปมันตายไปแล้ว) แต่ก็สามารถเดาได้ง่าย ๆ ว่ามันคือ C (Class) + DX (DirectX) ซึ่งคือก็คือ DirectX ที่เป็น Class นั่นเอง (ปกติแล้ว DirectX จะอิมพลีเมนท์แบบ COM Interface ซึ่งจะเป็นคลาสหรือไม่ก็ไม่มีใครรู้)
CDX เป็น Wrapper Class Library ที่ครอบตัว DirectX ไว้อีกทีนึง โดยที่มันทำงานกับ DirectX เวอร์ชั่นเก่า (3-7) ตัวมันเองครอบตัว DirectDraw, DirectInput, DirectSound และ DirectMusic (ซึ่งเป็นที่น่าสังเกตว่า ไมโครซอฟท์ประกาศให้เป็น Deprecated แล้วทั้งสี่ตัว)

ทีนี้ทำไมเราถึงไม่ควรใช้ล่ะ ?
อย่างแรกเลย ถ้าคิดจะทำเกม 3D ... ก็ขอให้มองผ่านไปเลย ตั้งแต่ DirectX 8 เป็นต้นไป Direct3D จะทำงานโดยที่ไม่ยุ่งเกี่ยวกับ DirectDraw และ Microsoft ให้ผู้ใช้ใช้ Direct3D แทน DirectDraw ในการวาด Object สองมิติ หลังจากนั้น Direct3D ได้ถูกเปลี่ยนชื่อเป็น DirectGraphic แต่ว่าเนื่องจาก CDX ยังคงทำงานผ่าน DirectDraw อยู่ ดังนั้นการใช้งาน 3D นั้นจะจำกัดมาก ๆ

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


อะไรอีกล่ะ ?
Logged

Are you feeling fine?
眠れない夜には君の幻が...
She said, "Loving you made me happy everyday"
The Miss
Full Member
***

จำนวน ชม/ไม่พอใจ: +2/-1
Offline Offline

Gender: Male
Posts: 117


I am a Krajog (คนกระจอก)


« Reply #1 on: 07 October 2007, 05:29:54 AM »

555

คาวนี้มาเป็น FAQ เลยวุ้ย Tongue
Logged

Standing By
Thaina
Approved Member
Hero Member
*

จำนวน ชม/ไม่พอใจ: +29/-83
Offline Offline

Gender: Male
Posts: 810



« Reply #2 on: 07 October 2007, 09:48:25 AM »

5555555555555555555555555555555555555
5555555555555555555555555555555555555

โอย สะใจครับ เดี๋ยวว่างๆจะมาสับแหลกๆ
Logged
Thaina
Approved Member
Hero Member
*

จำนวน ชม/ไม่พอใจ: +29/-83
Offline Offline

Gender: Male
Posts: 810



« Reply #3 on: 07 October 2007, 11:50:08 AM »

เอาล่ะก่อนอื่น

ทำไมเราจึงไม่ควรใช้ CDX

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


ข้อ 2
CDX มันตายไปแล้ว
นั่นคือไม่มีการพัฒนาต่อ เนื่องด้วยหลายๆสาเหตุ สาเหตุที่ชัดเจนที่สุดคือ จริงๆแล้ว มีเอนจิ้นมากมายหลายตัวที่ถูกพัฒนาขึ้นมาใหม่ ดีกว่า CDX หลายเท่า ไม่ว่าจะเป็น Torque Orge SDL หรืออื่นๆอีก ฯลฯลฯลฯลฯลฯ ซึ่งยังมีการพัฒนาเวอร์ชั่นใหม่ออกมาเรื่อยๆ
พูดกันซื่อๆคือ CDX เป็นเอนจิ้นรุ่นแรกๆ แล้วเอนจิ้นรุ่นต่อไปก็ตามมาอีกหลายตัว แต่คนไทยมีหนังสือที่ขายทั่วไป แค่ CDX
พูดกันตรงๆอีกทีก็คือ หนังสือสอนเขียนเกมของไทยยังดักดานอยู่แค่ CDX ทั้งที่โลกมันไปถึงไหนๆแล้ว

การที่คุณซื้อหนังสือสอนเขียนเกม แล้วได้ CDX มา นั่นหมายความว่า คุณกำลังโดนหลอกให้ดักดานตามสำนักพิมพ์


ข้อ 3
สืบเนื่องจากข้อ 1
CDX มีแกนหลักเป็น DirectX7 ทั้งที่ทุกวันนี้ DirectX ทั่วไปคือ 9 ถึง 10 ที่ยังใช้ได้ถึงทุกวันนี้เพราะ DirectX สามารถที่จะรันรุ่นเก่าๆของมันได้ แต่มันก็เหมือนใช้น้ำมันที่ยังใส่สารตะกั่วทั้งที่ตอนนี้เค้ากำลังใช้แก้สโซฮอล์กัน
ระบบกราฟฟิค 2 มิติ ใช้ DirectDraw ซึ่งทำงานอิงกับวินโดว์ การคำนวนภาพใน DirectDraw ใช้การคำนวนบน CPU ทั้งที่ตอนนี้กราฟฟิคย้ายการทำงานไปบนการ์ดจอหมดแล้ว ผลคือ CDX มีความสามารถในการทำภาพสองมิติ ระดับเดียวกับเกมบอยแอดวานซ์ การแสดงผลภาพช้ามาก หากทำเกมตามปกติในระดับเกมแฟลชจะไม่รู้สึกนัก แต่ถ้าทำอะไรมากๆจะเห็นผลทันที ว่าเกมฝืดลง

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

คงไม่มีความจำเป็นต้องพูดถึง 3D


ข้อ 4
ในช่วงของ DirectX 7 ไฟล์ต่างๆก็มีอยู่ในระดับหนึ่ง
แต่ในปัจจุบัน ไฟล์มันก็มีหลายรูปแบบ หลายนามสกุลมากขึ้น
พูดง่ายๆ CDX ไม่สามารถโหลดไฟล์ MP3 ได้ นี่คือความจริง คำสั่งโหลดและเล่นไฟล์ MP3 น่าจะเกิดขึ้นตอนช่วง DirectX 8 แต่ CDX ไม่มีคำสั่งเหล่านั้น การเล่นเสียงต่างๆใน CDX ต้องเป็นไฟล์ wav ซึ่งใหญ่โดยไม่จำเป็น


ข้อ 5
จะขอย้ำอีกครั้งว่า CDX มันตายแล้ว ไอ้อะไรที่มันทำไม่ได้ มันก็คือทำไม่ได้ และไม่มีวันที่มันจะทำได้ เพราะไม่มีคนพัฒนาต่อแล้ว
เกมในปัจจุบัน ทั้งเทคนิคภาพ ไม่ว่าจะ 2D หรือ 3D เทคนิคเสียง การรับข้อมูล ก็พัฒนาขึ้นๆ หลายสิ่งหลายอย่างพัฒนาขึ้น เอนจิ้นมันก็แค่โปรแกรมหนึ่งที่มีความสามารถในการทำงานแค่ในช่วงเวลาที่มันถูกสร้างขึ้น ถ้าไม่พัฒนาเวอร์ชั่นใหม่ๆ มันก็จะรองรับสิื่่งใหม่ๆไม่ได้

ใครที่หลวมตัวซื้อหนังสือ CDX มาแล้ว อย่าไปเสียดายมัน เสียดายเวลาที่จะสูญเปล่าจากการรู้จักมันจะดีกว่า
Logged
Plus Pingya
Approved Member
Full Member
*

จำนวน ชม/ไม่พอใจ: +12/-0
Offline Offline

Gender: Male
Posts: 228


Plus Pingya


WWW
« Reply #4 on: 07 October 2007, 10:54:27 PM »

ทำไมถึงไม่ควรใช้ CDX?

แล้วทำไมไม่ใช้ตัวอื่นหละ

เมื่อก่อนมันก็ดีนะ เป็นตัวแรกที่ผมรู้จักกับคำว่า game engine เลยหละ
Logged

CyberNet
Newbie
*

จำนวน ชม/ไม่พอใจ: +0/-0
Offline Offline

Gender: Male
Posts: 3


« Reply #5 on: 07 October 2007, 11:03:31 PM »

ใช่แล้วครับ
ผมเองก็เคยซื้อมาเหมือนกัน �ก็เสียดายเหมือนกัน
ผมอ่านครั้งเดียวและไม่อ่านอีกเลย  ซื้อมานานแล้วครับ  3 ปีได้แล้วมั้ง  ตอนนั้นเป็นช่วงหาความรู้ใหม่ๆ
เห็นแล้วก็อยากอ่านดู  แล้วก็ผิดหวัง
เมื่อก่อนอาจจะใช่ครับ  แต่เดี๋ยวนี้มันถึงไหนแล้วครับ
ลืมไปผมมาใหม่ครับ �ขอแนะนำตัวละกัน
ผมมาจากบอร์ด �gamedevx �ฝากเนื้อฝากตัวด้วยครับ
ผมใช้ �Dark Basic �ครับ
ชื่อในบอร์ด �gamedevx �ไม่บอกละกัน
Logged
โหมด
Approved Member
Sr. Member
*

จำนวน ชม/ไม่พอใจ: +16/-1
Offline Offline

Gender: Male
Posts: 304


นาน ๆ โพสต์กระทู้ที - - (จริง?)


« Reply #6 on: 08 October 2007, 09:05:15 AM »

นิดนึงนะครับ เรื่อง directDraw

จริง ๆ แล้ว ddraw ใช้ประสิทธิภาพ 2D จาก hardware นะครับ ทั่วไปที่ชิพการ์ดจอทำได้คือการลอกภาพ (blt ต่าง ๆ)

เรื่องการหมุน การทำ gamma control ก็ทำได้ในชิพบางรุ่น แต่ถ้าชิพไหนไม่ support เราก็ต้องเขียน code เอง Tongue (เคยเห็นทางที่บอกว่า Alpha ก็ทำได้ในบางชิพนะ แต่ผมยังไม่เคยเจอเลย)

ด้วยความน่ารำคาญที่ต้องคอยมาเขียน support เนี่ยแหล่ะครับ การใช้ 3D มาทำ 2D มันจึงสะดวกกว่า ที่ลำบากกว่า ddraw ก็พวก texture ที่ต้องมีขนาดเป็น 2^n นั่น ซึ่ง ddraw มันมีเป็น offscreen surface ซึ่งมีขนาดเท่าไหร่ก็ได้

อ้อ.. แล้ว ddraw ที่มัน blt เราก็เลือกไม่ได้อีกนะว่า จะให้ blt แบบเกลี่ยหรือแบบจุดตรง ๆ (LINEAR กับ NEAREST) แล้วแต่การ์ดจะ support

สรุปคือ ddraw เหมาะกับการเขียนเพื่อ support บางเครื่องที่มันไม่มี chip 3D นั่นเอง (แต่อาจจะมีการ์ดเร่ง 2D)
Logged

เกมจะเสร็จไว ถ้าไม่ขี้เกียจน่อ
Thaina
Approved Member
Hero Member
*

จำนวน ชม/ไม่พอใจ: +29/-83
Offline Offline

Gender: Male
Posts: 810



« Reply #7 on: 08 October 2007, 07:18:09 PM »

อ๊ะ ข้อมูลผิด *-*"

จนได้สิน่า...ขอบคุณคุณโหมดที่ช่วยแก้ครับ
Logged
DDTmanSP
Approved Member
Jr. Member
*

จำนวน ชม/ไม่พอใจ: +0/-0
Offline Offline

Gender: Male
Posts: 95


โปรแกรมเมอร์สายสะเตร๊ง


« Reply #8 on: 23 October 2007, 12:08:05 AM »

โอ้� ขอบคุณกระทู้นี้มากเลยครับ� �

พอผมได้อ่านกระทู้นี้ถึงได้เลิกดักดานกับ CDX ซะที� �

ผมเคยเจอประสบการณ์แบบนี้ด้วยครับ� คือเมื่อหลายเดือนก่อนนี้ ผมใช้คอมพิวเตอร์ซึ่งเก่าแก่มากๆ� สมัยจีฟอร์ซ 2 MX 200� เพนเทียมโฟร์ 1.8 เอสดีแรม นู่นแน่ะ� เอามาใช้เรียนรู้พัฒนาเกมด้วย "CDX" นี่แหละ� พัฒนาจนเสร็จได้ 1 เกม ดีใจมาก� เพราะลองรัน "เครื่องตัวเอง" ก็รันได้สบาย ไม่มีปัญหาอะไรกวนเลย ผลลัพธ์ก็ถูกต้องสมบูรณ์ตามที่เขียนลงไป

ด้วยความที่ดีใจมาก เลยลองส่งให้เพื่อนทุกคนเล่นดู ซึ่งเพื่อนทุกคน ล้วนแต่มีคอมที่ใหม่กว่าทั้งนั้น ระดับเพนเทียมโฟร์ 3.0 ไม่ก็คอร์ทูขึ้นไป� �นั่นแหละครับ ปัญหาเกิดทันที เกมของผมอ่ะ เล่นไปได้พักเดียว ประมาณ 15 วิ - 3 นาที (มันแกว่งมาก ไม่รู้เหมือนกันว่าขึ้นกับอะไรกันแน่)� มันจะเออเรอร์� อาการคือ เกมหยุดทำงาน พร้อมขึ้นไดอะล็อคว่า "ชื่อเกม has stop working we're sorry for the inconvenience , Please tell microsoft" อะไรนั่นแหละ� �ด้วยความที่ตอนนั้นพึ่งจะเริ่มศึกษาเขียนเกมใหม่ เลยยังไม่รู้อะไร� �พยายามตรวจสอบสิ่งที่ตัวเองเขียน ก็ถูกหมดทุกอย่าง แต่ก็ไม่เข้าใจว่า ทำไมรันบนเครื่องอื่นแล้วถึงบั๊ก ทีเครื่องตัวเอง กลับเล่นได้ลื่นไม่มีปัญหาอะไรเลย� � บางทีอาจจะเป็นเพราะที่กระทู้นี้บอกก็ได้นะ ?


แต่ยังไงก็ตาม  จนกว่าผมจะได้เรียนรู้เกี่ยวกับไดเร็คเอ็กซ์มากขึ้น หรือหาเอนจินตัวใหม่  CDX ก็ยังเป็นตัวเลือกเดียวของผมอยู่ดี (ก็ไม่เป็นอันอื่นนี่นา) 
ดังนั้น  มีใครพอจะแนะนำหนังสือเกี่ยวกับไดเร็คเอ็กซ์ให้่อ่านบ้างมั้ยครับ  เป็นเท็กซ์อังกฤษก็ได้ ผมยอม   เพราะหนังสือไทยยังไปไม่ถึงไหนเลย  (ยังไม่เคยเห็นหนังสือวิชวล C++ 2005 เลยอ่ะ หรือมีแล้ว แต่ผมไม่เจอเอง ?)
« Last Edit: 23 October 2007, 12:10:52 AM by DDTmanSP » Logged

Job Level 1. Exp 99%
yod
Global Moderator
Hero Member
*****

จำนวน ชม/ไม่พอใจ: +150/-15
Offline Offline

Posts: 3,240


WWW
« Reply #9 on: 23 October 2007, 06:05:26 AM »

directx ลองเดินดูที่ร้าน bookchest สยามสิครับ (ไม่ได้ค่าโฆษณานะ) ตอนนี้เห็นหนังสืออินเดียราคาอินเดียมาใหม่เยอะเหมือนกัน
Logged

..
โหมด
Approved Member
Sr. Member
*

จำนวน ชม/ไม่พอใจ: +16/-1
Offline Offline

Gender: Male
Posts: 304


นาน ๆ โพสต์กระทู้ที - - (จริง?)


« Reply #10 on: 23 October 2007, 09:52:10 AM »

document ใน directX sdk ก็มีบอกละเอียดครับ ดู code ตัวอย่างพร้อมอ่าน document ประกอบกันไป
Logged

เกมจะเสร็จไว ถ้าไม่ขี้เกียจน่อ
IonRa
Newbie
*

จำนวน ชม/ไม่พอใจ: +1/-4
Offline Offline

Posts: 10



WWW
« Reply #11 on: 03 December 2007, 02:35:41 AM »

ขอบคุณ สำหรับกระทู้นี้ครับ
Logged

arthurasdf
Guest
« Reply #12 on: 15 February 2008, 09:34:06 PM »

ขอบคุณครับ ตาสว่างขึ้นเยอะเลยครับ แต่ว่าผมอยากเริ่มจากลองเขียนเกม 2D ก่อนนี่ เท่าที่เห็นบทความของ Direct3D มันก็เน้นไปที่ 3D เลย ควรศึกษา 3D ไปเลยรึเปล่าแล้วจะรู้ 2D เอง ผมเริ่มไม่ถูก
Logged
Thaina
Approved Member
Hero Member
*

จำนวน ชม/ไม่พอใจ: +29/-83
Offline Offline

Gender: Male
Posts: 810



« Reply #13 on: 16 February 2008, 02:57:13 AM »

2D กับ 3D ไม่ต่างกันครับ มันเป็นแค่การวาดภาพ

2D เราควบคุมแค่ 2 แกน 3D เราต้องควบคุม 3 แกน เพราะงั้น 2D ง่ายกว่า 3D เยอะครับ
Logged
trouverdice
Newbie
*

จำนวน ชม/ไม่พอใจ: +0/-5
Offline Offline

Posts: 32


« Reply #14 on: 17 February 2008, 12:59:57 AM »

ถ้างั้น ทำเกม 2d แบบ maple story เราควรใช้อะไรดี
Logged
Pages: [1]   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!