正確なプロジェクト管理には正確なWBS分解が必要です。WBSとは Work Breakdown Structure の略で、開発業務作業を1人あたりの作業1項目まで細分化する事です。この WBS分解に抜けがあると、プロジェクト管理上大変危険な事になるのですが、なかなかプロジェクト開始時点で、正しく作業全てを把握するのは難しいのです。今回は私が行っている WBS分解の基本的な考え方について、世界的に有名なパックマン※1を題材に解説してみます。
main_logo
PAC-MAN™ ©1980 1984 BANDAI NAMCO Entertainment Inc
以下、本記事内の画像は全てバンダイナムコエンターテインメントが著作権を有します。


  • パックマンのゲームの流れについて
ゲームの進行に応じて順に考えていきます。
  1. タイトルデモ
  2. ゲーム進行
  3. ゲームオーバー
こんなところでしょうか。これでは全く分解が足りませんので、各フェーズに毎にさらに細分化していきます。なお、説明の簡素化のためコーヒーブレークやオートプレイデモ関連は抜いてあります。


  • タイトルデモ
タイトル
画面を構成するだけなのか、動きを付けるのか、デモも用意するのか、その仕様を明確化します。本記事では、説明を簡易とするため、オープニングはFC版を準拠としましょうか。すると、画面下からタイトル画面がせり上がってくる簡単なデモとなります…、が、いくつか考える必要があります。
  1. コールドスタート
  2. ホットスタート
  3. 文字列表示
  4. スコア表示
  5. タイトルロゴ表示
  6. メーカーロゴ表示
コールドスタートとは、起動直後だけの初期化を指します。例えば、ハイスコアの初期化等は起動直後の一度きりです。ホットスタートとは、ゲームオーバーからタイトルに戻ってくる際に初期化される部分です。初期化の抜けはよくありますので注意が必要です。

続いて文字列表示とスコア(数値)表示です。これらはタイトルデモに限らす、あちこちで使用される可能性が高いです。このような共通処理は、カテゴリを基本処理等と分けて考えるようにします。ゲーム開始にはコントローラ入力が必要ですので、こちらも共通処理として分離します。すると…

■ 共通プログラム
文字表示
  1. 文字列表示(カラー)
  2. 数値表示
  3. パネル表示
  4. コントローラ入力
■ プログラム
  1. コールドスタート
  2. ホットスタート
  3. タイトル画面
  4. スコア表示
こんな感じで分解されていきます。また、この時点で以下の画像が必要だと分かります。

■ 画像
ナムコット
  1. アルファベット文字(記号含む)
  2. パックマンロゴ
  3. ナムコットロゴ


  • ゲーム進行
ここが最も WBS分解で重要かつ大変な部分です。ゲームスタートすると、ゲーム画面が表示されてスタート音楽が鳴ります。ドットは当然全て初期化されています。ですが、ステージが進むと、ステージ番号は更新されません。そのため、初期化はここでもコールドスタートとホットスタートが存在する事になります。…等々と考えていくと、かなりたくさん作る事がありそうですよね。そのため、まずは先にゲーム中の流れを大まかに分解します。

■ 全体進行
  1. ゲーム開始デモ
  2. ゲームプレイ
  3. ステージクリア
  4. バックマンミス
  5. ゲームオーバー
この項目別に更に細分化します。
※ パソコンに接続するならこちら。過電流防止と雷サージで通電LED付き。それでこの値段は買いです!

  • ゲーム開始デモ
■ プログラムゲーム開始デモ
  1. ゲーム開始直後の初期化
  2. ステージ開始初期化
  3. 再スタート初期化
  4. ゲーム画面表示
  5. 開始音楽演奏再生
  6. パックマンとおばけの表示
  7. READY表示
ゲーム開始直後はスコアのクリアとステージを1に戻します。また、パックマン残機を設定します。ステージ開始は、ドットやパワーエサの初期化を行います。再スタートはパックマンとおばけの位置を定位置に戻します。

あと、1UPが点滅していますので、タイマー処理が必要です。また、音を出しているわけですから、サウンドドライバの開発も必要となります。サウンドドライバが必要であれば、作曲データをバイナリ変換するツールの開発も必要となります。すると、共通処理として、以下の作業が追加になります
  1. サウンドドライバ
  2. MMLコンバーター(C#)
  3. タイマー処理
本当はサウンドドライバだけでも結構細分化出来ますが、今回は単にサウンドドライバとしてしまいます。さて、ゲーム開始デモでいきなり多数の画像が必要となります。

■ 画像
開始画像
  1. ドットとパワーエサ
  2. フルーツ(8種類)
  3. パックマン(4方向クチパク)
  4. おばけ(4方向フルフル)
パックマンやおばけは移動方向があります。フルーツは種類があります。急にグラフィックデザインの仕事が忙しくなってきました。さらに開始時の音楽演奏で楽曲データが必要になります。

■ サウンド
  1. 開始ミュージック


  • ゲームプレイ
これはかなりたくさんの処理が必要です。一気に列挙してみます。
ゲームプレイ
■ プログラム
  1. 一方通行ワープ
  2. パックマン移動
  3. パックマンドットを食べる/スコア加算
  4. パックマン無敵モード
  5. パックマンやられ
  6. フルーツを食べる
  7. ボーナススコア文字列表示
  8. おばけ待機
  9. おばけ家から出る
  10. おばけ移動/共通
  11. おばけ(アカベエ)移動
  12. おばけ(ピンキー)移動
  13. おばけ(アオスケ)移動
  14. おばけ(グズタ)移動
  15. おばけ怯え
  16. おばけ目玉
  17. おばけ怯え終了警告点滅
  18. ステージクリア点滅
  19. ゲームオーバー
パッと思いつくだけでもこれぐらいの分解は必要でしょう。さて、上記の実装に必要な画像やサウンドもさらに追加となります。

■ 画像
パーツ
  1. パックマンやられ
  2. 怯えたおばけ
  3. 目玉(4方向)
  4. 小さな数字
■ サウンド
  1. 通常時環境音
  2. パワーアップ中の環境音
  3. ドットをを食べる音
  4. パワーエサを食べる音
  5. フルーツを食べる音
  6. おばけを食べた音
  7. 目玉が飛ぶ音
  8. パックマン溶ける音
※ この値段で過電流防止があるのは本当に有り難い!

  • 全ての作業内容を一覧にまとめる
上記で算出した工数をエクセルに登録して一覧とします。この時、各項目毎にまとめるのがポイントです。上記を項目毎にまとめると以下のようになりました。

■プログラム
 共通
  開発環境整備
  起動システム

  文字列表示(カラー)
  数値表示
  パネル表示
  コントローラ入力
  サウンドドライバ
  MMLコンバーター(C#)
  タイマー処理
 タイトルデモ
  コールドスタート
  ホットスタート
  タイトル画面
  スコア表示
 ゲーム開始デモ
  ゲーム開始直後の初期化
  ステージ開始初期化
  再スタート初期化
  ゲーム画面表示
  開始音楽演奏再生
  パックマンとおばけの表示
  READY表示
  一方通行
  ワープ
 ゲームプレイ
  パックマン
   移動
   ドットを食べる/スコア加算
   無敵モード
   やられ
   フルーツを食べる
  ボーナススコア文字列表示
  おばけ
   待機
   家から出る
   移動
    共通
    アカベエ
    ピンキー
    アオスケ
    グズタ
   怯え
   目玉
   怯え終了警告点滅
  フルーツ登場と消去
  ステージクリア点滅
  ゲームオーバー

■ 画像
 アルファベット文字
 パックマンロゴ
 ナムコットロゴ
 ドットとパワーエサ
 フルーツ(8種類)
 パックマン(4方向クチパク)
 おばけ(4方向フルフル)
 パックマンやられ
 怯えたおばけ
 目玉(4方向)
 小さな数字

■ サウンド
 開始ミュージック
 通常時環境音
 パワーアップ中の環境音
 ドットをを食べる音
 パワーエサを食べる音
 フルーツを食べる音
 おばけを食べた音
 目玉が飛ぶ音
 パックマン溶ける音

分かりやすいようにインデントを付けておきました。最初はおそらく平書きでしか無理だと思います。私はテキストエディタで書いた後で、エクセルで整形しました。このように一覧でまとめていくと、だいたいは「あ、あの処理作成が入っていない」と気がつきます。今回は、以下の記入漏れが見つかりました。

開発環境整備
いきなり作成開始なんて出来ないので、開発環境整備の時間が必要です。

起動システム
PC-6001mk2の場合は、ローダーであったり、ROM配置であったり、最初のハードウェアの初期化であったりと、いくつか準備が必要です。これに対応する時間は割と多く必要となります。

フルーツ登場と消去
フルーツを食べるを見ていて気がつきました。一定時間で出てきて、一定時間で消えますよね。すっかり失念していました。

さらに迷路探索処理とか、当たり判定とか、他にも作っていると「しまった、アレも別途作らなきゃ」という作業がドンドン見えてくると思います。このように既にゲーム内容が誰でも脳内で思い浮かべられる、仕様がきっちりと固まっているパックマンという有名なゲームですら、リスト化すると抜けが出てきます。新作ゲームであれば当然「抜け」は出るのが当然と考えてください。誰もが神様じゃないのですから。

抜けが見つかったら、即座に補填して修正します。このため、WBS分解は最初に一度行ったらお終いというワケではなく、常にメンテナンスが必要なのです。なお、最後に断り書きを。パックマンを完コピするのが本記事の掲載目的ではなく、パックマンを通してWBS分解を行うのが目的となります。そのため、例えばオートデモが仕様説明にないなど、実際のパックマンとは異なる部分が多数あります。あしからずご了承ください。…これだけ端折っても、ゲーム完成までには相当の工数が必要だという事、分かって頂けましたでしょうか?
※Newシティヒーローがパックマンのオマージュ程度にはパックマンは好きです…
次回、ゲーム制作の工数設定に続きます。
回転タップ6口壁コンセント
【Amazon】
2018-01-01
※ コレ凄い!過電流防止、雷サージで6口全てが回転する!決定版だわ!

※ パックマン/ファンメイドコンテンツ
このコンテンツはファンメイドコンテンツです。
パックマン及び自社IPゲームシリーズ」ファンメイドコンテンツポリシーのもと、利用させて頂いております。

https://www.pacman.com/jp/policy/fanmade.php