pygameで作る最小限のゲームっぽいものを考えてみる
最小限のゲームっぽいものを考えてみる
目的
- pygameの使い方を学ぶ
目標
- ゲームとは何かを考える(ツールとの違い)
- 1つのソフトウェアとして形にする(ために最小限の機能にする)
開発環境
- Linux Mint 17.3 MATE 32bit
- pyenv 1.0.10
今回はpygameしか使わないと思う。
最小限のゲーム
そもそもゲームに必要な要素は何か。
ジャンル
ゲームのジャンルは多い。最小規模のゲームもどきを作るなら、運ゲーが最も楽。たとえばじゃんけん等。ゲーム的な法則をランダム値生成だけにすることで独自実装せずに済む。
ゲームとしてはつまらないが、結果が予測しきれない不透明性がゲームに必要な条件だと思う。それを最も楽に実装するのがランダム値生成。
ユーザ入力
ユーザによる入力と、それに対する応答を用意する。この対話(双方向)性がゲームに必須条件だと思う。ただ眺めるだけのものはゲームというよりシミュレーションの観察になる。
(無駄な)演出
たとえばアニメーションとか。一切の演出を省いて結果さえ出せばいいなら、ツールになる。
結果までの過程をアニメーションなどで演出することでゲームになる。演出や間を味わうのがゲーム。
あみだくじ
あみだくじを作ってみる。
ゲームとは言いがたいが、最低限のゲーム性を備えていれば何でもいい。極力簡単に実装できるのが望ましい。目的はPyGameの使い方を学習することだから。ゲーム自体の価値よりも形にすることを優先する。
ゲーム性
- あみだくじをランダム生成する(結果が見えない運ゲー)
- ユーザに選択させる(対話性)
- 選択した線から結果まで線をたどる(アニメーションによる無駄演出)
上記3点をもってゲームであると強引に主張する。逆にこの3点のうち1つでも欠けると以下のようにゲームではなくなる。
ゲームでなくなる
- あみだくじが固定である(ランダムなし。結果が見える)
- あみだくじ自動シミュレーション(対話なし。あみだ自動生成とアニメーションを無限ループで一方的に見せられる)
- あみだくじ結果のみランダム表示(演出なし。ランダム値提示ツール)
これらはゲームとは言えないと思う。だからゲーム性の項で示した3点はゲームに必要な最低限の項目だと思う。
あみだくじが固定である
結果が見えるとゲーム性を失う。宝くじ、福引、福袋、カードダス、アイスのあたり棒、ソシャゲのガチャ、賭博、ect……結果が未知であるからこそ結果を知りたいと思うようになる。ゲームには「未知→解明」の変化が必要である。
人はエサをチラつかされると期待し、射幸心が煽られる。「期待→達成」「期待→絶望」の分岐が必要である。どのような結果になるかわからないということは、最低でも2つの異なる結果が必要である。
あみだくじ自動シミュレーション
ユーザの入力とそれに対する応答がなければゲームとは言えない。シミュレーションを延々と見せられてもプレーヤが「選択」という工程を経なければ当事者意識は生まれない。人は自分に関係ないことには興味を示さない。
プレーヤがプレイできない、視聴者おいてけぼり状態。作者の目的を一方的にゴリ押ししたものだとしても、この場合は謎。あみだくじ自動シミュに目的など無い。謎の儀式か刷り込みか。意味不明の産物となる。
あみだくじ結果のみランダム表示(ランダム値提示ツール)
- 例えばあみだくじの結果をおみくじのように「大吉、末吉、凶」のようにしたとする。その文字列を画面に表示する
- 指定回数分のおみくじ結果をテキスト出力する(何の役にも立たないツール的な何か)
- アニメーションなど演出が無いだけ。あみだくじを表示し、プレーヤに選択させる。直後、結果が表示される
アニメーションなど演出が無いだけなら、何とかゲームとしての体裁は保てそう。しかし「なにこれ?」感は拭えない。
ドラクエなどでいう単調なレベル上げの工程に似ているかも知れない。無駄とも思えるが、それがなければゲームにならないような部分。
所感
細かいところは作りながら考える。