[過去ログ] ゲーム制作 雑談スレ【part39】 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
61(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 22:37:01.34 ID:zOtGPqEd(1) AAS
 >>55チャッピーに騙された可哀想な人がいる…… 
 もう一度これで質問してみ? 
  
 Q: 以下の問いについて事実に基づいた解説をせよ。 
 1. pygameのSurface.blit() は、ソースのピクセルをdest Surfaceに転写する処理である。 
 2. この転写時にソースが出力先の範囲を超える場合、その領域は自動的にクリッピングされ、省略される。 
 3. ソースと出力先が完全に重ならない場合、描画処理は行われず内部的に早期リターンされる。 
62: 名前は開発中のものです。 [sage] 2025/09/07(日) 00:45:01.10 ID:qucJSDY/(1/8) AAS
 野球マンは、Unity使いなんだし朝から同じ話題に辟易してChatGptで調べただけだから、別にPygameがNinateやLumen使えてもどうでもいいだろう。 
63: 名前は開発中のものです。 [] 2025/09/07(日) 00:54:55.61 ID:qucJSDY/(2/8) AAS
 GoogleGeminiで聞いてみたよ 
  
 カリングとblit()の最適化 
 「カリング」という用語は、一般的にゲーム開発において、描画パイプライン全体で不要なオブジェクトを描画リストから除外する手法を指します。これには、フラスタムカリング(カメラの視錐台の外にあるオブジェクトを無視する)、オクルージョンカリング(他のオブジェクトに隠れて見えないオブジェクトを無視する)などが含まれます。 
 PygameのSurface.blit()は、このような広義のカリング機能自体は提供していません。つまり、開発者が自分でオブジェクトの座標を確認し、画面外にある場合は描画関数を呼ばないように制御する必要があります。 
 しかし、以前の回答で述べた「早期リターン」の機能は、blit()関数内部で行われる描画処理の最適化です。これは、特定の描画命令(この場合はblit())の引数(ソースとデスティネーション)が描画対象として無効である場合に、GPUやCPUへの負荷をかけずに処理を終了させるためのものです。 
 まとめ 
 Pygame自体が、シーン全体の不要なオブジェクトを自動的に描画リストから除外するような、高度なカリング機能は提供していない 
 blit()の内部最適化:blit()関数は、引数で渡されたソースとデスティネーションの矩形が重ならない場合、内部的にピクセル転送処理をスキップするという最適化を行っています。 
 これは、Pygameの描画関数の効率を高めるための実装レベルの工夫であり、広義の「カリング」機能とは異なります。 
64: 名前は開発中のものです。 [sage] 2025/09/07(日) 01:09:06.63 ID:qucJSDY/(3/8) AAS
 すでに5の質問とはかけ離れてるし、平行線で続けて長くなるんなら別スレ作れば? 
65: 名前は開発中のものです。 [sage] 2025/09/07(日) 01:30:11.02 ID:qucJSDY/(4/8) AAS
 最後にABCをGeminiに質問してみた 
 100X100 32Pix 
 A. 巨大なマップ全体を描画してスクロールする:3200x3200ピクセルの巨大なSurface(マップ全体)をメモリに作成し、そのSurfaceの描画位置をずらすことでスクロールを実現します。 
 描画負荷: 非常に軽い。画面に表示されるのは、その巨大なSurfaceの一部を切り取って描画するだけなので、CPUやGPUへの負荷は最小限です。 
 メモリ負荷: 非常に重い。3200x3200ピクセルの画像は、約40MBのメモリを消費します(RGBA形式の場合)。現代のPCでは余裕の範囲ですが、ゲーム全体のメモリ使用量によっては問題になる可能性があります。 
 今回のようにマップサイズが固定されている場合、最もシンプルでパフォーマンスが安定します。実装も非常に簡単なので、手軽にゲームを作りたい場合に最適です。 
  
 B. 毎フレーム「必要な範囲だけ」タイルを描画する。画面に見えている11x11タイル(121枚)を、マップデータから読み取って毎フレーム個別に描画します。 
 描画負荷: 毎フレーム121回のSurface.blit()呼び出しが発生します。メモリ負荷: 最小限。各タイルの画像データのみをメモリに保持すれば済みます。 
 今回の規模(100x100タイル)であれば、A方式と比較して目に見えるパフォーマンスの差は出ないでしょう。しかし、blit()の呼び出し回数が多いため、わずかにCPUへの負荷が高くなる可能性があります。 
  
 C. ハイブリッド 
 B方式とほぼ同じです。マップをデータとして保持し、画面に表示される部分だけを描画します。マップデータを配列として持つことで、ゲームロジックとの連携(例:タイルごとのイベント)が非常に簡単になります。 
 今回の規模であればB方式と性能差はありませんが、プロシージャルダンジョンなどゲーム開発のベストプラクティスとして最も推奨される方法です。 
66: 名前は開発中のものです。 [sage] 2025/09/07(日) 01:31:40.81 ID:qucJSDY/(5/8) AAS
 Geminiの総括 
 最終的な結論と最適な選択肢 
 100x100タイルの規模であれば、A方式とC方式はどちらも十分に高性能です。 
 手軽さ、シンプルさを最優先するなら「A方式」 
 巨大なSurfaceを最初に1回だけ作成すれば、あとはblit()のオフセットを調整するだけで済みます。コードが非常にシンプルになります。 
 拡張性、将来的な複雑なゲームシステムを考えるなら「C方式」 
 マップデータが配列として存在するため、ゲームの規模が大きくなったり、タイルごとに異なるプロパティ(通行可能か、イベントが発生するかなど)を持たせる場合に柔軟に対応できます。 
 どちらの方式も今回の条件では問題なく動作するため、あなたのゲームの要件や実装の好みで選ぶと良いでしょう。 
67: 名前は開発中のものです。 [sage] 2025/09/07(日) 02:09:34.75 ID:w+4ozsCS(1) AAS
 Geminiに聞いたことをコピペして意味なんか無いから 
 お前は荒らし 
68: 名前は開発中のものです。 [sage] 2025/09/07(日) 02:19:50.05 ID:c3Q3zl9k(1/2) AAS
 のたうちまわった末に出てきた歪なうんこ、みたいな回答 
69: 名前は開発中のものです。 [sage] 2025/09/07(日) 04:34:32.88 ID:cdtbdgBv(1) AAS
 AIの回答は質問者のレベル以上にはならないってのがはっきり分かるなぁ 
70: 名前は開発中のものです。 [sage] 2025/09/07(日) 06:56:06.71 ID:qucJSDY/(6/8) AAS
 一気に60ぐらいスレ進んだな。忍者みたいなのがいるのか 
71: 名前は開発中のものです。 [] 2025/09/07(日) 10:53:25.58 ID:5TMUfK9O(1) AAS
 >>61 
 問いになってないと思うのだが 
72: 名前は開発中のものです。 [sage] 2025/09/07(日) 11:34:25.09 ID:4AU0/eMl(1) AAS
 この時代に2Dスクロールが問題になるとはなぁ 
73(1): 名前は開発中のものです。 [sage] 2025/09/07(日) 12:01:46.10 ID:ahzATgAC(1) AAS
 2DLODによって 
 例えば32pixel*32pixelの画像が 
 画面の端に行くにしたがって 
 16*16, 8*8, 4*4,2*2の画像に置き換わる 
 これによってテクスチャ使用料は大幅に下がり 
 VRAMをより自由に使うことが可能になる 
 ドローコールは80%以上下がる計算だ 
 人間は画面のプレイヤーを表示する中心点の周りしか見ないため 
 このような技術を使っても実際の見た目はプレイ感ほぼ変わらずできる 
74(3): 名前は開発中のものです。 [sage] 2025/09/07(日) 12:36:54.18 ID:c3Q3zl9k(2/2) AAS
 # 低評価のレビュー 
  
 画面の端に向かって何故かボヤけが強くなっていくというバグがあって製作者に問い合わせしましたが、泥コーラがどうのこうのと意味不明な説明をされ、さらに見た目はほぼ変わらないので対応できないと返信がありました。 
 そのため即返金要求しました。 
 この製作者からは二度と購入しません。 
こうなるだけだぞ、余計な最適化はすんな、もう一度言う、無駄な最適化はすんな 
75: 名前は開発中のものです。 [sage] 2025/09/07(日) 12:48:36.25 ID:W/Q1K9c6(1) AAS
 中心窩レンダリングかぁ? 
76(1): 名前は開発中のものです。 [] 2025/09/07(日) 12:57:46.12 ID:8iqlIUfk(1) AAS
 画像リンク
 
 
 pythonでゲームを作ったよ 
 でもデプロイ先がねーよ(公開するほどのクオリティでもないけど) 
 やっぱりフリゲはUnityRoomに落ち着くな 
77: 名前は開発中のものです。 [sage] 2025/09/07(日) 14:23:23.48 ID:emCB4qtY(1) AAS
 >>74 
 急に泥コーラとか言われてもこっちだって分からんよ 
 単純に実装がバグってるけど開発者がアホだから直せないだけでしょ 
 それ最適化と何の関係があるの? 
78: 名前は開発中のものです。 [sage] 2025/09/07(日) 14:41:29.07 ID:Z+uha7Ru(1) AAS
 君はROMってなさい 
79: 名前は開発中のものです。 [sage] 2025/09/07(日) 15:32:40.61 ID:EFCEmLLF(1/2) AAS
 >>74は悪ノリレスであって 
 どう見たってこれがマジレスなわけないだろ 
 気付かないのはゲ製エアプだけだよ 
 これに対してそんなことしたらこうなるだけだ 
 余計な最適化はすんなもう一回言うぞとかクサすぎるでしょ 
80: 名前は開発中のものです。 [sage] 2025/09/07(日) 15:36:06.71 ID:EFCEmLLF(2/2) AAS
 >>74 
 >>73は悪ノリレスであって 
 の間違い 
  
 こんな意味不明な実装するやつ世の中に一人もいないよ 
81: 名前は開発中のものです。 [] 2025/09/07(日) 16:17:43.49 ID:qucJSDY/(7/8) AAS
 3Dカメラで写実的に見せるためにDirtLense(レンズ汚れ)、VignetteやChroma AberrationとかDOFあたりをPostEffectsしたんでしょ 
 ポストエフェクトマテリアルは解像度で調整してないと4Kモニタでアウトラインが細くなったり見た目変わるから注意な 
82: 名前は開発中のものです。 [sage] 2025/09/07(日) 16:22:13.46 ID:qucJSDY/(8/8) AAS
 >>76 完成おめでとう。itchIoあたりにアップロードしてくれれば遊ぶよ 
83: 名前は開発中のものです。 [sage] 2025/09/08(月) 03:58:28.50 ID:2dY4F7bt(1) AAS
 市販のフィルターも画面サイズで見た目変わるのあるから結局自分で書くようになるね。 
84: 名前は開発中のものです。 [sage] 2025/09/09(火) 21:22:29.28 ID:DuHc0YCK(1) AAS
 『レポ with 館山4人衆2』 
 ▽雑談→Steam 
 協力型ホラーゲーム「R.E.P.O.」 
 ×UNKちゃん×布団ちゃん(活動休止中) 
 ×天狗ちゃん×よっちゃん 
  
 外部リンク[tv]:iplogger.info 
85(1): 名前は開発中のものです。 [] 2025/09/10(水) 00:48:07.52 ID:1yIDrEYz(1/2) AAS
 ミラー編集機能作れた 
 画像リンク
 
 
 画像リンク
 
 
 画像リンク
 
 
上下前次1-新書関写板覧索設栞歴
あと 917 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s