C/C++ゲーム製作総合スレッド Part5at GAMEDEV
C/C++ゲーム製作総合スレッド Part5 - 暇つぶし2ch22:名前は開発中のものです。
14/01/19 10:56:21.22 zArRV3lb.net
>>21
生意気言うんじゃねぇって言いたくなる気持ち分かるわ

23:名前は開発中のものです。
14/01/19 11:11:40.48 dxh/zY+y.net
c++は文字列とかSTLにひとくせあったりするからなー

std::string str;
str << "i=" << i << std::endl;

あれ、できないじゃーん!?
ググル → stringstream? めんどくせーな

// GCなしだと不便な例
std::vector<Hoge*> list;
Hoge* add(){
Hoge* hoge = new Hoge();
list += hoge;
return hoge;
}

Javaは不細工だけど使いやすいよ

24:名前は開発中のものです。
14/01/19 11:26:08.74 NnB84tXJ.net
>>22
マジか・・・
今度から何も言わないようにしよう

25:名前は開発中のものです。
14/01/19 11:54:37.95 zArRV3lb.net
>>24
いや、もっとおっさんになってから
ガキだったなHAHAHAって笑えばいい

26:名前は開発中のものです。
14/01/19 12:09:14.19 TJLqrM7y.net
なにそれブラック企業?w上司もプログラマーなら感情論抜きで論破しろよ

27:名前は開発中のものです。
14/01/19 12:26:00.28 r/kDygNK.net
プログラ”マ”板で話すことを、何でここで引っ張ってるんだよ。
URLリンク(kohada.2ch.net)

28:名前は開発中のものです。
14/01/19 14:14:56.82 Ln30iNfr.net
>>23
MFCのCStringは扱いやすいよ
とりあえず自前で実装したが

29:名前は開発中のものです。
14/01/19 20:23:57.46 vj8v8wNW.net
>>23
auto_ptr使えばよくね?

30:名前は開発中のものです。
14/01/19 20:49:07.44 dxh/zY+y.net
小さいことが積み重なって不便という意味でな

31:名前は開発中のものです。
14/01/21 07:47:41.61 6mpa2LLJ.net
何でもかんでも自力で作るかライブラリ頼みになるからな
そーゆーのが嫌いな人には向かないのかもな

32:名前は開発中のものです。
14/01/21 10:53:50.44 k20gbOyK.net
ゲーム用途だと結局何でもスクラッチになっていくんですけどね…

33:名前は開発中のものです。
14/01/21 20:38:32.81 ZBJojU/1.net
オレオレライブラリを経てオレオレゲームエンジンを作り
そして個人利用フリーのゲームエンジンに触れて無意味だったと知る

34:名前は開発中のものです。
14/01/21 21:36:58.77 /+yIHRaD.net
>個人利用フリーのゲームエンジン

ぜひ教えて欲しい。

35:名前は開発中のものです。
14/01/21 21:44:06.65 HN69Ellt.net
POCOとか使ってるけど、あちこちのライブラリで
オレオレXML(DOM)、オレオレAutoPtr(スマートポインタ)、オレオレException
みたいなユーティリティクラスが満載なのはひどいよ

36:名前は開発中のものです。
14/01/21 21:51:16.31 wLwEpkEc.net
オレの場合は俺オレデータ構造を使ってるが?
ツリー状のメモリー情報を簡単に記録でき、しかもフラグメンテーションを
起こさないスグレモノ
だったんだが、ちょいと重すぎた

37:名前は開発中のものです。
14/01/21 22:20:38.42 /+yIHRaD.net
私はDXライブラリ使って今まで数本ゲームを作ってきたけど、「クラス? ポインタ? なにそれ」な組み方だった。
それが最近になってようやく「少しはわかったかな?」って感じになってきて、
俺俺ライブラリ……と呼べるほど立派なものじゃないけど、ゲームの土台を俺俺で作ってるところだから、
こういう行為を無意味とか言われるとちょっと辛いw

38:名前は開発中のものです。
14/01/21 22:41:33.97 wLwEpkEc.net
無意味とは思えないけどな。
オレの場合、マルチスレッドのしっかりした使い方はマスター出来たし
データ構造も一般人には何を意味してるか分からないぐらいに複雑なモノを
扱えるようになったし、スクリプト言語も好きなように拡張出来るようになった。

ただ、肝心のゲームはまだ納得のいくものが出来てないわけだが・・・

39:名前は開発中のものです。
14/01/22 00:21:13.24 qXFTHavY.net
マルチスレッドってどうやってスレッドセーフ?になるの?
具体的に教えて

40:名前は開発中のものです。
14/01/22 00:45:51.85 FwnXEaYs.net
>>38
お勉強マシーンと揶揄されるパターンに嵌ってるな
俺も笑えない口だが、まあが


41:んばれ >>39 ロックしろ。使うのはクリティカルセクションだけで十分



42:名前は開発中のものです。
14/01/22 00:52:28.97 1GoepMJH.net
>>34
UnityとかUREは個人で使う範囲なら無料ライセンスがある
まあロゴ出ちゃったりするけど
Unityは少しくらい儲けてもおkだったはず

43:名前は開発中のものです。
14/01/22 05:31:21.08 MUoEPc44.net
志の低いクズはHSPでも使ってりゃ幸せになれるのに

44:名前は開発中のものです。
14/01/22 07:22:25.22 OGkLlkIl.net
>>40
んー、頑張る

あとロックする方法に関しては、自分はミューテックスとイベント使ってるな
ちなみにセマフォは使ってない

>>39
マルチスレッド 同期でぐぐってみ?
あと、DirectXでマルチスレッドと相性の悪い命令があるから、それにも注意した方がいい

45:名前は開発中のものです。
14/01/22 08:14:42.24 OGkLlkIl.net
ってゆーか、ちょっとぐぐってみたんだが分かりづらいページが多いなw
とりあえず、異なるスレッドが同じ変数にアクセスするとエラーになる場合がある事は理解してる?

46:名前は開発中のものです。
14/01/22 08:25:54.82 AONvqNdW.net
「作れるけどめんどくさいから既製品でいいや」

「どうやって作るのかわかんないから既製品でいいや」
の間には絶対越えられない山脈が横たわる。

んで、一緒に既製品使ってたのにある日突然その山脈をヒョイっと越えてく人達がいるんだ。

47:名前は開発中のものです。
14/01/22 16:00:09.27 4ljV+t0J.net
自分の書いたコードを別のプラットフォームに移植したり、
別のプロジェクトで再利用したりする機会が出てくると、
フリーのライブラリやミドルウェアを使ってるのが足かせになる場合が出てくる。
…ので、おれは自分で書けるものは自分で書くことにしてる。

48:名前は開発中のものです。
14/01/22 19:55:47.76 FwnXEaYs.net
C++では悪しき車輪の再発明文化が染み付きやすいからな
JavaとかC#やらん人は一度体験したほうがいい

49:名前は開発中のものです。
14/01/22 20:38:32.77 MuwJkdzb.net
マルチスレッドって理解してる人が少ないだけで実はそれほど対した技術じゃないよなw
Windows95の頃からある古い技術だし

50:名前は開発中のものです。
14/01/22 21:25:45.67 wzTb147v.net
UNIX系に比べたらWindowsのマルチスレッドなんて遙かに新しい方だが、
いったいこの知ったかは何を言っているんだろう?

51:名前は開発中のものです。
14/01/22 21:46:05.00 FwnXEaYs.net
話の焦点が分からないけど、windowsではクリティカルセクション以外
覚えることなにもないんじゃないの?

多重起動防止でミューテックス使うかもしれんけど、
マルチスレッドじゃなくてマルチプロセス?の話だし、
セマフォやイベントもまるで出番ないなぁ

そんなわけで結城のマルチスレッド・デザインパターン本の知識とか
ゲーム内で使わないし、ファイルIO、BGM、ネットワークくらいかな、
スレッドが関連してるのは

52:名前は開発中のものです。
14/01/22 21:50:12.62 dtO4FDEt.net
レンダリングだろ今は。

53:名前は開発中のものです。
14/01/22 21:54:50.35 y74k/mSd.net
まあマルチスレッドで面倒なのはデバッグだし

54:名前は開発中のものです。
14/01/22 23:46:51.66 FwnXEaYs.net
特殊なゲームを除いて、ロジックのマルチスレッド化はやめたほうがいいね

OpenMPとかも保守性を落とすわりには、バッファコピーとかくだらない
並列化しかできないし、積極的にスレッド化してもリスクの方が多い

>>51
Direct3D10以降に出てきたマルチスレッド対応も
結局内部でクリティカルセクションやってるだけだろうから、
だったらswingみたいにシングルスレッドモデルやるほうが無難だと思う

55:名前は開発中のものです。
14/01/23 00:01:05.67 9bErv8vs.net
マルチスレッドはねぇ…
低クロック動作省エネこそ正義の非力な組込システムとかなら
仕方なく中~細粒度並列の形で書いたりもするけれど
ほら、パソコンってアメ車のマッスルカーじゃないですか

CPUリソース、余るんですよね。湯水の如く

なので>>50の言うように粗い粒度でなら取り入れるけど
ゲームの中核部、シミュレーション部については古式ゆかしい
シングルスレッド前提の簡潔なスタイルでラクチンです

56:名前は開発中のものです。
14/01/23 00:58:45.53 XQzipMrB.net
前スレでゲームのメインフレーム部にマルチスレッドを使ってた奴がいたが、今日は来てないのか
あるいは他スレだったかな?

57:名前は開発中のものです。
14/01/23 01:15:55.11 f/NLGL86.net
キャラクターの更新
背景・マップの更新
カメラの更新
これで3つスレッド使える

58:名前は開発中のものです。
14/01/23 01:18:02.56 f/NLGL86.net
メインループと描画のスレッドってわけても意味なくね?

同じデータ参照しちゃいけないなら
一番負荷のかかるキャラクター周り計算が終わってから描画開始しないといけないじゃん

59:名前は開発中のものです。
14/01/23 01:29:07.57 y0vYWKn+.net
描画は軽いけどロジック側がめっちゃ重い場合、
描画側の垂直同期で待つのを避けるためにデータの複製を更新したあとに
スレッド間でデータをコピーorスワップする方法はある
データ用のメモリを2倍も使ったり、対価となるコストも大きいがな

これは広大なマップをもつシムシティのような特殊なゲーム用だね

60:名前は開発中のものです。
14/01/23 01:35:10.24 f/NLGL86.net
ん?広大なマップを持つゲームなら逆にメモリを2倍も使ったら大変なことになるんじゃないのか

61:名前は開発中のものです。
14/01/23 02:21:59.68 s/ECi/gl.net
cpuを倍にするよりメモリを倍にする方が安くて現実的

62:名前は開発中のものです。
14/01/23 02:43:04.45 s/ECi/gl.net
あとそこからもうひと工夫すると実際には+1%くらいで済むかもな

63:名前は開発中のものです。
14/01/23 08:54:48.07 o//cFEYQ.net
マルチスレッドで処理速度を上げるにはダブルバッファリングしてメモリーを隔離して使う事が基本なの?
ややこしいな

64:名前は開発中のものです。
14/01/23 09:00:18.56 WQKAVBet.net
マルチスレッドはCPUの待ち時間を減らして稼動効率を上げる事によって結果的に処理速度を上げるものだからな~
できるだけセマフォ使う回数が減るようにしないと本末転倒だ。セマフォって本来は要らないモノだし。

65:名前は開発中のものです。
14/01/23 09:37:12.46 o//cFEYQ.net
マルチコアであればマルチスレッドの恩恵は得られるんじゃないの?

66:名前は開発中のものです。
14/01/23 09:44:44.32 8rbpDm/C.net
たとえば3Dモデルのフレームの行列計算を、
マルチスレッドで分散させて計算させるだけでも、
マルチコアの恩恵でかなり効果が出る。
モデルデータことにやれば、データのバッティングしないので管理も容易。

細分化して、親フレームからばらけた子フレームの計算を、
複数のコアに投げてもいいんだろうけど、さすがに面倒くさい。

67:名前は開発中のものです。
14/01/23 09:59:16.39 C/RQiWS+.net
CPUキャッシュをだぶるばっふぁりんぐする技術マダー?

68:名前は開発中のものです。
14/01/23 10:28:58.88 aF2XRTqq.net
>>66
Intel:「せっかく俺様が気を利かせて面倒を肩代わりしてやってんのに…
   最適化をご所望なら弊社謹製の開発ツール群をお買い求め下さい」

69:名前は開発中のものです。
14/01/23 11:25:23.28 7+IY4GKU.net
こうやってどんどん必要スペックが上げられていくんだな……。

70:名前は開発中のものです。
14/01/23 12:09:27.48 9AoVHus1.net
データ並列性さえあればOpenMPで簡単マルチスレッド使えるんだけどな
これ以外ではめんどくてマルチスレッドしないわ

71:名前は開発中のものです。
14/01/23 13:18:55.33 8rbpDm/C.net
OpenMPなんて効果が出ないものを、未だに使っている人間がいることに驚いた。

72:名前は開発中のものです。
14/01/23 14:01:36.18 sIh8uNuQ.net
検討項目を増やさずに問題解決するに越したことはないし、
作業を増やさずに問題解決するに越したことはないし、
コンピュータを使わずに問題解決するに越したことはないし、
プログラムを組まずに問題解決するに越したことはないし、
並列処理を使わずに問題解決するに越したことはない。

上司に嫌がらせしたいんだったら、↑の逆に向かう理論武装に日々怠らなければ良いwww

73:名前は開発中のものです。
14/01/23 14:42:15.40 y0vYWKn+.net
OpenMPが普及しないのはそれなりに理由があるからなんだけど
最新技術みたいな中二ワードで本を売る業者に騙されていりこむ信者もいる

彼らは自分が他人より技術があると信仰している
他の連中は技術がないからOpenMP使えないんだ、ヤレヤレと信仰している

74:名前は開発中のものです。
14/01/23 14:54:35.72 o//cFEYQ.net
実際に計測して確かめろとしか言えん
環境によっても変わるしな

75:名前は開発中のものです。
14/01/23 18:57:57.85 B/J3zYBR.net
うちにあるメインマシンはシングルコアだ

76:名前は開発中のものです。
14/01/23 19:35:48.55 XQzipMrB.net
>>72
計測する技術がないから使えないだけじゃね?

77:名前は開発中のものです。
14/01/23 20:23:20.02 y0vYWKn+.net
OpenMPで小さなバッファのコピーが3倍早くなっても仕方ないわけでw
肝心な箇所のスレッド化は自前でやるんだから変なものは導入しないほうがマシ

Javaとか.Netランタイムは、何もしなくても勝手に
OpenMPでやるような単純なスレッド化ポイントを探して
やってくれるらしいから、そっちに期待したほうがまだ実りがあると思うよ

>>62
処理速度が目的ならあらゆる手段でロックを避けるのが基本

78:名前は開発中のものです。
14/01/23 21:23:37.19 AhrZfxvI.net
URLリンク(dixq.net)
何でも掲示板が2ch並みの不毛さになってんだがwww

79:名前は開発中のものです。
14/01/23 22:00:13.37 f/NLGL86.net
毎回毎回過去ログ見ない、何も考えない人の質問を謎の義務感があるのか答えさせられてるからな
俺も平穏な頃はお世話になったが代わりにそこの住人の心が荒れてしまった

80:名前は開発中のものです。
14/01/23 22:13:04.53 Gy4H0ec+.net
MTフレームワークのように使えてる奴おるかー?

81:名前は開発中のものです。
14/01/23 22:28:18.98 y0vYWKn+.net
>>77
技能がないではなく知能がないやつが沸くのは初心者系の宿命さ

82:名前は開発中のものです。
14/01/23 22:41:55.18 AhrZfxvI.net
まあ確かに全ての質問の相手をしてたら荒むかもなー
初心者向けじゃ無くせばいいのにw

83:名前は開発中のものです。
14/01/24 00:19:10.71 GEmYWJ47.net
なんでもかんでも馬鹿にするのは良くないよ
ここの住民はその傾向強いけど

84:名前は開発中のものです。
14/01/24 01:13:55.26 Jcy2cywV.net
世の中に悪いものが溢れすぎているんだよ
バッドノウハウを叩き込む本も海外含めて出版されすぎ
パラノイアになるのもしかたあるまい

85:名前は開発中のものです。
14/01/24 01:19:36.77 2quQhFog.net
横文字並べんな
俺にわかるように日本語で喋る

86:名前は開発中のものです。
14/01/24 02:38:13.12 75+tl8UC.net
カタカナ語をやたらとチョイスするメンズはコミュニケーションがノーグッドなのがデフォルトだし
イージーなワードでトーク出来ない事がフーリッシュだとアンダスタンドしてないよね

87:名前は開発中のものです。
14/01/24 04:50:34.13 pN9eWABR.net
カタカナ語はノットユーズだグッドルッキングガイども。

88:名前は開発中のものです。
14/01/24 17:19:24.19 Jcy2cywV.net
初カキコ…ども…

俺みたいな中3でノンブロッキングI/Oしてる野郎、他に、いますかっていねーか、はは

今日のクラスの会話
Boostシリアライズかっこいい とか DXライブラリ とか
ま、それが普通ですわな

かたや俺はデバッグ用のコンソールでカーネル・ウップスを見て、呟くんすわ
it's a 深刻なエラー.狂ってる?それ、ランタイム・エグゼプションね。

好きなFW MTフレームワーク(カプコン社員でもないのに!)
尊敬する人間 ジョエル・スポルスキー(ユダヤ・ジョークはNO)

89:名前は開発中のものです。
14/01/24 17:30:23.22 jYeepMxG.net
さすが中3だ
匿名掲示板で自分の事を勝手に語り始めた
自分が特別な存在であり、周囲より目立って当然であるという厨二病症状が伝わってくる

そんな貴方に対し、先輩として一つ、大人の現実を教えよう
ゲームを作りたければ、プログラミングだけじゃ駄目だ
プログラミングと絵を練習しなさい
音楽が得意なら音楽にも手を付けなさい
絵が描けないまま大人になれば、辿り付く先はゲーム会社のディレクターではなく、過労のIT豚小屋企業だ
さぁ、若者よ、時間が無いぞ
今日からpixivに通うんだ

90:名前は開発中のものです。
14/01/24 17:59:26.14 Ak56Y4mX.net
他の板でやって。お願い

91:名前は開発中のものです。
14/01/24 18:36:58.01 z3bTrILf.net
だが断る

92:名前は開発中のものです。
14/01/24 18:57:08.80 8axgouAh.net
>>87
そこのクラスは構造体とかのクラスにはしないんだ

93:名前は開発中のものです。
14/01/24 18:57:20.98 Jcy2cywV.net
>>88
おめーゲーム作れねーくせに、2chの受け売りで知ったかかましてんじゃねーぞゴラァ!
無能なくせに、先輩風吹かして上から目線の説教する哲学者気取りには反吐がでるぜ!!

スレリンク(gline板)l50

94:名前は開発中のものです。
14/01/24 19:00:30.40 Jcy2cywV.net
>>91
あー、見落としたわ

95:名前は開発中のものです。
14/01/25 04:15:46.46 8r1nXkC0.net
>>88
絵って・・・同人じゃないんだから専門の絵描きさんにお願いするだろ普通

96:名前は開発中のものです。
14/01/25 16:31:59.91 jy8SNfJb.net
大手ゲームメーカー管理職の妄想にとりつかれたゲーム爺(無職)
あっちで引き取ってもらおう

ニート、無職、フリーターがゲームを作るスレ6
スレリンク(gamedev板)

97:名前は開発中のものです。
14/01/25 20:03:22.14 ErNorzVO.net
勘弁してください

98:名前は開発中のものです。
14/01/25 22:16:45.80 ykCYICO9.net
URLリンク(codepad.org)
これってもしかしてListにAddされたあと
スコープ抜けて寿命付きてListの中なにも残ってなかったりする?

99:名前は開発中のものです。
14/01/25 23:11:32.82 jy8SNfJb.net
いんや。vectorにaddされるのはローカル変数SCache Cache自体ではなく、
vector内でnew SCache()されたものであり、aiueo()ローカル変数SCache Cacheが
新しく生成されたインスタンスに対してコピーコンストラクタでコピーされるはず

だからたぶんコピーコンストラクタをprivateで定義しておくとコンパイルが通らないはずだ
SCache::SCache(const &copy){}

一応自分で確認してくれ

100:名前は開発中のものです。
14/01/25 23:12:47.19 jy8SNfJb.net
訂正
SCache::SCache(const SCache &copy){}

101:名前は開発中のものです。
14/01/26 00:11:58.97 Iw5/1QMx.net
うーん、、特にコピーコンストラクタは触ってないんだけどなぁ
ありがとうございました

102:名前は開発中のものです。
14/01/26 00:17:49.78 wqDtdTDr.net
なぜかvectorサイズが0になってるとか、
例外ダイアログでvectorほにゃらら~がでるとか、それ系なん?

103:名前は開発中のものです。
14/01/26 00:28:30.05 wqDtdTDr.net
俺は前にこれでやらかしたことがあるぜ
vectorの内部バッファが大きくなるとポインタが無効になる

std:: vector<Hoge> list;

Hoge* add(Hoge &obj)
{
list += obj;
Hoge* last = &list[ list.size()-1 ];
return last;
}

104:名前は開発中のものです。
14/01/26 08:53:27.52 Iw5/1QMx.net
>>102
2000個ぐらいなんだけど、多い?

105:名前は開発中のものです。
14/01/26 09:28:31.24 +p1FZWAS.net
vectorは内部バッファの領域拡張が発生した時にその領域を指してるポインタは無効になるよってこと
だから要素数がいくつだったらって話じゃないよ

106:名前は開発中のものです。
14/01/26 09:48:24.53 f2NeeHoK.net
vectorの領域拡張はフラグメンテーションが起きやすいよね

107:名前は開発中のものです。
14/01/26 12:46:34.63 WQN234w5.net
何でそのへんの仕組み理解してないのにわざわざ生ポ使うんだよ!

108:名前は開発中のものです。
14/01/26 15:37:26.70 1jTIwhcQ.net
>>105
瑣末

109:名前は開発中のものです。
14/01/26 16:41:16.86 RpTDvif5.net
>>105
STLコンテナにアロケータ設定できるのも知らんのか?
そもそもメモリコンパクションがどうとかいう話は
GC系言語ですらとっくに切り捨てた昔話だと思うが

110:名前は開発中のものです。
14/01/26 17:41:28.90 f2NeeHoK.net
>>108
アローケーター操作するの面倒じゃね?
ある程度大きめにメモリーを取得しといて使い回す方が楽っぽいが

111:名前は開発中のものです。
14/01/26 17:56:52.23 RpTDvif5.net
要は固定サイズの配列だろ?
好きなようにやればいいさ

112:名前は開発中のものです。
14/01/26 18:42:00.91 f2NeeHoK.net
いや可変サイズだが
あらかじめ取得しといた容量よりも大きなサイズが必要になったら倍のサイズに領域を拡張してる

113:名前は開発中のものです。
14/01/26 18:47:27.36 f2NeeHoK.net
>>108
つーか>>102の場合はvectorよりもlist使った方が良くないかい?

114:名前は開発中のものです。
14/01/26 18:52:43.37 y8TPPY9Q.net
一見listの方が速そうに思えるんだけど、
実際ベンチマークを取るとvectorの方が速いことが多いので侮れない。

115:名前は開発中のものです。
14/01/26 18:59:37.83 f2NeeHoK.net
いや速度よりもフラグメンテーションでアプリが跳ぶ事を気にしてるんだが

116:名前は開発中のものです。
14/01/26 19:20:58.79 1jTIwhcQ.net
>>109
>>114
やっぱり瑣末かと。換言すれば、取るに足らない、微レ存、取越苦労、枝葉、の話かと。
いや違う考慮に値するというなら問題が再現可能な状況を示してみればいいのでは。
異常な頻度で確保/再割当/解放を繰り返すような無理な状況設定が必要になるけど。
件の話なら適切にreserve使えばいいかと。それで解決しない問題ってあるかな?

117:名前は開発中のものです。
14/01/26 19:22:33.48 1jTIwhcQ.net
補足
ヒープ割当はフラグメンテーション回避で独自のメモリプールをーとかこの手の
取らぬ狸の皮算用になりがちな話題は何度目かというくらい既視感があったので
過去発言を適当に検索。関連ありそうなので貼り

> PCの場合、例えば平凡なDoug Lea Malloc(の亜種)を使うことについて
> 処理速度上の問題で難癖を付けるには、意図的に相当に意地悪な(過酷な)状況設定を
> 引っ張ってくる必要があると思うなぁ

> 例えば3D視点のゲームで、視覚効果に使う粒子状の短命オブジェクトが盛り盛り
> 無数に画面上に散りばめられてて、それらが何と一粒一粒馬鹿正直にヒープから
> メモリ割り当てされてて何の工夫もない線形リストに挿入されてて、毎フレーム
> 線形リストを馬鹿正直に巡回して一粒一粒更新したり削除即時解放したりとか

(この状況設定がなぜ意地悪かというと)

> 描画関数に渡すパーティクル用のデータ構造と明らかに違う状態だから

(不必要な)

> セットアップもあるしね。まぁ、いずれにせよ、何でそんな馬鹿な
> 想定を持ち出すんだと閉口するような話に持っていかないと処理速度上の
> 問題で横槍いれるのは難しいと思う

118:名前は開発中のものです。
14/01/26 19:24:03.74 y8TPPY9Q.net
>>114
オレオレ用語じゃ意味が分からん。
おそらくその現象は君の脳内世界でしか発生しない。

119:名前は開発中のものです。
14/01/26 19:43:21.57 f2NeeHoK.net
>>117
1jTIwhcQには意味が通じてるぞ?w
>>115
いや、そこまで分かってるなら特に問題は無い……な
ただ、ゲームの場合、ムチャなメモリーの使い方する事が多いから、
reserveを忘れる事も珍しくないのでは?と思ったんだが

まあ、些末な問題と言えば些末な問題か

120:名前は開発中のものです。
14/01/26 20:01:52.93 NBq5fzCq.net
無能がしったかかまして大恥をかきましたってさ

121:名前は開発中のものです。
14/01/26 20:31:03.96 q4s5e5oc.net
つまりどういうこと?
初期化したときに必要な分確保しとけってことでいいの?

122:名前は開発中のものです。
14/01/26 20:59:04.35 RpTDvif5.net
アホの戯言を相手にせず、普通にSTLを使いましょうってこと

123:名前は開発中のものです。
14/01/26 21:10:15.17 RpTDvif5.net
std::vector<T>のTが構造体かクラスであるとき、内部バッファのリサイズに際して
コピーコンストラクタのコストが多数生じること、またコピーコンストラクタにおける
コピーの実装に関する適切さ(シャローコピー・ディープコピー)といった面倒が生じる
リスクを考慮すると、ポインタ型にすることを心がけた方が良いってのはあるかな

もちろん、プリミティブ型に関してはなんの心配も必要ない

124:名前は開発中のものです。
14/01/26 21:16:08.13 f2NeeHoK.net
あれ?ポインタが領域拡張で無効になるケースの解決にはならないような……
容量を十分確保しておけば、無効になりにくいだけで

125:名前は開発中のものです。
14/01/26 21:59:47.79 f2NeeHoK.net
>>120
必要な分が分かってる場合はそれでいい
分かってない場合はポインタを取得し直す必要がある。

126:名前は開発中のものです。
14/01/26 22:16:48.30 QJMQDIrF.net
ここでいうのもアレだが
ソースのバックアップとレポジトリは取れってのをテンプレに入れないか?

127:名前は開発中のものです。
14/01/26 22:24:33.83 f2NeeHoK.net
それ、個人的な問題じゃね?

128:名前は開発中のものです。
14/01/26 23:17:21.24 lvnLOcR2.net
メモリ断片化は気にした方がいいぞ。

参考:ゲ製におけるSTLの問題
URLリンク(i-saint.hatenablog.com)

129:36
14/01/26 23:44:04.69 UYS8+7kl.net
俺にはあまり関係ない話だな
処理が多少重いとはいえ、致命的な重さじゃないしな
処理を軽くする場合にはSTLを使うが、それもかなり拡張してあるしな

130:36
14/01/27 00:09:52.23 H+nDAORl.net
メモリ断片化=メモリのフラグメンテーション

131:名前は開発中のものです。
14/01/27 00:16:52.22 EXjzd9fa.net
固定サイズメモリを使っているオレに、死角は無い�


132:I



133:名前は開発中のものです。
14/01/27 01:48:26.16 mugBVfcb.net
ハードがしょぼくてCPUやメモリがきつい家庭用ゲーム機を前提とした記事だろ
Effective C++ とか与太本に洗脳されて全メソッドにinline修飾するようなもんだ

134:名前は開発中のものです。
14/01/27 02:09:19.06 4xmtC5j/.net
vectorの場合はポインタじゃなくて添字で管理したらいいんじゃない?

135:名前は開発中のものです。
14/01/27 02:31:16.30 R0saBUqG.net
あまり良いやり方ではないな
配列の先頭や中間に挿入されたら
バグのもとになりやすい

136:名前は開発中のものです。
14/01/27 06:25:50.94 qr20Z00A.net
>>124
「必要な分がわかっていない場合」を回避すればいいじゃない

137:名前は開発中のものです。
14/01/27 07:45:48.10 qHfddkTR.net
メモリ断片化ならスクリプト言語を自前すればすぐに起きるぞw

138:名前は開発中のものです。
14/01/27 07:48:53.10 vLlLVDDe.net
>>135
間違えた
×>自前すれば
○>自作すれば

139:名前は開発中のものです。
14/01/27 11:18:44.83 EXjzd9fa.net
>>134
未来の自分にバグを押し付けるようなやり方は、あまり好きじゃないが……ま、人それぞれか

140:名前は開発中のものです。
14/01/27 12:25:27.76 qr20Z00A.net
>>134は、レベル中で発生するオブジェクト最大数をあらかじめ限定してヒープ確保するって手順を想定してた。
※元々の>>124の問題は、ポインタ再取得ってのもあったが

>>135
kwsk

>>137
話が見えんw

141:名前は開発中のものです。
14/01/27 14:38:03.04 LXwSCF8m.net
ん?
vectorにインスタンスをaddした後
vectorが要素数増やそうとメモリ上の位置が変わってもnewしたメモリ位置は変わらないよね?
vectorが移動してるだけでvectorのメモリ上の参照してインスタンスを取ってくるわけじゃないから
newした時点でインスタンスのメモリ上の位置は変わらないんじゃないの?

142:名前は開発中のものです。
14/01/27 15:44:25.62 mugBVfcb.net
vectorが内部で何してるのか見当つかないのか?

vectorは配列を内部でもってるだけ
T* m_buffer = new T[buffer_size];
add(T obj)されると m_buffer[index] = obj; のようにコピーする

そしてバッファサイズが足りなくなると再確保してコピーするわけだ

int new_size = old_size * 2;
T* newBuffer = new T[new_size];
for(i < old_size)
{
newBuffer[i] = m_buffer[i]; // 構造体とかだと、ここのコピーコスト(大)
}

delete[] m_buffer; // <= ここで以前確保したポインタは無効
m_buffer = newBuffer;

143:名前は開発中のものです。
14/01/27 16:15:48.48 0NY/NAUW.net
自分は使ったことないんだけど、boostのIntrusiveコンテナってゲーム制作的にはどうなんだろ

144:名前は開発中のものです。
14/01/27 17:01:18.91 mugBVfcb.net
オレオレSTLの学習コストが嫌でなければ使ってみてもいんじゃない?
大した利点もなさそうだが、プリミティブはSTL::vector、
クラス・構造体はboost::ptr_vectorとか使い分けるのも悪くないと思う

メモリ断片化が~とかいう話だったらもういいかげんにしろ

145:名前は開発中のものです。
14/01/27 17:57:35.18 HdFzU7eb.net
なんか自信なくなってきたわ

値型(スタック型)を格納してるvectorから、
ある要素の参照(生ポインタ)を取り出しておいた場合、
vectorのリサイズが起きた後はその参照はアテにならなくなる。

っていう話だよな。


vectorに値型そのまま入れるなんて、自分で線形台数用のクラス(それこそ名前がVectorとかになりそうだが)
作ろうと思った時くらいじゃない?

146:名前は開発中のものです。
14/01/27 18:20:18.10 mugBVfcb.net
日本語でOK?

もしプリミティブ型の意味が分からないとしたら、
int, double, float, long, char, short, wcharのことだからな
あらゆるポインタ型も実際はただのintだから同じノウハウで扱える

147:名前は開発中のものです。
14/01/27 18:35:32.27 HdFzU7eb.net
ごめん


148:俺は噛み付いたわけでもなくって、プリミティブ型の話でもなくって、 ヒープとスタックの話・・・というのも語弊があるか、 なんつーか、メモリ上への確保の仕方とかメモリレイアウト考えたらこうなるよねって話だったのよ、ごめん



149:名前は開発中のものです。
14/01/28 00:45:58.29 qfuPw86M.net
うふふ

150:名前は開発中のものです。
14/01/28 00:52:07.03 uQ48xUyE.net
データの使い方によって正しくコンテナ選べばstlだけでも十分
要素がでかくて頻繁に入れ替えが発生してインデックスアクセスがしたいならshared_ptrで包んでvectorにでも入れときゃいい

>>144
64bit環境だとintとポインタのサイズが同じとは限らないから泣くぞ

151:名前は開発中のものです。
14/01/28 01:18:23.07 ZKatshV9.net
>>127の日本語のblogでは「PC環境」って訳されてるけど
原文は「non desktop」なんだよな。

前から思ってたんだが、
限定されたハイエンドPC環境で「しょぼい」コンテンツを走らせられるからドヤ顔ってどうよ?
ゲ製道を究めようとしているワコウドを、間違った方向に導いてるって自覚あるか?
無策無能をアピールして幸せか?

152:名前は開発中のものです。
14/01/28 01:21:24.73 ZKatshV9.net
誤:「PC環境」
正:「非PC環境」
くsっそおおおおおおおおお

153:名前は開発中のものです。
14/01/28 02:11:44.70 IvP/YXMv.net
意味分からん

154:名前は開発中のものです。
14/01/28 10:18:11.91 GoTWhCD+.net
くだらねーメモリの話なんかあとにしな

155:名前は開発中のものです。
14/01/28 10:42:27.82 S18aQwZb.net
>>147
それで64ビット対応出来なかったorz

156:名前は開発中のものです。
14/01/28 12:23:39.88 OCGZ+qT0.net
>>151
俺のメモリがサザエさんみてーだとっ!?

157:名前は開発中のものです。
14/01/28 21:43:15.57 29GW3hhm.net
思出話に花を咲かせよう

158:名前は開発中のものです。
14/01/29 17:24:08.73 zjmYRHvL.net
>>148
おっちゃん、BeagleBone Blackとかで遊ぼうよ。なかなか楽しいよ?

159:名前は開発中のものです。
14/01/30 00:48:09.40 Ft4RSVu9.net
そうだな・・・
Linuxいじるのも大概飽きたが、
画期的な商品開発にでも
いっちょう取り組んでみるか?
しかし発火とかしないよな?www

160:名前は開発中のものです。
14/02/02 08:52:27.78 txo1/+Rb.net
無償のオープンソース・ライブラリも溢れ返っていることだし、
何か良い組合せアイデアでもないもん加納おっぱいおっぱい
ゲ製だと教育、もしくは協力作業を通じた相性判定、もしくはお前ら童貞が最も好きなコンテンツ分野みたいなんになるんかねwww

161:名前は開発中のものです。
14/02/02 12:41:35.95 8PIr/JRW.net
日本語でOK?

162:名前は開発中のものです。
14/02/02 14:11:43.15 HpiJy6Kg.net
ヒント:行末濁点、三連草

残念な人が棲み憑いてるんです

163:名前は開発中のものです。
14/02/02 19:49:39.87 HpiJy6Kg.net
濁点→読点

164:名前は開発中のものです。
14/02/02 20:11:53.27 8PIr/JRW.net
そんなときにはゲーム爺退散の御札を貼ろう

88 :名前は開発中のものです。:2014/01/24(金) 17:30:23.22 ID:jYeepMxG
さすが中3だ
匿名掲示板で自分の事を勝手に語り始めた
自分が特別な存在であり、周囲より目立って当然であるという厨二病症状が伝わってくる

そんな貴方に対し、先輩として一つ、大人の現実を教えよう
ゲームを作りたければ、プログラミングだけじゃ駄目だ
プログラミングと絵を練習しなさい
音楽が得意なら音楽にも手を付けなさい
絵が描けないまま大人になれば、辿り付く先はゲーム会社のディレクターではなく、過労のIT豚小屋企業だ
さぁ、若者よ、時間が無いぞ
今日からpixivに通うんだ

165:名前は開発中のものです。
14/02/03 00:20:11.99 v+BnfntH.net
何気に、これ正論だよな
他人に企画任せられる環境ならPGだけでいいが

166:名前は開発中のものです。
14/02/03 00:38:34.47 /+Ylube7.net
同人なんてあるもので作るしかないだろ

167:名前は開発中のものです。
14/02/03 08:14:19.87 Lht//rT6.net
最近は絵にも色々種類があるからなぁ
アスキーアート
ドット絵
ローポリ
リアルポリゴン
アニメシェーダ


168: イラスト まあAAはほぼ完全に廃れたが



169:名前は開発中のものです。
14/02/03 09:48:24.68 2oQL0ulv.net
2D素材はある程度フリーでまかなえるが、
3D素材は自分で作らないと厳しい。

170:名前は開発中のものです。
14/02/03 20:57:27.18 0M4cDuVx.net
絵にしろ音楽にしろプログラムにしろ
たいして才能の無い凡人が練習したくらいで通用するものなの?

171:名前は開発中のものです。
14/02/03 21:22:38.34 /+Ylube7.net
どうせ作ったこともないやつが適当に知ったぶってるだけだろ。相手にすんな

172:名前は開発中のものです。
14/02/03 21:51:26.39 svmXZgc+.net
どんな職場で働いてるんだよ
スキルに応じて仕事は分担されてるだろ
何でプログラマが絵を書かなきゃならんのだ

173:名前は開発中のものです。
14/02/03 22:07:10.79 eCQAtwWs.net
インディーズでは一人とかの少人数で作ってる事も珍しくないが?
自分の作りたいゲームを作りたいとか、分け前を増やしたいとか、動機は色々だが

174:名前は開発中のものです。
14/02/03 22:10:32.11 /+Ylube7.net
評論家専門君が憶測でそんな話をしてなんになる?

175:名前は開発中のものです。
14/02/03 22:11:53.17 eCQAtwWs.net
一人で作ってますよ?

176:名前は開発中のものです。
14/02/03 22:15:15.46 xlOVneBM.net
専門に在籍中だが確かに1人で作ってるな
チーム制作も1人で作ってるチームが大半だな
絵とか音楽とかのリソースはネットで拾うけどね
でもそれって結局のところは1人で作ってないよね
リソースまで全部っていう意味で1人で作ってる上で有名なのを作ってるんだとしたらただの天才だからどっかの企業に引き抜かれてろ

177:名前は開発中のものです。
14/02/03 22:27:34.48 eCQAtwWs.net
なぜ企業に入らないといけないの?
好きに作らせてくれて、好きに売らせてくれるような、夢のような企業があるの?
むしろ、売れ行き重視で好きに作らせてくれない、
倫理観とかが大事で好きに売らせてくれない、
といった企業がほとんどじゃね?

178:名前は開発中のものです。
14/02/03 22:30:48.05 /+Ylube7.net
俺はフリー素材+一部絵師に描いてもらってる
趣味なんだから人それぞれのスタイルでいいだろう

179:名前は開発中のものです。
14/02/03 22:49:21.68 xlOVneBM.net
>>173
うん、わかった
自分の生活費さえなんとかできるなら1人で自由に作ってな

180:名前は開発中のものです。
14/02/03 22:55:48.33 HKt11pxu.net
はやく仕事辞めてゲーム作りに没頭したい

181:名前は開発中のものです。
14/02/03 23:24:56.58 /+Ylube7.net
それは言わないお約束だろ
もっと時間のかからない遊びに流れるのも手だけど

182:名前は開発中のものです。
14/02/03 23:32:32.16 eCQAtwWs.net
しかし一番金になりそうな趣味がゲーム作りなんだよな

183:名前は開発中のものです。
14/02/03 23:37:42.57 eCQAtwWs.net
売れてからじゃないと仕事を辞められないのが難点だが

184:名前は開発中のものです。
14/02/03 23:49:11.10 Ny+RFe0l.net
お前は金のことばっかりだな

185:名前は開発中のものです。
14/02/04 00:08:11.00 uJ0GtlwQ.net
>>180
金持ちに成りたいと考える事は悪い事だと思う?

186:名前は開発中のものです。
14/02/04 00:23:08.29 J1FJfMJW.net
スレッドの主旨を考えてくれ。どっかのスレみたいに株の話をされても困る

187:名前は開発中のものです。
14/02/04 00:33:58.33 uJ0GtlwQ.net
そうだな……コッチに移るか

【同人】作ったゲームを金にする その4
スレリンク(gamedev板)

188:名前は開発中のものです。
14/02/04 19:06:59.83 uJ0GtlwQ.net
>>166
昔のゲームはアスキーアートを絵として使ってたわけだが?

189:名前は開発中のものです。
14/02/04 19:09:55.94 uJ0GtlwQ.net
しかも音楽はbeep音だw
とはいえbeep音でwevファイルを再生させてた事もあるからあなどれん

190:名前は開発中のものです。
14/02/04 19:58:16.47 J1FJfMJW.net
それくらい無いものの中でなんとかしてきたということだな
やれメンツが無能だとかいってたらきりが無いわけだ

191:名前は開発中のものです。
14/02/04 20:14:51.47 uJ0GtlwQ.net
>メンツが無能だとか
そういやそれも一人で作るようになる理由の一つだったな
まあ、人数が増えると衝突も増えるからな

むしろあの頃は、DQ1が出る前までは独りで作るのが当たり前だったような……

192:名前は開発中のものです。
14/02/04 20:22:21.38 J1FJfMJW.net
"あの頃"から制作してるの?
ひゃあ!ゲーム爺は生涯現役だぜ

193:名前は開発中のものです。
14/02/04 20:27:51.59 uJ0GtlwQ.net
作成はしてない!
が、パソコン持ってないのにパソコン本を買ったりするぐらいに憧れてたな

194:名前は開発中のものです。
14/02/04 20:41:31.66 uJ0GtlwQ.net
というか今丁度ドラゴンクエストへの道って漫画を読み返していた所だ

195:名前は開発中のものです。
14/02/04 20:55:24.69 G5JzxpFK.net
伝説級の漫画だよなあれ

196:名前は開発中のものです。
14/02/04 21:09:48.44 uJ0GtlwQ.net
うん、長編ゲームを作る人には是非とも読んで欲しい

197:名前は開発中のものです。
14/02/06 07:38:03.22 Mklm8P+v.net
読めば読むほど
中村光一氏がDQ抜けたのが悔やまれる。
お色気コンテンツに憤慨していたエピソードは笑える。

198:名前は開発中のものです。
14/02/06 20:33:21.38 wgo5Jh7Q.net
ドラゴンナイトやカオスエンジェル以前のエロゲだよな?興味はあるな

199:名前は開発中のものです。
14/02/06 21:01:16.01 YaLd/g6Z.net
軽井沢なんとかのことだろうかw

200:名前は開発中のものです。
14/02/06 21:10:32.33 wgo5Jh7Q.net
複雑な操作や手抜きグラフィックに怒ったりしてた話やね

201:名前は開発中のものです。
14/02/09 03:20:30.53 yNPMLa+Y.net
中村光一って不思議のダンジョンシリーズ一発屋で終わったな

202:名前は開発中のものです。
14/02/09 03:48:09.82 n/hHVigC.net
高校時代から名作を生み出してる中村光一が一発屋……?

203:名前は開発中のものです。
14/02/09 03:53:10.61 CEeCxVwx.net
まぁウィザードリィみたいに不思議のダンジョンを伝統化しようとして
燃え尽きた印象があるな
一発屋というより、沢山あった弾を同じ場所に撃ち込んじゃった感じ

204:名前は開発中のものです。
14/02/09 04:22:56.68 eECi/LC1.net
ドアドアいまいちだったけど
あの時代にスクランブルを完全移植した情熱の炎は、そう簡単には消えないさ!
俺は信じてるぜ!

205:名前は開発中のものです。
14/02/09 16:33:33.68 Om4RLWnj.net
今C言語でオセロゲームを作成中なのですが、AIを作るところで行き詰ってしまいました。
とりあえずminiMax法で作ろうとしており参考にしているサイトのURLは
URLリンク(hp.vector.co.jp)
です。

このサイトの
for(最初の子節点の手; 未評価の子節点がある; 次の子節点に移る)
という部分を見る限り先に子節点がいくつあるのか調べておく必要があると思うのですが
その解釈でよろしいですか?

206:名前は開発中のものです。
14/02/09 16:43:02.64 c5g9RcWt.net
>>201
先に子節点を調べなくてもできるけど
先に調べておかないと置けないにも拘わらず置くかどうかを計算するから無駄な計算が増えるし、バグで置いた場合に何処でバグが発生してるのか調べるのが大変になる

207:名前は開発中のものです。
14/02/09 16:50:59.29 Om4RLWnj.net
>>202
ありがとうございます。
先に子節点を調べることにします。
調べる上で、次の子節点を調べるときにその前に調べた子節点以外から探す方法が
よくわからないのですが、どのような実装を行えばいいでしょうか

208:名前は開発中のものです。
14/02/10 08:15:56.04 EeAxagpY.net
木構造の探索はスタック使うと楽
再帰処理で実装するといいよ

209:名前は開発中のものです。
14/02/10 16:50:10.78 r9rJHs9v.net
>>204
スタックとはどのようなものかはわかりますが、実装法などは全くわかりません。
二分木なら
typedef struct node_t{
typedef struct node_t *left;
typedef struct node_t *right;
int data;
}NODE;
のようにすればいいと思うのですが、探索となると多分木になると思うので
同じようには実装できませんよね?

210:名前は開発中のものです。
14/02/10 17:57:20.00 zYS9MiyX.net
typedef struct node_t{
 struct node_t *child;
 struct node_t *next;
 int data;
}NODE;

211:名前は開発中のものです。
14/02/10 18:19:16.50 r9rJHs9v.net
>>206
つまり二分木と同じ実装法で見方を変えるということですか?

212:名前は開発中のものです。
14/02/10 19:22:37.65 zYS9MiyX.net
多分木を表現できるデータ構造の一例ってだけだよ
要件は、多分木であることと、ルートから葉に向かって再帰的に処理できること、でしょ?
その要件に足るようなデータ構造で自分の使いやすいものを選択すればいい

213:名前は開発中のものです。
14/02/11 10:42:36.42 MuB9VwbG.net
三角関数を使ったカメラの回転が上手くいきません・・・
横回転は綺麗に回るんですが、縦回転がY軸しか動かず変な動きになります
分かりやすく解説してるとこは無いですか?

214:名前は開発中のものです。
14/02/11 14:18:07.24 EVFbkSHB.net
>>209
クォータニオンで球面線形補間すると
理論はよく分からないけど何故かうまくいくよ

215:名前は開発中のものです。
14/02/11 14:32:23.80 pu0dsTgx.net
ビューの回転は注視点を移動させた後に組み直せばいい。

216:名前は開発中のものです。
14/02/11 22:12:14.10 sWtHnyX5.net
>>210-211
ありがとう、ちょっと見てみたんですが、
私のコードは三角関数メインなので行列の理解が追いつきませんでした
根本のコードの変更も考えてみます

217:名前は開発中のものです。
14/02/21 22:16:42.52 WPj1YKPY.net
船のゲーム創りたいんですが、
どういう考え方で波を作れば船が上下したり傾いたりするでしょうか?
波を表すメッシュの頂点にベクトルを紐付けて、それを隣の頂点に伝搬する・・・
みたいな事は想像してるんですが、あんまりうまくないというか、
あまり効率的ではないですよね?
いい方法ないですか?

218:名前は開発中のものです。
14/02/22 05:41:07.36 zZnD13Ju.net
>>205
2分探索木を自分で作らなくても、ライブラリにあるでしょ?
B-Tree(self-balancing search tree)平衡2分探索木
B+Tree、赤黒木など

キューやスタックも、ライブラリにあるでしょ?
優先度つきキュー(priority queue)はよく使うよ

詳細はWikipediaなどで、調べて

219:名前は開発中のものです。
14/02/22 10:17:30.51 YdhdLZfz.net
>>213
なんちゃって水面は基本的にはそういう作り方だよ。バネダンパの二次元格子。
お船は、近傍の格子の頂点や面に反発させてどんぶらこさせればいいやという。
トライアル&エラーでパラメータ適当にいじって見た目の調整。おしまい

あ、リアル志向のゲームは何やってるのか知らないよ。学生時代に数値流体
やってたけど、あっちに凝り出すと際限がないからみんなどっかで折り合い
付けて端折ってそれっぽく見せてるだけだと思うよ

220:名前は開発中のものです。
14/02/22 10:56:40.26 4BDQmNHU.net
DirectComputeのサンプルをみると、パーリンノイズから低周波成分を取り除いて地面全体に繰り返し、ハイマップとして地面に適用してるみたい

221:名前は開発中のものです。
14/02/22 11:39:42.84 YdhdLZfz.net
>>216
DX7以前の頃だとテクスチャを2枚用意してマルチテクスチャにして
UV値の操作で各々のテクスチャを交差するように移動させると水面ぽく
見せられるよー的なやり方が多かったけど、あれをハイトマップにも
使う感じかな?

222:名前は開発中のものです。
2014/02/27(


223:木) 22:01:09.66 ID:XfV+syCM.net



224:名前は開発中のものです。
14/02/28 02:45:29.15 WKCAf0/q.net
>>218
鏡を見てため息をつけばいいと思う

225:名前は開発中のものです。
14/03/01 15:31:28.07 xOOTC3SX.net
c++で別のクラスの数値が欲しいときはメソッドに相手クラスのポインタ変数を持ってコンストラクタでポインタを渡せばいいのですか?

226:名前は開発中のものです。
14/03/01 15:36:42.26 ckzLhO0U.net
コンストラクタ?

227:名前は開発中のものです。
14/03/01 17:29:52.27 P6ZwcTGw.net
コンス卜ラクタはコンス卜ラクタなんじゃ…?

228:名前は開発中のものです。
14/03/01 17:49:25.00 ckzLhO0U.net
ああ理解した、メソッド→メンバか
メンバ関数にポインタ変数を渡して…何でここでコンストラクタ??って思った

229:名前は開発中のものです。
14/03/01 23:00:27.16 B/y6lyvX.net
>>220
メンバにポインタ持たせてもいいし、相手クラスを継承してしまうとか、
その数値が必要になる関数の引数に、ポインタや参照で渡したり、
数値そのものを引数で渡すだけでも、好きなのでいいと思うよ

230:名前は開発中のものです。
14/03/02 01:12:07.39 One/ooAB.net
で、どこにゲーム関係あるの?

231:名前は開発中のものです。
14/03/02 18:14:52.71 eSGAMgB8.net
暗号化した外部ファイルとかセーブファイルの拡張子ってどうしてる?
foobarとかhogeみたいに意味のない文字なのがベストなんだけど
既存で使われているdatとかsavだと既になんらかの関連付けが
されてしまってる場合がありえるよね

232:名前は開発中のものです。
14/03/02 18:30:57.68 RKme8rWA.net
ユーザが開くことを前提としないなら気にしない。

233:名前は開発中のものです。
14/03/02 18:34:29.49 eSGAMgB8.net
そうか、むしろ無しでもいいか

234:名前は開発中のものです。
14/03/02 19:12:19.16 odwxDc0w.net
というか、ユーザーでもすぐ「あ、これがセーブファイルだな」と判るようにしておいたほうがいいだろ。
データのバックアップを取りたいことあるだろうし。

235:名前は開発中のものです。
14/03/02 19:15:46.36 Oh6AuFJG.net
何でも.dbにしてる

236:名前は開発中のものです。
14/03/02 19:21:49.81 XPJItCw9.net
bin

237:名前は開発中のものです。
14/03/02 20:11:55.85 uIAHAPdg.net
URLリンク(gyazo.com)

マルチスレッドってオブジェクトリストの更新中に
オブジェクトリストを参照できないんだから意味なくないですか?
どうしてマルチスレッドで動作が軽くなるんですか?
セマフォをオブジェクト単位でかけてたらセマフォの処理で余計重くなるのでは

238:名前は開発中のものです。
14/03/02 20:20:19.85 9+Akgo4p.net
ダブルバッファで検索するんだ

239:名前は開発中のものです。
14/03/02 20:21:15.86 Oac8ta12.net
誰か使ってないですかねぇ
URLリンク(oxygine.org)

240:名前は開発中のものです。
14/03/02 20:51:20.45 uIAHAPdg.net
>>233
画面のチラツキを抑えるほうが出てきて、出てきても申し訳程度の説明しかない・・・
URLリンク(www.cs.tsukuba.ac.jp)
>◆ダブルバッファリング
> 整数を1つバッファに書き込むだけでロック/アンロックを行なっていると、 実際の並列処理では重たい。
> ロックの回数を減らすために、ダブルバッファリ ングと呼ばれる技術がよく使われる。読み手と書き手で別々にバッファをもうけ、1つのバッファの処理をしている間は、ロックを行なわない。

リストで1つのオブジェクトを更新してる間は「描画スレッドが使っちゃだめですよフラグ」でもたてるのか?
それを参照する時点でスレッドセーフじゃなさそうだけど

それともリスト内の全部のインスタンスのコピーを毎フレーム作るのか?

241:名前は開発中のものです。
14/03/02 20:59:31.72 uIAHAPdg.net
あいや、これは循環バッファ?というやつでダブルバッファとは違うのか

242:名前は開発中のものです。
14/03/02 22:59:32.88 bJnQrcsZ.net
計算したデータを参照渡しせずに、値渡しすればいいだけの話

243:名前は開発中のものです。
14/03/02 23:13:50.02 0kUNTeet.net
マルチスレッドを効果的に使う場面は、
BGM,効果音など
背景の処理、草や木が風でゆらゆらする
シェダー関係もそう

244:名前は開発中のものです。
14/03/02 23:15:24.40 YZ+wwGoZ.net
インスタンスのセットを2つ(AとBとする)作っておいて
・描画スレッドがAの状態を使用して描画している間、更新スレッドは
 Aの状態をもとに更新後の状態をBに作成する。
・両方が完了したらAとBをスワップする
って方法かなぁ

>>232の図で言えば、Subスレッドが描画している間に
Mainスレッドがもう次のフレームの接触判定を処理し始めてる感じ

245:名前は開発中のものです。
14/03/02 23:23:34.37 bJnQrcsZ.net
計算したデータを描画用のバッファに積んで、描画処理に引き渡せばいいだけ。
なんで単純に出来ることを複雑にやろうとするんだ?

246:名前は開発中のものです。
14/03/02 23:31:43.29 Oh6AuFJG.net
>>231
.binはlinuxの.exeって感じでデータっぽくない

247:名前は開発中のものです。
14/03/02 23:37:13.73 Oh6AuFJG.net
>>234
面白そうだけど利用者ほとんどいないようだし、すぐに消えそうだな
cocos2dのほうが良いよ

248:名前は開発中のものです。
14/03/02 23:44:39.24 Oh6AuFJG.net
>>239
それって概念的には全てのインスタンスx2だけど、
描画スレッドは描画に関するデータ(それも画面内に入るもの)だけあれば良いから
実際には必要なメモリ量を削った実装で実現できるな

249:239
14/03/03 00:29:47.75 +ppeC4rH.net
>>243
確かにそうだ
そして多分それが>>240が言っている
「計算したデータを描画用のバッファに積んで、描画処理に引き渡」す
ってのに近いのかも

この辺で思ったんだが、もしDirectX11を生で叩いてるなら
DeferredContextとか使うといいのかな

250:名前は開発中のものです。
14/03/03 00:38:44.19 /CdxWaD8.net ?BRZ(10000)
sssp://img.2ch.net/ico/u_01.gif
>>239
スカラだけならともかく毎フレーム描画に必要な情報全てをnewするのか?

>>239
描画用のバッファを積む時にスレッドぶつかるかもしれないって話では?

class aiueo{
private:
Position* position;
Position* drawPosition;
public:
void func(){
position->setX(position->getX+1);
Position* tmp=position;
position = drawPosition;
drawPosition = tmp;
}
void draw(){
image.draw(drawPosition);
}
};

251:名前は開発中のものです。
14/03/03 07:13:32.62 mjyyGJWK.net
一フレームぶんのバッファに積み終わってから引き渡せばいいだけの話。
引き渡したら描画を描画スレッドにやらせて、計算スレッドは次の計算に入ればいい。
なんで単純で簡単なことを複雑に考えるのか、さっぱり理解できない。

そもそも描画順序などを考えると、座標がすべて確定した後で無ければ、
描画処理なんて出来ないのに、なんで計算直後にチマチマ描画しようという発想になってるんだ?

毎フレームnewとかも、嫌なら最初からある程度の領域を作っておけばいいだけの話で、
そんな簡単に解決できるどうでもいいことをイチイチ聞く意味が分からない。

なにこの思考能力の欠如?

252:名前は開発中のものです。
14/03/03 07:44:19.21 +ppeC4rH.net
別の書き方は出来ないのかあんたは

253:名前は開発中のものです。
14/03/03 08:19:00.54 /CdxWaD8.net ?BRZ(10000)
sssp://img.2ch.net/ico/u_01.gif
URLリンク(gyazo.com)
図で確認するとこんな感じ?
ロックの仕方がよくわからんけど、
メインスレッド側のバッファは描画スレッドに必要な情報(頂点とか)いらないからトントンになるのかな
そうすると、毎フレームnew�


254:キるより保持してたほうが楽そう 描画スレッドはモデルの頂点の展開とかやらずに文字通りZバッファに登録するだけだったりする?



255:名前は開発中のものです。
14/03/03 14:38:46.71 7XSFdIT2.net
>文字通りZバッファに登録するだけだったりする?
意味不明

256:名前は開発中のものです。
14/03/03 20:28:03.25 +ppeC4rH.net
>>248
使ってるライブラリ教えて

257:名前は開発中のものです。
14/03/04 00:42:30.15 tv4RC6nv.net
なんか描画スレッド分けるのがマルチスレッドみたいな流れになってるけど
処理の分割しないと複数コアの性能いかせないよね

>>238以外にも分割出来るところはあるんじゃないの
AIなんかのフレームと分けられる箇所が効果的だとは思うんだが

258:名前は開発中のものです。
14/03/04 00:54:00.93 Tkd6LlXd.net
>>248
君はレベルが低すぎる。基礎的なことすら理解していないようだから
身の丈に合った技術で制作するべきだ

259:名前は開発中のものです。
14/03/04 01:01:46.35 Tkd6LlXd.net
ゲームロジック以外については定番のパターンがあるわけで、
ゲームロジックについてはゲームの性質次第だから汎用的な議論はできん

260:名前は開発中のものです。
14/03/04 01:12:12.33 eUCtnBam.net ?BRZ(10000)
sssp://img.2ch.net/ico/u_01.gif
>>250
DXライブラリです

261:名前は開発中のものです。
14/03/04 01:22:03.26 eUCtnBam.net
>>252
そんなこと言わないで><

262:名前は開発中のものです。
14/03/04 01:45:49.24 MGr4iOMf.net
身の丈に合った技術で満足してたら俺みたいに全然成長しないままになるしいいんじゃね?

263:名前は開発中のものです。
14/03/04 03:19:20.41 NSoGUl2d.net
自称デキル人の大半はエセ
バグ生産しまくるのは得意みたいだがw

無視するに限るよ(ry

264:名前は開発中のものです。
14/03/04 03:24:44.21 6r8+3FgW.net
>>256
満足するならなw

265:名前は開発中のものです。
14/03/04 09:14:16.41 Tkd6LlXd.net
いまどきDXライブラリの初心者でマルチスレッドの基礎も理解してないのに
無理に背伸びした結果が「文字通りZバッファに登録するだけだったりする?」
格好ばかりつけて内容がなさすぎだろ

上で新技術OpenMPとかドヤってたやつといい、もう少し自惚れを抑えて
真摯な姿勢で学ばんと時間の無駄だよ

266:名前は開発中のものです。
14/03/04 09:15:50.51 A1Dcjr5j.net
そもそもグラボの基礎から学びなおせ。
明らかにZバッファが何か分かってないだろ。

267:名前は開発中のものです。
14/03/04 12:24:51.64 VEfOUnzL.net
>>254
Zソートの機能があるライブラリって訳じゃ無いのね

268:名前は開発中のものです。
14/03/04 21:19:35.34 eUCtnBam.net ?BRZ(10000)
sssp://img.2ch.net/ico/u_01.gif
>>261
アルファ値がある面だけZソートして、不透明な面の後から描画しています。

マルチスレッドの基礎はわかりませんが、
勉強目的で実装してみようかなと考えて、疑問点があったので質問しました。

質問の内容に戻りたいのですが、
メインスレッドではオブジェクトの座標だけ計算して、
描画スレッドでオブジェクトの座標からモデルの頂点等を展開すると
メインスレッドと描画スレッドが共有する値が少なくなっていいかなと考えたんですが、
実際に使われているスタンダードな方法とかあれば教えていただけると助かります。

269:名前は開発中のものです。
14/03/05 00:56:58.44 vvepHaRA.net
struct Node {
....Image* image; // D3DMesh mesh でもFontSprite fontでもいい
....Rect bounds;
....Rect src;
....double angle;
};

struct Layer {
....int usingLength = 0;
....Chain<Node> chain; // std::list<Node>
/*
Chain<Node2DImage> chain1;
Chain<Node2DFont> chain2;
Chain<Node3DModel> chain3;
*/
....bool isUpdate = false;
};

270:名前は開発中のものです。
14/03/05 00:58:26.26 vvepHaRA.net
Lock g_sync; // winならクリティカルセクシ


271:ョン、linuxならセマフォ Layer g_layers[3]; // instance; Layer *g_pFront = &g_layers[0]; Layer *g_pSwap = &g_layers[1]; Layer *g_pBack = &g_layers[2]; void threadFront(){ // GUI Thread = main thread ....while(true){ ........g_sync.lock(); ........if(g_pSwap->isUpdate == true){ // ロジック側がスワップした ............Layer *swap = g_pFront; ............g_pFront = g_pSwap; ............g_pSwap = swap; ............g_pSwap = false; ........} ........g_sync.unlock(); ........render(g_pFront); ....} }



272:名前は開発中のものです。
14/03/05 01:01:42.52 vvepHaRA.net
void threadBack(){ // Logic
....while(true){
........g_sync.lock();
........if(g_pSwap->isUpdate == false){ // 描画側がスワップした
............Layer *swap = g_pBack;
............g_pBack = g_pSwap;
............g_pSwap = swap;
............g_pSwap = true;
........}
........g_sync.unlock();
........update(g_pBack);
....}
}


class Scene {
public:
....virtual void update = null;
....virtual void render() = null;
}

273:名前は開発中のものです。
14/03/05 01:07:10.79 vvepHaRA.net
class Game : public Scene {
....Sprite sprite;
public:
....void update(){
........sprite.x++;
....}

....void render(){
........sprite.render(); // g_pBackにデータを渡す
....}
}

Scene* g_pScene = new Game();

// Logic Thread update()
void update(Layer* layer){
....g_pScene->update();
....g_pScene->render();
}

問題は、GUIスレッドしかテクスチャーとかの生成と破棄ができないのだが、
ロジック側の要請をキューにしてメッセージパッシングするのは
少し複雑な実装になるこった。

274:名前は開発中のものです。
14/03/05 16:23:12.96 x8H/gaMj.net
ideoneとかcodepadとか使えばよかったのに

275:名前は開発中のものです。
14/03/05 20:45:55.74 6x2/6ZGn.net
sleepってなくてもいいもんなの?

276:名前は開発中のものです。
14/03/05 21:47:30.12 6x2/6ZGn.net
マルチスレッドプログラミングの基本について書いてる記事があった
URLリンク(www.kumikomi.net)

組み込みのサイトだけど基礎だからゲーム製作にも役立つかな
まあこれ見ても具体的な実装なんてさっぱりわからんけど

277:名前は開発中のものです。
14/03/05 22:22:10.31 vvepHaRA.net
マルチスレッドプログラミングしなくてもいいじゃん

278:名前は開発中のものです。
14/03/05 22:28:07.13 xpm2EzP6.net
起動時のスプラッシュ画面を出すときに欲しくなるんじゃない?(適当)

279:名前は開発中のものです。
14/03/06 22:54:49.68 wXpbFvTO.net
マルチスレッドと言えばQtのQMutexLockerはとても便利だった
ミューテックスのロックとアンロックが一行でできる

280:名前は開発中のものです。
14/03/06 23:58:17.76 g6URqktg.net
>>266
書いてくれて嬉しいですが、処理の流れが見えないですね・・・
swapは裏画面と表画面を入れ替えてるというのはわかるんですが
ロジック側も入れ替えるんですか?
layerとかchainとか何を指してるのかイマイチわからないです・・・

g_sync.lockというのはロック出来るまで待機すんるでしょうか?
そうするといい感じに交互に処理できそう?

281:名前は開発中のものです。
14/03/07 16:53:26.89 fjndePR8.net
だから基礎知識のないやつに教えてもこうなるだけだと言ったろう?
時間の無駄だから諦めたほうがいい

282:名前は開発中のものです。
14/03/07 18:45:58.30 p/ke0iDn.net ?BRZ(10000)
sssp://img.2ch.net/ico/u_01.gif
マルチスレッドで描画しているゲームで、FPSが60以上出るゲームがあるけど
あれって一秒間に60回以上オブジェクトの更新しているってこと?

それとも更新側も全力でループ回して、前フレームからの経過時間を測って処理落ちにも対応する感じ?

283:名前は開発中のものです。
14/03/07 19:37:40.45 fjndePR8.net
シングルスレッドでも余裕で1000FPSでますよ?
すっげー爆速だー()

284:名前は開発中のものです。
14/03/07 19:48:26.65 DRlt5


285:uyo.net



286:名前は開発中のものです。
14/03/07 20:16:57.82 fjndePR8.net
XNAは50FPS推奨だったような気がする
俺もなんとなく50FPSで同期とってる

287:名前は開発中のものです。
14/03/07 21:10:47.46 p/ke0iDn.net
1000FPSでたってモニタがせいぜい120FPSまでしか対応してないじゃん(´・ω・`)

288:名前は開発中のものです。
14/03/07 21:28:42.22 EnJ3GPFi.net
>>279
見た目はそうだけど、例えば 当たり判定があるなら、見えない部分でも計算処理がなされる。

289:名前は開発中のものです。
14/03/07 21:44:38.99 Gh0ocgNA.net
だから、それに何か意味があるのか?
フレーム飛ぶだろ。

290:名前は開発中のものです。
14/03/07 21:54:40.27 5nTupHrf.net
裸の王様的当たり判定

291:名前は開発中のものです。
14/03/07 22:08:10.09 7HkmM3vq.net
>>281
あくまで精度を高めるための処理であって、フレーム飛ぶとかは関係なくね?

よくあるネタとして、毎フレーム32ドットで飛んでいく弾丸は、
大きさ30ドットの敵キャラをすり抜けちゃうとか、そういうやつ。

292:名前は開発中のものです。
14/03/07 22:42:09.70 fjndePR8.net
そういうやつで、あんなやつで、いいかんじに、そんなかんじみたいな?

293:名前は開発中のものです。
14/03/07 22:50:16.12 fjndePR8.net
画面は秒間60回、ロジックは秒間100回更新するより時間差分を使うほうが
一般的じゃないかな。アニメーションなんかでは。

ちなみにマウスを使ったお絵描きソフトをつくると60FPSでは
線が途切れてしまうわけだけど、こちらでは更新回数を増やすのではなく
前回の座標と今回の座標の差分から埋め合わせを計算するのが普通。

294:名前は開発中のものです。
14/03/07 22:53:06.64 EnJ3GPFi.net
マルチスレッドが有効利用できる部分と、利用できない部分がある。
効率的にマルチスレッド化出来る事が限られている。

そして、CPUが4コアであっても 決して4倍には成らない。

295:名前は開発中のものです。
14/03/07 22:55:14.98 RMnLXnbR.net
「目に見えなくて意味がない部分を省略する」メリットよりも
「あらゆる状況に対応できる」メリットを優先するってだけの話じゃ。

296:名前は開発中のものです。
14/03/07 22:56:53.08 Gh0ocgNA.net
さっぱり言ってることが分からんわ
単にCPUに余裕があるって話なら分かるけど。
それと1000FPSになんの関係があるんだ?

処理を1000回やるのと1000FPSは意味が違うだろ。

297:名前は開発中のものです。
14/03/07 23:09:10.35 fjndePR8.net
アホの子はマルチスレッドを使うことが目的化しているなw
「マルチスレッドでCPU性能を限界まで引き出す(ドヤ」

これからはマルチスレッド・ボーイと名乗りなさい

298:名前は開発中のものです。
14/03/07 23:21:09.90 ZsI9fYzN.net
マルチスレッドを勉強したいんだろうしそれが目的でいいんじゃねえの

299:名前は開発中のものです。
14/03/07 23:31:09.17 7HkmM3vq.net
>>288
フレームという単位は、確かに元は映像や画像処理の世界の言葉だが、
ゲーム系では映像の出力の他にも、処理の単位(要はループ数)として使われることがある。
どっちの意味で言ってるかは文脈による。

300:名前は開発中のものです。
14/03/07 23:40:19.37 Gh0ocgNA.net
本当にこいつの言う話は意味不明。
マルチスレッド?jは?何言ってるの?

301:名前は開発中のものです。
14/03/08 00:03:16.81 C0+dE/Sc.net
はっはっはっはっは
教えて君の相手をしていても進歩がなさそうだ

302:名前は開発中のものです。
14/03/08 00:06:45.46 GqQre2H1.net
単発で何やってるんだよ。
恥ずかしいやつだな。

こんな過疎スレで自演しても意味ないぞ

303:名前は開発中のものです。
14/03/08 00:11:20.12 C0+dE/Sc.net
一体何が単発で何が自演しているというのだろう?
まず、>>275が振った話題にレスが続いてること理解してる?

304:名前は開発中のものです。
14/03/08 00:14:00.22 GqQre2H1.net
図星だしたか?ID:fjndePR8君

305:名前は開発中のものです。
14/03/08 00:15:32.48 C0+dE/Sc.net
日付が変わればIDは変わる。それはお前も同じことだが知らんのか?
わかったら、敗者は立ち去られよ

306:名前は開発中のものです。
14/03/08 00:16:46.34 GqQre2H1.net
???本当に馬鹿だなお前w

307:名前は開発中のものです。
14/03/08 00:20:10.92 9lZ7NGbh.net
本当に恥ずかしい流れになってきたw

308:名前は開発中のものです。
14/03/08 00:21:58.27 C0+dE/Sc.net
レス番号と根拠を述べない限り、お前は意味不明なことをいってる糖質にしか見えないが?
追い詰められて苦し紛れに「バーカ」とか「アーホ」と一行レスで煽ってるだけじゃんw

309:名前は開発中のものです。
14/03/08 00:24:33.75 GqQre2H1.net
つ鏡

310:名前は開発中のものです。
14/03/08 00:28:32.27 C0+dE/Sc.net
ほら、何も反論できないだろ?突然「単発で自作自演をして、うんぬん」と人を批判するが
「どのレスがそうなんですか?」と聞き返されて「お前馬鹿だろw」「つ鏡」などと
意味不明な返答を繰り返す。

わかったら、敗者は立ち去られよ

311:名前は開発中のものです。
14/03/08 00:31:28.03 X9SC3wUQ.net
皆何と戦っているのん・・・

312:名前は開発中のものです。
14/03/08 01:44:30.85 Vx2VozQo.net
……単発で自演って日付またいだからID変わっただけだろうに……。

313:名前は開発中のものです。
14/03/08 08:06:01.61 PSYFRGtR.net
結局275はどういうことなの

314:名前は開発中のものです。
14/03/08 09:53:27.60 tPkg4yd1.net
★フレームレート(fps)の方法には幾つか種類がある

①固定fpsで、リミッターにより fpsの上限で固定してしまうもの。
②V-SYNCによって固定する、ゲーム機などであり確実に固定する。
③可変fpsにし、fps値が変化しても同じ速度で挙動するもの。

ゲームエンジンが 一般的にゲームループを形成しており、
ループの回転数(fps)を計測する。
PCの処理速度が不安定であり、状況により常に変動している。
ゲーム内では処理の負荷変動に関係なく処理速度を一定にしたい。
①固定fps方法、設定のfpsを越えないように上限値を決める方法、
単純な解決方法です。設定fpsを下回る場合は処理落ちになる。
②V-SYNC方法、これはリミッターと同じですが、
画面の同期にハード的に合わせてリミッター処理します、
ですから、設定fpsが常に安定している。しかし、
画面同期が変更されると困る。ゲーム機などに多い。
③可変fps方法、これはゲームループの回転速度に反比例して
ゲーム内の速度を制御します。よって、fpsが変化しても
ゲームの速度に影響がありません。こうすると
非力PCでもささやかに動き、高級PCでも豪華に動く。
また、以上の組合せの方法もあり、条件によって選択が違ってくる。

315:名前は開発中のものです。
14/03/08 09:55:48.75 xv4QLBh4.net
ティアリングと絡めて

316:名前は開発中のものです。
14/03/08 15:47:21.74 C0+dE/Sc.net
ガッシ、ボッカ、マルチスレッド・ボーイは逃走した(スイーツ)

317:名前は開発中のものです。
14/03/08 16:31:15.28 cTFUFLMT.net
>>307
「ゲームプログラマーになる前に覚えておきたい技術」のページ127から140を読んでもらいたい
図書館にあると思う

318:名前は開発中のものです。
14/03/08 19:20:22.65 vzxofO6Y.net
>275は、>279から推測すると
おそらく画面描画の単位としてのフレームと、処理の単位としてのフレームを混同してる

319:名前は開発中のものです。
14/03/08 20:06:53.16 C0+dE/Sc.net
フハハハハハハハハ

320:名前は開発中のものです。
14/03/08 20:50:35.38 YGGwUpNn.net
>>309
死ね

321:名前は開発中のものです。
14/03/08 23:21:33.13 Sq36ONOT.net
格闘ゲームは60fpsじゃないと古参のファンに叩かれるそうな

322:名前は開発中のものです。
14/03/09 00:09:52.59 IyeEnt/7.net
このスレは熱いな

323:名前は開発中のものです。
14/03/09 00:18:56.78 zp5zMRCB.net
ゲ製にしては良い流れだ

324:名前は開発中のものです。
14/03/09 00:35:14.60 UV7RBW8A.net
なんにせよゲーム内時間の指標となる数値は必要だよね?描画は別としてね

昔に作ったやつは特に深く考えることなく60FPS基準にしてて、
「このエフェクトは1秒間かけたいから設定値は60(フレーム)にしよう」
とかやってたけど、ゲーム内の時間と描画を切り離して考えてなかったから
倍速にしたいときにFPS120にして1フレごとフレームスキップするとか
トンチンカンなことやってたんだよね
(FPS設定値が描画回数と一緒にゲーム内の速度に影響してしまってた)

設定値は素直に、ゲーム時間としては「再生速度 * 秒数(ミリ)」で設定して
描画としてFPS(描画/秒)を使うべきだねぇ

325:名前は開発中のものです。
14/03/09 10:22:07.75 zp5zMRCB.net
それ、具体的には、デルタタイム(前回更新からの時間差分)を使うのが
一般的だと思うぞ。

もっと原始的にやるなら、画面が50FPSだとキリがよくて、ロジック側もループ回数で
単純計算しやすいかなとは思うんだけど、その延長線上の考え方として
マルチスレッドで秒間100回更新するというのは止めたほうがよいね。

326:名前は開発中のものです。
14/03/09 12:52:15.87 n5K2fLn8.net
普通のHDMIとかパネルの駆動が60Hz辺りなんだから
EU圏のゲーム機でもなきゃわざわざ50を選ぶ理由ないけど
ロジックを高速にするならゲームパッドのサンプリング周期も考慮した方がいいかもね
マウスも非常に速いのあるけど画面とは綺麗な整数倍にならないし

327:名前は開発中のものです。
14/03/09 13:48:11.02 hgm9uEQE.net
シングルスレッドのかずき君は去ったようだ

328:名前は開発中のものです。
14/03/09 15:16:30.96 a5thyH8B.net
います!

329:名前は開発中のものです。
14/03/09 15:55:13.60 UV7RBW8A.net
>>317
ネトゲとかアクションじゃない限り、ゲーム内時間は現実のデルタタイムに
影響されないようにした方が混乱しないんじゃね?

Unityのチュートリアルなんかだと、「移動距離 = Δ * speed」みたいなやり方を見るんだが、
俺達みたいに自分でゲームループを制御する場合は、ゲーム内時間とリアル時間を結びつけるために
ループ内でSleep入れて、ゲーム内の「最小単位時間」は常に同一になるように調整した方がわかりやすいと思う

330:名前は開発中のものです。
14/03/09 16:30:12.84 zp5zMRCB.net
ではその場合、画面が60FPSで更新されるとして、
常に17msの倍数でウェイトやアニメーションを行うことになるな。
別にそれはそれで単純でよいが、海外のゲームエンジンとかライブラリだと
デルタタイムでタイムライン処理するのがデファクトな印象ではある。

331:名前は開発中のものです。
14/03/09 17:36:09.54 UDo1KJJD.net
ここ日本

332:名前は開発中のものです。
14/03/09 18:05:51.13 zp5zMRCB.net
UnityとかFlashもタイムラインだし、デファクトに則るのが良いと思うが、
フレームワーク・ライブラリ整備されている前提でないと
むしろ手間かかるというのはあるな

SDLやDXライブラリでそのままでゴリゴリ書いちゃってるような状況なら
原始的な手法がいんじゃまいか

333:名前は開発中のものです。
14/03/09 22:16:48.95 ai4yRe81.net
時間固定で動くゲームって今ほとんどないんじゃない?
3Dのゲームは大概処理落ちするとコマ送りになる気がするけど

334:名前は開発中のものです。
14/03/09 22:24:11.30 7BkgnOpl.net
通信対戦なら時間基準しかない

335:名前は開発中のものです。
14/03/09 22:29:21.55 YCVyyaL7.net
同人ならまだまだ普通にー、って感じじゃない?

336:名前は開発中のものです。
14/03/09 22:49:06.01 LHzx02pP.net
自称プロの方ですか。
プロのくせに2chってキモイんで巣にお帰りください

337:名前は開発中のものです。
14/03/09 23:27:17.89 YCVyyaL7.net
>>328
どこにプロ要素があったのか

338:名前は開発中のものです。
14/03/10 01:04:03.22 eMnEQH7w.net
コミュ障の有段者かな?

339:名前は開発中のものです。
14/03/10 18:57:16.49 u260dUyO.net
円や矩形の当たり判定を使わずに3Dのメッシュとメッシュの当たり判定をする方法ってある?

340:名前は開発中のものです。
14/03/10 19:30:37.53 a4AxYrFN.net
>>331
もう少しくわしく

なぜその方法ではダメなの?
どのような目的の為にその他の方法が必要なの?

341:名前は開発中のものです。
14/03/10 21:01:01.03 Y7tUpY4E.net
着地判定じゃね

342:名前は開発中のものです。
14/03/10 21:12:38.72 gaJAPo5e.net
あるも何も三角形を総当たりで判定するだけでしょ。
いったい何が聞きたいのかさっぱり分からない。

343:名前は開発中のものです。
14/03/10 23:29:14.20 Y7tUpY4E.net
単に効率的な手法が聞きたいんでしょ
何が聞きたいのかわからないってアスペかよ

344:名前は開発中のものです。
14/03/11 03:02:43.10 IY9eaK2H.net
効率的な手法=点・円・矩形の当たり判定じゃまいか
バーカバーカ

345:名前は開発中のものです。
14/03/11 03:58:39.95 UoOeSCjv.net
>>336
いや、色んな当たり判定の取り方有るよ。
それに円、球、円柱などの単純図形による近似判定って処理が軽いだけで、
厳密な当たり判定を取りたい時の手法としては効率的ではないし。

凸包を使う方法とか、xyzそれぞれのベクトルの射影を取る方法とか、調べてみると面白い。

346:名前は開発中のものです。
14/03/11 12:42:21.97 IY9eaK2H.net
効率的な手法=処理が軽い
精度の高い手法=厳密な当たり判定

347:名前は開発中のものです。
14/03/11 15:13:17.06 7WRcbbN4.net
効率的な手法で精度の高い手法 = 俺らの目標

348:名前は開発中のものです。
14/03/11 15:17:28.37 0J+S+2q7.net
妄想の間違いでは

349:名前は開発中のものです。
14/03/11 15:18:30.63 1Bb7Oz5Q.net
では、球と球の当たり判定の計算式を述べよ 

350:名前は開発中のものです。
14/03/11 15:37:28.53 7aEkrhcX.net
b1{x, y, z, r}
b2{x, y, z, r}

diff.x = abs( b1.x - b2.x )
diff.y = abs( b1.y - b2.y )
diff.z = abs( b1.z - b2.z )
distance = sqrt( sqrt( diff.x^2 + diff.y^2 ) + diff.z^2 )

distance > b1.r + b2.r → no collision
distance = b1.r + b2.r → contact
distance < b1.r + b2.r → collision

351:名前は開発中のものです。
14/03/11 15:55:58.02 AQe4Fl77.net
数学的に >>324 が正解です、
しかしながら、プログラミングとしての最適化されていない。

最適化された解を述べよ、 ( 処理速度向上させよ )

352:名前は開発中のものです。
14/03/11 15:59:16.47 AQe4Fl77.net
訂正、 >>324 じゃなくて、>>342 です

353:名前は開発中のものです。
14/03/11 17:31:22.65 7aEkrhcX.net
あー、どうせ2乗するなら abs() が不要か
平方根の最適化はコンパイラに任せるとして、

distance = sqrt( sqrt( diff.x * diff.x + diff.y * diff.y ) + diff.z * diff.z )

とかじゃダメ?

354:名前は開発中のものです。
14/03/11 18:11:28.23 vsKfw8ZM.net
わからんけど、俺ならとりあえず diff.x > b1.r + b2.r の時点で弾くかな。
diff.y と diff.z も同様。

355:名前は開発中のものです。
14/03/11 21:03:50.46 Xqo2QxT0.net
distanceはsqrt(diff.x^2+diff.y^2+diff.z^2)
sqrtは重いからsqrt使わずにdistance^2と(b1.r+b2.r
)^2を比較する

356:名前は開発中のものです。
14/03/11 21:15:28.25 OqfIz8Zt.net
標準Cライブラリのmath.hってそんな重いの?
平方根くらいええやん

357:名前は開発中のものです。
14/03/11 21:49:57.82 Xqo2QxT0.net
今はcpuに命令あるはずだからそれなりに高速だとは思うけど、四則演算と比べれば当然遅い
ちなみ平方根の計算自体は近似値求める計算だから結構でかいよ

358:名前は開発中のものです。
14/03/11 22:49:56.48 Fzxm+mum.net
どの道その距離は後で衝突箇所(衝突時間)を求める時に必要になるから
計算して返すようにしておいた方がいいよ

359:名前は開発中のものです。
14/03/11 23:13:25.82 P/1Z0pOf.net
平方根なんてほんとにCPU命令にあるのかと思って調べたら本当にあるんだな

URLリンク(www.intel.com)
URLリンク(topsecret.hpc.co)


360:.jp/wiki/index.php/%E5%89%B2%E3%82%8A%E7%AE%97%E3%81%AF%E9%81%85%E3%81%84 しかも割り算一回分レベルの速さ 割り算も遅いので遅いと言えば遅いんだろうけど、これならそれほど頑張って避けなくてもいい気もするね



361:名前は開発中のものです。
14/03/12 10:35:51.84 DWahuZKR.net
int i;
double dSqrt, x, y, z;
long T, E;
x = y = z = 1.0;

T = clock();
for (i = 0; i<100000000; i++){
  dSqrt = sqrt(pow(x, 2.0) + pow(y, 2.0) + pow(z, 2.0));
}
E = clock() - T;
printf("√( x^2 + y^2 + z^2 ) = %1.5f [%1.5f] sec\n", (float)dSqrt, (float)E / CLOCKS_PER_SEC);

T = clock();
for (i = 0; i<100000000; i++){
  dSqrt = sqrt(sqrt(pow(x, 2.0) + pow(y, 2.0)) + pow(z, 2.0));
}
E = clock() - T;
printf("(√(√(x^2 + y^2) + z^2) = %1.5f [%1.5f] sec\n", (float)dSqrt, (float)E / CLOCKS_PER_SEC);

getchar();
return 0;

実行結果
√( x^2 + y^2 + z^2 ) = 1.73205 [0.60800] sec
(√(√(x^2 + y^2) + z^2) = 1.55377 [1.18600] sec

計算結果はゲームで使うなら誤差の範囲かな?
単純に sqrt 2回使えばほぼ 2倍の時間掛かるんで衝突判定するオブジェクトの数に拠りけり
秒間1億に近いから他の処理の重さと併せて考慮する感じだと思う

362:名前は開発中のものです。
14/03/12 13:43:31.76 KEnJWCWv.net
誤差も何も√( x^2 + y^2 + z^2 )と√(√(x^2 + y^2) + z^2)じゃ違う答えになって当然だし・・・

363:名前は開発中のものです。
14/03/12 13:49:15.02 DWahuZKR.net
うん、一応>>347に書かれてた事を試してみただけ

364:名前は開発中のものです。
14/03/12 21:54:58.99 5WuRlcAH.net
>>347はdistanceの二乗使うからsqrtは使わんよ

365:名前は開発中のものです。
14/03/12 21:59:51.24 5WuRlcAH.net
あと、ルート二つついてる方は単に式が間違ってるだけだと思う

366:名前は開発中のものです。
14/03/12 22:11:11.81 MjuHudry.net
pow(x,2.0)て最適化でx*xになるっけ?一昔前のVCだと駄目だったけど
それにdoubleよりfloat使わない?

367:名前は開発中のものです。
14/03/13 10:00:03.12 pSqzCZ7J.net
なるほど、342から間違ってたのね、失礼しました

368:名前は開発中のものです。
14/03/13 11:21:45.95 pSqzCZ7J.net
>>357
一応検証の為に pow(x, 2.0) と x*x の比較したら最適化されないみたいです(VC++2013)

√( x^2 + y^2 + z^2 ) [4.25600] sec
√(x * x + y * y + z * z) [0.61000] sec


これまでのを総合すると、

float dist2 = x * x + y * y + z * z;
float rr = (r1 + r2) * (r1 + r2);

if (dist2 > rr) {
  // no collision
}
else {
  // touch or collision
  float dist = sqrt(dist2); // 衝突位置の計算用
}

みたいな感じかな?
参考になりました、ありがとうございます

369:名前は開発中のものです。
14/03/13 20:12:09.07 U+Ob+Zph.net
doubleよりfloatが何故か遅いっていう噂があるね

370:名前は開発中のものです。
14/03/13 20:37:28.97 gJhIi0KX.net
どうせ/fp:preciseのままだからだろ

371:名前は開発中のものです。
14/03/15 02:04:37.56 lh5cPZ7H.net
とあるゲームのソースを見たところ
playMIDI
TextOut
ReleaseMIDI

など出てきたんですけどこれはygs2kで間違いないですかね?
ygs2kってゲ製では有名なんですか?

372:名前は開発中のものです。
14/03/15 02:30:50.42 3y1QMR7E.net
そうです

373:名前は開発中のものです。
14/03/15 09:20:59.03 9NF5k3Jb.net
わたしが

374:名前は開発中のものです。
14/03/15 14:07:07.29 lh5cPZ7H.net
ヴェルタース

375:名前は開発中のものです。
14/03/15 14:14:31.86 h6Za+Db1.net
>>362
言ってることが支離滅裂。

なぜ、その名前だけでそのライブラリに行きつくのか。
ついでに言えば全然有名じゃないし。なんでゲ製でなの?

376:名前は開発中のものです。
14/03/15 14:58:29.14 FYDjzZLC.net
やねうらお氏は10年前に亡くなりました

377:名前は開発中のものです。
14/03/15 16:20:04.97 PgHQYT7S.net
知ってる人は多そうだけど、使ってるひとってどれくらいいるんだろう?的な

378:名前は開発中のものです。
14/03/15 17:08:57.60 h6Za+Db1.net
>>367
ああ、彼のライブラリなのか。
結局、3Dは出来なかったな。能力的にも年齢的にも無理があったのだろうが。

379:名前は開発中のものです。
14/03/15 17:24:30.81 rzf5NJ5V.net
新聞でやねうら王の名前みて吹いた

380:名前は開発中のものです。
14/03/15 19:43:09.80 DtHIrGu2.net
3Dはのんびり開発してるとバージョン変わって台無しだから不毛

381:名前は開発中のものです。
14/03/15 20:00:10.92 fItnBM/L.net
3DというかMSがな

382:名前は開発中のものです。
14/03/15 20:13:58.33 dxeJpeDA.net
今でも、DirectX7 使えるよ

383:名前は開発中のものです。
14/03/15 20:44:18.33 7h3u1dFN.net
DirectX11は長生きするんじゃない?つっかえねーテッセレータと共に

384:名前は開発中のものです。
14/03/16 02:00:01.53 /lXYe85Y.net
超長生きしたのって7と9だっけ?

385:名前は開発中のものです。
14/03/16 12:04:58.86 45D5Boh6.net
プログラムというより物理の話で申し訳ないんだけど、レースゲームで壁とぶつかった時の速度の計算ってどうしてる?

386:名前は開発中のものです。
14/03/16 12:46:48.57 9fplCkXk.net
速度x0.5
方向は壁の法線方向に対して対称(反射)

※リアルさを求めるなら壁から加わる力から加速度をもとめるべき

387:名前は開発中のものです。
14/03/16 13:08:18.40 DbQzKXx2.net
壁にぶつかったら爆発→リトライ

388:名前は開発中のものです。
14/03/16 14:37:04.76 e720CN4J.net
レースゲームなら>>377でいい気がするね

ただ、簡易スマートボール作ろうとしたときに>>377のやり方やってたら
曲面の壁に沿って滑らかに滑ってくれなくてエターなった思い出があるわ

389:名前は開発中のものです。
14/03/16 15:00:37.43 a7Z/sEsx.net
物理エンジン任せ

390:名前は開発中のものです。
14/03/16 18:55:21.70 uPQCf7iI.net
どうしてるの前にどうしたいを述べるべき

ガツガツと壁を削りながらアグレッシブに攻めるゲームにしたいのか
スピンしてほぼ停止状態からやり直させるのか
ある程度の傾斜なら斜めに傾いたまま突っ走るロデオか

391:名前は開発中のものです。
14/03/17 00:57:39.15 VY0wetv0.net
内積使えよ

392: ◆UxQ8uxJMok
14/03/17 01:35:41.18 kdQ7tXJG.net
 

>>182 :名前は開発中のものです。:2014/02/04(火) 00:23:08.29 ID:J1FJfMJW
> スレッドの主旨を考えてくれ。どっかのスレみたいに株の話をされても困る


おぃ、>>182ID:J1FJfMJW


手前ェは、一族根絶やし肉だるま処刑スレリンク(entrance2板:119番)リスト入りだ。

 

393:名前は開発中のものです。
14/03/17 07:06:23.16 Do9zcgcc.net
>>381
壁とぶつかりながら進む方
一応ライブラリ使えば球体とコースの当たり判定と交点を求めることは出来るんだけど、アクセルを踏み続けると当たってる時でも加速するし、減速する処理を書くと当たり続けて減速しすぎちゃうし・・・

394:名前は開発中のものです。
14/03/17 09:41:07.08 rpSVpHyC.net
URLリンク(www.euclideanspace.com)
ここまでは理解していると思うので、

挙動をどうするか決めておいて
そのようになるようにコードを書いてゆくのでしょう

395:名前は開発中のものです。
14/03/17 19:26:01.22 U3cX2N0O.net
>>384 その辺は真面目なシム系のゲームを作�


396:驍フでなければ、 >>377 にあるようなゲームならではの調整が必要になるケースだと思うよ 壁に接触してから〇秒間は加速性能を〇〇%落とすとか、 壁から離れるような方向に謎の力が加わるとか やってみて理想のゲーム性に近づくようにいろいろ試してみるしかないかと



397:名前は開発中のものです。
14/03/18 20:52:56.02 CMOj/Jcf.net
URLリンク(homepage2.nifty.com)
このスムーズに動くマップスクロールですが、最初にマップを動かしてからキャラを描画する形で
ソースが書かれています。

これを、画面端で、キャラだけ動いてカメラ画面(マップ)が動かないようにしたい場合、
画面を滑らかに動かすのではなく、キャラを滑らかに動かすような処理に
ソースを変更するしかないでしょうか?

398:名前は開発中のものです。
14/03/18 20:53:36.58 CMOj/Jcf.net
URLリンク(homepage2.nifty.com)
アドレスはこちらでした。

399:名前は開発中のものです。
14/03/18 22:13:14.48 anUGUjWa.net
うむ、それしかないと思うよ

400:名前は開発中のものです。
14/03/19 01:58:11.08 tk/WX1Vm.net
>>387
リンク先をチラ見した程度じゃ、何をやってるか正しく把握してないし、
>>387の言わんとしてることもイマイチ分かりかねてるが、

方法としては、
昔ながらRPGみたく、
 キャラの位置が画面端に近づいたら画面全体じゃなくて、キャラのみを移動にする方法や
完全にどこの位置でもキャラを移動させる方法、画面端(移動制限をしっかり)して描画に十分な余白
の3通りぐらいはあると思うよ。
 他にも3D系のだと、画面端に近づくと縮尺が変わってとかもあるけど。

401:名前は開発中のものです。
14/03/19 04:13:25.51 GLn+gVin.net
色々な表現方法があるのだが、比較的応用のききやすい方法を。
こんな事言って、例のkなんとかさんが激おこしないことを祈る。

>>387
現実世界で言うところの、スポーツ中継におけるTVカメラのようなものを想像して欲しい。

例えばマラソン中継。ランナーは常に走っているけど、カメラも同じ方向に動いている。
あるいは野球中継。ホームランボールをTVカメラが追いかけて、常に画面の中央にあるように撮影する。

被写体の動きに合わせてカメラを動かすことで、視聴者には被写体は停止し、背景が流れていくように見える。
カメラを動かすのをやめれば、逆に背景は停止し、被写体は移動する。やがて画面の外に消えてゆくだろう。

これをまとめると
 (1)キャラクターは、画面表示に関わらず常に動かせ。
 (2)マップは、画面表示に関わらず座標を動かしてはならない。
 (3)カメラの位置は、状況に合わせて移動させろ。
ということになる。

402:名前は開発中のものです。
14/03/19 16:07:40.13 UvHVMI/M.net
387の質問はサンプルソースをどうするかって話だから
その答えだと根本から作りなおせって事になるんじゃない?

403:名前は開発中のものです。
14/03/19 16:41:44.59 pluZ/2gm.net
まあ答えとしては>389に言われちゃってるしな

404:名前は開発中のものです。
14/03/19 17:00:07.58 o8V0VZ6P.net
そのサンプルだと滑らかに動くスクロール処理をキャラじゃなくてカメラビューの方に入れてるね。
ぶっちゃけサンプルとしてはどうかと思うぞ。
キャラとカメラ両方に入れるか、キャラに入れるか。この二択でしょ。Dxlibの作者もなんでこんな
初心者いじめのようなサンプルを書いたんだろw

405:名前は開発中のものです。
14/03/19 22:07:24.67 rw0JuaTm.net
俺こそが世界の中心!

406:名前は開発中のものです。
14/03/20 17:23:48.20 XEsROipC.net
C++とかで「グローバル宣言なるべく使うな」って言うけど、どうやって変数のデータを保持するの?

407:名前は開発中のものです。
14/03/20 17:51:07.52


408:yGIdDx3B.net



409:名前は開発中のものです。
14/03/20 17:55:02.77 XkJNKHnH.net
クラス化
引数、戻り値

410:名前は開発中のものです。
14/03/20 18:06:26.35 XEsROipC.net
>>397,398
C++があやふやなのであれなんですが、Cで言えば構造体の中でxという宣言をすれば、


void main(){

}

411:名前は開発中のものです。
14/03/20 18:08:28.64 XEsROipC.net
途中で更新ボタン押してしまった(´・ω・`)

勉強したてであやふやなのであれなんですが、Cで言えば構造体の中でxという宣言をすれば、
Test test;

void main(){
test.x=1;
}

こんな感じにしてしまえば、xはグローバル宣言ではないということでしょうか?

412:名前は開発中のものです。
14/03/20 18:12:12.69 QQSkDL4k.net
>>400
このxはすでにグローバル変数ではなくて、ローカル変数だね
関数の中でしか有効ではない変数で、その関数を抜けるとその変数は破棄されるやつ

グローバル変数ってのはTest testってなってるやつのこと

413:名前は開発中のものです。
14/03/20 18:17:11.33 7FNS6Iq5.net
なんか言ってることが良く分からんが
Test test;
を関数外に書いてるからtestはグローバル変数
だからその中に保持されているxの値も関数抜けても維持されるよーじゃなくてさっさと入門サイト見てこいカス

414:名前は開発中のものです。
14/03/20 20:27:56.02 4y6T8wZl.net
グローバル変数を使うことが悪いのではない
グローバル変数を使うことでバグを引き起こしたりメモリを圧迫する事が悪なのだ
要求機能満たして動くならグローバル使っても気にするこたぁない

415:名前は開発中のものです。
14/03/20 20:32:50.84 mbiTOjB0.net
そういうのはわかるようになってから考えればいいし
初心者のうちはグローバル=悪って覚えていた方が安全

416:名前は開発中のものです。
14/03/20 20:41:55.88 F5faASXs.net
問題になるのは生成、破棄の順序位でしょ
メモリ圧迫なんてヒープからnewしたのと同じだしスタックに積まれるよりまし
アクセス範囲や名前の衝突なんてのも関数でも起こるし
アクセッサーとか間違った使い方のシングルトンで
どこからでも参照できるようにしたら同じこと

417:名前は開発中のものです。
14/03/20 20:58:57.29 QQSkDL4k.net
シングルトンを使うのがそもそもおかしいって力説するやつに会ったことならある

418:名前は開発中のものです。
14/03/20 21:49:50.24 F5faASXs.net
インスタンスが単一を保証するためのパターンでどこからでもアクセスできる為では無いからな
ローカルなクラス内のシングルトンもあるので間違えられると混乱の元
ゲームのデータクラスとして使うのは設計次第

419:名前は開発中のものです。
14/03/20 22:00:31.87 mbiTOjB0.net
リソースよりもメンテナンスの問題でないの
一人開発だとそんな気にならんけど規模でかくなると影響範囲の広い変数なんて地雷みたいなもんだからな
下手に修正すると全く関係ないところでエラーでたりしてトレース大変だったり

420:名前は開発中のものです。
14/03/21 18:13:16.93 VAKzG1ya.net
シングルトン便利なのに
呼び出し側は生成関数使うだけで初期化されてるか気にしなくていいとか楽チン仕様にできる
グローバル変数だけだとそうはいかんよね

421:名前は開発中のものです。
14/03/21 20:31:26.05 sV0Efmq2.net
初期化に失敗する可能性入れたら
実際に使う前に確認しておきたいけどな

422:名前は開発中のものです。
14/03/21 22:38:50.59 4DgLw9n9.net
初期化に失敗する可能性のあるものは
初期化するタイミングを図らないといけないもので
それはシングルトンより適したデザインがあるのてはないか

423:名前は開発中のものです。
14/03/23 14:45:46.78 UqjjQ2/2.net
>>408
そういう目的ならnamespaceを分ければよくねって話なら見た覚えがある

ググったら過去スレがひっかかった



424:http://toro.2ch.net/test/read.cgi/gamedev/1357899040/ シングルトンで検索すると面白い



425:名前は開発中のものです。
14/03/24 21:27:07.06 rE2XsGEW.net
最新のdirectx SDKってどこで入手したらいいですか?
ググっても場所がまちまちで

426:名前は開発中のものです。
14/03/24 21:41:34.76 AEJao4UL.net
>>413
Windows8に標準でついてくるそうだ

427:名前は開発中のものです。
14/03/24 21:50:42.35 WjXmoSNL.net
2012以降のVisual Studioに標準で付いてくる、な

428:名前は開発中のものです。
14/03/24 22:39:54.92 PqJgwAnT.net
マジレスすると>>415のやつ
それかWindowsSDKに一緒に入ってる
この程度は自分で調べようぜ

429:413
14/03/24 22:44:31.69 rE2XsGEW.net
インストール出来ました
ありがとです

430:名前は開発中のものです。
14/03/25 09:41:15.88 KT+bOjyU.net
スレリンク(gamedev板:719番)
↑  ↑  ↑  ↑  ↑  ↑

431:名前は開発中のものです。
14/03/26 11:37:26.78 +vTfvSPy.net
シューティングゲームを作る時、移動キー押下時に自キャラと他オブジェクトとの衝突判定を行うと思うのですが、
1フレーム移動毎に、敵や敵の弾や壁との衝突判定をしていると
画面上に敵の弾が100個とかあったりするとかなり膨大な数ループ処理が必要な気がします。

一般的なゲームの場合、画面上で動いているオブジェクトは全て1フレーム毎に衝突判定をしているのでしょうか?

432:名前は開発中のものです。
14/03/26 13:20:48.84 47820mJU.net
2Dだけど
URLリンク(marupeke296.com)

433:名前は開発中のものです。
14/03/26 13:22:14.35 +vTfvSPy.net
>>420
レスした後でそこ見つけたんだけど私の頭では理解が・・・(´・ω・`)
皆この概念でシューティングゲーム作ってるんですかね?

434:名前は開発中のものです。
14/03/26 13:23:52.42 ghUA5KPp.net
>>420
今まで普通にやってたけど名前が付いてるの始めて知ったわ
ありがとう

435:名前は開発中のものです。
14/03/26 13:56:03.88 xWjmtvj1.net
俺もその理屈何度も読んだけど理解できないんだよなぁ。
素人に解るレベルに噛み砕いてくれてるとこあればいいのに。

結局座標で判定して分割してたりする。俺。

436:名前は開発中のものです。
14/03/26 14:03:19.61 +vTfvSPy.net
>>423
URLリンク(flash.polig.daa.jp)
今さっき見つけたけどここと同じやり方ですかね?
これならなんとなくわかる気がする。

437:名前は開発中のものです。
14/03/26 17:00:06.09 VxCnnAtl.net
>>419
100個くらいなら問題にならないっていう指摘と
なぜ移動キーを押してる間しか当たり判定がないのかというツッコミと

438:名前は開発中のものです。
14/03/26 17:08:48.02 47820mJU.net
質問はそこじゃないから

439:名前は開発中のものです。
14/03/26 18:28:38.14 VxCnnAtl.net
質問に答えたつもりは無いのだが…

440:名前は開発中のものです。
14/03/26 20:24:20.53 Hvj0In47.net
ID:VxCnnAtl
その嫌われ者キャラは素なの?
治した方がいいよ。この先も友達出来ないよ。

441:名前は開発中のものです。
14/03/26 20:29:33.08 fl0FfJGt.net
一般的なゲームをどのクラスで指すのか分からないけど、
時代やハードを問わない"基本"は力技というか、1フレームごとの全判定だと思うっす。
ベテランプログラマがざっくりと組んじゃうところじゃなければ、
とりあえずプロトタイプを作ってみて、そっから必要な機能を満たしつつ、
どんだけ不要な判定対象を省いて回数減らせるか、ってやり方が多い気はする。

負荷やループ数を気にしているのなら、最近の据え置き機や携帯ゲーム機の場合だけど、
C++使ってるなら、数万回のループ判定程度がボトルネックやオーバーヘッドになることは少なくて(余程複雑な判定をしてれば別)、
問題になるのは2D3D問わずグラフィックスコマンドの場合が圧倒的に多いと思う。

なので、研究目的とかじゃなくて今時のハードで遊べるものを作りたいというだけなら、
判定そのものはそこそこ効率化してれば十分だと思うお。
よくあるシューティング形式なら、>>423の考え方でも十分効率上がりまっせ。

442:名前は開発中のものです。
14/03/27 05:30:55.80 y42irIZJ.net
そういう変な聞きかじりは止めた方がいい。

>>423ならスクロールなし画面に入るサイズだから判定もせいぜい3000未満でしょ。
それなら普通にforループ回して十分だし、そこだけマルチスレッドにしても良い。

443:名前は開発中のものです。
14/03/27 05:42:21.29 66/qzmyK.net
厨が頑張るスレw

444:名前は開発中のものです。
14/03/27 10:43:42.33 LEeCMwpD.net
「効率の良い判定方法を教えて下さい」
「今どきのPCは高性能だからそんな事考えなくてもOK!」

じゃ会話にならないでしょ。
ていうか自分の環境を基準に考えるのは止めたがいいよ。

445:名前は開発中のものです。
14/03/27 11:05:32.54 tJdovPbY.net
「そこに拘るよりは、他の場所がネックになってる可能性が高い」なら回答としてギリギリありかな


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch