【Unity2D講座】アクションRPGの作り方:企画編

Unity2D

Unity3D ゲーム

こんにちは。継続の錬金術士なおキーヌです。

ブログ毎日更新は185日目になります。

トップ画像は3Dですが、これは過去に私が作ろうとしていたアストロノーカオマージュのゲームになろうとしていたものです。

当時は若く風呂敷を広げ過ぎました。

スタートするには遅すぎるUnity2Dゲーム制作ついに始めます。

Unityでのゲームは何度か途中まで作った経験はあるのですがエターナりまくっているので
今度こそちゃんと作ろうと思います。

内容は言えませんが、アクションRPGの基本的な作り方講座として公開していこうかなと思います。

しかしUnity3Dは触ったことは何度もあるのですがUnity2Dって殆ど触ったことないんですよね。

Unity独自のエディタもあることですし普通にプログラミングだけでは作るのとは違ったやり方になると思います。

基本的にはスクリプトを組んで動かすといったことにはかわりないですが。

今回は企画編ということで0回目とさせていただきます。

それではUnity2Dで作るARPG第0回目始めましょう。

  1. 何からすればいいかわからなさ過ぎる件
  2. 初代聖剣伝説を参考にしてみよう
  3. とりあえずプレイヤーを出してみるべき
  4. マップを表示すればいいんじゃねーの
  5. 障害物を実装して衝突判定を実装は最低限必要
  6. 画面のスクロールはエリア移動のみでいいかも
  7. 結論:風呂敷は広げ過ぎると危険

何からすればいいかわからなさ過ぎる件

Unityを起動したは良いが、何から手を付けて良いのかまったくわからず。

一応過去にUnity3Dでゲームを作っていたことがったが、
2Dでは実は初なので今まで通りプチコン4とかと同じ感じでコード後ガリガリ書いていっていいものかと。

しかしUnityは2Dでも3Dと同じ感じで作っていくのが普通みたいです。

まずはこれまでやってきたことを総動員して2Dゲームを作っていこうと思います。

いくら環境が変わってしまったと言ってもゲームは基本的に同じような仕組みで動くので
とりあえずコード書いて詰まったらUnityの仕組みでどうにかできないかを調べ、
それでもだめならググって同じようなことをやってる人の情報を探すといった方向性で行こうと思います。

初代聖剣伝説を参考にしてみよう

アクションRPGと言えばイース・ゼルダ・聖剣伝説がパッと浮かんでくる世代です。

イースとゼルダが出る前にARPG風のものはいくつか出ていましたが、どれも知名度はゲーマーぐらいにしかありません。

イースとゼルダのいいとこどりをしたといえばGB版の初代聖剣伝説ではないでしょうか?

このあたりでアクションRPGとしての概念は固まってきたと思います。

今回作っていくのはGB版の聖剣伝説に近いものにしようと頭の中では考えていました。

イース風でもよかったのですが、今の時代では半キャラずらしのような体当たりゲーは受け入れられるかどうかと言えば否でしょう。

もしまだ受け入れられるのであれば今の最新作のイースもリアルなグラフィックで半キャラずらしを採用しているはずです。

イース3から剣を振るアクションを実装されましたが、4ではまた半キャラずらしの体当たりゲーに戻っていました。

5からトップビューでも剣を振るアクションが追加されたので時代に沿って作って行っているのだと思います。

あえて初代イースのように体当たりのアクションゲームを作ってみても面白いかもしれません。

当時イースを楽しんでいた方にはウケると思います。

しかし一般的には武器も触れないアクションRPG!?なんてゲームの内容を見ずにクソゲーのレッテルを張られてしまうでしょう。

完全にゼルダ風にしてもいいですが、作りたいのはあくまでRPGなので目標としては聖剣伝説が一番近いでしょうか。

しかしアクションRPGでレベル上げをするのは結構ダルいのです。

イースも普通にプレイしているとレベルを上げないと突破出来ないところが多く、
延々と敵にぶつかり続けてレベルを上げる作業がありました。

当時はそれも含めてゲームとしてのボリュームにしていたのもあります。

理想はレベルあげを意識せずに進められて尚且つ育成に自由度を持たせたARPGが望ましいでしょう。

とりあえずプレイヤーを出してみるべき

何から手を付けていいか迷ってしまうのは仕方ないとして、
考えていても進まないのでとりあえず何かをやってみようと思います。

アクションRPGということはプレイヤーを操作して、
攻撃ボタンを押して武器を振るということをしなければいけません。

ならば一番最初にやるべきことはプレイヤーキャラクターを表示することでしょう。

そして待機アニメーションや移動中のアニメーションも作りたいです。

現状のプレイヤーの向きと状態を管理しつつ、Unityの機能であるアニメーションコントローラーを利用して
グラフィックを自由に切り替えていくのが基本となります。

アニメーションコントローラーに関しては実装時に説明しようと思います。

私も実はこれを使ったことがほとんど無くて新しいバージョンで言えばまったくもって未体験です。

移動はドット移動を採用します。

8軸を自由に歩き回れないとARPGとしてはかなりストレスになってしまうので必須ですね。

聖剣伝説みたいに4軸も面白いのですが、初代ゼルダをやってみるとめちゃくちゃモンスターに被弾します。

移動を8軸にすることで避けやすくなりますが、その分判定処理も複雑になりますので気を付けましょう。

マップを表示すればいいんじゃねーの

キャラクターを操作できるようになったらマップ表示をやります。

プチコンでは先にマップを表示していましたが、ドット移動なのでどちらが先でも構いません。

後でも言いますが、画面1つに収まるマップを作りましょう。

今のPCの性能なら1枚絵として表示するのも良いですし、
プチコンとかと同じようにチップ化してマップ配列を作り
ループで回して描写するのもいいでしょう。

2DなのでZ軸を気にしなくていいのは楽ですね。

障害物を実装して衝突判定を実装は最低限必要

衝突判定はUnityの独自機能である物理演算を利用して実装するのもありですが、
正直な所2DのARPGにはあまり向いていません。

めり込んで変な場所に吹っ飛ばされたりいけないところにいけたりとデバッグが大変です。

基本的にはマップ配列に沿って衝突判定を付けたり、
見えないオブジェクトを置いてその範囲は通れないようにしたりとかがベストです。

自力で衝突判定実装するのであれば、過去に私がJavaScriptで書いた講座の記事を読んでもらうとよくわかると思います。

JavaScriptで書かれていますが、基本的にはプログラミングによくある構文で作られているので
C#でも問題なく実装出来ます。

画面のスクロールはエリア移動のみでいいかも

マップの項目でも言いましたが、1画面でエリア移動するタイプのARPGにしようと思います。

初代ゼルダや夢を見る島、聖剣伝説1やカエルのために鐘は鳴るのような感じの移動方法になります。

スクロールを実装すると途端に作る難易度が上昇するので、最初にゲームを作るときは1画面がオススメです。

私も何作品か作ったとにスクロールをできるゲームを実装しようかなと思っています。

Unityであればカメラという概念が用意されているので意外と楽に実装できるかもしれません。

結論:風呂敷は広げ過ぎると危険

スクロール実装もそうですが、ゲーム内容として風呂敷を広げ過ぎると確実に頓挫します。

私もかれこれ10年以上は頓挫を繰り返しています。

やる気が途中でなくなってしまうんですよね。

もし実装するのが難しいなと感じたらすっぱりとその機能は切り捨てて今後の課題にしておくべきです。

とにかくすぐ終わるゲームでもいいのでまずは完成を目指しましょう!