チーム開発記

はじめに

この記事はこの記事は、SLP_KBIT Advent Calendar 2016 の20日目の記事です。
最近、チームで簡単なゲーム開発を行ったので、そのことについて書いていきます。

ゲーム内容

今回開発を行ったのは、Pongのような2Dの卓球ゲームをベースに、ブロック崩しの要素を加えた対戦ゲームです。
これだけではゲームとして物足らないので、3種類の必殺技を追加し、対戦ゲームとしての戦略性の向上を目指しました。 言語はJavaで、Eclipseで開発を行いました。ソースコードの共有にはGithubをもちいました。開発期間はおよそ1か月です。

チーム開発

今回のゲームは3人で開発を行いました。一応自分はチームの代表者として、開発スケジュールやメンバへのタスク割当などをしました。(一応コードも書きました)
開発自体は、前半、中盤、後半の3段階に分けて、進めていきました。 タスク管理などは、部屋にあったホワイトボードに今日のやることを書いておき、終われば消すという古典的な方法をしてました(大笑)

前半

前半はゲーム開発に向けて、どんなクラスが必要になるのか、各クラスにどれだけの責任を持たせるのかについて話し合いました。
そして、以下のクラスを設計することになりました。

  • CBYC_Bong
    メインのクラス
  • GameObject
    ボールやブロックなどのオブジェクトの共通情報を扱う
  • Field
  • Wall
  • Puck
  • Racket
  • Block

  • Character
    プレイヤの共通情報を扱う

  • Player
  • GameSound

中盤

中盤では、前半で考えた設計を基に、担当を割り振って各クラスの実装を行っていきました。
クラスの実装ができたら、それぞれの動作を確認し、バグの確認を行っていきました。 実装を行っていくうえで、もっと細分化できるクラスはないか、実装した方がいいクラスはないかを確認していきました。 そこで、新たに以下のクラスを設計実装を行いました。

  • DeadlyGauge
    必殺技ゲージ
  • Goal
    Wallクラスを継承
  • Manager
    オブジェクトの初期位置などの定数を管理
  • ObjectManager
    Block, Wall, Goal, Puck, Field, Racketのインスタンスを管理 オブジェクトの移動などはこのクラスを介して行う
  • PlayerManager
    Playerのインスタンスを管理
  • Operation
    操作説明を表示

さらに、ゲームらしくするために、タイトル画面を設計し、画面遷移が行えるようにしたり、画像やBGMとなる音声などを集め、実装していきました。 そこで、画面設計を担当するクラスを新に実装しました。

  • StartScreen
  • WinScreen

終盤

最後の仕上げとして、必殺技のバランスの調整や、使いやすさの向上を目指して、テストプレイを何十人かに行ってもらい、その感想からキー配置を変えたりしました。
テストプレイを行うことで発見できたバグもありました。
最後の最後まで、チーム全体でもっと面白いゲームに仕上げようと様々な案が出てきました。そのうちのいくつかを紹介します。

  • 2回当てないと壊せないブロック
  • 必殺技発動時にカットイン
  • ボタンを押していることをゲーム画面にも表示

まとめ

最近行ったチーム開発についてざっくりと紹介しました。
いいものを作るには、チーム全体で同じ方向を向いていることが大切なので、メンバとはしっかりと話し合い、実装を行っていきました。
タスク管理などはGithubのissueを使えばいいのに...だらしねぇと言われるかもしれませんが、その時はよく使い方がわからなかったので、仕方ないね。
チームで作業をすると、自分が知らない方法もメンバが知っていたりと、非常にいい勉強になります。
皆さんも、また同じメンバでなにか作りたいと思えるダチを見つけましょう!!

ちなみに開発したゲームのコードはGithubにあります。 GitHub - sekishin/CBYC_Bong