Knowledgeゲーム制作に関するプログラミング等を主に書き溜めていきます。どちらかと言えば日記的な書き方が続くと思いますが、そこは温かい目で見て頂ければ。あと、ちょっとしたサンプルやツールのダウンロードも出来るようにしておきます。05:00正確なプロジェクト管理には正確なWBS分解が必要です。略で、開発業務作業を1人あたりの作業1項目まで細分化する事です。WBS分解に抜けがあると、プロジェクト管理上大変危険な事になるのですが、なかなかプロジェクト開始時点で、正しく作業全てを把握するのは難しいのです。WBS分解の基本的な考え方について、世界的に有名なパックマン※1を題材に解説してみます。Inc以下、本記事内の画像は全てバンダイナムコエンターテインメントが著作権を有します。パックマンのゲームの流れについてゲームの進行に応じて順に考えていきます。タイトルデモゲーム進行ゲームオーバーこんなところでしょうか。これでは全く分解が足りませんので、各フェーズに毎にさらに細分化していきます。説明の簡素化のためコーヒーブレークやオートプレイデモ関連は抜いてあります。タイトルデモ画面を構成するだけなのか、動きを付けるのか、デモも用意するのか、その仕様を明確化します。本記事では、説明を簡易とするため、オープニングはFC版を準拠としましょうか。すると、画面下からタイトル画面がせり上がってくる簡単なデモとなります...、が、いくつか考える必要があります。コールドスタートホットスタート文字列表示スコア表示タイトルロゴ表示メーカーロゴ表示コールドスタートとは、起動直後だけの初期化を指します。ハイスコアの初期化等は起動直後の一度きりです。ホットスタートとは、ゲームオーバーからタイトルに戻ってくる際に初期化される部分です。初期化の抜けはよくありますので注意が必要です。続いて文字列表示とスコア(数値)表示です。これらはタイトルデモに限らす、あちこちで使用される可能性が高いです。このような共通処理は、カテゴリを基本処理等と分けて考えるようにします。ゲーム開始にはコントローラ入力が必要ですので、こちらも共通処理として分離します。プログラムコールドスタートホットスタートタイトル画面スコア表示こんな感じで分解されていきます。この時点で以下の画像が必要だと分かります。WBS分解で重要かつ大変な部分です。ゲームスタートすると、ゲーム画面が表示されてスタート音楽が鳴ります。ドットは当然全て初期化されています。ステージが進むと、ステージ番号は更新されません。そのため、初期化はここでもコールドスタートとホットスタートが存在する事になります。...等々と考えていくと、かなりたくさん作る事がありそうですよね。そのため、まずは先にゲーム中の流れを大まかに分解します。全体進行ゲーム開始デモゲームプレイステージクリアバックマンミスゲームオーバーこの項目別に更に細分化します。パソコンに接続するならこちら。過電流防止と雷サージで通電LED付き。パックマンとおばけの表示READY表示ゲーム開始直後はスコアのクリアとステージを1に戻します。パックマン残機を設定します。ステージ開始は、ドットやパワーエサの初期化を行います。再スタートはパックマンとおばけの位置を定位置に戻します。あと、1UPが点滅していますので、タイマー処理が必要です。音を出しているわけですから、サウンドドライバの開発も必要となります。サウンドドライバが必要であれば、作曲データをバイナリ変換するツールの開発も必要となります。本当はサウンドドライバだけでも結構細分化出来ますが、今回は単にサウンドドライバとしてしまいます。ゲーム開始デモでいきなり多数の画像が必要となります。画像ドットとパワーエサフルーツ(8種類)パックマン(4方向クチパク)おばけ(4方向フルフル)パックマンやおばけは移動方向があります。フルーツは種類があります。急にグラフィックデザインの仕事が忙しくなってきました。開始時の音楽演奏で楽曲データが必要になります。サウンド開始ミュージックゲームプレイこれはかなりたくさんの処理が必要です。一気に列挙してみます。プログラム一方通行ワープパックマン移動パックマンドットを食べる/スコア加算パックマン無敵モードパックマンやられフルーツを食べるボーナススコア文字列表示おばけ待機おばけ家から出るおばけ移動/共通おばけ(アカベエ)移動おばけ(ピンキー)移動おばけ(アオスケ)移動おばけ(グズタ)移動おばけ怯えおばけ目玉おばけ怯え終了警告点滅ステージクリア点滅ゲームオーバーパッと思いつくだけでもこれぐらいの分解は必要でしょう。上記の実装に必要な画像やサウンドもさらに追加となります。この値段で過電流防止があるのは本当に有り難い!全ての作業内容を一覧にまとめる上記で算出した工数をエクセルに登録して一覧とします。この時、各項目毎にまとめるのがポイントです。上記を項目毎にまとめると以下のようになりました。分かりやすいようにインデントを付けておきました。最初はおそらく平書きでしか無理だと思います。私はテキストエディタで書いた後で、エクセルで整形しました。このように一覧でまとめていくと、だいたいは「あ、あの処理作成が入っていない」と気がつきます。今回は、以下の記入漏れが見つかりました。開発環境整備いきなり作成開始なんて出来ないので、開発環境整備の時間が必要です。起動システムPC-6001mk2の場合は、ローダーであったり、ROM配置であったり、最初のハードウェアの初期化であったりと、いくつか準備が必要です。これに対応する時間は割と多く必要となります。フルーツ登場と消去フルーツを食べるを見ていて気がつきました。一定時間で出てきて、一定時間で消えますよね。迷路探索処理とか、当たり判定とか、他にも作っていると「しまった、アレも別途作らなきゃ」という作業がドンドン見えてくると思います。このように既にゲーム内容が誰でも脳内で思い浮かべられる、仕様がきっちりと固まっているパックマンという有名なゲームですら、リスト化すると抜けが出てきます。新作ゲームであれば当然「抜け」は出るのが当然と考えてください。誰もが神様じゃないのですから。抜けが見つかったら、即座に補填して修正します。このため、WBS分解は最初に一度行ったらお終いというワケではなく、常にメンテナンスが必要なのです。パックマンを完コピするのが本記事の掲載目的ではなく、パックマンを通してWBS分解を行うのが目的となります。そのため、例えばオートデモが仕様説明にないなど、実際のパックマンとは異なる部分が多数あります。あしからずご了承ください。...これだけ端折っても、ゲーム完成までには相当の工数が必要だという事、分かって頂けましたでしょうか?※Newシティヒーローがパックマンのオマージュ程度にはパックマンは好きです...次回、ゲーム制作の工数設定に続きます。パックマン/ファンメイドコンテンツこのコンテンツはファンメイドコンテンツです。パックマン及び自社IPゲームシリーズ」ファンメイドコンテンツポリシーのもと、利用させて頂いております。タグクラウドAILZ80ASMAndroidBASICC#C言語C言語講座DIYJsonMarkdownMZ80CNASNewシティヒーローPC6001PC8001PC8001mk2PCG8100PS2RPGVS2022VSCodeWindowsXperiaZ80お祝いお買い物ちらつきアイテムアセンブラアルゴリズムエミュレータオーダリングテーブルガスレンジガス器具ゲームゲームデザインゲーム制作ゴルフサウンドシリアライズタスクトレイツールテストデザインデバッグデータ圧縮データ構造トレーニングパソコンミニパーツフリーフリーズプログラミングプロジェクト管理プロトタイプ宣言ポインタマップエディタメモリ空間モニターアームラズパイリスト構造リフォームルーターループレトロPCレトロPC開発でカセットにデータを記録する環境を作ります。sapm防止のため手入力してください。リンで利用することは禁止いたします。各記事に直接飛んでくるのはOKです。何かございましたら、上記メアド宛にお気軽にお問い合わせください。レトロPCゲーム制作に使って頂く分には、ドンドンご自由にお使いください。