保守できるプログラム作りを心がけよう
去年の7月末のある休日に1日かけて作ったXFileAnalyzerを作成してから1年以上放置していたのですが、ここ最近になってそろそろ改良をしていこうと考え始めた、プロジェクトを開いてみたのですが、ソースコードをパッと見したところ、作成したロジックの記憶は忘却の彼方へ…
しかし、サンデープログラムとはいえ、ふんだんにコメントが書いてあったので、小一時間程読んでいたら色々と思い出してきました。
(テキスト形式のX Fileをコンパイラのように構文解析しているので、凄い事やってるなぁ~とシミジミ…)
1年後の自分のコードは「完全にあかの他人のコード」という事を常に心掛けてソースコードを書いていますが、こういう時に非常に助かります。
しかし、サンデープログラムとはいえ、ふんだんにコメントが書いてあったので、小一時間程読んでいたら色々と思い出してきました。
(テキスト形式のX Fileをコンパイラのように構文解析しているので、凄い事やってるなぁ~とシミジミ…)
1年後の自分のコードは「完全にあかの他人のコード」という事を常に心掛けてソースコードを書いていますが、こういう時に非常に助かります。
最近本業の方で、リピートオーダーのかかったお客様から、5年前(2003年)に私の作ったプログラムの改造依頼(正確にはその仕組みを使って新たにシステムを興して欲しいと依頼)されたのですが、「OKIさんが担当されていたから、すぐに理解できますよね?」と言われたものの、5年前にVC++ 6.0で作られた200個以上のクラス、30画面以上あるソースを眺めてみて「誰がコレ書いたの? こんなの全く記憶に無いのですが…」という状況になりました。orz (当時が3ヶ月のやっつけ仕事だったというのが一番の起因だったのですが…)
しかし、かなりマメな内部仕様書を残していた事とソースコメントのおかげで、1週間程で全ての状態が把握でき、何食わぬ顔で仕事を継続できました。
やっぱり保守にはソースコメントと、プログラムイメージが沸くデータ構成図、クラス一覧、クラス派生図、システム構成の見取り図となるシステム構成図は必須だなぁ~とシミジミします。
私が過去に行ってきた、システム(プログラム)保守の最長期間は10年程というものがあるのですが、OSも変れば、場合により言語も変るという事にできるだけ耐えられる、設計とドキュメントを興すことは本当に大事だと思います。
ゲームもそうやって、色々とポーティングできるように設計していこうと思います♪
◇ ◇ ◇
さて、恐らく将来はそんな状態になるであろう、Sample Action Game 3Dの今回のステージはステージ6を紹介したいと思います。
このステージは昨年2007/08/16に作成したステージ(のよう)ですw
ちなみに、私はこのプロジェクトを行うにおいて、着手した日のプロジェクトをその日単位でバックアップするというようにしています。
アーカイブしたプロジェクトには「yyyy.mm.dd 作業内容.zip」というようなファイル名をつけておいて、その時にどのような事を行っていたかを後で検索する時に役立てています。(とは言っても、大抵は"作業内容"は振らないケースが多いのですが(^^ゞ)
バックアップしたファイルは複数のディスクや、インターネット上に設置したストレージにコピーしておきます。
複数人で着手するのであれば、Visul Source Safeや、CVS等を用いる事になりますが、いまの所は独り(+ 友人がたまに監修)という流れなので、そこまでの事はしないでいいや…って感じです。
ステージ6はウィザードの第2弾です。2Dのケース同様に稲妻を発射してきます。
ポイントは2Dの時と違って、この稲妻は発射したら「ゼロ射程」にしています。ゼロ射程なので、発射されたら100%確実に自機に対してヒットが発生します。そして確実にヒットするので、これを盾で防ぐ事になります。
これは以前、本ブログで書いたこの内容を実現しています。発射される前にマーカーが表示され、敵の方角を察知してから敵の正面に立ち、盾で上下の防御を行います。
このブログでステージ2(ウィザード)の動画が何度か掲載されていますが、特に説明はしないままここまで進んできたので少し説明すると、ウィザードのようなワープして攻撃する敵の場合は、もしも画面の外に表示された場合、敵の出現した方向が分るインジケーターを表示するようにしています。これによりウィザードが自分の視野角から大きく外れた出現が行われた際に、左右のどちらかに出現したことが察知でき、防御に徹することが可能になるようにしています。この動画ではウィザードが表示されている画面の外で出現する際に画面の端が赤く点滅しているのが確認できるかと思います。
しかし、かなりマメな内部仕様書を残していた事とソースコメントのおかげで、1週間程で全ての状態が把握でき、何食わぬ顔で仕事を継続できました。
やっぱり保守にはソースコメントと、プログラムイメージが沸くデータ構成図、クラス一覧、クラス派生図、システム構成の見取り図となるシステム構成図は必須だなぁ~とシミジミします。
私が過去に行ってきた、システム(プログラム)保守の最長期間は10年程というものがあるのですが、OSも変れば、場合により言語も変るという事にできるだけ耐えられる、設計とドキュメントを興すことは本当に大事だと思います。
ゲームもそうやって、色々とポーティングできるように設計していこうと思います♪
◇ ◇ ◇
さて、恐らく将来はそんな状態になるであろう、Sample Action Game 3Dの今回のステージはステージ6を紹介したいと思います。
このステージは昨年2007/08/16に作成したステージ(のよう)ですw
ちなみに、私はこのプロジェクトを行うにおいて、着手した日のプロジェクトをその日単位でバックアップするというようにしています。
アーカイブしたプロジェクトには「yyyy.mm.dd 作業内容.zip」というようなファイル名をつけておいて、その時にどのような事を行っていたかを後で検索する時に役立てています。(とは言っても、大抵は"作業内容"は振らないケースが多いのですが(^^ゞ)
バックアップしたファイルは複数のディスクや、インターネット上に設置したストレージにコピーしておきます。
複数人で着手するのであれば、Visul Source Safeや、CVS等を用いる事になりますが、いまの所は独り(+ 友人がたまに監修)という流れなので、そこまでの事はしないでいいや…って感じです。
ステージ6はウィザードの第2弾です。2Dのケース同様に稲妻を発射してきます。
ポイントは2Dの時と違って、この稲妻は発射したら「ゼロ射程」にしています。ゼロ射程なので、発射されたら100%確実に自機に対してヒットが発生します。そして確実にヒットするので、これを盾で防ぐ事になります。
これは以前、本ブログで書いたこの内容を実現しています。発射される前にマーカーが表示され、敵の方角を察知してから敵の正面に立ち、盾で上下の防御を行います。
このブログでステージ2(ウィザード)の動画が何度か掲載されていますが、特に説明はしないままここまで進んできたので少し説明すると、ウィザードのようなワープして攻撃する敵の場合は、もしも画面の外に表示された場合、敵の出現した方向が分るインジケーターを表示するようにしています。これによりウィザードが自分の視野角から大きく外れた出現が行われた際に、左右のどちらかに出現したことが察知でき、防御に徹することが可能になるようにしています。この動画ではウィザードが表示されている画面の外で出現する際に画面の端が赤く点滅しているのが確認できるかと思います。
コメント
コメントの投稿
« 昔のゲームの想い出 [0068] 「マドゥーラの翼」 [サン電子] [1986] [ファミリーコンピュータ] l Home l かなり頭にきている今日この頃… »