アマゾンバナーリンク

何度も詰んだ失敗を糧に今度こそ勝ちにいきます

こんにちは!ジェイです。只今FPSオンラインゲームを制作中でしたが、詰んだ状況になったので報告するとともに、これから自分のゲーム制作に対する想いを伝えます。

直すべきバグの症状

ホスト以外のクライアントで、武器を拾った後に武器を変更するアニメーションが終わった後に、床に配置するはずの武器が別の場所へとばされるというものです。

バグに対処した方法

2窓で開いて怪しい場所にブレークポイントを仕掛けてウォッチリストを観察したり、ログを書きだしてみたりしましたが、当たりをつけられませんでした。もう少し粘ればいけたかもしれませんが、さらなるバグが起きてこのバグ自体を直すのが厳しい大変な状況に追い込まれました。

Unityを開いた瞬間にすぐに落ちる究極のバグが発生

https://gyazo.com/0e7fd0c1c2e553635b9fea67421646b9

この7秒の動画後に以下のような表示が出てエディタ自体が落ちるというものです。

そして開くたびに下のDemo(not loaded)が増えていきます。これは以前DontDestroyOnloadを多用しすぎた時に起きたバグとほとんど同じ症状のものでした。

その時は自分でDontDestroyOnloadを使用していたので、解決できましたが今回はMonobitEngine内部で使用されているものなので、自力で解決するのは難しいです。

失敗の原因の本質

結論から言うと「己自身の技術力を高める事にこだわりすぎた」につきます。ゲームを作る人の多くの目的は「誰かを楽しませる」というのが、一般的だと思います。企画書を作り、誰にどんな楽しみを提供しようかな?など考えながら、少しでもおもしろいゲームを作ろうとするでしょう。

このツイートは個人的にすごく好きでまさにその通りだと思います。ですが、私の場合は明確に「差別化」を意識してます。そのために行き着いた答えは、個人では到底できないような圧倒的な技術力を身に着けるです。明確にいうなら、高度なオンラインゲームに特化したコンテンツ作りです。

ペルソナは自分

ゲームの企画書を作る時にはターゲットとなるユーザー層を決めます。それをもっと細かく突き詰めたものが「ペルソナ」といいます。

最初は技術がなくて思い通りのゲームが作れませんでした。ゲーム制作の専門学校を卒業後、ゲーム会社に勤めている時は、技術力は高まりましたが、ゲーム制作以外の仕事や会社の決めた企画でゲームを作る事ばかりでした。

なので今になってようやく技術と自分の作りたいゲームを作るが現実にできるようになりました。ここではじめてペルソナを自分に設定することができたのです。

オンラインゲーム制作の民主化

私の最終的な目標はオンラインゲーム制作の民主化です。ゲーム制作自体はUnityやUE4など優秀なゲームエンジンが出てからというもの個人で制作する敷居も昔に比べてだいぶ下がりました。しかし、FPS,TPSなどのリアルタイム性の高いオンラインゲームを作るのは非常に難易度が高く、それらを詳しく説明したものは見かけることはありません。そこで「オンラインゲームの作り方の教科書」を作りたいと思いました。

現在の状況から具体的な選択肢に落とし込む

以前に一度完全にオンラインゲーム制作に挫折して今また詰んでしまったわけですが、とりえる選択肢はいくつかあります。

  • バックアップから開いた瞬間に落ちるバグが起きる前に戻してから、武器が別の場所に飛ばされるバグを修正する
  • 新しく作り直す
  • 前のTPSのプログラムを修正して続きを作る

これらがすぐに思い浮かびましたが、現状一番よさそうだなと思ったのが前のTPSの続きを作るです。

具体的な失敗な原因

まさにこれです。マルチスレッドのプログラムのデバッグが難しいように、上から下に流れるだけのプログラムに比べてコルーチンやリモートプロシージャコールも、デバッグの難易度が高いですし、これら二つを同時に使ってしまうと正直手に負えない状況になります。

具体的に言うと

  • リロードのアニメーションをリモートプロシージャコールで同期させながら、コルーチンを使って、リロードが終わった後に弾を補充する
  • 拾うアニメーションをリモートプロシージャコールで同期させながら、コルーチンを使って、拾うアニメーションが終わったら武器を交換する

オンライン対戦できるFPSにはよくありがちな処理ですが、これらの処理をすべて同期させるのは、非常に難しいです。

次は勝算のある戦いを挑む

これで4度目の作り直しになりますが、今までとは違い心が折れてません。理由は

  • 前に心が折れて詰んだ時よりも格段に技術力が上がっていて、解決できる自信があるから
  • 自分ができる範囲を自覚したから

です。技術的な内容では

  • 以前に詰んだ武器の切り替えや拾う行動の処理のイメージをはっきり掴めた
  • オンラインゲーム特有の罠やMonobitEngineの特性を理解できた

などです。

苦しみを乗り越えた先に待つもの

文章では伝えづらいですが、ここまでのオンラインゲーム制作で費やした時間や労力、苦しみは想像以上です。けれども、私は1人で作業をしてますが1人ではないです。応援してくれるリスナーさんたちがいます!本当にみんなには感謝してるし大好きです!どんな形になるかはまだわかりませんが、必ず世に出すので、それまでは応援していただけると嬉しいです。

日記

Posted by ジェイ