[過去ログ] ゲーム制作 雑談スレ【part39】 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
47: 名前は開発中のものです。 [sage] 2025/09/06(土) 15:03:20.49 ID:i+R/pY0x(1) AAS
 せっかくの週末にレベルの低い話をするなよ 
 こんなのは「好きに作れ」が答えだろ 
48: 名前は開発中のものです。 [sage] 2025/09/06(土) 15:19:07.44 ID:nuZTTbZ9(8/9) AAS
 そのとおりだよ。質問に対して「俺ならこうする」だけでいい。 
 質問者はお礼を言ってその中でいいと思ったやり方で作ればいい 
49(1): 名前は開発中のものです。 [] 2025/09/06(土) 15:36:31.98 ID:w/QEgYfo(1/4) AAS
 画像リンク
 
 
 画像リンク
 
 
 カメラ範囲だけの処理にとどめてくれる機能はpygameにはないらしい 
 unityにはある 
 pygameで作るなら昔ながらのc言語のゲームの作り方で作る必要がある 
 2000年代によくあったゲーム制作本にはそのやり方結構載ってた 
50(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 16:31:10.68 ID:gwr+bGfK(7/10) AAS
 >>49 
 pygameは知らんけど、どんな低レベル描画エンジン使ってるにしろ、低レベル描画エンジンがカリングしてくれるだろ 
51(1): 名前は開発中のものです。 [] 2025/09/06(土) 16:36:35.05 ID:w/QEgYfo(2/4) AAS
 >>50 
 ChatGPTによればpygameはないんだって 
52: 名前は開発中のものです。 [] 2025/09/06(土) 16:54:34.85 ID:nuZTTbZ9(9/9) AAS
 >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
 >>51 
 Pythonスクリプト層内での低レベルAPIへの描画コールは間引かれない(APIコールしても低レベルAPI内では間引かれるかも)、て意味じゃないの?知らんけど 
55(2): 名前は開発中のものです。 [] 2025/09/06(土) 19:34:47.53 ID:w/QEgYfo(3/4) AAS
 >>54 
 画像リンク
 
 
 だそうです 
 ChatGPTの答えはノー 
56(1): 名前は開発中のものです。 [sage] 2025/09/06(土) 19:43:37.64 ID:7Km6Wgc5(2/2) AAS
 そんなにChatGPT が得意なら、pygame のタイルマップのシステムをサクッと作ったら? 
 たぶん、どこかからコピペしてくるよ 
57: 名前は開発中のものです。 [] 2025/09/06(土) 19:50:02.52 ID:w/QEgYfo(4/4) AAS
 >>56 
 俺は野球ボーイで上の者ではない 
 上の者は上の者で自力で頑張ってください 
58: 名前は開発中のものです。 [sage] 2025/09/06(土) 20:30:43.00 ID:gwr+bGfK(10/10) AAS
 >>55 
 平行線だな。低レベルの描画エンジンが視野外カリング・テストを行わないのは考えられない 
 だから俺は、そのLLMの回答はPythonスクリプトレイヤの話だ、と言っている 
59: 名前は開発中のものです。 [] 2025/09/06(土) 20:58:21.23 ID:/kpwELhX(1) AAS
 今週もよく進んだ 
 着実にBlenderに近づいてる 
 画像リンク
 
 
 画像リンク
 
 
 画像リンク
 
 
 画像リンク
 
 
60: 名前は開発中のものです。 [sage] 2025/09/06(土) 21:17:35.71 ID:EXmAikSr(3/3) AAS
 これからは質問されたらChatGPTに投げたほうがいいかもな 
 どうせ荒らしだろうし 
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 
 問いになってないと思うのだが 
上下前次1-新書関写板覧索設栞歴
あと 931 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.032s