King's Bounty III:オリジナルのJavascript / HTML5 DOSゲームの高度なリメイク

背景と哲学的考察



プログラミングワークショップの同僚、特に早い段階でコンピューターテクノロジーを試し始めた多くの同僚のように、私の心のどこかに、私の最初の経験の最もロマンチックでロマンチックな思い出のコレクションがあります。 かつて1987年に、父が週末に仕事に連れて行ってくれたとき、彼は賑やかなイスクラ-1030-11の前の椅子に厳soleに座りました。 その頃、私は自分の将来の人生でやりたいことをしっかりと理解しました。



画像



最近では、DOSBoxを起動することで、屈託のない子供時代の香りに簡単に浸ることができ、子供たちの全能性、めまいがする興味、刺激的な新しい知識とスキルの素晴らしい感覚を覚えています。 現在、私は34歳で、100人を超える従業員の監督の下で、特にインテリジェントなデータ処理のための複雑なアルゴリズムが必要な場合は、かなり多くのコードを書いています。 背後-学生の成果の武器-ACM Olympiadの決勝戦、旧ソ連選手権でのチェスエンジンの勝利、私の名前で呼ばれる検索ツリー上のアルゴリズムの1つ、数十万行のコードがありますが、そのような喜びはありません。のんきな子供時代の世界に戻るほど刺激的ではありません。



約10年前、私の最初の家庭用コンピューターであるBK-0010-01エミュレーターが手に入りました。 そのため、プログラミングを開始しないためには多くの作業が必要でした。 しかし、今度はノスタルジアの別の波が私を非常に無意味なステップに押し上げました。それは、クレイジーなエンタープライズを完了した後に経験した感情的な隆起の感覚によって正当化される可能性があります-キングスバウンティのリメイク/続編を作る-ヒーローズラインのすべてのゲームの祖先マイト&マジックの。



一般的に、これは一人のプログラマーの時代が過ぎ去った秘密です。 インターネットや大量の専門文献がなく、コンピューティングリソースが不足している環境で、別の左利きの人が、殺されていない熊の皮から7つの帽子を短時間で巧みに切り取ったとき、単一のヒーローは90年代に残りました。 今日、ほとんどの場合、プログラマーの仕事は集合的であり、開発者の成功はアルゴリズムの知識と技術スキルではなく、必要な情報とコミュニケーションスキル(特定の要件を満たす読みやすいコードを書く能力を含む)をすばやく見つける能力に依存します。



一般に、今日の最初から最後まで一人の人がゲームを書く状況(プロット開発、ゲームインタラクションロジック、グラフィックの作成、音楽の選択、ゲームダイアログの作成、ダイレクトコーディングを含む)は、現代の業界ではまったく異常です。 靴屋はブーツとオーブンを縫う必要があります-パイのパイキーパー、そうでなければ労働生産性は最高ではありません。 しかし、スケールの反対側には高いレベルのモチベーションがあり、場合によっては、関連するコストを補う以上のことを可能にします。 モバイルプラットフォームとWebの開発により、否定の否定の法則に厳密に従って、一種のフラッシュバックが可能になりました。多くの現代の成功したゲームスタートアップは、自分自身またはマイクロコマンドによって作成され、抑制されない作業のおかげで驚くべき成功を示しています。



もちろん、私の場合、このプロジェクトは純粋に面白いものです。収益化に関するアイデアはありません。そのような「アンダーグラウンド」リメイクの場合、それはほとんど不可能です。 ゲームのグラフィックとロジックの大部分が元のゲームから借用されたという事実により、タスクは大幅に簡素化されました。 この点で、現在放棄されているOpenKBプロジェクト(http://sourceforge.net/projects/openkb/)は多くの助けをしました。著者は、元のゲームロジックを再構築し、元のゲームのデータ形式を分析するという素晴らしい仕事をしました。 このプロジェクトの作者によって書かれたマニュアル、およびネットワーク上で見つかった他のいくつかのアマチュアマニュアルは、エネルギーを大幅に節約しました。



テクノロジー



当初から、クロスプラットフォームに賭けが行われましたが、JavascriptとHTML5に関しては、これまで開発者の巨人の努力によって多かれ少なかれ達成されてきたため、一般に、開発言語を選択する際に特定の代替手段はありませんでした。



もちろん、JSに翻訳されたいくつかの言語があり、いくつかの利点がありますが、小さなプロジェクトで追加のレイヤーを作成する必要はありませんでした。 さらに、JSがpre延しているため、プロジェクトの作業中に解決する必要のある問題は既に誰かによって解決されているという事実に常に頼ることができ、誰もが見られるコードスニペットをetsしみなく提供します。



元のゲームのゲームインターフェイスは比較的単純であるため、重いゲームフレームワークの使用を放棄することが決定されました。 ライブラリの中で、jQueryのみが使用されました(原則として、それなしで実行できます-実際、必要なのは$ .inArray、$ .trim、およびブラウザーイベントトリガーの操作だけです。正直、イベントに関連してクロスブラウザーの問題は恐ろしいため、jQueryはプロジェクトに残っています)。



グラフィックスと音楽は、標準のHTML5メカニズム(キャンバス、オーディオ)を使用して実装されました。 標準のCanvasメソッドは、最小限の労力でスプライトグラフィックスを実装するには十分です。 オーディオは、ゲームに効果音を提供するために必要なすべてを提供します。 必要なすべてのスニペットは、単純なクエリを使用してstackoverflowで簡単に検出されるため、現代の開発エコシステムでの実用的なプログラミング経験は、1晩か2晩のすべての技術的なニュアンスを理解するのに十分です。



作業進捗



作業は適切に行われ、ほぼ1か月半の間開始されました。 当初から私は自分自身に1日500行のコードを書くという冗談の誓いを立てました。 もちろん、最初の条件付き機能バージョンの準備が整うと、ペースが大幅に低下しました。 バグの修正と、すでに記述されたコードのマイナーなリファクタリングに時間の大部分が費やされ始めました。 作業の最初の週に急いで下されたいくつかの決定は正当化されませんでした-特に、ダイアログ、ウィンドウ、およびGUIのその他のコンポーネントを操作するためのミニライブラリを作成する必要がありました。



特別な注意は、ゲーム内の保存の論理に関する作業に値します。 ここで、データ圧縮アルゴリズムが大好きであるため、組み込みの圧縮アルゴリズム(辞書+動的ビットアラインメント付きLZW)を使用して保存を圧縮するという、もう1つの弱点に屈しました。 遡及的な合理化に頼ったので、モバイルデバイスのスペースを節約したいという要望(非圧縮のセーブは依然として100キロバイト以上を消費します)と、詐欺師の生活を少なくともわずかに多様化したいという願望でこれを正当化します。



90年代後半に、戦いのみ(マジックやその他のエンターテイメントの拡張セットを含む)を含むKBのバージョンをCで作成したときに、元のゲームからグラフィックを既に取得しました。 確かに、古いコードは1999年に死んだねじで死にましたが、私はそれをどこでどこで手に入れたかをほぼ覚えていました。 アドオンは、Pixlrを使用して改良され、基礎として撮影された画像のネットワークで見つかりました。 花嫁は写真の1つを手伝ってくれたので、厳密に言えば、ゲームに取り組んだだけではありません。



音楽-ネットからの適切な無料クラシックの選択、音響効果-オリジナルのDOSBoxからの録音-> Audacityゲーム、またはhttp://freesound.orgからのわずかに処理された無料サンプル。



コーディングにかかった時間の半分から3/4まで-受け取ったプロジェクトでは12,000行弱(jQueryを含まない)(380キロバイトのスクリプト)。 残りはゲームテキストの記述(元のゲームとは異なり、著しく大きく、さらにゲームはバイリンガルです)とテストです。



結果



基本的な用語でのゲームの仕組みは、元のゲームの仕組みを繰り返します-攻撃公式、魔法など。 オリジナルと完全に一致しています。 また、元のゲームからは、グラフィックス(少数の新しいオブジェクトが追加されています)と最初の本土の地図(最小限の変更)が取得されます。 プロットは大幅に拡大されており、大陸は4ではなく5ですが、2番目のカードは元のゲームよりもサイズが大きくなっています。 あらゆる種類のジョーク、秘密、新しいプロットのねじれを追加しました。 IEのモバイル版であるChrome、FF、Edge、IEで経済全体をテストしました。



バグ、プロジェクトの開発に関するアドバイス、および一般的なフィードバックを見つけることに感謝します。



ゲームのページのアドレス: http : //genes1s.net/kb/game.html



All Articles