ゲーム作りに最適の言語選び
2年C科・皆川明紀
過去〜現在
私がはじめてプログラムに触れてから7年半。自身の経験を元に100%独断と偏見で、ゲーム作りに向いている言語を探る。
CONTENTS
- BASIC
- Logo
- BASIC Returns
- C
- C++
- まとめ
- 番外編
あれは中学校に入学したとき、出し抜けに先生が言った。「今年度からパソコン部が設立されます。」それがすべての始まりだった。もともとコンピュータには興味があったので、p即入部を決めた私がはじめて触れたのはご多分に漏れずBASICである。しかしBASICとはいっても、かの有名なN88-BASICではない。1994年当時、まだDOSとWindowsの境界線をさまよっていた時代、日本のPC市場は圧倒的な強さでNECが独走していた。にもかかわらず、我が中学のパソコン室には20台ほどのFLORAが並んでいた。地域密着、茨城県の公立校にとって他に選択肢はない。彼らの結論は「BASIC/98」、電脳組という仁義なき臭いのするメーカーの品である。最初のうちはまじめに取り組んでいた部員たち、しかし徐々に戦意を失っていく。当時使っていたテキストの例題−「平方根のグラフを画面にプロットせよ」−いたいけな中学1年生たちは平方根を知らなかった。
BASICにも行き詰まりを感じていたころ、次に部員たちが目をつけたのがLogoである。LogoWriter2、こいつは実に魅力的な開発環境だった。見出しの一文を見てほしい。これはLogoWriter流のHello, worldである。そう、日本語でプログラミングできるのだ。面白いのはこれだけではない。LogoWriterには「タートルグラフィックス」と呼ばれる独特の描画方法が存在する。これは2Dゲームにおけるスプライトのようなもので、32×32ドットの矩形領域ならぬ「カメさん」が画面を縦横無尽に駆け巡るのである。カメは普段はカメの姿をしているのだが、命令を出すことによって任意の姿に変化することができる。さらに、画面には総勢31匹のカメが潜んでいて、それらを同時に表示することができる。これはゲームには非常に向いている環境だと今でも思っている。矩形領域の転送、ページの切り替え、中抜き、面倒な処理は一切考えなくていい。ただ背番号3のカメに対して、「まえへ 50」なんて命令してやればそれで事足りてしまう。プログラム初心者だけどちょっと面白いものが作ってみたい、という人にはうってつけだと思う。しかし、自らの作品に対する要求が高まるにつれ、私はロゴから離れていった。
高校に入学した私は、もはや何の疑いもなくコンピュータ研究部に入部。再びBASICに挑戦することにした(今度はN-88)。ロゴはお手軽ではあるのだが、本格的に自分で細部まで詰めたいという場合には、あまり向いていなかった。2度目の挑戦は思ったよりも順調だった。参考書をそれなりにこなしてBASICマガジンの投稿プログラムを写したり、少しアレンジしてみたりもした(文字を変えるくらいのことではあるが)。その年の学園祭には無事オリジナル作品を出品することもでき、BASIC道は実に快適な走り心地だった。少なくとも平方根につまづくことはもうなかった。
高1の学園祭も一段落したころ、調子に乗った私は新たな決意を固める。Cへの移行。今思えば、ここから私の限りなく長い迷路が始まったといえる。BASICでのゲーム作りは非常にエキサイティングなものだった。PC-98というハードウェアにもより近づけた気がしたし、なによりLogoに比べて周りの情報量が多かった。しかし楽しいことは長く続かない。むしろ、自分から終わりに向かってしまうのである。私はBASICを燃やすゴミにぶち込んでCを手にした。Cはまったく未知の領域だった。学校にCコンパイラはなかったし、コンピュータ研究部にも相談できる人はいなかった。それでも本を読みながら何とかなるだろうと思っていた。翌年の学園祭には問題なくCで作品が出せると思っていた。しかし現実には翌年にも、そしてその次の年にも、私は作品を出すことができなかった。そして高校生活は終わってしまったのである。
不完全燃焼のまま高校生活を終えた私は、大きな虚脱感に襲われる。しかし、ゲームを作りたいという思いはまだくすぶりつづけていた。そして、やはり迷わず我等がX680x0同好会に入部を決める。はっきり言ってそのために電通大を選択したようなものだった。今度こそ、の思いが私を駆り立てる。しかし、またもや私は浮気心に走ってしまうのだった。「せっかく大学に入ったんだ。プログラム言語も変えちまえ。」と、半ば勢いで私はC++の習得を決意する。Cでもろくに作品を作ることができなかったのに、である。そして結果は、今あなたの目で確かめてほしい。
本当はもう少し技術的、スタイル的、思想的な違いをきちんと説明しようと思ったのだが、そんなことは私がやるまでもない。日々増えつづけるプログラム関係の情報を追っていけば、必ずそのような内容にめぐり合う。だから私はちょっと違った観点から「最適な言語」を選びたい。
そこで、こうして振り返ってみるとどうやらN-88BASICをやっていたころが一番うまくいっていたようだ(作品の充実という点に限るが)。ではN-88BASICこそ最適の言語か?ピンとこない。そもそも今時N-88BASICをやっている人間がどれだけいるだろう。まさにこの「今時」こそキーワードだ。時代なのである。確かに数年前、私はN-88で楽しくやっていた。では今再びN-88を使えばいいのかといえばそうではない。考えてみればあのころはまだN-88は立派に現役だった。おなじみBASICマガジンの投稿作品もN-88の割合が高かったし、各種記事もN-88を対象にしていた。参考にすべきものがたくさんあった、恵まれていたのである。今、情報に恵まれている言語はなんだろうか。ゲームという分野に限れば、やはりC++にDirectXの組み合わせだろうか。ただ、お手軽さという点ではかなり難しい。実際、ソースコードを雑誌に掲載しようなどとは到底無理な話である。
これこそが今のゲーム開発における最大のジレンマである。「ちょっとやってみよう」くらいの気合では、返り討ちを喰らうことになる。なんだか自分の作品が上がらないことへの言い訳に聞こえなくもないが。よって、現状ではなかなかお手軽にプログラミングとはいかない。少なくとも最適な言語は選べそうにない、という結論でお茶を濁すことになる。
writeln('Hello, Pascal.')
Pascal、うわさには聞いていたがまさか授業で出会うことになるとは思わなかった。私が在籍している情報通信工学科では、何ゆえかPascalが非常に重んじられている。おかげでもう一年の付き合いだ。とはいえ自由にファイルが扱えない、動的メモリ確保にも制限があるなど、まさに教育向けに理想化された高級言語といった感じなのでゲームを作ろうとは思わない。