สร้าง Flight Simulator ด้วย C++ เอง (1996)
(archive.org)- เป็นสื่อภาษาอังกฤษเกี่ยวกับ การเขียนโปรแกรมเกมบน DOS จากปี 1996 ที่อธิบายกระบวนการสร้าง flight simulator ด้วย C++ ด้วยตนเอง
- แท็กหัวข้อถูกจัดหมวดหมู่โดยเน้น MS-DOS, 3D, Gamedev, tutorial, Retrogaming, C++
- ไม่ใช่แค่เอกสารธรรมดา แต่ยังรวมถึง อิมเมจ CD-ROM ของโค้ดตัวอย่าง เพื่อเก็บรักษาสภาพแวดล้อมการพัฒนาในยุคนั้นไว้ด้วย
- สามารถดาวน์โหลดจาก Internet Archive ได้หลายรูปแบบ เช่น PDF, EPUB, Full Text, ISO Image, Torrent
- เป็นสำเนาเก็บรักษาที่ช่วยให้ผู้ที่มองหาแหล่งข้อมูลการพัฒนาเกมเรโทรและการเขียนโปรแกรมบน DOS สามารถดูทั้งหนังสือและไฟล์ประกอบได้ในที่เดียว
รายการที่ลงทะเบียนบน Internet Archive
- สื่อที่ลงทะเบียนใน รายการ Internet Archive คือ Build Your Own Flight Sim In C++ (DOS GameDev)
- ผู้เขียนคือ Michael Radtke, Chris Lampton และเป็นสื่อภาษาอังกฤษที่เผยแพร่ในปี 1996
- ISBN คือ 1-57169-022-0
- หัวข้อถูกจัดหมวดหมู่เป็น MS-DOS, Programming, 3D, Gamedev, tutorial, Retrogaming, C++
ขอบเขตการพัฒนาที่หนังสือครอบคลุม
- เป้าหมายคือ เขียน flight simulator ด้วย C++ ด้วยตนเอง
- เป็นสื่อที่ใช้ในบริบทของการพัฒนาเกมเรโทรและ 3D โดยมีแกนหลักเป็นการเขียนโปรแกรมเกมในสภาพแวดล้อม DOS
- flight simulator มี เสียง SB16 รวมอยู่ด้วย
- มี อิมเมจ CD-ROM ที่บรรจุโค้ดตัวอย่างให้มาพร้อมกัน
บริบทของการลงทะเบียน
- มีภูมิหลังว่าเมื่อ Retro City Rampage ถูกพอร์ตไปยัง DOS นักพัฒนาเคยเสียดายที่ได้ทิ้งหนังสือการเขียนโปรแกรม DOS และการพัฒนาเกมที่เคยมีทั้งหมดไปแล้ว และยังหาออนไลน์ได้ยากด้วย
- สื่อนี้ถูกแนะนำในบริบทดังกล่าวว่าเป็น หนังสือพัฒนาเกม DOS ที่ลงทะเบียนไว้บน Internet Archive
รูปแบบที่ดาวน์โหลดได้
- Internet Archive มีรูปแบบดาวน์โหลดให้หลายแบบ
- PDF: 308.9M
- EPUB: 768.5K
- Full Text: 1.1M
- ISO Image: 11.5M
- Single Page Processed JP2 ZIP: 321.7M
- Torrent: 32.5K
- ยังมีไฟล์ที่เกี่ยวข้องกับ OCR ได้แก่ CHOCR, HOCR, OCR Page Index, OCR Search Text
การเก็บรักษาและเมทาดาทา
- ขนาดรายการแสดงเป็น 706.7M
- รวมอยู่ใน CD-ROM Software Library, CD-ROM Software Collection และ The Vintage Software Collection ของ Internet Archive
- OCR ประมวลผลด้วย tesseract 5.0.0-alpha-20201231-10-g1236 และภาษาที่ตรวจพบคือภาษาอังกฤษ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
อา หนังสือเล่มนี้! ทำให้นึกถึงสมัยที่เล่น Wolfenstein, Ken's Labyrinth, Doom แล้วสงสัยว่าเขาสร้างของแบบนี้ขึ้นมาได้ยังไงกันแน่
ตอนนั้นผมทำงานที่ “ร้านคอมพิวเตอร์” ที่ไม่ค่อยมีเงินจ่ายค่าจ้างหรือไม่ยอมจ่าย แล้วเขาบอกว่าวันนั้นให้หยิบหนังสืออะไรก็ได้ในร้านเป็นค่าตอบแทน ผมเลยคว้าเล่มนี้มาแบบฉับพลัน
ระหว่างนั่งรถบัสกลับบ้าน ผมนั่งเลยป้ายที่ต้องลงไป เพราะถึงจะเป็นหนังสือเกี่ยวกับซิมูเลเตอร์การบิน แต่ อัลกอริทึมและเทคนิค ข้างในคือเรื่อง การเขียนโปรแกรม 3D ที่ผมอยากรู้พอดี
ผมไม่ได้ทำซิมูเลเตอร์การบินขึ้นมา แต่ใช้ความรู้จากหนังสือเล่มนี้สร้างเกม 3D แบบหยาบ ๆ ได้ เกมนั้นไม่มีการชนกำแพง ไอเท็มที่เป็นสไปรต์จะสุ่มพังเมื่อเวลาผ่านไป และผมก็ไม่เคยจับความรู้สึกของการใช้การคูณเมทริกซ์แทนการแปลงเรขาคณิตได้ดีจริง ๆ แต่หนังสือเล่มนี้ช่วยตอกย้ำความรักในการเขียนโปรแกรมให้ผม ในช่วงที่ถ้าไม่มีโปรเจกต์ที่ลึกพอ ผมคงไม่ผลักดันตัวเองต่อไปแล้ว
ครูไม่รู้คณิตศาสตร์ และแม้ตอนสอนเมทริกซ์ใน Algebra II ก็ไม่สามารถตอบได้ดีว่าเมทริกซ์ถูกใช้ใน “โลกจริง” อย่างไร
แต่ด้วยวิธีใดวิธีหนึ่ง ผมไปเจอบทความกราฟิก 3D ในนิตยสาร Byte ฉบับเก่าหลายปี ซึ่งมีเนื้อหาเกี่ยวกับการใช้ เมทริกซ์และจุด สำหรับการหมุนและอื่น ๆ
ผมใช้สิ่งนั้นหมุนลูกบาศก์บน PET 2001 ท่ามกลางความอลังการของหน้าจอ 40x24 อันที่จริงมันมีแค่ 8 จุด และถ้าหรี่ตาดูในที่มืดก็จะดูคล้ายลูกบาศก์
ต่อมาที่มหาวิทยาลัย ผมได้ใช้ไมโครคอมพิวเตอร์แบบ Tektronix storage tube มันเป็นเครื่องแยกเดี่ยว ไม่เหมือนเทอร์มินัล และสามารถเรนเดอร์ลูกบาศก์ได้ค่อนข้างดี ผมยังคีย์รถที่ประดิษฐ์อย่างประณีตบนกระดาษกราฟเข้าไปทีละค่าในคำสั่ง DATA ของ BASIC ในตัวเครื่องด้วย
ช่วงนั้น หนังสือ Foley-Van Dam รุ่นแรกเป็นหนังสือกราฟิกที่ทุกคนอยากได้
ตอนมหาวิทยาลัยผมได้ C ในวิชา “Survey of Physics” และคณิตศาสตร์ที่พยายามจำลองปรากฏการณ์ทางฟิสิกส์นั้นยากมากสำหรับผม แคลคูลัสกับเรื่องนามธรรมทั้งหมดผมทำได้ดี แต่ก็ไม่รู้ว่านั่นบอกอะไรเกี่ยวกับตัวผม
ถ้าสนใจเรื่องนี้ คอร์สออนไลน์ที่ผมกำลังฟังอยู่ตอนนี้ก็น่าจะน่าสนใจ: https://pikuma.com/courses/learn-3d-computer-graphics-progra...
ผู้สอนสอนเนื้อหานี้อยู่ที่มหาวิทยาลัยแห่งหนึ่งในลอนดอน และรู้สึกได้ชัดว่าเขามีประสบการณ์สอนมาก จังหวะการสอนจนถึงตอนนี้สมบูรณ์แบบ และเป็นไปตามคำอธิบายคอร์สทุกอย่าง ถ้าผมเรียนคอร์สกราฟิกจบแล้ว ก็ตั้งใจว่าจะทยอยเรียนคอร์สอื่นของผู้สอนคนนี้ต่อ
คอร์สนี้สอนวิธีเขียนโปรแกรมกราฟิกด้วย C ตั้งแต่ระดับล่างสุด โดยมี dependency แค่ SDL2 ตอนแรกจะสร้าง abstraction ของ SDL2 ที่สามารถกำหนดสีของพิกเซลแต่ละจุดได้ แล้วเนื้อหาทั้งคอร์สจะสร้างต่อบนสิ่งนั้น โครงสร้างคือถ้าคุณกำหนดสีของพิกเซลหนึ่งจุดได้ ก็จะได้เรียนต่อว่าคุณจะวาดนกฮูก 3D ที่ใส่เท็กซ์เจอร์ทั้งตัวได้อย่างไร
ผมตามคอร์สนี้ด้วย Rust โดยใช้แค่ binding ของ SDL2 สำหรับ Rust ผมเรียนอย่างสนุก และรู้สึกว่าเป็นดีลที่ตรงไปตรงมาและเป็นคอร์สที่ดี เลยอยากแชร์ ผมไม่ค่อยเห็นที่อื่นพูดถึงคอร์สเหล่านี้เท่าไหร่
ผมยังจำได้ว่าเคยมีหนังสือเล่มนี้ น่าจะตอนอายุราว 14–15 ปี และเป็นช่วงที่เพิ่งได้เรียนบินครั้งแรกแล้วกำลังอินกับ การบิน อย่างหนัก
ผมมี MS Flight Simulator และก็เรียน C++ ด้วยตัวเอง แต่เนื้อหาในหนังสือค่อนข้างเกินระดับของผมในตอนนั้นไปหน่อย ถึงอย่างนั้นก็ยังรู้สึกดีที่ได้นึกถึงความตื่นเต้นตอนที่ได้หนังสือเล่มนี้มา เพราะคาดหวังว่าจะสร้างซิมูเลเตอร์การบินของตัวเองได้ แน่นอนว่าถ้าจำไม่ผิด ซิมูเลเตอร์ที่ทำตามหนังสือนั้นแทบจะเล่นไม่ได้เลย
หนังสือเล่มนี้กับ “The Black Art of 3D Game Programming” เป็นสองเล่มโปรดที่สุดของผมในวัยเด็ก
https://archive.org/details/BlackArt3DEBook
น่าสนุกดีที่ผมเปิดไปหน้า 216 แบบสุ่ม แล้วเจอวิธีค่อนข้างพื้นฐานแต่มั่นคงในการแมปพิกัดโลก 3D ลงบนทรงกลม และบังเอิญว่าช่วงหลังนี้ผมเพิ่งอ่านวิธีแก้ปัญหา การสร้างโลก ของ No Man's Sky ที่ต่างออกไปโดยสิ้นเชิง
https://www.polygon.com/2017/3/2/14790028/no-mans-sky-was-fl...
อยากให้ทุกวันนี้มีบทความแบบนี้ออกมาเยอะขึ้นอีก เท่มากจริง ๆ
แต่ลิงก์ ePub ดาวน์โหลดไม่ได้:
https://ia904505.us.archive.org/epub/index.php?id=build-your...
No valid doc name could be determinedน่าเสียดาย แต่คงต้องพอใจกับ PDF แทน อีกอย่างที่น่าเสียดายคือเว็บวิวเวอร์ของ Internet Archive ก็ไม่ค่อยดี
ลิงก์ PDF ที่ใช้งานได้: https://archive.org/download/build-your-own-flight-sim-in-c-...
ผมยังมีโปรแกรมที่เขียนตามหนังสือเล่มนี้อยู่ ประสบการณ์การเติมชีวิตให้โลก 3D นั้นเหมือนเวทมนตร์ เริ่มจากหน้าจอดำ วาดเส้นไม่กี่เส้น แล้วขยับมันด้วยวิธีที่พอดี จู่ ๆ ก็มีโลกเกิดขึ้นบนหน้าจอ ทุกวันนี้หาอารมณ์แบบนั้นได้ยาก
น่าจะได้รับหนังสือเล่มนี้เป็นของขวัญวันเกิดอายุ 13 ปี ดังนั้นคณิตศาสตร์บางส่วนตอนนั้นจึงยากไปหน่อยสำหรับผม แต่การได้เรียน assembly และขุดลึกลงไปในอัลกอริทึมที่ซับซ้อนกว่าอย่าง polygon clipping ก็เป็นการฝึกที่ยอดเยี่ยมสำหรับโปรแกรมเมอร์มือใหม่
น่าประทับใจว่าหนังสือเล่มนี้ใช้หน้าไปมากแค่ไหนเพื่อสร้างจักรวาลออกมา สมัยนั้นไม่ใช่ยุคที่แค่เปิดไลบรารี OpenGL แล้ว initialize stack ก็จบ
หนังสือเริ่มตั้งแต่เรื่องอย่าง ต้องตั้งค่ารีจิสเตอร์อะไรเพื่อให้การ์ด VGA เข้าโหมดที่ถูกต้อง, วิธีอ่านบิตแมปและพาเลตจากดิสก์, วิธีเขียน run-length encoder เองเพื่อประหยัดหน่วยความจำบิตแมป, และต้องตั้งค่ารีจิสเตอร์ใดบนพอร์ตจอยสติ๊ก
ผมทำตามหนังสือเล่มนี้จนจบ ต้องแก้ไขบ้างเพราะทำงานบน Mac แต่ก็ได้ implement อัลกอริทึม Bresenham, polygon clipping, back-face culling ฯลฯ
ปกติแล้วคงติดตรงคณิตศาสตร์ที่เจอครั้งแรกอย่างเมทริกซ์, dot product, cross product แต่โชคดีที่ตอนนั้นผมลง linear algebra ภาคฤดูร้อนที่มหาวิทยาลัยพอดี เนื้อหาในหนังสือจึงเข้ากับวิชาเรียนได้ค่อนข้างดี
ถ้าจำไม่ผิด หนังสือเล่มนี้มี ฟลอปปีดิสก์ 5.25 นิ้ว ที่มีซิมูเลเตอร์ให้บินรอบภูเขารูปพีระมิดอยู่ด้วย ทำให้นึกถึงความทรงจำดี ๆ