アクションゲームの仕様について相談したいんやが開発者いたら来てくれ

22D15E76-946D-41AF-83A6-9CBC8974CB71.png

1: 新年まで@33:08:18 20/12/30(水)14:51:42 ID:mcT

2Dアクションなんやがステージを読み込み制にするかシーン切り替え制にするか迷ってる



2: 新年まで@33:07:10 20/12/30(水)14:52:50 ID:3p1

>>1
今はモリモリメモリアルからシーン切り替えでええんちゃう?
悪魔上ドラキュラ最高や。


3: 新年まで@33:06:34 20/12/30(水)14:53:26 ID:mcT

>>2
ロード早いかな?
そのへんのメリットデメリットもあんまわかってないんよ
ノウハウないから


6: 新年まで@33:04:21 20/12/30(水)14:55:39 ID:3p1

>>3
今いる周辺が読み込まれてればええのと、メモリに余裕があれば近隣マップを先読みするだけや。


7: 新年まで@33:03:01 20/12/30(水)14:56:59 ID:mcT

>>6
あれ?
シーン切り替えってワイ箱庭みたいなちっちゃなマップの出口に入ると画面が暗転して次のマップの入り口に立ってる感じかと思った
あれちゃうんか?
それはむしろシームレスちゃう?
変なこと言ってたらすまん


4: 新年まで@33:05:47 20/12/30(水)14:54:13 ID:mcT

システム面をひたすら作り込んできてさぁ作るぞって段になって全くわからん
この辺の議論を昔Unityスレを立てたときにされてるの見たからお前ら詳しいんちゃうかと思って


5: 新年まで@33:04:42 20/12/30(水)14:55:18 ID:mcT

teratailにこんなほわほわした質問投げられんしな…


8: 新年まで@33:02:29 20/12/30(水)14:57:31 ID:3p1

ぶっちゃけどっちもええってのはあるけど、どんなゲームにしたいかが重要やと思うは。
悪魔上ドラキュラとか一つの城を舞台にしてるからな。
上に行くと上ステージへ右へ行くと右ステージへみたいな感じやし。
マリオみたいなストーリー一直線ならステージ制でええと思う。


10: 新年まで@33:01:31 20/12/30(水)14:58:29 ID:mcT

>>8
一本道になるかもしれん
きちんとしたの作るの初めてやし
あっても裏ダンジョン一つとかやろか


9: 新年まで@33:02:15 20/12/30(水)14:57:45 ID:mcT

マジで独学やから変なこと言ってると思うけど暇やったら勉強させてくだせぇ…


11: 新年まで@33:01:00 20/12/30(水)14:59:00 ID:mcT

いや、希望言うわ
実はシームレスがええんや…
でもシームレスの実装法がわからん


12: 新年まで@33:00:46 20/12/30(水)14:59:14 ID:mcT

超でかい一つのシーンを作って周りだけロードする感じ?


13: 新年まで@33:00:23 20/12/30(水)14:59:37 ID:3p1

いっちが思ってるのって技術的にはどっちも同じ気がするわ。
ステージの端に行けば、その先のマップが表示されるかだけの表現の違いじゃね?


15: 新年まで@32:59:21 20/12/30(水)15:00:39 ID:mcT

>>13
確かにそうかもしれん
でもワイのイメージでは

シームレスは常に周囲の0.3の範囲を実体化する感じで、シーン切り替えは暗転ロードはさみつつ小さなマップの1を切り替えていく感じやと思ってた


17: 新年まで@32:57:17 20/12/30(水)15:02:43 ID:3p1

>>15
いっちがやりたいシームレスはなんとなくわかったが、おすすめせんで。
NPCの制御が膨大になるから。
制限かけてないと、時間がたてばボスクラスが目の前にとか・・・


18: 新年まで@32:56:39 20/12/30(水)15:03:21 ID:mcT

>>17
他のアプローチで実装できんやろか
シーン切り替えが無難かな?


14: 新年まで@33:00:17 20/12/30(水)14:59:43 ID:mcT

でもそのロードってのが分からんな
シーンでもなくマップをロードする方法があるんかね?


16: 新年まで@32:58:06 20/12/30(水)15:01:54 ID:mcT

大きな世界の中を移動する感じとたくさんつながった小さな世界を渡り歩く感じって言えば分かるやろか
認識に間違いがあったら教えてクレメンス
完全に独断と偏見のイメージや


19: 新年まで@32:55:38 20/12/30(水)15:04:22 ID:3p1

管理が大変なだけでできなくないで。
管理が大変なだけで・・・


23: 新年まで@32:55:13 20/12/30(水)15:04:47 ID:mcT

>>19
ありがとう


20: 新年まで@32:55:26 20/12/30(水)15:04:34 ID:mcT

う~ん


21: 新年まで@32:55:22 20/12/30(水)15:04:38 ID:mcT

あかんかろ


22: 新年まで@32:55:18 20/12/30(水)15:04:42 ID:mcT

あかんか…


24: 新年まで@32:54:12 20/12/30(水)15:05:48 ID:3p1

敵はこの範囲から出られないというのを全員につけなあかんし、主人公がXXpxの範囲になってアクティブになるとか。
一度死んだ敵の復活方法とか。
ボスとの戦闘中、エリアから抜けられないようにするとか。


26: 新年まで@32:53:05 20/12/30(水)15:06:55 ID:mcT

>>24
敵は主人公が一定まで近寄らんと動かんようになってる
あと初期位置にドッグパイルつけてるからそれは問題ない


25: 新年まで@32:53:34 20/12/30(水)15:06:26 ID:mcT

シーン切り替えをシームレスに見せる工夫について考えようかな
そんなことできるのかな
あとあほやから変数をscriptableのstaticにしてないのが結構あるのでシーン切り替え形式ならコードも書き直さんと


27: 新年まで@32:53:04 20/12/30(水)15:06:56 ID:3p1

全部スクリプトにしなはれ。


28: 新年まで@32:52:37 20/12/30(水)15:07:23 ID:GM5

昔のマリオブラザーズみたいに独立したステージをたくさん用意して順に進んでいくのか、ダークソウルみたいに全部繋げて1つのマップにおさめるかって話?

それとも、ダークソウルはプレイヤーキャラの周辺のみオブジェクトとか読み込んで処理してると思うが、マイクラみたいに見えてないところも常に処理し続ける、みたいな話?


30: 新年まで@32:52:09 20/12/30(水)15:07:51 ID:mcT

>>28
見えないところは処理しない
ダクソ形式や
ちなセンの古城バグはあれそういうことやったんやな


29: 新年まで@32:52:36 20/12/30(水)15:07:24 ID:mcT

動かないというよりは機能を凍結されてる感じ
一旦持ち場を離れたら持ち場に戻るまでは範囲外に行っても動く


31: 新年まで@32:50:49 20/12/30(水)15:09:11 ID:3p1

マップイメージの読み込みのイメージとしてはGoogleマップをイメージしたらええで。


35: 新年まで@32:49:11 20/12/30(水)15:10:49 ID:mcT

>>31
確かに徐々に読み込まれるもんな、ストリートビュー


32: 新年まで@32:50:42 20/12/30(水)15:09:18 ID:mcT

ちなみにベースAIクラスにそういうのつけてるから継承して個々のAIにはデフォルトでついてる
意図的に外せるけど
敵キャラの管理は大丈夫や
あとは列挙型でマップごとに識別表作って、休憩ポイントごとに復活する識別表の敵を選択するとかどうや?


33: 新年まで@32:49:31 20/12/30(水)15:10:29 ID:3p1

個人的には全部の敵、死亡から経過時間で復活+強化だと楽しいかもしれん。


36: 新年まで@32:48:51 20/12/30(水)15:11:09 ID:mcT

>>33
地獄過ぎて草
ただ味方のNPCが相当強いからありかも


34: 新年まで@32:49:22 20/12/30(水)15:10:38 ID:mcT

ボスとの戦闘中抜けられないようにするのは簡単そうやな
ボス戦フラグを立てればいい
帰還アイテムにはボス戦フラグを折る効果まで含めればリスタートもできそう?
まだなんかネックになるところあるかな


37: 新年まで@32:48:26 20/12/30(水)15:11:34 ID:GM5

今さらやが悩みの内容が分かってきた

マリオ形式かダクソ形式かで悩んでいて、理想は後者やけど実際に実装するとなるとどのようにしたらいいのだろうかっていうので悩んでいるということか?


38: 新年まで@32:48:13 20/12/30(水)15:11:47 ID:mcT

>>37
せやねん
ほんまわかりにくくてごめんね


39: 新年まで@32:47:43 20/12/30(水)15:12:17 ID:3p1

画面を9分割したくらいが1単位として、自身を中心とした81単位くらいを常にメモリ上に展開しておけばええと思う。
敵はもう少し早い目にロードしておいて。移動速度に間に合えばおk。


40: 新年まで@32:46:52 20/12/30(水)15:13:08 ID:mcT

>>39
そのロードってのはどうすればええんやろか
たとえばエフェクトをロードするならそのエフェクトのプレハブを呼び出せばええよな?
自分の周りのマップを呼び出すってのはどうすればええの?
なにを呼び出すんやそれ


46: 新年まで@32:45:26 20/12/30(水)15:14:34 ID:3p1

>>40
HDDやSSDからテクスチャロードして、いつでもDraw関数にツッコめるようにする。


48: 新年まで@32:44:24 20/12/30(水)15:15:36 ID:mcT

>>46
すまん、エンジン使ってるけど描画にワイが手を回せる?
それともテクスチャデータをコードでロードしとけばオーケー?


41: 新年まで@32:46:45 20/12/30(水)15:13:15 ID:mcT

ばあちゃんから電話


42: 新年まで@32:46:19 20/12/30(水)15:13:41 ID:3p1

2Dといいつつ、オブジェクトは3Dかい?


45: 新年まで@32:45:31 20/12/30(水)15:14:29 ID:mcT

>>42
いや2Dや


43: 新年まで@32:45:58 20/12/30(水)15:14:02 ID:Iug

LoadAsyncである地点に差し掛かったら地形のシーン読み込む非同期ロード使うんやったけ?


47: 新年まで@32:45:15 20/12/30(水)15:14:45 ID:mcT

>>43
地形データとか2Dでいけるんか?


49: 新年まで@32:44:19 20/12/30(水)15:15:41 ID:3p1

>>47
2Dなら複数の素材を重ね合わせるのもある。
背景+中層の背景+マップオブジェクトみたいな。


44: 新年まで@32:45:37 20/12/30(水)15:14:23 ID:mcT

すまんこ


50: 新年まで@32:42:41 20/12/30(水)15:17:19 ID:3p1

なんのエンジン使ってるかわからんが、
Draw( 10 , 20 , "AAA.bmp" )みたいなクソな事やってないやろ?

Load( mTex, "AAA.bmp" ) メモリ上に展開
Draw( mTex, 10, 20 )描画
みたいな感じや。


52: 新年まで@32:41:58 20/12/30(水)15:18:02 ID:mcT

>>50
Unityエンジンや
描画はレンダラー任せですゾ…


51: 新年まで@32:42:24 20/12/30(水)15:17:36 ID:mcT

ああ、ロードってInstantinateする準備かと思ってたけどそういう読み込みのためにするのもあるんやな
でも同じマップならだいたいテクスチャ同じやと思うが通り過ぎた場所アンロードするにはどうすればええんやろか


53: 新年まで@32:41:56 20/12/30(水)15:18:04 ID:3p1

Disposeとかないか?


54: 新年まで@32:41:40 20/12/30(水)15:18:20 ID:mcT

>>53
Disposeに近いものならある
メモリ開放やろ?
ありますやで


55: 新年まで@32:40:56 20/12/30(水)15:19:04 ID:mcT

アンロードとか破棄とかとは違うのか?
Disposeは使ったことないなUnityで…


56: 新年まで@32:39:06 20/12/30(水)15:20:54 ID:3p1

テクスチャもDisposeすればええねん。
ガベージコレクションで破棄してくれると思うで。
DirectXおじさんでUnity触ってないからなんとも言えんが。


62: 新年まで@32:36:40 20/12/30(水)15:23:20 ID:mcT

>>56
えっと
同じテクスチャを共通して参照してる部分が大きいでっかいマップを移動してるとき、周囲の狭い範囲を移動しつつロードするのはどうすればええのかな
ごめんほんま
頭悪くて


64: 新年まで@32:34:11 20/12/30(水)15:25:49 ID:3p1

>>62
>>61で書いたようなアクティブ素材に関してタイムスタンプを更新するようなクラスを作れば、必要とした時刻を常に更新し続けてあげたら、このテクスチャの有効時刻は新しいからそのまま。
使わなくなった素材のタイムスタンプはどんどん古くなっていくので、そういった素材から解放される。


66: 新年まで@32:33:05 20/12/30(水)15:26:55 ID:mcT

>>64
なるほど!
増えてきたら古いのから消す感じか!
それなら増える=読み込みやし溢れたとこから消していけますね


57: 新年まで@32:38:51 20/12/30(水)15:21:09 ID:6vP

どっちが良いかわからんのならどっちも作って別のゲームにしようぜ


60: 新年まで@32:37:47 20/12/30(水)15:22:13 ID:mcT

>>57
ポジティブすぎる


58: 新年まで@32:38:28 20/12/30(水)15:21:32 ID:mcT

Unityには独自のメモリ管理システムがあるからディスポーズは使わんかも
使ったほうがええかな


59: 新年まで@32:38:10 20/12/30(水)15:21:50 ID:GM5

イッチと有能おんJ民がんばれ
アクションゲームは門外漢やからワイは見てるだけになるけど
こういう苦労も含めてゲーム開発って楽しいよな


61: 新年まで@32:37:21 20/12/30(水)15:22:39 ID:3p1

基本的に開放に関してはメモリ管理クラスでもつくってやらせたらええで。
必要なテクスチャ情報を事前読み込みor読み込んでる場合に時刻を登録。
残メモリ容量を監視して、厳しくなったら古い時刻の素材からDispose


63: 新年まで@32:34:32 20/12/30(水)15:25:28 ID:mcT

それとも気をつけるのはテクスチャのロードだけでええんか?
そうしてたら周囲のオブジェクトのぶんだけ勝手に演算してくれたりするかな?

いやそもそも違うのかな
ダクソとかでもマップ読み込みでバグるのは切れ目のとこだけだったもんな
マップの入り口で全部読み込んでしまうもんなのかな?


65: 新年まで@32:33:13 20/12/30(水)15:26:47 ID:6vP

次のエリアの入り口が画面に入るときにロードしたらええんちゃう


https://sp.logsoku.com/r/open2ch.net/livejupiter/1609307502/

この記事へのコメント