[過去ログ] ゲーム制作 雑談スレ【part39】 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
21(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 03:22:27.01 ID:gwr+bGfK(1/10) AAS
>>1414(1): 名前は開発中のものです。 [sage] 2025/09/05(金) 22:17:38.07 ID:btFndYsa(2/4) AAS
>>11
描画処理を知らんのだな
ゲームみたいな動的映像は常に全領域再描画してるんだよ
11x11の領域しか再描画しなくていいなんて状況にはならない
行ってることイミフ。毎フレーム全描画してるのはその通りだが、エンジンが内部で視野外カリングしてくれなかったら、全タイル描画は尚更重くなる
最近の低レベル描画エンジンは視野外をカリングしてくれるとはいえ、それでも100×100の内の11×11に限定すれば付随処理は1/81になる
>>1818(1): 名前は開発中のものです。 [sage] 2025/09/05(金) 22:58:34.11 ID:btFndYsa(4/4) AAS
>>5君が言ってるのは
描画領域外のマップを事前に保持してるかどうかの違いでしかないので
描画領域内に入るたびに描画処理する前者より
事前に裏で描画してある領域を表示するだけでいい後者のほうが当然軽い
裏で描画とかイミフ。上でも言ったが内部では毎フレーム、画面バッファをクリアして視野内を全部レンダリングし直している
マップ用テクスチャをあらかじめ描画しておいてゲームシーンで使い回すにしても、テクスチャサイズには限界がある。最近の高解像タイルには不向き
35(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 13:28:04.34 ID:gwr+bGfK(2/10) AAS
>>2020(1): 名前は開発中のものです。 [] 2025/09/06(土) 01:48:37.59 ID:nuZTTbZ9(1/9) AAS
A. 巨大なマップ全体を描画してスクロールする
100×100 キャラ → タイルサイズを 32px としても 3200×3200 ピクセルの画像。現代のPCではこの程度は余裕。
移動に合わせて Surface.blit() の描画位置をずらせば済むのでシンプル。メモリ的にも、数十MB程度なので pygame では問題にならない。
B. 毎フレーム「必要な範囲だけ」タイルを描画する
画面に見えているのは 11×11=121 タイルだけ。
毎フレームこの121枚を描画すればOK。効率的なやり方だけど、現代でも「マップが数千×数千タイル級」になるなら有利。
C. ハイブリッド
マップはデータ(2次元配列など)として持ち、画面更新のたびに「視界に入る部分だけタイル画像を描画」。
ほとんどのタイルベースのゲームエンジンがこの方式。タイル数が大きくても、画面に描画するタイル数は固定なので、性能は安定する。
AでもいけるがBCをつかう。
のAが重いか軽いかという話なら、やっぱり>>20のAの方が処理としては重いだろ
マップタイルを描画する場合、全体マップのテクスチャを使っても使わなくても、いずれにせよ描画コールは1回だけで済む。デカいテクスチャを使う方が重い
そもそも数千px四方に納まる全体マップという条件が特殊過ぎるので、レトロ作風か習作にしか通用しない。横に1画面程度スクロールさせるだけで世界の端かよw
反対に全体マップが数千px四方程度なら細かいこと気にせず、全体マップも作成せず、低レベルの視野外カリングに任せて、毎フレーム100×100描画で無問題
38(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 13:58:12.33 ID:gwr+bGfK(3/10) AAS
>>3737(2): 名前は開発中のものです。 [sage] 2025/09/06(土) 13:49:14.31 ID:bbhijobr(1/3) AAS
>>35
いやその人の例えならBのほうが重いよ
GPU負荷はどっちも同じで気にするほどの誤差は出ない
大量のドローコールによるCPU負荷が段違い
描画以外にもCPU処理は必要だから間違いなくBは次第にフレームレートが稼げなくなる
アホなこと考えてないで両方実装して試してみなよ
だからドローコールはどちらも1回だと言ってるだろ。テクスチャサイズの方がネックとしてデカい
39: 名前は開発中のものです。 [sage] 2025/09/06(土) 13:59:07.38 ID:gwr+bGfK(4/10) AAS
>>37
アホアホうるせえんだよ、このアホが。お前が試せw
43(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 14:25:42.99 ID:gwr+bGfK(5/10) AAS
>>4040(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 14:10:48.91 ID:bbhijobr(2/3) AAS
>>38
どちらも一回なんてありえないだろ
Bは全チップをチップ枚数分描画してるんだよ
ドローコールはAが1回でBは121回
お前の仮定がおかしい
つまり話を何にも理解してない
つ 例:glDrawElements
何も理解してなさすぎワロタ
44: 名前は開発中のものです。 [sage] 2025/09/06(土) 14:26:56.21 ID:gwr+bGfK(6/10) AAS
>>4242(2): 名前は開発中のものです。 [] 2025/09/06(土) 14:24:55.35 ID:nuZTTbZ9(6/9) AAS
喧嘩するなよ。俺が判定してやるよ32Pixの場合
〜100×100 タイル(3200×3200 px)Aが有利(blit 1回 vs 400回)
300×300 〜 → B/Cに移行するのがおすすめ。
128PIXの場合 100X100でAは現実的じゃない。
想定するピクセルがわからない時点で喧嘩しても意味ないぜ
失礼だな!喧嘩腰なのは奴の方だぞ
50(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 16:31:10.68 ID:gwr+bGfK(7/10) AAS
>>4949(1): 名前は開発中のものです。 [] 2025/09/06(土) 15:36:31.98 ID:w/QEgYfo(1/4) AAS
画像リンク
画像リンク
カメラ範囲だけの処理にとどめてくれる機能はpygameにはないらしい
unityにはある
pygameで作るなら昔ながらのc言語のゲームの作り方で作る必要がある
2000年代によくあったゲーム制作本にはそのやり方結構載ってた
pygameは知らんけど、どんな低レベル描画エンジン使ってるにしろ、低レベル描画エンジンがカリングしてくれるだろ
53: 名前は開発中のものです。 [sage] 2025/09/06(土) 17:28:02.32 ID:gwr+bGfK(8/10) AAS
>>4545(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 14:41:29.90 ID:nuZTTbZ9(7/9) AAS
>>43 Pygame単体でタイル描画してるなら → glDrawElements とは無関係だよ。
君は PyOpenGL + pygame(OpenGLモード) で glDrawElements を使えといってるのだろうが、そもそも質問者はそのレベルにいないよ。
「こんな所にS級が?!」とかあるあるやん
・・・アニメでは
54(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 18:34:45.05 ID:gwr+bGfK(9/10) AAS
>>51Pythonスクリプト層内での低レベルAPIへの描画コールは間引かれない(APIコールしても低レベルAPI内では間引かれるかも)、て意味じゃないの?知らんけど
58: 名前は開発中のものです。 [sage] 2025/09/06(土) 20:30:43.00 ID:gwr+bGfK(10/10) AAS
>>55平行線だな。低レベルの描画エンジンが視野外カリング・テストを行わないのは考えられない
だから俺は、そのLLMの回答はPythonスクリプトレイヤの話だ、と言っている
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s