テスト駆動でゲーム開発はできるのか?

ゲームの開発にテスト駆動開発を取り入れてみる検証のブログです

TDDでゲーム開発

方向性を決定しました

検討した結果、今までのコードを引き続き使って行く事にしました。今後は今までとは別のゲームを作りながらTDDの検証をして行きます。ゲームの内容はとりあえず、横スクロールをしながら迫ってくる敵を倒すものとします。

プロジェクトが中止になったので、方向転換をします

かなり更新期間が空いてしまいました。TDDでゲーム開発を行う事が出来るかの検証プロジェクトとして使用させてもらっていたCROSSプロジェクトですが 自分を含めプロジェクトメンバー全員が十分な開発時間をとる事ができないため、中止となりました。ですので…

std::shared_ptrにポインタを置き換える

std::shared_ptr が使えるようになったので、今まで普通にポインタを使っていた箇所をstd::shared_ptrに置き換える事にします。CollisionAreaクラスの場合 std::shared_ptr<CollisionArea> area = std::shared_ptr<CollisionArea>(new CollisionArea(x, y, w, h)); と書くのは読みづらいの</collisionarea></collisionarea>…

今度はshared_ptrが使えない

仕事が忙しくしばらく間が空いてしまいましたが、一段落したので開発の続きを行います。次はCollisionDitectionクラスにコリジョンの登録と削除のテストを書く事にしたのですが 登録するコリジョンをshared_ptrで扱おうとしたところ、またビルドエラーになっ…

Google Testのリンクエラーの対応

Google Testでよくわからないリンクエラーにハマってしまったので、備忘録を残します。開発環境は Xcode 5.0.2 Gootle Test 1.7.0この環境で、ASSERT_EQを呼び出してビルドすると以下のようなリンクエラーが出てしまいました。 Undefined symbols for archit…

密結合になってしまった設計

これから作成したい機能は以下になりますが キャラクタが持つ自分の衝突範囲を衝突判定処理クラスに登録する(2体分) 衝突判定処理クラスがキャラクタ同士の衝突を検知したら、衝突したキャラクタに衝突情報を通知する テストコードを書く前に、シーケンス…

衝突処理の設計

衝突判定処理ができたので、次は実際にそれを呼び出す処理を作って行きます。アクションゲームなので、キャラクタと攻撃の衝突があります。 それと、キャラクタ同士も衝突をします。ですので、先ずはキャラクタ同士の衝突処理を作成する事にします。 前回の…

グリーンの状態でリファクタリング

衝突判定のユニットテストはグリーンになりましたが、テストコードにdeleteが抜けているのでメモリリークを起こしてしまいます。 以前Objective-Cで書いていたコードを持ってきたので、ついdeleteを忘れてしまっていました。 単純にdeleteを追加すれば修正が…

レッドのテストをグリーンにする

衝突判定のテストがレッドの状態なので、実装を行ってグリーンにしていきます。 bool CollisionDetection::isCollide(CollisionArea *lhs, CollisionArea *rhs) { if(lhs == 0 || rhs == 0) { return false; } const float selfLeft = lhs->x; const float s…

衝突判定のテストコードを書く

アクションゲームなので、先ずはシンプルな衝突判定処理を作成する所から始める事にします。テストファーストで開発する流れは、簡単に説明すると以下のようになります。 テストコードを書いて失敗させる → レッド テストコードが通るように実装する → グリ…

開発環境の準備

GitHubにサンプルプロジェクトを準備しました。 https://github.com/yobiya/tdd_game_sample 公開するプロジェクトのコードなどはここにコミットしていきます。 今回は開発環境の準備と言う事で、cocos2d-xのプロジェクトとUnitTestの実行環境を準備しました…

検証に使うゲーム

TDDで開発するゲームは、今友人と一緒に作っているゲームなのですが 許可をもらって、一部のコードを公開することにしました。 検証なので、途中経過も重要になるかと思います。 後ほど、公開できるコードをGitHubにアップいたします。 iOSアプリで、ジャン…

TDDでゲーム開発はできるのか?

TDD(テスト駆動開発)について知ったのは多分10年くらい前だったと思います。 当時はまだ学生でC Magazineか何かでアジャイル開発のXPを初めて知って、その中でTDDも知りました。 自分はゲームが作りたかったので、その後運良くXPをやっていたゲーム会社に…