web-dev-qa-db-ja.com

グラフィカルDOSゲームはどのように書かれましたか?

Sky RoadsTurboAladdinDuke NukemCommander Keen 6 が書かれました。良い情報源が見つかりません。 C#、C++、Javaなど)でコンソールアプリケーションを作成すると、常に表示され、静止したままになります。また、常にテキストです。

  1. 彼らはどのようにグラフィックスを生成しましたか?
  2. 使用するライブラリはありましたか?
  3. 彼らが使用した言語は何ですか?

どんな良い情報源でもありがたいです。

29
Mustafa

アセンブラー、パスカル、Cは人気のある言語でした。グラフィックスは、ディスプレイハードウェア、たとえば Color Graphics Adapter と直接インターフェースすることによって生成されました。 ( [〜#〜] cga [〜#〜]

おそらく図書館はありましたが、今日とは異なり、図書館は社外で共有されることはあまりありませんでした。

たとえば1988年に関連性のあるリソースは、次の場所にあります。

https://web.archive.org/web/20170910230837/http://Gd.tuwien.ac.at/languages/c/programming-bbrown/advcw1.htm

18
Prof. Falken

彼らはどのようにグラフィックスを生成しましたか?

その時代のゲームは通常、グラフィックスハードウェアに直接書き込みました。それらはメモリ内の特別な場所にマッピングされ、配列のようにピクセルを直接操作しました。

使用するライブラリはありましたか?

サウンドとネットワークのドライバーライブラリは一般的でした。 OS自体が提供する Hardware Abstraction Layer により、最近はゲームにドライバーを提供する必要はありません。

これに加えて、C/C++言語標準ライブラリがありました。ゲームミドルウェアライブラリは、その時代が終わるまで一般的になりませんでした。

ミドルウェアの例は次のとおりです。

  • Havok などの物理ライブラリ
  • DevIL などの画像形式ローダーライブラリ
  • [〜#〜] fmod [〜#〜] などのサウンド形式ローダーライブラリ
  • Bink などのビデオハンドラライブラリ

しかし、DOSの時代は ゲームエンジン の人気の誕生でした。その日の例は次のとおりです。

彼らが使用した言語は何ですか?

Cとアセンブリは非常に一般的でした。

まれに Pascal 、またはその他のあいまいな言語。


DOS時代のように低レベルのソフトウェアを開発したい場合は、古いゲームシステムのプログラミングが良いでしょう。 NES、C64、ゲームボーイ、ゲームボーイアドバンスのすべてのプログラミングでは、作成者が直接ハードウェアアクセスを利用する必要があり、Cまたは何らかの形式のアセンブリを知っている必要があります。エミュレーターを使用して完成品を実行およびデバッグできるため、現行世代のコンソールほどエントリーの障壁にはなりません。

DOSスタイルのゲームを開発したいだけの場合は、最近、多くのグラフィックライブラリとサウンドライブラリを利用できます。彼らがやったように物事を行うのではなく、これらのライブラリの1つを使用することをお勧めします。 Allegro[〜#〜] sdl [〜#〜]PyGameOpenAL 、および OpenGL いくつか例を挙げます。

低レベルのグラフィックプログラミングは引き続き可能ですが、ゲームの実行速度が大幅に向上し、問題が発生した場合のテクニカルサポートが向上し、ゲームはクロスプラットフォームになります。

おそらく、コンソール/ターミナルの概念、つまり、テキストストリームによって供給されるテキストのみのウィンドウと、いくつかのエスケープコマンドを、DOSコンピュータ自体と混同しているでしょう。コンソールはDOSではなく、DOSはコンソールではありません。

コンソールは、クライアントアプリケーションが入力ストリームと出力ストリームを介してコンソールに送信するテキストを表示し、古いテキストを上にスクロールして静的に表示します。コンソールはグラフィックスハードウェアの上の層であり、オペレーティングシステムのサービスであり、グラフィックスを表示するためにneedする必要はありません。 DOS時代には、プログラムはグラフィックバッファに直接書き込み、表示されるテキストのみの表示を回避していました。

一方、コンソールは現在存在し(xtermやWindowsコマンドプロンプトなど)、DOSとは何の関係もありません。

4
thiton

非常に古いゲームは、グラフィックライブラリと同様に、アセンブラで記述されることもありました。しかし、C/C++も頻繁に使用されました。

そのときにグラフィックスやゲームのコードを書き込もうとして、C、Basic、およびAssemblerを使用したとします。私のお気に入りは グラフィックモード '13' で、256色で320x200でした。そのグラフィックモードでは、64000バイトの2つのバッファが提供され、各バイトは画面上のピクセルを表します。描画用の1つのバッファー、表示された1つのバッファー。

この非常に効率的なモードでは、pixを簡単にプロットできます(各ピクセルはバイトです)。画面のサイズのため、Y座標をビットシフトしてXを加算することにより、適切なピクセルを簡単に見つけることができます。2つのバッファーがあるため、背景に描画し、描画したいときに「表示ポインター」を交換できます。次のフレーム。

しかし、私は認めます、これはすでにVGAモードでした。私は本当に古いグラフィックカードであまり成功していません。 CGAの方が難しく、Herculesグラフィックアダプターへの書き込みは非常に面倒で、こつこつと思いませんでした。

ここには、ソースを含む古いDOSゲームが2つあります(どれも私のものではありません)。 http://www.classicdosgames.com/misc/source.html

2
GolezTrol