■ 新・ゲーム開発講座




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


■はじめに

えーと、またもやこんな身の程知らずの企画を立ててしまいました(笑)。自分のゲームが遅々として制作が進まないのに人様に講釈を垂れるとは何事だ・・・という感じがしないでもありませんが、サイトを立ち上げたときに自らに課した「作る側の人たちへ」という運営指針に照らして考えたとき、最先端の方々にとっては枯れた内容であっても、いままさにWindows上でゲームを作ろうと思っている方々、あるいはコンパイラを買ってはみたものの茫然自失(笑)になっている方々に入門編的な内容をお送りすることはできるかな・・・と思ってこのコンテンツを作ってみました。私自身も、長らくPC98のMS-DOSな世界にいて、Windows上での開発環境を揃えたのは1999年に入ってからです。日が浅いゆえに、おそらく今、プログラミング入門的な位置にいる方々と同じ目線でモノが見られるかも知れません。とかくTIPS的な内容が盛りだくさんなサイトというのはネット上にもたくさんあって、とても素人が太刀打ちできないような情報量を誇っていますが、一つのゲームを作る過程を順を追って解説するようなページがあるならば、物量的に多少貧弱でも存在意義はあるかなぁ・・・などと思う次第です。

お絵描き三昧で怠惰な1年を過ごしてしまってから自分のサイトを振り返ってみると、そこにはゲーム開発の崇高な理念というよりは
単なるギャルCGの山が残っていたりする訳で(それはそれで目の保養には良いのですが ^^)、もう少しプログラミング的なものに自らを向けていかないと、本来の「ゲーム創作」とは違う方向に流れていくような危機感もありました。そういう意味では、自分自身を客観的に採点する・・・ということも必要でしょう。人様に解説する以上はそれなりに妖しい知識の再整理も半強制的に進むでしょうから(笑)、私自身にとってもなにか得るものがあるだろう・・・などと考えています。

当面の目標は、
お手軽なノベル作品が作れる程度・・・としましょうか。私もWindows環境に移行して1年ちょっとですので、そもそもあんまり突っ込んだことは書けません(笑)。とりあえず第一期としては、DirectXは使用せず極めてオーソドックスに参りましょう♪ そんな訳で、プログラミングに関しては「講座」というよりは「へっぽこプログラミング入門」に格下げしてお送りしようと思います♪(笑) 手違い/間違い/勘違いなどいろいろあるかも知れませんが、結果オーライ=動けばいいじゃん的なノリで行きましょう。(あ、間違いを見つけたらこっそり教えてください ^^;)

■基本方針

さて、そんな訳でまずは前振りからです。昨今はコンパイラの統合環境で適当にオプションを与えてやればスケルトンの自動生成が出来る世の中ですが、ここでは以下のような原則に従って話を進めたいと思います。

1.コンパイラはVC++を用いる(6.0を前提とします)
2.フルスクラッチ(=プログラマの手書き)スケルトンから出発する
3.MFCは使用しない
4.C++ではなく、Cベースで進める
5.DirectXは使用しない


1については、私の周囲にいる師匠格の方々がVC派ばかりなので、なりゆきで決まってしまったことです。私自身は、心はボーランド派なんですけどね・・・(^ー^;)。2は、プログラムの動作を理解するには余計なものがごちゃごちゃ付いたお仕着せスケルトンよりスッキリして分かりやすいだろう、ということで決めています。

3も同様で、基礎的な勉強の他にクラスライブラリの使い方まで覚えなければならなのでは頭がパンクしてしまいそうなので割愛します。4も同様ですが、私の頭がC++向きでは無いということも一因のような気が・・・(笑)。5についても、カリキュラムを単純化するために除外します。結果として、実にオーソドックスな組み方になりますが、それでもノベルもの程度でしたら問題なく作れます。どの程度のものが作れるかというと・・・まあ、
こちらをご覧いただければ(^^;)。※作品&サポートのページにある「長野旅行記」です

ただし、Cベースとは言いましてもそれは面倒なクラスライブラリは使わない・・・という程度のもので、簡単で便利な部分はC++の要素を間借りすることはあります。またWindows自体が極めてOOP(オブジェクト志向プログラミング)的な要素を持っていることから、どうしてもクラスと100%無縁のプログラミングにはなりませんので、あらかじめ申し添えておきます。なお、本講座で掲載するソースファイルは、皆さんのお役に立てるなら自由にご使用頂いて結構です。改造、組み込みなどの制限はありません(・・・と言うより、それだけの価値があるのかどうかの方が問題ですけど:笑 ^ー^)。

さあ、では次回より、「プログラミング以前の問題」として、環境構築のあたりから始めましょう。低レベルでも、大切な1ステップです。


§コラム:ネット上のライブラリ§

ネット上のプログラミング支援サイト(ゲーム開発系に多い)をいろいろ尋ねあるくと、様々なゲーム開発用のライブラリが提供されていたりします。超有名サイトの綺麗に整理されたライブラリを見ると、ああ、これを使えば手軽に高パフォーマンスなゲームが出来そうだなぁ・・・などと思うことしきりです。でも私は、いざ自分でプログラミングを勉強し始めたとき、どうしてもそれらを積極的に使いたいとは思いませんでした。理由は単純で、ソース公開されていないプラットフォームに乗る危険性を甘受できなかったからです(^^)。

早い話、ライブラリの作者がある日突然「あーウザイ! もう面倒だからサポートなんてや〜めた!」と一切の対応を打ち切ってしまったとしたら、それに頼って開発を進めているサークルの立場は大変なことになります。その点、ソース公開されているTIPS集などは、たとえ作者が不慮の事故で昇天(縁起でもないですね・・・ ^^;)したとしても、頑張ってリストを読めば自力対応で開発継続も可能になります。

開発支援ライブラリは、それが高度なものであればあるほどソースは非公開になっている傾向があります。便利ではあるけれど、それに依存して自分のプロジェクトを発展させていくと、しまいには抜け出せなくなる麻薬のようなもの・・・とでもいいましょうか。勿論、中にはきちんとサポートを続けていて実績を積み上げているライブラリもたくさん存在します。便利なものを積極的に利用して、優れたパフォーマンスのゲームをたくさん発表されているサークルさんもあるでしょう。このあたりは、もうほとんど個人的なポリシーというか、ある種の信仰?問題かも知れませんね。

幸い、私には質問をすれば惜しげもなくソースまで提供してくださるような素晴らしい師匠格の方々に恵まれていた幸運もあり、あまりこの種の心配をしないでやってこれました。「今はよく分からないけど、そのうち解読してやるぞ」的なサンプルソースはたくさんありますし、「とにかく組み込んでしまえ」的な使用をさせて頂いている関数もいろいろあります。でも、それはブラックボックスではなくて、勉強すれば解読可能なソースファイルです。この安心感は、何物にも代え難い、一種の保険のようなものと言えるでしょう(^^)。