ソフトレンダーがイエスと書いたように、ゲームは書いた

バックグラウンド。 私の若者は、3Dゲームの登場時に来ました。 SpectrumのTotal Eclipseを初めて見たとき、私はすぐに3Dをテクノロジーの頂点と考え始めました。 すぐに、IBM互換コンピューターが有名なWolfensteinとDoomとともに登場しました。 感動しました。 プログラミングが好きで、私はそれらを繰り返すことを試み始めました。 90年代半ばで、QuickBASICの速度が遅く、5x86のcompでゼロの経験がありました。 それから何も来ませんでした。 まあ、ほとんど何も。



画像






私たちの日々。 そして2016年、私は次のことを考えました:今、私は経験を積んでいますが、なぜ自分自身にそんな挑戦をしてみませんか? つまり、ソフトウェアラスタライザをゼロから作成します。 ここでのソフトウェアとは、ビデオアクセラレータを使用せずに、イメージがCPUによって構築されることを意味します。 90年代の同じシューティングゲームが作られたように。



タスクが設定されました。 簡単なパフォーマンステストから始めました。メモリを固定色で塗りつぶして表示します。 StretchDIBits関数を画面に表示しましたが、これには多くの類似物があり、ここでの仕事は単にバッファーを画面に送信することです。 そして最初のテストでは、パフォーマンスが悪いことが示されました。 1920x1080では、画面上の色とマンドレルでの単純な塗りつぶしでさえ、FPSがすでに200に排出されていました。



そして、私は唯一のオプションはオーバードローなしでレンダリングすることだと決めました。 ここで、独自のレンダーを書く際のアドバイスの大部分は、ポリゴンのテクスチャリングに帰着し、ポリゴン自体は、遠方から最も近いものまで1つずつ表示するように招待されていることを明確にする必要があります。 私自身も90年代にこれを行い、Doomを再現しようとしました。



また、このオプションは2つの理由で削除されました。 まず、シーンに複数のポリゴンがある場合、最も遠いものから最も近いものに描画するとオーバードローが発生します。つまり、ピクセルを数回再描画します。 第二に、ポリゴンレンダリングはスクリーンバッファで頻繁にキャッシュミスを引き起こします。 結局のところ、三角形は任意に配置されます。



合計で、ラスタライザーをスクリーンバッファー上の線形ループとして記述することにしました。 1回の実行で、順次。 記憶にポリゴンとテクスチャを最も独創的な方法で整理することで、これを達成することができました。 とりわけ、シングルパスラスタライザは並列化が良好であり、ポリゴンペインティングよりもはるかに優れていると言う価値があります。



エンジンを作成する過程で、フェスティバルを開催し、提案されたシーンを通常のGPUエンジンで繰り返すことを提案しました。 嬉しいことに、時々ソフトウェアのレンダリングが進んでいました。 ここに



画像



刺激を受けたので、先に進むことにしました。 そして、最後に夢を作り、シューティングゲームを書いてみませんか? 90年代のストレートシューティングゲームです。



そう決めたので、私は実装の主要なポイントを選択し始めました。 モンスターの種類について最初に考えたもの。 初期のシューティングゲームでは、これらはオオカミ、下院、ヘキセンと異端者でした-敵は2Dビルボードの形で作られました。 Quake以降のシューティングゲームでは、敵はすでに完全な3Dで多角形になっています。 そして、私は異端者とヘクセンの2D敵がQuakeの敵よりもずっと好きだったということです。 2D描画には魅力がありました。 2Dにはかなり長い作業が必要でしたが、敵を四方から引く必要があるため、私はそれを選択しました。 描かれた2 dの看板。



スクリーンショット:2Dビルボードとフル3D。



画像



ゲームレベルの作成方法を決定することも必要でした。 当時のゲームには通常、独自の頂点エディターがありましたが、私は違うやり方をすることにしました。 独自の3Dエディターを書くよりも、.objからモデルをロードする方が簡単だと思いました。 結局のところ、たとえばBlenderなどのエディターの方が優れています。私はほとんど書くことができません。 そして、このソリューションはワンピースカーのメリットをもたらしたと言えます。ゲームレベルのオブジェクトにまったく制約されていませんでした。 Blenderが初めてマスターしたという事実にもかかわらず、私がモデル化したいもの。



芸術に関しては、賢くはなりませんでした。 ヘキセンには秋と霧のカードのセットがあり、私はそれらを愛していました、そして今、ためらうことなく、私は同様のスタイルで始めました。 茶色の葉、秋、霧、夜。 そして、それは回転しました。Blenderでの最初の経験を獲得した後、彼は夢から鮮明な画像を思い出し、ゲームに反映し始めました。 パイプのある居心地の良い地下室があり、空を見上げている乾燥した木々のある夜がありました。



その結果、プロジェクトの作業は多くの喜びをもたらしました。 これは理想的なゲームではありません。いずれにしても、これを知っておく必要があります。 しかし、私がそれをした時間は楽しさとポジティブなものであり、90年代のシューティングゲームを作るという私の子供時代の夢が実現しました。



ゲーム自体をSteamに置いたので、お金が必要になりました。 実際、いつものように。 欲求があれば、私はどんなサポートにも喜んでいるでしょう:そして、ゲームと批評とちょうど親切な言葉についてのレビュー。



シューターをプレイ!



画像







All Articles