リバヌス゚ンゞニアリングストラむクコマンダヌ

1990幎代初頭、PCゲヌムの進歩の最前線にいた1瀟、 Origin Systems 。 圌女のスロヌガンは「私たちは䞖界を創造する」であり、それを気にしお、圌らはそれに察応したしたシリヌズUltima 、Crusader、およびWing Commanderは、プレヌダヌの想像力に衝撃を䞎えたした。

ゲヌムの1぀であるStrike Commanderを䜜成するのに4幎ず100䞇時間以䞊かかりたした。 有名なフラむトシミュレヌタにはRealSpaceず呌ばれる独自の3D゚ンゞンがあり、今日では圓然のこずながら、テクスチャマッピング、Gouroシェヌディング、ディテヌルレベルの倉曎、ディザリングカラヌなどのテクノロゞヌが登堎したした。

私の昔の倢は、仮想珟実のヘルメットで遊ぶこずでした。 Oculus Riftのおかげで、このファンタゞヌは珟実に䞀歩近づきたした。

しかし、刀明したように、ゲヌムの゜ヌスコヌドは倱われ、リリヌスされるこずはありたせんでしたので、逆の開発を行うこずにしたした。

この蚘事の公開時点では、私のプロゞェクトはただ完了しおいたせんが、これから䜜成できる技術を共有したいず思いたす。



これ



...そしお、おそらく誰かが私の冒険に参加するよう促したす。

ストラむクコマンダヌ前


90幎代前半、フラむトシミュレヌタは優れおいたしたが、 Falcon 3.0たたはFlight Simulator 4.0は、矎しい芖芚化ではなく、フラむトモデルの粟床に重点を眮いおいたした。





垂堎には倚くのフラむトシミュレヌタがあり、1990幎にOrigin Systemsが新しいゲヌムの䜜成を発衚したこずに気づいた人はほずんどいたせんでした。 しかし、デモが䞊映されたシカゎでのCES 1991以降、すべおが倉わりたした。 ゲヌムには、空軍のフラむトシミュレヌタヌにのみ存圚する芁玠テクスチャマッピング、グヌロヌシェヌディング、フォグなどがあるずは信じられたせんでした。 スクリヌンショットは、競合他瀟をはるかに䞊回る技術を瀺しおいたす。









1991幎以降、倚くの人がゲヌムを埅ち始めたした。 玠晎らしい゚ンゞンず゚キサむティングなプロットだけでなく、RealSpaceは圓初、フラむトシミュレヌタヌのファンにずっお望たしい远加機噚、非垞に高䟡で壊れやすいアクセサリヌをサポヌトしおいたした-THRUSTMASTER WEAPON CONTROL SYSTEMおよびTHRUSTMASTER FLIGHT CONTROL SYSTEM





THRUSTMASTER RUDDERを接続するこずもできたす。



しかし、それだけではありたせんでした。ゲヌムは仮想コックピットをサポヌトしおいたした。 4方向のThrustMasterミニゞョむスティックを䜿甚するず、仮想珟実ヘルメットを必芁ずせずにパむロットの頭を動かし、地䞊目暙/敵機を監芖できたす。





1993最初の連絡


このゲヌムずその3次元゚ンゞンは単玔に「脳を吹き飛ばす」が、信じられないほど匷力なマシンが必芁だった。


珟代の技術レベルから類掚するず、掚奚される構成は次のようになりたす。


そしお、ゲヌムを賌入するだけでは䞍十分であり、むンストヌルプロセスを実行する必芁がありたした。 箱を開けるず、ナヌザヌは8枚のフロッピヌディスクSpeech Packの堎合は+3を芋たした。





興味深い事実ポスタヌには1991幎のクリスマスのリリヌス日が瀺されおいるこずに泚意しおください。 このゲヌムは、クリス・ロバヌトが「今日のコンピュヌタヌゲヌムの黙瀺録」ず呌んだ長いプロセスを経お、1993幎に完成したした。

フロッピヌからハヌドドラむブにゲヌムを展開し、13個のディスクを亀換するのに30分かかりたした。 そしお、すでに終わったず思ったずき、ゲヌムはすべおのカヌドを生成し始めたした。 ゲヌムのサむズは24 MBから38 MBに増加したした。これは圓時の他のゲヌムの4倍の倧きさでした。



興味深い事実マップは、擬䌌乱数生成アルゎリズムに挿入された1぀のシヌド敎数から生成されたした。 これは、むンストヌル埌にカヌドを生成するこずにより、ディスク䞊のデヌタ量の増加を回避する巧みな手法でした。 このトリックの詳现に興味がある堎合は、 The Backroom Boysの本ずゲヌムFrontier Eliteの章を読むこずをお勧めしたす。

386番目のPCでは、カヌドの生成に1時間かかりたした。 しかし、Origin Systemsは、2012幎のゲヌム䞖界の暗い環境の䞭で、 ゲヌムボックスに優れた1ペヌゞの雑誌を提䟛するずいうアむデアを思い぀きたした。 Sudden Deathのおかげで、プロセス党䜓の痛みが軜枛されたした38ペヌゞに、2013幎のクリスマスたでにStrike Commanderをリリヌスするこずを玄束する停の広告があるこずに泚意しおください。

ストラむクコマンダヌ


最埌に、これらの手順の埌、プレヌダヌはゲヌムを楜しむこずができたした... 1993幎4月 ゲヌムが2幎間遅れたずいう事実にもかかわらず、Originが玄束したすべおのものがあり、非垞に売れたした。 ゲヌムは次のようになっおいるはずですが、倚くの人が長い倜をかけお戊いたした。



...最小蚭定では、次のようになりたした。



䞀般に、これはパむロットを惹き぀け、良い思い出を䜜るのに十分でした。

倱われた゜ヌスコヌド


Oculus Riftのリリヌス埌、Strike Commanderぞの関心が再び高たりたした。適切なハヌドりェアが登堎したした。 ゲヌムが20幎前だったので、゜ヌスコヌドは既にリリヌスされおいるず思っおいたしたが、すぐにOrigin Systemsが枯れおいるずいう悲しい話に぀いおの話に出䌚いたした。

1992幎9月、Origin SystemsはElectronic Artsに買収され、1999幎頃、Ultima 9の販売が䜎調だったため、すべおのプロゞェクトがキャンセルされたした。同瀟は、先駆者であるMMORPG Ultima Online 倚くの人々は、完成したすべおのゲヌムの「ゎヌルド」の゜ヌスコヌドずバヌゞョンは、EAリポゞトリの深局のどこかに保存されおいるず考えおいたす。 しかし、 Wing Commander CICの人々に連絡した埌、䌚瀟が閉鎖された埌、すべおの゜ヌスコヌドが消えたこずがわかりたした。

今日は信じがたいですが、圓時は開発者や䌁業は「叀いもの」を保存するよりも新しいゲヌムに興味があり、懐かしさはただありたせんでした。珟代のGood Old Gamesのようなファンやストアの倧芏暡なベヌスはありたせんでした 倚くのストヌリヌは゜ヌス管理の「原始性」のレベルを説明できたすが、おそらく最高のストヌリヌは15分14秒の「ZAP SC」です。


䜜業の初日、1人の開発者が900 MBのStrike Commander゜ヌスツリヌ党䜓を削陀したした。 IT郚門は72時間をかけお開発マシンからすべおを埩元したした。 むンタビュヌでは、Wing Commander 1および2のコヌドがフロッピヌディスクで転送されたずいうこずも述べおいたす。StrikeCommanderの前にはネットワヌクがありたせんでした。

興味深い事実予期せぬむベントの倉化-゜ヌスコヌドの䞀郚は、以前のOrigin開発者によっお最近発芋されたした。WingCommander CICは、 Wing Commander IおよびWing Commander IIIの゜ヌスコヌドを栌玍するオフラむンアヌカむブを栌玍したす。 Ultima 8の開発者は、Ultima 8Paganの゜ヌスコヌドを提䟛されたしたただし拒吊されたした。 ストラむク叞什官に関しおは、誰も圌ず䞀緒にいるず聞いたこずがありたせん。

リバヌス゚ンゞニアリング可胜ですか


長幎にわたり、倚くのチヌムがOrigin Systemsのゲヌムに取り組むこずができ、玠晎らしい結果を達成したした


どれくらい長くお難しいですか Another Worldのほがすべおのリバヌス開発を行ったGregory Montoirず話をした埌、倕方に1時間䜜業するず、1か月で10 KBのアセンブラヌコヌドをCに戻すこずができるこずに気付きたした。 Strike Commanderには倚くの実行可胜ファむルがあり、最初の掚奚されない時間は次のずおりです。

INSTALL.EXE 7 793 : 2
MKTERR.EXE 203 744 : 1,5
SC.EXE 20 000 : 1
MKGAME.EXE 131 696 : 1
OPTTEST.EXE 870 528 : 7
STRIKE.EXE 746 304 : 6
=============================================
15 , 7 2 . -.


1993幎に仕事を始めた人は6幎前に仕事を終えおいたでしょうし、 git cloneを䜜れば十分でしょう しかし、 IDAを起動しおファむルを少し調べるこずで、すべおを元に戻す必芁があるわけではないこずに気付きたした。3D゚ンゞンは完党にSTRIKE.EXEにあり、小さなチヌムが劥圓な時間で凊理できたす。

ロヌドマップ


ストラむクコマンダヌのリバヌス゚ンゞニアリングのために最初に描いたロヌドマップは次のずおりです。

  1. できるだけ倚くのドキュメントを収集したす。
  2. Strike Commanderのグロヌバルアヌキテクチャを理解する。
  3. ゲヌムリ゜ヌスの開発を逆にしたす。
  4. ステヌゞ3の文曞化ず倖挿芖芚衚面の決定、詳现レベルなど
  5. 3D゚ンゞンを再実装し、 NEO_STRIKE.EXEをビルドしNEO_STRIKE.EXE
  6. Oculus Rift VRデバむスのサポヌトを远加したす。

そしお仕事に取り掛かりたした。

パヌト2.アヌキテクチャずドキュメント、


建築


Strike Commanderは、単䞀のモノリシック実行可胜ファむルで構成されおいたせん。 6぀の実行可胜ファむルが連携しおゲヌムプレむを提䟛したす。 基本的な考え方は、 セカンドリアリティコヌドレビュヌに䌌おいたす 。 耇数の.exeファむルの䜿甚は、さたざたな方法で説明できたす。


IDAで調査した結果、各実行可胜ファむルはDOS 21hシステムコヌルを䜿甚しお他の.EXEをロヌドおよび実行するこずが刀明したした。 たずえば、ダむアログずシネマティック挿入の凊理を提䟛するストヌリヌモヌドはOPTTEST.EXEです。 RAMから自分自身を削陀し、3Dモヌドが必芁なずきにSTRIKE.EXEをロヌド/起動したす。

Strike Commanderの各郚分を担圓するコンポヌネントの研究ず研究のために、DosBOXは非垞に有甚であるこずが蚌明されたした。 珟圚実行䞭の実行可胜ファむルの名前は、りィンドりタむトルに衚瀺されたす。

実行可胜ファむル
スクリヌンショット
泚釈
INSTALL.EXE

MKGAME.EXEを開始するモゞュヌル
MKGAME.EXE



実際のむンストヌラヌ
  • 起動ディスクを䜜成したす。
  • サりンドカヌドを定矩したす。
  • コピヌプロテクションを実行したすSudden Deathマガゞンの質問ず回答。
  • 8枚のフロッピヌディスクを開梱したす。

MKTERR.EXE




すべおのマップ芁玠を䜜成し、それらをPAKにグルヌプ化するマップゞェネレヌタヌ
  • ALASKA.PAK
  • ANDMAL1.PAK
  • ANDMAL2.PAK
  • ARENA.PAK
  • CANYON.PAK
  • EGYPT.PAK
  • EUROPE.PAK
  • MAPDATA.PAK
  • MAURITAN.PAK
  • QUEBEC.PAK
  • RHODEI.PAK
  • SANFRAN.PAK
  • TURKEY.PAK
OPTTEST.EXE



ゲヌム内のすべおのダむアログ、映画の挿入、メニュヌ、栌玍庫での歊噚の遞択、オブゞェクトの衚瀺を担圓しおいたす。
SC.EXE

ゲヌムの開始方法。 通垞、 OPTTEST.EXEダりンロヌドしお実行しOPTTEST.EXE 。
STRIKE.EXE

䞉次元゚ンゞンRealSpace。 ゲヌムプレむのアクティブフェヌズを担圓したす。

泚 PAKマップアヌカむブを削陀するず、 STRIKE.EXE䞍足しおいるファむルSTRIKE.EXE怜出し、 MKTERR.EXEを自動的に起動しおマップを生成したす。 ぀たり、ほずんどの䜜業はOPTTEST.EXEおよびSTRIKE.EXEたす。 しかし、パラメヌタヌがパラメヌタヌ間でどのように枡されるかはただわかりたせん。 DOS 21hシステムコヌルを䜿甚するず、コマンドラむンパラメヌタヌを䜿甚したり、特定のメモリペヌゞにデヌタを保存したり、ゲヌムの状態をハヌドドラむブに保存したりできたす。 IDAは、私たちの堎合の状況を教えおくれたす。

重芁なファむルのリスト


ゲヌムで䜿甚される重芁なファむル

//
16 -rw-r--r-- 1 fabiensanglard staff 7,793 17 Jan 03:02 INSTALL.EXE
264 -rw-r--r-- 1 fabiensanglard staff 131,696 17 Jan 03:02 MKGAME.EXE
400 -rw-r--r-- 1 fabiensanglard staff 203,744 17 Jan 03:03 MKTERR.EXE
1704 -rw-r--r-- 1 fabiensanglard staff 870,528 17 Jan 03:02 OPTTEST.EXE
16 -rw-r--r-- 1 fabiensanglard staff 7,793 17 Jan 03:09 SC.EXE
1464 -rw-r--r-- 1 fabiensanglard staff 746,304 17 Jan 03:03 STRIKE.EXE

//
19832 -rw-r--r-- 1 fabiensanglard staff 10,150,560 17 Jan 03:03 GAMEFLOW.TRE
952 -rw-r--r-- 1 fabiensanglard staff 485,877 17 Jan 03:02 MISC.TRE
1304 -rw-r--r-- 1 fabiensanglard staff 665,456 17 Jan 03:02 MISSIONS.TRE
13544 -rw-r--r-- 1 fabiensanglard staff 6,932,708 17 Jan 03:02 OBJECTS.TRE
1760 -rw-r--r-- 1 fabiensanglard staff 899,145 17 Jan 03:02 SOUND.TRE
3288 -rw-r--r-- 1 fabiensanglard staff 1,681,738 17 Jan 03:02 TEXTURES.TRE

//
2040 -rw-r--r-- 1 fabiensanglard staff 1,042,674 17 Jan 03:05 ALASKA.PAK
2040 -rw-r--r-- 1 fabiensanglard staff 1,042,570 17 Jan 03:04 ANDMAL1.PAK
2040 -rw-r--r-- 1 fabiensanglard staff 1,042,960 17 Jan 03:09 ANDMAL2.PAK
2048 -rw-r--r-- 1 fabiensanglard staff 1,046,382 17 Jan 03:09 ARENA.PAK
2040 -rw-r--r-- 1 fabiensanglard staff 1,043,268 17 Jan 03:06 CANYON.PAK
2032 -rw-r--r-- 1 fabiensanglard staff 1,038,716 17 Jan 03:05 EGYPT.PAK
2024 -rw-r--r-- 1 fabiensanglard staff 1,033,096 17 Jan 03:07 EUROPE.PAK
656 -rw-r--r-- 1 fabiensanglard staff 333,464 17 Jan 03:02 MAPDATA.PAK
2040 -rw-r--r-- 1 fabiensanglard staff 1,044,396 17 Jan 03:03 MAURITAN.PAK
2032 -rw-r--r-- 1 fabiensanglard staff 1,037,798 17 Jan 03:04 QUEBEC.PAK
2040 -rw-r--r-- 1 fabiensanglard staff 1,043,840 17 Jan 03:08 RHODEI.PAK
2048 -rw-r--r-- 1 fabiensanglard staff 1,046,316 17 Jan 03:06 SANFRAN.PAK
2048 -rw-r--r-- 1 fabiensanglard staff 1,045,766 17 Jan 03:08 TURKEY.PAK

//
80 -rw-r--r-- 1 fabiensanglard staff 37,732 17 Jan 03:02 MSFILES.PAK

// 3D-
8 -rw-r--r-- 1 fabiensanglard staff 1,806 17 Jan 03:02 PALETTE.IFF


Strike Commanderに関連するドキュメント




パヌト3.リバヌスリ゜ヌス開発。


アヌカむブシステム


PAKおよびTRE圢匏は、マリオの仕様のおかげで100明確です。


libRealSpaceのTreArchiveずPakArchviveを䜿甚するず、アヌカむブを簡単に管理/解凍できたす。

飛行機


航空機は、IFFアヌカむブの完党なファむルに保存されたす。 95は理解可胜です。 4぀の重芁な郚分で構成されたす。

  1. 空力特性。
  2. ダメヌゞシステムずラむフポむント
  3. 歊噚システム
  4. 倖芳
    1. 3Dデヌタ
    2. テクスチャヌ

JET圢匏の仕様を参照しおください。

カヌド


マップは95理解可胜です。 これらはX.PAKに保存されたすが、 TEXTURES.TREテクスチャも参照したす。 カヌド圢匏の仕様を参照しおください。

マップテクスチャフォヌマットの仕様を参照しおください。

メニュヌ


メニュヌは50理解できたす芖芚化ですが、ロゞックではありたせん。

ただ仕様はありたせん。

アニメヌション


アニメヌションは50明確です


アニメヌション圢匏の仕様を参照しおください。

パレット


パレットは100明確です パレット圢匏の仕様を参照しおください。

AI /ゲヌムロゞック


今のずころ、圌らは圌らに取り組んでいない。 それらはおそらくすべおexeに含たれおいたす。

プレむテスタヌマニュアルに蚘茉されおいる時間ずドキュメントを考慮するず、単玔な決定朚は存圚しないず思いたす。 おそらく階局的な有限状態マシン。

Arctificial Intelligence for Gamesのすべおのテクニックの詳现な説明を参照しおください。

ゲヌムを保存する


保存されたゲヌムの圢匏は75理解できたす。 保存されたゲヌムの圢匏の仕様を参照しおください。

パヌト4.ゲヌムを再び開始したす。


Strike Commanderの曞き換えプロゞェクトが開始されたした。 完党な゜ヌスコヌドはGitHubにありたす 。

git clone https://github.com/fabiensanglard/libRealSpace

゚ンゞン




航空機/オブゞェクト










メニュヌ




地図ビュヌア






グラフィックス圢匏






アニメヌションビュヌア






ゲヌムビュヌア


ただ䜕もありたせん ゲヌムでSCUMMスタむルの仮想マシンを䜿甚するこずを匷く期埅したした。 この郚分はOPTTEST.EXEによっお実行されOPTTEST.EXE

パレット


パレットの効果を再珟するのはおそらく難しいでしょう。パむロットが過負荷になるず、画面が灰色に倉わりたすGが倧きくなるず暗くなりたす。 これは、パレット間を補間するこずにより実装されたす。 ここでシェヌダヌが圹立ちたす。





Oculus Riftのサポヌト


Oculus Riftの統合に関する䜜業はただ開始されおいたせん。 [玄。 レヌンGithubでのプロゞェクトの最埌のコミットは昚幎10月であるため、悲しいかな...]

Source: https://habr.com/ru/post/J339838/


All Articles