質問: ### 前提・実現したいこと こんにちは毎度お世話になっております。 今回は、ツクールのような、RPGゲームをつくりたいのですが、前回の質問でご指摘を受けて悩んでいることがあります。 具体的には、今回のようなマップ性のゲームで、キャラクターなどのオブジェクトが自身の座標をもつことに違和感があるというものです。 簡単に書くと、 座標 → オブジェクト オブジェクト → 座標 どちらの流れが自然かで悩んでいます。 質問の意図がつかめない方は、上のリンク「前回の質問」をご参照ください。 ずいぶんとおおざっぱな質問でわかりにくいと思いますが、そのときは追記依頼をお願いします。 どうぞよろしくお願いします。 ### 今のところ考えられる方法 配列の中にオブジェクトがあって、座標を指定してそこからオブジェクトを取り出す方法
回答: 個人的にはそのゲームの内容によって設計を考えます。 ドラゴンクエストとファイアーエムブレムというと大体のゲームのイメージがつかめますでしょうか? マップ上で十字キーを押したときに、前者はキャラクターが、後者はマップ上の位置がカーソルで動きます。 前者であれば、十字キーを押すとキャラクターが能動的に動くイメージです。この場合、個人的にはマップ上を移動するメソッドはキャラクターのオブジェクトを主導として実装したいので、おそらくキャラクターが現在の座標を持っているほうが処理が円滑に進むのではないかと思います。左に進みたいのだがそこには進めないので動かない、とか、前に宝箱があってそれをあけるかどうか、という判断もキャラクター自身にさせたいです。 ただしキャラクターの周りに何があるかは別管理にするでしょうね。キャラクターは現在の座標を持っていて、その座標を元に別の地形を管理している箇所に問い合わせを行い、前に何があるかを返します。その返り値をもって、キャラクターが何をするかという選択肢が示される。というような実装が自然に感じられます。 後者であれば、キャラクター自身が能動的に動くのではなく、マップ上の地形が既に存在し、そこにキャラクターが乗る、というイメージです。キャラクターが能動的に相手を攻撃する、というよりは、地形を選んでそこにキャラクターがいて、周囲に敵がいれば攻撃することもできる、というようなイメージを私個人は持ちます。ですのでその場合キャラクターには現在の座標は持たせないかもしれません。キャラクター自身が自分の座標を持っている必要を感じないからです。 ただし同様のゲームであっても周囲に敵がいればキャラクターは自動的に相手を攻撃する、というようなゲーム内容の場合はキャラクターが自分自身の座標を持っているほうが処理が円滑に進むだろうと思いますし自然に感じられます。 上記のようにそのゲームの内容によって何が自然な設計かは変わってくると思います。