■ このスレッドは過去ログ倉庫に格納されています
C/C++ゲーム製作総合スレッド Part5
- 1 :名前は開発中のものです。:2014/01/16(木) 00:00:31.27 ID:w6WW3hAo.net
- ゲーム製作におけるC/C++全般に関するスレです。
元スレ
DXライブラリ 総合スレッド その17
http://toro.2ch.net/test/read.cgi/gamedev/1383795645/
前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
C/C++ゲーム製作総合スレッド Part4
http://toro.2ch.net/test/read.cgi/gamedev/1376262450/
- 2 :名前は開発中のものです。:2014/01/17(金) 03:39:01.55 ID:QAgCxBAj.net
- >>1
乙age
- 3 :名前は開発中のものです。:2014/01/18(土) 12:03:19.53 ID:7z1+2mVy.net
- >>1乙
static constは最適化で#defineとパフォーマンス変わらないって何かの本て見たな
- 4 :名前は開発中のものです。:2014/01/18(土) 18:22:04.52 ID:buQ+bA4S.net
- C++で定数を#defineで定義してるようなヤツが居たら血祭りに上げていい。
名前空間が意味なくなってしまうからな。
- 5 :名前は開発中のものです。:2014/01/18(土) 18:43:43.17 ID:SuZ9UyBR.net
- const と define の違いが解らない男の人って・・・・
- 6 :名前は開発中のものです。:2014/01/18(土) 19:12:29.71 ID:c/sT1tiz.net
- メモリ消費としてはconstはグローバル変数みたいなもんで消費するが
#define error -1 とかやると変なところで誤認されてしまうんだな
void hoge(Error* error)
- 7 :名前は開発中のものです。:2014/01/18(土) 20:43:29.35 ID:7z1+2mVy.net
- それ以前に名前の衝突はやめてくださいお願いします
- 8 :名前は開発中のものです。:2014/01/19(日) 00:57:25.91 ID:wG94TV9x.net
- C/C++のスレでこんなこと訊くのも何なのですが
CやC++開発ってかなり減ってきてますよね?
募集見てもほとんど無いです。
やはり今後はあんまり需要がなくなるんでしょうか?
- 9 :名前は開発中のものです。:2014/01/19(日) 01:01:35.84 ID:dxh/zY+y.net
- 誰にもわかりゃしねーよ。自分で予想を立てろ
- 10 :名前は開発中のものです。:2014/01/19(日) 01:05:04.28 ID:zArRV3lb.net
- なくなりゃしないけど
業務アプリをC++で作ってるの? なんで?
みたいなのは淘汰される
- 11 :名前は開発中のものです。:2014/01/19(日) 01:34:37.39 ID:vj8v8wNW.net
- プログラミングスキルってのは、
アホなうちは言語依存だけど、
C型、OOP、関数型言語、と一通り極めて1段階上になると
「未知の言語でも2週間いただければキャッチアップできます」
というレベルまで行けるからね。
そのレベルまで行ったら、C/C++が使えないとかあり得ない。
ただし、C++は書けるけど嫌い、って人はちょくちょくいる。
- 12 :名前は開発中のものです。:2014/01/19(日) 01:40:39.93 ID:a+8LLoOg.net
- #define public private
- 13 :名前は開発中のものです。:2014/01/19(日) 03:42:44.17 ID:lmZ1h6sR.net
- >ただし、C++は書けるけど嫌い、って人はちょくちょくいる。
興味本位で聞くんですが、なんで嫌いなんですかね?
- 14 :名前は開発中のものです。:2014/01/19(日) 03:53:33.09 ID:9enIkqX7.net
- メモリ関連のバグで悩まされて糞言語認定したんだろ
- 15 :名前は開発中のものです。:2014/01/19(日) 04:23:41.52 ID:Ln30iNfr.net
- 回避すればよいだけだろ……
速度重視の大概の言語でメモリー関係のバグは付きまとうのに
- 16 :名前は開発中のものです。:2014/01/19(日) 04:25:28.46 ID:9enIkqX7.net
- 回避する脳力がないんだろいわせんあ
- 17 :名前は開発中のものです。:2014/01/19(日) 06:23:56.86 ID:SxZuWeGh.net
- いや、そういうの関係なしに結構いるっしょ? C++に限らずさ。
- 18 :名前は開発中のものです。:2014/01/19(日) 06:41:21.11 ID:aBX8WpM+.net
- Javaは文字出力関数がやたら長くて面倒で投げた
慣れてしまうとC++が便利すぎて他の言語使う気になれないわ
- 19 :名前は開発中のものです。:2014/01/19(日) 08:24:27.01 ID:radEe2eL.net
- C++が書けるけど嫌いって人はちょくちょくいるだろうけど、
javaが書けるけど嫌いって人はたくさんいるだろうな
- 20 :名前は開発中のものです。:2014/01/19(日) 08:36:47.80 ID:3k5X/H3z.net
- 「回避不能な不具合」で地獄を見たんだろ、
それが「自分が書いたプログラムのせいで」とは限らんしのw
回避する能力がないんじゃない、回避する権限がないんだっつー。
- 21 :名前は開発中のものです。:2014/01/19(日) 10:49:59.46 ID:NnB84tXJ.net
- >>20
本当にこれ
まぁソースは社内で共有してるからドキュメントでここを直すように指示出すと「お前みたいな新入が生意気言うんじゃねぇ」って怒られる
ボクもう3年目なんだけど、いつまで新入社員って言われるんだろうか・・・
ちなみに社内ではCとC++とJavaを使ってる「C#は使うから勉強しといてね」って言われたまま1年過ぎてるんだけどいつ使うの?
- 22 :名前は開発中のものです。:2014/01/19(日) 10:56:21.22 ID:zArRV3lb.net
- >>21
生意気言うんじゃねぇって言いたくなる気持ち分かるわ
- 23 :名前は開発中のものです。:2014/01/19(日) 11:11:40.48 ID: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 :名前は開発中のものです。:2014/01/19(日) 11:26:08.74 ID:NnB84tXJ.net
- >>22
マジか・・・
今度から何も言わないようにしよう
- 25 :名前は開発中のものです。:2014/01/19(日) 11:54:37.95 ID:zArRV3lb.net
- >>24
いや、もっとおっさんになってから
ガキだったなHAHAHAって笑えばいい
- 26 :名前は開発中のものです。:2014/01/19(日) 12:09:14.19 ID:TJLqrM7y.net
- なにそれブラック企業?w上司もプログラマーなら感情論抜きで論破しろよ
- 27 :名前は開発中のものです。:2014/01/19(日) 12:26:00.28 ID:r/kDygNK.net
- プログラ”マ”板で話すことを、何でここで引っ張ってるんだよ。
http://kohada.2ch.net/prog/
- 28 :名前は開発中のものです。:2014/01/19(日) 14:14:56.82 ID:Ln30iNfr.net
- >>23
MFCのCStringは扱いやすいよ
とりあえず自前で実装したが
- 29 :名前は開発中のものです。:2014/01/19(日) 20:23:57.46 ID:vj8v8wNW.net
- >>23
auto_ptr使えばよくね?
- 30 :名前は開発中のものです。:2014/01/19(日) 20:49:07.44 ID:dxh/zY+y.net
- 小さいことが積み重なって不便という意味でな
- 31 :名前は開発中のものです。:2014/01/21(火) 07:47:41.61 ID:6mpa2LLJ.net
- 何でもかんでも自力で作るかライブラリ頼みになるからな
そーゆーのが嫌いな人には向かないのかもな
- 32 :名前は開発中のものです。:2014/01/21(火) 10:53:50.44 ID:k20gbOyK.net
- ゲーム用途だと結局何でもスクラッチになっていくんですけどね…
- 33 :名前は開発中のものです。:2014/01/21(火) 20:38:32.81 ID:ZBJojU/1.net
- オレオレライブラリを経てオレオレゲームエンジンを作り
そして個人利用フリーのゲームエンジンに触れて無意味だったと知る
- 34 :名前は開発中のものです。:2014/01/21(火) 21:36:58.77 ID:/+yIHRaD.net
- >個人利用フリーのゲームエンジン
ぜひ教えて欲しい。
- 35 :名前は開発中のものです。:2014/01/21(火) 21:44:06.65 ID:HN69Ellt.net
- POCOとか使ってるけど、あちこちのライブラリで
オレオレXML(DOM)、オレオレAutoPtr(スマートポインタ)、オレオレException
みたいなユーティリティクラスが満載なのはひどいよ
- 36 :名前は開発中のものです。:2014/01/21(火) 21:51:16.31 ID:wLwEpkEc.net
- オレの場合は俺オレデータ構造を使ってるが?
ツリー状のメモリー情報を簡単に記録でき、しかもフラグメンテーションを
起こさないスグレモノ
だったんだが、ちょいと重すぎた
- 37 :名前は開発中のものです。:2014/01/21(火) 22:20:38.42 ID:/+yIHRaD.net
- 私はDXライブラリ使って今まで数本ゲームを作ってきたけど、「クラス? ポインタ? なにそれ」な組み方だった。
それが最近になってようやく「少しはわかったかな?」って感じになってきて、
俺俺ライブラリ……と呼べるほど立派なものじゃないけど、ゲームの土台を俺俺で作ってるところだから、
こういう行為を無意味とか言われるとちょっと辛いw
- 38 :名前は開発中のものです。:2014/01/21(火) 22:41:33.97 ID:wLwEpkEc.net
- 無意味とは思えないけどな。
オレの場合、マルチスレッドのしっかりした使い方はマスター出来たし
データ構造も一般人には何を意味してるか分からないぐらいに複雑なモノを
扱えるようになったし、スクリプト言語も好きなように拡張出来るようになった。
ただ、肝心のゲームはまだ納得のいくものが出来てないわけだが・・・
- 39 :名前は開発中のものです。:2014/01/22(水) 00:21:13.24 ID:qXFTHavY.net
- マルチスレッドってどうやってスレッドセーフ?になるの?
具体的に教えて
- 40 :名前は開発中のものです。:2014/01/22(水) 00:45:51.85 ID:FwnXEaYs.net
- >>38
お勉強マシーンと揶揄されるパターンに嵌ってるな
俺も笑えない口だが、まあがんばれ
>>39
ロックしろ。使うのはクリティカルセクションだけで十分
- 41 :名前は開発中のものです。:2014/01/22(水) 00:52:28.97 ID:1GoepMJH.net
- >>34
UnityとかUREは個人で使う範囲なら無料ライセンスがある
まあロゴ出ちゃったりするけど
Unityは少しくらい儲けてもおkだったはず
- 42 :名前は開発中のものです。:2014/01/22(水) 05:31:21.08 ID:MUoEPc44.net
- 志の低いクズはHSPでも使ってりゃ幸せになれるのに
- 43 :名前は開発中のものです。:2014/01/22(水) 07:22:25.22 ID:OGkLlkIl.net
- >>40
んー、頑張る
あとロックする方法に関しては、自分はミューテックスとイベント使ってるな
ちなみにセマフォは使ってない
>>39
マルチスレッド 同期でぐぐってみ?
あと、DirectXでマルチスレッドと相性の悪い命令があるから、それにも注意した方がいい
- 44 :名前は開発中のものです。:2014/01/22(水) 08:14:42.24 ID:OGkLlkIl.net
- ってゆーか、ちょっとぐぐってみたんだが分かりづらいページが多いなw
とりあえず、異なるスレッドが同じ変数にアクセスするとエラーになる場合がある事は理解してる?
- 45 :名前は開発中のものです。:2014/01/22(水) 08:25:54.82 ID:AONvqNdW.net
- 「作れるけどめんどくさいから既製品でいいや」
と
「どうやって作るのかわかんないから既製品でいいや」
の間には絶対越えられない山脈が横たわる。
んで、一緒に既製品使ってたのにある日突然その山脈をヒョイっと越えてく人達がいるんだ。
- 46 :名前は開発中のものです。:2014/01/22(水) 16:00:09.27 ID:4ljV+t0J.net
- 自分の書いたコードを別のプラットフォームに移植したり、
別のプロジェクトで再利用したりする機会が出てくると、
フリーのライブラリやミドルウェアを使ってるのが足かせになる場合が出てくる。
…ので、おれは自分で書けるものは自分で書くことにしてる。
- 47 :名前は開発中のものです。:2014/01/22(水) 19:55:47.76 ID:FwnXEaYs.net
- C++では悪しき車輪の再発明文化が染み付きやすいからな
JavaとかC#やらん人は一度体験したほうがいい
- 48 :名前は開発中のものです。:2014/01/22(水) 20:38:32.77 ID:MuwJkdzb.net
- マルチスレッドって理解してる人が少ないだけで実はそれほど対した技術じゃないよなw
Windows95の頃からある古い技術だし
- 49 :名前は開発中のものです。:2014/01/22(水) 21:25:45.67 ID:wzTb147v.net
- UNIX系に比べたらWindowsのマルチスレッドなんて遙かに新しい方だが、
いったいこの知ったかは何を言っているんだろう?
- 50 :名前は開発中のものです。:2014/01/22(水) 21:46:05.00 ID:FwnXEaYs.net
- 話の焦点が分からないけど、windowsではクリティカルセクション以外
覚えることなにもないんじゃないの?
多重起動防止でミューテックス使うかもしれんけど、
マルチスレッドじゃなくてマルチプロセス?の話だし、
セマフォやイベントもまるで出番ないなぁ
そんなわけで結城のマルチスレッド・デザインパターン本の知識とか
ゲーム内で使わないし、ファイルIO、BGM、ネットワークくらいかな、
スレッドが関連してるのは
- 51 :名前は開発中のものです。:2014/01/22(水) 21:50:12.62 ID:dtO4FDEt.net
- レンダリングだろ今は。
- 52 :名前は開発中のものです。:2014/01/22(水) 21:54:50.35 ID:y74k/mSd.net
- まあマルチスレッドで面倒なのはデバッグだし
- 53 :名前は開発中のものです。:2014/01/22(水) 23:46:51.66 ID:FwnXEaYs.net
- 特殊なゲームを除いて、ロジックのマルチスレッド化はやめたほうがいいね
OpenMPとかも保守性を落とすわりには、バッファコピーとかくだらない
並列化しかできないし、積極的にスレッド化してもリスクの方が多い
>>51
Direct3D10以降に出てきたマルチスレッド対応も
結局内部でクリティカルセクションやってるだけだろうから、
だったらswingみたいにシングルスレッドモデルやるほうが無難だと思う
- 54 :名前は開発中のものです。:2014/01/23(木) 00:01:05.67 ID:9bErv8vs.net
- マルチスレッドはねぇ…
低クロック動作省エネこそ正義の非力な組込システムとかなら
仕方なく中〜細粒度並列の形で書いたりもするけれど
ほら、パソコンってアメ車のマッスルカーじゃないですか
CPUリソース、余るんですよね。湯水の如く
なので>>50の言うように粗い粒度でなら取り入れるけど
ゲームの中核部、シミュレーション部については古式ゆかしい
シングルスレッド前提の簡潔なスタイルでラクチンです
- 55 :名前は開発中のものです。:2014/01/23(木) 00:58:45.53 ID:XQzipMrB.net
- 前スレでゲームのメインフレーム部にマルチスレッドを使ってた奴がいたが、今日は来てないのか
あるいは他スレだったかな?
- 56 :名前は開発中のものです。:2014/01/23(木) 01:15:55.11 ID:f/NLGL86.net
- キャラクターの更新
背景・マップの更新
カメラの更新
これで3つスレッド使える
- 57 :名前は開発中のものです。:2014/01/23(木) 01:18:02.56 ID:f/NLGL86.net
- メインループと描画のスレッドってわけても意味なくね?
同じデータ参照しちゃいけないなら
一番負荷のかかるキャラクター周り計算が終わってから描画開始しないといけないじゃん
- 58 :名前は開発中のものです。:2014/01/23(木) 01:29:07.57 ID:y0vYWKn+.net
- 描画は軽いけどロジック側がめっちゃ重い場合、
描画側の垂直同期で待つのを避けるためにデータの複製を更新したあとに
スレッド間でデータをコピーorスワップする方法はある
データ用のメモリを2倍も使ったり、対価となるコストも大きいがな
これは広大なマップをもつシムシティのような特殊なゲーム用だね
- 59 :名前は開発中のものです。:2014/01/23(木) 01:35:10.24 ID:f/NLGL86.net
- ん?広大なマップを持つゲームなら逆にメモリを2倍も使ったら大変なことになるんじゃないのか
- 60 :名前は開発中のものです。:2014/01/23(木) 02:21:59.68 ID:s/ECi/gl.net
- cpuを倍にするよりメモリを倍にする方が安くて現実的
- 61 :名前は開発中のものです。:2014/01/23(木) 02:43:04.45 ID:s/ECi/gl.net
- あとそこからもうひと工夫すると実際には+1%くらいで済むかもな
- 62 :名前は開発中のものです。:2014/01/23(木) 08:54:48.07 ID:o//cFEYQ.net
- マルチスレッドで処理速度を上げるにはダブルバッファリングしてメモリーを隔離して使う事が基本なの?
ややこしいな
- 63 :名前は開発中のものです。:2014/01/23(木) 09:00:18.56 ID:WQKAVBet.net
- マルチスレッドはCPUの待ち時間を減らして稼動効率を上げる事によって結果的に処理速度を上げるものだからな〜
できるだけセマフォ使う回数が減るようにしないと本末転倒だ。セマフォって本来は要らないモノだし。
- 64 :名前は開発中のものです。:2014/01/23(木) 09:37:12.46 ID:o//cFEYQ.net
- マルチコアであればマルチスレッドの恩恵は得られるんじゃないの?
- 65 :名前は開発中のものです。:2014/01/23(木) 09:44:44.32 ID:8rbpDm/C.net
- たとえば3Dモデルのフレームの行列計算を、
マルチスレッドで分散させて計算させるだけでも、
マルチコアの恩恵でかなり効果が出る。
モデルデータことにやれば、データのバッティングしないので管理も容易。
細分化して、親フレームからばらけた子フレームの計算を、
複数のコアに投げてもいいんだろうけど、さすがに面倒くさい。
- 66 :名前は開発中のものです。:2014/01/23(木) 09:59:16.39 ID:C/RQiWS+.net
- CPUキャッシュをだぶるばっふぁりんぐする技術マダー?
- 67 :名前は開発中のものです。:2014/01/23(木) 10:28:58.88 ID:aF2XRTqq.net
- >>66
Intel:「せっかく俺様が気を利かせて面倒を肩代わりしてやってんのに…
最適化をご所望なら弊社謹製の開発ツール群をお買い求め下さい」
- 68 :名前は開発中のものです。:2014/01/23(木) 11:25:23.28 ID:7+IY4GKU.net
- こうやってどんどん必要スペックが上げられていくんだな……。
- 69 :名前は開発中のものです。:2014/01/23(木) 12:09:27.48 ID:9AoVHus1.net
- データ並列性さえあればOpenMPで簡単マルチスレッド使えるんだけどな
これ以外ではめんどくてマルチスレッドしないわ
- 70 :名前は開発中のものです。:2014/01/23(木) 13:18:55.33 ID:8rbpDm/C.net
- OpenMPなんて効果が出ないものを、未だに使っている人間がいることに驚いた。
- 71 :名前は開発中のものです。:2014/01/23(木) 14:01:36.18 ID:sIh8uNuQ.net
- 検討項目を増やさずに問題解決するに越したことはないし、
作業を増やさずに問題解決するに越したことはないし、
コンピュータを使わずに問題解決するに越したことはないし、
プログラムを組まずに問題解決するに越したことはないし、
並列処理を使わずに問題解決するに越したことはない。
上司に嫌がらせしたいんだったら、↑の逆に向かう理論武装に日々怠らなければ良いwww
- 72 :名前は開発中のものです。:2014/01/23(木) 14:42:15.40 ID:y0vYWKn+.net
- OpenMPが普及しないのはそれなりに理由があるからなんだけど
最新技術みたいな中二ワードで本を売る業者に騙されていりこむ信者もいる
彼らは自分が他人より技術があると信仰している
他の連中は技術がないからOpenMP使えないんだ、ヤレヤレと信仰している
- 73 :名前は開発中のものです。:2014/01/23(木) 14:54:35.72 ID:o//cFEYQ.net
- 実際に計測して確かめろとしか言えん
環境によっても変わるしな
- 74 :名前は開発中のものです。:2014/01/23(木) 18:57:57.85 ID:B/J3zYBR.net
- うちにあるメインマシンはシングルコアだ
- 75 :名前は開発中のものです。:2014/01/23(木) 19:35:48.55 ID:XQzipMrB.net
- >>72
計測する技術がないから使えないだけじゃね?
- 76 :名前は開発中のものです。:2014/01/23(木) 20:23:20.02 ID:y0vYWKn+.net
- OpenMPで小さなバッファのコピーが3倍早くなっても仕方ないわけでw
肝心な箇所のスレッド化は自前でやるんだから変なものは導入しないほうがマシ
Javaとか.Netランタイムは、何もしなくても勝手に
OpenMPでやるような単純なスレッド化ポイントを探して
やってくれるらしいから、そっちに期待したほうがまだ実りがあると思うよ
>>62
処理速度が目的ならあらゆる手段でロックを避けるのが基本
- 77 :名前は開発中のものです。:2014/01/23(木) 21:23:37.19 ID:AhrZfxvI.net
- http://dixq.net/forum/viewtopic.php?f=3&t=14532
何でも掲示板が2ch並みの不毛さになってんだがwww
- 78 :名前は開発中のものです。:2014/01/23(木) 22:00:13.37 ID:f/NLGL86.net
- 毎回毎回過去ログ見ない、何も考えない人の質問を謎の義務感があるのか答えさせられてるからな
俺も平穏な頃はお世話になったが代わりにそこの住人の心が荒れてしまった
- 79 :名前は開発中のものです。:2014/01/23(木) 22:13:04.53 ID:Gy4H0ec+.net
- MTフレームワークのように使えてる奴おるかー?
- 80 :名前は開発中のものです。:2014/01/23(木) 22:28:18.98 ID:y0vYWKn+.net
- >>77
技能がないではなく知能がないやつが沸くのは初心者系の宿命さ
- 81 :名前は開発中のものです。:2014/01/23(木) 22:41:55.18 ID:AhrZfxvI.net
- まあ確かに全ての質問の相手をしてたら荒むかもなー
初心者向けじゃ無くせばいいのにw
- 82 :名前は開発中のものです。:2014/01/24(金) 00:19:10.71 ID:GEmYWJ47.net
- なんでもかんでも馬鹿にするのは良くないよ
ここの住民はその傾向強いけど
- 83 :名前は開発中のものです。:2014/01/24(金) 01:13:55.26 ID:Jcy2cywV.net
- 世の中に悪いものが溢れすぎているんだよ
バッドノウハウを叩き込む本も海外含めて出版されすぎ
パラノイアになるのもしかたあるまい
- 84 :名前は開発中のものです。:2014/01/24(金) 01:19:36.77 ID:2quQhFog.net
- 横文字並べんな
俺にわかるように日本語で喋る
- 85 :名前は開発中のものです。:2014/01/24(金) 02:38:13.12 ID:75+tl8UC.net
- カタカナ語をやたらとチョイスするメンズはコミュニケーションがノーグッドなのがデフォルトだし
イージーなワードでトーク出来ない事がフーリッシュだとアンダスタンドしてないよね
- 86 :名前は開発中のものです。:2014/01/24(金) 04:50:34.13 ID:pN9eWABR.net
- カタカナ語はノットユーズだグッドルッキングガイども。
- 87 :名前は開発中のものです。:2014/01/24(金) 17:19:24.19 ID:Jcy2cywV.net
- 初カキコ…ども…
俺みたいな中3でノンブロッキングI/Oしてる野郎、他に、いますかっていねーか、はは
今日のクラスの会話
Boostシリアライズかっこいい とか DXライブラリ とか
ま、それが普通ですわな
かたや俺はデバッグ用のコンソールでカーネル・ウップスを見て、呟くんすわ
it's a 深刻なエラー.狂ってる?それ、ランタイム・エグゼプションね。
好きなFW MTフレームワーク(カプコン社員でもないのに!)
尊敬する人間 ジョエル・スポルスキー(ユダヤ・ジョークはNO)
- 88 :名前は開発中のものです。:2014/01/24(金) 17:30:23.22 ID:jYeepMxG.net
- さすが中3だ
匿名掲示板で自分の事を勝手に語り始めた
自分が特別な存在であり、周囲より目立って当然であるという厨二病症状が伝わってくる
そんな貴方に対し、先輩として一つ、大人の現実を教えよう
ゲームを作りたければ、プログラミングだけじゃ駄目だ
プログラミングと絵を練習しなさい
音楽が得意なら音楽にも手を付けなさい
絵が描けないまま大人になれば、辿り付く先はゲーム会社のディレクターではなく、過労のIT豚小屋企業だ
さぁ、若者よ、時間が無いぞ
今日からpixivに通うんだ
- 89 :名前は開発中のものです。:2014/01/24(金) 17:59:26.14 ID:Ak56Y4mX.net
- 他の板でやって。お願い
- 90 :名前は開発中のものです。:2014/01/24(金) 18:36:58.01 ID:z3bTrILf.net
- だが断る
- 91 :名前は開発中のものです。:2014/01/24(金) 18:57:08.80 ID:8axgouAh.net
- >>87
そこのクラスは構造体とかのクラスにはしないんだ
- 92 :名前は開発中のものです。:2014/01/24(金) 18:57:20.98 ID:Jcy2cywV.net
- >>88
おめーゲーム作れねーくせに、2chの受け売りで知ったかかましてんじゃねーぞゴラァ!
無能なくせに、先輩風吹かして上から目線の説教する哲学者気取りには反吐がでるぜ!!
http://anago.2ch.net/test/read.cgi/gline/1311577271/l50
- 93 :名前は開発中のものです。:2014/01/24(金) 19:00:30.40 ID:Jcy2cywV.net
- >>91
あー、見落としたわ
- 94 :名前は開発中のものです。:2014/01/25(土) 04:15:46.46 ID:8r1nXkC0.net
- >>88
絵って・・・同人じゃないんだから専門の絵描きさんにお願いするだろ普通
- 95 :名前は開発中のものです。:2014/01/25(土) 16:31:59.91 ID:jy8SNfJb.net
- 大手ゲームメーカー管理職の妄想にとりつかれたゲーム爺(無職)
あっちで引き取ってもらおう
ニート、無職、フリーターがゲームを作るスレ6
http://toro.2ch.net/test/read.cgi/gamedev/1389441602/
- 96 :名前は開発中のものです。:2014/01/25(土) 20:03:22.14 ID:ErNorzVO.net
- 勘弁してください
- 97 :名前は開発中のものです。:2014/01/25(土) 22:16:45.80 ID:ykCYICO9.net
- http://codepad.org/XE9hLg41
これってもしかしてListにAddされたあと
スコープ抜けて寿命付きてListの中なにも残ってなかったりする?
- 98 :名前は開発中のものです。:2014/01/25(土) 23:11:32.82 ID:jy8SNfJb.net
- いんや。vectorにaddされるのはローカル変数SCache Cache自体ではなく、
vector内でnew SCache()されたものであり、aiueo()ローカル変数SCache Cacheが
新しく生成されたインスタンスに対してコピーコンストラクタでコピーされるはず
だからたぶんコピーコンストラクタをprivateで定義しておくとコンパイルが通らないはずだ
SCache::SCache(const ©){}
一応自分で確認してくれ
- 99 :名前は開発中のものです。:2014/01/25(土) 23:12:47.19 ID:jy8SNfJb.net
- 訂正
SCache::SCache(const SCache ©){}
- 100 :名前は開発中のものです。:2014/01/26(日) 00:11:58.97 ID:Iw5/1QMx.net
- うーん、、特にコピーコンストラクタは触ってないんだけどなぁ
ありがとうございました
- 101 :名前は開発中のものです。:2014/01/26(日) 00:17:49.78 ID:wqDtdTDr.net
- なぜかvectorサイズが0になってるとか、
例外ダイアログでvectorほにゃらら〜がでるとか、それ系なん?
- 102 :名前は開発中のものです。:2014/01/26(日) 00:28:30.05 ID:wqDtdTDr.net
- 俺は前にこれでやらかしたことがあるぜ
vectorの内部バッファが大きくなるとポインタが無効になる
std:: vector<Hoge> list;
Hoge* add(Hoge &obj)
{
list += obj;
Hoge* last = &list[ list.size()-1 ];
return last;
}
- 103 :名前は開発中のものです。:2014/01/26(日) 08:53:27.52 ID:Iw5/1QMx.net
- >>102
2000個ぐらいなんだけど、多い?
- 104 :名前は開発中のものです。:2014/01/26(日) 09:28:31.24 ID:+p1FZWAS.net
- vectorは内部バッファの領域拡張が発生した時にその領域を指してるポインタは無効になるよってこと
だから要素数がいくつだったらって話じゃないよ
- 105 :名前は開発中のものです。:2014/01/26(日) 09:48:24.53 ID:f2NeeHoK.net
- vectorの領域拡張はフラグメンテーションが起きやすいよね
- 106 :名前は開発中のものです。:2014/01/26(日) 12:46:34.63 ID:WQN234w5.net
- 何でそのへんの仕組み理解してないのにわざわざ生ポ使うんだよ!
- 107 :名前は開発中のものです。:2014/01/26(日) 15:37:26.70 ID:1jTIwhcQ.net
- >>105
瑣末
- 108 :名前は開発中のものです。:2014/01/26(日) 16:41:16.86 ID:RpTDvif5.net
- >>105
STLコンテナにアロケータ設定できるのも知らんのか?
そもそもメモリコンパクションがどうとかいう話は
GC系言語ですらとっくに切り捨てた昔話だと思うが
- 109 :名前は開発中のものです。:2014/01/26(日) 17:41:28.90 ID:f2NeeHoK.net
- >>108
アローケーター操作するの面倒じゃね?
ある程度大きめにメモリーを取得しといて使い回す方が楽っぽいが
- 110 :名前は開発中のものです。:2014/01/26(日) 17:56:52.23 ID:RpTDvif5.net
- 要は固定サイズの配列だろ?
好きなようにやればいいさ
- 111 :名前は開発中のものです。:2014/01/26(日) 18:42:00.91 ID:f2NeeHoK.net
- いや可変サイズだが
あらかじめ取得しといた容量よりも大きなサイズが必要になったら倍のサイズに領域を拡張してる
- 112 :名前は開発中のものです。:2014/01/26(日) 18:47:27.36 ID:f2NeeHoK.net
- >>108
つーか>>102の場合はvectorよりもlist使った方が良くないかい?
- 113 :名前は開発中のものです。:2014/01/26(日) 18:52:43.37 ID:y8TPPY9Q.net
- 一見listの方が速そうに思えるんだけど、
実際ベンチマークを取るとvectorの方が速いことが多いので侮れない。
- 114 :名前は開発中のものです。:2014/01/26(日) 18:59:37.83 ID:f2NeeHoK.net
- いや速度よりもフラグメンテーションでアプリが跳ぶ事を気にしてるんだが
- 115 :名前は開発中のものです。:2014/01/26(日) 19:20:58.79 ID:1jTIwhcQ.net
- >>109
>>114
やっぱり瑣末かと。換言すれば、取るに足らない、微レ存、取越苦労、枝葉、の話かと。
いや違う考慮に値するというなら問題が再現可能な状況を示してみればいいのでは。
異常な頻度で確保/再割当/解放を繰り返すような無理な状況設定が必要になるけど。
件の話なら適切にreserve使えばいいかと。それで解決しない問題ってあるかな?
- 116 :名前は開発中のものです。:2014/01/26(日) 19:22:33.48 ID:1jTIwhcQ.net
- 補足
ヒープ割当はフラグメンテーション回避で独自のメモリプールをーとかこの手の
取らぬ狸の皮算用になりがちな話題は何度目かというくらい既視感があったので
過去発言を適当に検索。関連ありそうなので貼り
> PCの場合、例えば平凡なDoug Lea Malloc(の亜種)を使うことについて
> 処理速度上の問題で難癖を付けるには、意図的に相当に意地悪な(過酷な)状況設定を
> 引っ張ってくる必要があると思うなぁ
> 例えば3D視点のゲームで、視覚効果に使う粒子状の短命オブジェクトが盛り盛り
> 無数に画面上に散りばめられてて、それらが何と一粒一粒馬鹿正直にヒープから
> メモリ割り当てされてて何の工夫もない線形リストに挿入されてて、毎フレーム
> 線形リストを馬鹿正直に巡回して一粒一粒更新したり削除即時解放したりとか
(この状況設定がなぜ意地悪かというと)
> 描画関数に渡すパーティクル用のデータ構造と明らかに違う状態だから
(不必要な)
> セットアップもあるしね。まぁ、いずれにせよ、何でそんな馬鹿な
> 想定を持ち出すんだと閉口するような話に持っていかないと処理速度上の
> 問題で横槍いれるのは難しいと思う
- 117 :名前は開発中のものです。:2014/01/26(日) 19:24:03.74 ID:y8TPPY9Q.net
- >>114
オレオレ用語じゃ意味が分からん。
おそらくその現象は君の脳内世界でしか発生しない。
- 118 :名前は開発中のものです。:2014/01/26(日) 19:43:21.57 ID:f2NeeHoK.net
- >>117
1jTIwhcQには意味が通じてるぞ?w
>>115
いや、そこまで分かってるなら特に問題は無い……な
ただ、ゲームの場合、ムチャなメモリーの使い方する事が多いから、
reserveを忘れる事も珍しくないのでは?と思ったんだが
まあ、些末な問題と言えば些末な問題か
- 119 :名前は開発中のものです。:2014/01/26(日) 20:01:52.93 ID:NBq5fzCq.net
- 無能がしったかかまして大恥をかきましたってさ
- 120 :名前は開発中のものです。:2014/01/26(日) 20:31:03.96 ID:q4s5e5oc.net
- つまりどういうこと?
初期化したときに必要な分確保しとけってことでいいの?
- 121 :名前は開発中のものです。:2014/01/26(日) 20:59:04.35 ID:RpTDvif5.net
- アホの戯言を相手にせず、普通にSTLを使いましょうってこと
- 122 :名前は開発中のものです。:2014/01/26(日) 21:10:15.17 ID:RpTDvif5.net
- std::vector<T>のTが構造体かクラスであるとき、内部バッファのリサイズに際して
コピーコンストラクタのコストが多数生じること、またコピーコンストラクタにおける
コピーの実装に関する適切さ(シャローコピー・ディープコピー)といった面倒が生じる
リスクを考慮すると、ポインタ型にすることを心がけた方が良いってのはあるかな
もちろん、プリミティブ型に関してはなんの心配も必要ない
- 123 :名前は開発中のものです。:2014/01/26(日) 21:16:08.13 ID:f2NeeHoK.net
- あれ?ポインタが領域拡張で無効になるケースの解決にはならないような……
容量を十分確保しておけば、無効になりにくいだけで
- 124 :名前は開発中のものです。:2014/01/26(日) 21:59:47.79 ID:f2NeeHoK.net
- >>120
必要な分が分かってる場合はそれでいい
分かってない場合はポインタを取得し直す必要がある。
- 125 :名前は開発中のものです。:2014/01/26(日) 22:16:48.30 ID:QJMQDIrF.net
- ここでいうのもアレだが
ソースのバックアップとレポジトリは取れってのをテンプレに入れないか?
- 126 :名前は開発中のものです。:2014/01/26(日) 22:24:33.83 ID:f2NeeHoK.net
- それ、個人的な問題じゃね?
- 127 :名前は開発中のものです。:2014/01/26(日) 23:17:21.24 ID:lvnLOcR2.net
- メモリ断片化は気にした方がいいぞ。
参考:ゲ製におけるSTLの問題
ttp://i-saint.hatenablog.com/entry/20101012/1286822888
- 128 :36:2014/01/26(日) 23:44:04.69 ID:UYS8+7kl.net
- 俺にはあまり関係ない話だな
処理が多少重いとはいえ、致命的な重さじゃないしな
処理を軽くする場合にはSTLを使うが、それもかなり拡張してあるしな
- 129 :36:2014/01/27(月) 00:09:52.23 ID:H+nDAORl.net
- メモリ断片化=メモリのフラグメンテーション
- 130 :名前は開発中のものです。:2014/01/27(月) 00:16:52.22 ID:EXjzd9fa.net
- 固定サイズメモリを使っているオレに、死角は無い!
- 131 :名前は開発中のものです。:2014/01/27(月) 01:48:26.16 ID:mugBVfcb.net
- ハードがしょぼくてCPUやメモリがきつい家庭用ゲーム機を前提とした記事だろ
Effective C++ とか与太本に洗脳されて全メソッドにinline修飾するようなもんだ
- 132 :名前は開発中のものです。:2014/01/27(月) 02:09:19.06 ID:4xmtC5j/.net
- vectorの場合はポインタじゃなくて添字で管理したらいいんじゃない?
- 133 :名前は開発中のものです。:2014/01/27(月) 02:31:16.30 ID:R0saBUqG.net
- あまり良いやり方ではないな
配列の先頭や中間に挿入されたら
バグのもとになりやすい
- 134 :名前は開発中のものです。:2014/01/27(月) 06:25:50.94 ID:qr20Z00A.net
- >>124
「必要な分がわかっていない場合」を回避すればいいじゃない
- 135 :名前は開発中のものです。:2014/01/27(月) 07:45:48.10 ID:qHfddkTR.net
- メモリ断片化ならスクリプト言語を自前すればすぐに起きるぞw
- 136 :名前は開発中のものです。:2014/01/27(月) 07:48:53.10 ID:vLlLVDDe.net
- >>135
間違えた
×>自前すれば
○>自作すれば
- 137 :名前は開発中のものです。:2014/01/27(月) 11:18:44.83 ID:EXjzd9fa.net
- >>134
未来の自分にバグを押し付けるようなやり方は、あまり好きじゃないが……ま、人それぞれか
- 138 :名前は開発中のものです。:2014/01/27(月) 12:25:27.76 ID:qr20Z00A.net
- >>134は、レベル中で発生するオブジェクト最大数をあらかじめ限定してヒープ確保するって手順を想定してた。
※元々の>>124の問題は、ポインタ再取得ってのもあったが
>>135
kwsk
>>137
話が見えんw
- 139 :名前は開発中のものです。:2014/01/27(月) 14:38:03.04 ID:LXwSCF8m.net
- ん?
vectorにインスタンスをaddした後
vectorが要素数増やそうとメモリ上の位置が変わってもnewしたメモリ位置は変わらないよね?
vectorが移動してるだけでvectorのメモリ上の参照してインスタンスを取ってくるわけじゃないから
newした時点でインスタンスのメモリ上の位置は変わらないんじゃないの?
- 140 :名前は開発中のものです。:2014/01/27(月) 15:44:25.62 ID: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;
- 141 :名前は開発中のものです。:2014/01/27(月) 16:15:48.48 ID:0NY/NAUW.net
- 自分は使ったことないんだけど、boostのIntrusiveコンテナってゲーム制作的にはどうなんだろ
- 142 :名前は開発中のものです。:2014/01/27(月) 17:01:18.91 ID:mugBVfcb.net
- オレオレSTLの学習コストが嫌でなければ使ってみてもいんじゃない?
大した利点もなさそうだが、プリミティブはSTL::vector、
クラス・構造体はboost::ptr_vectorとか使い分けるのも悪くないと思う
メモリ断片化が〜とかいう話だったらもういいかげんにしろ
- 143 :名前は開発中のものです。:2014/01/27(月) 17:57:35.18 ID:HdFzU7eb.net
- なんか自信なくなってきたわ
値型(スタック型)を格納してるvectorから、
ある要素の参照(生ポインタ)を取り出しておいた場合、
vectorのリサイズが起きた後はその参照はアテにならなくなる。
っていう話だよな。
vectorに値型そのまま入れるなんて、自分で線形台数用のクラス(それこそ名前がVectorとかになりそうだが)
作ろうと思った時くらいじゃない?
- 144 :名前は開発中のものです。:2014/01/27(月) 18:20:18.10 ID:mugBVfcb.net
- 日本語でOK?
もしプリミティブ型の意味が分からないとしたら、
int, double, float, long, char, short, wcharのことだからな
あらゆるポインタ型も実際はただのintだから同じノウハウで扱える
- 145 :名前は開発中のものです。:2014/01/27(月) 18:35:32.27 ID:HdFzU7eb.net
- ごめん俺は噛み付いたわけでもなくって、プリミティブ型の話でもなくって、
ヒープとスタックの話・・・というのも語弊があるか、
なんつーか、メモリ上への確保の仕方とかメモリレイアウト考えたらこうなるよねって話だったのよ、ごめん
- 146 :名前は開発中のものです。:2014/01/28(火) 00:45:58.29 ID:qfuPw86M.net
- うふふ
- 147 :名前は開発中のものです。:2014/01/28(火) 00:52:07.03 ID:uQ48xUyE.net
- データの使い方によって正しくコンテナ選べばstlだけでも十分
要素がでかくて頻繁に入れ替えが発生してインデックスアクセスがしたいならshared_ptrで包んでvectorにでも入れときゃいい
>>144
64bit環境だとintとポインタのサイズが同じとは限らないから泣くぞ
- 148 :名前は開発中のものです。:2014/01/28(火) 01:18:23.07 ID:ZKatshV9.net
- >>127の日本語のblogでは「PC環境」って訳されてるけど
原文は「non desktop」なんだよな。
前から思ってたんだが、
限定されたハイエンドPC環境で「しょぼい」コンテンツを走らせられるからドヤ顔ってどうよ?
ゲ製道を究めようとしているワコウドを、間違った方向に導いてるって自覚あるか?
無策無能をアピールして幸せか?
- 149 :名前は開発中のものです。:2014/01/28(火) 01:21:24.73 ID:ZKatshV9.net
- 誤:「PC環境」
正:「非PC環境」
くsっそおおおおおおおおお
- 150 :名前は開発中のものです。:2014/01/28(火) 02:11:44.70 ID:IvP/YXMv.net
- 意味分からん
- 151 :名前は開発中のものです。:2014/01/28(火) 10:18:11.91 ID:GoTWhCD+.net
- くだらねーメモリの話なんかあとにしな
- 152 :名前は開発中のものです。:2014/01/28(火) 10:42:27.82 ID:S18aQwZb.net
- >>147
それで64ビット対応出来なかったorz
- 153 :名前は開発中のものです。:2014/01/28(火) 12:23:39.88 ID:OCGZ+qT0.net
- >>151
俺のメモリがサザエさんみてーだとっ!?
- 154 :名前は開発中のものです。:2014/01/28(火) 21:43:15.57 ID:29GW3hhm.net
- 思出話に花を咲かせよう
- 155 :名前は開発中のものです。:2014/01/29(水) 17:24:08.73 ID:zjmYRHvL.net
- >>148
おっちゃん、BeagleBone Blackとかで遊ぼうよ。なかなか楽しいよ?
- 156 :名前は開発中のものです。:2014/01/30(木) 00:48:09.40 ID:Ft4RSVu9.net
- そうだな・・・
Linuxいじるのも大概飽きたが、
画期的な商品開発にでも
いっちょう取り組んでみるか?
しかし発火とかしないよな?www
- 157 :名前は開発中のものです。:2014/02/02(日) 08:52:27.78 ID:txo1/+Rb.net
- 無償のオープンソース・ライブラリも溢れ返っていることだし、
何か良い組合せアイデアでもないもん加納おっぱいおっぱい
ゲ製だと教育、もしくは協力作業を通じた相性判定、もしくはお前ら童貞が最も好きなコンテンツ分野みたいなんになるんかねwww
- 158 :名前は開発中のものです。:2014/02/02(日) 12:41:35.95 ID:8PIr/JRW.net
- 日本語でOK?
- 159 :名前は開発中のものです。:2014/02/02(日) 14:11:43.15 ID:HpiJy6Kg.net
- ヒント:行末濁点、三連草
残念な人が棲み憑いてるんです
- 160 :名前は開発中のものです。:2014/02/02(日) 19:49:39.87 ID:HpiJy6Kg.net
- 濁点→読点
- 161 :名前は開発中のものです。:2014/02/02(日) 20:11:53.27 ID:8PIr/JRW.net
- そんなときにはゲーム爺退散の御札を貼ろう
88 :名前は開発中のものです。:2014/01/24(金) 17:30:23.22 ID:jYeepMxG
さすが中3だ
匿名掲示板で自分の事を勝手に語り始めた
自分が特別な存在であり、周囲より目立って当然であるという厨二病症状が伝わってくる
そんな貴方に対し、先輩として一つ、大人の現実を教えよう
ゲームを作りたければ、プログラミングだけじゃ駄目だ
プログラミングと絵を練習しなさい
音楽が得意なら音楽にも手を付けなさい
絵が描けないまま大人になれば、辿り付く先はゲーム会社のディレクターではなく、過労のIT豚小屋企業だ
さぁ、若者よ、時間が無いぞ
今日からpixivに通うんだ
- 162 :名前は開発中のものです。:2014/02/03(月) 00:20:11.99 ID:v+BnfntH.net
- 何気に、これ正論だよな
他人に企画任せられる環境ならPGだけでいいが
- 163 :名前は開発中のものです。:2014/02/03(月) 00:38:34.47 ID:/+Ylube7.net
- 同人なんてあるもので作るしかないだろ
- 164 :名前は開発中のものです。:2014/02/03(月) 08:14:19.87 ID:Lht//rT6.net
- 最近は絵にも色々種類があるからなぁ
アスキーアート
ドット絵
ローポリ
リアルポリゴン
アニメシェーダ
イラスト
まあAAはほぼ完全に廃れたが
- 165 :名前は開発中のものです。:2014/02/03(月) 09:48:24.68 ID:2oQL0ulv.net
- 2D素材はある程度フリーでまかなえるが、
3D素材は自分で作らないと厳しい。
- 166 :名前は開発中のものです。:2014/02/03(月) 20:57:27.18 ID:0M4cDuVx.net
- 絵にしろ音楽にしろプログラムにしろ
たいして才能の無い凡人が練習したくらいで通用するものなの?
- 167 :名前は開発中のものです。:2014/02/03(月) 21:22:38.34 ID:/+Ylube7.net
- どうせ作ったこともないやつが適当に知ったぶってるだけだろ。相手にすんな
- 168 :名前は開発中のものです。:2014/02/03(月) 21:51:26.39 ID:svmXZgc+.net
- どんな職場で働いてるんだよ
スキルに応じて仕事は分担されてるだろ
何でプログラマが絵を書かなきゃならんのだ
- 169 :名前は開発中のものです。:2014/02/03(月) 22:07:10.79 ID:eCQAtwWs.net
- インディーズでは一人とかの少人数で作ってる事も珍しくないが?
自分の作りたいゲームを作りたいとか、分け前を増やしたいとか、動機は色々だが
- 170 :名前は開発中のものです。:2014/02/03(月) 22:10:32.11 ID:/+Ylube7.net
- 評論家専門君が憶測でそんな話をしてなんになる?
- 171 :名前は開発中のものです。:2014/02/03(月) 22:11:53.17 ID:eCQAtwWs.net
- 一人で作ってますよ?
- 172 :名前は開発中のものです。:2014/02/03(月) 22:15:15.46 ID:xlOVneBM.net
- 専門に在籍中だが確かに1人で作ってるな
チーム制作も1人で作ってるチームが大半だな
絵とか音楽とかのリソースはネットで拾うけどね
でもそれって結局のところは1人で作ってないよね
リソースまで全部っていう意味で1人で作ってる上で有名なのを作ってるんだとしたらただの天才だからどっかの企業に引き抜かれてろ
- 173 :名前は開発中のものです。:2014/02/03(月) 22:27:34.48 ID:eCQAtwWs.net
- なぜ企業に入らないといけないの?
好きに作らせてくれて、好きに売らせてくれるような、夢のような企業があるの?
むしろ、売れ行き重視で好きに作らせてくれない、
倫理観とかが大事で好きに売らせてくれない、
といった企業がほとんどじゃね?
- 174 :名前は開発中のものです。:2014/02/03(月) 22:30:48.05 ID:/+Ylube7.net
- 俺はフリー素材+一部絵師に描いてもらってる
趣味なんだから人それぞれのスタイルでいいだろう
- 175 :名前は開発中のものです。:2014/02/03(月) 22:49:21.68 ID:xlOVneBM.net
- >>173
うん、わかった
自分の生活費さえなんとかできるなら1人で自由に作ってな
- 176 :名前は開発中のものです。:2014/02/03(月) 22:55:48.33 ID:HKt11pxu.net
- はやく仕事辞めてゲーム作りに没頭したい
- 177 :名前は開発中のものです。:2014/02/03(月) 23:24:56.58 ID:/+Ylube7.net
- それは言わないお約束だろ
もっと時間のかからない遊びに流れるのも手だけど
- 178 :名前は開発中のものです。:2014/02/03(月) 23:32:32.16 ID:eCQAtwWs.net
- しかし一番金になりそうな趣味がゲーム作りなんだよな
- 179 :名前は開発中のものです。:2014/02/03(月) 23:37:42.57 ID:eCQAtwWs.net
- 売れてからじゃないと仕事を辞められないのが難点だが
- 180 :名前は開発中のものです。:2014/02/03(月) 23:49:11.10 ID:Ny+RFe0l.net
- お前は金のことばっかりだな
- 181 :名前は開発中のものです。:2014/02/04(火) 00:08:11.00 ID:uJ0GtlwQ.net
- >>180
金持ちに成りたいと考える事は悪い事だと思う?
- 182 :名前は開発中のものです。:2014/02/04(火) 00:23:08.29 ID:J1FJfMJW.net
- スレッドの主旨を考えてくれ。どっかのスレみたいに株の話をされても困る
- 183 :名前は開発中のものです。:2014/02/04(火) 00:33:58.33 ID:uJ0GtlwQ.net
- そうだな……コッチに移るか
【同人】作ったゲームを金にする その4
http://toro.2ch.net/test/read.cgi/gamedev/1336913652/
- 184 :名前は開発中のものです。:2014/02/04(火) 19:06:59.83 ID:uJ0GtlwQ.net
- >>166
昔のゲームはアスキーアートを絵として使ってたわけだが?
- 185 :名前は開発中のものです。:2014/02/04(火) 19:09:55.94 ID:uJ0GtlwQ.net
- しかも音楽はbeep音だw
とはいえbeep音でwevファイルを再生させてた事もあるからあなどれん
- 186 :名前は開発中のものです。:2014/02/04(火) 19:58:16.47 ID:J1FJfMJW.net
- それくらい無いものの中でなんとかしてきたということだな
やれメンツが無能だとかいってたらきりが無いわけだ
- 187 :名前は開発中のものです。:2014/02/04(火) 20:14:51.47 ID:uJ0GtlwQ.net
- >メンツが無能だとか
そういやそれも一人で作るようになる理由の一つだったな
まあ、人数が増えると衝突も増えるからな
むしろあの頃は、DQ1が出る前までは独りで作るのが当たり前だったような……
- 188 :名前は開発中のものです。:2014/02/04(火) 20:22:21.38 ID:J1FJfMJW.net
- "あの頃"から制作してるの?
ひゃあ!ゲーム爺は生涯現役だぜ
- 189 :名前は開発中のものです。:2014/02/04(火) 20:27:51.59 ID:uJ0GtlwQ.net
- 作成はしてない!
が、パソコン持ってないのにパソコン本を買ったりするぐらいに憧れてたな
- 190 :名前は開発中のものです。:2014/02/04(火) 20:41:31.66 ID:uJ0GtlwQ.net
- というか今丁度ドラゴンクエストへの道って漫画を読み返していた所だ
- 191 :名前は開発中のものです。:2014/02/04(火) 20:55:24.69 ID:G5JzxpFK.net
- 伝説級の漫画だよなあれ
- 192 :名前は開発中のものです。:2014/02/04(火) 21:09:48.44 ID:uJ0GtlwQ.net
- うん、長編ゲームを作る人には是非とも読んで欲しい
- 193 :名前は開発中のものです。:2014/02/06(木) 07:38:03.22 ID:Mklm8P+v.net
- 読めば読むほど
中村光一氏がDQ抜けたのが悔やまれる。
お色気コンテンツに憤慨していたエピソードは笑える。
- 194 :名前は開発中のものです。:2014/02/06(木) 20:33:21.38 ID:wgo5Jh7Q.net
- ドラゴンナイトやカオスエンジェル以前のエロゲだよな?興味はあるな
- 195 :名前は開発中のものです。:2014/02/06(木) 21:01:16.01 ID:YaLd/g6Z.net
- 軽井沢なんとかのことだろうかw
- 196 :名前は開発中のものです。:2014/02/06(木) 21:10:32.33 ID:wgo5Jh7Q.net
- 複雑な操作や手抜きグラフィックに怒ったりしてた話やね
- 197 :名前は開発中のものです。:2014/02/09(日) 03:20:30.53 ID:yNPMLa+Y.net
- 中村光一って不思議のダンジョンシリーズ一発屋で終わったな
- 198 :名前は開発中のものです。:2014/02/09(日) 03:48:09.82 ID:n/hHVigC.net
- 高校時代から名作を生み出してる中村光一が一発屋……?
- 199 :名前は開発中のものです。:2014/02/09(日) 03:53:10.61 ID:CEeCxVwx.net
- まぁウィザードリィみたいに不思議のダンジョンを伝統化しようとして
燃え尽きた印象があるな
一発屋というより、沢山あった弾を同じ場所に撃ち込んじゃった感じ
- 200 :名前は開発中のものです。:2014/02/09(日) 04:22:56.68 ID:eECi/LC1.net
- ドアドアいまいちだったけど
あの時代にスクランブルを完全移植した情熱の炎は、そう簡単には消えないさ!
俺は信じてるぜ!
- 201 :名前は開発中のものです。:2014/02/09(日) 16:33:33.68 ID:Om4RLWnj.net
- 今C言語でオセロゲームを作成中なのですが、AIを作るところで行き詰ってしまいました。
とりあえずminiMax法で作ろうとしており参考にしているサイトのURLは
http://hp.vector.co.jp/authors/VA015468/platina/algo/2_2.html
です。
このサイトの
for(最初の子節点の手; 未評価の子節点がある; 次の子節点に移る)
という部分を見る限り先に子節点がいくつあるのか調べておく必要があると思うのですが
その解釈でよろしいですか?
- 202 :名前は開発中のものです。:2014/02/09(日) 16:43:02.64 ID:c5g9RcWt.net
- >>201
先に子節点を調べなくてもできるけど
先に調べておかないと置けないにも拘わらず置くかどうかを計算するから無駄な計算が増えるし、バグで置いた場合に何処でバグが発生してるのか調べるのが大変になる
- 203 :名前は開発中のものです。:2014/02/09(日) 16:50:59.29 ID:Om4RLWnj.net
- >>202
ありがとうございます。
先に子節点を調べることにします。
調べる上で、次の子節点を調べるときにその前に調べた子節点以外から探す方法が
よくわからないのですが、どのような実装を行えばいいでしょうか
- 204 :名前は開発中のものです。:2014/02/10(月) 08:15:56.04 ID:EeAxagpY.net
- 木構造の探索はスタック使うと楽
再帰処理で実装するといいよ
- 205 :名前は開発中のものです。:2014/02/10(月) 16:50:10.78 ID:r9rJHs9v.net
- >>204
スタックとはどのようなものかはわかりますが、実装法などは全くわかりません。
二分木なら
typedef struct node_t{
typedef struct node_t *left;
typedef struct node_t *right;
int data;
}NODE;
のようにすればいいと思うのですが、探索となると多分木になると思うので
同じようには実装できませんよね?
- 206 :名前は開発中のものです。:2014/02/10(月) 17:57:20.00 ID:zYS9MiyX.net
- typedef struct node_t{
struct node_t *child;
struct node_t *next;
int data;
}NODE;
- 207 :名前は開発中のものです。:2014/02/10(月) 18:19:16.50 ID:r9rJHs9v.net
- >>206
つまり二分木と同じ実装法で見方を変えるということですか?
- 208 :名前は開発中のものです。:2014/02/10(月) 19:22:37.65 ID:zYS9MiyX.net
- 多分木を表現できるデータ構造の一例ってだけだよ
要件は、多分木であることと、ルートから葉に向かって再帰的に処理できること、でしょ?
その要件に足るようなデータ構造で自分の使いやすいものを選択すればいい
- 209 :名前は開発中のものです。:2014/02/11(火) 10:42:36.42 ID:MuB9VwbG.net
- 三角関数を使ったカメラの回転が上手くいきません・・・
横回転は綺麗に回るんですが、縦回転がY軸しか動かず変な動きになります
分かりやすく解説してるとこは無いですか?
- 210 :名前は開発中のものです。:2014/02/11(火) 14:18:07.24 ID:EVFbkSHB.net
- >>209
クォータニオンで球面線形補間すると
理論はよく分からないけど何故かうまくいくよ
- 211 :名前は開発中のものです。:2014/02/11(火) 14:32:23.80 ID:pu0dsTgx.net
- ビューの回転は注視点を移動させた後に組み直せばいい。
- 212 :名前は開発中のものです。:2014/02/11(火) 22:12:14.10 ID:sWtHnyX5.net
- >>210-211
ありがとう、ちょっと見てみたんですが、
私のコードは三角関数メインなので行列の理解が追いつきませんでした
根本のコードの変更も考えてみます
- 213 :名前は開発中のものです。:2014/02/21(金) 22:16:42.52 ID:WPj1YKPY.net
- 船のゲーム創りたいんですが、
どういう考え方で波を作れば船が上下したり傾いたりするでしょうか?
波を表すメッシュの頂点にベクトルを紐付けて、それを隣の頂点に伝搬する・・・
みたいな事は想像してるんですが、あんまりうまくないというか、
あまり効率的ではないですよね?
いい方法ないですか?
- 214 :名前は開発中のものです。:2014/02/22(土) 05:41:07.36 ID:zZnD13Ju.net
- >>205
2分探索木を自分で作らなくても、ライブラリにあるでしょ?
B-Tree(self-balancing search tree)平衡2分探索木
B+Tree、赤黒木など
キューやスタックも、ライブラリにあるでしょ?
優先度つきキュー(priority queue)はよく使うよ
詳細はWikipediaなどで、調べて
- 215 :名前は開発中のものです。:2014/02/22(土) 10:17:30.51 ID:YdhdLZfz.net
- >>213
なんちゃって水面は基本的にはそういう作り方だよ。バネダンパの二次元格子。
お船は、近傍の格子の頂点や面に反発させてどんぶらこさせればいいやという。
トライアル&エラーでパラメータ適当にいじって見た目の調整。おしまい
あ、リアル志向のゲームは何やってるのか知らないよ。学生時代に数値流体
やってたけど、あっちに凝り出すと際限がないからみんなどっかで折り合い
付けて端折ってそれっぽく見せてるだけだと思うよ
- 216 :名前は開発中のものです。:2014/02/22(土) 10:56:40.26 ID:4BDQmNHU.net
- DirectComputeのサンプルをみると、パーリンノイズから低周波成分を取り除いて地面全体に繰り返し、ハイマップとして地面に適用してるみたい
- 217 :名前は開発中のものです。:2014/02/22(土) 11:39:42.84 ID:YdhdLZfz.net
- >>216
DX7以前の頃だとテクスチャを2枚用意してマルチテクスチャにして
UV値の操作で各々のテクスチャを交差するように移動させると水面ぽく
見せられるよー的なやり方が多かったけど、あれをハイトマップにも
使う感じかな?
- 218 :名前は開発中のものです。:2014/02/27(木) 22:01:09.66 ID:XfV+syCM.net
- イケメンがいい
- 219 :名前は開発中のものです。:2014/02/28(金) 02:45:29.15 ID:WKCAf0/q.net
- >>218
鏡を見てため息をつけばいいと思う
- 220 :名前は開発中のものです。:2014/03/01(土) 15:31:28.07 ID:xOOTC3SX.net
- c++で別のクラスの数値が欲しいときはメソッドに相手クラスのポインタ変数を持ってコンストラクタでポインタを渡せばいいのですか?
- 221 :名前は開発中のものです。:2014/03/01(土) 15:36:42.26 ID:ckzLhO0U.net
- コンストラクタ?
- 222 :名前は開発中のものです。:2014/03/01(土) 17:29:52.27 ID:P6ZwcTGw.net
- コンス卜ラクタはコンス卜ラクタなんじゃ…?
- 223 :名前は開発中のものです。:2014/03/01(土) 17:49:25.00 ID:ckzLhO0U.net
- ああ理解した、メソッド→メンバか
メンバ関数にポインタ変数を渡して…何でここでコンストラクタ??って思った
- 224 :名前は開発中のものです。:2014/03/01(土) 23:00:27.16 ID:B/y6lyvX.net
- >>220
メンバにポインタ持たせてもいいし、相手クラスを継承してしまうとか、
その数値が必要になる関数の引数に、ポインタや参照で渡したり、
数値そのものを引数で渡すだけでも、好きなのでいいと思うよ
- 225 :名前は開発中のものです。:2014/03/02(日) 01:12:07.39 ID:One/ooAB.net
- で、どこにゲーム関係あるの?
- 226 :名前は開発中のものです。:2014/03/02(日) 18:14:52.71 ID:eSGAMgB8.net
- 暗号化した外部ファイルとかセーブファイルの拡張子ってどうしてる?
foobarとかhogeみたいに意味のない文字なのがベストなんだけど
既存で使われているdatとかsavだと既になんらかの関連付けが
されてしまってる場合がありえるよね
- 227 :名前は開発中のものです。:2014/03/02(日) 18:30:57.68 ID:RKme8rWA.net
- ユーザが開くことを前提としないなら気にしない。
- 228 :名前は開発中のものです。:2014/03/02(日) 18:34:29.49 ID:eSGAMgB8.net
- そうか、むしろ無しでもいいか
- 229 :名前は開発中のものです。:2014/03/02(日) 19:12:19.16 ID:odwxDc0w.net
- というか、ユーザーでもすぐ「あ、これがセーブファイルだな」と判るようにしておいたほうがいいだろ。
データのバックアップを取りたいことあるだろうし。
- 230 :名前は開発中のものです。:2014/03/02(日) 19:15:46.36 ID:Oh6AuFJG.net
- 何でも.dbにしてる
- 231 :名前は開発中のものです。:2014/03/02(日) 19:21:49.81 ID:XPJItCw9.net
- bin
- 232 :名前は開発中のものです。:2014/03/02(日) 20:11:55.85 ID:uIAHAPdg.net
- http://gyazo.com/c12e1b45288577f41bce47f9a3c3b457.png
マルチスレッドってオブジェクトリストの更新中に
オブジェクトリストを参照できないんだから意味なくないですか?
どうしてマルチスレッドで動作が軽くなるんですか?
セマフォをオブジェクト単位でかけてたらセマフォの処理で余計重くなるのでは
- 233 :名前は開発中のものです。:2014/03/02(日) 20:20:19.85 ID:9+Akgo4p.net
- ダブルバッファで検索するんだ
- 234 :名前は開発中のものです。:2014/03/02(日) 20:21:15.86 ID:Oac8ta12.net
- 誰か使ってないですかねぇ
http://oxygine.org/
- 235 :名前は開発中のものです。:2014/03/02(日) 20:51:20.45 ID:uIAHAPdg.net
- >>233
画面のチラツキを抑えるほうが出てきて、出てきても申し訳程度の説明しかない・・・
http://www.cs.tsukuba.ac.jp/~yas/cs/csys-2007/2007-12-14/
>◆ダブルバッファリング
> 整数を1つバッファに書き込むだけでロック/アンロックを行なっていると、 実際の並列処理では重たい。
> ロックの回数を減らすために、ダブルバッファリ ングと呼ばれる技術がよく使われる。読み手と書き手で別々にバッファをもうけ、1つのバッファの処理をしている間は、ロックを行なわない。
リストで1つのオブジェクトを更新してる間は「描画スレッドが使っちゃだめですよフラグ」でもたてるのか?
それを参照する時点でスレッドセーフじゃなさそうだけど
それともリスト内の全部のインスタンスのコピーを毎フレーム作るのか?
- 236 :名前は開発中のものです。:2014/03/02(日) 20:59:31.72 ID:uIAHAPdg.net
- あいや、これは循環バッファ?というやつでダブルバッファとは違うのか
- 237 :名前は開発中のものです。:2014/03/02(日) 22:59:32.88 ID:bJnQrcsZ.net
- 計算したデータを参照渡しせずに、値渡しすればいいだけの話
- 238 :名前は開発中のものです。:2014/03/02(日) 23:13:50.02 ID:0kUNTeet.net
- マルチスレッドを効果的に使う場面は、
BGM,効果音など
背景の処理、草や木が風でゆらゆらする
シェダー関係もそう
- 239 :名前は開発中のものです。:2014/03/02(日) 23:15:24.40 ID:YZ+wwGoZ.net
- インスタンスのセットを2つ(AとBとする)作っておいて
・描画スレッドがAの状態を使用して描画している間、更新スレッドは
Aの状態をもとに更新後の状態をBに作成する。
・両方が完了したらAとBをスワップする
って方法かなぁ
>>232の図で言えば、Subスレッドが描画している間に
Mainスレッドがもう次のフレームの接触判定を処理し始めてる感じ
- 240 :名前は開発中のものです。:2014/03/02(日) 23:23:34.37 ID:bJnQrcsZ.net
- 計算したデータを描画用のバッファに積んで、描画処理に引き渡せばいいだけ。
なんで単純に出来ることを複雑にやろうとするんだ?
- 241 :名前は開発中のものです。:2014/03/02(日) 23:31:43.29 ID:Oh6AuFJG.net
- >>231
.binはlinuxの.exeって感じでデータっぽくない
- 242 :名前は開発中のものです。:2014/03/02(日) 23:37:13.73 ID:Oh6AuFJG.net
- >>234
面白そうだけど利用者ほとんどいないようだし、すぐに消えそうだな
cocos2dのほうが良いよ
- 243 :名前は開発中のものです。:2014/03/02(日) 23:44:39.24 ID:Oh6AuFJG.net
- >>239
それって概念的には全てのインスタンスx2だけど、
描画スレッドは描画に関するデータ(それも画面内に入るもの)だけあれば良いから
実際には必要なメモリ量を削った実装で実現できるな
- 244 :239:2014/03/03(月) 00:29:47.75 ID:+ppeC4rH.net
- >>243
確かにそうだ
そして多分それが>>240が言っている
「計算したデータを描画用のバッファに積んで、描画処理に引き渡」す
ってのに近いのかも
この辺で思ったんだが、もしDirectX11を生で叩いてるなら
DeferredContextとか使うといいのかな
- 245 :名前は開発中のものです。:2014/03/03(月) 00:38:44.19 ID:/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);
}
};
- 246 :名前は開発中のものです。:2014/03/03(月) 07:13:32.62 ID:mjyyGJWK.net
- 一フレームぶんのバッファに積み終わってから引き渡せばいいだけの話。
引き渡したら描画を描画スレッドにやらせて、計算スレッドは次の計算に入ればいい。
なんで単純で簡単なことを複雑に考えるのか、さっぱり理解できない。
そもそも描画順序などを考えると、座標がすべて確定した後で無ければ、
描画処理なんて出来ないのに、なんで計算直後にチマチマ描画しようという発想になってるんだ?
毎フレームnewとかも、嫌なら最初からある程度の領域を作っておけばいいだけの話で、
そんな簡単に解決できるどうでもいいことをイチイチ聞く意味が分からない。
なにこの思考能力の欠如?
- 247 :名前は開発中のものです。:2014/03/03(月) 07:44:19.21 ID:+ppeC4rH.net
- 別の書き方は出来ないのかあんたは
- 248 :名前は開発中のものです。:2014/03/03(月) 08:19:00.54 ID:/CdxWaD8.net ?BRZ(10000)
- sssp://img.2ch.net/ico/u_01.gif
http://gyazo.com/7984315b649ca2378a5b63989ada2874.png
図で確認するとこんな感じ?
ロックの仕方がよくわからんけど、
メインスレッド側のバッファは描画スレッドに必要な情報(頂点とか)いらないからトントンになるのかな
そうすると、毎フレームnewするより保持してたほうが楽そう
描画スレッドはモデルの頂点の展開とかやらずに文字通りZバッファに登録するだけだったりする?
- 249 :名前は開発中のものです。:2014/03/03(月) 14:38:46.71 ID:7XSFdIT2.net
- >文字通りZバッファに登録するだけだったりする?
意味不明
- 250 :名前は開発中のものです。:2014/03/03(月) 20:28:03.25 ID:+ppeC4rH.net
- >>248
使ってるライブラリ教えて
- 251 :名前は開発中のものです。:2014/03/04(火) 00:42:30.15 ID:tv4RC6nv.net
- なんか描画スレッド分けるのがマルチスレッドみたいな流れになってるけど
処理の分割しないと複数コアの性能いかせないよね
>>238以外にも分割出来るところはあるんじゃないの
AIなんかのフレームと分けられる箇所が効果的だとは思うんだが
- 252 :名前は開発中のものです。:2014/03/04(火) 00:54:00.93 ID:Tkd6LlXd.net
- >>248
君はレベルが低すぎる。基礎的なことすら理解していないようだから
身の丈に合った技術で制作するべきだ
- 253 :名前は開発中のものです。:2014/03/04(火) 01:01:46.35 ID:Tkd6LlXd.net
- ゲームロジック以外については定番のパターンがあるわけで、
ゲームロジックについてはゲームの性質次第だから汎用的な議論はできん
- 254 :名前は開発中のものです。:2014/03/04(火) 01:12:12.33 ID:eUCtnBam.net ?BRZ(10000)
- sssp://img.2ch.net/ico/u_01.gif
>>250
DXライブラリです
- 255 :名前は開発中のものです。:2014/03/04(火) 01:22:03.26 ID:eUCtnBam.net
- >>252
そんなこと言わないで><
- 256 :名前は開発中のものです。:2014/03/04(火) 01:45:49.24 ID:MGr4iOMf.net
- 身の丈に合った技術で満足してたら俺みたいに全然成長しないままになるしいいんじゃね?
- 257 :名前は開発中のものです。:2014/03/04(火) 03:19:20.41 ID:NSoGUl2d.net
- 自称デキル人の大半はエセ
バグ生産しまくるのは得意みたいだがw
無視するに限るよ(ry
- 258 :名前は開発中のものです。:2014/03/04(火) 03:24:44.21 ID:6r8+3FgW.net
- >>256
満足するならなw
- 259 :名前は開発中のものです。:2014/03/04(火) 09:14:16.41 ID:Tkd6LlXd.net
- いまどきDXライブラリの初心者でマルチスレッドの基礎も理解してないのに
無理に背伸びした結果が「文字通りZバッファに登録するだけだったりする?」
格好ばかりつけて内容がなさすぎだろ
上で新技術OpenMPとかドヤってたやつといい、もう少し自惚れを抑えて
真摯な姿勢で学ばんと時間の無駄だよ
- 260 :名前は開発中のものです。:2014/03/04(火) 09:15:50.51 ID:A1Dcjr5j.net
- そもそもグラボの基礎から学びなおせ。
明らかにZバッファが何か分かってないだろ。
- 261 :名前は開発中のものです。:2014/03/04(火) 12:24:51.64 ID:VEfOUnzL.net
- >>254
Zソートの機能があるライブラリって訳じゃ無いのね
- 262 :名前は開発中のものです。:2014/03/04(火) 21:19:35.34 ID:eUCtnBam.net ?BRZ(10000)
- sssp://img.2ch.net/ico/u_01.gif
>>261
アルファ値がある面だけZソートして、不透明な面の後から描画しています。
マルチスレッドの基礎はわかりませんが、
勉強目的で実装してみようかなと考えて、疑問点があったので質問しました。
質問の内容に戻りたいのですが、
メインスレッドではオブジェクトの座標だけ計算して、
描画スレッドでオブジェクトの座標からモデルの頂点等を展開すると
メインスレッドと描画スレッドが共有する値が少なくなっていいかなと考えたんですが、
実際に使われているスタンダードな方法とかあれば教えていただけると助かります。
- 263 :名前は開発中のものです。:2014/03/05(水) 00:56:58.44 ID: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;
};
- 264 :名前は開発中のものです。:2014/03/05(水) 00:58:26.26 ID:vvepHaRA.net
- Lock g_sync; // winならクリティカルセクション、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);
....}
}
- 265 :名前は開発中のものです。:2014/03/05(水) 01:01:42.52 ID: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;
}
- 266 :名前は開発中のものです。:2014/03/05(水) 01:07:10.79 ID: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スレッドしかテクスチャーとかの生成と破棄ができないのだが、
ロジック側の要請をキューにしてメッセージパッシングするのは
少し複雑な実装になるこった。
- 267 :名前は開発中のものです。:2014/03/05(水) 16:23:12.96 ID:x8H/gaMj.net
- ideoneとかcodepadとか使えばよかったのに
- 268 :名前は開発中のものです。:2014/03/05(水) 20:45:55.74 ID:6x2/6ZGn.net
- sleepってなくてもいいもんなの?
- 269 :名前は開発中のものです。:2014/03/05(水) 21:47:30.12 ID:6x2/6ZGn.net
- マルチスレッドプログラミングの基本について書いてる記事があった
http://www.kumikomi.net/archives/2005/02/02multi.php?page=1
組み込みのサイトだけど基礎だからゲーム製作にも役立つかな
まあこれ見ても具体的な実装なんてさっぱりわからんけど
- 270 :名前は開発中のものです。:2014/03/05(水) 22:22:10.31 ID:vvepHaRA.net
- マルチスレッドプログラミングしなくてもいいじゃん
- 271 :名前は開発中のものです。:2014/03/05(水) 22:28:07.13 ID:xpm2EzP6.net
- 起動時のスプラッシュ画面を出すときに欲しくなるんじゃない?(適当)
- 272 :名前は開発中のものです。:2014/03/06(木) 22:54:49.68 ID:wXpbFvTO.net
- マルチスレッドと言えばQtのQMutexLockerはとても便利だった
ミューテックスのロックとアンロックが一行でできる
- 273 :名前は開発中のものです。:2014/03/06(木) 23:58:17.76 ID:g6URqktg.net
- >>266
書いてくれて嬉しいですが、処理の流れが見えないですね・・・
swapは裏画面と表画面を入れ替えてるというのはわかるんですが
ロジック側も入れ替えるんですか?
layerとかchainとか何を指してるのかイマイチわからないです・・・
g_sync.lockというのはロック出来るまで待機すんるでしょうか?
そうするといい感じに交互に処理できそう?
- 274 :名前は開発中のものです。:2014/03/07(金) 16:53:26.89 ID:fjndePR8.net
- だから基礎知識のないやつに教えてもこうなるだけだと言ったろう?
時間の無駄だから諦めたほうがいい
- 275 :名前は開発中のものです。:2014/03/07(金) 18:45:58.30 ID:p/ke0iDn.net ?BRZ(10000)
- sssp://img.2ch.net/ico/u_01.gif
マルチスレッドで描画しているゲームで、FPSが60以上出るゲームがあるけど
あれって一秒間に60回以上オブジェクトの更新しているってこと?
それとも更新側も全力でループ回して、前フレームからの経過時間を測って処理落ちにも対応する感じ?
- 276 :名前は開発中のものです。:2014/03/07(金) 19:37:40.45 ID:fjndePR8.net
- シングルスレッドでも余裕で1000FPSでますよ?
すっげー爆速だー()
- 277 :名前は開発中のものです。:2014/03/07(金) 19:48:26.65 ID:DRlt5uyo.net
- 1フレームの処理に16ミリ秒も使えるんだぜ
16,000マイクロ秒だぜ
16,000,000ナノ秒だぜ
- 278 :名前は開発中のものです。:2014/03/07(金) 20:16:57.82 ID:fjndePR8.net
- XNAは50FPS推奨だったような気がする
俺もなんとなく50FPSで同期とってる
- 279 :名前は開発中のものです。:2014/03/07(金) 21:10:47.46 ID:p/ke0iDn.net
- 1000FPSでたってモニタがせいぜい120FPSまでしか対応してないじゃん(´・ω・`)
- 280 :名前は開発中のものです。:2014/03/07(金) 21:28:42.22 ID:EnJ3GPFi.net
- >>279
見た目はそうだけど、例えば 当たり判定があるなら、見えない部分でも計算処理がなされる。
- 281 :名前は開発中のものです。:2014/03/07(金) 21:44:38.99 ID:Gh0ocgNA.net
- だから、それに何か意味があるのか?
フレーム飛ぶだろ。
- 282 :名前は開発中のものです。:2014/03/07(金) 21:54:40.27 ID:5nTupHrf.net
- 裸の王様的当たり判定
- 283 :名前は開発中のものです。:2014/03/07(金) 22:08:10.09 ID:7HkmM3vq.net
- >>281
あくまで精度を高めるための処理であって、フレーム飛ぶとかは関係なくね?
よくあるネタとして、毎フレーム32ドットで飛んでいく弾丸は、
大きさ30ドットの敵キャラをすり抜けちゃうとか、そういうやつ。
- 284 :名前は開発中のものです。:2014/03/07(金) 22:42:09.70 ID:fjndePR8.net
- そういうやつで、あんなやつで、いいかんじに、そんなかんじみたいな?
- 285 :名前は開発中のものです。:2014/03/07(金) 22:50:16.12 ID:fjndePR8.net
- 画面は秒間60回、ロジックは秒間100回更新するより時間差分を使うほうが
一般的じゃないかな。アニメーションなんかでは。
ちなみにマウスを使ったお絵描きソフトをつくると60FPSでは
線が途切れてしまうわけだけど、こちらでは更新回数を増やすのではなく
前回の座標と今回の座標の差分から埋め合わせを計算するのが普通。
- 286 :名前は開発中のものです。:2014/03/07(金) 22:53:06.64 ID:EnJ3GPFi.net
- マルチスレッドが有効利用できる部分と、利用できない部分がある。
効率的にマルチスレッド化出来る事が限られている。
そして、CPUが4コアであっても 決して4倍には成らない。
- 287 :名前は開発中のものです。:2014/03/07(金) 22:55:14.98 ID:RMnLXnbR.net
- 「目に見えなくて意味がない部分を省略する」メリットよりも
「あらゆる状況に対応できる」メリットを優先するってだけの話じゃ。
- 288 :名前は開発中のものです。:2014/03/07(金) 22:56:53.08 ID:Gh0ocgNA.net
- さっぱり言ってることが分からんわ
単にCPUに余裕があるって話なら分かるけど。
それと1000FPSになんの関係があるんだ?
処理を1000回やるのと1000FPSは意味が違うだろ。
- 289 :名前は開発中のものです。:2014/03/07(金) 23:09:10.35 ID:fjndePR8.net
- アホの子はマルチスレッドを使うことが目的化しているなw
「マルチスレッドでCPU性能を限界まで引き出す(ドヤ」
これからはマルチスレッド・ボーイと名乗りなさい
- 290 :名前は開発中のものです。:2014/03/07(金) 23:21:09.90 ID:ZsI9fYzN.net
- マルチスレッドを勉強したいんだろうしそれが目的でいいんじゃねえの
- 291 :名前は開発中のものです。:2014/03/07(金) 23:31:09.17 ID:7HkmM3vq.net
- >>288
フレームという単位は、確かに元は映像や画像処理の世界の言葉だが、
ゲーム系では映像の出力の他にも、処理の単位(要はループ数)として使われることがある。
どっちの意味で言ってるかは文脈による。
- 292 :名前は開発中のものです。:2014/03/07(金) 23:40:19.37 ID:Gh0ocgNA.net
- 本当にこいつの言う話は意味不明。
マルチスレッド?jは?何言ってるの?
- 293 :名前は開発中のものです。:2014/03/08(土) 00:03:16.81 ID:C0+dE/Sc.net
- はっはっはっはっは
教えて君の相手をしていても進歩がなさそうだ
- 294 :名前は開発中のものです。:2014/03/08(土) 00:06:45.46 ID:GqQre2H1.net
- 単発で何やってるんだよ。
恥ずかしいやつだな。
こんな過疎スレで自演しても意味ないぞ
- 295 :名前は開発中のものです。:2014/03/08(土) 00:11:20.12 ID:C0+dE/Sc.net
- 一体何が単発で何が自演しているというのだろう?
まず、>>275が振った話題にレスが続いてること理解してる?
- 296 :名前は開発中のものです。:2014/03/08(土) 00:14:00.22 ID:GqQre2H1.net
- 図星だしたか?ID:fjndePR8君
- 297 :名前は開発中のものです。:2014/03/08(土) 00:15:32.48 ID:C0+dE/Sc.net
- 日付が変わればIDは変わる。それはお前も同じことだが知らんのか?
わかったら、敗者は立ち去られよ
- 298 :名前は開発中のものです。:2014/03/08(土) 00:16:46.34 ID:GqQre2H1.net
- ???本当に馬鹿だなお前w
- 299 :名前は開発中のものです。:2014/03/08(土) 00:20:10.92 ID:9lZ7NGbh.net
- 本当に恥ずかしい流れになってきたw
- 300 :名前は開発中のものです。:2014/03/08(土) 00:21:58.27 ID:C0+dE/Sc.net
- レス番号と根拠を述べない限り、お前は意味不明なことをいってる糖質にしか見えないが?
追い詰められて苦し紛れに「バーカ」とか「アーホ」と一行レスで煽ってるだけじゃんw
- 301 :名前は開発中のものです。:2014/03/08(土) 00:24:33.75 ID:GqQre2H1.net
- つ鏡
- 302 :名前は開発中のものです。:2014/03/08(土) 00:28:32.27 ID:C0+dE/Sc.net
- ほら、何も反論できないだろ?突然「単発で自作自演をして、うんぬん」と人を批判するが
「どのレスがそうなんですか?」と聞き返されて「お前馬鹿だろw」「つ鏡」などと
意味不明な返答を繰り返す。
わかったら、敗者は立ち去られよ
- 303 :名前は開発中のものです。:2014/03/08(土) 00:31:28.03 ID:X9SC3wUQ.net
- 皆何と戦っているのん・・・
- 304 :名前は開発中のものです。:2014/03/08(土) 01:44:30.85 ID:Vx2VozQo.net
- ……単発で自演って日付またいだからID変わっただけだろうに……。
- 305 :名前は開発中のものです。:2014/03/08(土) 08:06:01.61 ID:PSYFRGtR.net
- 結局275はどういうことなの
- 306 :名前は開発中のものです。:2014/03/08(土) 09:53:27.60 ID:tPkg4yd1.net
- ★フレームレート(fps)の方法には幾つか種類がある
@固定fpsで、リミッターにより fpsの上限で固定してしまうもの。
AV-SYNCによって固定する、ゲーム機などであり確実に固定する。
B可変fpsにし、fps値が変化しても同じ速度で挙動するもの。
ゲームエンジンが 一般的にゲームループを形成しており、
ループの回転数(fps)を計測する。
PCの処理速度が不安定であり、状況により常に変動している。
ゲーム内では処理の負荷変動に関係なく処理速度を一定にしたい。
@固定fps方法、設定のfpsを越えないように上限値を決める方法、
単純な解決方法です。設定fpsを下回る場合は処理落ちになる。
AV-SYNC方法、これはリミッターと同じですが、
画面の同期にハード的に合わせてリミッター処理します、
ですから、設定fpsが常に安定している。しかし、
画面同期が変更されると困る。ゲーム機などに多い。
B可変fps方法、これはゲームループの回転速度に反比例して
ゲーム内の速度を制御します。よって、fpsが変化しても
ゲームの速度に影響がありません。こうすると
非力PCでもささやかに動き、高級PCでも豪華に動く。
また、以上の組合せの方法もあり、条件によって選択が違ってくる。
- 307 :名前は開発中のものです。:2014/03/08(土) 09:55:48.75 ID:xv4QLBh4.net
- ティアリングと絡めて
- 308 :名前は開発中のものです。:2014/03/08(土) 15:47:21.74 ID:C0+dE/Sc.net
- ガッシ、ボッカ、マルチスレッド・ボーイは逃走した(スイーツ)
- 309 :名前は開発中のものです。:2014/03/08(土) 16:31:15.28 ID:cTFUFLMT.net
- >>307
「ゲームプログラマーになる前に覚えておきたい技術」のページ127から140を読んでもらいたい
図書館にあると思う
- 310 :名前は開発中のものです。:2014/03/08(土) 19:20:22.65 ID:vzxofO6Y.net
- >275は、>279から推測すると
おそらく画面描画の単位としてのフレームと、処理の単位としてのフレームを混同してる
- 311 :名前は開発中のものです。:2014/03/08(土) 20:06:53.16 ID:C0+dE/Sc.net
- フハハハハハハハハ
- 312 :名前は開発中のものです。:2014/03/08(土) 20:50:35.38 ID:YGGwUpNn.net
- >>309
死ね
- 313 :名前は開発中のものです。:2014/03/08(土) 23:21:33.13 ID:Sq36ONOT.net
- 格闘ゲームは60fpsじゃないと古参のファンに叩かれるそうな
- 314 :名前は開発中のものです。:2014/03/09(日) 00:09:52.59 ID:IyeEnt/7.net
- このスレは熱いな
- 315 :名前は開発中のものです。:2014/03/09(日) 00:18:56.78 ID:zp5zMRCB.net
- ゲ製にしては良い流れだ
- 316 :名前は開発中のものです。:2014/03/09(日) 00:35:14.60 ID:UV7RBW8A.net
- なんにせよゲーム内時間の指標となる数値は必要だよね?描画は別としてね
昔に作ったやつは特に深く考えることなく60FPS基準にしてて、
「このエフェクトは1秒間かけたいから設定値は60(フレーム)にしよう」
とかやってたけど、ゲーム内の時間と描画を切り離して考えてなかったから
倍速にしたいときにFPS120にして1フレごとフレームスキップするとか
トンチンカンなことやってたんだよね
(FPS設定値が描画回数と一緒にゲーム内の速度に影響してしまってた)
設定値は素直に、ゲーム時間としては「再生速度 * 秒数(ミリ)」で設定して
描画としてFPS(描画/秒)を使うべきだねぇ
- 317 :名前は開発中のものです。:2014/03/09(日) 10:22:07.75 ID:zp5zMRCB.net
- それ、具体的には、デルタタイム(前回更新からの時間差分)を使うのが
一般的だと思うぞ。
もっと原始的にやるなら、画面が50FPSだとキリがよくて、ロジック側もループ回数で
単純計算しやすいかなとは思うんだけど、その延長線上の考え方として
マルチスレッドで秒間100回更新するというのは止めたほうがよいね。
- 318 :名前は開発中のものです。:2014/03/09(日) 12:52:15.87 ID:n5K2fLn8.net
- 普通のHDMIとかパネルの駆動が60Hz辺りなんだから
EU圏のゲーム機でもなきゃわざわざ50を選ぶ理由ないけど
ロジックを高速にするならゲームパッドのサンプリング周期も考慮した方がいいかもね
マウスも非常に速いのあるけど画面とは綺麗な整数倍にならないし
- 319 :名前は開発中のものです。:2014/03/09(日) 13:48:11.02 ID:hgm9uEQE.net
- シングルスレッドのかずき君は去ったようだ
- 320 :名前は開発中のものです。:2014/03/09(日) 15:16:30.96 ID:a5thyH8B.net
- います!
- 321 :名前は開発中のものです。:2014/03/09(日) 15:55:13.60 ID:UV7RBW8A.net
- >>317
ネトゲとかアクションじゃない限り、ゲーム内時間は現実のデルタタイムに
影響されないようにした方が混乱しないんじゃね?
Unityのチュートリアルなんかだと、「移動距離 = Δ * speed」みたいなやり方を見るんだが、
俺達みたいに自分でゲームループを制御する場合は、ゲーム内時間とリアル時間を結びつけるために
ループ内でSleep入れて、ゲーム内の「最小単位時間」は常に同一になるように調整した方がわかりやすいと思う
- 322 :名前は開発中のものです。:2014/03/09(日) 16:30:12.84 ID:zp5zMRCB.net
- ではその場合、画面が60FPSで更新されるとして、
常に17msの倍数でウェイトやアニメーションを行うことになるな。
別にそれはそれで単純でよいが、海外のゲームエンジンとかライブラリだと
デルタタイムでタイムライン処理するのがデファクトな印象ではある。
- 323 :名前は開発中のものです。:2014/03/09(日) 17:36:09.54 ID:UDo1KJJD.net
- ここ日本
- 324 :名前は開発中のものです。:2014/03/09(日) 18:05:51.13 ID:zp5zMRCB.net
- UnityとかFlashもタイムラインだし、デファクトに則るのが良いと思うが、
フレームワーク・ライブラリ整備されている前提でないと
むしろ手間かかるというのはあるな
SDLやDXライブラリでそのままでゴリゴリ書いちゃってるような状況なら
原始的な手法がいんじゃまいか
- 325 :名前は開発中のものです。:2014/03/09(日) 22:16:48.95 ID:ai4yRe81.net
- 時間固定で動くゲームって今ほとんどないんじゃない?
3Dのゲームは大概処理落ちするとコマ送りになる気がするけど
- 326 :名前は開発中のものです。:2014/03/09(日) 22:24:11.30 ID:7BkgnOpl.net
- 通信対戦なら時間基準しかない
- 327 :名前は開発中のものです。:2014/03/09(日) 22:29:21.55 ID:YCVyyaL7.net
- 同人ならまだまだ普通にー、って感じじゃない?
- 328 :名前は開発中のものです。:2014/03/09(日) 22:49:06.01 ID:LHzx02pP.net
- 自称プロの方ですか。
プロのくせに2chってキモイんで巣にお帰りください
- 329 :名前は開発中のものです。:2014/03/09(日) 23:27:17.89 ID:YCVyyaL7.net
- >>328
どこにプロ要素があったのか
- 330 :名前は開発中のものです。:2014/03/10(月) 01:04:03.22 ID:eMnEQH7w.net
- コミュ障の有段者かな?
- 331 :名前は開発中のものです。:2014/03/10(月) 18:57:16.49 ID:u260dUyO.net
- 円や矩形の当たり判定を使わずに3Dのメッシュとメッシュの当たり判定をする方法ってある?
- 332 :名前は開発中のものです。:2014/03/10(月) 19:30:37.53 ID:a4AxYrFN.net
- >>331
もう少しくわしく
なぜその方法ではダメなの?
どのような目的の為にその他の方法が必要なの?
- 333 :名前は開発中のものです。:2014/03/10(月) 21:01:01.03 ID:Y7tUpY4E.net
- 着地判定じゃね
- 334 :名前は開発中のものです。:2014/03/10(月) 21:12:38.72 ID:gaJAPo5e.net
- あるも何も三角形を総当たりで判定するだけでしょ。
いったい何が聞きたいのかさっぱり分からない。
- 335 :名前は開発中のものです。:2014/03/10(月) 23:29:14.20 ID:Y7tUpY4E.net
- 単に効率的な手法が聞きたいんでしょ
何が聞きたいのかわからないってアスペかよ
- 336 :名前は開発中のものです。:2014/03/11(火) 03:02:43.10 ID:IY9eaK2H.net
- 効率的な手法=点・円・矩形の当たり判定じゃまいか
バーカバーカ
- 337 :名前は開発中のものです。:2014/03/11(火) 03:58:39.95 ID:UoOeSCjv.net
- >>336
いや、色んな当たり判定の取り方有るよ。
それに円、球、円柱などの単純図形による近似判定って処理が軽いだけで、
厳密な当たり判定を取りたい時の手法としては効率的ではないし。
凸包を使う方法とか、xyzそれぞれのベクトルの射影を取る方法とか、調べてみると面白い。
- 338 :名前は開発中のものです。:2014/03/11(火) 12:42:21.97 ID:IY9eaK2H.net
- 効率的な手法=処理が軽い
精度の高い手法=厳密な当たり判定
- 339 :名前は開発中のものです。:2014/03/11(火) 15:13:17.06 ID:7WRcbbN4.net
- 効率的な手法で精度の高い手法 = 俺らの目標
- 340 :名前は開発中のものです。:2014/03/11(火) 15:17:28.37 ID:0J+S+2q7.net
- 妄想の間違いでは
- 341 :名前は開発中のものです。:2014/03/11(火) 15:18:30.63 ID:1Bb7Oz5Q.net
- では、球と球の当たり判定の計算式を述べよ
- 342 :名前は開発中のものです。:2014/03/11(火) 15:37:28.53 ID: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
- 343 :名前は開発中のものです。:2014/03/11(火) 15:55:58.02 ID:AQe4Fl77.net
- 数学的に >>324 が正解です、
しかしながら、プログラミングとしての最適化されていない。
最適化された解を述べよ、 ( 処理速度向上させよ )
- 344 :名前は開発中のものです。:2014/03/11(火) 15:59:16.47 ID:AQe4Fl77.net
- 訂正、 >>324 じゃなくて、>>342 です
- 345 :名前は開発中のものです。:2014/03/11(火) 17:31:22.65 ID:7aEkrhcX.net
- あー、どうせ2乗するなら abs() が不要か
平方根の最適化はコンパイラに任せるとして、
distance = sqrt( sqrt( diff.x * diff.x + diff.y * diff.y ) + diff.z * diff.z )
とかじゃダメ?
- 346 :名前は開発中のものです。:2014/03/11(火) 18:11:28.23 ID:vsKfw8ZM.net
- わからんけど、俺ならとりあえず diff.x > b1.r + b2.r の時点で弾くかな。
diff.y と diff.z も同様。
- 347 :名前は開発中のものです。:2014/03/11(火) 21:03:50.46 ID:Xqo2QxT0.net
- distanceはsqrt(diff.x^2+diff.y^2+diff.z^2)
sqrtは重いからsqrt使わずにdistance^2と(b1.r+b2.r
)^2を比較する
- 348 :名前は開発中のものです。:2014/03/11(火) 21:15:28.25 ID:OqfIz8Zt.net
- 標準Cライブラリのmath.hってそんな重いの?
平方根くらいええやん
- 349 :名前は開発中のものです。:2014/03/11(火) 21:49:57.82 ID:Xqo2QxT0.net
- 今はcpuに命令あるはずだからそれなりに高速だとは思うけど、四則演算と比べれば当然遅い
ちなみ平方根の計算自体は近似値求める計算だから結構でかいよ
- 350 :名前は開発中のものです。:2014/03/11(火) 22:49:56.48 ID:Fzxm+mum.net
- どの道その距離は後で衝突箇所(衝突時間)を求める時に必要になるから
計算して返すようにしておいた方がいいよ
- 351 :名前は開発中のものです。:2014/03/11(火) 23:13:25.82 ID:P/1Z0pOf.net
- 平方根なんてほんとにCPU命令にあるのかと思って調べたら本当にあるんだな
http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-optimization-manual.pdf
http://topsecret.hpc.co.jp/wiki/index.php/%E5%89%B2%E3%82%8A%E7%AE%97%E3%81%AF%E9%81%85%E3%81%84
しかも割り算一回分レベルの速さ
割り算も遅いので遅いと言えば遅いんだろうけど、これならそれほど頑張って避けなくてもいい気もするね
- 352 :名前は開発中のものです。:2014/03/12(水) 10:35:51.84 ID: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億に近いから他の処理の重さと併せて考慮する感じだと思う
- 353 :名前は開発中のものです。:2014/03/12(水) 13:43:31.76 ID:KEnJWCWv.net
- 誤差も何も√( x^2 + y^2 + z^2 )と√(√(x^2 + y^2) + z^2)じゃ違う答えになって当然だし・・・
- 354 :名前は開発中のものです。:2014/03/12(水) 13:49:15.02 ID:DWahuZKR.net
- うん、一応>>347に書かれてた事を試してみただけ
- 355 :名前は開発中のものです。:2014/03/12(水) 21:54:58.99 ID:5WuRlcAH.net
- >>347はdistanceの二乗使うからsqrtは使わんよ
- 356 :名前は開発中のものです。:2014/03/12(水) 21:59:51.24 ID:5WuRlcAH.net
- あと、ルート二つついてる方は単に式が間違ってるだけだと思う
- 357 :名前は開発中のものです。:2014/03/12(水) 22:11:11.81 ID:MjuHudry.net
- pow(x,2.0)て最適化でx*xになるっけ?一昔前のVCだと駄目だったけど
それにdoubleよりfloat使わない?
- 358 :名前は開発中のものです。:2014/03/13(木) 10:00:03.12 ID:pSqzCZ7J.net
- なるほど、342から間違ってたのね、失礼しました
- 359 :名前は開発中のものです。:2014/03/13(木) 11:21:45.95 ID: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); // 衝突位置の計算用
}
みたいな感じかな?
参考になりました、ありがとうございます
- 360 :名前は開発中のものです。:2014/03/13(木) 20:12:09.07 ID:U+Ob+Zph.net
- doubleよりfloatが何故か遅いっていう噂があるね
- 361 :名前は開発中のものです。:2014/03/13(木) 20:37:28.97 ID:gJhIi0KX.net
- どうせ/fp:preciseのままだからだろ
- 362 :名前は開発中のものです。:2014/03/15(土) 02:04:37.56 ID:lh5cPZ7H.net
- とあるゲームのソースを見たところ
playMIDI
TextOut
ReleaseMIDI
など出てきたんですけどこれはygs2kで間違いないですかね?
ygs2kってゲ製では有名なんですか?
- 363 :名前は開発中のものです。:2014/03/15(土) 02:30:50.42 ID:3y1QMR7E.net
- そうです
- 364 :名前は開発中のものです。:2014/03/15(土) 09:20:59.03 ID:9NF5k3Jb.net
- わたしが
- 365 :名前は開発中のものです。:2014/03/15(土) 14:07:07.29 ID:lh5cPZ7H.net
- ヴェルタース
- 366 :名前は開発中のものです。:2014/03/15(土) 14:14:31.86 ID:h6Za+Db1.net
- >>362
言ってることが支離滅裂。
なぜ、その名前だけでそのライブラリに行きつくのか。
ついでに言えば全然有名じゃないし。なんでゲ製でなの?
- 367 :名前は開発中のものです。:2014/03/15(土) 14:58:29.14 ID:FYDjzZLC.net
- やねうらお氏は10年前に亡くなりました
- 368 :名前は開発中のものです。:2014/03/15(土) 16:20:04.97 ID:PgHQYT7S.net
- 知ってる人は多そうだけど、使ってるひとってどれくらいいるんだろう?的な
- 369 :名前は開発中のものです。:2014/03/15(土) 17:08:57.60 ID:h6Za+Db1.net
- >>367
ああ、彼のライブラリなのか。
結局、3Dは出来なかったな。能力的にも年齢的にも無理があったのだろうが。
- 370 :名前は開発中のものです。:2014/03/15(土) 17:24:30.81 ID:rzf5NJ5V.net
- 新聞でやねうら王の名前みて吹いた
- 371 :名前は開発中のものです。:2014/03/15(土) 19:43:09.80 ID:DtHIrGu2.net
- 3Dはのんびり開発してるとバージョン変わって台無しだから不毛
- 372 :名前は開発中のものです。:2014/03/15(土) 20:00:10.92 ID:fItnBM/L.net
- 3DというかMSがな
- 373 :名前は開発中のものです。:2014/03/15(土) 20:13:58.33 ID:dxeJpeDA.net
- 今でも、DirectX7 使えるよ
- 374 :名前は開発中のものです。:2014/03/15(土) 20:44:18.33 ID:7h3u1dFN.net
- DirectX11は長生きするんじゃない?つっかえねーテッセレータと共に
- 375 :名前は開発中のものです。:2014/03/16(日) 02:00:01.53 ID:/lXYe85Y.net
- 超長生きしたのって7と9だっけ?
- 376 :名前は開発中のものです。:2014/03/16(日) 12:04:58.86 ID:45D5Boh6.net
- プログラムというより物理の話で申し訳ないんだけど、レースゲームで壁とぶつかった時の速度の計算ってどうしてる?
- 377 :名前は開発中のものです。:2014/03/16(日) 12:46:48.57 ID:9fplCkXk.net
- 速度x0.5
方向は壁の法線方向に対して対称(反射)
※リアルさを求めるなら壁から加わる力から加速度をもとめるべき
- 378 :名前は開発中のものです。:2014/03/16(日) 13:08:18.40 ID:DbQzKXx2.net
- 壁にぶつかったら爆発→リトライ
- 379 :名前は開発中のものです。:2014/03/16(日) 14:37:04.76 ID:e720CN4J.net
- レースゲームなら>>377でいい気がするね
ただ、簡易スマートボール作ろうとしたときに>>377のやり方やってたら
曲面の壁に沿って滑らかに滑ってくれなくてエターなった思い出があるわ
- 380 :名前は開発中のものです。:2014/03/16(日) 15:00:37.43 ID:a7Z/sEsx.net
- 物理エンジン任せ
- 381 :名前は開発中のものです。:2014/03/16(日) 18:55:21.70 ID:uPQCf7iI.net
- どうしてるの前にどうしたいを述べるべき
ガツガツと壁を削りながらアグレッシブに攻めるゲームにしたいのか
スピンしてほぼ停止状態からやり直させるのか
ある程度の傾斜なら斜めに傾いたまま突っ走るロデオか
- 382 :名前は開発中のものです。:2014/03/17(月) 00:57:39.15 ID:VY0wetv0.net
- 内積使えよ
- 383 : ◆UxQ8uxJMok :2014/03/17(月) 01:35:41.18 ID:kdQ7tXJG.net
-
>>182 :名前は開発中のものです。:2014/02/04(火) 00:23:08.29 ID:J1FJfMJW
> スレッドの主旨を考えてくれ。どっかのスレみたいに株の話をされても困る
おぃ、>>182ID:J1FJfMJW
手前ェは、一族根絶やし肉だるま処刑http://uni.2ch.net/test/read.cgi/entrance2/1369909044/119リスト入りだ。
- 384 :名前は開発中のものです。:2014/03/17(月) 07:06:23.16 ID:Do9zcgcc.net
- >>381
壁とぶつかりながら進む方
一応ライブラリ使えば球体とコースの当たり判定と交点を求めることは出来るんだけど、アクセルを踏み続けると当たってる時でも加速するし、減速する処理を書くと当たり続けて減速しすぎちゃうし・・・
- 385 :名前は開発中のものです。:2014/03/17(月) 09:41:07.08 ID:rpSVpHyC.net
- http://www.euclideanspace.com/threed/games/examples/cars/index.htm
ここまでは理解していると思うので、
挙動をどうするか決めておいて
そのようになるようにコードを書いてゆくのでしょう
- 386 :名前は開発中のものです。:2014/03/17(月) 19:26:01.22 ID:U3cX2N0O.net
- >>384 その辺は真面目なシム系のゲームを作るのでなければ、
>>377 にあるようなゲームならではの調整が必要になるケースだと思うよ
壁に接触してから〇秒間は加速性能を〇〇%落とすとか、
壁から離れるような方向に謎の力が加わるとか
やってみて理想のゲーム性に近づくようにいろいろ試してみるしかないかと
- 387 :名前は開発中のものです。:2014/03/18(火) 20:52:56.02 ID:CMOj/Jcf.net
- ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N4.5
このスムーズに動くマップスクロールですが、最初にマップを動かしてからキャラを描画する形で
ソースが書かれています。
これを、画面端で、キャラだけ動いてカメラ画面(マップ)が動かないようにしたい場合、
画面を滑らかに動かすのではなく、キャラを滑らかに動かすような処理に
ソースを変更するしかないでしょうか?
- 388 :名前は開発中のものです。:2014/03/18(火) 20:53:36.58 ID:CMOj/Jcf.net
- ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N4
アドレスはこちらでした。
- 389 :名前は開発中のものです。:2014/03/18(火) 22:13:14.48 ID:anUGUjWa.net
- うむ、それしかないと思うよ
- 390 :名前は開発中のものです。:2014/03/19(水) 01:58:11.08 ID:tk/WX1Vm.net
- >>387
リンク先をチラ見した程度じゃ、何をやってるか正しく把握してないし、
>>387の言わんとしてることもイマイチ分かりかねてるが、
方法としては、
昔ながらRPGみたく、
キャラの位置が画面端に近づいたら画面全体じゃなくて、キャラのみを移動にする方法や
完全にどこの位置でもキャラを移動させる方法、画面端(移動制限をしっかり)して描画に十分な余白
の3通りぐらいはあると思うよ。
他にも3D系のだと、画面端に近づくと縮尺が変わってとかもあるけど。
- 391 :名前は開発中のものです。:2014/03/19(水) 04:13:25.51 ID:GLn+gVin.net
- 色々な表現方法があるのだが、比較的応用のききやすい方法を。
こんな事言って、例のkなんとかさんが激おこしないことを祈る。
>>387
現実世界で言うところの、スポーツ中継におけるTVカメラのようなものを想像して欲しい。
例えばマラソン中継。ランナーは常に走っているけど、カメラも同じ方向に動いている。
あるいは野球中継。ホームランボールをTVカメラが追いかけて、常に画面の中央にあるように撮影する。
被写体の動きに合わせてカメラを動かすことで、視聴者には被写体は停止し、背景が流れていくように見える。
カメラを動かすのをやめれば、逆に背景は停止し、被写体は移動する。やがて画面の外に消えてゆくだろう。
これをまとめると
(1)キャラクターは、画面表示に関わらず常に動かせ。
(2)マップは、画面表示に関わらず座標を動かしてはならない。
(3)カメラの位置は、状況に合わせて移動させろ。
ということになる。
- 392 :名前は開発中のものです。:2014/03/19(水) 16:07:40.13 ID:UvHVMI/M.net
- 387の質問はサンプルソースをどうするかって話だから
その答えだと根本から作りなおせって事になるんじゃない?
- 393 :名前は開発中のものです。:2014/03/19(水) 16:41:44.59 ID:pluZ/2gm.net
- まあ答えとしては>389に言われちゃってるしな
- 394 :名前は開発中のものです。:2014/03/19(水) 17:00:07.58 ID:o8V0VZ6P.net
- そのサンプルだと滑らかに動くスクロール処理をキャラじゃなくてカメラビューの方に入れてるね。
ぶっちゃけサンプルとしてはどうかと思うぞ。
キャラとカメラ両方に入れるか、キャラに入れるか。この二択でしょ。Dxlibの作者もなんでこんな
初心者いじめのようなサンプルを書いたんだろw
- 395 :名前は開発中のものです。:2014/03/19(水) 22:07:24.67 ID:rw0JuaTm.net
- 俺こそが世界の中心!
- 396 :名前は開発中のものです。:2014/03/20(木) 17:23:48.20 ID:XEsROipC.net
- C++とかで「グローバル宣言なるべく使うな」って言うけど、どうやって変数のデータを保持するの?
- 397 :名前は開発中のものです。:2014/03/20(木) 17:51:07.52 ID:yGIdDx3B.net
- 手元の入門書を開いてみてくれ。
「関数」のページに、おそらく「引数(ひきすう)」という項目が書かれてると思う。そこを読むんだ。
- 398 :名前は開発中のものです。:2014/03/20(木) 17:55:02.77 ID:XkJNKHnH.net
- クラス化
引数、戻り値
- 399 :名前は開発中のものです。:2014/03/20(木) 18:06:26.35 ID:XEsROipC.net
- >>397,398
C++があやふやなのであれなんですが、Cで言えば構造体の中でxという宣言をすれば、
void main(){
}
- 400 :名前は開発中のものです。:2014/03/20(木) 18:08:28.64 ID:XEsROipC.net
- 途中で更新ボタン押してしまった(´・ω・`)
勉強したてであやふやなのであれなんですが、Cで言えば構造体の中でxという宣言をすれば、
Test test;
void main(){
test.x=1;
}
こんな感じにしてしまえば、xはグローバル宣言ではないということでしょうか?
- 401 :名前は開発中のものです。:2014/03/20(木) 18:12:12.69 ID:QQSkDL4k.net
- >>400
このxはすでにグローバル変数ではなくて、ローカル変数だね
関数の中でしか有効ではない変数で、その関数を抜けるとその変数は破棄されるやつ
グローバル変数ってのはTest testってなってるやつのこと
- 402 :名前は開発中のものです。:2014/03/20(木) 18:17:11.33 ID:7FNS6Iq5.net
- なんか言ってることが良く分からんが
Test test;
を関数外に書いてるからtestはグローバル変数
だからその中に保持されているxの値も関数抜けても維持されるよーじゃなくてさっさと入門サイト見てこいカス
- 403 :名前は開発中のものです。:2014/03/20(木) 20:27:56.02 ID:4y6T8wZl.net
- グローバル変数を使うことが悪いのではない
グローバル変数を使うことでバグを引き起こしたりメモリを圧迫する事が悪なのだ
要求機能満たして動くならグローバル使っても気にするこたぁない
- 404 :名前は開発中のものです。:2014/03/20(木) 20:32:50.84 ID:mbiTOjB0.net
- そういうのはわかるようになってから考えればいいし
初心者のうちはグローバル=悪って覚えていた方が安全
- 405 :名前は開発中のものです。:2014/03/20(木) 20:41:55.88 ID:F5faASXs.net
- 問題になるのは生成、破棄の順序位でしょ
メモリ圧迫なんてヒープからnewしたのと同じだしスタックに積まれるよりまし
アクセス範囲や名前の衝突なんてのも関数でも起こるし
アクセッサーとか間違った使い方のシングルトンで
どこからでも参照できるようにしたら同じこと
- 406 :名前は開発中のものです。:2014/03/20(木) 20:58:57.29 ID:QQSkDL4k.net
- シングルトンを使うのがそもそもおかしいって力説するやつに会ったことならある
- 407 :名前は開発中のものです。:2014/03/20(木) 21:49:50.24 ID:F5faASXs.net
- インスタンスが単一を保証するためのパターンでどこからでもアクセスできる為では無いからな
ローカルなクラス内のシングルトンもあるので間違えられると混乱の元
ゲームのデータクラスとして使うのは設計次第
- 408 :名前は開発中のものです。:2014/03/20(木) 22:00:31.87 ID:mbiTOjB0.net
- リソースよりもメンテナンスの問題でないの
一人開発だとそんな気にならんけど規模でかくなると影響範囲の広い変数なんて地雷みたいなもんだからな
下手に修正すると全く関係ないところでエラーでたりしてトレース大変だったり
- 409 :名前は開発中のものです。:2014/03/21(金) 18:13:16.93 ID:VAKzG1ya.net
- シングルトン便利なのに
呼び出し側は生成関数使うだけで初期化されてるか気にしなくていいとか楽チン仕様にできる
グローバル変数だけだとそうはいかんよね
- 410 :名前は開発中のものです。:2014/03/21(金) 20:31:26.05 ID:sV0Efmq2.net
- 初期化に失敗する可能性入れたら
実際に使う前に確認しておきたいけどな
- 411 :名前は開発中のものです。:2014/03/21(金) 22:38:50.59 ID:4DgLw9n9.net
- 初期化に失敗する可能性のあるものは
初期化するタイミングを図らないといけないもので
それはシングルトンより適したデザインがあるのてはないか
- 412 :名前は開発中のものです。:2014/03/23(日) 14:45:46.78 ID:UqjjQ2/2.net
- >>408
そういう目的ならnamespaceを分ければよくねって話なら見た覚えがある
ググったら過去スレがひっかかった
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
シングルトンで検索すると面白い
- 413 :名前は開発中のものです。:2014/03/24(月) 21:27:07.06 ID:rE2XsGEW.net
- 最新のdirectx SDKってどこで入手したらいいですか?
ググっても場所がまちまちで
- 414 :名前は開発中のものです。:2014/03/24(月) 21:41:34.76 ID:AEJao4UL.net
- >>413
Windows8に標準でついてくるそうだ
- 415 :名前は開発中のものです。:2014/03/24(月) 21:50:42.35 ID:WjXmoSNL.net
- 2012以降のVisual Studioに標準で付いてくる、な
- 416 :名前は開発中のものです。:2014/03/24(月) 22:39:54.92 ID:PqJgwAnT.net
- マジレスすると>>415のやつ
それかWindowsSDKに一緒に入ってる
この程度は自分で調べようぜ
- 417 :413:2014/03/24(月) 22:44:31.69 ID:rE2XsGEW.net
- インストール出来ました
ありがとです
- 418 :名前は開発中のものです。:2014/03/25(火) 09:41:15.88 ID:KT+bOjyU.net
- http://toro.2ch.net/test/read.cgi/gamedev/1175423459/719
↑ ↑ ↑ ↑ ↑ ↑
- 419 :名前は開発中のものです。:2014/03/26(水) 11:37:26.78 ID:+vTfvSPy.net
- シューティングゲームを作る時、移動キー押下時に自キャラと他オブジェクトとの衝突判定を行うと思うのですが、
1フレーム移動毎に、敵や敵の弾や壁との衝突判定をしていると
画面上に敵の弾が100個とかあったりするとかなり膨大な数ループ処理が必要な気がします。
一般的なゲームの場合、画面上で動いているオブジェクトは全て1フレーム毎に衝突判定をしているのでしょうか?
- 420 :名前は開発中のものです。:2014/03/26(水) 13:20:48.84 ID:47820mJU.net
- 2Dだけど
http://marupeke296.com/COL_2D_No8_QuadTree.html
- 421 :名前は開発中のものです。:2014/03/26(水) 13:22:14.35 ID:+vTfvSPy.net
- >>420
レスした後でそこ見つけたんだけど私の頭では理解が・・・(´・ω・`)
皆この概念でシューティングゲーム作ってるんですかね?
- 422 :名前は開発中のものです。:2014/03/26(水) 13:23:52.42 ID:ghUA5KPp.net
- >>420
今まで普通にやってたけど名前が付いてるの始めて知ったわ
ありがとう
- 423 :名前は開発中のものです。:2014/03/26(水) 13:56:03.88 ID:xWjmtvj1.net
- 俺もその理屈何度も読んだけど理解できないんだよなぁ。
素人に解るレベルに噛み砕いてくれてるとこあればいいのに。
結局座標で判定して分割してたりする。俺。
- 424 :名前は開発中のものです。:2014/03/26(水) 14:03:19.61 ID:+vTfvSPy.net
- >>423
ttp://flash.polig.daa.jp/?eid=1242167
今さっき見つけたけどここと同じやり方ですかね?
これならなんとなくわかる気がする。
- 425 :名前は開発中のものです。:2014/03/26(水) 17:00:06.09 ID:VxCnnAtl.net
- >>419
100個くらいなら問題にならないっていう指摘と
なぜ移動キーを押してる間しか当たり判定がないのかというツッコミと
- 426 :名前は開発中のものです。:2014/03/26(水) 17:08:48.02 ID:47820mJU.net
- 質問はそこじゃないから
- 427 :名前は開発中のものです。:2014/03/26(水) 18:28:38.14 ID:VxCnnAtl.net
- 質問に答えたつもりは無いのだが…
- 428 :名前は開発中のものです。:2014/03/26(水) 20:24:20.53 ID:Hvj0In47.net
- ID:VxCnnAtl
その嫌われ者キャラは素なの?
治した方がいいよ。この先も友達出来ないよ。
- 429 :名前は開発中のものです。:2014/03/26(水) 20:29:33.08 ID:fl0FfJGt.net
- 一般的なゲームをどのクラスで指すのか分からないけど、
時代やハードを問わない"基本"は力技というか、1フレームごとの全判定だと思うっす。
ベテランプログラマがざっくりと組んじゃうところじゃなければ、
とりあえずプロトタイプを作ってみて、そっから必要な機能を満たしつつ、
どんだけ不要な判定対象を省いて回数減らせるか、ってやり方が多い気はする。
負荷やループ数を気にしているのなら、最近の据え置き機や携帯ゲーム機の場合だけど、
C++使ってるなら、数万回のループ判定程度がボトルネックやオーバーヘッドになることは少なくて(余程複雑な判定をしてれば別)、
問題になるのは2D3D問わずグラフィックスコマンドの場合が圧倒的に多いと思う。
なので、研究目的とかじゃなくて今時のハードで遊べるものを作りたいというだけなら、
判定そのものはそこそこ効率化してれば十分だと思うお。
よくあるシューティング形式なら、>>423の考え方でも十分効率上がりまっせ。
- 430 :名前は開発中のものです。:2014/03/27(木) 05:30:55.80 ID:y42irIZJ.net
- そういう変な聞きかじりは止めた方がいい。
>>423ならスクロールなし画面に入るサイズだから判定もせいぜい3000未満でしょ。
それなら普通にforループ回して十分だし、そこだけマルチスレッドにしても良い。
- 431 :名前は開発中のものです。:2014/03/27(木) 05:42:21.29 ID:66/qzmyK.net
- 厨が頑張るスレw
- 432 :名前は開発中のものです。:2014/03/27(木) 10:43:42.33 ID:LEeCMwpD.net
- 「効率の良い判定方法を教えて下さい」
「今どきのPCは高性能だからそんな事考えなくてもOK!」
じゃ会話にならないでしょ。
ていうか自分の環境を基準に考えるのは止めたがいいよ。
- 433 :名前は開発中のものです。:2014/03/27(木) 11:05:32.54 ID:tJdovPbY.net
- 「そこに拘るよりは、他の場所がネックになってる可能性が高い」なら回答としてギリギリありかな
- 434 :名前は開発中のものです。:2014/03/27(木) 12:17:49.28 ID:68m9m0Mu.net
- そうかなぁ。
私も>>425と同じ感想を持ったんだけど。
>>419が実際にそういう総当りをしてみて重かったから他のやり方を聞いてるなら>>432のいうとおりだけど、実際やってみたのかね?
そういう感じには読めなかったけど。
- 435 :名前は開発中のものです。:2014/03/27(木) 12:21:35.48 ID:3O8ksg+h.net
- 判定するまでもなく接触していないことが自明なものはそもそも判定しない、とか
あとは、シューティングゲームなら
「敵x敵、敵弾x敵弾、敵x敵弾の判定は不要だからしない」とかで
判定回数を減らせることがある
(もちろんその判定がシステム上必要ならやるしかないけど)
あと経験不足な人だと
A→Bの判定とB→Aの判定を別個にやっちゃってて
そのせいで速度が出ないってのもあるかも?
これを修正するだけで判定回数を半分にできる
- 436 :名前は開発中のものです。:2014/03/27(木) 12:35:21.54 ID:NuLp7Gqa.net
- >>434
馬鹿じゃないの?ほんと文章を文字通りにしか受け取れないんだね。
誰が100個限定の質問してんだか。どう見ても数多くのオブジェクトがあった場合の衝突判定の質問だろ。
お前以外は皆わかってそういう答え返してるのに、お前だけが100個という質問の中のどうでもいい部分に固執してるわけだがw
ここを10000個とでも書かないと分からんの?アホだろw
- 437 :名前は開発中のものです。:2014/03/27(木) 12:56:33.60 ID:68m9m0Mu.net
- >>436
まじか。
想定されるオブジェクトの個数というのは重要な情報だと思ってるんだが、他の人はそうじゃないのか。
1個でも42億個でも対応できるようなやり方を毎回してるの?
100個って書いてあったらだいたい100個くらいを想定してるんだと思うのが普通だと思うが、そうでもないんだなぁ。
- 438 :名前は開発中のものです。:2014/03/27(木) 12:59:39.14 ID:LaHWZeJX.net
- そもそもプログラム組める奴が434みたいな的はずれなこと言い出す訳がないわけで…
つまり、相手するなカス荒れるから
- 439 :名前は開発中のものです。:2014/03/27(木) 13:17:49.49 ID:462b1dLf.net
- 膨大な数のループを使う判定は書けるんだからさらに増えたらどうすんのって質問でしょ
- 440 :名前は開発中のものです。:2014/03/27(木) 14:43:18.93 ID:0LKTz7/0.net
- >ここを10000個とでも書かないと分からんの?アホだろw
2Dの当たり判定の処理は軽いから、マンコでも同じ事。 やってみ
- 441 :名前は開発中のものです。:2014/03/27(木) 15:10:53.94 ID:2L1CAOZz.net
- 話変わって悪いけど、レースゲームで車が高速移動しすぎて当たり判定が出来ない場合ってどうすればいいの?
- 442 :名前は開発中のものです。:2014/03/27(木) 15:51:52.80 ID:tJdovPbY.net
- >>441
1ループあたりの移動速度を半分にして、ループ数を2倍回す。
- 443 :名前は開発中のものです。:2014/03/27(木) 19:51:32.13 ID:D4N08/V9.net
- >>441
現在フレームをnとした場合、n-1フレームの情報を保持しておいて、nフレームとの線分を引く。
あるいは現在の位置と速度から予測されるn+1の未来予測位置とnフレームとの線分を引く。
この線分が障害物と接触していたら接触した際の処理へ移行するように書いておく。
- 444 :名前は開発中のものです。:2014/03/27(木) 20:07:57.55 ID:LEeCMwpD.net
- >>440
PCスペックを限定してないのにその回答は無意味だってば。
- 445 :名前は開発中のものです。:2014/03/27(木) 21:19:31.28 ID:tdrncXK1.net
- たとえ、 2MHz Z80であっても、ディスプレイは40x25のキャラクタ画面だから大丈夫だよ
- 446 :名前は開発中のものです。:2014/03/27(木) 22:05:12.78 ID:LEeCMwpD.net
- 40*25のテキストエリアで10000個のキャラクター動かすのかw
- 447 :名前は開発中のものです。:2014/03/28(金) 00:17:11.93 ID:49hdQnYh.net
- >>442
大丈夫かよ…
- 448 :名前は開発中のものです。:2014/03/28(金) 00:45:18.83 ID:1M6UES2K.net
- >>447
俺は>>442じゃないけど大丈夫だと思う、むしろよくある手法じゃない?
アクションの通信対戦で処理落ちする時の同期なんかで使われるのも似たようなやり方あるし
- 449 :名前は開発中のものです。:2014/03/28(金) 00:52:56.05 ID:bd0QOyAi.net
- 一時期の同人げーって処理落ちしまくりで
「こいつら良いマシンで開発してるんだな…」って嫉妬してたw
最近はPCの性能頭打ちでそういうのなくなったからいいよねww
- 450 :名前は開発中のものです。:2014/03/28(金) 00:56:09.52 ID:cOG2DjHy.net
- >>447
スレチかもしれんがUnityの物理演算部分の判定は秒間1000ループが推奨されてるんだからわりと平気なんじゃね?
- 451 :名前は開発中のものです。:2014/03/28(金) 12:11:43.53 ID:/j8PQ+jU.net
- >>441
Point before, after; // 前回の座標、今回の座標
int count = 8;
int ix = (after.x - before.x) / count;
int iy = (after.y - before.y) / count;
Point pos;
pos.x = before.x;
pos.y = before.y;
for(int i=0; i<=count; i++){
bool is = collision(pos.x, pos.y); // 当たり判定
if(is) break;
pos.x += ix;
pos.y += iy;
}
count, ix, iyの値をもう少しきちんと平方根使って計ったほうがいいけど
- 452 :名前は開発中のものです。:2014/03/28(金) 12:15:19.93 ID:/j8PQ+jU.net
- >>451はお絵描きソフトなんかでよく使うんじゃないかな
60fpsでマウス判定じゃ全然足りなくて線が破線になるし
- 453 :名前は開発中のものです。:2014/03/28(金) 13:16:45.63 ID:UXW64F/+.net
- お絵かきならスプライン補間とかだろ2次元だとカクカクの直線になるぞ
あとそれバグ持ちだな
- 454 :名前は開発中のものです。:2014/03/28(金) 22:13:02.97 ID:LlNhW3Yy.net
- Windows APIにDirectXが搭載されたならいい加減にウィンドウ生成とかDirectXの初期化とかどんなジャンルでも必要なゲームエンジンの要素とか短縮しねえかな
コピペとはいえ毎回見るのが嫌になってくるよな
ライブラリとかラッパー使えば済むんだろうけど理解するのは面倒だし
- 455 :名前は開発中のものです。:2014/03/28(金) 22:28:44.11 ID:cOG2DjHy.net
- >>454
会社では無理だけど自分で作るようなら短縮用のヘッダーと関数とか自作しない
理解すればいろいろと便利だし
- 456 :名前は開発中のものです。:2014/03/29(土) 09:51:35.35 ID:Pyp/eAfy.net
- ウィンドウ周りは自分で適当にラッパー作ったな
都度調べてコピペするより精神衛生的に良い
- 457 :名前は開発中のものです。:2014/03/29(土) 13:22:18.51 ID:CYqmosk/.net
- さもありなん。
老害にはコードスニペットの概念がないからなぁ。
- 458 :名前は開発中のものです。:2014/03/29(土) 21:21:25.19 ID:2TsE/LLz.net
- 毎回書くような所だけ書いたプロジェクト作ってテンプレートとして登録しとけばいいんじゃないの
- 459 :名前は開発中のものです。:2014/03/29(土) 21:48:25.68 ID:fyBJTsa/.net
- そしてそのテンプレートが、ゲームを作るたびに更新されていく
- 460 :名前は開発中のものです。:2014/03/30(日) 00:08:10.54 ID:mb7Whzhe.net
- win32APIで別のプログラムを呼び出したいです
system関数は使ってみたんですがdos窓も一緒に出てきてしまいます
- 461 :名前は開発中のものです。:2014/03/30(日) 00:14:44.76 ID:3L4NtrMF.net
- >>460
CreateProcessだとDOS窓出なかった気がする
- 462 :460:2014/03/30(日) 01:27:38.78 ID:mb7Whzhe.net
- ドンピシャでした
ありがとうございます
- 463 :名前は開発中のものです。:2014/04/01(火) 17:00:08.51 ID:1bXVipah.net
- >459
これありすぎて吹く
- 464 :名前は開発中のものです。:2014/04/01(火) 17:13:22.13 ID:mqOcie7s.net
- 俺もテンプレートってほどいいものじゃないけど
「今回作ったシステム流用すればいくらでもゲーム作れるぜ!:
と毎回思うんだけど、毎回まるまる作り直してるという……。
- 465 :名前は開発中のものです。:2014/04/02(水) 10:41:39.05 ID:QH7QljdQ.net
- 自分で作った3Dゲームにめちゃくちゃ酔うんだけど、比較的酔いにくくする方法ってある?
- 466 :名前は開発中のものです。:2014/04/02(水) 11:13:17.38 ID:gG8rIG0W.net
- >>465 ちょっと、見せてみ
- 467 :名前は開発中のものです。:2014/04/02(水) 12:36:37.68 ID:Y76EY8s4.net
- >>465
別にそういう専門知識もってないから経験則になるけど。
酔いやすい人と酔いにくい人がいるけど、酔いやすい人は三次元把握能力の高い人だと思う。これはどうしようもない。
俺は酔いにくい側の人間なんだけど、それでもあるゲームではめちゃくちゃ酔った事がある。
そのゲームはTPSなんだけど「キャラの背後に壁などの障害物があると、それが邪魔にならないよう自動でアングルが変わる」というものだった。
「背後の障害物が透明になる」なら酔わないのに「勝手にアングルが変わる」だと凄まじく酔う事がわかった。
車の運転でも、「運転してる人は酔わない」と言われてる。つ
まり「プレイヤー本人の意思とは関係なくアングルが変わる」と酔う事になる。
他にも、急激にアングルが変わる(目の処理が追いつかない)でも酔うと思われるので、ゆっくり視点を動かす工夫をすればいいのではないだろうか。
あと視点の方向を変えると遠景ほど早く動いて見えるから、遠景はあまり注視できないようにぼかすとか彩度を落とすとかするといいかもしれない。
- 468 :名前は開発中のものです。:2014/04/02(水) 16:48:09.93 ID:RKxy3xMo.net
- ソニックアドベンチャーDXは何故かすごい酔った
- 469 :名前は開発中のものです。:2014/04/02(水) 17:07:31.12 ID:05HXNQtD.net
- モニタを「風景の映ってる窓」として捉えると酔いにくい、なんて話も聞いたことがあるね。
- 470 :名前は開発中のものです。:2014/04/02(水) 20:57:32.09 ID:SSqz5QAv.net
- FOVの設定が悪いとか
- 471 :名前は開発中のものです。:2014/04/02(水) 21:38:55.24 ID:Y76EY8s4.net
- >>469
上でも言ったが俺は酔いにくい人間で、モニタに映る映像を「一枚の絵」としか認識してないんだよな。
頭のなかで3次元空間を構築しながら見ていない。
ガンブレードNYの動画を見てた時、ぐりんぐりん視界が動くのにまったく酔わなかったんだが、
ふと「一枚の絵としてしか認識してない自分」に気づいて、
頭のなかで方位を意識しながら(3次元空間を意識しながら)見なおしてみると、あっという間に気分が悪くなったw
でもこれは個人の話であってゲームをどうやれば酔いにくくできるかって技術とは別の話だよね。
- 472 :名前は開発中のものです。:2014/04/02(水) 22:03:56.84 ID:yy3b+VRk.net
- 3次元で意識してるけど酔ったことないな
酔うのが不思議でならない
- 473 :名前は開発中のものです。:2014/04/02(水) 22:29:30.77 ID:sgFJO2N4.net
- 3D酔い
カメラの位置と回転中心位置の関係が悪い
カメラ視野角の調整が悪い
カメラ回転の応答速度が遅い
- 474 :名前は開発中のものです。:2014/04/02(水) 22:32:07.27 ID:6rTn9j+m.net
- >>465
FoVが狭すぎてゲロゲロ
カメラの動きでゲロゲロ
この辺りは既に言われてるようなので、あとはレベルデザインかな。
ぐぐったら自レスが引っかかったのでリンクを貼っとく
http://unkar.org/r/gamedev/1223550808/423-452
> 452 : 名前は開発中のものです。[sage] : 2008/12/27(土) 00:34:33 ID:quq8i6DN
> >>423
> 遅レスで更に>>425、>>426と微妙にかぶる内容だが
>
> (1)FOVの問題
> 酔いの原因は様々だが、FOVの調整で改善される場合は多い
> プレイヤーの視野角を考えずに3D画面の投影変換行列を設定すると酔いやすい
>
> ・プレーヤー視点とディスプレイ間の距離
> ・ディスプレイの寸法
>
> 以上のパラメータから違和感の少ないFOVを探ることができる
> まぁ、既存FPSのFOV値を参考にするほうが手っ取り早いかもな
>
> (2)レベルデザインの問題
> 閉鎖空間を多用するマップは酔いやすい。これは(1)の問題との組み合わせでより悪化する
> FOVをどんなに調整しても吐く奴は吐く。対策としては開放空間(屋外)を多用する方法がある
> ただし、閉鎖空間の戦いをウリにするゲームではこの対策はとれない
>
> BFシリーズはオーケーだけどDOOM3とかHLシリーズは駄目、みたいな人に対処するのは困難
> 狭くて暗い閉鎖空間のスポーツFPSを作るつもりなら酔いやすいユーザーは切り捨てたほうが楽
- 475 :名前は開発中のものです。:2014/04/02(水) 23:05:42.17 ID:6rTn9j+m.net
- >>473
>カメラ回転の応答速度が遅い
これ、見落とされがちだけどあるよね
ARMAでマウススムージングがデフォルトでONだったので視線の動きに
遅延が生じて気分悪かった。スムージングを切ったら何ともなかった
- 476 :名前は開発中のものです。:2014/04/03(木) 00:12:27.55 ID:d8bZaMxb.net
- 動き回る飛行船の上でアクションシーンを展開したゲームを作って見たいんだけど
着地判定というか、移動する床みたいなのってどうやってるんだ?
飛行船が上に進んでる時に急制動で下向いたら飛行船に乗ってたキャラクターが跳ねるチンフワ現象を取り入れたいんだけど
素直に物理エンジンに託した方がいい?
- 477 :名前は開発中のものです。:2014/04/03(木) 00:41:04.11 ID:paQ+FHve.net
- 物理エンジンが一番楽
正確じゃなくてもいいなら
飛行船が上に進んでいるときにキャラクターの下と飛行船の着地できる部分が接触してるか判定して
接触してるなら飛行船の上の移動量とキャラクターの上の移動量を比べて飛行船の移動量の方が大きいなら
キャラクターの上の移動量を飛行船の上の移動量に書き換える
こうすれば飛行船がいきなり止まったりしたときにふわって感じで浮くことは可能
ただ、違和感はある落ち方になると思うから物理エンジンをお勧めしとく
- 478 :名前は開発中のものです。:2014/04/03(木) 01:07:35.19 ID:d8bZaMxb.net
- >>477
わかったありがとう
- 479 :名前は開発中のものです。:2014/04/04(金) 02:07:12.66 ID:iGGKX1Rj.net
- 詳しいね
さすがチンフワ総合スレッド
- 480 :名前は開発中のものです。:2014/04/05(土) 17:41:08.13 ID:Wu1wSHql.net
- クラス分けって具体的にどんな感じでやっていけばいいの?
関数分けまでは普通に出来るんだけど、メンバ変数がある以上クラス分けしたくても出来ないし・・・
- 481 :名前は開発中のものです。:2014/04/05(土) 18:16:26.54 ID:cqmzi82f.net
- 「// ○○を△△する」ってなコメントが書けそうな関数が複数あったら
○○をメンバ変数に置いて、○○を操作する関数をメンバ関数にしたクラスにする
ツッコミどころ多そうだけど大雑把にこんな原則で大体どうにかなるんじゃないかな
- 482 :名前は開発中のものです。:2014/04/05(土) 20:43:25.01 ID:nUDfpyEY.net
- 例えばC言語みたいな手続き型の言語で攻撃の判定処理を作ったとする
1.判定対象を選択
2.判定対象の座標と大きさ、形を取得する
3.大きさや形に合わせて判定する
4.当たってたらhpをダメージ分引いたりノックバックさせたり双方の属性に合わせていくつかの処理に分岐する
5.繰り返し
クラスを使ってオブジェクト指向的に処理する
1.対象を選択
2.対象に「お前この判定対象と当たってなる?」と確認する
3.繰り返し
ここまで書いて何を言いたかったか忘れたのでこのまま投稿する
- 483 :名前は開発中のものです。:2014/04/05(土) 20:58:16.49 ID:TIaN2lJ/.net
- 関数を実行するのに必要な変数をまとめたのが最小単位かな
変数として持つデータに依存する部分はメンバ関数にしたいけど
std::stringみたいになんでも入れちゃうのと
マイナーな機能は引数を取る静的関数や別クラスに分けるかはまた悩む
- 484 :名前は開発中のものです。:2014/04/05(土) 21:40:17.97 ID:nUDfpyEY.net
- オブジェクト指向を完全に突き詰めると動詞の関数しかなくなるような気がしないでもない
ゲームなら特に
- 485 :名前は開発中のものです。:2014/04/05(土) 22:14:07.33 ID:k4ryh3Xy.net
- >>482
ええー、そんな感じなの。想像してたのと違うなぁ。
あ、俺は480じゃないけど似たような問題に詰まってる者です。
- 486 :名前は開発中のものです。:2014/04/06(日) 01:53:43.72 ID:E+ECXvrW.net
- まあオブジェクト指向の作法については
それだけで厚めの本が出るぐらいだし・・・
- 487 :名前は開発中のものです。:2014/04/06(日) 12:16:47.72 ID:kDoD0j2F.net
- 自分のことは自分でやれってことだよ
- 488 :名前は開発中のものです。:2014/04/06(日) 16:07:09.03 ID:4sjYlVDb.net
- だねぇ
>>480,>>485
完成させてからのリファクタリングの段階ということなら具体的に説明
できるだろうしコード片をうpってもいいだろうし、お話になるのでは
話の振り方次第ですお
- 489 :名前は開発中のものです。:2014/04/06(日) 16:50:44.66 ID:MlcK3xAD.net
- 例えばだけど、こういう場合はどうした方がいい?
class Player
{
public:
Player();
void update()
{
aClass_.update();
bClass_.update();
}
private:
A aClass_;
B bClass_;
};
- 490 :名前は開発中のものです。:2014/04/06(日) 16:51:17.53 ID:MlcK3xAD.net
- class A
{
public:
A();
void update()
{
//メンバ変数とBクラスのx_が必要
}
private:
int a_;
int b_;
int c_;
};
class B
{
public:
B();
void update()
{
//メンバ変数とAクラスのa_が必要
}
private:
int x_;
int y_;
int z_;
};
- 491 :名前は開発中のものです。:2014/04/06(日) 17:03:11.51 ID:sV4Btc1C.net
- >>490
class Aの前にclass B;を書けば良いんじゃね?
- 492 :名前は開発中のものです。:2014/04/06(日) 17:10:52.22 ID:7eM4W795.net
- 横からだけど
とりあえず動作すれば良いってだけならクソ回答としてupdateの引数にそれぞれ渡してあげる
渡し方はゲッターとかクソだけど
- 493 :名前は開発中のものです。:2014/04/06(日) 17:34:28.11 ID:tqEQPRwf.net
- 素人意見だがPlayerにabcxyz持たせて引数付きupdate作るとか
PlayerのupdateかprivateにupdateA,updateB作ってべた書きとか
AとBくっつけるとか
俺はどうしても他で必要にならない限り分けない、
enemyで必要とかになればそもそも一つ前にcharacterとか作って両方に持たせるとか
- 494 :名前は開発中のものです。:2014/04/06(日) 19:31:11.73 ID:3nuwa43P.net
- >>489
クラスAとBが相互依存してるから設計しなおす
- 495 :名前は開発中のものです。:2014/04/06(日) 20:11:48.21 ID:4sjYlVDb.net
- 言いたい事は全部言われてた
@AとBは合体だ!フュージョン!
AAとBで壁パスだ!ダブルディスパッチ!
BPlayerが面倒見ろ!メディエーター!
AとBが具体的に何なのか分からないとアレだよな
プレイヤーの所有物で、相互作用(値のやり取り)がある二つのもの。
しかし、プレイヤーとの間に作用はない。
ダウジングのアレとか?
- 496 :名前は開発中のものです。:2014/04/06(日) 20:19:27.91 ID:kDoD0j2F.net
- 合体魔法をプレイヤー複数人で打つとする
トリガーとなるプレイヤー一人が発動したら周囲のプレイヤーの合体魔法用のメソッドを呼ぶ
メソッドの中ではそのプレイヤーのmpを減らしたりクールタイムを追加したり硬直したりする
トリガープレイヤーはそのメソッド呼ぶだけだから、もしかしたらプレイヤーによって処理は違うかもしれないが、とにかくそのプレイヤーは合体魔法に参加した
メソッドの返り値で成否を確認してもいい
その複数のプレイヤーの中心の座標に合体魔法を発動するなら、その計算処理はトリガープレイヤーがやる
- 497 :名前は開発中のものです。:2014/04/06(日) 20:22:50.98 ID:kDoD0j2F.net
- >>490
AとBの使用用途を書け
シチュエーションによって考え方が変わり、考え方に依存するからオブジェクト指向が最も効率いいとされて普及してる
- 498 :489:2014/04/07(月) 10:11:55.44 ID:/pjQGnIZ.net
- >>497
Aクラスはキー入力の処理
Bクラスはキー入力後の移動処理と当たり判定
- 499 :名前は開発中のものです。:2014/04/07(月) 12:25:22.90 ID:/OCJvUrM.net
- 最近は全部hppで書くのか?
ちゃんと.hと.cpp分けろよ
- 500 :名前は開発中のものです。:2014/04/07(月) 20:27:14.10 ID:bPq5EneU.net
- >>498
A…キー入力の処理
↑B.x_ ↓A.a_
B …キー入力後の移動処理と当たり判定
A→Bのデータの流れは分かるが、B→Aのデータの流れは何だ?
フォースフィードバック?
俺はこういう小出しの後出しジャンケンは別に気にしないけど
完成後のリファクタリングの段階なら「具体的に」書けるっしょ?
そろそろ誰かがキレると思うよ
- 501 :489:2014/04/08(火) 07:12:29.49 ID:mcCDKO91.net
- >>500
なんかごめん・・・
とりあえずこの質問はスルーってことでorz
- 502 :名前は開発中のものです。:2014/04/09(水) 00:58:15.38 ID:wd1GU5kL.net
- テンプレートのせいか全部ヘッダ(h, hpp)に全部書く奴いるけど
面倒くさくてもC++としてはちゃんとヘッダとソースは分けるべきだよ
- 503 :名前は開発中のものです。:2014/04/09(水) 01:28:10.85 ID:f0hevqdx.net
- >>502
あるべき論なんて一考にも値しない。
アホは、何故そう考えるのか理由を述べない。
- 504 :名前は開発中のものです。:2014/04/09(水) 08:02:26.21 ID:zim/sso+.net
- 煽るだけで何も説明しない人による華麗なる自虐芸
- 505 :名前は開発中のものです。:2014/04/09(水) 10:52:16.89 ID:uf/6C2tB.net
- レースゲームのAIってどうやってるの?
経路探索だけで市販のゲーム風に出来るの?
- 506 :名前は開発中のものです。:2014/04/09(水) 12:11:54.87 ID:0loekIA0.net
- 幾つか方法はあるが、コース上に複数の「点」を作っておいて
順番にそれを通過するように組む……というのが単純かな?
- 507 :名前は開発中のものです。:2014/04/09(水) 12:53:17.52 ID:HhpB/vqN.net
- 多数の車が走ってて接触しないようにコース補正とか大変そうだな。
- 508 :名前は開発中のものです。:2014/04/09(水) 13:04:35.78 ID:6ESwZ9mm.net
- リアル思考でない限り見えないところは適当だろ
多少ぶつかってもペナルティがほとんどないとか
ありえない速度でカーブ曲がってたりとか
- 509 :名前は開発中のものです。:2014/04/09(水) 13:16:31.51 ID:ZCvd+vVA.net
- カービィのウエライドのデバッグモードを録画した動画がニコニコにあるからそれを見るといい少しはマシになるだろう!
- 510 :名前は開発中のものです。:2014/04/11(金) 00:20:28.36 ID:GEtB1yKl.net
- 決められたパスを ヘ(^o^)ヘ
|∧
/
/
ただなぞるよりも (^o^)/
/( )
/ / >
(^o^) 三 選んだ自由に
(\\ 三
< \ 三
..\
(/∀・) 傷付くほうがイイ!
( /
/く
- 511 :名前は開発中のものです。:2014/04/12(土) 02:15:31.36 ID:fxOCMkQi3
- こっちだと規制されてナインかいな
- 512 :名前は開発中のものです。:2014/04/12(土) 22:13:32.52 ID:Zyf8FLOE.net
- ちょっとわかんないからサッカーで説明して
- 513 :名前は開発中のものです。:2014/04/12(土) 23:44:55.21 ID:0ybV74Ha.net
- 初めて作ったゲームは目標に向かって一直線に飛ぶ意味わからんハエみたいなシューティングゲームだった
- 514 :名前は開発中のものです。:2014/04/13(日) 10:10:40.70 ID:/fZAahnL.net
- プログラム全く関係なくて物理の話で悪いんだけど、戦車が止まってる時と高速で動いてる時に大砲を撃った場合の大砲の速度って違うよね?
ググってもそれらしき情報が出てこないんだけど、具体的に方程式的なのってあるの?
- 515 :名前は開発中のものです。:2014/04/13(日) 10:15:03.46 ID:WZFk6ORN.net
- 戦車の速度+大砲の初速
これじゃないの?
- 516 :名前は開発中のものです。:2014/04/13(日) 10:22:56.57 ID:P+5kfwmh.net
- ベクトル合わせるだけじゃん
- 517 :名前は開発中のものです。:2014/04/13(日) 14:11:27.24 ID:8it2YQcZ.net
- もちろん空気抵抗やらゲームバランスやら考慮するなら変わってくるけどな
- 518 :名前は開発中のものです。:2014/04/20(日) 10:51:05.10 ID:b2XGGGld.net
- 矩形判定を3次元に拡張したのがAABB判定だと思う
- 519 :名前は開発中のものです。:2014/04/20(日) 14:59:59.27 ID:It9vI7xg.net
- 各辺が軸に平行、という前提でいいの?
- 520 :名前は開発中のものです。:2014/04/20(日) 16:02:57.62 ID:Lsg8M/g2.net
- >>519
それで大丈夫
まあさすがに回転してるのは無理だし・・・
- 521 :名前は開発中のものです。:2014/04/20(日) 16:18:17.37 ID:2PHJETXp.net
- それは簡単なんでないの
上辺が相手の下辺をより上&&下辺が相手の上辺より下
を3軸分やればいいだけなのでは?
回転する直方体の衝突判定ってまるぺけになかったっけ?
- 522 :名前は開発中のものです。:2014/04/20(日) 17:29:26.22 ID:It9vI7xg.net
- 最初から「平面上での矩形同士の当たり判定」と考えるから、そこから応用しにくいんじゃないか?
直線上で線分同士が重なってるかどうか?という判定があって
単位、それを2回やったのが矩形同士の当たり判定だと考えれば良い。
そうすると、3次元や4次元(?)も、そのまま使えそうだろ?
- 523 :名前は開発中のものです。:2014/04/22(火) 06:39:03.06 ID:2qdEj7/z.net
- スーパーマリオ64風のゲームを作ってるんだけど、ステージとプレイヤーの当たり判定ってどうすればいいの?
一応球体の当たり判定と線分の当たり判定でやってるんだけど、坂を下ろうとするとジャンプするように落ちていくっていう・・・
- 524 :名前は開発中のものです。:2014/04/22(火) 07:04:26.37 ID:Xs5gC1x8.net
- ゲームエンジン、物理エンジンの吟味から。
いいやつ教えてくれ。
- 525 :名前は開発中のものです。:2014/04/22(火) 07:13:32.39 ID:Ld5gvQeA.net
- >>523
斜めに移動させる
- 526 :名前は開発中のものです。:2014/04/23(水) 20:54:31.77 ID:wDU0qJca.net
- DXライブラリを使っているのですがタイトル画面やゲーム画面でループを変えるべきでしょうか
一つのループでswitchを使ってシーンを変えているのをいろんなサイトで見ますがこういう処理が当たり前なのでしょうか
- 527 :名前は開発中のものです。:2014/04/23(水) 20:58:04.86 ID:FTq0ixvH.net
- stateパターンオヌヌメ
- 528 :名前は開発中のものです。:2014/04/23(水) 21:00:21.88 ID:zNP7HvPv.net
- 俺も最初は画面ごとにループ変えてたけど、ループはひとつにまとめるようになったな。
理由は、ループは違っても共通のやること(キー入力とか画面出力処理)があって
そういうのを画面のループごとに別々に処理させてると管理が面倒だから。
(もちろん共通処理として関数化してはいたが、それでも面倒だった)
- 529 :名前は開発中のものです。:2014/04/23(水) 21:36:36.02 ID:wDU0qJca.net
- >>527
なんですかそれ
>.528
なるほど
- 530 :名前は開発中のものです。:2014/04/23(水) 21:48:10.54 ID:a2O6zNfs.net
- >>526
ループ自体は1つにして、そこから何らかの方法で振り分けるのが定番。
複数ループは即「やめとけ」って言われるレベル。
そこだけ守れば、あとはifで関数に投げるなり、switchで分けるなり、好きなようにすればいいと思うよ。
stateパターンについては、処理を振り分けるアルゴリズムの1つだけど
まあ、別にいいんじゃないかな。
- 531 :名前は開発中のものです。:2014/04/23(水) 23:54:04.86 ID:FTq0ixvH.net
- >>529
ググれ
- 532 :名前は開発中のものです。:2014/04/24(木) 08:45:54.28 ID:wxyjU1yy.net
- >>526
Yes
というか、君にループを分けるという発想を持たせた本かサイトか分からんが著者を呼んでこいぶっ飛ばしてやんよ
- 533 :名前は開発中のものです。:2014/04/24(木) 09:15:53.69 ID:1SkTvrzJ.net
- データベースといい会社組織図といいマトリクス型はなぜ好まれないのか
- 534 :名前は開発中のものです。:2014/04/24(木) 09:46:36.37 ID:XVAalfN1.net
- >>532
参考資料などがなかった場合、半分くらいは、
真っ先に思いつくのがループを個々に用意する方法のような気もする
- 535 :名前は開発中のものです。:2014/04/24(木) 10:21:00.95 ID:7sQk5lBb.net
- オブジェクト指向的に考えるとオブジェクトごとに独立したループが存在してるのもあり得るしな
OSのフレームワーク含めてスレッドセーフな実装があまりない事にがっかりしたり
- 536 :名前は開発中のものです。:2014/04/24(木) 11:59:52.01 ID:1ftwUtau.net
- そのループ(というか一連の処理)の意味合いを無視して設計空論しても意味ねー
たかがシーン遷移でぶん回すループを、複数個所にコピペベースでおく意味がねー
- 537 :名前は開発中のものです。:2014/04/24(木) 12:13:26.57 ID:47DD1/Qn.net
- ループ型を嫌う人はシーン数が数十個を越えてもswitchで分岐して作るのか、大変だなwww
- 538 :名前は開発中のものです。:2014/04/24(木) 12:53:05.17 ID:1ftwUtau.net
- イミフだろ。どの案でもループ必須なのに、ループ型ってなんだよw
- 539 :名前は開発中のものです。:2014/04/24(木) 13:22:18.45 ID:fX1ni8oz.net
- ポリモーフィズムか関数ポインタ使えよ
- 540 :名前は開発中のものです。:2014/04/24(木) 14:53:44.57 ID:47DD1/Qn.net
- で、数十の関数名やクラス名をわざわざ考えるのか、面倒だな
- 541 :名前は開発中のものです。:2014/04/24(木) 16:29:40.03 ID:LCot+zJd.net
- ループが別々にあったら前のループにどうやって戻るんだ?
goto?
- 542 :名前は開発中のものです。:2014/04/24(木) 16:45:42.04 ID:lgj86FWp.net
- ループ内にループが入ってる
- 543 :名前は開発中のものです。:2014/04/24(木) 17:08:30.80 ID:LCot+zJd.net
- その発想はなかった
- 544 :名前は開発中のものです。:2014/04/24(木) 17:46:16.58 ID:VQozCS4c.net
- ループザループ
- 545 :名前は開発中のものです。:2014/04/24(木) 18:52:19.44 ID:GSyZUE1j.net
- >>540
シーンの数が数十ってどんだけ大規模なゲーム作ってんのw
- 546 :名前は開発中のものです。:2014/04/24(木) 19:03:46.70 ID:AvrqiUr+.net
- C++でゲームを作ろうとすると
ゲームというよりゲームエディタになってしまう
- 547 :名前は開発中のものです。:2014/04/24(木) 19:18:31.92 ID:wxyjU1yy.net
- >>546
ゲームを作ってたつもりがエフェクトエディタが完成していた私のことをなぜ知っている
- 548 :名前は開発中のものです。:2014/04/24(木) 19:23:13.77 ID:47DD1/Qn.net
- >>545
ドラクエ3程度
- 549 :名前は開発中のものです。:2014/04/24(木) 19:36:08.29 ID:7gC8mbT8.net
- >>548
その数十のループを1ソースにまとめるってとんでもないスパゲティだなw
完成すんのそれw
- 550 :名前は開発中のものです。:2014/04/24(木) 19:54:33.85 ID:1SkTvrzJ.net
- つーかシーン(画面)をクラスで1:1で管理して、
次回どのシーンを描画するのかポインタ返すってやり方の方がスマートじゃね?
- 551 :名前は開発中のものです。:2014/04/24(木) 20:37:26.16 ID:47DD1/Qn.net
- 画面の上から下に順番に動作しないと理解出来ないから今のやり方でやってるんだけどね。
関数ポインタやクラスで分けるとあちこちに跳びまくるよね?ソレも嫌だから今のやり方でやってきた。
けどまあ、流れが判らなければ図を描けば済む話か。それでも、今の段階でやり直すのは……ん?
マップや戦闘のメインのシーンは今のままで良いな。サブのシーンの扱いは、直してみるかな?
ちょっと寝かしていたソースだが、色々と検討してみるか。
- 552 :名前は開発中のものです。:2014/04/24(木) 20:41:28.50 ID:XVAalfN1.net
- >>540
世の中にはディレクトリとか名前空間って概念があるから、便利なものよな
- 553 :名前は開発中のものです。:2014/04/24(木) 20:55:45.26 ID:7sQk5lBb.net
- ポリモーフィズムで関数の名前考えなきゃならないてどういう状況だよ
クラス名なんて実装したいシーンの名前をそのままだから考える必要ないし
- 554 :名前は開発中のものです。:2014/04/24(木) 22:24:05.32 ID:/wenCDDH.net
- 中身は空でいいからすべての遷移とデータの受け渡しくらい先に設計して実装しましょう。
- 555 :名前は開発中のものです。:2014/04/24(木) 22:35:04.46 ID:1SkTvrzJ.net
- プログラミング自体に慣れてないんだろうけど
一人でコード組むなら図なんて書いたりしないからな
頭の中の仕様書通りにコード打つだけなんだから
- 556 :名前は開発中のものです。:2014/04/24(木) 22:39:32.56 ID:1SkTvrzJ.net
- ポリモーフィズム使うならむしろ名前は考えなくていいだろ
- 557 :名前は開発中のものです。:2014/04/24(木) 22:41:52.64 ID:1SkTvrzJ.net
- 普通はポリモーフィズムで大まかに分岐した後関数ポインタで細かく分岐するよな
背景に3Dフィールドを表示したまま半透明なステータス画面を描画したいとか
- 558 :名前は開発中のものです。:2014/04/24(木) 23:29:46.37 ID:/YmGGjJz.net
- クラスや関数を分けると処理が飛んで困るってstaticおじさんか
- 559 :名前は開発中のものです。:2014/04/24(木) 23:39:57.11 ID:XVAalfN1.net
- ポリモーフィズムの実現手段の1つとして関数ポインタが使われることもあるんだから
その表現はちょっとおかしい気がする
いや言いたいことは分かるけどね?
- 560 :名前は開発中のものです。:2014/04/25(金) 01:06:43.73 ID:8lxSsrEc.net
- なんでこういう話になったら、いちいち相手を馬鹿にする人間が出てくるのかね。
- 561 :名前は開発中のものです。:2014/04/25(金) 06:16:12.48 ID:GoYRAt3T.net
- 数十のクラスが複雑に入り組むプログラムなんて作れない(能力が無い)からでは?と予想
- 562 :名前は開発中のものです。:2014/04/25(金) 07:46:12.69 ID:XsfFQEHl.net
- >>561
いいウィットだな
- 563 :名前は開発中のものです。:2014/04/25(金) 09:30:36.62 ID:jXAfeA6F.net
- >>557
こういうのどうやって実装すんの?説明してるようなサイトがあったら教えてちょーだい
- 564 :名前は開発中のものです。:2014/04/25(金) 09:42:20.41 ID:XsfFQEHl.net
- Stateパターンによる階層付きシーン遷移の方法は、確かセガ本あたりに載ってたような記憶がある
- 565 :名前は開発中のものです。:2014/04/25(金) 09:54:22.08 ID:IVfFtFPz.net
- ゲームプログラマになる前に覚えておきたい技術
ひらしょー本、セガ本
http://www.shuwasystem.co.jp/products/7980html/2118.html
http://www.shuwasystem.co.jp/gpro-sp/index.html
- 566 :名前は開発中のものです。:2014/04/25(金) 10:04:41.29 ID:jXAfeA6F.net
- 昨日ちょうどそのセガ本の話が有名な同人プログラマのネット配信で出てたわ
「その本はプログラマになる前じゃなくてなった後に読む本だ」って言ってた
- 567 :名前は開発中のものです。:2014/04/25(金) 10:18:56.59 ID:cWxmDdU5.net
- その本って学生レベルでも中の下くらいだろ
- 568 :名前は開発中のものです。:2014/04/25(金) 12:50:45.98 ID:bu2wQqL4.net
- >>561
というか、そもそもデバッガでソース追えないという話に帰結しそうなのだが。
関数の中とかに「飛ぶ」訳ですし。
今後の事もあるから、「飛ぶ」事に慣れるのが肝要だと思いますけどね。
- 569 :名前は開発中のものです。:2014/04/25(金) 15:11:16.15 ID:uQbX0MMa.net
- セガ本で難しかったらgemsとか見たらもう発狂だな
- 570 :名前は開発中のものです。:2014/04/25(金) 15:22:16.96 ID:5DdHErYn.net
- 14歳からはじめるC言語わくわくゲームプログラミング教室
著者:大槻有一郎
http://www.rutles.net/products/detail.php?product_id=392
かなりの素人向け、図書館にあるかもしれない。
内容はこれ、http://www.rutles.net/download/217/
- 571 :名前は開発中のものです。:2014/04/25(金) 16:40:46.26 ID:jXAfeA6F.net
- ゲームプログラマの新人でも面接時の作品提出では皆C+DirectX直打ちの人ばかりだようんたらかんたらという
流れの中で言ってたから、難しいというか本に頼らずともネットで情報集めてとにかく作れって感じだった。
その人自体もオブジェクト指向とか意味わからんでゲーム作ってるとか言ってるけど、
同人だけじゃなくコンシューマ機のゲームプログラムを1人で担ってるような人だし、
要は本見て文法覚えるより、汚くていいからとりあえず作品完成させろってことかと。
- 572 :名前は開発中のものです。:2014/04/25(金) 17:46:46.24 ID:WhIg+aCP.net
- >>571
とりあえず完成させろってのはその通りだな
ここでウンチク垂れ流してても自分の作品は完成させたことないってやつは多そう
そう、私の事ですorz
- 573 :名前は開発中のものです。:2014/04/25(金) 18:37:51.58 ID:kjeLMb9X.net
- directx直打ちじゃないけど大手新卒通ったわ
- 574 :名前は開発中のものです。:2014/04/26(土) 01:38:49.39 ID:jf1SN+DQ.net
- ゲームコーディングコンプリートって本にはGameLogicってクラスでゲームの状態を切り換えている
ソースコードはネット上にあがってるぞ
- 575 :名前は開発中のものです。:2014/04/26(土) 13:10:08.96 ID:2tKTewnx.net
- ぱっと見た感じ、キューかなんかで格納してる?
- 576 :名前は開発中のものです。:2014/04/26(土) 19:33:37.45 ID:x5oOyDOe.net
- スパロボみたいなゲームだと
・フィールドシーン
・戦闘シーン
・アドベンチャーシーン
・シナリオ準備シーン
みたいな感じに大別されるよね
シーンはキー入力の挙動も変わるから
それも内包しないといけないよね
- 577 :名前は開発中のものです。:2014/04/26(土) 19:37:39.56 ID:IEmpvB3E.net
- メニューとかの後の分岐はどうやってるの?
- 578 :名前は開発中のものです。:2014/04/26(土) 19:58:38.34 ID:3cite/BR.net
- http://i.imgur.com/C0gfdIL.jpg
これがPC98ロードランナーのチャートで、
イニシャライズ以下がゲームループになってる。
- 579 :名前は開発中のものです。:2014/04/26(土) 20:05:42.07 ID:2tKTewnx.net
- デモ読み込みはゲームループ外で、実際のデモ画面はループ内なんだな、面白い。
俺が思ってるデモ画面と別のものかもしれんけど。
>>576
当たり前っちゃ当たり前だけど、
フレームワークなりハードウェアなりから、キー情報を取り出したり使いやすいよう加工するのは共通部分で、
右キーで1マス動かすとか、そういう部分は各シーンのロジックで処理するのが良いんじゃない?
>>577
メニューって、「じゅもん」→「メラ」→「スライムA」 みたいな
シーン中に行われる多層型のメニューのこと?
- 580 :名前は開発中のものです。:2014/04/26(土) 21:29:25.57 ID:5LBrFF8V.net
- ポップアップメニュー出しながらもカメラや移動とか一部の操作はできるようにするとかだと
優先度とかそのキーで処理済みかの情報が欲しいから
シーンや入力が欲しいオブジェクトが欲しいキーを入力マネージャに登録しておいて
優先度の高い特殊なキーの組み合わせだけ先に処理して
あとは上位に位置するオブジェクトからキーを拾って処理して未処理は下に投げるとか
WindowsのWM_CHARを参考にしたキー処理終わってから各Updateみたいな事になってるけど
重複する事もあるキー入力の切り分けをシンプルに実装する方法ないかな
- 581 :名前は開発中のものです。:2014/04/26(土) 22:11:57.41 ID:x5oOyDOe.net
- キー処理用スレッドを作ってGetAsyncKeyStateを回すとか
- 582 :名前は開発中のものです。:2014/04/27(日) 03:54:19.08 ID:WYXfeo+B.net
- よく分からん質問だけどUIコンポーネントの階層でやれば?
class Parent : UI {
UI* child;
void update(Event* e){
// 特殊キー
bool isCopy = Key::isHold(Key::LCtrl) && Key::isHold(Key::C);
// 子コンポーネント先
child->update(e);
// 子コンポーネントでキー入力が確定した
if(e->isKeyEvent == false) return;
// このコンポーネントのキー入力
bool isThis = Key::is ... ;
}
};
class Child : UI {};
- 583 :名前は開発中のものです。:2014/04/27(日) 10:28:25.38 ID:C+qpjQzl.net
- >>580
ポップアップメニューはモーダルなインタフェースだから
ある1つのオブジェクト(または選択されたオブジェクト群)を集中して操作しているのに
関係がないオブジェクトを操作ができるのはおかしくない?
- 584 :名前は開発中のものです。:2014/04/27(日) 10:46:42.01 ID:w1gNzEbH.net
- 恐らくだけど、ここでのポップアップメニューは一般的なGUI部品のソレではなくて、
fpsでよく利用されてるポップアップする選択形式のウィンドウの事でね。
wasdで移動しながらメニュー表示キーを押す事でソレが表示され、マウスカーソルでメニュー選択できる、みたいな。
とりあえず>>582で問題ないと思うけどね。
- 585 :名前は開発中のものです。:2014/04/27(日) 18:14:34.21 ID:Pq1XXwa+.net
- >582のままだと何個か同時押ししてる時に子供がキー処理しちゃったら
親は欲しくて子供では未使用のキー情報取りたくとも来なくない?
- 586 :名前は開発中のものです。:2014/04/27(日) 18:30:43.78 ID:ZxV1P0nx.net
- どういう状況?
- 587 :名前は開発中のものです。:2014/04/27(日) 18:38:37.60 ID:Pq1XXwa+.net
- メニューが子供でWASDで移動してるとして押しっぱなしで
メニューの選択を動かす矢印やショートカット等の何らかのキー押したら
移動のキー処理が省かれ、結果移動が止まる
- 588 :名前は開発中のものです。:2014/04/27(日) 19:14:17.90 ID:ZxV1P0nx.net
- ああ、なるほど。
あんまりPCでゲームやらないので分からんのだけど、市販ゲームだとキーアサインはどうなってるのかな。
メニューを開いてない状態で使えるキー(デフォルトだとWASDとか?)は、メニュー画面で何の処理にも使われないような感じ?
- 589 :名前は開発中のものです。:2014/04/27(日) 19:44:36.31 ID:DG4EJccZ.net
- 使うキー全てを押されているか1つ1つチェックしていけばいい
- 590 :名前は開発中のものです。:2014/04/27(日) 19:59:45.12 ID:8WD0svuP.net
- 市販ゲームを買って調べろよ
知らないとこにゲームを作るなんてアホなの
LINEをやったこと無いのにLINEスタンプを作って儲けようとするアホと一緒
- 591 :名前は開発中のものです。:2014/04/27(日) 20:22:36.88 ID:ZxV1P0nx.net
- >>590
全く意味は分からんが、何か気に触ったようなのでスマン
- 592 :名前は開発中のものです。:2014/04/27(日) 21:47:11.67 ID:zcnpepzc.net
- RPGなどの、キーを1回押したら次のマスまで移動するようなゲームの衝突判定は
自キャラの位置と壁の位置を二次元配列で管理できるので作れるのですが、
アクションゲームのように、キーを1回押したら数ピクセルしか進まないような
ゲームの場合、マップチップエディタでマップを作った場合、衝突判定はどうするのでしょうか?
- 593 :名前は開発中のものです。:2014/04/27(日) 22:33:28.11 ID:vcLDHUdb.net
- 衝突判定は、全部が計算で出る。 二次元配列で管理と同じ。
- 594 :名前は開発中のものです。:2014/04/27(日) 23:24:50.87 ID:ZxV1P0nx.net
- >>593
ソース見てみないと分からんけど、今まで1対1で対応するような当たり判定しかやってなかったので
そのままでは応用が効かないって話じゃない?
>>592
こういう場合に昼用となるのは、ある範囲とある範囲同士が、
座標上で重なっているかどうかをチェックする、という処理が必要となる。
少し前にも似たような話題があったが、
まず1次元上で、線分Aと線分Bが重なっているかどうかを判定する処理を考えてみよう。
+---- A ----+
0----------------------------------------X
+-------- B --------+
答えを言ってしまうが、Aの右端がBの左端より右側」にあり、Bの左端がAの右端より左側にあるとき
線分AとBは重なってると言えるのが分かる。
これで少なくともX軸から見た時に重なって見えるかどうかを判定することが出来る。
じゃあこれをもう一度、Y軸に対してやれば、結果として重なってるかどうか分かると思わないかい?
一応、この判定には欠点があったりするけど、そのへんは詳しい諸兄に任せる
- 595 :名前は開発中のものです。:2014/04/27(日) 23:39:37.39 ID:+r7oKZO8.net
- 592の質問ってそういうレベルの話なのか。
もっと複雑な話かと思った。
マップチップでブロック単位(要するに矩形判定のみ)しかしないんだったら
593の言うとおり2次元配列管理でいいんじゃないかな。
座標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る。(小数点以下切り捨て)
たとえばマップチップのサイズが 16*16 でマップデータが二次元配列に格納されてるとしたら
(100,150) の部分は二次元配列でいう (6,9) の部分という事になる。
あとはRPGなどと同じように衝突判定すればいい。
- 596 :名前は開発中のものです。:2014/04/27(日) 23:47:48.15 ID:zcnpepzc.net
- >>593-595
ありがとうございます!
>座標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る
この考えが欠けてました。言われれば当たり前のことなのに1人で悩んでると全然思い浮かばない(´・ω・`)
- 597 :594:2014/04/28(月) 01:02:00.85 ID:BBr+Jrn/.net
- >>595
あー、そっちか
お恥ずかしい
- 598 :名前は開発中のものです。:2014/04/28(月) 09:50:59.01 ID:GzOhtwBz.net
- それだけだと自キャラがどのチップ上にいるかしかわからんから
壁と自キャラが重ならないようにするにはちょっと工夫いるんじゃない?
例えば自キャラの上下左右全部で衝突判定するとか
- 599 :名前は開発中のものです。:2014/04/28(月) 14:28:53.40 ID:uu2sZY8y.net
- そんな必要ないよ。
自分の位置より進行方向1ブロック分をチェックして障害物なら動かなくすればいいだけ。
- 600 :名前は開発中のものです。:2014/04/28(月) 14:31:26.43 ID:uu2sZY8y.net
- ああ、いや違った。
上と左に関しては進行方向1ピクセル分だった。
- 601 :名前は開発中のものです。:2014/04/28(月) 19:55:37.77 ID:BBr+Jrn/.net
- >>599-600
アクションゲームでそういう処理をするゲームは少なそうだが
- 602 :名前は開発中のものです。:2014/04/29(火) 00:40:51.84 ID:EMV53Qmd.net
- >>530-536
大昔にタスクシステムスレだったかSTGスレだったかにこんな感じのソース
(微妙に違うかもだが)を貼ったが、別にゴチャゴチャ言われなかったけどな
因みに同人STG
int APIENTRY _tWinMain(HINSTANCE,HINSTANCE,LPTSTR,int)
{
try{
boost::shared_ptr<GAMEENV> gameenv(new GAMEENV); //D3D,SOUND,INPUT,USERDATA,etc
boost::scoped_ptr<SCENE> logo(new LOGO(gameenv)); //ロゴ画面
boost::scoped_ptr<SCENE> demo(new DEMO(gameenv)); //デモ画面
boost::scoped_ptr<SCENE> title(new TITLE(gameenv)); //タイトル画面
boost::scoped_ptr<SCENE> config(new CONFIG(gameenv)); //コンフィグ画面
boost::scoped_ptr<SCENE> stage1(new STAGE1(gameenv)); //ステージ1
(…中略…)
boost::scoped_ptr<SCENE> stage8(new STAGE8(gameenv)); //ステージ8
boost::scoped_ptr<SCENE> ending(new ENDING(gameenv)); //エンディング
logo->Run(); //ロゴ画面再生
- 603 :名前は開発中のものです。:2014/04/29(火) 00:42:06.52 ID:EMV53Qmd.net
- while(1){
demo->Run(); //デモ画面再生
switch(title->Run()){ //タイトル画面再生
case TITLEOPTIONTYPE_CONFIG: //オプション画面再生
config->Run();break;
case TITLEOPTIONTYPE_GAMESTART //ゲームスタート
do{
if(stage1->Run() == STAGESELECTTYPE_GAMEOVER)break;
(…中略…)
if(stage8->Run() == STAGESELECTTYPE_GAMEOVER)break;
ending->Run(); //エンディング画面再生
}while(0);break;
}
}
}catch(...){return EXIT_FAILURE;}
return EXIT_SUCCESS;
}
- 604 :名前は開発中のものです。:2014/04/29(火) 01:03:59.54 ID:T7NavjR1.net
- こりゃStateパターンを使えていない時点でゴミっすわ。
バカが書いたコードだと一目で分かる。
面接でこれ持ってきた奴がいたら不採用…と言いたいけど
この程度のバカが偏差値65クラスなわけで
次頭があれば徹底的に叩きなおすことを前提で採用、ってなるレベル。
- 605 :名前は開発中のものです。:2014/04/29(火) 01:31:18.44 ID:l2CWKjf4.net
- それでも俺は、自らコードを曝け出した事に対して尊敬するね。
批判だけなら誰でも出来る
- 606 :名前は開発中のものです。:2014/04/29(火) 01:46:17.29 ID:EMV53Qmd.net
- >>604
http://pc11.2ch.net/test/read.cgi/gamedev/1227748699/181-
当時は高専の学生でしたので
- 607 :名前は開発中のものです。:2014/04/29(火) 01:49:34.15 ID:T7NavjR1.net
- >>608
あー、それわかる!
高専生感がぷんぷん臭う。
俺の職場は理系院生が採用の中心だから
君のコード見ると偏差値70以下!って判定を下しちゃうんだよね…。
- 608 :名前は開発中のものです。:2014/04/29(火) 02:13:49.38 ID:EMV53Qmd.net
- どうか心安らかな日々を
- 609 :名前は開発中のものです。:2014/04/29(火) 02:16:22.74 ID:ZoGLF8y+.net
- んー別にいいんじゃね?
大してシーンも多くないゲームなら充分充分
パターンとかはもっと規模が大きくなって
制御構文使ってたら死ぬ時に使う物だと思うのだが
ということで誰かstateとstrategyの違いを教えてくださいな
ググってもイマイチ腹に落ちなくてなあ…
- 610 :名前は開発中のものです。:2014/04/29(火) 03:18:14.89 ID:51TE7qv/.net
- 高専生感というとても具体的な指標
これが偏差値70以上の力だと言うのか・・・
- 611 :名前は開発中のものです。:2014/04/29(火) 08:43:51.10 ID:7WDDZUtT.net
- これdemo->Run()の中に別のゲームループがあるって事になるんだろ。
つまり>>528って事だろ。
ところでupdate()とdraw()に分けないのかな。
コンテンツロスト時の再描画とか、各シーンで個別に実装とかだるいっしょ。
- 612 :名前は開発中のものです。:2014/04/29(火) 10:25:45.81 ID:EMV53Qmd.net
- >>611
当時のソースは実家のPCに眠ってるのでうろ覚えなんですが、D3D9などの
デバイスロスト時の対応などはGAMEENVクラスに押し付けてました
描画と、ゲーム内時間発展のサイクルは独立。フレームスキップしてました。
描画は60⇔30⇔15[fps]の半固定。
時間発展の刻み幅は1/60[sec]固定。シミュレーション部分の計算自体は
とても軽かったので。あとはリプレイデータの都合。デバッグ時の巻き戻し
や早送り(任意時点へ移動)してたので
- 613 :名前は開発中のものです。:2014/04/29(火) 10:41:35.55 ID:EMV53Qmd.net
- >>611
>これdemo->Run()の中に別のゲームループがあるって事になるんだろ。
>つまり>>528って事だろ。
それぞれにゲーム内の時間発展を計算するサイクルがありましたね。
そういう意味ならそうなんだと思います。ゲーム固有の定石とやらは
よく知りません
- 614 :名前は開発中のものです。:2014/04/29(火) 11:00:02.81 ID:R32lOXpJ.net
- 配信でコーディングしてる現役ゲームプログラマさんの仰っていた序列表貼っておきますね
神様 綺麗なコードで完成させられる人
人間 汚いコードで完成させられる人
=================( 越えられない壁 )====================
家畜 汚いコードで完成させられない人
ハエ 綺麗なコードで完成させられない人
ハエに出来るのは人間の邪魔だけと言っていて、なるほどなとリスナー達感心しきりでした。
ID:T7NavjR1見ててこの事思い出しましたね
- 615 :名前は開発中のものです。:2014/04/29(火) 11:23:57.20 ID:k/FZV1V1.net
- 自分は
std::unique_ptr<Scene> scene = new なんかのシーン();
while(1){
scene->update();
scene->draw();
if( scene->isEnd() ) {
scene = std::move(scene->getNext());
}
}
ってやってそれぞれのシーンが次の遷移先返すようにしました
switchを意地でも使いたくてこんな形になった
実際switchの方がよく使われるものなの?サンプル探してもswitch使っているのしか見当たらないから困ってる
- 616 :名前は開発中のものです。:2014/04/29(火) 11:24:47.17 ID:t5QADVCc.net
- >>614
やるじゃんw
- 617 :名前は開発中のものです。:2014/04/29(火) 12:27:00.81 ID:CXcBKCf+.net
- >>615
多分だけど、
if(関数に分けずそのまま羅列) → if(関数分け) → switch → stateパターン
……みたいに進化していくんだと思う。
単に自分がそういう順番でステップアップしたってだけなんだけどさ。
仮に自分が教えるなら、stateパターンによるシーン遷移は後回しにするかな
- 618 :名前は開発中のものです。:2014/04/29(火) 12:35:06.95 ID:CXcBKCf+.net
- ああそうだ思い出した。
シーン遷移をStateパターンで行う方法についてなんだけど、「シーン遷移しないとき」って、どうしてる?
(1) nullを返す
(2) thisを返す
(3) シーン遷移関数を用意しておき、それが呼ばれなかったとき
(4) その他
自分は(2)で、nullを返すときはゲーム終了ってことにしてる。
一般的なStateパターンなら(1)かなあ。
- 619 :名前は開発中のものです。:2014/04/29(火) 12:40:34.16 ID:5MYZPLM5.net
- >>612-613
なるほどthx. sceneの引数でgameenv貰ってるね。
シーン遷移の実装はシーン側は知る必要ないから、
その時の気分とかシーンの数とかで好きにやりゃいいと思うけどね。
Task的に入り組んだ作りしてないのなら、どれでもすぐ遷移図を思い描けるっしょ。
- 620 :名前は開発中のものです。:2014/04/29(火) 16:14:29.11 ID:R32lOXpJ.net
- >>616
曰く、
「クラス設計書貰うけど見ない。クラス流用して他のゲーム作ったことがないから意味がない」
「デザインパターン?何それ?」
「参考書は読んだことがないからオススメ本とか分かんない。ネットと、エラーが出たらググレカスで覚えた」
PSでほとんど1人でプログラム任される人の弁です
- 621 :名前は開発中のものです。:2014/04/29(火) 16:19:59.07 ID:NQBFYHJc.net
- >>620
すげぇ
俺そんなこと言ったことないけど、完全に俺だわ
ただ、作ってたのはPSじゃねぇけど
- 622 :名前は開発中のものです。:2014/04/29(火) 16:20:18.05 ID:KJKa8R89.net
- >>620
その人、協調性が無いから、単独でしか使い道が無い。
- 623 :名前は開発中のものです。:2014/04/29(火) 16:27:51.48 ID:NQBFYHJc.net
- 人事を何とかしないとうちの会社はやばい
ゲー専卒で多少のコミュニケーションはできれば入れてる感じがする
8人中2人もう辞めてるし、てかそれ以前にDXライブラリをインクルードディレクトリへの追加方法わからねぇわ、プログラムが組めねぇわで最悪だわ
1人だけまともというかたぶん俺より組める奴居るけど
うちは研修する余裕なんてねぇってわかってんだろうが、去年入ったやつなんてもう最後の1人を何とか留まらせてるんだから、俺らに人事噛ませろよ
- 624 :名前は開発中のものです。:2014/04/29(火) 16:27:58.51 ID:lMFqMvqX.net
- PSでググレカスてどんな時代?
一昔前の1500円のミニゲーム移植とかの人てことなんだろうか
- 625 :名前は開発中のものです。:2014/04/29(火) 16:31:27.80 ID:GSilIO8H.net
- >>622
ちょっとワラタ
- 626 :名前は開発中のものです。:2014/04/29(火) 16:31:55.46 ID:CPnqQaxX.net
- 従来の手続き型で何本もゲーム作ってきた俺だが
いっちょオブジェクト指向でも勉強するか、とやり始めた結果
もうずっと制作が滞ったままになっている。
なんでこんなにめんどくさいんだ……。
- 627 :名前は開発中のものです。:2014/04/29(火) 16:33:29.90 ID:t5QADVCc.net
- サッカー上手い人がサッカーの技術書読んでうまくなるわけもないし、そういう感覚なんかな。
本読まずにPG覚えるとか想像もつかねえw
- 628 :名前は開発中のものです。:2014/04/29(火) 16:59:24.66 ID:CPnqQaxX.net
- 本は解るようになってから読むと解るけど、解らないうちに読んでも解らないからなw
そもそも本を書くような人は「本を読んだら解る人」だろうから、
本を読んでも解らない人でも解るような本を書けないだろうな。
- 629 :名前は開発中のものです。:2014/04/29(火) 17:12:12.68 ID:dd41HZLf.net
- ビギナーコラムでオブジェクト指向の哲学とか語られてもな
とりあえず作ってみよう系のほうが理解しやすい
ここを弄ったらこう変わるみたいな
- 630 :名前は開発中のものです。:2014/04/29(火) 17:21:14.92 ID:5MYZPLM5.net
- c++だけがoopじゃないっすから…
- 631 :名前は開発中のものです。:2014/04/29(火) 17:40:38.04 ID:lMFqMvqX.net
- >>628
だいぶ使いこなせるようになっても読めない初心者向けの本とかあるから性質が悪い
ゲーム用だけじゃないが初心者の頃はコードがのっててサンプルが作りたい物に近いから買ってみるけど…
Cマガも半分ぐらいしか理解できなかったがいま読み返すと消えてる技術も多くて笑える
- 632 :名前は開発中のものです。:2014/04/29(火) 17:48:57.10 ID:bM1HEdOI.net
- ゲーム系の学生なんだけど、ゲーム会社ってどのくらいのレベルのオブジェクト指向まで要求されるの?
あと、AIとかそういうアルゴリズムも重視される?
- 633 :名前は開発中のものです。:2014/04/29(火) 18:14:47.39 ID:NQBFYHJc.net
- >>632
ぶっちゃけ会社によって様々だからうちの会社で書くけど
新卒には特別な期待はしない
とりあえず、プログラムを作れれば良いや、ゲームまで作れたら儲け物って感じだな
後はただ、人間として基本的なことはできてればそれだけで良い
俺は現場だからこういうのを求めてるけど、人事は即戦力のゲームプログラマーとしてプログラムを作れないやつを入れてくるから何を見てるか同じ会社なのにわからん
とりあえず残業させてないのに毎年1ヶ月以内に1人、3ヶ月以内に半分になる新卒はゲーム作る気がないよね
- 634 :名前は開発中のものです。:2014/04/29(火) 18:23:27.78 ID:EMV53Qmd.net
- マ板でやれ。な
- 635 :名前は開発中のものです。:2014/04/29(火) 18:25:53.36 ID:R32lOXpJ.net
- >>621
スーパープログラマさんかな?w
他の配信者も有名な人だよって言ってたし、多分在京で働いてる業界人なら知ってる人ですよ。
ちなみに、よくプログラマになるにはどうしたらいい?という初見リスナーのレスあるけど
「C++とDirectX(ライブラリ自作)で『完成した』作品を持ってこい」と言ってますね。
本人もデザインパターンを配信中にググって知ったみたいだし
オブジェクト指向とか関係ないんじゃないかと。とにかく完成品をよこせと。
- 636 :名前は開発中のものです。:2014/04/29(火) 18:34:29.77 ID:lKQHJo0L.net
- Q 漫画家になるにはどうしたらいいですが?
A 漫画を描けば漫画家です
プロになりたければ作った作品を持ち込んでください
Q ゲームプログラマになるにはどうしたらいいですか?
A ゲームを作ればゲームプログラマです
プロになりたければ作品を持ち込んでください
- 637 :名前は開発中のものです。:2014/04/29(火) 18:38:17.18 ID:NQBFYHJc.net
- >>636
これ
でも、自分じゃなくて友人が作ったやつを持ち込むクソも居る
- 638 :名前は開発中のものです。:2014/04/29(火) 19:08:58.63 ID:WRxgjGJf.net
- スレ違いの話題振る質問者は不採用です
- 639 :名前は開発中のものです。:2014/04/29(火) 19:14:20.55 ID:t5QADVCc.net
- くだらないループ話を延々続けてる馬鹿に飽きていたからいい暇つぶしになったw
- 640 :名前は開発中のものです。:2014/04/29(火) 20:34:32.58 ID:EMV53Qmd.net
- >>609
>制御構文使ってたら死ぬ時に使う物
>>615
>実際switchの方がよく使われるものなの?
>>619
>シーン遷移の実装はシーン側は知る必要ないから、
>その時の気分とかシーンの数とかで好きにやりゃいいと思うけどね。
>
>Task的に入り組んだ作りしてないのなら、どれでもすぐ遷移図を思い描けるっしょ。
同意です。実装の選択肢は色々あり、個々の状況に応じて選べば良い事かと。
>>602-603の例で言えば、振る舞い的に拡張する予定がなく、実際しなかった
部分なので別に問題なかったですね
元々HSP上がりの人間(周りも同様)だったので手続き型の記述のほうが平易
というのもありました
>>617
State Pattern
switch-case構文
- 641 :名前は開発中のものです。:2014/04/29(火) 20:35:52.86 ID:EMV53Qmd.net
- >>640訂正
末尾の三行は消し忘れです。>>617さんごめんなさい
- 642 :名前は開発中のものです。:2014/04/29(火) 20:52:06.90 ID:CXcBKCf+.net
- >>635
何年か前に、画像表示、パッド入力、音声出力くらいまでは何とか作ったけど
途中で面倒くさくなって、結局DXライブラリに戻ってしまったという残念な経験しかないやw
- 643 :名前は開発中のものです。:2014/04/29(火) 20:55:41.83 ID:EMV53Qmd.net
- >>619
会社帰りにたまにボー●ーブ●イクでチャリンチャリンしてたんですが
転勤先にそれ置いてるゲーセンがなくて悲しみのあまり余暇にパチモン
作りで自分を慰めてるんですが、火器とかAIの部分はStateというかStrategy
というかそんな感じのコードはありますね。条件分岐でダラダラ書いてたら
流石に眩暈がしてきたので
- 644 :名前は開発中のものです。:2014/04/30(水) 00:47:22.57 ID:bEifU6C0.net
- 何を言いたいのかサッパリ分からん
- 645 :名前は開発中のものです。:2014/04/30(水) 01:21:27.75 ID:3yGpFv6B.net
- >>643
パーツとか持ち替えの武器とか大量にあると面倒くさいことになるよね
あの手のアセンゲーっぽいのは俺も好きだが作りたいとは思わないな
- 646 :名前は開発中のものです。:2014/04/30(水) 09:11:19.42 ID:JP5IUHRh.net
- つまらない流れなので誰かネタ振りお願いします><
- 647 :名前は開発中のものです。:2014/04/30(水) 10:28:13.43 ID:vrCaDxEc.net
- 初心者な質問ですみません。
クラスからクラスを呼ぶときってどういう書き方が普通なんですかね?
class A {
public :
static A* me ;
int a ;
A() ;
}
A* A::me ;
A::A() {
me = this ;
}
ってやって A::me->a とかやってるけど、なんかスマートじゃなくて……。
- 648 :名前は開発中のものです。:2014/04/30(水) 11:46:43.01 ID:eqz1Of7R.net
- なにがしたいのかさっぱりわからんけど、それmeにインスタンス入れてるだけであんまり意味なくない?
クラスからメソッド直接使いたいとかなら、メソッドをstaticで定義してクラス名::メソッド名()だけど
- 649 :名前は開発中のものです。:2014/04/30(水) 12:04:25.51 ID:gNDB74Yv.net
- グローバル変数みたいなことがしたいのかな
アクセス可能なオブジェクトを限定するのがオブジェクト指向の組み方だから
アクセスする必要があるクラスにポインタなり参照なり持たせたほうが良いんじゃない
- 650 :名前は開発中のものです。:2014/04/30(水) 12:58:15.72 ID:2hopiA0K.net
- 日本語不自由で変な質問するやつはほっといたほうがいいよ
- 651 :名前は開発中のものです。:2014/04/30(水) 13:13:03.63 ID:8+rqYap5.net
- staticメンバの初期化の仕方の話でねーのん。
最近c++触ってないから間違ってたらすまんけど。
// A.h
class A {
public:
static int a;
}
// A.cpp
int A::a = 10; // 初期化
// main.cpp
void main() {
A::a; // 利用
}
- 652 :名前は開発中のものです。:2014/04/30(水) 13:38:55.27 ID:MPxnDurN.net
- 3Dゲームで経路探索をやってみようと思うんだけど、3Dの位置情報ってどうやって調べればいいの?
- 653 :名前は開発中のものです。:2014/04/30(水) 14:23:59.95 ID:bEifU6C0.net
- 具体的には?
基本的に平面で移動するゲームなら2Dと大して変わらんしだろうし
キューブ状の座標(2Dで言うところのマス目)を移動するだけなら、移動方向に上下という選択肢が増えただけと考えられるし
ビルの中を探索するようなゲームなら、階段やエレベータでエリアを区切ればいい気がする。
- 654 :名前は開発中のものです。:2014/04/30(水) 14:32:28.53 ID:Uak2ZaC3.net
- 何が聞きたいのかさっぱりわからんけど、普通に変数参照すればいいんじゃない?
複雑な地形での経路探索がわからんって話なら、地形の要点にポイント作ってダイクストラ法でいいんじゃないの
- 655 :名前は開発中のものです。:2014/04/30(水) 14:35:02.75 ID:Uak2ZaC3.net
- ごめんダイクストラ法じゃなくてA*か
- 656 :名前は開発中のものです。:2014/04/30(水) 14:50:11.17 ID:49atqyLw.net
- 経路探索
http://samples.jbpub.com/9781556220784/Buckland_AIExecutables.zip
Chapter 5 にあるように 経路探索する。
Chapter 8\Raven_CoarseGraph のようにグラフとして探索する。
- 657 :名前は開発中のものです。:2014/04/30(水) 16:08:24.08 ID:L0vWdcDz.net
- >>655
A*はダイクストラの拡張版で、基本アルゴリズムは重複する部分が大きいから、
大筋外してはいないよ
ゲーム用途の経路探索性能は、A*の方がより最適化されるみたいだけど
- 658 :名前は開発中のものです。:2014/04/30(水) 16:47:29.58 ID:IG+u4GlD.net
- >>647
http://ideone.com/gt21RS
そのコードが何か不明だがこういう振る舞いをするという事がわかってれば好きにしろ
- 659 :名前は開発中のものです。:2014/04/30(水) 22:30:05.62 ID:vrCaDxEc.net
- 647です。皆さん色々すみません。
やりたかったのは、例えばコンフィグデータを一括管理するクラスを作って
他のクラスでそれを使う、ような事です。
例として挙げたソースは簡単に書いただけで直接書き換えたいというわけではありませんでした。
関係ない愚痴ですが、こうやれば動くからこれでいいのかな、と作り進めてても
やっぱりおかしいよな、とまた一から作り直す、を繰り返してて制作が全く進みません……。
- 660 :名前は開発中のものです。:2014/05/01(木) 03:51:25.76 ID:jedbV3SH.net
- http://anago.2ch.net/test/read.cgi/ghard/1387003319/235
↑ ↑ ↑ ↑ ↑ ↑
- 661 :名前は開発中のものです。:2014/05/01(木) 05:10:34.61 ID:z13QLsnT.net
- 唯一のインスタンスを保証するシングルトンではなく、
インスタンスは複数作れるけど、実体は同じものを作っている……っていうアルゴリズムあったよね。
>659の場合だと、その方法使えそうな気がするものの……名前が分からんので教えられん
- 662 :名前は開発中のものです。:2014/05/01(木) 08:21:56.84 ID:3d6d8Z4v.net
- >>659
そんなのグローバル変数でいいだろ
つまんないとこで止まってないで先進めよ
- 663 :名前は開発中のものです。:2014/05/01(木) 09:19:18.98 ID:OWwKad9r.net
- インクルードガードとexternでおk
- 664 :名前は開発中のものです。:2014/05/01(木) 11:26:20.56 ID:HOcvGku/.net
- http://ja.wikipedia.org/wiki/%E3%83%80%E3%82%A4%E3%82%AF%E3%82%B9%E3%83%88%E3%83%A9%E6%B3%95
これをプログラムに直すとどうなるの?
大学数学はさっぱり分からないから誰か教えて
- 665 :名前は開発中のものです。:2014/05/01(木) 12:30:19.75 ID:Fm1fH+z1.net
- >>664
ダイクストラ法は大学数学関係ないぞ
Game Coding Gemsの1か2に解説とソースコードがある
- 666 :名前は開発中のものです。:2014/05/01(木) 12:35:48.55 ID:d2ShpQiQ.net
- >>664
図のアニメーションと解説を読めば分かると思うが…
難解な数学計算無し。少なくとも高校数学の域は逸脱してない。
記号の意味分からない子向けに手続きを文章で丁寧に解説してる。
下手すりゃ厨房でも「コンピュータってバカ正直な事なんだね…」
と感想を述べながら呆れ顔をしてくるレベル
- 667 :名前は開発中のものです。:2014/05/01(木) 12:37:56.10 ID:d2ShpQiQ.net
- ×「コンピュータってバカ正直な事なんだね…」
○「コンピュータってバカ正直な事をやるんだね…」
- 668 :名前は開発中のものです。:2014/05/01(木) 13:21:29.38 ID:d2ShpQiQ.net
- >>662-663
同意
- 669 :名前は開発中のものです。:2014/05/01(木) 13:56:28.60 ID:z13QLsnT.net
- 「馬鹿正直」って感想はさ、たぶんコンピュータへの理解の第一歩だよね?
- 670 :名前は開発中のものです。:2014/05/01(木) 14:18:18.47 ID:d2ShpQiQ.net
- そうなんじゃない?学園祭でマイクロマウスの実演と解説をしてた時の消防や
厨房の反応は楽しかったよ。「かあいい」「頭悪過ぎうー」「きゃはは」
「がんばれー」とかが大半だったけど、眼鏡っ子の厨房が模造紙の解説を
一所懸命に読んでて、繰り出す質問がなかなか賢すぎてこっちが呆れた
- 671 :名前は開発中のものです。:2014/05/01(木) 14:26:30.17 ID:0k+QrX5J.net
- メンバ変数が全部staticのパターンの名前が思い出せない
モノトーンだかそんなような名前だった覚えがあるけど
- 672 :名前は開発中のものです。:2014/05/01(木) 14:27:47.22 ID:d2ShpQiQ.net
- monostateじゃね
使ったことないが
- 673 :名前は開発中のものです。:2014/05/01(木) 16:56:40.77 ID:ZxuEhXPJ.net
- シングルトン モノステート
- 674 :名前は開発中のものです。:2014/05/02(金) 00:13:50.98 ID:5CvmG/6A.net
- 皆さんは描画リストに登録して、Zソートやらしてからとめて描画などしてますか?
2Dで同じようなことを考えてるのですが、描画管理クラスにリストを持たせ、
その管理クラスのメソッドを通してリストへ登録しようとしてます
XNAのSpriteBatchの形が近いです
しかしこの方法だと管理クラスを引数でどんどん渡していかなければいけなく、良い方法がないか探してます
2Dオブジェクトにstaticで管理クラス、または描画リストを持たせた方がいいのでしょうか
設計の話なので明確な答えがないのはわかってます
皆さんの考えを参考程度に聞きたいです
- 675 :名前は開発中のものです。:2014/05/02(金) 00:48:59.22 ID:DPIL44M1.net
- スプライト的な「2Dオブジェクト」を作って、
そこにパラメータ与えて、あとは自動的に描画されるような組み方してるん?
- 676 :名前は開発中のものです。:2014/05/02(金) 01:19:41.25 ID:ZlBT84m3.net
- >>674
>しかしこの方法だと管理クラスを引数でどんどん渡していかなければいけなく、良い方法がないか探してます
依存性があるなら明示する(例えばSetterやコンストラクタで注入するだとか)
というのはOO的には無難なお作法だと思うけど。なんか不都合あるの?
(いちいち記述するのがかったるい、だとか)
まぁ、あまりに広範に渡ってその依存性が確認されるなら、グローバルな
存在、グローバルなサービス、として提供してもいいのでは。尤も、描画
モジュールに依存するモジュールってゲームの中では限定的だと思うけどね
- 677 :名前は開発中のものです。:2014/05/02(金) 01:31:13.85 ID:Ru1dUuzy.net
- 表示するもの {
private IDrawable model;
private Vector2 pos;
private 表示するもの[] children;
public void Draw(描画管理クラス){
描画管理クラス.add(model,pos);
for child in child {
child.draw(管理クラス);
}
}
}
- 678 :名前は開発中のものです。:2014/05/02(金) 06:36:13.80 ID:Bq1H46te.net
- ダイクストラ法ってゴールをコロコロ変える(プレイヤーを追いかける)ことって出来る?
- 679 :名前は開発中のものです。:2014/05/02(金) 07:18:20.71 ID:DPIL44M1.net
- たとえば屋内を探索するゲームの場合、
ある部屋から別のある部屋へ行く方法ってのは基本的に固定なので、最初に各パターンを計算しておけばいい。
上手く追いかけるように動かしたいってことなら、
有名なところで、パックマンの敵アルゴリズムの話がシンプルでわかりやすいと思う。
- 680 :名前は開発中のものです。:2014/05/02(金) 07:57:10.51 ID:gb8xd1Dr.net
- 自キャラの範囲と、敵の範囲と、とりあえず目指すポイント
みたいな表を作っておけば良いのか
- 681 :名前は開発中のものです。:2014/05/02(金) 09:29:13.26 ID:dzhB41LP.net
- >>675
2Dオブジェクトは座標、テクスチャを持ち、描画関数内で管理クラスのリストへ登録
という流れを考えてますので、自動的な描画はしません
>>676
やはりプログラムの最初にsetterで登録が一番無難ですよね
不都合はないのですが、2Dオブジェクト全てが
管理クラスのsetterを持つのが気持ち悪く思えてしまい・・・
描画モジュールに依存するものが限定的とは...ゲーム内では殆どのものが
描画されるものだと思ってましたが違うのでしょうか
オブジェクトを管理したりするものは別だと思いますが・・・
>>677
これは結局引数でどんどん渡していくのでは・・・?
- 682 :名前は開発中のものです。:2014/05/02(金) 09:52:01.66 ID:Ru1dUuzy.net
- >>681
引数で渡していっていいと思う
常に同じ描画管理クラス使うとは限らないし
- 683 :名前は開発中のものです。:2014/05/02(金) 13:12:16.23 ID:6RPuKXq0.net
- >>681
何故「気持ち悪い」のか言葉で説明できるようにしてみれば
どうすればいいのかわかるんじゃない?
- 684 :名前は開発中のものです。:2014/05/02(金) 13:23:32.11 ID:taHVwRQz.net
- リストへの登録を描画関数と分ければ?
登録するデータを戻り値にして呼び出し側で登録するとか
- 685 :名前は開発中のものです。:2014/05/02(金) 19:21:58.74 ID:dzhB41LP.net
- >>682
レンダーターゲットを変えた時などでしょうか
>>683
2Dオブジェクトは例えばスコアや、メニューなどに使用するのに
管理クラスのsetterを常に持ち続けてるから・・・?
>>684
list.add(pObj->draw()); という感じですか?
この場合複数のオブジェクトを描画する時はどうなるんでしょう
スコアクラスは1桁描画を複数回呼ぶと思います
そういう時は戻り値でデータを返せないのでは
結局引数で渡してリストへ登録
または2DObject自身がリストを保持し、そこへ各派生クラスが登録する
という形になってしまうのでしょうか
- 686 :名前は開発中のものです。:2014/05/02(金) 20:24:35.53 ID:tEs8rCVt.net
- ゲームで2つのプレイヤーの画面を並べる時ってどうしてる?
プレイヤーの状態とかエフェクトとかシングルトンで管理していて今まではどこかのクラスから
Game::instance()->registerEffect(new Effect())
みたいにできたんだけどプレイヤーごとにGameを作るようにしたらこれができなくなって
ゲームのインスタンスをあちこちに渡さなきゃならなくなったんだけどこんなことしないでもできる方法ない?
- 687 :名前は開発中のものです。:2014/05/02(金) 20:30:31.53 ID:DPIL44M1.net
- 話の流れがよくわからないんだけど、
renderer.add(PlayerObject); //プレイヤーキャラクターのオブジェクトを登録
renderer.add(EnemyObject); //敵キャラクターのオブジェクトを登録
…みたいなのとは全く別の話?
- 688 :名前は開発中のものです。:2014/05/02(金) 20:32:36.22 ID:DPIL44M1.net
- >>686
Gameクラスってなんじゃらほい?
いわゆるシーンとかシーケンスってやつ?
- 689 :名前は開発中のものです。:2014/05/02(金) 20:37:30.44 ID:Yjnja2zX.net
- >686
シングルトンが用を足さない状態だからやめるのが手っ取り早いけど
とりあえずシングルトンインスタンスの取得にID等の引数もたせれば?
引数違いなら違うオブジェクトを返すてのは実装は容易でしょ
こういうどこでも使えるグローバル変数的な状況で使うシングルトンは嫌いだけどな
- 690 :名前は開発中のものです。:2014/05/02(金) 20:42:33.50 ID:Ru1dUuzy.net
- >>685
レンダリングターゲットを変えたときもあるかもしれないけど、
マルチスレッドで分割してトラバースするこもとあるし。
Direct3D11でコンテキストを複数作れるようになったしね
- 691 :名前は開発中のものです。:2014/05/02(金) 20:45:40.07 ID:Gu2dz6L1.net
- >>685
戻り値をVectorかなんかにしたら
>>686
instance()に引数渡して特定のインスタンス取得出来るようにする
これまでシングルトンだったのが複数必要になった時点で設計見直した方がいいような気もするけど
- 692 :名前は開発中のものです。:2014/05/02(金) 20:54:53.01 ID:tEs8rCVt.net
- 情報不足すぎたうえに色々酷いごめんよ
Effectは別で管理している
シングルトンをやめるからどうするのが良いのかと思って聞いたんだ
ダブルディスパッチで敵の当たった処理とかしているんだけど
class Game {
Enemy enemy[];
}
class Enemy {
void hit() {
if( 死んだ ) { Effect::addEffect(new Effect()); }
}
}
みたいにしててどのエフェクトを使うかはEnemy側で決めるようにしたいからこうなったんだけど
GameにEffectのインスタンス持たせてEnemyにそのインスタンスの参照なりなんなり渡して
if( 死んだ ) { effect->addEffect(new Effect()); }
とかしても良いんだけどなんかしっくりこないんで気になったのよ
>>688
そうなんだけど実際あんまり関係なかった・・・
>>689
うまい設計思いつかなかったんよね
その方法手っ取り早いし良さそうです
- 693 :名前は開発中のものです。:2014/05/02(金) 21:46:30.08 ID:Yjnja2zX.net
- >>692
EnemyはどうしたってEffectへのポインタが欲しいわけで描画の関係からか複数存在してるとなると
初期化などでずっと持たせるのが嫌ならhitかそれ以上に位置するGameから呼ぶ関数に引数として渡すか
EnemyはGameクラスのポインタ位持ってるならGameのほうにAddEffect関数もたせてEnemyはそれを呼ぶか
スレッドセーフでない設計ならEffectポインタのグローバルか静的関数なGetterとSetter用意して
GameオブジェクトごとにEnemy更新前にSetterでGetterの戻り値となるポインタを入れ替え…止めた方がいいな
- 694 :名前は開発中のものです。:2014/05/02(金) 22:17:39.20 ID:DPIL44M1.net
- 実際のコードでは、Effectクラスから派生した HitEffect とか DeadEffect とかを
Enemy内から呼んでるんだよね?
- 695 :名前は開発中のものです。:2014/05/02(金) 22:41:54.83 ID:gb8xd1Dr.net
- GameがEnemyを管理するんだったらEnemyに
エフェクト番号とフラグを持たせれば良いんじゃない
- 696 :名前は開発中のものです。:2014/05/03(土) 02:03:51.33 ID:aTctHTqN.net
- >>687
そんな感じです
ですがそのrendererを渡そうか悩んでます
引数ですとかなり深い(?)ところまで渡す必要があるのではないかという感じです
>>690
引数で渡した方が自由が利きますね
めんどくささと柔軟性のどっちをとるかみたいな感じでしょうか
>>691
座標、テクスチャ、UV、色などのことを考えるとVectorかなんかだときつそうです
とりあえず引数で渡す方向で作ってみたいと思います
オブジェクト指向難しいです...
- 697 :名前は開発中のものです。:2014/05/03(土) 06:24:50.92 ID:aTctHTqN.net
- ああ、文章にミスが
>>696
rendererを渡そうか×
rendererをどう渡そうか○
です
- 698 :名前は開発中のものです。:2014/05/03(土) 14:23:28.87 ID:yzrAO4fX.net
- ヒープ領域のオブジェクトを参照で引数で渡したい時ってどういう風に書けばいいの?
- 699 :名前は開発中のものです。:2014/05/03(土) 16:01:04.13 ID:ZggXQf33.net
- 普通に参照渡しするだけだよ
- 700 :名前は開発中のものです。:2014/05/03(土) 18:27:55.89 ID:Dtrz+is9.net
- void f(A &a);
A *a = new A();
f(*a);
こんな感じゃない
参照って殆ど使った事ないからあってるかどうかわからんけど
- 701 :名前は開発中のものです。:2014/05/03(土) 19:07:15.30 ID:hZKN3J0P.net
- 「ゲームプログラマになる前に覚えておきたい技術」
という本がオススメと言われたんですが、これ持ってる人いませんか?
役に立つ度合いとかアドバイスしてもらえたら嬉しいです
- 702 :名前は開発中のものです。:2014/05/03(土) 19:31:10.25 ID:R+meoZG6.net
- ゲームプログラマになる前に覚えておきたい技術
01 この本はどんな本か
http://www.shuwasystem.co.jp/gpro-sp/
これを読みましたか?
- 703 :名前は開発中のものです。:2014/05/03(土) 20:46:14.95 ID:TVFyIiNS.net
- >>693
やっぱりそれぞれが持つしかありませんかねえ
呼び出し元をparentとかして持たせておくのって普通にやっていることなんですか?
この場合だとEnemy::parentにGameへの参照か何かを持たせるとか
>>694
はいそうです
- 704 :名前は開発中のものです。:2014/05/03(土) 21:38:49.30 ID:XwaCxcGs.net
- 重いので持ち運びには向かない、かな
- 705 :名前は開発中のものです。:2014/05/03(土) 21:46:57.91 ID:XwaCxcGs.net
- >>703
各クラスがどのエフェクトを使うのか?というのをハッキリさせておいて
必要なものだけインクルードするようにすれば、そこまで気持ち悪いことにはならないんじゃないだろうか。
たとえばEnemyクラスは、Effect::GettingItem(アイテム獲得)とかEffect::PlayerDead(プレイヤー死亡)は不要だろう。
それすら気持ち悪いと思うなら(分からんでもない)、
ObserverとかListenerとかCallbackとかその辺に頼るとかでも良いんじゃない?
- 706 :名前は開発中のものです。:2014/05/03(土) 22:35:18.25 ID:Kqu7ExT3.net
- >>700
参照引数は「読むだけ」を意図してる場合が多いからconst付きが多いかな
>>703
>呼び出し元をparentとかして持たせておくのって普通にやっていることなんですか?
>この場合だとEnemy::parentにGameへの参照か何かを持たせるとか
その疑問は>>674-696のやり取りと同じ話っぽいね、俺も>>704-705に同意かな。
依存関係を明示すると違和感を覚えたり気持ち悪くなるのは、大抵の場合
依存関係の認識(or分析)が大雑把。依存関係を明示するとそれが露見しちゃう。
機能分割が大雑把。依存関係を詳細に分析すると広範に絡み合ってて一体でした。
とか。Gameへの参照は、恐らく要らん情報にアクセスする権利も与えてるから
依存関係の明示というより、広範に渡る権力へのアクセス権の譲渡なのかな?
君はこの世界に神になる。俺はいいと思うけどね。というか、はなっから
グローバルなサービスとして提供してしてもいいかもね。完成させてから
リファクタリングしたほうがいい
個人的な短期小規模開発(作り捨て)なら別に問題ない。完成と反省のサイクルよ
- 707 :名前は開発中のものです。:2014/05/03(土) 23:45:58.24 ID:yuGTooJm.net
- 具体的なEnemyなんてアプリ層なんだから泥臭くていいと思うのだが。
- 708 :名前は開発中のものです。:2014/05/04(日) 00:03:34.32 ID:4VZ37tn9.net
- すまん、>704はセガ本が物理的に重いって話のつもりだったんだ
- 709 :名前は開発中のものです。:2014/05/04(日) 00:09:25.10 ID:LNtKUxSS.net
- まあ大概のゲームプログラミング本は重いよね
電子版あるならそっちの方が捗りそうだ
- 710 :名前は開発中のものです。:2014/05/04(日) 07:21:43.07 ID:r1PwGAIh.net
- 描画クラスを作って描画用のインターフェイスを作る
描画されるクラスはインターフェイスを実装
描画クラスはそのインターフェイスをリスト管理し順番に描画
ゲームクラスはデータクラスと描画クラスを管理し
必要に応じてデータクラスを作り、描画クラスに登録
ゲームクラスが当たり判定をして、エフェクトクラスをnew、描画クラスに登録
て感じじゃ駄目なの
- 711 :名前は開発中のものです。:2014/05/04(日) 18:09:40.60 ID:Oce/sxqq.net
- >>701
サンプルプログラムの修正版があるからそれ見て決めたら?
ちなみに独自のライブラリを使ってる
- 712 :名前は開発中のものです。:2014/05/04(日) 21:44:57.67 ID:o3zvQF1I.net
- もし、新幹線できたらな
飛行機乗客が減り、飛行場が苦労する
バス乗客が減り、高速道路が苦労する
結果的に、四国地方の経営破たん
- 713 :名前は開発中のものです。:2014/05/06(火) 09:11:34.47 ID:WKSS3LlW.net
- ポインタに構造体を持たせる場合ってきちんとスマートポインタを使った方がいいの?
- 714 :名前は開発中のものです。:2014/05/06(火) 10:42:16.25 ID:2Ki+N293.net
- >>711
独自ライブラリですかー・・・
ありがとう。ちょっとどっかで立ち読み出来るまでは買い控えます。
- 715 :名前は開発中のものです。:2014/05/06(火) 14:47:05.12 ID:D61HzG9l.net
- >>713
本来スマートポインタはラクをするために使う。あとは好きにしろ
あと言語の使い方一般についての質問はプログラム板のほうがいい
【初心者歓迎】C/C++室 Ver.90【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1395675954/
はい、次の方どうぞ
- 716 :名前は開発中のものです。:2014/05/06(火) 15:47:49.53 ID:C6PkJkWu.net
- そのスレ、ちょっと見たけど罵りばっかじゃないかw
- 717 :名前は開発中のものです。:2014/05/06(火) 16:22:09.99 ID:tFTEVnQV.net
- x64の64bitビルドでのループ変数とかメンバ変数てint,unsigned intとsize_tどっちが最適なの?
DirectXのAPIが32bit幅なのにSTLは64bitみたいに混在してて決め打ちしにくいんだけど
インデックスとして毎回32bitを64bit拡張と変数を32bitにstatic_castと
タイプ量はともかく実行時に効率いいほうにしたい
- 718 :名前は開発中のものです。:2014/05/06(火) 16:27:40.04 ID:D61HzG9l.net
- >>716
報告しなくていい。そういう感想は彼らに直に言ってあげな。陰口より建設的だろ
はい、次の方どうぞ
- 719 :名前は開発中のものです。:2014/05/06(火) 16:28:53.69 ID:D61HzG9l.net
- >>717
かぶったすまん
- 720 :名前は開発中のものです。:2014/05/06(火) 16:44:38.90 ID:C6PkJkWu.net
- >>718
そんな非建設的な事実上機能していないスレに誘導してどうするんだって事だよ。
はい、次の方どうぞ。
- 721 :名前は開発中のものです。:2014/05/06(火) 17:21:27.34 ID:D61HzG9l.net
- >>717
例えばループ変数については普通にint使ってるな
参考までに、科学計算系のライブラリでもそんな感じだったと思うよ
計算速度云々が問題になる場合、気にかける場所はもっと別の所かと
- 722 :名前は開発中のものです。:2014/05/06(火) 20:22:43.10 ID:HhBjBQsT.net
- 32bit環境でもint iをbyte iとかshort iにはしない
あとむやみにunsignedにするとsignedにunsigned加算して警告でたり面倒のもと
- 723 :名前は開発中のものです。:2014/05/08(木) 22:05:56.40 ID:Np2Vdwsy.net
- ローカル変数がautoばかりになってしまうんだけど意図的な型だけ除外しておけば問題ないよね?
constもメンバ関数含めて相当あるけど
- 724 :名前は開発中のものです。:2014/05/08(木) 22:48:55.29 ID:v1IR+nQC.net
- 人間がソースコードを読んだときに
「型が明らかである場合か、あるいは逆に全く意識してほしくない場合にのみ使う……とかにしておけば?
- 725 :名前は開発中のものです。:2014/05/09(金) 09:00:26.26 ID:3cnn0QfE.net
- ローカル変数にauto使うメリットってある?
イテレータの型書くの面倒くさい、位しか思いつかない
- 726 :名前は開発中のものです。:2014/05/09(金) 09:04:31.69 ID:7ikJMhxE.net
- 十分じゃないか
- 727 :名前は開発中のものです。:2014/05/09(金) 13:56:58.03 ID:Kaaj65V1.net
- 型推論って引数に使ったら勝手にオーバーロードしてくれるんだと思ってたんだが、引数とか戻り値には使えないんだな
iteratorの記述を省略するための機能か
- 728 :名前は開発中のものです。:2014/05/09(金) 17:15:23.11 ID:htXiJh1L.net
- そういう用途にはテンプレート関数があるしね
- 729 :名前は開発中のものです。:2014/05/10(土) 00:22:59.13 ID:6TirXj8H.net
- >>725
個人的にはイテレータを簡単に書けるメリットが一番大きいと思ってるが
それ以外で使うとしたら
auto f = new Foo(); //Foo型なのは明らか
とか
//交換
auto tmp = a; //型は明らかではないが意識する必要がない
a = b;
b = tmp;
とかかなあ。
後者は素直にtemplate関数にでも投げたほうが良さそうだけどね
- 730 :名前は開発中のものです。:2014/05/10(土) 10:54:20.51 ID:dAeX94+O.net
- 配列に入ってる複数の要素のうちの一つをポインタに持たせる場合って、スタックのアドレスをポインタに持たせても大丈夫?
- 731 :名前は開発中のものです。:2014/05/10(土) 11:11:37.14 ID:hKETio2L.net
- >>730
「スタックのアドレス」を「スタック上におかれた配列の要素を指すアドレス」と解釈したけど
ttp://ideone.com/yad3h1
その配列が生きている間は問題ない
- 732 :名前は開発中のものです。:2014/05/10(土) 22:40:27.91 ID:+R2ltZ7t.net
- const T& f();
void g()
{
auto t= f();
}
ってすると t は const T& 型になると思ってたけど
実はただの T 型でコピーコンストラクタでひどいことになったことあります
- 733 :名前は開発中のものです。:2014/05/11(日) 18:46:58.77 ID:8qR2WxrE.net
- #include "define/MoneyType.h"
int money[MoneyType.SIZE];
こういう宣言の仕方って出来ないの?
MoneyTypeはenumで
enum MoneyType {
GOLD,
DIA,
SIZE
};
- 734 :名前は開発中のものです。:2014/05/11(日) 19:38:27.89 ID:3XauxJKc.net
- enumはC++11で整数としてあつかえなくなったってwikiに書いてあった気がする
っていうかその使い方わかりにくいしやめた方が
- 735 :名前は開発中のものです。:2014/05/11(日) 19:44:07.91 ID:3XauxJKc.net
- 訂正
static_castでキャストすればいけるっぽい
- 736 :名前は開発中のものです。:2014/05/11(日) 19:59:02.14 ID:yHWGVGOF.net
- GOLD,DIA,SIZEって何かと思ったけど、もしかしてお金の単位なのかな?
- 737 :名前は開発中のものです。:2014/05/11(日) 21:01:42.40 ID:KSscCZAl.net
- MoneyType::SIZEかな?
ただこれだと再定義のエラーが前出たような気がする
- 738 :名前は開発中のものです。:2014/05/11(日) 21:04:03.89 ID:9RoLwWBR.net
- >>733
enum class MoneyType:int
{
GOLD,
DIA,
SIZE
};
int money[ MoneyType::Size ];
- 739 :名前は開発中のものです。:2014/05/11(日) 21:06:37.47 ID:KSscCZAl.net
- 適当に書いちゃったけど何をしようとしてるのかいまいち理解出来ないw
- 740 :名前は開発中のものです。:2014/05/11(日) 21:14:58.11 ID:9RoLwWBR.net
- enumの要素数を静的に得たいんでしょ
将来お金の種類増えるかもしれないとか
配列使うぐらいならvectorにしとけとも思うが
- 741 :名前は開発中のものです。:2014/05/11(日) 21:51:52.47 ID:3XauxJKc.net
- 構造体じゃいかんのか
- 742 :名前は開発中のものです。:2014/05/12(月) 00:24:54.73 ID:cE27KFFY.net
- 実際に使うの想像してこうなった。
例えば複数の種類のお金で買えるショップ機能を作りたい場合、
ショップ側でMoneyTypeという型と整数を持っておけば、処理が楽かなと思ったんだけど
- 743 :名前は開発中のものです。:2014/05/12(月) 01:09:04.70 ID:u2hQW3ha.net
- つまり>740が正解っぽい?
- 744 :名前は開発中のものです。:2014/05/12(月) 14:46:27.12 ID:Pch/P8kY.net
- ゲームで何時でも何処でも参照、代入できるデータって一般的にどうやって管理してます?
(例えば主人公のデータとか色々な場面で使いそうなもの)
今まで単純にデータクラスの中に静的メンバ変数で定義してグローバル的にやってたけど、
たまたまシングルトンで管理してるソースを見つけて、色々あるのかなって思った
- 745 :名前は開発中のものです。:2014/05/12(月) 18:22:11.56 ID:cE27KFFY.net
- シングルトンは嫌だからゲームマネージャークラス作ってそこにプレイヤーデータのポインタ持たせたりしてるけど、どうなんだろう??
- 746 :名前は開発中のものです。:2014/05/12(月) 18:22:35.24 ID:gXmiaEA2.net
- 3Dゲームでカメラを遅らせて動かす場合って角度を線形補間してベクトルにしてる?
それともクォータニオンで球面線形補間してる?
- 747 :名前は開発中のものです。:2014/05/12(月) 20:18:49.99 ID:u2hQW3ha.net
- >>745
グローバル変数は可能な限り減らす、という理念の上でやってるなら、
それは実に正しい手法だと思うよ
- 748 :名前は開発中のものです。:2014/05/12(月) 22:53:45.27 ID:Qk7dokdu.net
- グローバル変数使いまくりの俺だが、グローバル変数は使わない方がいいと言われて
その方向でプログラム書き直したところ、手間の物凄く増えて辟易。
やり方を間違ってるんじゃないか感が半端ない。
- 749 :名前は開発中のものです。:2014/05/12(月) 23:01:55.91 ID:Qk7dokdu.net
- あるプログラム本に「JAVAなんかは誰が組んでも似たようなものになるが、
C++プログラムは人によってまるで違ってくる」とあったが本当みたいね。
本や解説サイトによって、サンプルがかなり違ってるようで混乱しまくるわ。
- 750 :名前は開発中のものです。:2014/05/12(月) 23:39:44.01 ID:4H1ieXj2.net
- グローバル変数どうのこうのは保険をかけるためのもので手間を減らすものではないから仕方ないね
- 751 :名前は開発中のものです。:2014/05/13(火) 06:24:12.16 ID:hs5B6JyN.net
- グローバル変数使わずにやろうとすると関数の引数が複雑になりがちだからな
一人で作ってるコンパクトなプログラムくらいだったら使いまくりでいいと思うわ
- 752 :名前は開発中のものです。:2014/05/13(火) 10:40:34.58 ID:lZBhyb5G.net
- グローバル変数は初期化の順序が問題になる
複数のソースコードのあちこちに点在してるとそれが顕著になり
グローバル変数がクラスで依存関係があると動作保証が難しい
せめて組み込み型以外はポインタ型にして初期化の順序を決めちゃうのが安全
- 753 :名前は開発中のものです。:2014/05/13(火) 11:22:50.82 ID:i7OBK+99.net
- >>738
'MoneyType' is not a class or namespace
ってでる
visualstudio2010だと出来たと思うんだけど、
Eclipse4.3だと出来ない
C++のバージョンによってなんか変わったのかな
- 754 :名前は開発中のものです。:2014/05/13(火) 12:15:46.52 ID:D4assd32.net
- >>753
enum classはC++/CLIだからだろ
Cにそんな構文はない
俺はC++には詳しくないけど実はあるのかな
- 755 :名前は開発中のものです。:2014/05/13(火) 13:16:16.22 ID:LR5OHySp.net
- C++11から入った構文
- 756 :名前は開発中のものです。:2014/05/13(火) 22:03:52.41 ID:VqkITLrD.net
- グローバル変数はこう書けば良いんじゃね
使うところでだけglobal.hをインクルードしてさ
grobal.cpp
int a;
groubal.h
#ifndef _GLOBAL_H_
#define _GLOBAL_H_
extern int a;
#endif
- 757 :名前は開発中のものです。:2014/05/13(火) 23:05:24.12 ID:RPOQlcBK.net
- >>756
わざわざ識別子を _ で始めるなんて沸いてるんじゃない?
- 758 :名前は開発中のものです。:2014/05/13(火) 23:15:35.87 ID:dsNPksM9.net
- 是非はともかく、よく見かけるけどな
- 759 :名前は開発中のものです。:2014/05/13(火) 23:46:55.80 ID:VqkITLrD.net
- >>757
じゃあなんて書くんだ?
- 760 :名前は開発中のものです。:2014/05/13(火) 23:51:06.96 ID:dD8wYEBQ.net
- アンダーバー始まりは処理系予約とかじゃ無かったっけ
慣習的に
- 761 :名前は開発中のものです。:2014/05/13(火) 23:59:25.01 ID:VqkITLrD.net
- >>760
まじかよ
学校でこう習ったよ
何でそんな書き方教えるんだよ
まぁ開発はVSだから#pragma onceしか書かないから知らんかっただけっすけどね・・・
- 762 :名前は開発中のものです。:2014/05/14(水) 00:50:31.19 ID:qOCHvgWh.net
- >>756
つ>>663
ついでにnamespaceにぶち込んでもいいのよ
- 763 :名前は開発中のものです。:2014/05/14(水) 00:53:50.93 ID:qOCHvgWh.net
- >>761
gccでもいつの間にかpragma once使えたりするんだよな
あれ、サッサと標準仕様に盛り込めばいいのになと思うよ
- 764 :名前は開発中のものです。:2014/05/14(水) 01:34:53.87 ID:Bv7wzu+p.net
- だいたいのコンパイラが対応してるみたいだしデファクトスタンダードってところ
- 765 :名前は開発中のものです。:2014/05/14(水) 02:44:20.77 ID:SkdpMvQe.net
- 効率的には#pragma onceの方がいいと聞いたことはあるが
IDEによるかもしれん
- 766 :名前は開発中のものです。:2014/05/14(水) 03:12:47.17 ID:YePF79fh.net
- 単純なi nclde guard は力技の処理だけど
pragma once は処理系次第で最適化されてるからね。
複数のプラットフォームを想定するなら
安全策をとって両方記述するのがオススメ。
pragma once があれば効率的に処理してくれるかもしれないし、
もしpragma once を理解できない処理系でも
inlude guardは必ず処理してくれるからね。
- 767 :名前は開発中のものです。:2014/05/14(水) 10:10:49.06 ID:2wCAVOdx.net
- >>766
両方記述?寝言は寝て言えw
- 768 :名前は開発中のものです。:2014/05/14(水) 10:25:37.80 ID:vvdSHZVH.net
- VC++に#pragma onceが入ってすぐの頃は
自動生成したヘッダには#pragma onceと#ifndef-define-endifが
コンパイラバージョンによって自動で切り替わるように書かれてたと記憶している
その辺から考えても、両方書くのは無駄じゃない
- 769 :名前は開発中のものです。:2014/05/14(水) 12:46:41.03 ID:1doe1mvx.net
- std::mapにenumとかstructを使いたいんだけど
template argument 4 is invalidっていうエラーが出ます
具体的には
map<アイテムID(enum型),アイテムパラメータ(struct型)> aaaaa;
って感じです。
パラメータっていうのはその名の通りアイテムを装備するとstructのメンバの
addHPとかaddMPっていう変数の分だけ上昇する感じで、
使い方はプレイヤーはアイテムIDだけ持っておけば、あとは必要な時々で値だけ取得できるかなという感じです。
- 770 :名前は開発中のものです。:2014/05/14(水) 13:13:18.32 ID:CAIv9eLR.net
- enum itemID{ID1=0, ID2, ID3, ID4};
struct itemParam{int p1; int p2;};
itemParam param;
map<itemID, itemParam> m;
m.insert(make_pair(itemID::ID1, param));
こんな感じで動かない?
- 771 :名前は開発中のものです。:2014/05/14(水) 13:15:39.85 ID:Ocn3g8OS.net
- >>769
比較関数がないって怒られてるんじゃね
一つ目の型を enum型じゃなくて int に変更するわけにはいかないの?
- 772 :名前は開発中のものです。:2014/05/14(水) 14:08:33.50 ID:Ke2wFa7k.net
- そもそもそれmapにする意味あるのか?
>>733みたいな感じで配列で十分な気がするんだけど
- 773 :名前は開発中のものです。:2014/05/14(水) 15:29:04.69 ID:Ocn3g8OS.net
- map だと必要な分だけ使えるじゃん
0〜 イベントアイテム
10000〜 武器
20000〜 鎧
みたいに
- 774 :名前は開発中のものです。:2014/05/14(水) 16:29:43.89 ID:YPHrxvGY.net
- enum使うなら10000から武器みたいな区分けがそもそも必要ないと思うんだけど
- 775 :名前は開発中のものです。:2014/05/14(水) 21:01:01.54 ID:qOCHvgWh.net
- >>769
それ、>>770で動きますよ
>>772-774
仮に、実行時に追加削除更新等なし、静的、参照専用、の情報の集合
という前提条件であればstd::map(赤黒木)を使う合理性はあまりないかな
>>773のようにキー番号が連続してないのでれば、ハッシュマップの類の
ほうが向いてますね
http://research.preferred.jp/2011/07/stllike-containers/
補足:記事中のLoki::AssocVectorとほぼ同じものとしてboost::flat_map
もあります。でも、>>774の言う通り、結局vectorでおkにもできますね
ま、完成しない(動かない)事に比べればどれ選んでも瑣末な違いなので
(特に昨今のPCなら)好きなの選べばいいかと思います。身も蓋もないね
- 776 :名前は開発中のものです。:2014/05/14(水) 23:37:56.68 ID:XQ3tGmyB.net
- >>770
enumの最初を0と明示するだけで変わるんです?
- 777 :名前は開発中のものです。:2014/05/15(木) 13:17:04.58 ID:vi3A9MFw.net
- 変わらないですよ。試せばすぐ分かりますけど、ム板のスレに誘導されたいです?
- 778 :名前は開発中のものです。:2014/05/15(木) 17:35:02.68 ID:CM4Haxt/.net
- 普通に動くよね
コンパイラのバージョンとかで古いのだと駄目なのかな
- 779 :名前は開発中のものです。:2014/05/15(木) 19:15:22.94 ID:D0s76qwM.net
- 実は全然違うところでエラー出てるんじゃないの
- 780 :名前は開発中のものです。:2014/05/16(金) 15:57:03.11 ID:RLWXI/UA.net
- ナビメッシュのやり方が書いてある本とかサイトとかってある?
- 781 :名前は開発中のものです。:2014/05/16(金) 23:45:36.07 ID:bSd/X954.net
- > とかってある?
ありますよ
navigation mesh pathfinding algorithm game waypoint graph search
など適当なキーワードでググるといいです。動画によるアルゴリズムの
解説も出てきますね。書籍ならAI Game Programming Wisdom 4 が
個人的にオススメです
- 782 :名前は開発中のものです。:2014/05/17(土) 09:32:46.40 ID:a+6vW56R.net
- そういうのって概要だけ聞いて自分で考えて作った方が早くない?
サンプルコードみても理解するのに時間がかかるわ
- 783 :名前は開発中のものです。:2014/05/17(土) 10:01:46.81 ID:ATk/Gp35.net
- ゲームプログラミング本といえばGameProgrammingGemsシリーズなんだかな
最近の若者は読まないのか
- 784 :名前は開発中のものです。:2014/05/17(土) 11:06:25.43 ID:7UqYAydx.net
- 現代の技術の世界において
英語が読めないのは脳が半分無いのと同じ。
それだけのこと。
- 785 :名前は開発中のものです。:2014/05/17(土) 12:01:48.26 ID:G1g9tldj.net
- 翻訳したやつ読めば
- 786 :名前は開発中のものです。:2014/05/17(土) 12:34:45.87 ID:/WeYTHrm.net
- 英語読めてもソースコード読めなかったりするし
プログラムは勉強したところでコード書けないのが大半らしいな
元々作文が下手とかそういう次元ではなく理解できないとか
- 787 :名前は開発中のものです。:2014/05/17(土) 12:40:03.20 ID:o9p3b0z7.net
- そもそも日本語で書いてあるプログラム解説書だって意味わかんないよw
- 788 :名前は開発中のものです。:2014/05/17(土) 13:44:47.33 ID:7UqYAydx.net
- >>785
半年遅れで付いていく人間は残念ながら奴隷で終わるよw
英語ができて最先端に追従する奴、ときには自分が最先端を発信する奴に
「あ、こいつバカだなww」と思われながら生きる惨めな三流人生が待っている。
それで良ければ英語なんて学ぶ必要はない。
まぁ、普通は(普通の知性の持ち主は、という意味)
修士課程で英語の論文を死ぬほど読んで
「喋れないけど読める」という妙な英語力を身につけられるんだけどねw
- 789 :名前は開発中のものです。:2014/05/17(土) 14:19:53.26 ID:ZLhv9Phh.net
- 相変わらず病んでますね
- 790 :名前は開発中のものです。:2014/05/17(土) 14:53:46.32 ID:k3uAdR/A.net
- とりあえずナビメッシュのやり方教えて
- 791 :名前は開発中のものです。:2014/05/17(土) 17:55:58.84 ID:ZLhv9Phh.net
- 780の人ですか?
具体的に何をやってみてどこでつまずいてるのか話せば答えやすくなるかと
- 792 :名前は開発中のものです。:2014/05/17(土) 18:02:04.88 ID:G1g9tldj.net
- http://www.lameije.co.jp/navigationmesh.html
これじゃあかんのか
- 793 :名前は開発中のものです。:2014/05/18(日) 17:48:20.69 ID:bAjzsQ9M.net
- オクツリーに障害物を表示させたいんだけど、オクツリーのある場所がどの座標なのかを調べる方法ってある?
- 794 :名前は開発中のものです。:2014/05/18(日) 21:18:36.16 ID:uYYY8hgN.net
- ボクセルのインデックスを座標のビット配列にしてインデックスからボクセルの位置を取得
http://marupeke296.com/COL_2D_No8_QuadTree.html
これを3ビット毎にすれば出来ると思うんだがどうだろ
- 795 :名前は開発中のものです。:2014/05/19(月) 04:39:02.31 ID:XNC2jE/Y.net
- この入門?みたいなサイトで勉強してたんだけどつまづいたので分かる方いたら教えてください
http://bituse.info/game/shot/11
for(int i=0;i<ENEMY_NUM;++i){
enemy[i]=new ENEMY(data[i].type,data[i].stype,data[i].m_pattern,data[i].s_pattern,data[i].in_time,data[i].stop_time,data[i].shot_time,data[i].out_time,data[i].x,data[i].y,data[i].speed,data[i].hp,data[i].item);
}
↑この文の enemy[i]=new ENEMYのイコールのところでオペランドと一致する演算子なんてねぇよって怒られます
原因として考えられるものってなんでしょうか?
for(int i=0;i<ENEMY_NUM;++i){
enemy = new ENEMY[i](省略);
}
だったらいけるみたいなんですけど、違いがよくわからないです・・・
- 796 :名前は開発中のものです。:2014/05/19(月) 05:31:35.17 ID:FdnDAUlP.net
- enemyの型がポインタの配列になってないんじゃないの
- 797 :名前は開発中のものです。:2014/05/19(月) 10:00:14.39 ID:hjxHIKHc.net
- こうかな
正:ENEMY *enemy[ ENEMY_NUM ];
誤:ENEMY *enemy;
サイトを見ると省かれてるみたいだけど
敵を複数出すようにした時点で enemy を配列に変更しないといけない
- 798 :名前は開発中のものです。:2014/05/19(月) 11:05:51.60 ID:CSMuM09V.net
- これコンストラクタの引数なんで構造体の参照渡しじゃないのか
無駄に読みにくいわ
- 799 :795:2014/05/19(月) 11:33:54.01 ID:XNC2jE/Y.net
- できました。
ご指摘の通り、enemyを配列にしたら無事にコンパイルできました。
ちょっと私にはわかりにくいサイトだったようなので別のところで勉強してみます・・・
- 800 :795:2014/05/19(月) 11:34:28.24 ID:XNC2jE/Y.net
- お礼を忘れていました
ご指摘ありがとうございました。
- 801 :名前は開発中のものです。:2014/05/23(金) 00:32:00.04 ID:61iiZtPG.net
- おらLAMPしか知らないんだけども
C++で作ったリアルタイムなネットワークゲームのオンラインサーバって
どういう環境で動いてんだべ?
ソシャゲならPHPでhttpでいいかもしんねけども、
ネトゲって実行ファイル動かし続けてんのかね
- 802 :名前は開発中のものです。:2014/05/23(金) 00:34:30.27 ID:BlMjMm70.net
- >>801
お前から感じるそのしったか臭は一体何なんだ?
- 803 :名前は開発中のものです。:2014/05/23(金) 01:25:45.01 ID:61iiZtPG.net
- >>802
そんなこと言っても知りたいってのは本当なんだけど
ていうかソシャゲってphpでhttp返してるって聞いたんだが違うのか
ソース3種類ぐらい別のところから聞いたからそうだと信じてたけど
- 804 :名前は開発中のものです。:2014/05/23(金) 01:54:24.22 ID:W5hvE4XG.net
- 上から目線だと>>802みたいなのが湧いて終わりw
それがネットの宿命。
和光同塵に励み、
下から目線で質問すると、
「そんなのこと知ってるよヴァカw」ってレベルの奴がトクトクと語り始める。
人生ってのは上手くいかないものだ。
やはりアドヴァイスはリアルな知り合いに、
顔を付きあわせて語り求めるのが一番良い。
ネットで集まってくるのは多くの場合クズだ。
- 805 :名前は開発中のものです。:2014/05/23(金) 04:11:24.69 ID:R2Hq6koN.net
- >「そんなのこと知ってるよヴァカw」ってレベルの奴がトクトクと語り始める。
そうかな。
知ったかが知ってる振りをして偉そうにした挙句、何も実のあることは言わずに去るだけな気もするが。
- 806 :名前は開発中のものです。:2014/05/23(金) 06:08:22.99 ID:61iiZtPG.net
- いや質問してるんだけど
- 807 :名前は開発中のものです。:2014/05/23(金) 08:01:15.27 ID:VwzG+tx8.net
- 知ったかだけど
C/C++ならOSのAPIかライブラリ使ってTCPとUDP使い分けでしょ
PHPでもソケット通信出来るらしいし言語はなんでもいいんじゃないの
実行効率の問題はあるだろうけど
- 808 :名前は開発中のものです。:2014/05/23(金) 08:49:57.28 ID:UZe2P6GU.net
- 個人のゲーム製作でC++使うメリットってあるかな?
Cの方が小回り効くし使いやすいと思うんだが
- 809 :名前は開発中のものです。:2014/05/23(金) 08:57:29.89 ID:WZOW9ZIo.net
- C++のほうがゲーム向き。
基本的にC言語の機能を全て含んでいて、追加部分を使いたくなれば使わなければいいだけ。
使って便利な機能を使うことで開発効率は上がる。
- 810 :名前は開発中のものです。:2014/05/23(金) 09:01:24.07 ID:UZe2P6GU.net
- 多人数やチームで作るなら保守性とか高いし必要だとは思うんだけど
個人製作なら手続きが多い分無駄な気がするんだよね>C++
- 811 :名前は開発中のものです。:2014/05/23(金) 09:24:40.27 ID:J41CukcG.net
- 複数のゲームオブジェクトが相互作用するような場合はポリモーフィズム使うと楽になる
継承して独自の部分実装すれば新しいオブジェクト作れるしメンテもしやすい
- 812 :名前は開発中のものです。:2014/05/23(金) 09:25:32.36 ID:gVP8nGPF.net
- 準備されてるクラスライブラリが圧倒的にC++の方が便利
- 813 :名前は開発中のものです。:2014/05/23(金) 09:32:14.08 ID:mJ3PfvgI.net
- スマートボインタとかCじゃできないしな
- 814 :名前は開発中のものです。:2014/05/23(金) 09:40:35.21 ID:61iiZtPG.net
- 構造体でオブジェクト表現してるのか
- 815 :名前は開発中のものです。:2014/05/23(金) 10:13:18.75 ID:UZe2P6GU.net
- 構造体でほとんど間に合うと思うんだよな。
トリッキーに何しても怒られないし。
- 816 :名前は開発中のものです。:2014/05/23(金) 10:19:18.29 ID:3Qz0nlZE.net
- C++使ったらコードの見通し良くなって楽ってだけで、Cに慣れてるならそりゃCの方が楽
ミニゲーム程度ならどっち使っても変わらん
- 817 :名前は開発中のものです。:2014/05/23(金) 10:21:23.05 ID:u1Ct/Di+.net
- 構造体を引数としてとる関数は文が長くなりがち
構造体に関数ポインタ入れるより仮想関数のが簡潔に書けるし分かり易い
名前空間がないと名前の衝突が起こるから冗長なプリフィクスが必要になる
DirectXとかCOM周りはC++のが簡潔に書ける
- 818 :名前は開発中のものです。:2014/05/23(金) 10:35:11.17 ID:UZe2P6GU.net
- 慣れてるせいなんだろうけど関数ポインタで簡潔に書けちゃうんだよな。
むしろ手続きや決まりごとの分C++の方が長くなっちゃうんだよ。
スマートポインタも俺からするとプログラマが解放し忘れてても勝手に解放って逆に怖いと思うんだよ。
メモリの使用状況なんかデバッグ画面かなんかで常に確認するべきだしメモリの解放は意識してやりたいなあ。
- 819 :名前は開発中のものです。:2014/05/23(金) 10:48:05.07 ID:u1Ct/Di+.net
- 意識してスマートポインタ使うんだから開放されるタイミングは判る
気にしないのは実装部分だけ
いくら自前で管理しようとも例外をsetjump/longjumpで無理やり組むしかないCには容易には出来ない安全性もある
逆にオーバーロードとかコピーが複雑なので頼ったほうが良いC++の悪さの部分でもあるが
- 820 :名前は開発中のものです。:2014/05/23(金) 10:50:19.88 ID:WZOW9ZIo.net
- 自動開放で平気だ。
かなりの言語が強制て自動開放を取り入れている。
パフォーマンスだけの問題だろう。
- 821 :名前は開発中のものです。:2014/05/23(金) 10:59:56.27 ID:UZe2P6GU.net
- 俺がアセンブラ時代から組んでるせいなんだろうけど自動解放って怖いんだよな。
メモリの管理状況やクリアも全部自前のプリミティブな関数でやりたいと思っちゃうんだよな。
まあ気にし過ぎなのかもしれないね。
昔はCも最適化が甘くてオーバーヘッドが酷かったからどうも知らない間にメモリを触られてたりするのが信用できなくてなあ。
- 822 :名前は開発中のものです。:2014/05/23(金) 11:06:17.74 ID:u1Ct/Di+.net
- スタックの自動開放も怖いのかい?寿命で消えるのは同じことだよ
アセブンブリ出力みてりゃ大したことやってないよ
- 823 :名前は開発中のものです。:2014/05/23(金) 11:12:25.32 ID:WZOW9ZIo.net
- C言語のauto変数も勝手に開放するな
- 824 :名前は開発中のものです。:2014/05/23(金) 11:14:29.88 ID:UZe2P6GU.net
- ま、俺の気にし過ぎなんだろうね。
初心者が構造体のコピーとか平気で書いちゃってんの見てビックリしたりする方だからさ。
記述は簡潔だけどその一文でどのくらいオーバーヘッドかかってるかわかって書いてんのか?とか思っちゃうんだよ。
簡易なコード記述の生産性と実行速度は別なんで、その辺はなるべくコワモテでいいんじゃないかと思うんだよ。
- 825 :名前は開発中のものです。:2014/05/23(金) 11:15:51.86 ID:WZOW9ZIo.net
- CとC++の話で自動開放の話になるのがそもそもおかしいな。
C++はガベージコレクションを取り入れたわけでなく、メモリ管理についてはCと大差ないだろ。
Cでもスマートポインタ使えるだろ。
- 826 :名前は開発中のものです。:2014/05/23(金) 11:16:04.73 ID:wh7XodOP.net
- ID:UZe2P6GU
わかる。deleteのタイミングって自分で管理したい。
そもそも、スマートポインタに頼ろうという発想が出る時点で、
そのソースはすでにごっちゃになってないかと問いたい。
- 827 :名前は開発中のものです。:2014/05/23(金) 11:25:27.68 ID:LtRYMhK0.net
- スマポのソース見ればどうなるかきっちりわかるんだから見てみりゃいいじゃん
- 828 :名前は開発中のものです。:2014/05/23(金) 11:28:39.46 ID:u1Ct/Di+.net
- >>826
好きな時にnullptrを入れて開放してもいいんだぜ
スマートポインタのオブジェクトの寿命=解放のタイミング、一部がコピーで寿命が移動するだけなんだから
Cでmallocしたポインタの値を見失うことがないようなプログラムの組み方ならごっちゃにならない
- 829 :名前は開発中のものです。:2014/05/23(金) 11:33:42.15 ID:CnVFPzVq.net
- 関数のデストラクタとかあれば良いのにな
- 830 :名前は開発中のものです。:2014/05/23(金) 11:33:43.66 ID:WZOW9ZIo.net
- Boehm GC を使う
The Boehm-Demers-Weiser conservative garbage collector (Boehm GC) は、C言語用のメジャーなガベージコレクタ。
さまざまなソフトウェアがこのライブラリを使っている。
ガベージコレクタを使うと、メモリを好きなだけ確保するだけでよく、解放は自動的にしてくれる。
巨大なメモリを明示的に解放するような場合のほかは、メモリを解放するコードを書く必要はない。
Boehm GCは、保守的GCという方法でガベージコレクトする。定期的にメモリ内を走査し、使われていないと見られるオブジェクトのメモリを回収していく。
Boehm GC以外では、boost::shared_ptrが参照カウント方式を用いている。
http://www.nslabs.jp/boehmgc.rhtml
- 831 :名前は開発中のものです。:2014/05/23(金) 11:38:28.27 ID:Q1W0mucT.net
- プログラマがコントロール出来ないGCは処理落ちの原因になるからやめた方がいい
- 832 :名前は開発中のものです。:2014/05/23(金) 11:41:53.89 ID:UZe2P6GU.net
- >>831
同感。こういうのが嫌なんだよ。
記述上だけでスマート・簡潔に組めたつもりで実際は実行速度がグダグダになってる。
- 833 :名前は開発中のものです。:2014/05/23(金) 11:45:53.20 ID:wh7XodOP.net
- >>827
?
>>828
そもそもの動機だよ。誰がスマートポインタをなぜ欲しがるのかってこと。
既にnew/delete対応なんてスッキリハッキリ管理されてるはず。
スマートポインタが活躍する一部場面がある、というのなら限定的に使っていいと思うが、
それはそれ、それだけのこと。
あとたぶん、ID:WZOW9ZIoはもう喋らないほうがいいな。
>>831
たとえばC#でゲームつくってるとGC動かさないように気をつかったり、
GCの実装に振り回されたり、なんとも滑稽な事態に陥るw
- 834 :名前は開発中のものです。:2014/05/23(金) 12:03:37.45 ID:HE2P9lkw.net
- >>833
標準ライブラリとかboostのソースコードにスマポのソースコードあるでしょ?
それ見ればどういうタイミングで解放されるかわかるんだからきっちり自分でコントロールできる
- 835 :名前は開発中のものです。:2014/05/23(金) 12:04:27.91 ID:u1Ct/Di+.net
- >>832
他所の実装の関数呼び出しで見た目だけ簡潔に組めたとしても、その関数が遅いかは不明だからな
スマートポインタと全く違うGCは要らないけどな
>>833
動機なんて解放のコードがあちこちにあるより最初に決めておいた方が楽だろ
newは一個でも同じような解放コードのdeleteがあちらこちらの関数に書かれていて
分岐によりそれが実行されるかは不明よりはいいと思うので
デストラクタのおかげで関数後半にfreeが消えるだけでも記述、確認の手間も省ける
コストも結局開放するのなら軽いunique_ptrみたいのならCと変わらんよ
shared_ptrをスマートポインタと想定して言ってるのかもしれんが
スマートポインタなくてもCよりC++のが楽にはなったと思うけどな
Cから移行したときは同名関数の引数違いのオーバーロードですらありがたいよ
- 836 :名前は開発中のものです。:2014/05/23(金) 12:19:19.44 ID:wh7XodOP.net
- >>835
new/deleteの対応がおぼつかないようなコードは既に臭ってる。
俺の言いたいことはアンタには十分伝わっている気がするんで終わる。
> 引数違いのオーバーロードですらありがたいよ
それよ。名前空間とオーバーロード。
これだけで名前に関する負担が減って十分嬉しい。
- 837 :名前は開発中のものです。:2014/05/23(金) 12:40:36.19 ID:RKONZ/AN.net
- スマポって仕組みよくわからんのだけど参照カウントという奴をオペレーターに仕込むのか?
プログラマが代入するたびにカウント++するわけじゃないだろうし
- 838 :名前は開発中のものです。:2014/05/24(土) 02:12:28.67 ID:+nV/dxKWG
- >>837
スマポ=参照カウンタではない
C++11のスマポはunique,shared,weakの3種類ある
- 839 :名前は開発中のものです。:2014/06/08(日) 14:02:34.45 ID:pt28O8XW.net
- UIならシーンの初期化の時に全部読み込むだろうし、その時にソートしとけばいいんじゃないの
- 840 :名前は開発中のものです。:2014/06/08(日) 14:07:29.29 ID:tkJLCxRy.net
- そもそも2Dの優先順位の決定にレイを飛ばす理由が不明、
画像のインスタンスを見るというのも意味不明。
- 841 :名前は開発中のものです。:2014/06/08(日) 15:23:55.84 ID:yGlWShIZ.net
- レイ撃ってヒットの逆順に描画するんじゃないの
無駄過ぎて鼻水吹き出しそうな話だけど
画像のインスタンスって言ってんのはスプライトの事かな
- 842 :名前は開発中のものです。:2014/06/08(日) 19:22:29.67 ID:8RotVtW9.net
- クリックした要素が何かを探したいんだろうけど
画面を経由する必要があるほど不定形でぐにゃぐにゃしたUIなんだろうか
もしどうしてもやる場合は
俺ならオフスクリーンバッファにどのUIがトップかを書くかな
- 843 :名前は開発中のものです。:2014/06/08(日) 22:43:04.22 ID:vGgKRzGn.net
- z値をインデックスにすれば深度マップで取得できるんじゃね?
と思ったけど、vramアクセスはパフォーマンス悪そうだな
- 844 :名前は開発中のものです。:2014/06/09(月) 13:50:23.16 ID:z2Jj9BRG.net
- OpenGLのポリゴン描画で影を描画すると、影が赤くなるんだけど、黒くする方法ってある?
スレチだったらごめん・・・
- 845 :名前は開発中のものです。:2014/06/09(月) 15:07:01.85 ID:F4+Sq4Or.net
- 方法も何も、そもそも赤くするコードを書かない限り赤くならない。
- 846 :名前は開発中のものです。:2014/06/09(月) 15:12:29.18 ID:HlN0nBf5.net
- 「プログラムは思ったとおりには動かない。書いた通りに動く」ってな
物凄いレアケースでハードウェア絡みかもしれんが
もう一度コードを見直しが先決かねえ
- 847 :名前は開発中のものです。:2014/06/09(月) 18:40:16.51 ID:EHfKfPgC.net
- エスパーするが
色構造体のバイトオーダー間違ってないか
- 848 :名前は開発中のものです。:2014/06/09(月) 22:51:10.63 ID:OtG7NFYQ.net
- OpenGLで通常のモデルはちゃんとでて、影だけおかしいとかだと、
LIGHTINGやTEXTUREのEnable/Disableの切り替え忘れとかがありがちかなぁ
- 849 :名前は開発中のものです。:2014/06/09(月) 23:44:28.20 ID:hvcdW5Tu.net
- DXライブラリをEclipseで使うやり方を教えて下さい。
詳細に教えてなんて言わないんで、解説してくれているサイトを教えて下さい。
情報が少なすぎるのか、調べ方が悪すぎるかのどちらかで、アホな初心者にはできません。
- 850 :名前は開発中のものです。:2014/06/09(月) 23:45:24.91 ID:6mNjaANt.net
- GL_REDの影テクスチャをそのまま掛けてるとか?
vec3 out = in * texture2D(shadow, uv).rrr;
みたいにする。
- 851 :名前は開発中のものです。:2014/06/09(月) 23:53:17.10 ID:Cpf1syLL.net
- >>849
「exlipse DXLib」の検索ワードだけでゴロゴロ出てきたんだが?
- 852 :名前は開発中のものです。:2014/06/10(火) 00:12:02.20 ID:U4gTkVOf.net
- >>851
ageてしまった。
それは以前にやったのですが、よく理解できませんでした。
ttp://moge32.jugem.jp/?eid=136
検索2位(1位は繋がらない)ここに書いてあることは直接Eclipseのことを書いてないように思うのですが、
これが必要最低限の情報だったりするんですか?
- 853 :名前は開発中のものです。:2014/06/10(火) 00:57:17.61 ID:SZhDftiM.net
- そのキーワードでググって1位見れたよ。
何か重くて表示されなかっただけでね。
キャッシュからも表示できたし。
- 854 :名前は開発中のものです。:2014/06/10(火) 07:35:08.91 ID:iWwQEe0D.net
- よく知らないが、Eclipseで、
ライブラリのパスを参照設定するだけじゃないの?
他に、何かすることがあるの?
- 855 :名前は開発中のものです。:2014/06/10(火) 10:32:37.64 ID:+XEl/HM2.net
- デバッグや配布時に設定が必要くらいでね
- 856 :名前は開発中のものです。:2014/06/10(火) 10:47:00.49 ID:WVu4972r.net
- EclipseよりVisualStudioのほうがいいんだけどね
きっとインストール権限ない環境かハードディスク残量の問題なんだろうね
- 857 :名前は開発中のものです。:2014/06/10(火) 15:15:51.09 ID:YWMLszVd.net
- 宗教上使えない人もいるのです
- 858 :名前は開発中のものです。:2014/06/10(火) 19:07:12.75 ID:O01gD3CA.net
- 棄教しろバカ。
棄教できなければ.NET framework神に詫びながら死ね。
- 859 :名前は開発中のものです。:2014/06/10(火) 21:45:01.86 ID:8Lf3BwfT.net
- EclipseもNetBeansもクソ
- 860 :名前は開発中のものです。:2014/06/11(水) 09:08:28.52 ID:0bKjwM6R.net
- Win以外の開発はどうするのさ
- 861 :名前は開発中のものです。:2014/06/11(水) 09:16:03.77 ID:WKLN/gkV.net
- でた!屁理屈。Window以外でDXライブラリでゲームを作成されてるのですね。
でしたら、お好きな環境を選択されればよろしいとおもいますよ?
- 862 :名前は開発中のものです。:2014/06/11(水) 09:21:09.41 ID:0bKjwM6R.net
- いやdxでとは言ってないが
OpenGLでいいでしょ
マルチプラットフォーム対象にするときどうすんの?
- 863 :名前は開発中のものです。:2014/06/11(水) 09:25:44.99 ID:WKLN/gkV.net
- >848
てか、だから好きにすればいいよ
- 864 :名前は開発中のものです。:2014/06/11(水) 09:27:05.23 ID:x/9Nmlpu.net
- 実際のところゲーム会社ってWindowsとMacだったらどっちが多いの?
あと、プログラミング言語とかライブラリとか
そもそもUnityの会社だってあるし・・・
- 865 :名前は開発中のものです。:2014/06/11(水) 09:47:50.90 ID:z9TU/419.net
- スマホ向けは大概Mac
MacのXCodeじゃないとiOS向けにコンパイル出来ないので
その環境でAndroidアプリも作るからeclipseも入れる
Unityも結局iOS向けはコンパイルにMac必要だからMacになる
Win向けはまあVisual Studioでしょ
コンシューマはわからんけど箱むけならVisual Studioなんじゃない
- 866 :名前は開発中のものです。:2014/06/11(水) 09:54:53.44 ID:EKg7DQSq.net
- VisualStudioが強すぎるのと周辺ツールの関係からWindowsが圧倒的
- 867 :名前は開発中のものです。:2014/06/11(水) 09:55:26.50 ID:7EYJGMHz.net
- >>864
コンシューマは基本C++で、ライブラリはそれぞれのプラットフォーム用に作られたライブラリ使ってる。
Windows上でデバッグするときは苦肉の策でOpenGLとかで似たように作る。
- 868 :名前は開発中のものです。:2014/06/11(水) 09:59:16.67 ID:a2WXiZKM.net
- ゲームエンジンならだいたい両方用意されてる。
今なら、Unrealengine4とかCryengineとか。
開発環境ではなくてゲーム本体でPCなら圧倒的にwindows
- 869 :名前は開発中のものです。:2014/06/11(水) 11:58:39.64 ID:kbUVkmhq.net
- >>863
つまりVSはWindows用の開発以外は使えないって事?
個人開発ならそれでいいけどコンシューマ向けだとキツいと思うんだが
実際の現場ってどうなってんの
- 870 :名前は開発中のものです。:2014/06/11(水) 12:36:38.52 ID:0cMdPBr+.net
- コンシューマではXBOXのことも忘れないであげてください
- 871 :名前は開発中のものです。:2014/06/11(水) 12:36:48.51 ID:korZFgLA.net
- >>869
ソニーはVisualStudioで動くやつとgccでのコマンドラインでの開発が選べるのが定番
- 872 :名前は開発中のものです。:2014/06/11(水) 12:48:01.72 ID:kbUVkmhq.net
- >>870-870
じゃあとりあえずVS使えればゲームプログラマにはなれそうな感じなのかな
- 873 :名前は開発中のものです。:2014/06/11(水) 13:04:58.50 ID:korZFgLA.net
- >>872
いや、VS使うだけなら出来て当然なので
あんま意味ない
使えればプログラムかけるかっつーとそんなことはないわけで
APIとかだいたい独自なので、マニュアル読んで理解して使いこなす能力がないとお話にならない
- 874 :名前は開発中のものです。:2014/06/11(水) 13:42:18.25 ID:7WXZfC9n.net
- なんで皆そんなに業界に詳しいの?
プロなの? それとも聞きかじり情報?
- 875 :名前は開発中のものです。:2014/06/11(水) 17:05:26.88 ID:0icQ1bsR.net
- 妄想
- 876 :名前は開発中のものです。:2014/06/11(水) 19:56:24.00 ID:ZrP26BdU.net
- VSとかEclipseとかXCodeとかUnityとかUEが使える使えないじゃなくて
どんな環境でもプログラム書いて動かすものが作れるっていうのが重要なわけで
弘法筆を選ばず
- 877 :名前は開発中のものです。:2014/06/11(水) 21:51:51.20 ID:WrX8Es+8.net
- でも成熟した産業だし、デファクトスタンダードとかあるんじゃないの
OSX•iOSならXCode、Androidならeclipseで鉄板だし
コンシューマは各プラットフォームのライブラリ使えればVSで行けるみたいだし
学習するならとりあえずターゲット絞った方がいいと思うけど
ゲーム会社に就職するなら、だけど
- 878 :名前は開発中のものです。:2014/06/11(水) 21:55:19.66 ID:7WXZfC9n.net
- >>876
弘法じゃない凡人は一本の筆を使いこなせるようになるにも一苦労なので筆を選ばざるをえない。
- 879 :名前は開発中のものです。:2014/06/11(水) 22:00:45.16 ID:SywAyYwT.net
- どれか一つのIDEをしばらく使ってみて、ビルドの工程が理解できてくれば、
どんなIDEでも基本的な操作は出来るようになるよ
- 880 :名前は開発中のものです。:2014/06/11(水) 23:04:20.34 ID:7MaR9GBn.net
- 特定のIDEに習熟しようとしたって、
どうせ習得してはまた新たな壁にぶつかるという
ラッキョウの皮をむくようなことになるだけだけどな。
IDE らっきょ
- 881 :名前は開発中のものです。:2014/06/11(水) 23:08:17.00 ID:V2TD8Zeq.net
- >>877
Xcode とかバージョンかわるたびに前のプロジェクトがうまく動かなくなるとかざらにあるので、求められるのは与えられたものを調べてすぐつかいこなす能力
- 882 :名前は開発中のものです。:2014/06/11(水) 23:22:36.32 ID:6wElIYFK.net
- NetBeansなんてなかった
- 883 :名前は開発中のものです。:2014/06/11(水) 23:30:44.92 ID:SywAyYwT.net
- >>880
言いたいことは分かるけど、
>ラッキョウの皮をむく
って例え、経験がないから分からんかったわww
通だなwww
- 884 :名前は開発中のものです。:2014/06/12(木) 06:43:31.61 ID:L8Vso62K.net
- 個人でコンシューマーゲーム作ってみようと思うんだけど、個人でもライブラリが手に入るハードってある?
できればVSで動くライブラリだと助かる
一応ゲーム制作経験はあるから、リファレンスがあれば作れると思う
- 885 :名前は開発中のものです。:2014/06/12(木) 07:17:39.83 ID:vRgUoWDI.net
- そういう質問をするレベルの人間がコンシューマの開発をしようと考えること自体が、馬鹿の極み。
- 886 :名前は開発中のものです。:2014/06/12(木) 07:39:46.78 ID:WfpU2RZu.net
- 今時のメジャーなゲームハードでは
個人に対しては制限された環境しか与えられていない
- 887 :名前は開発中のものです。:2014/06/12(木) 07:56:48.31 ID:0sQ/4i7b.net
- XBoxでXNAで作ったゲーム配信出来るサービスなかったっけ
- 888 :名前は開発中のものです。:2014/06/12(木) 09:00:44.47 ID:E66MRmQE.net
- XNAはC#とかで、C++ではない
VITAのPSMもC#
- 889 :名前は開発中のものです。:2014/06/12(木) 09:25:52.94 ID:zPikE+yO.net
- unrealでもやっとけ。個人でもライセンス契約すればコンシューマー開発できるぞ。
ライセンス料がいくらかは知らない
- 890 :名前は開発中のものです。:2014/06/12(木) 10:16:44.91 ID:eRzlOATi.net
- まあ簡単な開発環境いっぱいあるし、1からゲームエンジン作るくらいの気概ないとC で作る意味ないよな
- 891 :名前は開発中のものです。:2014/06/12(木) 14:02:33.71 ID:CRNljBu4.net
- >>884
PSPならPSP版DXライブラリもあるし割となんでもできるんじゃね
- 892 :名前は開発中のものです。:2014/06/12(木) 15:39:57.02 ID:idpLfuQS.net
- >>884
一応きくけど作れたとしてそれを売ろうとしたらライセンス料いるって知ってる?
- 893 :名前は開発中のものです。:2014/06/12(木) 17:13:06.20 ID:EGqf6ecZ.net
- >>884
monogame辺りがフリーかな
PSMとかPS4も対応するみたいだけどライセンス大変そう
仕様はまんまXNAなんでそれらサンプルや資料がそのまま使える
開発活発はただしC#
- 894 :名前は開発中のものです。:2014/06/13(金) 02:31:14.01 ID:BxeyyLjb.net
- プラットフォームのロイヤルティと
ライブラリやエンジンの利用料をごっちゃにするな
売上なくても固定費取られるんだっけ?
- 895 :名前は開発中のものです。:2014/06/13(金) 15:25:42.09 ID:O3W0ptm6.net
- PSMは年間8千円くらいだって以前ここで読んだ
PS4のインディーはどうなってるのかな?
- 896 :名前は開発中のものです。:2014/06/13(金) 23:11:27.36 ID:NBfAH6Dj.net
- PlayStationMobileのパブリッシャーライセンスなら、今は無料じゃないかな(期間限定、終了日未定)
- 897 :名前は開発中のものです。:2014/06/14(土) 01:29:28.56 ID:u1apXmDd.net
- それ先に言えよ!
登録してくる
- 898 :名前は開発中のものです。:2014/06/14(土) 08:02:38.08 ID:cW1M/S3K.net
- LeadWerksじゃだめなん?
\10,000前後で再配布無料だし
- 899 :名前は開発中のものです。:2014/06/14(土) 14:15:25.01 ID:6iOYhCEE.net
- ヘッダーファイルの相互参照を回避するために
class "MapAnimationAdmin";
と前方宣言したんですが
forward declaration of 'struct MapAnimationAdmin'
という構造体と勘違いされているのかエラーが出て出来ません
VisualStudioだと出来たと思うんですが、Eclipseだと出来ないんでしょうか?
- 900 :名前は開発中のものです。:2014/06/14(土) 14:40:49.76 ID:37JUYTf3.net
- 1) ヘッダ内でnew MapAnimationAdmin()しているのが原因 → cppの中でやる
2) #includeの順番がおかしい事に起因している → 順番を正しくする
チェックする場所はこんな所かな
- 901 :名前は開発中のものです。:2014/06/14(土) 15:56:40.17 ID:6iOYhCEE.net
- すいません、cppのほうでincludeしたら何故かh側のエラーが無くなりました
- 902 :名前は開発中のものです。:2014/06/14(土) 17:18:02.71 ID:uMwrWsOs.net
- cppでincludeするのは大前提というかなんというか
- 903 :名前は開発中のものです。:2014/06/14(土) 17:54:22.34 ID:6iOYhCEE.net
- includeされた側にincludeした側のエラーが出るとは思ってもいなくて
- 904 :名前は開発中のものです。:2014/06/14(土) 18:46:03.04 ID:37JUYTf3.net
- まぁ、c系のエラーメッセージは判り難いからね。
- 905 :名前は開発中のものです。:2014/06/18(水) 19:56:58.90 ID:ma8cg4mp.net
- 今からゲーム作るとしたらDirectX11でいいのかな
まだXP持っててもゲーム用じゃ使わないだろうし
- 906 :名前は開発中のものです。:2014/06/18(水) 20:07:43.69 ID:CzJGNNdh.net
- 1から作るならそれがベストだと思う。
なかなか過去の遺産って捨てらんないよね…
- 907 :名前は開発中のものです。:2014/06/18(水) 20:16:18.23 ID:N8Tb0KHM.net
- 他のプラットフォームに移行を考えてOpenGLていう選択肢も
DirectX12で軽量化やGPU活用の為にまた変わるみたいだし
直よりパフォーマンスは落ちるけどレンダラーだけ切り替えられるマルチプラットフォームの
グラフィックスライブラリやゲームエンジンも有り
- 908 :名前は開発中のものです。:2014/06/18(水) 20:37:44.57 ID:FAN59TRz.net
- ゲーム作るときの選択肢コピペ誰かつくったら?自分的には↓
DirectX9...古いけど十分、でも古い
DirectX11...現行なので普通はこっち、ゲームエンジンやプログラミングの学習も兼ねるなら迷わずこれ
OpenGL(CP3.2)...マルチプラットフォームなので他機種での動作が可能、ただしライブラリ設計がクソ、他のライブラリにかなり頼る
Ogre3D...将来性も情報量もなし、使うべきでない
Unity...上位機能を望まなければ簡単なプログラミングでゲームが作れる、簡単にゲームを作りたいだけならこれ
C#だがSharpDXやMonoGameもおすすめ
- 909 :名前は開発中のものです。:2014/06/18(水) 23:31:34.64 ID:a3SIvP3s.net
- OpenGL = Direct3D - D3DX
って感じでシンプルだけどクソではないだろ
- 910 :名前は開発中のものです。:2014/06/19(木) 00:13:10.79 ID:nLPcoi9X.net
- 普及の問題からDirectX9使っとけば間違いないって時代は終わったのか
- 911 :名前は開発中のものです。:2014/06/19(木) 00:23:12.04 ID:lO1Eej6E.net
- OpenGLがクソな理由
http://cpplover.blogspot.jp/2014/05/opengl.html
XNAもかなりよかったんだが開発停止して昔のVisualStudioを使わないといけないから、もう古いな
- 912 :名前は開発中のものです。:2014/06/19(木) 00:40:27.02 ID:D4AdegVY.net
- DirectXは何度か改修してるからな10の時にも一気に整理されたし
12でまた同じような事するんだろうな
(・・・・もう覚えるの面倒です)
- 913 :名前は開発中のものです。:2014/06/19(木) 01:05:20.37 ID:6/D2oQWW.net
- >>911
そこに書いてあることを理由にクソと言い切るのは
ゲーム製作を始める初心者に誤解を招くだけ
- 914 :名前は開発中のものです。:2014/06/19(木) 01:29:04.41 ID:lO1Eej6E.net
- >>913
OpenGLも選択肢にはなるのは分かるけど……
なによりもオブジェクト指向な書き方ができないのがツラい
技術発表はOpenGLでの実装が多いから先端の技術に興味ある人はいいんだろうけど
- 915 :名前は開発中のものです。:2014/06/19(木) 08:14:04.04 ID:31au4KtM.net
- >>908
Ogreが情報量少ないて何の冗談だ?将来性は今も開発進んでてIrrlichtよりマシだし
SharpDXとかMonoGameてDirextX9相当だし今時のシェーダーが組めない
- 916 :名前は開発中のものです。:2014/06/19(木) 08:27:50.13 ID:BMdZ3LEO.net
- SharpDXがDirectX9相当とか
お前こそ何言ってんだ
- 917 :名前は開発中のものです。:2014/06/19(木) 08:49:07.49 ID:6/D2oQWW.net
- >>914
自分でステータス管理、バッファ管理その他諸々の処理書けばオブジェクト指向で書けるじゃん
DirectXでもAPI直叩きは気持ち悪くて同じような処理書くことになるし
- 918 :名前は開発中のものです。:2014/06/19(木) 09:03:30.40 ID:31au4KtM.net
- すまん本当に何言ってたんだろう、SharpDX使った事あるのになんかDXライブラリと勘違いしてたかもしれない
- 919 :名前は開発中のものです。:2014/06/19(木) 10:23:59.18 ID:88xd9jEp.net
- そもそもレイヤの違うもの並べてどうするのと
- 920 :名前は開発中のものです。:2014/06/19(木) 11:41:58.64 ID:ioG87yMm.net
- DirectXは手続きがめんどくさくてラップすることはあるけど
OpenGLはラップしてると何故か気持ち悪くなる
- 921 :名前は開発中のものです。:2014/06/19(木) 15:49:23.76 ID:5ywlWImO.net
- マリオカートみたいなの作るとして
キャラクターごとにクラス作るか、キャラクターというクラス作ってパラメーターとかモデルを登録する方式にするか迷うんだけどどうしますかね
- 922 :名前は開発中のものです。:2014/06/19(木) 16:22:56.31 ID:OzKIEc04.net
- 後者でしょ
- 923 :名前は開発中のものです。:2014/06/19(木) 19:46:32.64 ID:OSALf3vF.net
- >>922
>>922が言うようにキャラクタークラス作ってパラメーターやモデルを登録する方式が良い
ただ、キャラクタークラスを継承したキャラクター毎のクラスが在ってもいいとは思う
- 924 :名前は開発中のものです。:2014/06/19(木) 19:56:52.61 ID:c9nisOjB.net
- キャラクター毎に全く挙動が変わるならそれぞれクラス作るのもありだと思う
- 925 :名前は開発中のものです。:2014/06/21(土) 00:11:03.73 ID:tuXXF6Tj.net
- 問題は、ゲーム時ループ中などの速さが要求される箇所で、
個体複雑性に起因する条件分岐が増えるのをどう回避するか、か。
末端(=キャラ個体)に複雑さを集約するか、
流れ制御側(=タスクシステム、メインループ)に複雑さを押し付けるかだな
どちらも楽しそうだな
- 926 :名前は開発中のものです。:2014/06/21(土) 00:30:22.54 ID:EKUWcmyO.net
- その程度の分岐で処理落ちが起きたりせんよ
ロジックとして分かりやすく簡潔にかける方を選んどけ
速さを求めるのは衝突判定とか描画部分だけで良い
- 927 :名前は開発中のものです。:2014/06/21(土) 07:10:24.87 ID:5/Sd9UCE.net
- 最近、フィルレートにばっかり処理の比重を取られて、CPUがかなり遊んでいる状態。
- 928 :名前は開発中のものです。:2014/06/21(土) 11:22:51.25 ID:iamZ/Ql4.net
- >>925
クラスに細分化した所で関数呼び出しがvtable一個分の呼び出しロスぐらいで
分岐は生成時位しかしなくない?
状況で変わるようなのはステートパターンだろうし
挙動だけ別クラスでキャラクタークラスに差し込みしても同じ程度だろう
- 929 :名前は開発中のものです。:2014/06/21(土) 15:35:14.32 ID:29GFkBgY.net
- ゲームループ内で毎回どのキャラか判定するつもりなのかもしれない
- 930 :名前は開発中のものです。:2014/06/21(土) 18:38:49.94 ID:ATU6QwSf.net
- 無能な奴ほど、最適化しても誤差に吸収されてしまいそうな部分にこだわるんだよね。
- 931 :名前は開発中のものです。:2014/06/21(土) 20:19:11.38 ID:tuXXF6Tj.net
- 「無能な奴」でない奴の作品を検証させろよ^^
- 932 :名前は開発中のものです。:2014/06/21(土) 23:30:52.31 ID:mvCTHax3N
- ^^つけないと会話できんのか!!!
- 933 :名前は開発中のものです。:2014/06/22(日) 01:29:43.57 ID:0HERkbyf.net
- >>930
「早すぎる最適化は諸悪の根源である」ってやつだね。
そういうのは遅さが気になってから手をつける部分なのにね。
- 934 :名前は開発中のものです。:2014/06/22(日) 08:34:06.04 ID:csKh83iE.net
- コードの最適化は最後でいいけど、設計の最適化はコーディング前にやっとかないと修正で地獄見るぞ
- 935 :名前は開発中のものです。:2014/06/22(日) 12:42:14.46 ID:EwYApkfm.net
- RPGの技ってどうやってるの?
やっぱりラムダ式をmapに入れてるの?
- 936 :421:2014/06/22(日) 17:30:21.94 ID:So0IxHSH.net
- スプライトアニメーションのアルゴリズムを作っているのですが、
拡大・角度・移動の情報を格納した構造体を3次元配列で保持したいです。
当初は
SAnimationNode animations[MOTION_NUM_SIZE][FRAME_NUM_SIZE][IMAGE_NUM_SIZE];
としていたのですが、よく考えたらキャラクターごとに画像の枚数やアニメーションのフレーム数が違いました
動的配列の部分をvector型にしようとしたら
vector< vector<SAnimationNode> > animations[MOTION_NUM_SIZE];
となったんですが、これは
SAnimationNode animations[FRAME_NUM_SIZE][IMAGE_NUM_SIZE][MOTION_NUM_SIZE];
こういう意味になってしまわないでしょうか?
- 937 :名前は開発中のものです。:2014/06/22(日) 18:17:04.62 ID:6teQhgwq.net
- >>936
vector< vector<SAnimationNode> > animations[MOTION_NUM_SIZE];
↓
animations[MOTION_NUM_SIZE][FRAME_NUM_SIZE][IMAGE_NUM_SIZE]
となるんじゃない?
- 938 :名前は開発中のものです。:2014/06/24(火) 13:14:27.79 ID:Uog3JQdr.net
- いまいち文字コードについてがわからん。
Windows上でUTF8,UTF16LE,CP932を相互変換したいんだけど、
マルチバイト?ワイド文字?で混乱
- 939 :名前は開発中のものです。:2014/06/24(火) 13:33:03.26 ID:IbY2i7BW.net
- マルチバイト、ワイド文字と、文字コードは別。
windowsでは単に、8ビット単位と16ビット単位で扱うかどうかの差。
- 940 :名前は開発中のものです。:2014/06/24(火) 13:58:16.35 ID:Uog3JQdr.net
- >>939
マルチバイト文字→ShiftJis,UTF8,EUCJP
ワイド文字→UTF16,UCS-2
でいいの?
- 941 :名前は開発中のものです。:2014/06/24(火) 14:27:45.13 ID:GPkpIMQJ.net
- 字義的には、一文字をあらわすのに複数の可変長のバイトをつかうのがマルチバイト
同じサイズのワード値をつかうのがワイド文字
ワイド文字は固定長なのでプログラムが
単純になるので楽、というのが本来の想定
windows は歴史的に16bitのユニコード
(UCS2)を内部コード兼ワイド文字としてつかってたんだけど
ユニコードが拡張されて、16bit 可変長(UTF16)になってしまい、
ワイド文字自体は拡張せずそのまま16bitとしたのでの「ワイド文字」を使ってても
マルチバイトと同じことする必要があってプログラム上のメリットは薄れてしまってます
ワイド文字は環境固有の内部データで
統一仕様が無いので、外部とのやりとりは
かならずマルチバイト文字列を使うのが原則
Unix系だとワイド文字は普通32bitです
そういう意味では、そこにでてる名前は全部規格で仕様決まってるのでマルチバイトです。たまたま固定長なだけ
Win環境に限ればAPIで「ワイド文字」
というとUTF16のことで、変換関数で
指定のマルチバイトと変換できます。
UCS2は可変長部分をのぞけばUTF16と合致します
他のOSではそうとは限らないので注意が必要。
マルチバイトのファイルは共有できるけど、ワイド文字はあくまでプログラム内部でつかうもの。
完全に環境依存しないためには、
ポータブルな文字コード変換ライブラリの準備と、
ワイド文字仕様を自分で決めて対応する必要があります
- 942 :名前は開発中のものです。:2014/06/24(火) 14:34:10.01 ID:GPkpIMQJ.net
- 長々かいちゃつたけど、ワイド文字は、その環境で使える全ての文字を含むことになってるので
指定のマルチバイト→ワイド文字→指定のマルチバイト
とすれば文字コード変換できることになります
- 943 :名前は開発中のものです。:2014/06/24(火) 16:00:12.61 ID:F5vPhfmG.net
- マルチプラットフォーム前提のゲームの場合、
文字列はwstring型でUTF16で格納しておくのが最善策かな?
- 944 :名前は開発中のものです。:2014/06/24(火) 16:03:01.31 ID:IbY2i7BW.net
- マルチプラットフォームだったらUTF8では。
UTF16を使ってるのはWindowsくらいで。
Windowsを使ってるならUTF16でいい。
- 945 :名前は開発中のものです。:2014/06/25(水) 03:34:26.90 ID:tRPy5vnQ.net
- C++でUTF8は面倒だ
- 946 :名前は開発中のものです。:2014/06/25(水) 07:19:47.27 ID:i6nom8bR.net
- 簡単に文字コード変換出来るライブラリはないのかね
ググった感じだとICUってのが良さそうだけど、ライセンスがよくわからん
誰か要約してくれ
http://source.icu-project.org/repos/icu/icu/trunk/license.html
- 947 :名前は開発中のものです。:2014/06/25(水) 23:42:32.69 ID:sN1oXLi0.net
- Unityが便利なのはわかるんだけど、プログラミングが好きだから
全部コード書いてるって人は少なからずいる・・・よね・・・
- 948 :名前は開発中のものです。:2014/06/26(木) 00:08:17.74 ID:2eOLOr66.net
- unity使ったことないけど凝ったことやろうとすると結局コード書かないといけないって話は聞いた
- 949 :名前は開発中のものです。:2014/06/26(木) 00:12:12.19 ID:G3Ghr1l9.net
- >>947
俺もそれしたいんだけど重くなりそうじゃないか?
もともと遅いのに素材の最適化効かないし
- 950 :名前は開発中のものです。:2014/06/26(木) 01:31:37.50 ID:KO+8FPHu.net
- Unityってよく知らんのだがコード書かずにゲーム作れるのか?
すげぇな。
- 951 :名前は開発中のものです。:2014/06/26(木) 04:40:53.24 ID:BP57VnwG.net
- C#とかでコード書かんと
- 952 :名前は開発中のものです。:2014/06/26(木) 05:42:45.22 ID:AmOKqMVz.net
- RPGツクールならコード書かなくてもゲーム作れるね
- 953 :名前は開発中のものです。:2014/06/26(木) 07:52:49.33 ID:vdSX1b1y.net
- >>948
まぁ凝ったことするなら結局自分で実装しなきゃいけないけど
凝らないところはぺいぺいってできるよ
>>949
処理速度とかは自分ができる範囲でいいかな
商用じゃないなら製作者が好きなようにすればいいと思う
- 954 :名前は開発中のものです。:2014/06/26(木) 08:15:53.02 ID:rGvRjoRE.net
- いつからゲームはツクールみたいなツールで作るようになってしもうたん
もはやプログラマーじゃないじゃん
コードを書いてなんぼだろ
マウスでぽちぽち画面操作してるだけでゲームができてしまうなんて許されんだろこれは
- 955 :名前は開発中のものです。:2014/06/26(木) 08:29:15.09 ID:RxAyclSt.net
- マシンの性能が昔とは比較にならないので、カリカリにチューニングするより汎用エンジンで生産性をあげた方がコストかかんないし品質も上げやすいだろうね
限界までパフォーマンス突き詰めるなら自分で書くしかないだろうけど、半端なスキルで自作しても汎用エンジンより低性能になるだけだろうな…
- 956 :名前は開発中のものです。:2014/06/26(木) 08:32:54.24 ID:a944jii7.net
- グラフィカルになってもプログラマーの
やるべき仕事の本質は変わらんべ
コード書く密度量が減っても
そのぶん規模が大きくなってる
昔からその繰り返しじゃん?
- 957 :名前は開発中のものです。:2014/06/26(木) 10:31:17.39 ID:HDqbSuB3.net
- >>954
企画書があってこそコード書いてなんぼな状況になる
しかしプログラマの多くは企画書が書けないので、簡素なものに頼ってる
- 958 :名前は開発中のものです。:2014/06/26(木) 10:43:16.51 ID:ROLnmccF.net
- スレチなのでそろそろ終わったほうがいいと思うが、
unityの無料版は非同期ロードが出来ないみたいだね。個人的にはここが致命的かな。
だからといって有料版買おうと思うほど、高度にグラフィカルなゲーム作ってる訳でもないし。
要件と費用対効果がいい感じになるのなら便利なんだろうけどな。
- 959 :名前は開発中のものです。:2014/06/26(木) 10:52:26.33 ID:KO+8FPHu.net
- ゲームが作れるならコードだろうがツールだろうが構わないと思うが、
ツールは固有の使い方を覚えないといけないから
物覚えの悪い俺には不向きだ……。
とはいえ最近はUnity使えるとそれだけで有利なんだよなぁ……
- 960 :名前は開発中のものです。:2014/06/26(木) 15:00:55.14 ID:BP57VnwG.net
- 最近下ろしてみたらスプライトエディタまで実装してあるし
なんかすごい事になってるな
- 961 :名前は開発中のものです。:2014/06/26(木) 22:20:03.49 ID:vxlMCzXq.net
- >>946
流し読みした限りでは、ヒゲモジャ教祖のコピーレフトじゃないほうの
つまり緩いほうのフリーソフトのライセンスの典型的な文言かと。
ちょっと自信なかったのでFAQのほうも読んでみました
http://userguide.icu-project.org/icufaq
の「How is the ICU licensed?」によれば
>a simple, permissive non-copyleft free software license,
>compatible with the GNU GPL.
>The ICU license is identical to the version of the X license
という事なので、Xライセンス(MITライセンス)と同じみたいですね
- 962 :名前は開発中のものです。:2014/06/26(木) 22:44:18.33 ID:LTYq6LHZ.net
- >>961
おお、要約サンクス
MITと同じって事は著作権表示しとけば好きに使っていいのか
ちょっと触ってみようかな
- 963 :名前は開発中のものです。:2014/06/27(金) 00:21:52.45 ID:ca0yLnFP.net
- ICUはすごいけど、でかすぎて大抵の用途に不向きよ
- 964 :名前は開発中のものです。:2014/06/27(金) 04:25:38.40 ID:3FddD6R4.net
- 絶望
- 965 :名前は開発中のものです。:2014/06/28(土) 01:52:31.46 ID:Qml0dYMK.net
- ゲーム重視の会社・・・Unityが出来ればいい
プログラミング重視の会社・・・オブジェクト指向が出来ればいい
古さ重視の会社・・・C言語とUNIXが出来ればいい
だったらどれが一番多い?
- 966 :名前は開発中のものです。:2014/06/28(土) 01:53:20.27 ID:/Aw0cnXs.net
- 3つ×(バツ)を付けて
ちょっぴり大人さ
- 967 :名前は開発中のものです。:2014/06/28(土) 01:59:32.24 ID:qVQSlIJD.net
- 左と右がまったく合っていないので答えられません。
- 968 :名前は開発中のものです。:2014/06/28(土) 09:07:15.04 ID:fYNbwyWm.net
- エンジンあれば簡単にゲームできると勘違いしている会社・・・Unityが出来ればいい
ツールはつくれても面白いゲームは作れない会社・・・オブジェクト指向が出来ればいい
時代の流れに完全に取り残されてる会社・・・C言語とUNIXが出来ればいい
こうかな…さすがにCとUNIXだけってゲーム会社はもうないかな
- 969 :名前は開発中のものです。:2014/06/28(土) 13:14:02.98 ID:pkvK53ex.net
- >>962
私はpocoライブラリを使ってる都合で文字コード変換はしますけど
UTF-16⇔UTF-8のみなのでMSのAPIで済ませてます。簡便ですので
- 970 :名前は開発中のものです。:2014/06/28(土) 13:30:50.89 ID:UFXBTkrK.net
- Unicode相互変換ってC++11で標準ライブラリに入らなかったっけ?
使い方はよく分からんけど
- 971 :名前は開発中のものです。:2014/06/29(日) 13:10:50.88 ID:Yl1HyccO.net
- 最近のゲーム会社って偉そうだよね
楽して儲かるゲーム作っといてそれを言うなよって感じ・・・
- 972 :名前は開発中のものです。:2014/06/29(日) 15:05:01.46 ID:OwKWjPKS.net
- ttp://www.nicovideo.jp/watch/sm23811893
大爆笑
- 973 :名前は開発中のものです。:2014/07/01(火) 19:21:53.76 ID:14799agU.net
- >>972
誰か無料のゲームエンジンの存在を教えてやれよ…
ゲームコーディングを知識ほぼ0の状態からスタートとか、挫折する未来しか見えない
- 974 :名前は開発中のものです。:2014/07/01(火) 19:24:44.84 ID:2U1HTXmR.net
- 残念ながらこいつがゲーム開発しようと思い立ったのは何年も前
詳しくは月雫タクトで検索
- 975 :名前は開発中のものです。:2014/07/01(火) 21:31:57.05 ID:NbePC4/B.net
- >>974
コイツのことだろ
C/C++ゲーム製作総合スレッド Part4
http://peace.2ch.net/test/read.cgi/gamedev/1376262450/481
一時期、前スレに湧いてた「kazuki」って奴だろそいつ
- 976 :名前は開発中のものです。:2014/07/01(火) 22:44:05.97 ID:bRWh4YXo.net
- なんでそいつだと思ったの?
- 977 :名前は開発中のものです。:2014/07/01(火) 23:06:23.36 ID:2U1HTXmR.net
- やってることがいつも同じだし
- 978 :名前は開発中のものです。:2014/07/01(火) 23:09:44.15 ID:2U1HTXmR.net
- 例
ttp://jbbs.shitaraba.net/bbs/read.cgi/game/49104/1355540267/l50
- 979 :名前は開発中のものです。:2014/07/02(水) 00:54:00.05 ID:hTKfgYQb.net
- ttp://nicovideo.jp/watch/sm22798006
こいつはすごいの?
- 980 :名前は開発中のものです。:2014/07/03(木) 13:20:31.93 ID:bmzuMbOZ.net
- Graphics Diagnostics in Visual Studio 2013 Update 3 RC
http://blogs.msdn.com/b/vcblog/archive/2014/07/02/graphics-diagnostics-in-visual-studio-2013-update-3-rc.aspx
- 981 :名前は開発中のものです。:2014/07/05(土) 21:27:49.06 ID:4rWl8Euu.net
- >>972
一生掛けてもテトリスすら作れなさそう
- 982 :名前は開発中のものです。:2014/07/05(土) 22:33:05.40 ID:mMkxAecd.net
- JAVAの職業訓練が終わったのかな。
- 983 :名前は開発中のものです。:2014/07/05(土) 22:37:30.46 ID:VPCAfWy5.net
- >>972 は茨の道を行ってると思うがバカにはできないだろ
- 984 :名前は開発中のものです。:2014/07/05(土) 23:15:37.36 ID:CJTkk+Ap.net
- 行ってるならね。
もし他の人が言ってるようにkazukiなら行くいく詐欺で実際には行ってないことになる。
- 985 :名前は開発中のものです。:2014/07/06(日) 00:52:20.23 ID:crYRPTpb.net
- ず
- 986 :名前は開発中のものです。:2014/07/06(日) 01:25:59.86 ID:LtkmUGY2.net
- fpsのくだりが秀逸
- 987 :名前は開発中のものです。:2014/07/06(日) 09:18:10.68 ID:/OKy/hLS.net
- 一応最後まで(スキップしまくりで)見たけど、なんかあまりにもアレすぎて
自己啓発セミナーか何かに見えるんだよなぁ…
- 988 :名前は開発中のものです。:2014/07/06(日) 10:10:14.99 ID:/c1kpgiT.net
- 自分のモチベの為にやってるパターンでしょ。
- 989 :名前は開発中のものです。:2014/07/06(日) 13:31:10.89 ID:ij3Sb7R1.net
- そのモチベもゲーム製作より動画作って講釈垂れる方がメインのようなキガス
- 990 :名前は開発中のものです。:2014/07/06(日) 19:13:55.67 ID:0XE4ySRd.net
- よく考えたオブジェクト指向に徹したらまともにインスタンスプールとか使えなくね?
2年ぐらいずっとゲーム中にインスタンス化してたわ
- 991 :名前は開発中のものです。:2014/07/06(日) 23:36:27.31 ID:aXYLrS//.net
- 現実にある問題を解決するのに最適な実装があるなら採用すればいいのであって
それをさせない、使わせない、徹底した指向などというものがあるなら、それは
単なる教条主義、カルト宗教、ゲーム作れないアタマでっかちの屁理屈。無価値
- 992 :名前は開発中のものです。:2014/07/07(月) 22:37:43.59 ID:eo+VXBvr.net
- プログラミングしかしないプログラマがそれを言うか?w
- 993 :名前は開発中のものです。:2014/07/07(月) 23:58:57.62 ID:vAXNC/8j.net
- ゴミグラマは所詮奴隷だからね。
威張れるのは大学まで。
大学卒業後は他人の手駒としてキリキリこき使われる運命なのだ。
- 994 :名前は開発中のものです。:2014/07/08(火) 00:07:38.81 ID:5BHEJoHN.net
- お前らすげーな
>>990-991の会話の流れが全く理解できない
- 995 :名前は開発中のものです。:2014/07/08(火) 00:21:10.51 ID:4Hc5PqSd.net
- >>992「もっと楽な方法あったわ」
>>993「頭の固いお前が悪い」
>>992「オマエモナー」
>>993「人間に戻りたいです」
- 996 :名前は開発中のものです。:2014/07/08(火) 06:37:39.35 ID:ZcFfD8ry.net
- 実際の現場でプログラムしかしない要員なんてほとんどいないだろ
大概は設計から製造、テストまで一通りやらされる
プログラムだけの仕事はオフショアでやる
プログラムしかできないとかデバッグ要員にしかならん
- 997 :名前は開発中のものです。:2014/07/08(火) 13:06:36.01 ID:n3Bq3v3Y.net
- int main()
{
for(i=995;i<1000;i++)
std::cout << "埋め";
}
- 998 :名前は開発中のものです。:2014/07/08(火) 13:18:07.15 ID:qjtrVyE1.net
- 戻り値を戻せ。
こんな短いプログラムでミスするな。
- 999 :名前は開発中のものです。:2014/07/08(火) 13:21:39.89 ID:HOUfCYEJ.net
- cもc++もだいぶ前からmainは戻り値省略できるような
- 1000 :名前は開発中のものです。:2014/07/08(火) 13:33:31.30 ID:Lr0fEuau.net
- iの型は宣言しなくていいのん?
- 1001 :名前は開発中のものです。:2014/07/08(火) 14:41:48.07 ID:aAa77qni.net
- i++って++iに最適化されるとは限らないからやめとけとどっかで見たが
どの程度真実なのかね。
- 1002 :名前は開発中のものです。:2014/07/08(火) 15:06:44.25 ID:M09CLZ/Z.net
- 1000
,〜、
ヽ('∀`)ノ ノ_ζ
( ) 彡
/ω\
- 1003 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1003
258 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★