不自由な環境でゲームを作るとやりたいことが湯水のように沸く話

独学法

ゲーム作り アイデア

こんにちは。なおキーヌです。

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

スーファミ世代~N64世代でゲーム作りに目覚めた人は
恐らく大多数はRPGツクールスーパーダンテかRPGツクール2が切欠ではないでしょうか。

中にはサウンドノベルツクールやデザエモン、って人もいるかもしれません。

やったことがある人はすぐにわかってもらえると思うのですが、
この世代ってDQやFF等の高品質なRPGを見てきて育っているのでやりたいことが全然できないんですよね。

サウンドノベルにしてもコントローラーで文字を撃ちまくらないといけないし、
デザエモンに関しては幸いスーファミ専用のマウスがありましたがそれでも不自由な環境の中ドット絵を打ったりしていました。

そしてやりたいことが出来ずに頓挫してしてしまうユーザーは全体の9割ぐらいいたんじゃないでしょうか。

残りの1割は妥協と工夫を凝らして完成まで作り上げることができました。

私も例外ではなくその9割のユーザーです。

不自由でも自由すぎても文句を垂れる日本人の性質

PSのツクール3、4とでましたがどれも理想のRPGを作るには不自由極まりない仕様でした。

特に4に関しては変数が実装されて自由度はあがったものの、バグだらけでまともに作れたもんじゃないですね。

そして歴史にも残るであろう完成度を誇るPC版のRPGツクール2000。

従来のPC版ツクールをやってきた人はグレードアップ版程度だと思いますが、
コンシューマから移り変わった人は出来ることが増えすぎて今度は逆にどうやればいいのかわからくなり頓挫。

日本人のよくありがちな性質なんだと思います。

制作者であろうが消費者であろうが基本的にワガママです。

今ではスカイリムやゼルダのお陰でだいぶマシになりましたが、
この性質の人間が多いので何だかんだでオープンワールドが日本で流行らない原因だと思います。

不満は改善のための道しるべ

不満が出ると、そこから改善案が自動的に提示されます。

自分で考える必要が無いってのがすごいですよね。

後はその改善案を取り入れてまた出てくる不満を組み上げ改善。

要はPDCAですね。

商業だと気軽にできませんが、1人で作っているゲームであれば修正もしやすいですね。

プログラミングで縛りを設けて作る

ツクールでは出来ないのでプログラミング言語を使ってゲームを作ろうとして
どうやって実装すればいいのかわからず頓挫。

これも多くの人が経験していると思います。

プログラミング言語の中で使えそうな関数をいくつか選び、
それだけを使ってゲームを考えてみる方法をオススメします。

いわゆる縛りプレイですね。

プログラミング初心者やゲーム作り初心者の場合以下の機能だけでゲームを作ってみてください。

  • 変数の機能
  • 条件分岐:IF
  • 繰り返し文:FOR
  • 言語に付属しているI/O処理

これだけあればゲームを作ることが出来ます。

多くの人はグラフィカルなゲームを作りたいので、この作り方をせずにグラフィックバンバン使うゲームを作ろうとするのですが
結局スプライトを出してその後どうすればいいの?→頓挫のコンボになります。

ゲームと言うのは条件式と繰り返しの集合体なので、
とりあえず騙されたと思って上記のリストだけでゲームを作ってみてください。

プチコン4で、私は以下のようなゲームを作りました

あっちむいてホイを作ろう

使った命令は

  • 変数
  • IF
  • FOR LOOP
  • コントローラーのボタン入力
  • 画面の出力

だけです。

クソゲーと言われればそれまでですが、ちゃんとゲームとして完成されています。

未完成のままほったらかしにしたゲームよりは立派だといえますね。

限られた条件の中でゲームを作ると欲求が沸き上がる

やっと本題になるのですが、変数・IF・FOR・I/Oだけしか使っちゃダメってなると
自然と「あれが使えたら良いのに」っていう発想が出てきます。

先ほどの「あっちむいてホイ」でも作っているうちに、
効果音が出たら面白いのにとか、上下左右に顔が向いたり指があったら面白そう。

という発想が自動的に出てきました。

RPGツクールでもそうだったように不満があると改善したい点が出てきます。

これを自分の中で繰り返すと、立派なゲームが出来上がるという寸法です。

もし自由すぎて何をしたらいいのかわからない!って人は、
一度自分の中で極限まで制約を設けてゲームを作ってみてください。

例を挙げると、「変数」と「IF」だけに絞って見るといいかもしれません。

恐らくループを使えたらゲームらしくなるという発想が出てきます。

というのも変数とIFだけだと何も表示されませんし、実行した瞬間にプログラムが止まってしまうからです。

ゲームとして完成させるためには繰り返しを使ってプログラムを終了させない事と、
プレイヤーの入力(インプット)と結果を知らせるための出力(アウトプット)が必要だと自然に出てきますね。

こうやって必要なものをどんどん足していくと、「どうしたらいいかわからない」という無駄な思考を削ることが出来ます。

プログラミング初心者だと考え方の問題で詰まってしまうかもしれませんが、
その時はプログラミング力よりも言語のリファレンスを読むかGoogle力を身に付けるべきです。

調べるときは「何がしたいか」を基準にして調べることです。