ただ、せっかく1つの作品を作るので、ゲームとして必要な部分を揃えたいと思うのもまたクリエイター。タイトル画面~ゲーム中~エンディング画面といった遷移は考えてみます。
ゲームの遷移ってこんな感じですよね。そんなわけで今回はタイトル画面についてです。
タイトル画面を構成するゲームタイトルやスタートボタンはUMGで実現可能。UMGに関しては公式ドキュメントが充実していました。
ウィジェットを作成してパレットからテキストやイメージ、ボタンといったパーツを配置していくことで作成。
大体こんな感じになりました。
レベルブループリントにてウィジェットを追加。
このままではFirst Personキャラクターが持つキーの移動が効いてしまうので、入力をUIのみにすることと、ついでにカーソルを表示する処理も加えると完成です。
これで起動するとタイトル画面のウィジェットの表示されます。
後はタイトル画面の背景をどうするかということですが、「さプライズ」ではゲーム中の画面を背景として使い、シームレスにゲーム状態に移行させることを考えました。
色々配置したゲームセンターの建物。これを背景として使います。
カメラ(TitleCamera)を設置。カメラを右クリックしてパイロットモードにするといい感じのところに持っていきやすい。
カメラを設定してもまだ有効にはなりません。この「さプライズ」では、First Personプロジェクトをテンプレートとして使っているので、デフォルトでカメラの設定はキャラクターの持っているカメラになります(FirstPersonCharacterのFirstPersonCamera)。
カメラの制御を移すやり方は色々ありますが、今回は起動時にタイトル用のカメラにターゲットを変更する方法を使います。
レベルブループリントのBeginPlayにて、SetViewTargetwithBlendを使ってカメラを切り替えます。
これで起動時にカメラがTitleCameraになるので、ウィジェットのボタンを押したときにはFirstPersonCameraに戻るように処理を追加します。BlendTimeに少し値を設定することで、カメラの切り替わり中を補間してくれます。
ちなみにFirstPersonCharacterの初期位置はココ。扉入ってすぐのところです。
実行するとこんな感じにシュッとカメラが移動します。後はウィジェットを消せばゲーム中への遷移が完成です。
ウィジェットのボタンを押した時の処理に、ウィジェットの削除、カーソルの表示処理、入力処理の制限を解除を追加します。
これでタイトル画面からプレイ中へシームレスな移動ができました。
実際の完成版では扉を開けて閉める処理やサウンド、カメラの調整を行ったため、Level Sequenceも使っていますがが、遷移部分の処理としては同じです。
Unreal Engine4を触るのは初めてだと製作記の冒頭で書きました。
前はCocos2d-xを使っていましたが、そちらはC++を使うプログラムばりばりのテキストベースのゲームエンジンで、
さぁ作るぞ!
って思ってから、とりあえずゲームにはタイトル画面があってから、ゲーム画面。よし、タイトル画面を一旦先に作っておこうか…いやその前に抽象クラスを…みたいなイメージなわけです(私だけだったらスミマセン)。
Unreal Engine4ではプロジェクトを新規作成したら謎の青い男が動いていて、タイトル画面を作ることをスッカリ忘れて遊んでいました。いくぶんテキストベースよりもゲームを作りやすい気がします。とはいえ、Unreal Engine4でもゲームとして完成させることを考えた場合にはタイトル画面や独自のデータを取り扱う必要が出て来きます。データの取り扱いに関してはブループリント上では構造体とか列挙型の扱いがちょっと面倒くさいと感じてたりします。
次はゲーム本編、クレーンゲームの製作記です。
ではでは。
]]>
ざっくり最初から書いてたら結構な量になってしまい、今回は応募作品の紹介とさわりのさわりの話だけです。
クレーンゲームシミュレーション。
昨今のゲームセンターのアーム事情を再現したかったので、わりとアームが弱くて掴めません。ずらして落とすゲームになっています。もうそれはクレーンゲームじゃない気もするんですけどね(笑)。
ゲーム性を出したかったので、筐体によってアームの強弱を設定し、それを推測できるように周りの客がつぶやくという形になっています。そして最終的にはどれだけお金を使わずに景品を取れるかというリアルな目標になっています。
今回のぷちコンのテーマは「サプライズ」
いくつか思い立ったのですが、その中には軍艦の「サプライズ」というものがありました。結果的にはそっち側で応募したら被ることになる上に、3Dモデルの作り方がいまいちよくわかっていない私としては恥をかくところでした。
しかも私自信、ミリタリーにあまり詳しくないですしね。
そんな私が採用したのは「さ」プライズ。
プライズ=景品
よって「さ」を景品としたクレーンゲームという駄洒落。
Cocos2d-xを使ってた私としては、Unreal Engine4の物理についてはちょっと気になっていたのでこの際物理シミュレーションも試してみようとも思ったわけです。
実は3Dのゲームエンジンを初めて触ることになります。といってもぷちコンが始まってからではなく、その前から興味があってちょこちょこ触っていました。
Unreal Engineといえばゲーム好きはまず知っているゲームエンジン。Unreal Tournamentも遊んだ経験あります。採用ゲームで遊んだことのあるゲームを列挙すると大変なので、中でも好きなものといえばGears of WarとかBorderlandsでしょうか。最高ですね。
Unreal Engine4の準備は簡単、インストールするだけです。説明不要。
インストールできたらUnreal Engine4の世界に飛び込めるようになります。
新規プロジェクト作成で、名前をHelloWorldと打ち込んだ後の凄い大きな世界へ放り出された感は半端ない。どこから何を知ったらいいかもわからない。
何をしたらいいのか……開発環境というのはどうしてこうややこしいのでしょう(笑)。
ただ、そんなに悲観することはありません。Unreal Engineは日本語のドキュメントが充実している上、プレイを押すだけで綺麗な3D世界に突入可能です。ここまでのを作るのにOpenGLやDirectXだけだったら大変ですよねぇ。いい時代になったものです。
そんなこんなでビュー操作やオブジェクトの配置など、基本的な操作については操作しながら何となく理解できました。
ゲームに欠かせないスクリプト・プログラムを担うのがこのブループリントと呼ばれるフロー図のようなもの。ブループリントというのは日本語で設計図という意味です。
プログラムをちょっとでも触ったことのある方は、次の画像だけでどういうものか理解できると思います。
何となくBeginPlayからスタートして、条件分岐やループを使いつつPrint。理解可能ですね。
実行結果はもちろんテキストがprintされます。画面上ですがログ上にも出ます(出せます)。
このブループリントはテキストベースのプログラムだと下記のような感じですね。
void BeginPlay() { PrintString("Hello"); if( Now.GetHour() > 12 ) { PrintString("午後"); } else { PrintString("午前"); } for(int i=0;i<10;i++) { PrintString(toString(i)); } PrintString("GoodBye"); }
いかかでしょう、ブループリント。
私はどちらかというとプログラム畑の人間なので、ブループリントはプログラムと親和性が高いところが好みです。ついでにUnreal Engineではその気になればC++で打てるところもいい所です。基本はブループリントで記述して、できないことがあればC++を使っていく感じだと思います。でも大体の事はブループリントで事足りるでしょう。
Unreal Engine4を触った感想しか書いていませんが、長くなってきたのでとりあえず今回の製作記はここまでにします。
ではでは
]]>