ゲームプログラムなら俺に聞け30
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/01/05(日) 23:59:32.56ゲームプログラムなら俺に聞け28
http://toro.2ch.net/test/read.cgi/tech/1366526476/
次スレは>>950が立てること。
0153デフォルトの名無しさん
2014/01/28(火) 16:45:53.35何で多重スレッドにするかよく分からないんだけど、
マップとかキャラクターは毎フレーム描画してないの?
毎フレーム描画してるなら単一のスレッドで
マップ描画
キャラクター描画
if ( メッセージを描画しなきゃいけない ){ メッセージボックス描画
メッセージ描画
}
とかじゃだめなのかね。
0154デフォルトの名無しさん
2014/01/28(火) 19:39:06.70マルチスレッドの意味で使ってるよね?
多スレッドなら分かるけど、多重はないわ
0155デフォルトの名無しさん
2014/01/28(火) 20:44:41.900156デフォルトの名無しさん
2014/01/28(火) 21:35:37.93>>153 キャラの描画はしていますが、毎フレームかどうかはすみませんが分かりません。表示はそんな感じで書いています。
>>154 そうです。”マルチスレッド”。
0157デフォルトの名無しさん
2014/01/29(水) 01:16:08.82私の場合は学生のときにレポートなどワープロ打ちする必要がありそうだったことからブラインドタッチの練習の本を買ってきて練習をしてある程度できるようになりました。
そのように個人的に練習する以外は我流でやっている人も多いと思います。
特定の指ばかり使うとどうしても効率が悪いですが一度癖が付いてしまうとなかなか直すのは難しいのではないでしょうか。
最近の学校教育ではもしかしてパソコンの授業もあるようなのでタッチタイピングもある程度学習して訓練の機会もあるのかもしれません。
お年寄りがパソコンが苦手といのはタッチタイピングのハードルもあるのではと思います。
http://toro.2ch.net/test/read.cgi/hp/1382021349/
http://toro.2ch.net/test/read.cgi/hp/1352858999/
0158デフォルトの名無しさん
2014/01/29(水) 01:23:04.060159デフォルトの名無しさん
2014/01/29(水) 03:57:45.47処理の順番としては、
バックバッファのクリア
マップの描画
キャラクターの描画
メッセージの描画←別スレ
前面にコピー
でしょ?
当然、「メッセージの描画」の部分で同期とらないと正常に表示されないわけだ。
「メッセージの描画」の直前でメインスレッド止めて、別スレ使ってメッセージを描画して、
別スレを止めて、それからまたメインスレッドを動かす、って流れになるだろ。
シングルスレッドを分割しただけだからマルチスレッドの恩恵ないし面倒なだけだろ。
誰だよ別スレッドにしろって言った奴w
オブジェクトにしろではなくスレッドにしろって言われたのか?
0160デフォルトの名無しさん
2014/01/29(水) 07:16:57.42ロード中に操作を受け付けないクソプログラムになる。
また、計算量の多い処理はスレッドを分けて負荷を分散しないと、
マルチコアを活用できない旧世代のプログラムになる。
つまりデータ量が少なく計算量が少ない小規模なプログラムしか作らない程度の人間だと、
必要性に気がつかないというだけの話。
0161デフォルトの名無しさん
2014/01/29(水) 07:40:52.570162デフォルトの名無しさん
2014/01/29(水) 07:52:58.42展開して利用可能にする計算もあるんだよ。
これだからまともにプログラムを作ったことが無い奴は。
0163デフォルトの名無しさん
2014/01/29(水) 08:01:38.66読み込みに比べればまったく気にならない場面が多い。
初心者にやらせようとするセンスこそ初心者。
0164デフォルトの名無しさん
2014/01/29(水) 08:04:26.53>>160とかマトモにできるように思えないけどな。
0165デフォルトの名無しさん
2014/01/29(水) 08:05:26.41まあ頑張れや
0166デフォルトの名無しさん
2014/01/29(水) 08:50:18.930167デフォルトの名無しさん
2014/01/29(水) 09:05:19.80もう一度、>>146の文章を読み直したほうがいいよ
とんでもないあさっての回答していることに気づくから。
0168デフォルトの名無しさん
2014/01/29(水) 09:29:10.86書かなくてもいいところにスレッド使って原因不明のバグ誘発するってよくある
0169デフォルトの名無しさん
2014/01/29(水) 20:06:52.82そうです。そんな感じのを実装しようといます。
オブジェクトでは無かったと思います。
マルチスレッドにしたほうが良い理由は多分自分のコードのせい?だと思うのですが。
0170デフォルトの名無しさん
2014/01/29(水) 20:32:41.26マルチスレッドにした方がいいように思えるなら設計がおかしい。
最初から見直すべきだと思う。
0171デフォルトの名無しさん
2014/01/29(水) 20:47:33.29原因の分かるバグになら遭遇したことはあるが、
原因不明のバグなど起こったことは無い。
原因不明とか言うのは単純に無能なだけだよ。
0172デフォルトの名無しさん
2014/01/29(水) 20:53:26.670173デフォルトの名無しさん
2014/01/29(水) 20:57:14.40他人を無能呼ばわりしてもねw
0174デフォルトの名無しさん
2014/01/29(水) 21:17:32.94原因不明だよ、原因不明。
笑うところなのか?
0175デフォルトの名無しさん
2014/01/29(水) 21:40:40.110176デフォルトの名無しさん
2014/01/29(水) 22:07:43.40期間内に追いきれなくて原因不明のままになったことがあるな
まぁ軽微なバグだから真剣に調べてないってのもあるけど
0177デフォルトの名無しさん
2014/01/29(水) 22:23:51.15一般開発者には、ほとんど発見不能なバグって稀にあるんだがな。
stackoverflowとかでいまだ未解決の問題あるし
0178デフォルトの名無しさん
2014/01/29(水) 22:30:21.27原因が分からなくても、やろうとしたことと症状ぐらいは言えるよね。
0179デフォルトの名無しさん
2014/01/29(水) 22:32:43.90OSの不具合と分かっている時点で、原因不明では無い。
0180デフォルトの名無しさん
2014/01/29(水) 22:35:08.74不具合と分かるまでは、ずっと原因不明だろ
何をいってるんだよ
0181デフォルトの名無しさん
2014/01/29(水) 22:38:19.06そういう意味では原因究明に手間がかかるってものだ
0182デフォルトの名無しさん
2014/01/29(水) 22:51:48.01設計ですか。
クラス図も作成せず、java勉強の為にしているので設計などはしてないのでやってみます。
それでは、このドラクエなどの買い物表示はマルチスレッドではなく一つのスレッドで処理可能な事なのでしょうか?
0183デフォルトの名無しさん
2014/01/29(水) 22:56:55.61流れはしらないが。
マルチスレッドはバグ取りが困難になるからとりあえず作ってからパフォーマンスで不利な点だけ改良したらいい。
0184デフォルトの名無しさん
2014/01/29(水) 22:59:24.97デバッグがわけわかんなくなっていく
0185デフォルトの名無しさん
2014/01/29(水) 23:02:00.14それ以外はシングルよりバグをはらむ可能性が高い上、メンテが大変なので避けるべき。
ドラクエのメッセージウインドウくらいでスレッド起こすなんて聞いたことがない
メッセージを表示しながら裏側で頻繁にネット接続でもするなら話は別。
0186デフォルトの名無しさん
2014/01/29(水) 23:05:57.58十分可能だし、むしろシングルスレッドでやったほうがいい。
0187デフォルトの名無しさん
2014/01/29(水) 23:06:43.35不具合と分かったのなら原因不明では無いだろう。
お前こそ何を言っているんだ?
0188デフォルトの名無しさん
2014/01/29(水) 23:08:19.82逃げ回らずに答えろよ。
もう一度言う、逃げるなよ。
絶対に逃げるなよ。
0189デフォルトの名無しさん
2014/01/29(水) 23:12:45.29これ読んで完全に理解できるようならマルチスレッドにするがいい
ざっくりしか分からないようならシングルスレッドにしたほうがいい
ttp://game.watch.impress.co.jp/docs/20070131/3dlp.htm
0190デフォルトの名無しさん
2014/01/29(水) 23:13:28.43それによって操作性が低下したり、効率が落ちたりしても、
不具合を出すよりはマシだ。
自分の力量をよく分かっている適切な判断だ。
0191デフォルトの名無しさん
2014/01/29(水) 23:16:27.45http://game.watch.impress.co.jp/docs/20080911/epic.htm
しかし、現状でさえマルチスレッドプログラミングは開発の困難さが指摘されている分野である。
同時並列的に動作するプログラムがモデルデータやゲーム内状態などの共有情報にアクセスしようとするとき、
そこには必ずデータ競合によるバグの発生や、デッドロックによるプログラムの停止というリスクがつきものである。
しかも、それを効率的にデバッグすることは非常に難しく、開発規模の拡大や期間の長大化を招いているのだ。
Sweeney氏は、これは現在主流の開発言語であるC++の手続き型言語としての特性に由来すると指摘する。
マルチスレッドにおける問題を避けるためのテクニックは各種あるが、Sweeney氏に言わせるとそれは「シングルスレッドのプログラムをアセンブラで書くようなもの」であり、生産性が悪いのである。
Sweeney氏は、この問題を解決するためには、ゲーム開発言語として純粋関数型の言語が必要になるだろうと言う。
純粋関数型言語とは、プログラム中の関数が、戻り値のみによって作用する構造の処理系だ。
この種の処理系では、C++のような共有メモリのアクセスや、I/O操作は基本的に行なえない。
その引き替えとして、各関数のアトミック性が構造的に保証されており、安全に並列実行できるのだ。
しかも、コンパイラが対応さえすれば、関数を自動的に多数のコアに分散処理させることができるというスケーラブルな実行バイナリを作り出せる。
Sweeney氏は純粋関数型言語のもつ並列処理安全性に着目しており、将来的にゲームプログラミングはそういった処理系に移行していくべきだとした。
Sweeney氏はそのひな形として言語“Haskel”を挙げているが、ゲーム開発のメインストリームたり得る言語はまだ登場しておらず、将来に期待しているという。
0192デフォルトの名無しさん
2014/01/29(水) 23:17:58.83ピンと来ない時点で話にならないだろ。
たとえばひらしょー本でもマルチスレッドは人智を超えている旨の
記載があったはずだがひらしょーも無能ってことでいいのかな?
0193デフォルトの名無しさん
2014/01/29(水) 23:20:06.05想定外が起こる。直したと思っても別の想定外が起こるとかなり得る。
まずはシングルスレッドで。
0194デフォルトの名無しさん
2014/01/29(水) 23:24:00.05おまえは相当頭が固いな
0195デフォルトの名無しさん
2014/01/29(水) 23:27:51.75お前は俺にはできるできない奴は無能としか言ってないな。
0196デフォルトの名無しさん
2014/01/29(水) 23:31:30.06無能だと挑発されて使えもしないものを使って失敗するのは救いようのない無能。
ゲームも作ったことのない人間がいきなりマルチスレッドを使ってゲームを作るってのは〇〇したことのない人間がいきなり□□するようなもの。
まさに自殺行為。
良い例えが思い浮かばなかったからまかせた↓
0197デフォルトの名無しさん
2014/01/29(水) 23:32:43.02いまだない。
シングルでもマルチでも同一コードで効率的に動く。
0198デフォルトの名無しさん
2014/01/29(水) 23:37:42.250199デフォルトの名無しさん
2014/01/29(水) 23:43:03.380200デフォルトの名無しさん
2014/01/29(水) 23:46:27.90原因不明じゃないが、排他制御が抜けてる箇所があってたまーにメモリ破壊を起こしてたのは
特定に時間がかかったな
0201デフォルトの名無しさん
2014/01/29(水) 23:52:34.62ソフトウェア デザイン エンジニア、Bruce Dawson 著
ロックレス プログラミングとは、刻々と変化するデータを、ロックの取得や解放といったコストを伴うことなく、複数のスレッド間で安全に共有するための方法です。
ロックレス プログラミングには、複雑かつ難解であり、ときには思ったほどの効果が得られない場合もあります。
ロックレス プログラミングは、Xbox 360 では特に複雑です。
ロックレス プログラミングは、マルチ スレッド プログラミングにおいて有効なテクニックですが、安易に使用するべきではありません。
ロックレス プログラミングを使用する前に、必ずさまざまな問題点を理解した上で、期待する効果を得られるかどうかについて慎重に検討を行ってください。
http://msdn.microsoft.com/ja-jp/library/bb310595(v=vs.85).aspx
開発メモ: アトミック演算の性能
GCC拡張のロックフリーなアトミック演算機能と、自分でロックしてアトミックに演算するのとではどれくらい違うかを実験してみた。
まとめ
ロックフリーなアトミック演算が可能であれば使うべきだ。Mutexよりは3倍くらい効率的だし、SpinLockのように並列度が上がると遅くなるようなことはない。
ちなみになんでこれを急に調べたかというと、tmaesaka氏が彼のBlitzDBの実装をDrizzleコミュニティの人に見せたところアトミック演算を使えと言われたというのを横から見ていて、
KCでも使えそうだなと思ったからだ。こんな他愛もないやりとりからもDrizzleコミュニティの並列性への情熱が伝わってくるわけで、Drizzleへの期待がさらに膨らむ今日この頃である。
http://fallabs.com/blog-ja/promenade.cgi?id=68
0202デフォルトの名無しさん
2014/01/30(木) 03:22:58.290203デフォルトの名無しさん
2014/01/30(木) 07:11:22.73何をやろうとしたかと、症状すら言えないって、
もうプログラムをやるってレベルじゃ無い。
結局、自分で具体例を出せずに逃げ回ってるよね。
あまりにも予想通り。
まあ無能だから逃げるしか無いよね。
本当に操り人形のように、想定通りの行動をとる。
0204デフォルトの名無しさん
2014/01/30(木) 07:19:32.57俺?気が変わったら教える
0205デフォルトの名無しさん
2014/01/30(木) 08:00:20.330206デフォルトの名無しさん
2014/01/30(木) 08:50:28.010207デフォルトの名無しさん
2014/01/30(木) 08:55:20.06原因不明のバグの原因教えてって頭悪いの?
デットロックやメモリコヒーレンスでおこる不具合もわからないないの?
0208デフォルトの名無しさん
2014/01/30(木) 09:55:24.56そういうことが聞きたいんだろうけど
具体的に何を作ってたか言う人はいないだろうし、まぁレッテル貼って誤魔化したいだけなんだろうけど
0209デフォルトの名無しさん
2014/01/30(木) 10:14:11.84どうかだけでも答えればいいんじゃない?
もしそうなら変数のスコープも知りたいけど
0210デフォルトの名無しさん
2014/01/30(木) 12:10:18.530211デフォルトの名無しさん
2014/01/30(木) 12:14:39.720212デフォルトの名無しさん
2014/01/30(木) 12:34:49.920213デフォルトの名無しさん
2014/01/30(木) 12:52:48.140214デフォルトの名無しさん
2014/01/30(木) 18:28:19.160215デフォルトの名無しさん
2014/01/30(木) 19:57:54.40だったら対症療法で、「バグの原因になる行動」だけを突き止めてそれを避けさせる方がトータルコストは安かったりする。
そりゃ時間が無限にあって、完璧なプログラムを書けるのであればバグの原因は特定できるし潰せるけど。
0216デフォルトの名無しさん
2014/01/30(木) 20:37:48.65将棋ソフトじゃあるまいし
0217デフォルトの名無しさん
2014/01/30(木) 20:56:15.59・極限までパフォーマンスを引き出すために小さなジョブを大量に実行する
これ以外はシングルスレッドで動くように書くべき。
0218デフォルトの名無しさん
2014/01/30(木) 21:51:12.59スレッドプログラミングの代表的なものじゃね?
0219デフォルトの名無しさん
2014/01/30(木) 21:59:38.40その対象を非同期化するんだよ。
0220デフォルトの名無しさん
2014/01/30(木) 22:28:39.96メインで動いているほうを非同期にしろってこと?
0221デフォルトの名無しさん
2014/01/30(木) 22:31:21.03スレッドである必要ないだろ・・・
0222デフォルトの名無しさん
2014/01/30(木) 22:37:25.91でもPCでもゲーム専用機でもCPUコアは増える一方だから、そこそこの規模のゲームは
イヤでも使わなきゃいけない状況になってきてる
まぁ趣味ならそんな規模にはそうそうならないと思うけど
0223デフォルトの名無しさん
2014/01/30(木) 22:39:36.84いや、もちろんそういう意味でいったのだが・・・
0224デフォルトの名無しさん
2014/01/30(木) 22:40:42.47メニューなんかでバグ出してたらクビだよ。
スクリプトでいいくらい。
0225デフォルトの名無しさん
2014/01/30(木) 22:55:37.24わかりました。もう一回シングルスレッドで頑張ってみようと思います。
けど、「もっとこういう風にしたらいいぞ」ってな意見が出来れば欲しいのですが、ソースコードのアドレス貼っていいでしょうか?
0226デフォルトの名無しさん
2014/01/30(木) 23:13:14.350227デフォルトの名無しさん
2014/01/31(金) 00:52:54.81pastebin.com/u/nekoNeko
で先頭にハイパーテキストのプロトコルなどお願いします。
0228デフォルトの名無しさん
2014/01/31(金) 05:41:29.04シングルスレッド派
マルチスレッド派
固定fps派
非固定fps派
タスクシステム派
営利企業の現場を前提に考える派
趣味を前提に考える派
0229デフォルトの名無しさん
2014/01/31(金) 07:17:52.09ロースペック派
0230デフォルトの名無しさん
2014/01/31(金) 07:24:06.98スルー派
0231デフォルトの名無しさん
2014/01/31(金) 07:24:16.19ローポリ派
リアルポリゴン派
イラスト派
こうなると絵師さんを巻き込んだ論戦に……
0232デフォルトの名無しさん
2014/01/31(金) 07:25:39.54三枚歯
電動派
0233デフォルトの名無しさん
2014/01/31(金) 07:26:32.08純情派
0234デフォルトの名無しさん
2014/01/31(金) 07:37:56.330235デフォルトの名無しさん
2014/01/31(金) 08:00:47.09何故そこにアニメシェーダ派が無い?
0236デフォルトの名無しさん
2014/01/31(金) 08:19:21.480237デフォルトの名無しさん
2014/01/31(金) 08:55:36.380238デフォルトの名無しさん
2014/01/31(金) 15:47:03.540239デフォルトの名無しさん
2014/01/31(金) 16:11:46.43全部解決してきた
ある日突然HDDが死ぬとかは原因不明だけどな
0240デフォルトの名無しさん
2014/01/31(金) 16:29:29.610241デフォルトの名無しさん
2014/01/31(金) 18:31:40.90物理フォーマットをする以外に復帰出来なくなった
0242デフォルトの名無しさん
2014/01/31(金) 18:35:26.92デバイスドライバとか「原因不明」のままになってるのあるよね
0243デフォルトの名無しさん
2014/01/31(金) 18:39:21.230244デフォルトの名無しさん
2014/01/31(金) 18:40:30.80まあ、たしかに客の言いがかりもあるのは事実だな
0245デフォルトの名無しさん
2014/01/31(金) 21:09:14.31どうせそいつロクなコード書いてないし技術もない
原因調べられるかどうかは、どこまでトレースできるかにかかってる
まぁC++とかで原因不明なバグ起こったら、俺もやんないけどそういうのと縁ないし
0246デフォルトの名無しさん
2014/01/31(金) 21:10:44.940247デフォルトの名無しさん
2014/01/31(金) 21:11:43.840248デフォルトの名無しさん
2014/01/31(金) 21:19:59.79どちらにしろ原因不明っていう妥協は精神衛生上あり得ない
0249デフォルトの名無しさん
2014/01/31(金) 21:27:27.04経験の浅い責任の軽い立場に起因している。
0250デフォルトの名無しさん
2014/01/31(金) 21:39:25.60言い訳があまりに幼稚ですな
0251デフォルトの名無しさん
2014/01/31(金) 21:40:52.450252デフォルトの名無しさん
2014/01/31(金) 21:41:04.23■ このスレッドは過去ログ倉庫に格納されています