Tự tay làm trình mô phỏng bay bằng C++ (1996)
(archive.org)- Đây là tài liệu lập trình game DOS bằng tiếng Anh từ năm 1996, trình bày quá trình tự triển khai một trình mô phỏng bay bằng C++
- Các thẻ chủ đề được phân loại xoay quanh MS-DOS, 3D, Gamedev, tutorial, Retrogaming và C++
- Không chỉ là tài liệu đơn thuần mà còn bao gồm cả ảnh CD-ROM chứa mã ví dụ, giúp lưu giữ luôn môi trường phát triển thời đó
- Có thể tải về từ Internet Archive ở nhiều định dạng như PDF, EPUB, Full Text, ISO Image, Torrent, v.v.
- Với những ai tìm kiếm tài liệu về phát triển game retro và lập trình DOS, đây là một bản lưu trữ cho phép xem cả cuốn sách lẫn tài liệu đi kèm tại cùng một nơi
Tài liệu được đăng trên Internet Archive
- Tài liệu được đăng tại mục Internet Archive là Build Your Own Flight Sim In C++ (DOS GameDev)
- Tác giả là Michael Radtke, Chris Lampton, đây là tài liệu tiếng Anh xuất bản năm 1996
- ISBN là 1-57169-022-0
- Chủ đề được phân loại là MS-DOS, Programming, 3D, Gamedev, tutorial, Retrogaming, C++
Phạm vi phát triển mà cuốn sách đề cập
- Mục tiêu là tự viết một trình mô phỏng bay bằng C++
- Tài liệu tập trung vào lập trình game trong môi trường DOS, được sử dụng trong bối cảnh phát triển 3D và game retro
- Trình mô phỏng bay có bao gồm âm thanh SB16
- Đi kèm là ảnh CD-ROM chứa mã ví dụ
Bối cảnh đăng tải
- Khi Retro City Rampage được port sang DOS, có bối cảnh là nhà phát triển tiếc nuối vì đã vứt bỏ toàn bộ sách cũ về lập trình DOS và phát triển game mà mình từng sở hữu, trong khi cũng khó tìm lại chúng trên mạng
- Trong bối cảnh đó, tài liệu này được giới thiệu như một cuốn sách phát triển game DOS đã được đăng lên Internet Archive
Các định dạng có thể tải xuống
- Internet Archive cung cấp nhiều định dạng tải về
- PDF: 308.9M
- EPUB: 768.5K
- Full Text: 1.1M
- ISO Image: 11.5M
- Single Page Processed JP2 ZIP: 321.7M
- Torrent: 32.5K
- Các tệp liên quan đến OCR cũng được cung cấp gồm CHOCR, HOCR, OCR Page Index và OCR Search Text
Lưu trữ và metadata
- Kích thước mục được hiển thị là 706.7M
- Tài liệu nằm trong CD-ROM Software Library, CD-ROM Software Collection và The Vintage Software Collection của Internet Archive
- OCR được xử lý bằng tesseract 5.0.0-alpha-20201231-10-g1236, ngôn ngữ được nhận diện là tiếng Anh
1 bình luận
Các ý kiến trên Hacker News
À, cuốn sách này! Nó làm tôi nhớ lại thời còn chơi Wolfenstein, Ken's Labyrinth, Doom và cứ thắc mắc rốt cuộc người ta làm ra chúng như thế nào
Tôi từng làm ở một “cửa hàng máy tính” không thể hoặc không chịu trả lương; hôm đó họ bảo có thể lấy bất kỳ cuốn sách nào trong cửa hàng thay cho tiền công, nên tôi bốc đồng chọn cuốn này
Trên xe buýt về nhà, tôi đã lỡ mất trạm cần xuống, vì dù đây là sách về mô phỏng bay, các thuật toán và kỹ thuật bên trong chính là nội dung lập trình 3D mà tôi vẫn tò mò
Tôi không làm trình mô phỏng bay, nhưng với kiến thức học được từ cuốn sách này, tôi đã làm được một game 3D thô sơ. Không có va chạm với tường, các vật phẩm dựa trên sprite sau một thời gian thì hỏng ngẫu nhiên, và tôi cũng chưa bao giờ thật sự nắm được cảm giác dùng phép nhân ma trận thay cho các phép biến đổi hình học; nhưng đây là cuốn sách đã củng cố tình yêu lập trình của tôi vào thời điểm mà nếu không có một dự án có chiều sâu, có lẽ tôi đã không tiếp tục đào sâu nữa
Thầy ấy không rành toán, và ngay cả khi dạy ma trận trong Đại số II, thầy cũng không trả lời được rõ ràng ma trận được dùng như thế nào trong “thế giới thực”
Thế rồi bằng cách nào đó tôi tìm được một bài viết về đồ họa 3D trong một số tạp chí Byte đã cũ vài năm, trong đó có nội dung dùng ma trận và điểm cho các phép quay, v.v.
Nhờ vậy tôi đã xoay một khối lập phương trên PET 2001. Giữa vẻ tráng lệ của màn hình 40x24. Thật ra nó chỉ có 8 điểm, và nếu nheo mắt trong bóng tối thì trông giống khối lập phương
Sau này ở đại học, tôi được dùng một máy vi tính kiểu ống lưu ảnh Tektronix. Khác với terminal, nó là máy độc lập và có thể render khối lập phương khá tốt. Tôi còn tỉ mỉ vẽ một chiếc ô tô trên giấy kẻ ô rồi nhập từng phần vào các câu lệnh DATA của BASIC tích hợp
Vào thời đó, các cuốn Foley-Van Dam đời đầu là sách đồ họa mà ai cũng thèm có
Ở đại học tôi chỉ được điểm C môn “Survey of Physics”, và phần toán để mô hình hóa các hiện tượng vật lý thật sự rất khó với tôi. Giải tích và những thứ trừu tượng thì tôi đều học tốt, nhưng tôi không biết điều đó nói gì về mình
Nếu bạn quan tâm đến chủ đề này, khóa học online mà tôi đang nghe cũng có thể thú vị: https://pikuma.com/courses/learn-3d-computer-graphics-progra...
Giảng viên đang dạy nội dung này ở một trường đại học tại London, và rõ ràng có thể cảm nhận được ông có nhiều kinh nghiệm giảng dạy. Tốc độ cho đến giờ là hoàn hảo, đúng như mô tả khóa học. Sau khi học xong khóa đồ họa, tôi định học thêm từng khóa khác của giảng viên này
Khóa học dạy cách lập trình đồ họa từ nền tảng bằng C, và phụ thuộc duy nhất là SDL2. Ban đầu, khóa học tạo một lớp trừu tượng SDL2 cho phép đặt màu từng pixel riêng lẻ, rồi toàn bộ phần còn lại được xây trên đó. Cấu trúc là: nếu bạn có thể đặt màu cho một pixel, bạn sẽ học cách vẽ được mọi thứ còn lại, cho đến cả một con cú 3D có texture
Tôi đang theo khóa học này bằng Rust, chỉ dùng binding SDL2 của Rust. Tôi thấy học rất vui, cảm giác đây là một giao dịch sòng phẳng và là một khóa học tốt nên muốn chia sẻ. Tôi không thấy nhiều nơi khác nhắc đến các khóa này
Tôi còn nhớ mình từng có cuốn sách này. Có lẽ lúc đó tôi khoảng 14–15 tuổi, vừa học buổi bay đầu tiên và bắt đầu mê hàng không
Tôi cũng có MS Flight Simulator và tự học C++, nhưng nội dung cuốn sách khi đó hơi quá sức với trình độ của tôi. Dù vậy, thật vui khi nhớ lại cảm giác háo hức lúc cầm được cuốn sách này, với kỳ vọng có thể tự làm trình mô phỏng bay của riêng mình. Tất nhiên nếu tôi nhớ đúng, trình mô phỏng được làm trong sách gần như không thể chơi được
Cuốn này và “The Black Art of 3D Game Programming” là hai cuốn tôi thích nhất hồi nhỏ
https://archive.org/details/BlackArt3DEBook
Thú vị là tôi mở ngẫu nhiên trang 216 thì thấy một phương pháp khá cơ bản nhưng ổn định để ánh xạ tọa độ thế giới 3D lên một hình cầu, và tình cờ gần đây tôi cũng đọc về một giải pháp tạo thế giới hoàn toàn khác của No Man's Sky
https://www.polygon.com/2017/3/2/14790028/no-mans-sky-was-fl...
Ước gì ngày nay có nhiều bài viết như thế này hơn. Thật sự rất tuyệt
Nhưng liên kết ePub không tải được:
https://ia904505.us.archive.org/epub/index.php?id=build-your...
No valid doc name could be determinedTiếc là chắc phải hài lòng với bản PDF. Việc trình xem web của Internet Archive không tốt lắm cũng đáng tiếc
Liên kết PDF hoạt động: https://archive.org/download/build-your-own-flight-sim-in-c-...
Tôi vẫn còn giữ những chương trình đã viết khi làm theo cuốn sách này. Trải nghiệm thổi sức sống vào một thế giới 3D giống như phép màu. Bắt đầu từ màn hình đen, vẽ vài đường thẳng, rồi di chuyển chúng đúng cách, bỗng nhiên một thế giới hiện ra trong màn hình. Ngày nay khó có được cảm giác tương tự
Có lẽ tôi đã nhận cuốn sách này làm quà sinh nhật lần thứ 13, nên một phần toán học khi đó hơi khó với tôi. Nhưng việc học assembly và đào sâu vào các thuật toán phức tạp hơn như cắt xén đa giác là bài rèn luyện tuyệt vời cho một lập trình viên mới vào nghề
Thật ấn tượng khi thấy cuốn sách dành nhiều trang đến mức nào để tạo ra cả một vũ trụ. Khi đó chưa phải thời chỉ cần bật thư viện OpenGL và khởi tạo stack là xong
Cuốn sách bắt đầu từ những việc như cần đặt thanh ghi nào để đưa card VGA vào đúng chế độ, cách đọc bitmap và palette từ đĩa, cách tự viết run-length encoder để tiết kiệm bộ nhớ bitmap, và cần đặt thanh ghi nào trên cổng joystick
Tôi đã làm theo cuốn sách này đến cuối. Vì làm việc trên Mac nên cần chỉnh sửa, nhưng tôi đã triển khai thuật toán Bresenham, cắt xén đa giác, loại bỏ mặt sau, v.v.
Bình thường có lẽ tôi đã mắc kẹt ở phần toán như ma trận, tích vô hướng, tích có hướng mà lần đầu tiếp xúc, nhưng may mắn là lúc đó tôi đang học đại số tuyến tính trong học kỳ hè ở đại học, nên nội dung sách khá khớp với bài giảng
Nếu tôi nhớ đúng, cuốn sách này có kèm một đĩa mềm 5,25 inch chứa trình mô phỏng cho phép bay quanh những ngọn núi hình kim tự tháp. Gợi lại nhiều kỷ niệm đẹp