赤宿 = Red Inn

素人の試行錯誤と2Dゲームプログラミング

What Decoupling is About

Got Stuck

 Tiledのマップのロードで長く行き詰っていた(Nezフレームワークを使用中)。

Content.Load<TiledMap>の行で、実行時にMonoGameのContentLoadExceptionが出た。Content/binとContent/objを削除し、再びcontent.mgcbをビルドするとエラーは出なかった。なぜ……。

Woditor

 ハマっていたため、ウディタローグライクを作っていた。やれば進むというのはいい。

f:id:samba_4e:20170408010606p:plain (カーソル位置/主人公方向に白枠を表示)

 だが常に進むことを要求されるとうんざりすることもある。うんざりするとゲームをやりたくなるが、やりたい3Dのゲームは今プレイできない。遊びたいゲームを自分で作るしかないのだ…。

 インフラ整備的な下準備は完了した。仕様の決定で数回悩んだが、分離によって解決できた。分離により、特定の仕様と他のコードが疎結合になる(どのような仕様にも差し替えられるようになる)。このため仕様を決めるという問題が無くなり、各機能も役割がはっきりして把握しやすい。問題が消えるというのは、プログラミングで頻出のパタンだと思う。『分離』はその解決策の部分集合なのかもしれない。

 ウディタでゲームを作るときは、『オブジェクト』という概念が無かった。データしか無いのだから、当たり前だと思う。あくまで、『Actorを動かす』、『攻撃する』。神たる自分が。そこに、『オブジェクト』の存在を想定すると、『Actorが歩く』、『Actionを起動する』という風にプログラミングが変わっていく。するとコードに指向性が生まれ、いろいろと都合が良くなる――というのがボトムアップOOPなのだろうか。

(やるなら)今後の実装:Action(攻撃など), AI, Item, Trap, Inventory, HUD, Option, and the Game Contents

 余裕があれば初心に戻ってクソゲーを作り、ウディコン(2017年7月)に提出したい。ただ、もしもウディタユーザとしての自分の役割があるとしたら、ウディタを止めてプログラミングの海へ出ていくことの方だろうと思う。