Upgrade to Pro — share decks privately, control downloads, hide ads and more …

いい感じのパッケージ構成を考える

kyp
March 29, 2024
350

 いい感じのパッケージ構成を考える

kyp

March 29, 2024
Tweet

Transcript

  1. 発表者について kyp (X: @_newkyp) SAFE HAVN STUDIOという3人のサークルで 「SAEKO: Giantess Dating

    Sim」を作っています SAEKO: Giantess Dating Sim https://saekogame.com/ 少しダークで刺激的なノベルゲーム 大きい女の子がでてくる
  2. 層を分ける: state, drawer sceneごとに、 state パッケージと drawer パッケージを用意。 ゲームのデータを具体的に変更する処理は state

    パッケージに、 そのデータを描画する処理は drawer パッケージに分けて書く。 scene.Day state.Day drawer.Day ゲームのデータ を変更する ゲームのデータ を描画する
  3. 層を分ける: state, drawer sceneはすごく薄い。 毎フレーム state, drawerを呼び出し、 相互の連携をするだけ。 scene.Day state.Day

    drawer.Day s.state.Update() s.drawer.Update(s.state) s.drawer.Draw() func (s *Basic) Update(game *Game) (err error) { // 例外処理とかは省略 s.state.Update() s.drawer.Update(s.state) return nil } func (s Basic) Draw(screen *ebiten.Image) { s.drawer.Draw(screen) }
  4. 層を分ける: state, drawer 利点: 状態管理 と 描画 を分けられること - 「描画を変えたらなぜか条件分岐までバグる」みたいな心配がない

    - バグが起きたときも該当箇所が分かりやすい (注: 実際には2つはすっぱり分けられない ボタンの位置やアニメーションの秒数など、描画が状態に影響するものがある → state でも drawer でもないパッケージを作って管理するとスッキリする)