今日は、C言語を使ってコンソールアプリを作ってました。あえて、C言語・・・。
で、こんなゲームを作ったんだ
JUN@ゲーム開発@jun_gamedev
暗算のトレーニングができるゲーム作ったよ! (あえてUnityも使わないで作ってみた。) https://t.co/WZuafJqNOy
2019年07月29日 02:48
僕は、現実世界でも役に立つ学習が期待できるゲームが好きでね、
最近はそれもあって「Illust Chainer」というオンラインで絵しりとりができるゲームにはまっていたりします。やればやるほど絵が上手くなるからね。
そういうゲームって、「やめなきゃ」っていう気にならないんですよ。ただ時間を浪費するだけのゲームだと、「あぁ、何してるんだ俺」ってなっちゃうんだけど。
で、これも暗算の練習になるので、暇つぶしには遊べそうなものができたなーって自画自賛してたりします。
それはさておいて、
UnityやRPGツクールのようなツールを使わないでちゃんとゲームを作ったのはこれが最初ですね。
で、本題というか、今日は別に大した記事でもないのですが、
このゲームを作ってみて気づいたこと、苦労したことをこの下に書き残していきます。
・いわゆるゲームループ(?)の部分を自作する必要があった。「入力→ゲーム処理→描画→待つ→・・・」みたいなやつです。
・60fpsにしたいなら、1フレーム約0.016秒。
・乱数のシードを自分で設定しないと毎回同じ結果になってしまう。今回は「システム起動開始からの経過時間」を使ったけど、今の時刻を使うとか、他にもやりようはあるみたい。
・効果音はビープ音でなんとかした。ビープ音を鳴らすための「Beep関数」というのがあるんですが、そこで周波数を指定する必要があるので、その辺を調べる必要があった。例えば、440Hzは「ファ」の音だとか。
・コンソールアプリ(コマンドプロンプトで動く文字だけのアプリ)で、リアルタイムで動くゲームを作るのは無理があるみたい。
というのも、毎フレーム「system("cls");」という命令を与えてコンソール画面の文字を全て消してるんですが、それってかなり重い処理みたいです。そもそも、コマンドプロンプトってそういうものじゃないですし、当然ですよね。
補足:このサイトを見てる限りでは、コンソールアプリでリアルタイムのゲームを作るのは無理じゃなさそうですね。
http://vivi.dyndns.org/tech/cpp/console.html
とにかく、ゲームループの自作はいい経験でした。
Unityが裏でどのように動いてるのかが、よりイメージできるようになった気がします。
それではノシ
