【Unity】プロトタイピングでアイディアを素早く形にする開発
ソフトウェアの開発方法としてプロトタイピングという方法があります。試作品を素早く作り上げてユーザーのフィードバックを早い段階で得ることにより、ユーザーの感覚に基づいてゲームの完成度を上げていくサイクルを早く回すことができます。
あなたのゲームをいち早く完成させるための研究所
ソフトウェアの開発方法としてプロトタイピングという方法があります。試作品を素早く作り上げてユーザーのフィードバックを早い段階で得ることにより、ユーザーの感覚に基づいてゲームの完成度を上げていくサイクルを早く回すことができます。
ゲーム内のキャラクターの行動は何らかの理念などに基づいて行われるようにすると説得力が増します。例えばお盆などの文化がそうですね。現実にある日本の風習、海外の風習を調べてみるとゲーム作りに活かせるヒントが見つかります。
今日からオリンピック開幕です。コロナ禍で非常に大変な状況下ではありますが、やるからには選手たちを応援したいですね。せっかくの機会なのでオリンピックからゲーム開発に何かアイディアを取り入れられるか考えてみます。
最近作っていた2Dのサンドボックス系アクションRPG「Minable&Create/ミナクリ」をSteamで早期アクセス版としてリリースしました! マイクラが好きな人やRPGツクールで地形を作るのが好きな人におすすめのゲームなのでぜひ遊んでみてください!
ゲームの発売日を待つ時間は、恋人からの返事を待つ時間のようにとても待ち遠しいものです。その待ち遠しい時間をあることに使うことによって、主観的に発売日があっという間に来たような感覚になります。このライフハックについて記事の中で提案しています。
C#でアクセシビリティレベルを表現するために使うアクセス修飾子を紹介しています。このうちpublicについてはUnityで特別な位置付けにあるので、C#での扱いとUnityでの扱いの両方を加味して選択するとグッド。
Unityで使っているC#はオブジェクト指向のプログラミング言語で、継承やオーバーライドの機能を上手く使えると効率よくコーディングできます。この記事では本当に導入レベルの話をしていて、キーワードの紹介に近いので他のページも一緒に参照するといいかもしれません。
ゲーム開発をしているとほぼ毎日勉強しているような感じです。今作っているゲームを完成させるための勉強だったり、将来的に作りたいゲームのための勉強だったりと、必要に応じてか未来を見据えてかの種類があるので、使い分けをしてみようというのがこの記事の趣旨です。
何をもって「あるべき姿」とするかを事前に明確にしておくのが大事です。システム的な「あるべき姿」だったら設計書や仕様書にあるものがそうですし、ゲーム的な「あるべき姿」だったら、このゲームを遊んだ時にユーザーさんにどうなっていて欲しいのかを言葉にしておくと良いと思います。
TransformクラスのSetAsFirstSiblingなどを使うことでHierarchyウィンドウで親オブジェクト内の順番を変更することができます。UIの場合はHierarchyウィンドウでの順番が描画順に影響してくるのでたまに意識してみると良いかも。
thisキーワードを使ってそのインスタンス自身を表す、というのは最初はよく分かっていなかったのですが、使ってみると便利でした。特にフィールドに値をセットしたい時にはthisを使ってフィールドであることを分かりやすくするのも大切ですね。
Hierarchyウィンドウではゲームオブジェクト間で親子関係を設定することができます。適切に親子関係を設定しておくことで、Hierarchyウィンドウから情報を確認しやすくなり、開発やテストのスピードが向上します。スクリプトから親子関係を設定する場合はTransformのSetParentメソッドを使うのが便利なので、これをマスターしましょう。
パーリンノイズを使ってなだらかに高さが変化する地形オブジェクトを生成する機能をエディタから使えるようにしました。インスペクターウィンドウに表示されたボタンをクリックすることでシーン内に地形オブジェクトを生成してくれます。ライトのベイクをしたい時には事前にオブジェクトを生成しておく必要があったのでこの形でも実装してみました。
このブログで扱っているパーリンノイズに関する記事をまとめています。一部を見てもらうだけでもいいですし、どんな点で気をつけないといけないのかといった課題についても潤を追って対応しているので流れをおってもらってもいいかもしれません。
このページでは主にゲーム全体で使いたい設定値、定義値をstaticなクラスに記載する際、constとstatic readonlyのどちらを使った方がいいかなーという点を出発点に、コンパイル時定数と実行時定数の違いを掘り下げています。
UnityではMonoBehaviourを継承したクラスを作ることが多いですが、これ以外にもいわゆるC#で作成するような通常のクラスを作成して使っていくことで柔軟にコーディングできます。また、staticなクラスも適切に使っていくことで、ゲーム内のデータを保持したり設定値や定義値を保持することもできます。
パーリンノイズを使って自然に変化する値を計算し、TerrainのHeightMap(ハイトマップ)として設定します。Terrainは画面から操作するものと思っていましたが、スクリプトからも値を設定できるので便利です。
パーリンノイズを使ってなだらかに変化する地形を作成しましたが、パーリンノイズを加算または乗算によって複数回重ね合わせることで、より変化に富んだメリハリのある地形を作成することができます。加算、乗算の両方についてこの記事で実験しています。
ドローコールを減らすためには、ドローコールの処理をまとめるようにしましょう。まとめるためにはUnityのバッチング処理である動的バッチ処理、静的バッチ処理を活用します。ドローコールが減ればCPUの処理負荷が減り、CPUの処理負荷が減ればフレームレートが維持され、快適なゲーム環境を提供することができます。
なにか新しい技術や機能を試す時には、いきなりメインのプロジェクトで試すのではなく、検証用のプロジェクトを作って試すようにしましょう。万が一プロジェクトを壊してしまった時の焦燥感、やっちまった感は結構心にくるので、影響を抑えつつ検証するのがグッド。