2023年5月15日月曜日

Unreal Engine 5でホラーゲームを作るためのステップ



• イントロダクション 

• ステップ1:アイデアを決めよう 

• ステップ2:アセットを集めよう 

• ステップ3:プロジェクトをセットアップしよう 

• ステップ4:ゲームオブジェクトを設定しよう 

• ステップ5:AI を追加しよう 

• ステップ6:ゲームプレイを実装しよう 

• ステップ7:ポーリングを設定しよう 

• 結論


イントロダクション


アンリアルエンジン5は、ゲーム業界で最も人気のあるゲーム開発エンジンの一つです。このエンジンを使用することで、ホラーゲームを含む多くの種類のゲームを作成できます。ホラーゲームは怖さや緊張感を含み、プレイヤーをグリップするストーリーラインがあります。アンリアルエンジン5を使えば、面白くて興奮するゲームを作成できます。


ステップ1:アイデアを決めよう


ステップ1:アイデアを決めよう ホラーゲームを作るために最初にやるべきことは何でしょうか?そうです、ストーリーを考えることです。プレイヤーにとって、悪夢に取り憑かれたような恐怖を感じさせるためには、物語に沿ったプレイが必要です。あなたが設定する物語は、プレイヤーがゲーム内で経験する恐怖を決定づけます。 次に、キャラクターや敵を設定することも重要です。キャラクターや敵の設定は、ゲームプレイを強化します。プレイヤーが対峙する恐ろしい敵は、プレイヤーが恐怖を感じる上で重要な役割を果たします。これに加えて、プレイヤーが自分がプレイしているキャラクターに共感することができれば、彼らはその恐怖をより感じることができます。 「こっちは白い目で追われる」「あっちは喋りませんが、つきまとってくるうえに、エアコンを入れたくないときに限って暑気た感覚を与えてきますよね。」といったような恐怖を誘う様な敵のアイデアを考えるのも良いでしょう。 以上のポイントに留意しながら、クリエイティブに物語とキャラクターを設定しましょう。


ステップ2:アセットを集めよう


ステップ2:アセットを集めよう ゲーム開発に必要なアセットを集めましょう。 3Dモデル、アニメーション、音楽においては、多くの場合無料のリソースがインターネット上に存在します。有料の場合もありますが、クオリティの高いものが必ずしも高額とは限りません。 無料リソースを使う際は、その提供元のライセンスに関する情報を確認しましょう。 安易に権利侵害を行ってしまうと、後々クレームを受けるリスクが生じます。 ちなみに、アニメーションに関しては、自分で作成することもできます。なかなか難易度の高い作業ですが、時間をかければ高品質アニメーションを作成することができます。 まさに、コスパ最高のゲーム開発のための最高の方法です。


ステップ3:プロジェクトをセットアップしよう


ステップ3:プロジェクトをセットアップしよう 早速、アンリアルエディタを起動しましょう!エディタ起動後、まずはプロジェクト設定を行います。 プロジェクト設定では、エンジンの設定やプロジェクトの基本設定を行います。プロジェクトでは色々な設定を行うことができますが、ホラーゲームを作る場合には、ゲームの雰囲気に合った環境設定やライトマップなどを設定することが重要です。 一度設定したら、変更するのが大変なので、しっかりとチェックしていきましょう! 必要な設定はプロジェクト設定の下にあるプラグイン設定です。ここで、Oculus VRやSteam VR、Mobile Multi-Viewなどのプラグインを追加することができます。 これらのプラグイン設定を行うことで、プラットフォームに合わせた必要な設定が行えます。特にVRに関しては、プラグインごとの設定が必要です。 アンリアルエディタに慣れていない人は初めは戸惑うかもしれませんが、慣れてしまえば非常に使いやすいエディタです。必要な設定をしっかり行い、ゲーム開発をスタートさせましょう!


ステップ4:ゲームオブジェクトを設定しよう


ステップ4:ゲームオブジェクトを設定しよう さあ、やって来ましたゲームオブジェクトの設定タイム!まずはプレーヤー、敵、アイテムのオブジェクトを作りましょう。アンリアルエンジン5を立ち上げ、新規プロジェクトを作成します。 プレーヤーオブジェクトを追加するには、「プレーヤー」を右クリックして、新しい静的メッシュを作成してください。敵やアイテムも同じように追加できます。 オブジェクトにコンポーネントを追加して、機能を実装しましょう!プレーヤーには移動コンポーネント、敵にはAIコンポーネント、アイテムには収集コンポーネントを追加しましょう。 コンポーネントの追加方法は簡単です。追加したいオブジェクトを右クリックして、「コンポーネントの追加」を選択し、必要なコンポーネントを選んでください。 これでオブジェクト自体は完成です!次のステップに進みましょう。


ステップ5:AI を追加しよう


ステップ5:AIを追加しよう ゲームに人工知能を追加することで、より現実的で魅力的な体験を提供できます。敵のAIを作成する際には、攻撃や回避などの基本的な行動を考慮する必要があります。また、プレイヤーにAIを追加すると、彼らがアイテムを収集したり、ゲーム内での行動に応じてステータスを変更したりすることができます。 しかし、AIを正しく作成するためには、時間がかかることもあるため、焦らず慎重に作業を進めましょう。そして、テストを繰り返して、動作を確認しましょう。敵が真っ直ぐ進む代わりに異なる方向に移動している場合や、プレイヤーが急停止する場合など、AIにとって理解不可能な問題が発生することがあります。そのようなエラーを修正することができれば、AIの動作をより容易に調整することができます。


ステップ6:ゲームプレイを実装しよう


ステップ6:ゲームプレイを実装しよう さて、ここで大事なのがプレーヤーの移動を設定すること。プレーヤーの動きが滑らかで自然なものであれば、プレイヤーにとってゲームはより楽しいものになるでしょう。 そして、敵との戦闘を実装することが大切。敵の攻撃の仕方や弱点を考えて、プレイヤーが勝てるように調整しておくことが必要です。手数を増やすためのアイテムを配置することで、プレイヤーがゲームを進める上での選択肢が広がります。 ここでは、どんどんアイデアを出して、プレーヤーが楽しめるようなゲームプレイを実装していきましょう。新しいアイデアや面白い仕掛けがあれば、実装してみると良いでしょう。楽しく作ればプレイヤーも楽しんでくれるはず!


ステップ7:ポーリングを設定しよう


ステップ7のポーリングは、プレイヤーがゲーム内でどこにいるかを追跡するために必要です。この機能を追加するには、アンリアルエディタでレベルブループリントを開き、プレーヤーの位置をカメラに表示する必要があります。また、プレーヤーが特定の場所に到達すると、トリガーを使用してイベントをトリガーすることもできます。ポーリングは、プレイヤーのロケーションに関してサーバーとクライアントの間で通信するためにも使用されます。設定する際には、適切な間隔を設定することが重要です。


結論


ゲーム開発は面白い!アンリアルエンジン5でホラーゲームを作ろう!この手順に従えば、あなたも素晴らしいゲームを作ることができます。アセットの収集、プロジェクトのセットアップ、オブジェクトの設定、AIの追加、そしてゲームプレイの実装を行い、楽しさに満ちたホラーゲームを作り上げましょう。怖いけど楽しい体験をプレイヤーに提供し、彼らを魅了し続けましょう。

2023年5月12日金曜日

シンプルなホラーゲームをC#で作る:Unity3D入門

• イントロダクション 

• 前提条件 

• シンプルなストーリーの考え方

 • ゲームのアセット作成 

• スクリプトの作成 

• ゲームのデザインとテスト

 • コンクルージョン


イントロダクション


Unity3Dとは、3D のゲームやアプリを開発するためのマルチプラットフォームのゲームエンジンで、C#を使って開発します。C#はプログラミング言語の一つであり、オブジェクト指向プログラミングの基本的な概念を取り入れています。シンプルなホラーゲームとは、恐怖や緊張感を煽るために簡潔なストーリーとシンプルな操作性を持ったゲームです。この記事では、Unity3DとC#の基礎を理解してシンプルなホラーゲームを作成する方法を学びます。個性やユーモアを交えた独自の手法で進めていきます。それでは、さっそく開発に入りましょう。


前提条件


イントロダクションの中で、私たちはUnity3Dを使ってシンプルなホラーゲームを制作する方法について話しました。次のセクションである前提条件については、本当に大切なことについて説明していきますので、是非しっかりとご覧ください。 Unity3Dのダウンロードとインストールは、お使いのパソコンの仕様によっては長時間かかることがあります。そのため、隙間時間を見つけてインストール作業を進めることが必要かもしれません。 C#の基本知識に関しては、それほど難しいものではありません。基本構文を覚え、簡単なプログラムを作成できるようになれば、開発に必要なスキルとして十分です。 開発に必要なツールの概要については、基本的には画像を編集するソフト、プログラムを書くエディタ、Unityの開発環境が必要です。これらはオンラインで簡単に入手することができますが、慣れるまでそれなりの時間がかかるかもしれません。 以上が前提条件の内容になります。次のセクションでは、シンプルなストーリーの考え方について述べますので、引き続きお付き合いください。


シンプルなストーリーの考え方


シンプルなホラーゲームを作成するにあたり、ストーリーの骨子、登場人物の設定、そしてプレイヤーの目的を考える必要があります。 ストーリーは簡単であっても、ゲームの雰囲気を決定づける大切な要素です。何が起こっているか、なぜプレイヤーが恐ろしい場所にいるのかを考え、物語全体の基本を作ります。 登場人物の設定も重要です。プレイヤー自身が主人公である場合もありますが、敵キャラクターや他の登場人物にも出番を持たせることで、物語がより豊かなものになります。 そして、プレイヤーの目的。それが何であるかを明確にすることで、プレイヤーはゲーム内で何をすべきかを理解し、ゲームに没頭することができます。 このように簡単なストーリーにも、細部にわたって考えることが重要です。次に進む前にしっかりと考え、改善を加えることで、より面白く魅力的なゲームに仕上げましょう。


ゲームのアセット作成


アセットの準備 シンプルなホラーゲームを作成するために、アセットは不可欠です。アセットとは、ゲーム内で使用されるグラフィック、サウンド、3Dモデル、テクスチャーなどの要素のことです。Unity Asset Storeから無料で入手できるアセットがありますが、オリジナルのアセットを作成する方がよりクリエイティブでパーソナルなゲームを作成できます。 プレイヤーキャラクターの作成 プレイヤーキャラクターは、ゲーム内で操作するメインキャラクターです。このキャラクターが声を出すこともできるように、Unity3Dの「アバター」機能を使って顔の表情を設定できます。また、アニメーションもコントロール可能です。プレイヤーキャラクターのデザインと外観をカスタマイズし、楽しい体験を作り出すことができます。 敵キャラクターの作成 敵キャラクターは、プレイヤーの邪魔をする存在です。敵キャラクターを作成するには、アセットストアで無料で入手できるものもありますが、ユニークなものを作成するためには、オリジナルのキャラクターを設計する必要があります。敵キャラクターのデザインは、ゲームの雰囲気や物語に合わせて設定することが大切です。 背景の作成 背景は、ゲーム内でプレイヤーに体験させる最も重要な要素の一つです。背景は、ストーリーの設定や世界観に合わせて設計する必要があります。背景をよりリアルに見せるために、インタラクティブな要素を追加することも可能です。背景を設計するには、2Dまたは3Dのグラフィックソフトウェアを使うのが一般的です。 以上が、シンプルなホラーゲームを作成するために必要なアセットの準備、プレイヤーキャラクターと敵キャラクターの作成、および背景の作成です。これらの要素をカスタマイズし、自分だけのオリジナルなゲームを作成しましょう。


スクリプトの作成


スクリプトの作成 さて、いよいよシンプルなホラーゲーム制作の醍醐味である、スクリプトの作成に入ります。この段階では、プレイヤーや敵キャラクターの動き、アクションの設定、衝突判定、そして簡単なAIの実装など、ゲームの中心的な要素が一気に形づくられます。 まずキャラクターの動きやアクションについて、プレイヤーが方向キーを押した時にどのように移動するかや、敵キャラクターがプレイヤーを発見した時にどのように動くかなどを決定します。その際、キャラクターの状態というものを定義しておくと、スムーズな動作の実装が可能になります。 また、キャラクター同士の接触判定についても、コードで指定する必要があります。プレイヤーの攻撃が敵にヒットするかどうかの判定や、敵CharacterがPlayerに追従するようなAIの実装などには、接触判定が不可欠です。 上記のようなスクリプトの記述が完了した後は、簡単なAIの実装に取り掛かります。ここでは、Playerの位置を意識した敵の追跡や、敵を避けるようなPlayerの動作を設定することができます。 スクリプトの作成においては、細かい部分まで手動でコードを書かなければならないため、かなりの労力が必要です。しかし、一つ一つのコードが上手く組み合わさって、画面上で動作する様子を見ると、達成感は格別ですね。


ゲームのデザインとテスト


ゲームのデザインとテスト 最も重要なことの1つは、ゲームのUIデザインです。UIは、プレイヤーがゲームを操作するための主要な手段であり、その見た目はゲームの印象を大きく左右します。しかし、UIが綺麗に見えても、使いづらい場合はプレイヤーは不快な思いをすることもあります。したがって、ゲームのUIには、見た目だけでなく、使いやすさも兼ね備えることが必要です。 また、ゲームプレイのテストと修正も非常に重要です。一般的に、プレイテストは、ゲームに欠陥がないかどうかを確認するために行われます。ただし、単にバグを見つけるのではなく、ゲームプレイ全体を改善するための貴重なフィードバックを得ることもできます。このようなフィードバックを取り入れることで、プレイヤーにとってより良い体験を提供することができます。 ゲームのUIデザインとプレイテストは、ゲーム開発において非常に重要な要素であることは間違いありません。デザインは、ゲーム自体を販売するためのツールであり、テストはプレイヤーエクスペリエンスの改善のための貴重なツールです。したがって、これらの2つの要素をうまく組み合わせることが、良いゲームの作成につながります。


コンクルージョン


いかにも怖いシンプルなホラーゲームを作成するには、Unity3DとC#の基本スキルが必要不可欠です。本ブログを通じて、ホラーゲームを開発するために必要なステップを学びました。ゲーム開発に必要なスキルと知識は、ブログの前半で軽く触れました。この点を再度まとめます。 重要な点の一つは、基本的なプログラミングスキルを持っていることです。簡単なC#スクリプトの作成には、プログラムの基本構文や変数の使用方法が必要です。また、簡単なAIを実装するためには、条件文の使用方法やループの理解が欠かせません。 次に、Unity3Dの基本的な操作方法について学びました。ゲームオブジェクトの作成や配置、コンポーネントの追加など、基本的な操作を理解することが必要です。そして、自分のアセットを作成し、それをUnityにインポートする必要があります。 以上のような基本スキルを身に付けることで、シンプルなホラーゲームを作成することができます。今後の学習と開発においては、それぞれのスキルをより高度に扱えるようになることが大切です。また、自分なりのアイデアを持ち、新しい技術やツールを積極的に取り入れることが、より良いゲーム開発につながります。 以上が、本ブログで学んだことの結論です。皆さんも、ぜひ自分なりのホラーゲームを作成してみてください!

2023年5月2日火曜日

ChatGPTでゲームを作ってみる!


おはこんばんにちは!ギルガメです! すごくすごく久しぶりの投稿になります。


今世界で話題のChat GPTを使って簡単にゲームを作りたいと思います!

Chat GPTを触ってみたところ。。すごい。。凄すぎる!

まずChat GPTで簡単な質問でゲームを試しにUnity3DのC#で作ってみることにしました。
Chat GPTに「Unity3Dで簡単なゲームをC#コードでお願いします」って投げてみたところ、PONGゲームの紹介やコードがババっと回答をいただきました。

すごくわかりやすく、コードもC#でボールやパレットなどのスクリプトも丁寧に説明してくれました。

また対戦相手も必要なので敵のAIのスクリプトも頼んでみたら。。一瞬でできました。
こんなに簡単にAIも作れてしまった。。いい世の中だ。生きててよかった笑

早速教えてもらったコードを紹介していきます。

まずはボールのスクリプトになります。

using UnityEngine;

public class Ball : MonoBehaviour
{
public float speed = 10f;

private Rigidbody2D rb;

void Start()
{
rb = GetComponent<Rigidbody2D>();

float angle = Random.Range(-45f, 45f);
rb.velocity = new Vector2(speed * Mathf.Cos(angle), speed * Mathf.Sin(angle));
}

void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "Paddle")
{
float y = (transform.position.y - col.transform.position.y) / col.collider.bounds.size.y;
Vector2 dir = new Vector2(1, y).normalized;
rb.velocity = dir * speed;
}
else if (col.gameObject.tag == "Wall")
{
rb.velocity = new Vector2(rb.velocity.x, -rb.velocity.y);
}
}
}

次にプレイヤーが動かすスクリプトになります。

using UnityEngine;

public class PlayerController : MonoBehaviour
{
public float speed = 10f;

private Rigidbody2D rb;

void Start()
{
rb = GetComponent<Rigidbody2D>();
}

void FixedUpdate()
{
float vertical = Input.GetAxis("Vertical");

Vector2 movement = new Vector2(0, vertical) * speed * Time.deltaTime;
rb.MovePosition(rb.position + movement);
}
}

そして敵AIのスクリプトです。

using UnityEngine;

public class AIController : MonoBehaviour
{
public Transform ball;
public float speed = 10f;

private Rigidbody2D rb;

void Start()
{
rb = GetComponent<Rigidbody2D>();
}

void FixedUpdate()
{
if (ball.position.y > transform.position.y)
{
Vector2 movement = new Vector2(0, 1) * speed * Time.deltaTime;
rb.MovePosition(rb.position + movement);
}
else if (ball.position.y < transform.position.y)
{
Vector2 movement = new Vector2(0, -1) * speed * Time.deltaTime;
rb.MovePosition(rb.position + movement);
}
}
}

この3つのスクリプトだけである程度は遊べるPONGゲームになる・・

2Dでプロジェクトを立ち上げてスフィアのオブジェクトにBallのスクリプトの付与します。
パレットもいい形のものにPlayerController、そして同じ形のパレットにAIControllerを付与します。

あとは細かいところは壁を作って、バウンドするようにPhysics Material 2Dを付与させて。ボールを位置を真ん中に設置して完了になります。

簡単に作っているのでデザインなどはありませんが下記のように遊べるようになります。



Chat GPTでコードに詳しくなくてもなくてもゲームが作れそうですね。。
難しいコードも簡単に教えてくれるのでランダムダンジョンの生成など、敵AIの細かい動きなどもできそうなので試していきたいと思います。

2022年9月9日金曜日

ユグドラシルプロジェクト日記 #3



おはこんばんにちは!ギルガメです!

久しぶりにブログを更新します。

ユグドラシルプロジェクトは「Colyseus」でリアルタイム通信のサーバーをAWSのEC2で構築してワールドマップのような世界を実現していました。

ですがいくつか問題があったのでFishnetを使ったリアルタイム通信にリニューアルしたいと思います。

「Colyseus」で問題があった例です。この時はまだバージョンも古かったので今は下記の問題はないかもしれません。

  • NPCの追加、実現したかったのはNPCの動きを他のプレイヤーにもシンクロさせることでした。これを実現するにはサーバー側でNPCのデータを持つ必要があるため、「Colyseus」で実現するのは難しく感じました。
  • モンスターのリスポーン、こちらもNPCの追加と同様にサーバー側でモンスターの数など管理してリスポーンする必要があるため、Unityでサーバーのロジックを埋め込みたいので「Colyseus」を諦めました。
  • ワールドマップでSceneを切り替える
まだまだやりたいことはあるのですが、一番欲しい機能としては上記のものになるのですが「Colyseus」からFishnetに切り替えていきたいと思います。

「Colyseus」はNodeJSでできているのでギルガメ的にはすごく好きでした。もちろんColyseusが悪いわけではなく、沢山の部屋を作成してミニゲームする的なものはColyseusでもいいかなと思います。サーバー内で処理するならUnity内で処理を書きたいのでColyseusよりFishnetの方がやりやすいのかなと思ったのでチャレンジです!!!

とはいえ、Fishnetはまだまだちょっと触ったぐらいですがサーバーをAWSか自宅にするかすごく迷います。。

まずはリメイクできるかですが、どうぞよろしくお願いいたします!

2021年9月11日土曜日

ギルガメオフィシャルページのリニューアル!#1

おはこんばんにちは!ギルガメです! すごくすごく久しぶりの投稿になります。 

なかなか時間が作れずゲーム開発にも手が回りませんでした.. 

今回は長くページを更新していなかったので自作のオフィシャルページのバージョンが古くなったため、新しく作り直すことにしました! 

古いバージョンの技術は以下になります。 

フロントエンド 
  • ReactJs 

バックエンド(AWS) 
  • NodeJs 
  • Express 
  • MongoDB 

さすがにReactのバージョンも下がってきました。またSEO的にもよくないので今回はSEOにも強いサーバーサイドレンダリングを使ってSEOにも強いページにしたいと思います。 

今回リニューアルに使う技術はこちらです! 

フロントエンド 
  • NextJs 
  • TailwindCSS 
  • Supabase 

バックエンド - 使いません!

そう!今回はバックエンドを使いません! 
え?APIはどうするの?毎回ページを更新するの?などあると思いますが、今回はサーバーレスで行きます! それを可能にするのがNextJSとSupabaseの組み合わせです! しかもNextJSでVercelにページを公開することですべて無料になるという素晴らしい世界です。

Supabaseを使ってみてすごく使いやすく無料でストレージも使えて・・もう最高でした。 興味のある方はこちらからどうぞ! 


まだ日本語のドキュメントはないのかな・・それでも見ただけですごくわかりやすい内容かなと思うので誰でもすぐに導入できると思います。 しかもログイン機能も簡単に導入できます・・神ですか・・ 

今回はギルガメオフィシャルページのリニューアルを終わらせてからまたどんどんゲームを開発していきたいと思います! 興味のある方は気軽にコメントをください! 

これからもギルガメをよろしくお願いいたします!