アンリアルエンジン4で150時間でゲームを作成する(ビデオ+ソース)

こんにちは、Habr! アンリアルエンジン4で約150時間(50コール〜3時間)でゼロから始めた比較的小さなプロジェクトを紹介したいと思います。プロジェクトは週に1回だけストリームでライブしました(合計で1年かかりました)ユーザーの質問に答えながら。



プロジェクト自体は商用として意図されていませんでした。 ゲーム開発の複雑さ、つまり次のような問題を示すために、実際に目標を設定しました。





画像



一連のストリーム全体の最後に、プレイ可能なプロトタイプの「Survival」シューティングゲームを入手しました。 ガラスが半分満たされている人は、プロットなしでプレアルファと呼ぶことさえできます。



プロジェクトの詳細、ストリームレコード、ソースコードなどに興味がある場合は、読み進めてください。



プロジェクト全体は、「ブループリント」と呼ばれる視覚的なプログラミングシステムに実装されました。 そしてもちろん、多くの専門家はそれを幼稚と呼ぶことができます。比較的大規模なプロジェクトでも簡単に開発できます。 さらに、すでに証明できているように、これは比較的迅速に行うことができます。



すぐに質問に答えたいと思います:「 なぜ青写真はなぜC ++ではないのですか? 」。 まあ、最初に、私がシリーズを始めたとき、私はほとんどプラスを知りませんでした。 私はまだBPで同様のシングルをしますが。 第二に、PSUは私たちの場合、プラスにほとんど劣りませんが、同時に多くの可能性を提供します:プラスで多くのエラーを可能にすることはできません。BPとC ++の間に注意をそらす必要はありません。 はい、そして私たちの場合、ほとんどすべてのロジックがイベントに基づいているという事実を考えると、それほど遅くはありません。



また、グラフィックスを少し操作することもできました。 残念ながら、アセットを作成する時間がなかったため、一部を空のままにし、一部はエディターのプリミティブから直接作成し、一部のコンテンツは無料のEpic Gamesデモから借りました。 それにもかかわらず、彼らはなんとか自分自身で何かをすることができました。例えば、昼と夜のシステム、水とシーンオブジェクトのいくつかのマテリアルの後処理です。



ストリームの計画には、開発中に発生する可能性のある問題も含まれていました。 若い開発者が遭遇するかもしれないことを示すためだけでなく、コードをデバッグする方法、バグを探す方法、そしてコード全体を2倍速く実行できるようにコードを記述する方法も示すために、具体的にライブで決定しました。 もちろん、私は何十年もプログラミングの経験がありませんでしたが、これは私が時々愚かな間違いを犯したことに影響を与えました。 はい、そして多くの開発者がゲームを書く過程で多くのポイントに挑戦できると確信しています。



当然のことながら、ゲームにはプロットや目標はなく、純粋なメカニックのみであるため、これは本格的なゲームとはほとんど言えません。 それにもかかわらず、結果は誇りに思うことができ、プロジェクト全体の意図を完全に反映していると思います。



ゲームに実装できたすべてのリスト
キャラクター



  • キャラクター管理
  • 重要な指標のシステム(生命、鎧、スタミナ、飢hung、渇き)
  • ビューの切り替え(一人称と三人称)
  • Modelka(Fuseで行われ、Mixamoからのアニメーション)
  • 武器の動きと使用のカスタマイズされたアニメーション
  • オブジェクトとの普遍的な相互作用




インベントリオブジェクトシステム

  • インベントリコンポーネント(必要なオブジェクトに埋め込む)
  • さまざまなアイテムサイズをサポートするセルシステム
  • ページあたりのセル数と重量によるインベントリのサイズ。
  • 在庫に入れることができるアイテムのクラス。 アイテムはオブジェクトとして保存されます。

    • 重量、サイズ、情報、アイテムの状態
    • スタックの機能(1つのセルに1つのサブジェクトが多数ある場合)
    • アイテム使用ロジックを追加する機能
    • 在庫から投げる
  • 在庫とやり取りするためのインターフェース
  • 別のコンポーネントと独自のコンポーネントとの間で交換するためのインターフェース。
  • インベントリ間およびインベントリ内でのオブジェクトのドラッグアンドドロップ操作。
  • コンテキストメニュー項目
  • 在庫内および世界中のアイテムにカーソルを合わせるときのヒント。
  • コンポーネント/ゲームの開始でオブジェクトを作成するときに生成されるアイテムのリスト。
  • コンポーネント/ゲームの開始でオブジェクトを作成するときの初期アイテムのリスト。
  • 他の在庫間の取引システム

    • 取引インターフェース
    • 資金管理コンポーネント(取引に必要)




設備システム

  • いくつかのアイテムの種類:帽子、トップ、パンツ、ブーツ、武器
  • トップ、ズボン、ブーツの骨格同期。 (ソケット上の帽子と武器)
  • ドラッグアンドドロップをサポートする便利な機器ウィンドウ
  • ドレッシング時のロジック修飾子のサポート


武器



  • 遠隔武器

    • クールダウン
    • インベントリからの弾薬アイテムの使用
    • 発射物/弾丸クラスのサポート
    • カーチェイス/シングルファイア
    • 散乱を伴う反動(独自+要因、例えばランニングやスクワットから)
  • 近接武器(いくつかのタイプのダメージチェック付き)
  • 使用すると武器が悪化する


クラフトシステム



  • 処方箋クラフト(レシピを選択し、彼が作成した、アラフォーフォールアウト)
  • アイテムのクラフト(必要なアイテムを投げ、彼が作成した、Mine Minecraft)
  • ユーザーインターフェイスは、2番目のタイプのクラフト専用です。


積極的なモブ



  • 乱暴なモブ(もし見たら走って倒し始める)
  • 混合型Mob(撮影、ただし十分近い場合は、ヒットするまで実行されます)
  • 彼らが撃つことができない場合、ダルニキは障害物を走り回ります。
  • 殺した後の戦利品の組み込みのインベントリがあります。
  • スポーンゾーン
  • クラス一覧
  • スポーンチャンス


NPC



  • スポーンゾーンをパトロールする都市NPC
  • ユニークNPC
  • 一意のNPCの基本的なスケジュールコントローラー
  • ダメージ対応(逃げるか、既存の武器を使用)
  • 殺害後の戦利品の組み込みインベントリ。
  • オブジェクトダイアログシステム

    • ダイアログツリー
    • すべての答えはオブジェクトです
    • 回答ごとに、アクセシビリティのロジックまたは条件を証明できます。
    • 対話インターフェース
    • いくつかの既製の応答クラス(取引を開始し、リソースがあれば、ダイアログを終了します)


建設業



  • 配置をサポートするデザインのクラス
  • 配置時の在庫からのリソースアイテムの使用。
  • いくつかのタイプの構造(壁、基礎、窓など)のスナップ
  • デザインのメニュー
  • 十分なリソースがあるデザインを強調する


オプショナル



  • 都市、森林、池(泳ぐことができます)の小さな地図。
  • デイ/ナイトチェンジシステム


    • 最初または3番目からの眺め。 ペルシャ人と共通
    • ヘッドライトをオン/オフにします。
    • 組み込みのインベントリコンポーネント(トランクで対話する必要があります)
  • 垂直型の作業階段のようなもの。
  • メインメニュー
  • 一時停止メニュー
  • グラフィック設定メニュー




ただし、プロジェクトについて延々と話すことができます。 そして、記事を本に変えないために、私はゲームとビデオの可能性に精通することを提案します。 そして、本当に興味を持った人のために、すぐ下にすべてのストリームの記録、ソースへのリンク、ゲームのビルドを見つけることができます。







ストリームの50パートすべての記録



パーツのコンテンツ
  1. プロジェクトを開始して計画します。 キャラクターの制御と行動を作成します。
  2. 在庫システムを作り始めます。
  3. 在庫システムのベースを作り続けます。
  4. 装備と武器の基地を準備しています。
  5. 武器と弾薬の使用に取り組みます。
  6. 自動撮影と照準を行います。
  7. 基本的な作成システムを作成します。
  8. ランニング、リサイクルアイテムとその摩耗。
  9. 武器のリロードを実現します。
  10. 近接武器を作ります。
  11. 接近戦を終了し、はしごを作って登ることができます。
  12. 木、石、茂みなどのインタラクティブなオブジェクトを作成します。
  13. HUDを作成し、インベントリのインターフェイスを作成し始めます。
  14. 在庫管理インターフェースの作業を続けています。 オブジェクトを使用してセルを生成します。
  15. セルの生成と主題の場所の検索を続けます。 インベントリページを追加します。
  16. インベントリ内のアイテムと詳細情報ウィンドウを少し操作します。
  17. ドラッグアンドドロップでアイテムをインベントリにドラッグアンドドロップし、別のインベントリにドロップします。
  18. このパートでは、クラフトの視覚化について説明します。
  19. 別のインベントリに転送するために、スタックからアイテムの数を選択するウィンドウを作成します。
  20. さまざまなクラフトレシピをサポートし、インベントリのさまざまなバグを修正します。
  21. 昼と夜を変更するシステムを作成し、プロジェクトの新しいシーンを作成しています。
  22. 攻撃的なボット用のAIの作成を開始します。
  23. Mobの攻撃と、攻撃に対する反応を行います。 さらに、死んだMobから略奪品を集めています。
  24. NPCのスポーンゾーンを作成します。 また、インベントリにランダムアイテムの生成を追加します。
  25. 私たちは4.13に更新され、遠くの攻撃的なNPCを作成します。
  26. HUDにさまざまな要素を追加します。 武器の手動リロードを追加します。
  27. 骨格の衣服と帽子のサポートを終了します。 最初の人に武器のアニメーションを追加します。
  28. 機器システムと連携するインターフェースを作成します。
  29. 取引システムと資金管理のコンポーネントを作り始めました。
  30. 取引コンポーネントを作成およびカスタマイズすることにより、引き続き取引を行います。
  31. リロードアニメーションをカスタマイズするだけでなく、トレードのキャンセルも行います。
  32. 在庫、ヘッドライト、ビュースイッチを使用してトランスポートを作成します。 懐中電灯を作成します。
  33. 構築物(またはオブジェクトを目の前に配置するシステム)を作成します。
  34. 構築用のインターフェイスを作成し、壁のスナップを作成します。
  35. テント、ベッド、椅子、テーブル、ランプ、ドアなど、さらにいくつかのタイプの構造を作成します。 チェスト、き火。
  36. 屋根、窓を追加します。 私たちは、他のデザインに関して調整を終了します。
  37. 私たちは小さな和解を行い、NPCを入力します。これもこのレッスンで作成します。
  38. 住民のための対話システムを作り始めています。
  39. フォグと後処理を設定します。 ゾンビモデルをインポートし、アニメーションをカスタマイズします。
  40. 対話システムを完成させています。
  41. サードパーティのアイテムやアーマーのモディファイヤと相互作用します。
  42. メインメニュー、一時停止メニュー、グラフィック設定を作成します。 また、ゲームの最初のビルドを収集します。
  43. ユニークな居住者と、攻撃から逃げ出す都市NPCのスケジュールを実装しています。
  44. インベントリにコンテキストメニューを追加し、インベントリのいくつかのバグを修正します。
  45. 反動、散布、ショットアニメーション、および銃器を攻撃する機能を追加します。
  46. アグレッシブおよびアーバンNPCを完成させ、それらに関連するさまざまなバグを修正します。
  47. メインキャラクターのアニメーションを設定します。 さまざまな服を追加します。
  48. ゲームのさまざまなエラーを修正します。
  49. ゲーム内のクラフト、NPC、装備のさまざまなエラーを修正します。
  50. マップを少し変更して、最後のビルドを収集します。




Gitのソース (ZIPアーカイブのダウンロードは機能せず、何らかの理由でアーカイブが破損しています。)

Yadiskのソース (ライセンスはソースと同じです)

ゲームを構築する



将来的には、このようなストリームを継続する予定です。 たとえば、次の行には、マルチプレイヤーシューティングゲームのストリームがあり、次に戦略があります。



All Articles