読者です 読者をやめる 読者になる 読者になる

2016年10月中盤のゲーム開発日記

ゲーム開発 雑記

10日ほど日記が開いてしまいましたが、ゲームは鋭意開発中です。骨組み部分なので見た目には何も進んでいません。開発を初めて約3週間ですがやってきた事はというと…。

  • ゲームエンジンの骨子部分の開発
    • 全ての要素(entity)の元になるベースクラス
    • 親子entityの直接会話(実際には親から子へのみ)
    • スプライト管理、アニメーション管理機能(Luaに移行予定)
    • 状態によってクラスや関数ポインタを切り換えて挙動が変わるシステム
    • アプリケーショングラフ(アプリケーション→シーン→レイヤー→オブジェクト)
  • ゲーム遷移
  • オブジェクト間のメッセージングシステム(遅延対応)
  • キーイベント
    • 設定によるキーバインディング対応
    • シーン毎のキーイベント処理システム(コールバック対応)
    • window/フルスクリーンモード対応(OSXの仕様でちょい微妙)
  • iniファイルみたいな、外部ファイルによるConfig機能(TOMLで)
  • luaとluabind動作テスト
  • 設定シーン用にTgui動作テスト

と大仰に書けばいろいろやっています。さらにC++自体の学習も並行していたので、コードも行きつ戻りつしています。プロトタイプではクラス設計を適当にすればよかったのですが、本組みとなるとそうもいきません。土台を固めようとちゃんと書いていると、アップキャスト、ダウンキャスト、vtableとvirtualメソッド、テンプレートなどの仕組みをキッチリ理解させられるハメになりました。

動的型付けのスクリプトの世界から来た僕からすると、この強烈な静的型付けの世界では、便利な事はだいたい速度とはトレードオフな世界で、どうクラス設計をすればいいか本当に悩みました。せっかくなのでできるだけC++っぽくなるように設計しています。そうしていくと静的型付けの構文チェックやデバッグ機能が最強に機能して、そういう部分では開発が楽になってきました。こういったものを乗り越えて、3週間ほどでだいぶC++コンパイラとの会話のキャッチボールにも慣れてきて、コードを通すという部分で苦労する事は無くなってきました。

ここからは…あと1〜2週間引き続き骨組み部分の開発だと思います。

  • Luaの本格的な組み込み
  • Tguiの本格的な組み込み
  • スプラッシュ・タイトル・設定シーンの仮組み
  • コマンドラインツールの組み込み(ゲーム走らせたままLuaのリロードとかシーンジャンプとかに使う予定)
  • ゲーム部分の取り掛かり
    • といってもデバッグ機能の実装から

あたりが出来たらなあと思っています。ここまで来たら、絵とプログラミングが半々くらいになって「ゲーム作ってるぞ!」といった風情が画面から出てくるかなあ。