ゲームと結論を一人で作った方法

1つのファン製コンピューターゲームFallout:The X-Projectの開発の歴史と、それを「キャンディ」にする試み



この記事では、関連する最新の知識は表示されません。また、一般的に、技術的な側面にはあまり注意を払いません。



その理由を説明します。ゲーム自体は1998年から2008年にかけて開発され、2004年から2007年にかけて最も活発に開発されました。 しかし、私はそれを終わらせたかっただけです。 それ以外の場合、なぜプロジェクトにそんなに時間と労力を費やしたのですか? さらに、私は一人ではありませんでしたし、他人の努力が無駄になることを許すべきではありません。 責任



しかし、離れないようにしましょう。 この記事の恩恵を受けるのは誰ですか? まず第一に、私自身と同じ男たちに、研究所で勉強しています。 夢のゲームを作りたい夢を見る人。



祝福から始める



いいえ、このゲームはもちろん「夢」ではありませんでした。 しかし、それを開発する決定の時点で、私はプロジェクトをすぐに終わらせることができると思いました(aha-aha!)そして私のような人々の注意を引き付けます。 「若い男の希望が満たされます...」



もちろん、フォールアウトをプレイしました。 ブラックアイルとインタープレイからのものは、歴史の年代記にのみ残っています。 二次元、等尺性。 うんざりするロシア語翻訳。 しかし、それは爆発でした。 Kheshesnos。



したがって、プロジェクトを選択するときに、この特定のトピックを使用することにしました。 2番目のフォールアウトはすでにリリースされていますが、3番目のフォールアウトについては、誰もno音さえしていません(アイデアの時点)。 このおもちゃはファン製で、ロシア語を話すプレイヤー専用に設計されており、利益はありませんでした。 経験のみ。 ここで誰と共有していますか。



ちなみに、Fallout Tacticsは後に登場し、そこからゲームのかなりの数のグラフィックが借用されました。 そして音。 ただし、元の両方のフォールアウトはすべて描画されました。



なぜテキストクエストなのですか? 繰り返しますが、グラフィックスは最低限必要です。 アーティストはいなかったし、フリーランスの交換はまだ存在していなかった(そうでなければ私も投資したのではないかと思う)。 彼は新しいゲームの開始時に短いイントロを作成しました。 彼に感謝します!



そして、私はゲームの作成の背景を指定しました。 さらに進めましょう!



言語とプラットフォームの選択



GameDevを学習し始めたとき、標準はC ++でした。 C ++ IDEの場合は、MS Visual Studio。 私は勉強して使い始めました。 グラフィックスおよびメディアを使用する場合-MS DirectX、およびそのパーツDirectDrawおよびDirectSound。 3Dでは、最初から良いアイデアがなかったため、このプロジェクトでは完全に不適切でした。



ただし、DirectX自体はそれほど便利なものではありません。NukeDXライブラリを見つけたためです。 確かに、NukeDXは、彼との共同作業を開始した時点ですでに長命を命じていました。 しかし、私が望んだのはそれで働くことだけでした。



当時のゲームがWindows上のデスクトップPC向けであることは疑いの余地がありませんでした。 ラップトップはPCよりもはるかに高価であり、タブレットについては難解なレビューでしか読むことができませんでした。 Androidとスマートフォンはまだ初期段階にあり、研究所の秘密の地下室にいました。 また、Linuxはコンソールサーバーソリューションとしてのみ認識されていました。



2010年、2010年、私は隠しませんが、「Windows Pocketの下にこのすべてを押してはいけない」という考えが現れましたか? OSの名前で私は嘘をつくことができますが、本質は明確だと思います。



アイデアは現れたり消えたりしました-すべてのコードを書き直して、グラフィックをやり直さなければなりません。



そして、スクリプトについて一言言ってみましょう



最初はパッセージの非直線性を意味するテキストロールプレイングゲームを作成したので(ああ、それは当時流行っていました!)、プロジェクトを毎回再コンパイルせずにゲームデータを操作できるようにする必要がありました。 そして一般的に、スクリプトエンジンを自分でゲームにねじ込むのは非常に興味深いことでした。



スクリプトエンジンは、次の問題を解決する必要がありました。





これらの要件を満たすすべての人のうち、選択はLuaに委ねられました。 なぜ彼は特に-私は今覚えていません。 この言語は、大規模なプロジェクトですでに使用されています。 はい、今では使用されています(私の知る限り、同じWoWなどで)。



ライブラリは無料で、例がありました。 そして、私はLuaをねじ込みました。



ジャンプする前に、空気を肺に入れて息を止めます



すべて順調です。プラットフォームとツールを決めました。 次に、アイデアを具体的なものに変える方法について考える必要があります。



そのとき、すでにMicrosoft Foundation Classesを使用していくつかの簡単なプログラムを作成していたので、それらを使用してゲームのスクリプトエディターを作成することにしました。



ゲームは一連のシーンで構成されており(この例ではテキストで説明されている)、次のシーンへの移行は回答オプションの選択に依存するため、次のスクリプト構造を作成しました。



ゲームスクリプトエディター



スクリーンショットでわかるように、シーンには、説明テキストとオプションに加えて、他にも多くのデータがあります。 たとえば、現在の日付(再生時間による)。 そして今、それを見て、私はすでに修正する必要があるものを見ることができます。



時間に加えて、シーンの画像も表示します。 エディターでは、彼女に番号が与えられます。 そして、ゲームは左上隅に表示されます。 そして、あなたが推測したスプライトは、この数に対応しています。



シーン名(場所)もあります。 シーンの再生可能な音楽ファイル。 また、対応するシーンへのリンクを持つアクションのオプション。



そして、ここではインタラクティブ性について少しお話します。 熱心な読者は、何かが書かれているイベントフィールドに気付いたと思います。 そうです、これはこの画面に移動したときに実行されるスクリプトです。 最初の画面で、これはプレーヤーのログに新しいタスクを追加するだけです。



AddQuest(1, "  , ,   "); AddQuest(1, " ");
      
      





プログラムの観点から、必要なパラメーターを使用してLuaで利用可能なアプリケーション関数を呼び出します。



そして、さらに2つのポイント:



1)各回答オプションには[条件]フィールドがあります。 同じLuaを介して、いくつかのゲーム変数をチェックし、このチェックに基づいて、回答のバリエーションを表示するか、非表示にすることができます。

2)各回答オプションには、独自の実行可能スクリプトを含めることができます。 つまり、何らかのオプションを選択すると、特定のアクションが必要になる場合があります。 たとえば、戦闘画面を呼び出します。 またはサウンドを再生します。 または、条件が満たされた場合、特定の画面への移行。 等



このような簡単な方法で、ゲームワールドとの対話性とユーザーインタラクションの問題を解決しました。



そして、すべてがデータ構造のscenario.datファイルに保存されます。 同じMFCのシリアル化メカニズムを使用してディスクに保存されます。 まあ、楽しみのために、保存中にエンコードされます。



ダイビング



まあ、あまり便利ではありませんが、私は何らかの形で実用的なスクリプトエディタを作成しました。 さあ、ゲームを始めましょう。



そして、ここで...はい、どんなに! Photoshopには、ヒッチグラフィックスを使用した退屈な作業がたくさんありました。 しかし、プログラミングの観点からは、特に複雑なことはありませんでした。 一見。



不必要な詳細に飛び込むことはしませんが、目の前で最初に発生した深刻なタスクは人工知能でした。 論理的なタスクのためにすべてをスクリプトに入れることができる場合、私は戦いですべてをコードに激しく埋めることに決めました。 そして、それは興味深いが、ゲーム開発の時間のかかる瞬間でした。



バトル画面



もちろん、素晴らしいランダムドライブはここにあります。 しかし、コンピューター側で少なくともある程度意味のある意味を持たせる必要がありました。 しかし、戦闘モデル自体は、かつて非常に人気のあったファイトクラブ、または単にBCから借りたものです。 そしてフォールアウトに適応しました。 打つ、打つ場所を選択すると、同様の答えが得られます。



しかし、それは大丈夫です。 また、いくつかのタスク(クエスト)を完了するには、インベントリが必要です。 そして、ここで私は本当に一ヶ月間立ち往生しました-別の。







いいえ、在庫自体は複雑なものではありません。 まったく逆です。 私は彼のためにドラッグ&ドロップを書き続けました。 確かに、今は彼が多くのわいせつな言葉を発したことを覚えているだけです!







オブジェクトのドラッグアンドドロップに関する問題を克服したとき、ホロディスクの表示、タスクログの表示などの小さな詳細のみが残っていました。 ささいなこと。







石に出会わないように底を確認する必要があります



しかし...それはすでに2008年でした。 出て行って、フルハウスのフォールアウト3-荒れ地の世界の一種のThe Elder Scrollsを使いました。 ゲーマーの世代は長い間変化しており、Fallout:X-Projectテキストクエストの設計者は、プレイをまったく停止するか、この種のゲームへの関心をすべて失いました。



しかし、私は自分自身と他のすべての人に次のことを証明したので、経験をまったく後悔していません:



  1. 最初はプログラミングの分野の知識がなくても、どこでもこの専門分野で勉強することなく、プログラムを書くことができます。
  2. 一人でも、恥ずかしがらないコンピューターゲームを作成できます(GameMakerと彼の同類にこんにちは)。
  3. ゲームを開発すると、たくさんの楽しみが得られます!


また、私自身の経験から、次のことがわかりました。



  1. プロジェクトには期限が必要です!
  2. 何かを始める前に、自分以外の誰かがそれを必要とするかどうかを注意深く研究する必要があります。 バナリティですが、これは誰もが続けて攻撃し続けるレーキです。
  3. バージョン管理システムは単なるスーパーです!
  4. OOPはバージョン管理システムよりもさらにクールです。
  5. 大きなテキストを読むのを好む人はほとんどいません。
  6. しかし、テキストを読む必要がある場合は、読みやすいようにする必要があります! 私の場合、スタイルは利便性に勝ちましたが、それは大きな間違いでした。
  7. プロジェクトの作業を開始する前に 、流通チャネルを熟考する必要があります。
  8. 言語にひらめくだけでなく、非常に現実的なことをする仲間を見つけること。 しかし、簡単ではありません。
  9. 複数のチームポジションを1人で組み合わせるのは非生産的です。 タスク間の絶え間ない切り替えは、作業速度に悪影響を及ぼします。
  10. 既製の設定(ユニバース)内でゲームを作成することは、0を使用するよりも簡単です。
  11. 設計段階では、余分な部分を削除する価値があります。 最終リリースにはまだ入りませんが、食べましょう。 そのため、たとえば、ゲームでは元々意図されていた都市間の移動はありません(世界地図)。
  12. コンピューターゲームは、さまざまな材料の合金です。 したがって、ここでは専門家が必要です。または、このすべてを自分で行うことができます。
  13. 遅かれ早かれ、忍耐が報われます。 ただし、手遅れにならないように、段落1を参照してください。


また、ゲームがエラーなしでコンパイルされ、開始され、すべてが意図したとおりに正確になったこの魔法の瞬間。 これは努力する価値のある魔法です!



愛人メモ



それは長い間古くなっているので、私は文学のリストを引用しません。



→ただし、必要に応じてGithubでソースコードを選択できます

ゲーム自体 、好奇心が強い場合



All Articles