たぶんどんな環境でも使えるであろう、ゲーム画面遷移の作り方になります~

こんばんは~ 最近ゲーム作りに力を入れているcacaponです~

テレビゲームや携帯ゲームをやったことある方、
見たことある方ならイメージしやすいと思うのですが、

ゲームって色んな画面の集まりなんですよ~
少なくとも、cacaponはそう思っています~

例えば、RPGなんかを考えると…

ゲームを始めますと最初にドドンと「タイトル」が出まして~
次に「どのセーブデータから選ぶか」出まして~
続いて「フィールド」ですね~
てくてく歩いていると敵が現れて「戦闘」です~
無事に終わったらまた「フィールド」~
あ、HPが…と思ったら「アイテム画面」を開いて薬草を~

…分かりますかね?
ちょっと書いただけでもこんなに出てくるのです~

という訳で、ゲームを作る場合は画面をいっぱい作ります~
そして、どこをどうしたらどう切り替えるのかも合わせて考えていきます~
こうすることでゲームの大まかな骨組みが出来上がってくるのですね♪

では、肝心の作り方なのですが…
cacaponはこんな感じで作っています~
①まず、Enumでゲームの名前を定義して、
②つぎに、今の画面が何なのかを覚えておいて、
③そして、あること(イベント)が起きたら指定の画面に変える


…こんな感じでできます~
え?こんなのでできる?と思った方~
ちゃんとサンプル作ってみましたよ♪
出来上がったのがこちら~

コードでゲームシーンの遷移を表現したコードになります~

 

f:id:cacapon:20191017002239g:plain


 

上のコードはpyxelというレトロチックなゲームが作れる
pythonのライブラリで作成したものです~

絵を描く余力がなかったので、文字ですみませんが、
スペースキーを押すと画面が遷移するようにしています~

コードを見ると分かるかもしれませんが、
まず大きくロジックと描画部分に分かれていまして、
さらに画面遷移毎で分割し、現在の遷移のものだけ実行する
…という感じにしてるんです~
こうしていくと、役割分担できるので後で作りやすくなるんですよ~
中の処理が増えてきたらファイル毎に分けるのも良いかもしれません~

もちろん、今回のサンプルはコードだけのものですが、
UnityやUnrealEngineなどのよく使われているゲームエンジンでも
使える考え方かなと思ってます~

例えばUnityだとこんな感じですかね?
f:id:cacapon:20191017000121g:plain

さっきのようなコードを使い、
画面毎にオブジェクトの有効化/無効化を切り替えてます~

どうでしょう?いい感じに動いているのではないでしょうか?

もちろん、今回のやり方はcacaponが扱いやすいやり方なだけであり、
実際にはシーンというもっと大きな枠組みで作ってから
ロードして切り替えたりとか、
他にもエンジン側でサポートしているやり方もありますし、
これが正解ではないかもしれません。

ただ、こんなやり方もあるよ~という選択肢の一つになれば、
cacaponとしては幸いです~