###前提・実現したいこと
こんにちは毎度お世話になっております。
今回は、ツクールのような、RPGゲームをつくりたいのですが、前回の質問でご指摘を受けて悩んでいることがあります。
具体的には、今回のようなマップ性のゲームで、キャラクターなどのオブジェクトが自身の座標をもつことに違和感があるというものです。
簡単に書くと、
座標 → オブジェクト
オブジェクト → 座標
どちらの流れが自然かで悩んでいます。
質問の意図がつかめない方は、上のリンク「前回の質問」をご参照ください。
ずいぶんとおおざっぱな質問でわかりにくいと思いますが、そのときは追記依頼をお願いします。
どうぞよろしくお願いします。
###今のところ考えられる方法
配列の中にオブジェクトがあって、座標を指定してそこからオブジェクトを取り出す方法
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
個人的にはそのゲームの内容によって設計を考えます。
ドラゴンクエストとファイアーエムブレムというと大体のゲームのイメージがつかめますでしょうか?
マップ上で十字キーを押したときに、前者はキャラクターが、後者はマップ上の位置がカーソルで動きます。
前者であれば、十字キーを押すとキャラクターが能動的に動くイメージです。この場合、個人的にはマップ上を移動するメソッドはキャラクターのオブジェクトを主導として実装したいので、おそらくキャラクターが現在の座標を持っているほうが処理が円滑に進むのではないかと思います。左に進みたいのだがそこには進めないので動かない、とか、前に宝箱があってそれをあけるかどうか、という判断もキャラクター自身にさせたいです。
ただしキャラクターの周りに何があるかは別管理にするでしょうね。キャラクターは現在の座標を持っていて、その座標を元に別の地形を管理している箇所に問い合わせを行い、前に何があるかを返します。その返り値をもって、キャラクターが何をするかという選択肢が示される。というような実装が自然に感じられます。
後者であれば、キャラクター自身が能動的に動くのではなく、マップ上の地形が既に存在し、そこにキャラクターが乗る、というイメージです。キャラクターが能動的に相手を攻撃する、というよりは、地形を選んでそこにキャラクターがいて、周囲に敵がいれば攻撃することもできる、というようなイメージを私個人は持ちます。ですのでその場合キャラクターには現在の座標は持たせないかもしれません。キャラクター自身が自分の座標を持っている必要を感じないからです。
ただし同様のゲームであっても周囲に敵がいればキャラクターは自動的に相手を攻撃する、というようなゲーム内容の場合はキャラクターが自分自身の座標を持っているほうが処理が円滑に進むだろうと思いますし自然に感じられます。
上記のようにそのゲームの内容によって何が自然な設計かは変わってくると思います。
投稿2017/06/04 05:23
総合スコア1947
0
具体的には、今回のようなマップ性のゲームで、キャラクターなどのオブジェクトが自身の座標をもつことに違和感があるというものです。
その違和感は正しいです。
「キャラクターなどのオブジェクトは自身の座標を持たない」方が多くの場合良い選択となります。
メリットは”オブジェクトの座標情報がマップに集約されるので設計がシンプルになる”ことです。
デメリットもあります。”実装手順が多くなる”や”処理速度”といったことです。
現段階ではデメリットを気にする必要はないでしょう。
デメリットは最適化の問題なので、問題が現実に発生したらその問題に合わせて最適化すれば良いです。
今回の問題に対して、私なら下記のようにします。
・マップは全オブジェクトの座標を管理(「今のところ考えられる方法」に記載のされた内容)
・キャラクタ(オブジェクト)は自分を管理しているマップへの参照をもつ(これは必然)
この方法には賛否が出ると思います。また、実装すると非効率だと感じることでしょう。
キャラクタが自身の現在座標を知るだけでループで探すことになるからです。
キャラクタが自身の座標を持っていればループは必要なくなります。
ですが、オブジェクトに座標を持たせてしまうと
マップとの二重管理を発端に随所に座標やオブジェクトの捜索をする処理が必要になってきます。
定石や上手い管理の仕方がない限り、オブジェクト捜索と座標計算の化け物になってしまいます。
なので、冒頭の回答となります。
蛇足ですが
現実世界もそうです。私たちは自分がどこにいるのかその座標を自分自身では知りません。
自分自身の外、つまりマップが教えてくれます。最も端的な例はGPSです。風景も例になります。
移動に関しても、前に進む時、私たちは意思は持つものの、前に壁があれば進めません。
壁は自分自身の外、マップに存在します。私たちは目を通してそれを認識します。
キャラクタ(=私たち)は、常にマップから情報を得て行動や判断をしているのです。
この点からも、自身の座標を持たないという選択は自然なことと言えます。
投稿2017/06/04 06:42
総合スコア804
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/04 13:55
2017/06/05 08:40
2017/06/05 18:08
2017/06/09 14:30
2017/06/11 02:09
2017/06/11 02:26
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/04 05:54 編集
2017/06/04 05:55
2017/06/04 06:00