■ 新・ゲーム開発講座




■ へっぽこプログラミング入門♪


■第59夜:一応の完成 〜おわりに〜

環境構築&何もできないスケルトンから始まって、ついにひとつのノベルプレイヤーが誕生しました。これといって特殊なツールやライブラリを使うでもなくDirectXにも頼らないという路線でしたが、必要最低限の機能は満たしつつ、プログラミングの入門素材とてそれなりのもの(良くも悪くも ^^;)になったのではないかなぁ…と思っております。途中長いことほったらかしにしていた時期もあってお叱りも受けましたが(汗)、まあなんとか初期の目的は達成できたといえましょう。

本格的なゲームを作るプラットフォームとしてはまだいくぶん(ずいぶん?)非力なところはあろうかと思います。しかし本稿で作成したノベルプレイヤーの価値は、便利な出来合いのツールというよりも、改造/流用等なんでもOKのスタンスでオープンソースであるというところにあるとくににんは思っていたりします(参考とするに値するかどうかはとりあえず置いといて…^^;)。効率の良い組み方、スマートな組み方、もっと高速に処理できるワザなど、ベテランのプログラマーの方から見ればいろいろつつきたくなる点はあるでしょう。しかし愚直なまでにワンパターンでコマンドを実装していく方式(ほとんど公文式?:笑 ^^;)は、初心者の方にはわかりやすかった?ようで過分にもお褒めのメールをいただくこともしばしばでした。大変ありがたいことだと思っております。

くににん自身は職業プログラマでもなんでもありません(本職のお仕事ではプログラミングをする機会はほとんどありません)。余暇の時間で実にマターリとした趣味の開発をしている人だったりします。まあレベルはそのへんの一般人とあまり変わらなかったりするので、記事内容のこまかい部分の間違い、勘違い等は多少大めにみてやっていただけると助かります(汗汗汗)

■プログラム的なことなど

ところで今回のプログラムは、形式こそノベルプレイヤーを語っていますが実は構造的にはシューティングゲームに近いものです。ノートンなどでCPUをモニタしながらゲームを起動するとCPU負荷がドカンと上がるのが分かると思いますが、これはキー入力等がない場合でもMainloop()をガンガン回しているからで、STGなら自機を操作していなくても敵機や弾がバシバシ飛んでくるのと同じ処理状態になっている訳です。敵機の代わりに操作しているのが、いろいろ実装してきたコマンドタスクになる訳ですね。この形式はとにかく構造が単純なので入門用としては一番分かりやすいと思います。市販のADVだって、ちょっとしたアニメシーンになれば同じ状態になるのでべつに特殊なケースだとは思っていません。純粋なるイベントドリブン信者?からみれば多少ダサい作り方かもしれませんが、そもそも「へっぽこプログラミング入門」なのでそんなに気にするほどのことではないだろうと開き直っていたりします(結局それかー ^0^;)。ともあれ 100の屁理屈より1つの動くソフト です。レベルはともかく、動いているということは偉大なのです、たぶん(^^;)♪

レベルと言えば、このサイトのどこかで書いたような気がするのですが、ゲームを作るのに必要なのは決して高いレベルの技術ばかりではありません。いやハイレベルな技術があればもちろん良いことは確かなのです。でも入門者にいきなりそれを求めるのは酷というものでしょう。入門者に本当に必要なのは
レベル1の技術を幅広く知るということです。遅い、ダサイ、カッコ悪い…別にいいではありませんか(^0^)。知識ゼロと知識1の差は無限大です。まずは、レベル1でよいのです。地道に知識を拾いあつめ、共有しましょう。

スクリプトについても、今回取り上げた方式はあくまでも表示テキストが主で各種コマンドは従という前提で作っています。もっと細かく複雑なことができるようにすることは可能ですが、ノベルやADV(RPGの会話も含む)ではこのくらいの味付けが使いやすいだろうと判断しています。

■いまさらながら、この講座の読み方について

ところで、本講座の内容には大きく分けて2つの流れがあります。そのままソースの一部をコピペすれば動いてしまういわゆるTIPS的なものと、プログラム全体の構造にかかわるシステム的な内容です。前者はソースの記述そのものが重要なのでリストをうんうんと読んでいただければよいのですが、後者はリスト上のこまかい記述よりも、おおまかな仕組みとか考え方のほうが重要だと思います。特に、SAVE/LOAD周辺のように、プログラムの動作についてルール(仕様)を決めてそれを順次コードに落としていく、というプロセスが重要な局面では、ルールの決め方によってプログラムの構造が単純にも複雑にもなってしまいます。決してベストの解ではありませんが(そんな恐れ多いことはいえません:汗)、構造的な部分のお話はそのような解釈でナナメ読みしていただければなぁ…と思います(^^)

■そういえば、忘れていました

ところで、そういえばこのノベルプレイヤーには名前がありませんでした。せっかくですから完成記念に名前をつけておこうと思います。ノベルプレイヤーだから
「のべ〜る」 (…んな安直な:爆) まあ、凝ったネーミングにしても内容が基本機能だけに、名前負けするよりはいいでしょう。そのうち、実用度が上がるように育てていこうと思います♪(・ω・)ノ

そんな訳で、いつ始まるのかわからない第ニ期(…なんだよそれ ^^;)を気を長くしてお待ちいただければ(汗) …とゆーことで、第一期完結です。お疲れ様でした m(_ _)m