現時点でゲームのジャンルが決まっていない。
ジャンルの一覧から消去方で絞っていくことにする。

■ジャンル一覧


・アクションゲーム
・ロールプレイングゲーム
・パズルゲーム
・レースゲーム
・スポーツゲーム
・格闘ゲーム
・アドベンチャーゲーム
・シミュレーションゲーム
・音楽ゲーム
・シューティングゲーム

※wikipedia「コンピュータゲームのジャンル」より抜粋

■作成予定から外すジャンル

・ロールプレイングゲーム
 プレイするのは好きだ。
 しかし、仕組みを作るより、ストーリー構成、個性あるキャラクターを考える、
 そしてなによりゲームバランスの調整が大変だと思う。
 作るのであれば仕組みをメインのゲームを作りたいため。

・レースゲーム
 コースやマップチップを作るのが大変になるかと思う。

・スポーツゲーム
 何故か食指が動かない。
 考えてみるとプログラム作成としての利点がいっぱいある。
 ○予めルールが分かっている。
 ○球技などであれば物理演算を考えるため作っていて面白そう。
 でも作ろうと思えない不思議。
 
・格闘ゲーム
 これも作ってて面白そうだが、
 無限コンボ等が出来ないようにするため、
 キャラクター毎に技の調整が大変そう

・アドベンチャーゲーム
 ストーリーメインになってしまうため。

・シミュレーションゲーム
 処理を作る部分は大きくてやりがいはありそうだが、
 これをメインに組み込んでやる気にはなれない。
 アクションシミュレーション等であれば作るかもしれない

・音楽ゲーム
 一般的にパソコンに取り付けられるI/Fでやるには向いていないのではないかと思う。
 あと個人的にごめん。

■残った物

・アクションゲーム
 「マリオ」等に代表されるジャンルであり、親しみやすい。
 個人的に作ってみたいと思う意思が強い。
 キャラクターの動き、攻撃の当たる仕組み、接触判定等やることが多く作っていて楽しそう。
 アクションであればステージ構成は必須。考えるのは大変そう。
 3Dでやろうとした場合、2Dと比較すると次元は1.5倍(?)だが作成難易度は4倍程度ではすまないだろう。
 作るなら2Dだ。

・パズルゲーム
 ルールが決まれば、システム作りがメインになると思われる。
 「ぷよぷよ」「Dr.マリオ」のような形式であれば、ステージ毎にフィールドが変わったりはせず、
 難易度が徐々に上がっていくのであれば作り易いのではないか。
 「倉庫番」のような形式はステージを考えるのが大変であるため避けたい。
 友人が「3Dぷよぷよ」を作ってくれと言っていた。
 ・・・見えないところにいったぷよはどうするつもりだ・・・

・シューティングゲーム
 縦、横スクロールシューティングゲームであれば、仕様、ゲーム目的がほぼ統一されている。
 アイテムによるショットの強化、道中はザコ、中ボス、ボスの登場、ボスを倒すとクリア。
 ボムはあったりなかったり。
 作った部分の処理も画面ですぐ結果を確認できる内容であると思われるため、作っていて楽しそう。
 難易度設定は大変そう。
 FPSは個人的に作る気にはなれない。
 作るなら3Dは避け、2Dとしたい。

■ジャンルは何にするか

 結局のところまだ決まっていない。
最終的に「アクションゲーム」「パズルゲーム」「シューティングゲーム」の
いずれかがメインになるゲームにするだろう。
が、ジャンルを決めるのはもっと検討してからでいいだろう。

 また、ジャンルを混ぜてもいいだろう。
シューティングアクション、パズルアクション等。
このような形式であれば、ロールプレイング、シミュレーション、格闘ゲームの要素を含めてもいいだろう。

 やはり自分が作っていて楽しい物でなければ。
■開発環境が整理

 開発を行うには環境を整理する必要をしなくては・・・
言語、ツールを決めること、インプット/アウトプットも決めてしまおう。

以前も同じようなことを書いたが改めて整理

----------------------------
■言語
・C++(Visual Studio 2008 SP1)
 現在私のところにある環境。
 Cが一番経験長いので。

・Dxライブラリ
 Cで組むにあたってDirectX、3D処理を行おうと思ったときに見つけたライブラリ。
 利用したことはないが、リファレンス等を見るとDirectX処理がメソッド化されていて使いやすそう。
 C#でのDirectX、3D処理を実装したことがあるが、思いの外手間がかかった。
 そのC#専用のような処理になってしまったため、どうせ今回1から組み直すならこういったライブラリを使用してみる。

■ツール
・SubVersion(SVN)
 ソース管理に使用する。
 作成したソースをコミットすることで古いソースとの比較、戻せるのが便利。

■コーディング規約
・自作
 以下のサイトから自分用にまとめ、それに従いコードを書くこととする。
http://www.shos.info/develop/xp/cplusstd.html
http://www.geocities.jp/bleis_tift/cpp/codingrule.html

■インプット
 基本設計書(Word)
 詳細設計書(Word)

■アウトプット
 ゲーム本体(exe)
 操作説明書(Word or HTML)
 テスト仕様書/結果(Word or Excel)(できるか疑問)
 プログラムソース一式
----------------------------

 これぐらいだろうか。
他にも以前書いたところでソースコード整形ツール等があるが、メインではない。

 今回コーディング規約を引っ張ってきた。
会社内でもほとんどの人がコーディング規約を設けずに作業している(うちの会社はブラックか?)
変数名、クラス名、メソッド名等は規約を設けて記述することにより、ソースコードが見やすくなる。
絶対にコーディング規約は設けるべきだと思う(が、開発規模が小さければなくてもいいかも)

 アウトプットとして、ゲーム本体・プログラムソース一式があるのは当たり前だ。
操作説明書とテスト仕様書もつけた。
 操作説明書はゲームを作るのだからあるべきだろう。
なくてもゲーム中にチュートリアルや操作説明を行う機能を設けてもいいかと思ったが、
やっぱり作ったほうがいい。
 個人作成のゲームでのテスト仕様書は私が自己満足で作るものに近いと思っている。
しかし、デバッグしないわけにもいかない。
ゲームデバッグとなると、気が遠くなるような作業が必要になるだろう・・・。
とりあえず、やる方向で進めよう。

 さて、VC++で作ることを決めた。
これにあった仕様のプログラムの作成を検討していこう。
まだまだ先は長そうだ。
長いと思う方は太字だけでOK

■ブログを立ち上げたきっかけ

 私はIT関連の会社に就職して、今年で5年経過しました。
会社ではドキュメントやプログラムの作成で刺激的な生活を送れています。
仕事は夜遅くなったり、体壊したりするけれど、やりがいはある。
ひとつのシステムを納品するということ、自分の作ったシステムが目の前で動いて、
それが人に使われているという事実がある。
この仕事での達成感は大きく、他の仕事では味わえないのではないかと思ってしまいます。

 なのでこの仕事をこれからも、死ぬまでとは言わないが定年まで続けていけたらいいと思っている。
ただし、苦しいと思う面も大きくあるので他人には勧めようとは思わない仕事です(笑)

 さて、今も仕事でプログラムを組んではいるため、現状不満はない。ありえない。
ふと、これから先、仕事を続けていったことを考えた。
今プログラムを組んではいるが、いずれはその仕事を部下、後輩に任せ、
私は管理作業がメインになるのではないかと思う。
40歳を超える上司がいるが、顧客対応や管理を仕事をメインでやっており、プログラムなど滅多に書かない。
もちろんその方が効率がいいからである。
下の人間にプログラムの書き方だけ教えて上司から「このようにプログラムを作ってくれ」と言うだけでプログラムが出来上がりだ。
予め作り方を指示してあれば、上司はプログラムの仕様を決めるところまでやるだけでいい。
もし、作り方が分からないという人間が入れば、その都度フォローを行えば良いのだから。

 ただ、上司がプログラムを書かない理由はそれだけではない。
プログラムが書けなくなってしまうのだ。
上司曰く「若い頃はバリバリプログラムを書いていたが、今はほとんど書けないだろう」と。
私はプログラムを書くには柔軟な脳、ひらめき、記憶力等の一般的に賢いと言われるような能力が必要である。
年をとるとそういった能力が衰える。
プログラムを書く能力が衰えてしまうのだ。
プログラマの寿命というものであり、スポーツ選手の体が衰えて引退するのと同じ様なものだろう。

 そう考えると私もいずれはプログラムを書けなくなってしまうのだろうと思った。
それは仕方のないことではあるが・・・つまらない。
今まで培ってきた技術を・・・言葉にできないが、なんとかしたいと思った。
納めたシステムを思い出し、システムの利用目的からすると誰かに使われ続けるものである。(永遠ではないが)
誰かに使われ続ける、もしくは誰かの記憶に残るようなプログラムを作りたい、形として残したいと唐突に思った。

 そこまで考えはしたのだが、どういったプログラムが良いだろうかとまでは考えがまとまらなかった。
「PCを操作する上で便利なツール」が真っ先に考えたが、どういったものが便利なのか、思い浮かんだツールは既に誰かが考えて作ってあったりした。既にあるのでは意味が無い。
「生活の役に立つ物」等も考えたが、ネタも思い浮かばず、
思い浮かんだとしても技術的にどうしたら良いものだったのか・・・。

 最初から考えており、最終的に残ったものがゲームであった。
仕事でのプログラム経験としてもDirectXやGDI+等もやっていたこと、
個人的にもゲームが好きであること等が理由と言えよう。

 ただ、ゲーム作りには抵抗があった。
ゲーム以外で作りたい物のイメージがある程度まとまれば、そちらを選んでいただろう。
ゲーム作りを考えたのは今回が初めてではないのである。
以前にもゲームプログラムを作ろうとしたときは1週間を待たずして諦めてしまった。
諦めた原因として以下が考えられる。

① 仕様を決めていなかったこと
② 当時は技術的にも未熟だったこと
③ 思いつきゲーム作りを開始し、誰にも何も報告しなかったこと

①、②について
どんなゲームを作るかも決めていなければ作れない。
技術がなければゲームが作れない。
まさにその通りだろう。
だが、この中で一番大きな要素はおそらく③なのだ。
技術がなければ作りながら覚えればいい、仕様がとりあえず見たことあるゲームをそのまま作るとこから初めてもいい。
だが、自分以外の誰も知らなければ「作らなくてもいい」と思ってしまうのだ。
知っている人間がいれば、「作らなければ」という意識が芽生え、
それだけでモチベーションを保てたかもしれない。いや、私の性格からして保てていただろう。

 既に友人達、会社の同期達には伝えてある。
また、それ以外にも知っている人間がいたほうがいいだろうと思い、
不特定多数の人間が見れるネット上にブログとして記録することにした。
そうすることで「作らなければ」という意識を保つことが出来るだろうと思ったのだ。

 長くなってしまったが、ゲームを作っているという事実を誰かに知っておいてもらいたいということである。

■仮工程(作成計画)の見積もり

まずは大雑把に仮工程を決めたいと思う。
・条件
 私一人で作成するため、土日のみの作成で間に合いそうな期限とする。
 絵や音楽はフリーのデータを仕様する。
 (必要であれば作成)

・~2011/06/12(1週間)
 ゲームジャンルの決定
 システム、ストーリーの検討

・~2011/07/17(1ヶ月)
 システム、ストーリーの決定

・~2011/08/21(1ヶ月)
 仕様の決定

・~2012/06(10ヶ月程度)
 プログラム作成
 (間で2~3回程度に分けて、プロトタイプを公開したい、多数の人目に付くところに配置したい)

・~2011/08(2ヶ月程度)
 デバッグ

・2011/08
 期限として8/31までに公開できるようにしておくこと