C/C++ゲーム製作総合スレッド Part7at GAMEDEV
C/C++ゲーム製作総合スレッド Part7 - 暇つぶし2ch201:名前は開発中のものです。
15/02/01 09:04:46.33 4SXpmV3a.net
>>189
たまにそういうシチュエーションがあるけど、それを解決するために言語使用に手を入れるのは言語道断

202:名前は開発中のものです。
15/02/01 16:13:17.17 7SDWQ5Km.net
>>192
intとかならそうなんじゃないかな。
でもconstで定義されるのがクラスインスタンスの場合、
実行時に生成されるのでは(恐らくクラスに最初にアクセスした時)。
>>193
>#defineした変数
#defineはプリプロセッサで置換されるマクロに過ぎないよ。

203:名前は開発中のものです。
15/02/01 16:38:17.15 5cTwIokB.net
>>193
お前のconstでコードがやばい

204:名前は開発中のものです。
15/02/01 16:38:49.06 gTwIs5aq.net
template初めて使ったんだけど引数側に同じtemplate型があれば、
返り値をわざわざ指定しなくてもいいの?
↓こんなん
template<typename T>
T zeroCheckException(T t){
if(t == 0)throw;
return t;
}

205:名前は開発中のものです。
15/02/01 16:44:02.52 wN5YVAib.net
>>197
2つあるTはどちらも同じ型なんだから、むしろ指定できたらダメだろ
引数と同じ型を返す関数、という意味になっている
引数から推測できない型を返したいなら、typename を2回書けばいい
template < typename R, typename T > R convertTo(T t) { return ... }
string r = convertTo<string>(123);

206:名前は開発中のものです。
15/02/01 16:59:29.96 7TQeJfVA.net
>>197
>>返り値をわざわざ指定しなくてもいいの?
多分質問の意味からだと、返り値を引数と同じ型(T)で返したいなら返り値(の型)の宣言は必要
その部分はtemplateとは関係のない関数宣言の話で、template内はTと言う型が使えるようになっているだけだと思って関数を宣言すればOK
だから、その関数が返り値を返す必要がないならvoid、intを返したいならintになる

207:名前は開発中のものです。
15/02/01 17:45:05.57 bGERJtUD.net
typenameとclassってどっちがモダンなん?
あるいは使い分けが必要?

208:名前は開発中のものです。
15/02/01 19:03:59.15 gTwIs5aq.net
URLリンク(ideone.com)
URLリンク(i.gyazo.com)
一度変数にしないと、とんでもない数値になるんだけどさっぱりわからない
計算してるわけじゃないから桁あふれで無いと思うんだけど

209:名前は開発中のものです。
15/02/01 19:05:18.65 gTwIs5aq.net
>>198,198
なるほど、ありがとう

210:名前は開発中のものです。
15/02/01 19:24:29.40 aP8gwvz+.net
>>200
常にclassを使用していて困ったことがない

211:名前は開発中のものです。
15/02/01 19:33:48.11 2nnmtHZB.net
class使ってる人を見たことがない

212:名前は開発中のものです。
15/02/01 19:36:58.64 mV3TuxIT.net
>>201
ideoneに張る意味ねえな。
最低限実行出来るようにしてから張れ。
その過程でここで質問するまでもなく解決することもある。

213:名前は開発中のものです。
15/02/01 19:53:30.95 I530QHNw.net
>>201
11行目のgetPositionをnextPosにしても駄目?
評価順は正しいとは思うけど最適化とかキャッシュとかで狂ってるのかな?と思いました
しかし、難読化してるようなソースだな…

214:名前は開発中のものです。
15/02/01 20:01:18.83 mV3TuxIT.net
>>201
ヒント
unitListが標準コンテナだとするとsize()の返す型はsize_t
多くの処理系でsize_tは符号無し
1-2uの結果は?

215:名前は開発中のものです。
15/02/01 20:12:12.40 2nnmtHZB.net
そんな問題じゃねーよw

216:名前は開発中のものです。
15/02/01 20:29:03.32 mV3TuxIT.net
>>208
(゚Д゚)

217:名前は開発中のものです。
15/02/01 20:46:24.29 eIbULHuy.net
>>200
これは俺ルールだが、
typenameはbool, int, doubleとかも使いたいとき
classはクラスだけでいいとき

218:199
15/02/01 22:08:02.18 0xVgzIN+.net
>>203>>204>>210
見事にバラバラだなー

219:名前は開発中のものです。
15/02/01 22:50:33.72 /xEMpT1p.net
classしか使わない派だが,template自体あまり使わないことにしてる

220:名前は開発中のものです。
15/02/01 22:52:09.95 UZAipjiA.net
自分はtypename派だな。
classに限定しない使い方が多いからというのがあるけどね。
ま、組み込み型も一種のクラスと見做せないことはないし、文字数少ない分、classのほうがいいかもしんないけど。

221:名前は開発中のものです。
15/02/02 00:06:09.93 WStqUBYk.net
もはやゲーム関係ない気がするのはミンナニ ナイショダヨ

222:名前は開発中のものです。
15/02/02 01:35:39.62 g0RkpJRz.net
て、テンプレ使えれば前以上に楽ができるかもしんないし!
なお移植性が壊滅的に下がる模様

223:名前は開発中のものです。
15/02/02 04:07:49.86 lvNA0Ulc.net
テンプレート使って移植性が下がるってここの住民は一体いつの時代に生きてるんだろうか

224:名前は開発中のものです。
15/02/02 08:53:14.68 9YOvsS+B.net
俺もテンプレート自体使わないな
過去の遺物だろあれ

225:名前は開発中のものです。
15/02/02 09:10:16.63 QEPcxUVH.net
>>217
ダメだこいつ…早くなんとかしないと

226:名前は開発中のものです。
15/02/02 09:50:21.86 pbbvOQ2U.net
VSのバージョン上がるたびにどこかしらテンプレートで書いたところの書き直しが待ってるんだよな
MPLに手を出すと他の処理系でまた違う方言で困るし

227:名前は開発中のものです。
15/02/02 10:05:53.54 ZKghX0zO.net
バージョン上がるたびに、ってほどテンプレートに手入ってたっけ?
むしろ、いままでコンパイルを通すためにいちいち">"と">"の間にスペースを入れていたのが
入れる必要なくなったとか、そういう方面の変更しか知らないんだけど

228:名前は開発中のものです。
15/02/02 10:33:54.29 TF5MhFQ8.net
だいぶこなれてきたから、できないことができるようにはなっても、逆は無いと思うぞ
確かにC++03時代は typename が急に必要にされてエラーになるのはあったけど
気になるなら互換性を吸収するラッパーとしてboostを使うのも手だな

229:名前は開発中のものです。
15/02/02 11:10:10.63 pbbvOQ2U.net
最近変えたところだと
enable_ifが無い頃の代替としての部分特殊化のコードが
2012では通ってたのに2013でC2753で通らなくなって
代わりにenable_if使えるからそれになって
2015でconstexprあるからそこはテンプレート要らないだろうなて状態だわ
なんでエラーなのか追いかけるの面倒だから新機能で凌いでる
boostのを最初から使えばいいんだけどライブラリのバージョンアップが面倒でね

230:名前は開発中のものです。
15/02/02 11:30:47.44 uEPb5G0x.net
テンプレートが悪いというよりVSの実装が

231:名前は開発中のものです。
15/02/02 12:44:55.25 QEPcxUVH.net
STLもテンプレートなのに

232:名前は開発中のものです。
15/02/02 13:21:17.62 ZKghX0zO.net
SFINAE周りは確かに、C++11でようやく統一仕様が策定されて多少手を付けやすくなった印象がある
>>224
テンプレートを使ってるライブラリを使うのと
テンプレートなクラスや関数を自分で作るのとは
結構隔たりがある気がする…

233:名前は開発中のものです。
15/02/02 13:54:32.94 fu9cgs9q.net
スタンダードテンプレートライブラリ(の構想・実装)が先にあってC++で実装するためにテンプレートが導入された。テンプレートはSTL実装のための道具といえる。

Standard Template Library - Wikipedia
STLのアーキテクチャの多くはアレクサンドル・ステパノフという一人の人物の手によって作られた。
1979年に彼はジェネリックプログラミングの初期アイデアを練り始め、そしてソフトウェア開発に革命をもたらす可能性を探究し始めた。
当時はジェネリックプログラミングを実際にサポートしているプログラミング言語がまだなかった。
それをサポートする最初のメジャーな言語はジェネリックユニットの機能があるAdaであった。
1987年までにステパノフとマッサーはジェネリックプログラミングの研究成果としてAdaのリスト処理ライブラリを開発してリリースしていた。
C++は当時まだ言語として未成熟ではあったものの(テンプレートはまだなく後から実装された)、より広く普及してジェネリックプログラミングの良好なサポートが提供される可能性が高いと考えられた。

234:名前は開発中のものです。
15/02/02 14:52:33.01 bbrlQEEY.net
で、結局>>201はuintの減算でオーバーフローしてるってことでいいのか?
int - uintがintにキャストされれば大丈夫そうな気がするけど

235:名前は開発中のものです。
15/02/02 15:26:46.03 u58PP6hj.net
桁あふれや型違いの時に起こる超数値に見える

236:名前は開発中のものです。
15/02/02 16:37:35.11 lvNA0Ulc.net
そんな問題じゃねーよさんが解決してくれるさ

237:名前は開発中のものです。
15/02/02 17:14:57.39 ZKghX0zO.net
直接的な解決策や原因は分からないけど、俺なら
・「unitList.size()*140」を「unitList.size()*140.0f」にして直るか確認する
・set/getPositionXを通さなかったらどうなるか確認する(当該メンバ関数の実装が自明である場合を除く)
・コンパイラの警告設定を最強にしてみて、何かメッセージが出るか確認する
あたりをやってみると思う

238:名前は開発中のものです。
15/02/02 18:13:33.41 NKDBUGQv.net
で、ゲーム制作だと意識して。
開発環境を開発中やデバッグ中に更新するとか無いだろ
移植で困ることは判る

239:名前は開発中のものです。
15/02/02 18:39:29.29 u58PP6hj.net
新しい開発環境に新規実装された要素どうしても使いたかったんだ…と推測(適当)
CやC++とはあまり関係ないけど、
一部の開発環境では、関数や変数を書いた行にコメントしとけば
カーソル合わせるだけでコメントが出るのでメモ代わりにできるな
なおソースがコメントだらけになり、よそに貼った時に失笑物のソースになる模様

240:名前は開発中のものです。
15/02/02 19:31:16.34 lvNA0Ulc.net
URLリンク(ideone.com)
ほぼ答えのヒント張っても理解できてないアホがいっぱいいるんで再現させてやったぞ
>>208
で、どんな問題だったんですかね?

241:名前は開発中のものです。
15/02/02 20:49:55.23 0Y8pqiU9.net
色々試してみたけど、オーバーフローしたuintを直接floatにキャストするのがダメっぽいね
一回intにキャストすれば大丈夫だった
int - uintはintになるってわけじゃないのね
テストコード
#include <iostream>
int main()
{
int i=3;
size_t ui = 5;
float x = i-ui;
float x2 = i - static_cast<int>(ui);
int x3 = i - ui;
float x4 = static_cast<int>(i-ui);
std::cout << x << std::endl;
std::cout << x2 << std::endl;
std::cout << x3 << std::endl;
std::cout << x4 << std::endl;
std::cout << static_cast<float>(i-ui) << std::endl;
}

242:名前は開発中のものです。
15/02/02 21:20:46.80 lvNA0Ulc.net
>>234
intで表現出来ない値をintへcastしたら桁あふれで未定義動作

243:名前は開発中のものです。
15/02/02 21:33:08.99 MkYgWBqp.net
>>235
未定義になる可能性のある演算は暗黙のキャストしてくれないって事?

244:名前は開発中のものです。
15/02/02 21:39:18.84 lvNA0Ulc.net
>>236
違う
intとunsigned intの演算結果はunsigned int
もちろんunsigned intはマイナスを表現出来ない、なので0-1uはUINT_MAXになる。(符号無し整数は桁あふれしても未定義動作ではない)
でも符号あり整数の桁あふれは未定義動作なのでUINT_MAXをintへキャストするのは未定義動作
まぁ大抵の処理系では動くだろうけど。

245:名前は開発中のものです。
15/02/02 21:57:25.95 MkYgWBqp.net
符合ありなしで演算すると符合なしになるのか
なるほどねー

246:名前は開発中のものです。
15/02/02 22:39:56.06 4aJa1XJJ.net
混ぜるな危険

247:名前は開発中のものです。
15/02/02 22:40:47.51 AAW+YNQa.net
>>239
いいねw

248:名前は開発中のものです。
15/02/03 00:10:07.19 0Nhy8xyl.net
これそもそも size_t が unsinged int なのが悪いんだよな、頭悪すぎ

249:名前は開発中のものです。
15/02/03 02:08:59.87 YnXnr0TR.net
size_tはsizeofで測ったデータの長さを受け取る物だからよ
データの長さに0未満はあり得ないから定義できないようにしてるんだろう

250:名前は開発中のものです。
15/02/03 04:00:41.53 WscpFvcA.net
質問です。
抽象クラス(親クラスとする)を継承した派生クラス(子クラスとする)を
親クラスの型のメンバー変数に子クラス型でnew()し、抽象化して保持してます。
このメンバーをdelete してすぐNULLを代入しても、参照が残ってるみたいで
エラーでる場合があります。
抽象化しているオブジェクトの削除の、お作法みたいなものってありますでしょうか。

251:名前は開発中のものです。
15/02/03 04:32:33.06 UaiJdd2F.net
>>243
スレ違いです
こちらへどうぞ
スレリンク(tech板)

252:名前は開発中のものです。
15/02/03 04:40:14.90 WscpFvcA.net
>>244
ありがとうございます。

253:名前は開発中のものです。
15/02/03 13:03:57.60 vrraL4+G.net
スレはあってるけど板が違う的な。
まあ、ゲーム関係かどうかの境目って結構曖昧だけれども。

254:名前は開発中のものです。
15/02/03 13:07:01.87 IeF+/7iv.net
いずれにしろコードもなしに質問されてもエスパーしか回答出来ないですし

255:名前は開発中のものです。
15/02/05 07:36:31.37 gQYa1HB0.net
開発期間が長すぎて、開発環境が何度も変わるのってどう思いますか?
開発環境を固定する?それともコードを書き直して対応する?

256:名前は開発中のものです。
15/02/05 08:11:52.44 6fCmneha.net
boost辺りならまだしも、言語自体のバージョンが上がるまでって
一体どんだけ開発期間が長いか間が悪いんだよ…
どうしても使いたい追加要素でもなければ変えない トラブルの素

257:名前は開発中のものです。
15/02/05 09:22:24.85 JByM0e2E.net
CSのSDKとかじゃないの?
開発序盤なら対応、終わりが見えてたらそのままってのが普通だと思うけど

258:名前は開発中のものです。
15/02/05 10:05:22.41 tVSHsnYT.net
昔VS2008から2010に上げたけど特に問題は起きなかった

259:名前は開発中のものです。
15/02/05 12:20:47.44 qWgtWrzH.net
vsの2005から2012に上げたら、Releaseでは動くけどdebugでは動かなくなった
自前で作ってた文字列クラスが弾かれたから、現在、std::wstringに置き換え中

260:名前は開発中のものです。
15/02/05 17:18:01.03 grWdPzSP.net
>>248
何年にもわたって開発を続けていくようなものなら
あんまり気にせずに変えちゃう

261:名前は開発中のものです。
15/02/05 19:05:51.48 IWRqO40R.net
iOS向けなら変えざるを得ない

262:名前は開発中のものです。
15/02/05 19:45:56.22 ckteJ+s1.net
プロの人も来てるのかも知れないけど、同人ならぶっちゃけ
DirectX9辺りの技術基盤があれば十分じゃないの。
新技術に取り組むこと自体が目的化して、ゲームを完成させる方が
疎かになってしまうって、何かありがちな気がする。

263:名前は開発中のものです。
15/02/05 22:51:52.09 EoFgZ44U.net
別に必要ないなら使わなければいいんです、エロい人にはそれが分からんのです

264:名前は開発中のものです。
15/02/06 08:51:59.99 J5odCBuG.net
だまれ朝鮮人

265:名前は開発中のものです。
15/02/06 08:53:55.71 u5/2KnVF.net
idがバグ

266:名前は開発中のものです。
15/02/06 09:00:23.95 12AknHRs.net
>>255
DirectXがそもそも出来ない人が話に混じってるだけだから気にしない方が
DXライブラリ程度でいいんじゃないかな?同人なら
自作ライブラリ作れる人ですら少ないよ

267:名前は開発中のものです。
15/02/06 11:05:36.91 vDg1pnk8.net
面白けりゃ何でもいいんだよ。

268:名前は開発中のものです。
15/02/06 14:58:45.96 1vhL8u+G.net
もとの環境で大体完成していたのに、
無理やり次世代機用に作り直そうとしたがうまくいかず、
そのまま爆死した家庭用機向けソフトのプロジェクトなら知ってる

269:名前は開発中のものです。
15/02/06 17:34:24.75 12AknHRs.net
>>261
RomからCD-ROMへの移植は苦労が多かった
ROMの容量が4Mバイト超えてるとRAMご足りなくなって、動的に入れ換えしようとするとリソースのマネージメントが大変だったから

270:名前は開発中のものです。
15/02/06 22:49:06.68 qIQhbqny.net
しかもそれだけ苦労したにもかかわらず、ロードが遅いと文句言われたに違いない…。

271:名前は開発中のものです。
15/02/07 13:13:21.00 uCqCiOK0.net
>>261
PS3だな そうに決まってる

272:名前は開発中のものです。
15/02/07 13:42:24.95 buz4BGGO.net
>>252
置き換えたらさらに別の場所が動かなかったから2013へと移行したりw
いや、ネットでは動くコードと書かれているんだよ、2013からは動くと
うちのPCで2013はマトモに動くかな?今インストール中だが

273:名前は開発中のものです。
15/02/07 14:45:09.34 84N483gz.net
ヘッダで前方宣言したはずのクラスがCandidates are: struct SimpleAudioEngineとエラーを出され
定義でreference to 'SimpleAudioEngine' is ambiguousとエラーを出されます
ヘッダではポインタしか使ってません
思うところがあるとすればSimpleAudioEngineの名前空間をusing namespaceしてるぐらいです

274:名前は開発中のものです。
15/02/07 14:58:01.00 tCXn


275:t3yJ.net



276:名前は開発中のものです。
15/02/07 16:04:21.06 ns5GMSPv.net
異なる名前空間の中で前方宣言すると別物だとみなされて
あとでusing namespaceすると区別できない

277:名前は開発中のものです。
15/02/07 19:26:49.25 buz4BGGO.net
開発環境をvs2012からvs2013に変更したのは大当たりだった
エラーの位置は分かりやすくなったし、デバッグ機能は大幅に強化されてるし、
文字列クラス(std::wstring)は扱いやすくなったし、全般的に軽くなった

278:名前は開発中のものです。
15/02/07 20:51:50.60 G8afa58Z.net
std::wstringって何か変更あったっけ?

279:名前は開発中のものです。
15/02/07 23:10:30.01 buz4BGGO.net
operaterがほとんど対応してなかったんだよ。
+=はあるのに+は無いとか、map<wstring,wstring>で使えないとか。

280:名前は開発中のものです。
15/02/07 23:18:38.16 17zrnW4A.net
ためしてないがそれはないだろ。
あとSTLやC標準ライブラリ、C++標準ライブラリは備え付けのを必ずしも使う必要がない。
実装は多数ある。

281:名前は開発中のものです。
15/02/07 23:55:35.77 tCXnt3yJ.net
たまたまインストールされてるのがVS2012だったから試してみたが普通に使えた

282:名前は開発中のものです。
15/02/08 00:06:03.58 uih1DHvo.net
あれ?って事は、vs2005を後から入れたせいでおかしくなってるのか??

283:名前は開発中のものです。
15/02/08 00:15:39.03 uih1DHvo.net
UMLのツールを買ってみて、たまたま家のVSで対応してるのが2005だけだったから、
後からインストールし直したんだよな
そっか、VS2005のコードでC++のコードが上書きされてたか

284:名前は開発中のものです。
15/02/08 00:52:07.50 iVwSBW/g.net
とんでもない話だなw

285:名前は開発中のものです。
15/02/08 01:13:03.19 sR/2PkWV.net
VC6でもoperator+位あったような気もするけど
不便な所は連続したメモリ領域の保証が無いから
実装上はともかく厳密にやろうとするとvectorじゃないとダメな所

286:名前は開発中のものです。
15/02/08 09:15:03.02 dvv+ci6w.net
連続領域かどうかに関しては
- vector C++03/11 → 連続保証
- string C++03 → 実装依存 / C++11 → 連続保証
らしいぞ。 最近のVCなら大丈夫なんじゃないかな。

287:名前は開発中のものです。
15/02/08 13:48:18.26 vuQZMEzS.net
連続性が保証されるようになっているとはな
外見は変わらなくても内部は少しづつ変わってるんだな

288:名前は開発中のものです。
15/02/08 13:51:09.60 iVwSBW/g.net
地味ではあるが重要なことだな。

289:名前は開発中のものです。
15/02/08 13:58:02.91 uih1DHvo.net
mallocのメモリ配置はOSで変わるんじゃなくてコンパイラで変わるみたいやね

290:名前は開発中のものです。
15/02/08 15:05:56.00 OpMqb989.net
依存するのはコンパイラじゃ無い
ランタイム依存

291:名前は開発中のものです。
15/02/09 20:39:13.54 q5WWprzE.net
なんにせよ、ポインタはむやみにいじらない方がよさそうね

292:名前は開発中のものです。
15/02/10 22:00:30.08 Lg1oqTmd.net
ポインタは使い勝手がわかると色々出来るが、無くても問題無くなってきてるからなぁ……

293:名前は開発中のものです。
15/02/10 23:49:52.25 2hfNPcff.net
それなりのもの作ろうとしたらアロケーター自作になるゲーム制作はポインタ必須なんじゃないの

294:名前は開発中のものです。
15/02/10 23:59:52.09 m/pIKos0.net
プラットホームによるとは思うが、いまだにカスタムアロケータなんて使うのか?
OSや言語処理系を書いているわけではないだろうに

295:名前は開発中のものです。
15/02/11 00:01:51.67 7TGiUCxx.net
車輪の再発明が好きなんだろ

296:名前は開発中のものです。
15/02/11 00:26:12.68 IKslX+U4.net
流石にOSデフォルトのアロケーターは使わないんじゃないの
ライブラリのメモリプール使うにしてもポインタは使うだろうし

297:名前は開発中のものです。
15/02/11 00:38:39.31 5bVnp7SH.net
アロケーターはC言語かSTLのやつのことだろ?
OS自体のメモリ管理はOS自体のソースからビルドしないと変更むりでは。

298:名前は開発中のものです。
15/02/11 00:41:52.28 IKslX+U4.net
普通にnew、deleteしたらOSのAPIでメモリ確保


299:するんでないの? STLはどうかわからんけど



300:名前は開発中のものです。
15/02/11 00:51:21.24 rJC6nJDr.net
>>289
mallocの置き換えぐらいリンクするライブラリー変えるだけだよ
tcmallocでググれ

301:名前は開発中のものです。
15/02/11 00:52:08.05 vZk9YDm5.net
new deleteの動作なんて実装によるとしか言いようがない
STLのstd::allocator<T>の話なら、単にnewとdeleteを呼び出す実装になってる

302:名前は開発中のものです。
15/02/11 00:59:11.50 5bVnp7SH.net
mallocやnewを置き換えてもOSの命令を使ってたら
OS自体のメモリ管理の制約は受けるわけで。
OSと完全に独立できるものか?
OSが既に管理してるところを横取りしないとならないが。

303:名前は開発中のものです。
15/02/11 01:01:23.93 WPu+kv42.net
ちょっと前に「ゲームの場合、出現オブジェクトの個数に上限を設けることが多いから
new deleteせず自分でプールを確保する手もある」という話をしなかったっけ。
とりあえずstd::allocator<T>で書いといて、あとでカスタム化してもよいのでは。

304:名前は開発中のものです。
15/02/11 01:03:22.28 5bVnp7SH.net
malloc - Wikipedia
OSのカーネルでもアプリケーションと同様にメモリ確保が必要である。
カーネル内にもmalloc相当の関数はあるが、その実装はCライブラリのものとは大きく異なる。
例えば、DMA用のバッファには特別な制限が課せられることがあるし、割り込み処理でメモリを動的に確保したい場合もある。
このため、カーネルの仮想記憶サブシステムと密に連携した malloc 実装が要求される。

305:名前は開発中のものです。
15/02/11 01:04:29.98 rJC6nJDr.net
余程特殊な用途でないかぎり既成の物使った方が速いから

306:名前は開発中のものです。
15/02/11 01:06:40.34 IKslX+U4.net
自作アロケーターは最初に領域確保してその分を切り盛りするでしょ
ていうかそれ以外の作り方を知らない

307:名前は開発中のものです。
15/02/11 01:06:46.81 rJC6nJDr.net
>>295
スレ違い
お前はゲームをOSから作るんか?

308:288
15/02/11 01:16:23.87 5bVnp7SH.net
>>288に対して、自作アロケータ、マイアロケータってのは
ほとんどのケースで、OSデフォルト、カーネルアロケータに依存してるだろ?って反応なわけで。

309:名前は開発中のものです。
15/02/11 01:32:15.63 rJC6nJDr.net
そうだな
>>288
が言ってるOSデフォルトってのが悪かった。
アプリケーションが使うメモリアロケーターの殆どの実装はライブラリが行ってる。
OSからシステムコールでブロック単位でメモリを貰いアプリケーション内で分配な。

310:名前は開発中のものです。
15/02/11 01:41:17.25 IKslX+U4.net
すんませんVC++のメモリ確保がWin32APIの関数呼ぶだけって何かで見たからそういうもんだと思ってました

311:名前は開発中のものです。
15/02/11 01:49:31.11 tga+SBCo.net
>>297
アプリケーションとしてのゲームはこれで確定だと思ってた
動的と言えば動的だけど都度都度確保はあり得ないって意味でこの手の話はスルーしてたけど、そう言うものでも無いみたいだと知ったわ
取れなかった場合の処理は思い付かないけど

312:名前は開発中のものです。
15/02/11 01:55:07.09 5bVnp7SH.net
ヒープ、動的確保は丸投げに近いが。普通のauto変数とかは最初に確保した領域を使いまわす。

メモリの4 領域
URLリンク(brain.cc.kogakuin.ac.jp)
URLリンク(brain.cc.kogakuin.ac.jp)
テキスト領域:機械語に翻訳されたプログラムが格納される. この機械語の命令が 1 行づつ実行されることでプログラムが動く。
静的領域:グローバル変数などの静的変数が置かれる。
ヒープ領域:メモリの動的管理 (C 言語の malloc 関数や C++ の new 演算子でメモリを確保すること) で用いられる。
スタック領域:今回の演習で扱ったように CPU のレジスタを一時的に退避させたり、また C 言語の自動変数 (


313:多くのローカル変数) が置かれる。



314:名前は開発中のものです。
15/02/11 02:24:49.00 COJ2IR9k.net
いわゆるメモリープールのようなものは既にランタイムに実装されてる場合もあるし
自分で実装する・しないは実行環境によると思う。
最近はこの辺のことは既に当たり前になってるのかどうか知らないけど、
検索してもあまり引っかからないね。とりあえず引っかかったところ
URLリンク(vcpp-ml.ldblog.jp)
ではVCのランタイムのソースみればとなってるので
興味ある人は読んでみては。

315:名前は開発中のものです。
15/02/11 02:41:42.58 0cWu/C1d.net
俺が昔作ったベンチ引っ張り出してきた
10000個確保して解放を1セットで、10回繰り返す
malloc 0.0104349686516726 100
new 0.0170437163409596 163.332702856062
tlsf 0.0327989992535455 314.318138831095
右側がmallocを100とした場合の倍率。意外とtlsfは遅い。
んで下が自作のメモリアロケータでnewとdeleteをオーバーロードしてて
上で使ったnewするソースをそのまま使ってる。
fixpool 0.01086365697986310 104.108189899754
fixpool-ss 0.00270476282206395 25.9201815774541
アルゴリズムは一回使ったものをリストにつなげておいて、newのとき取り出すだけ。
ssは上限が分かっている場合で、先にメモリ確保するのでmallocを上回れる。
まぁ、はっきり言って速度だけを考えると自作アロケータの必要はないかなレベル・・・と思う。
確か、スマートポインタのベンチもどっかにあったはずなんだが、どこだったか・・・

316:名前は開発中のものです。
15/02/11 02:52:05.14 IKslX+U4.net
>>304
ゲームエンジン&#8226;アーキテクチャ(ソフトバンククリエイティブ)によれば、デフォルトのnewが遅い理由は管理コストとOSのコンテキストスイッチとあるけど
URL先の内容からすると最初に確保された分越えなければコンテキストスイッチは発生しないって事なんかな
ていうか2000年の時点でそういう仕様だったのか

317:名前は開発中のものです。
15/02/11 02:52:16.60 rJC6nJDr.net
>>305
その自作アロケーターって複数スレッドから呼んでも大丈夫なように作ってんの?
だったらたいしたもの。
今時モバイルですらマルチスレッドが当たり前だからベンチマークも複数スレッドで実行すべき。
スレッド使うライブラリーをリンクしないとシングルスレッド版のmallocとリンクする環境もあるし

318:名前は開発中のものです。
15/02/11 03:06:07.85 rJC6nJDr.net
>>306
ライブラリが貧弱な環境だと効果はあったんじゃない?
ライブラリが貧弱で有名だったPS3とか。
ゲームエンジン アーキテクチャって本PS専門デベロッパーだった人の著書みたいだし

319:名前は開発中のものです。
15/02/11 03:24:52.81 tga+SBCo.net
>>307
データ読み込みや通信で「now loading…」、ムービー再生とか以外でマルチスレッドって何に使うの?
いろんな判定でシングルでないと困らない?
俺はコンシューマ長すぎのせいか、マルチスレッド(タイムスライス型)は、そもそもゲームシステムとして実装が思い付かない
どうしてもタスク()で疑似マルチしか作れないや

320:名前は開発中のものです。
15/02/11 03:29:13.74 0cWu/C1d.net
>>307
ポインタのつなぎ替えの部分に一応クリティカルセクション使ってる。
が、これのベンチがねぇ・・・
複数スレッドで同時に確保しまくって人為的にコリジョン起こしても、
シングルの場合と違って純粋な値が取れないので。

321:名前は開発中のものです。
15/02/11 03:54:41.50 0cWu/C1d.net
スマポあった。同じく10000を10回。
new 0.00696283003770957 100
sha


322:red_ptr 0.039324851409757 564.782584046715 生ポインタとboostのshared_ptrね。 下が自作のリンク方式とカリカリにチューンした参照カウント方式のスマートポインタ。 link 0.0273835524999122 393.281932082318 count 0.0157994938635595 226.911956460117 これも、安全をとるなら生より多少遅くてもboostで十分と思う。 自作のスマポは労力の割にはねぇ。



323:名前は開発中のものです。
15/02/11 04:10:32.63 0cWu/C1d.net
書き忘れてた。>>305はゲームに近いように
10000まで{ 4, 10, 20, 100, 208, 501 }のサイズを巡回して確保していってる。
>>311は同じオブジェクトをずーっと生成してる。
こうするとnewがなぜか結構速いんだけど、その状態で対決してみたかったので。

324:名前は開発中のものです。
15/02/11 08:00:15.92 JqfHYvpf.net
んーなんか車輪の再発明がどんどん無駄になってくのな
必要な機能が既存のコードにあるなら、わざわざ作る必要は無い、みたいな

325:名前は開発中のものです。
15/02/11 08:08:59.24 JqfHYvpf.net
自分は今は自作コンパクションを使ってるけど、これも誰かの作ったコードを流用した方が早い時代が来るのかな?

326:名前は開発中のものです。
15/02/11 08:40:48.37 45+5SbHz.net
>>309
MTフレームワークの例
URLリンク(www.4gamer.net)

327:名前は開発中のものです。
15/02/11 13:02:10.23 tga+SBCo.net
>>315
これの詳細を知ってるが、レンダリングはPCだとGPU処理だから、マルチスレッドとは別で非同期でしょ?
それ以外は先程書いた通り
因みにこのフレームワークは自動変数(スタック)以外はメモリは静的に持ってるよ

328:名前は開発中のものです。
15/02/11 13:10:49.29 vZk9YDm5.net
ガチな将棋AIとか作ることになったらやっぱりCPUスレッド数のスレッド作って読みを分散するんじゃなかろうか

329:名前は開発中のものです。
15/02/11 13:40:34.62 sOoti607.net
どうせなら複数マシンに分散させるべき

330:名前は開発中のものです。
15/02/11 14:57:37.67 /JcbXeo3.net
そもそもメモリ管理なんて個人でやるものじゃないよ
せいぜいオブジェクトプールのように局所的なところで使ったほうがいい
自作アロケータを使ってみたい気持ちはわかるんだけどねぇ

331:名前は開発中のものです。
15/02/11 15:06:24.20 rJC6nJDr.net
>>309
シングルスレッドでパフォーマンス十分なら要らないんじゃない?
その場合アロケーター自作しようとする理由すら解らなくなるけど。
レンダリングスレッドを分けるってのは比較的簡単だからよく使われてる方法だね。
グラフィックスのAPIが全て非同期という訳でもないし、呼ぶ事自体比較的コストが高いものもあるドローコールとか
あとGPUが全てやってくれるわけでもない。
影とかモデルの持ってるマテリアルによってはマルチパスレンダリングが必要になるしね
それら含めて一つの独立したスレッドでレンダリングを行うって事
どこまでやるかはそれぞれのゲームエンジンの実装次第だけど

332:名前は開発中のものです。
15/02/11 20:31:12.70 IKslX+U4.net
PS3なんかはは汎用コアが貧弱でマルチスレッド使わないとまともに動かないらしいけど
PCはターボブーストなんかもあるし処理分割しなくてもそれなりに動くのかね
ゲームで重い処理って言ったらAIとか物理演算とか?
それらやらなきゃコア使い切る事もなさそう

333:名前は開発中のものです。
15/02/11 22:28:39.42 o3rdwdSA.net
自分の場合、(作ったのはC#とXNAだったけど)
・更新
非同期・4体のキャラの思考ルーチンをマルチスレッドで(他のキャラの状態は前フレームのものを利用)。
同期・同時に行う必要のある判定類。
非同期・4体のキャラのアニメーション演算(*)

・描画(スキップされることがある)
非同期・キャラの描画コマンド発行(ただし、4体それぞれに(*)を同期)。(**)
同期
非同期・背景などの描画。

・更新
※未了のタスクがあればいったん待機して、最初と同じ。
ということはやっていた。じつはXNAは(**)が異様に重くなるというハンデ持ちで、
(*)はC++だろうと当然重いはずだから、パフォーマンス上がると思うよ。

334:名前は開発中のものです。
15/02/11 22:33:55.73 o3rdwdSA.net
連投悪い。
というか、マルチコアのCPUなのにシングルで動作させてるって、同人ならともかく
商用ゲームだとハードを全然使いこなせていないんじゃないの。
仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。

335:名前は開発中のものです。
15/02/11 23:00:37.92 DLujIAOi.net
妖精左「マルチスレッド!!」
妖精右「マルチタスク!!」
俺「じっそうできればいいから・・・」
部長「ま だ か は や く し ろ 。」

336:名前は開発中のものです。
15/02/12 00:02:20.82 ebWGGwik.net
>>323
C#なんて全然ハード生かせないだろC++で作れよ

337:名前は開発中のものです。
15/02/12 00:29:15.74 DJBGtoR8.net
C++至上主義の時代はもう終わった

338:名前は開発中のものです。
15/02/12 00:32:29.34 UV0J6V6h.net
まだだ!まだ終わらんよ!

339:名前は開発中のものです。
15/02/12 02:23:42.32 U9NT4imE.net
さっき始まったばかりですよ

340:名前は開発中のものです。
15/02/12 02:30:04.64 rNOcVIpi.net
>>323
たしかにC#だと、ネイティヴDirectX呼び出す時点でカーネル切替が発生し、ボトルネックになる
(ただ一方、GCはちょっと工夫すればシーン切替時以外は抑制できる)。
まあC++が最強という事実は揺るがないし、だからここを覗きに来てるんだけど
今まで作った資産をそっくり移植するのは全部1人開発だと工数的に厳し過ぎるんよ。
自分はあくまでゲームを完成させるのが主眼なもんで。

341:名前は開発中のものです。
15/02/12 02:30:45.99 rNOcVIpi.net
>>325だった。

342:名前は開発中のものです。
15/02/12 09:37:50.92 ebWGGwik.net
>>329
> 仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
> それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
> もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。
こんなこと言う人間が
> 自分はあくまでゲームを完成させるのが主眼なもんで。
なんてよく言えるな

343:名前は開発中のものです。
15/02/12 09:58:41.94 DJBGtoR8.net
Unityの台頭とC++erの更なる没落

344:名前は開発中のものです。
15/02/12 10:00:56.62 K+V6X3Ce.net
社員さん、ステマ乙

345:名前は開発中のものです。
15/02/12 10:16:24.93 xZrWsSkn.net
世界は使いやすい道具の前にひれ伏す
これが分からない奴は一生地を這う

346:名前は開発中のものです。
15/02/12 10:44:14.01 K+V6X3Ce.net
Unityあつかいづらいから自分でライブラリ作ったわwww

347:名前は開発中のものです。
15/02/12 12:11:18.44 ZP/aF8VN.net
アホか。
みなが同じ道具を使ったら、それを売って儲ける奴の小作農になるだけ。
これが分からない人こそ
>一生地を這う

348:名前は開発中のものです。
15/02/12 12:13:54.04 ZP/aF8VN.net
>>331
>>323はあくまで>>321に対する客観的な指摘。
それと「自分はあくまでゲームを完成させるのが主眼なもんで」は別問題だよ。

349:名前は開発中のものです。
15/02/12 13:25:06.24 0nYHwL7l.net
実際PS3の初期タイトルは酷いの結構あったな
アイデアファクトリーとか

350:名前は開発中のものです。
15/02/12 15:23:29.14 gRG035Lb.net
作るものに応じて道具を選べない人が一生地を這うのでは
各処理をどんだけ細切れにしても結局全部処理しないと次には進めず、
しかも実は単一の処理は積み重ねても大して時間はかかっておらず、
単なるスレッドの立て損にしかなっていないんならマルチスレッドなんか不要
商業だからだのなんだのと適当な言い訳をしても、
実際は目に付くよさそうに見えるものに振り回されているキョロ充
まずは作りやすい方法で実装してテストして、ダメだったら作り直せばいいじゃん

351:名前は開発中のものです。
15/02/12 17:28:07.56 K+V6X3Ce.net
Unityの社員ってステマのノルマがあるみたい

352:名前は開発中のものです。
15/02/12 17:41:44.09 3BvTygsz.net
スレッドのが実装しやすい処理もあると思うの

353:名前は開発中のものです。
15/02/12 19:41:03.02 gRG035Lb.net
うにちゃんは次期主力ゲームエンジンの座を狙っているからね、仕方ないね
何が悲しくてわざわざ柔軟な使い方のできる言語投げ捨ててゲームエンジンなんぞに…
PHPやらJAVAやらに行った方がマシ

354:名前は開発中のものです。
15/02/12 20:21:56.36 K+V6X3Ce.net
そんなに自信があるのなら、自分たちでゲーム機を出せばいいのに
彼らの夢は、所詮は砂上の楼閣なんかね

355:名前は開発中のものです。
15/02/12 20:26:40.79 EbJGy+Ll.net
このスレってレベル低いよな

356:名前は開発中のものです。
15/02/12 20:29:07.88 EbJGy+Ll.net
>>339
出来ることは並列でやった方が早く終わるよね。

357:名前は開発中のものです。
15/02/12 20:35:29.18 wNE8sYSh.net
>>343
それは無理。彼らの夢は、ゲーム業界に巣喰う寄生虫になる事だから。

358:名前は開発中のものです。
15/02/12 20:42:55.10 K+V6X3Ce.net
>>345
その前にアルゴリズムを考えた方が早いかもね

359:名前は開発中のものです。
15/02/12 21:16:05.40 SEu5lClB.net
シングルスレッドで足りるならシングルスレッドで作ればいいと思う
後からマルチスレッドにしようとか考えたら地獄みるけど
ムダに作り込んで時間かけても仕方ないしね

360:名前は開発中のものです。
15/02/12 21:57:58.62 5lpYcWcf.net
スレッドの話で盛り上がってるけど、みんなpromiseとかatomicとかcasとかちゃんと理解できてる?
俺は半分も理解してない

361:名前は開発中のものです。
15/02/12 22:02:24.65 BY0ie4C4.net
C++を書いているとJavaやC#にだんだん似てくるし
C++で便利コードを書いても既存のライブラリには適わないし
C++でゲーム用ライブラリを書いていると既存のエンジンに似てきたから
既存のエンジン使うことにした。困ったらエンジン改造すればいい。

362:名前は開発中のものです。
15/02/12 23:13:41.81 X8c9QSvd.net
おーい、誰かクマが釣り針見つめてるAA持ってない?
>>349
promiseはFutureパターンのSTL実装かな。
casは不勉強だったわ。いちいちロックしなくても非同期でノード更新できるってことかな。

363:名前は開発中のものです。
15/02/12 23:54:36.97 yCMGD6Md.net
casって言われてもメモリのclしか思いつかないです
これの事でいいの
URLリンク(ja.m.wikipedia.org)コンペア・アンド・スワップ

364:名前は開発中のものです。
15/02/13 00:16:59.27 6pLn2rnq.net
visual c++2010です
コードを書いていると、未定義エラーなどのエラーが起こっている部分を波線で表示する機能がありますが
それをすばやく表示したい(エラーを確認する間隔を早めたい)時はどうすればいいのでしょうか?
オプションでそれらしき項目を探しているのですが、見つけられず困っています…

365:名前は開発中のものです。
15/02/13 00:28:10.25 FqU8O5pj.net
今表示されてる速度が最速だよ
文句があるならもっと早いCPUに代えろ
もしくはVSのバージョン上げたら改善される可能製はある

366:名前は開発中のものです。
15/02/13 00:38:48.23 PNw/R4Nn.net
何が原因かわからんが仮にnullpoって変数なり型名なりがあるとしてpoにだけ下線とエラー表示が出る謎現象なんかが困る
nullpoの間にスペース入れた後に消すなりコンパイルするなりして文字解析をやり直させると普通に通る

367:名前は開発中のものです。
15/02/13 00:38:56.82 6pLn2rnq.net



368:ありがとうございました



369:名前は開発中のものです。
15/02/13 02:11:39.11 E1xWFoJ9.net
コードを書いてるといきなり妙な場所に波線
面食らいつつ原因を探るべくコードを見直しているといつの間にか消える
他にも指摘されて修正した部分の波線がなかなか消えず、
あれ?修正間違ったかなと書き直そうとすると消えたりする
VSに不信感を抱きそう

370:名前は開発中のものです。
15/02/13 03:15:03.66 Jw6U7GOH.net
VS2010より2012, 2013はずっと賢いから変えたほうがいい
あとVSの謎の挙動はコードが悪いせいなのできちんと書くように心がけましょう

371:名前は開発中のものです。
15/02/13 03:17:28.00 Jw6U7GOH.net
いつもコードが悪いせいではないな
一括置換とかファイル名変更とか,変なことをやるとVSたんはたまにアホになる

372:名前は開発中のものです。
15/02/13 03:36:37.36 PNw/R4Nn.net
というわけでついっさっきVS2013導入したった
C++で打ってる時2010だとショートカットキー(Alt→派)でしかインテリセンス出なかったのが改善されてるのが今のところ一番嬉しい

373:名前は開発中のものです。
15/02/13 04:37:35.15 diYHW0ok.net
外部エディタを使っている自分に隙はなかった

374:名前は開発中のものです。
15/02/13 09:12:51.03 PRy9EczC.net
どんなスペックのPC使ってんの

375:名前は開発中のものです。
15/02/13 10:50:31.89 WvS4Hu4Q.net
JavaやC#ならわかる
だが負の遺産であるクソ構文抱えたC++で
実用的な速度であれだけのことが出来ることそのものが信じられん
動いたらラッキーくらいの謙虚な気持ちで使うべき

376:名前は開発中のものです。
15/02/13 11:23:05.70 /fWsfy1c.net
C++とC#ってそんなにちがうか??
C++って多少手間暇かかる部分はあるが、自前で組めばどうにでもなる事でね?
まあ、プログラムはソースの書き方だけで作る時間に10倍以上の差が出るし、
モジュールやオブジェクト指向を理解してるかどうかで100倍以上の差が出るから、
その辺りの違いだろうけどな。

377:名前は開発中のものです。
15/02/13 11:25:59.01 NjULDeHN.net
MSがBC++を買っとけば世界が平和になってたんですよ…

378:名前は開発中のものです。
15/02/13 12:17:28.61 oAXnXeHu.net
学習コストの高い言語はもう流行んないでしょ
ゲームもコア部分以外はスクリプトで書くのが主流になるだろうし
C++プログラマはゲームエンジン書けるレベルの人しか生き残れないな

379:名前は開発中のものです。
15/02/13 13:34:54.76 /fWsfy1c.net
パソコン自体がもうほとんど進化しなくなったのに、遅い言語を勧められてもな

380:名前は開発中のものです。
15/02/13 14:00:42.22 wCixqXPj.net
状況次第ではJavaScriptの方が速いなんて事もあるのに
まだそんな事を言っているのか
URLリンク(arewefastyet.com)

381:名前は開発中のものです。
15/02/13 14:07:45.39 /fWsfy1c.net
まずは、JavaとJavaScriptの違いから勉強しようね?

382:名前は開発中のものです。
15/02/13 14:07:50.74 ozS65/+Z.net
と言うかC/C++のスレでいい加減スレチw

383:名前は開発中のものです。
15/02/13 14:18:22.58 diYHW0ok.net
いや、C/C++の存在意義を知る上で重要な議論だよ。

384:名前は開発中のものです。
15/02/13 14:20:03.86 s8SeVfmU.net
しかも、asm-jsってClangで中間コードにしたものをJavascriptに変換するものであって人間が書いてネイティブコードより速くなるもんじゃねえよ

385:名前は開発中のものです。
15/02/13 14:58:19.33 wCixqXPj.net
他の言語は実行がVMだから遅い、C++はネイティブコードだから(常に)VMより速いと言う幻想を>>367は持っているようなので
ぶち壊してやった

386:名前は開発中のものです。
15/02/13 15:06:44.71 /fWsfy1c.net
で、JavaやC#がC++と等速になったとかいうデータはマダー??

387:名前は開発中のものです。
15/02/13 15:23:17.


388:57 ID:fRUihGLp.net



389:名前は開発中のものです。
15/02/13 15:25:16.23 diYHW0ok.net
いったい、何のためにそんなことを・・・

390:名前は開発中のものです。
15/02/13 15:25:55.96 9I9SRziA.net
C++の中にCをラップしているという、気味の悪いC++の現状を憂う気持ちは分かる
C++という言語自体がすでに溶岩流状態だよなwww


391:名前は開発中のものです。
15/02/13 15:26:18.69 s8SeVfmU.net
>>373
誰もVMだから遅いなんて言ってないと思うんだけど
で、遅いのは確実だろC#がネイティブコードになっても遅いのは変わらないよ
CやC++より実行時に行う事が多いのだから当たり前のこと

392:名前は開発中のものです。
15/02/13 15:27:18.22 7ayiwF3a.net
中間コードを実行するVMの関数呼び出しや演算がC++より速くなることは原理的にないんじゃないの
速くなったとしても結局記述されたコードのレベルの差でしょ
C++でチューニングしたコード書けばもっと速くなる
Cのコードがチューニングされたアセンブリより遅いのといっしょ

393:名前は開発中のものです。
15/02/13 15:31:25.28 4Xq/J0Q+.net
話の流れに乗ってみるが
ゲーム本体はc++でツール等はc#というのを
ちらほら聞くけど実行している人いる?
いるとしたらどれだけ有用か意見をお伺いしたい

394:名前は開発中のものです。
15/02/13 15:36:07.95 s8SeVfmU.net
>>379
いや、そうとも限らないよターゲットが固定されてるなら問題ないが、
ネイティブコードに変換したら実行するCPUを完全に生かすコードを吐けるとは限らない。
JITならターゲットがコンパイラを内蔵してるようなものだから動かす環境のCPUを完全に生かすコードを吐ける。
もちろん実行時だから時間のかかる複雑な最適化は出来ないから元のコード次第だけど
>>380
そういえばUnrealは昔エディタはVB製だったな。

395:名前は開発中のものです。
15/02/13 15:43:02.61 6pLn2rnq.net
>>362
356ですが、もし自分の事でしたらXeon W5590(8コア3.33GHz)・メモリは12gbです
遅延が起こるコードはDLLを作る用のもので、約5000行
(2000行のファイル2つ・1000行のファイル1つ、それぞれa.cpp b.h c.hとします)です
a.cpp(2000行)の途中でb.hとc.hをインクルードしてる状態ですが
a.cppの一番下の行の方でスクリプトを書きますと、
波線や#if 0-#endifの半透明化が行われるまでにおよそ2分ぐらいかかります

396:名前は開発中のものです。
15/02/13 15:46:18.40 diYHW0ok.net
原理的なパフォーマンスより生産性を優先されることで言語の歴史は移り変わってきたし、
機械語 ⇒ アセンブラ ⇒ C
までは割とはっきりと移り変わってきたと思う。
それ以降、C ⇒ C++ ⇒ Java or C#
についてはうろうろしてる感じ・・・。
やっぱり、今もC++は欠かせないでしょ。

397:名前は開発中のものです。
15/02/13 15:46:47.59 7ayiwF3a.net
>>381
あー確かにターゲットが広いとC++で全部に最適化するのは現実的じゃないな

398:名前は開発中のものです。
15/02/13 15:52:11.33 KYsA9vla.net
ツールはマルチプラットホームで動く必要が無いってのが大きいんじゃないの?
Windows, Mac, コンシューマ機 で動くとなると C++ しか選択肢が無かった気がする。
そこにモバイルが加わって、必ずしもC++が移植性の面で最良では無くなりつつあるのかもしれない。

399:名前は開発中のものです。
15/02/13 15:55:59.21 /fWsfy1c.net
問題点がGCを使うことの有無になってきてる気がするな
適切にGC.Collect()を使えばいいというような話はあるが……どちらが良いかはよーわからんw

400:名前は開発中のものです。
15/02/13 15:56:27.80 7ah0R


401:MwS.net



402:名前は開発中のものです。
15/02/13 15:59:29.02 diYHW0ok.net
>>387
まーそうだな。
いずれにしても、ちゃんとした設計ができるというのが前提。
その上でパフォーマンスと生産性(クロスプラットフォームかどうかなど)を勘案した上で適切な言語を選択する。
できれば全部C++でやりたい派だけどw

403:名前は開発中のものです。
15/02/13 16:09:25.94 /fWsfy1c.net
設計気にせずコーディングでゴリゴリやりたい派が居るからなぁ……
ライブラリが充実してると有効なんだが、充実してない場合は……お察し下さい

404:名前は開発中のものです。
15/02/13 17:05:12.10 wCixqXPj.net
C++のコンパイラは事前コンパイラだから
実行前にはプログラム全体のネイティブコードが得られるが
プログラム全体を無差別に最適化する分コンパイルに時間が掛かるし
実行時の状況を見て最適化する事も出来ない
JITコンパイルは実行時によく使われたコードだけを最適化するから割と高速に実行できる事が多い
URLリンク(ja.wikipedia.org)実行時コンパイラ

405:名前は開発中のものです。
15/02/13 17:11:55.89 diYHW0ok.net
その中間がGPUのシェーダーって感じかな。
動的ではないけど、同じコードをデバイス(ドライバ)に応じて実行直前に一度コンパイルする。

406:名前は開発中のものです。
15/02/13 17:26:17.39 wCixqXPj.net
JITだと最適化すべき所があまりに多いと最適化が間に合わないし、あまり複雑な最適化はできないだろうけど
プロファイラで遅いところを見つけてそこだけC++で書くことも出来る
そうすれば速度が下がるデメリットより生産性が上がるメリットの方が上回ると思う
Android 5.0は中間コードから事前コンパイル出来るらしいが
インストールに時間取りそうだな
MonoはJITコンパイルが禁止されているiOS向けには事前コンパイルするらしい

407:名前は開発中のものです。
15/02/13 17:30:13.12 s8SeVfmU.net
>>392
だからってJavaやC#が速いってことにはならんからな。
そこを勘違いすんなよ

408:名前は開発中のものです。
15/02/13 17:40:26.14 7ayiwF3a.net
ただでさえ動的な型付けやジェネリクス、クロージャなんかでスクリプトの最適化にかかるコストは高いし
かけられるコストに制限のかかるJITが静的なコンパイラ超えるのはまだまだ先の話だろうな

409:名前は開発中のものです。
15/02/13 17:49:39.74 3uAgugBd.net
C++入門系の本だと「STLは難しいので分からなくてOKです^^;」とか書いてあるけど
Javaとかの入門書だとジェネリクスやリフレクションも簡単に分かって当たり前が前提
程度の低い人がC++入門書の内容も理解できずに「C++はすごいんだ」と威張っている

410:名前は開発中のものです。
15/02/13 17:53:19.30 s8SeVfmU.net
>>395
何言ってるのか解らない

411:名前は開発中のものです。
15/02/13 17:57:54.44 9I9SRziA.net
どこの入門書だよ…
STLのような便利ツールを分からなくてOKなんて書くような入門書はクソ本認定必至だぞ
Unityに絡まれたりC#やJavaに絡まれたり大変だな
一体何が始まるんです?

412:名前は開発中のものです。
15/02/13 18:00:31.37 3uAgugBd.net
ここで何の言語が速いだのマルチスレッドだの騒いでる連中は怪しいってこと

413:名前は開発中のものです。
15/02/13 18:05:07.34 s8SeVfmU.net
>>395
> Javaとかの入門書だとジェネリクスやリフレクションも簡単に分かって当たり前が前提
何が言いたいのか解らないからここだけに反応するけど、AmazonでJava入門して人気度でソートして一番上に出てきた「スッキリわかるJava入門」って本の目次にはジェネリクスもリフレクションも無いぞ

414:名前は開発中のものです。
15/02/13 18:19:41.22 ozS65/+Z.net
別にオートマ乗りたい人もマニュアル車乗りたい人も好きにすればいいよ

415:名前は開発中のものです。
15/02/13 19:06:42.10 diYHW0ok.net
ほんとに最初はSTLなしで勉強したらいいけど、
ある程度できるようになったらSTLを使わない手はない。
STLなしで大規模プログラミングするとか拷問。

416:名前は開発中のものです。
15/02/13 19:09:22.59 9I9SRziA.net
そんなことより
Hoge() {}

Hoge() {
}

Hoge()
{
}
を使い分ける


417:タイミングについて



418:名前は開発中のものです。
15/02/13 19:20:16.61 ozS65/+Z.net
>>402
上は本当に何もすることが無い、空実装の場合だけ
下2段は好み(規約でスタイルが統一されてない場合)

419:名前は開発中のものです。
15/02/13 19:23:44.45 9WE2qWDV.net
バージョンによるかも知れないけどVSでインデント自動だと
Hoge() {}
じゃなくて
Hoge() { }
と中括弧の間に半角空白が入るのが気になる。

420:名前は開発中のものです。
15/02/13 19:27:56.48 ozS65/+Z.net
大抵のIDEにコーディングスタイル(ルール)の設定あるはず

421:名前は開発中のものです。
15/02/13 19:31:59.81 ozS65/+Z.net
>>390
pragmaでモジュール毎に最適化の指定って一部の処理系のみ?

422:名前は開発中のものです。
15/02/13 19:46:05.27 s8SeVfmU.net
>>406
pragma自体処理系依存

423:名前は開発中のものです。
15/02/13 21:20:17.39 ozS65/+Z.net
まあ最適化の方針自体が処理系依存だしな
言語仕様で他言語と比較すること自体無意味かも

424:名前は開発中のものです。
15/02/13 22:15:35.36 9+3djK7O.net
>>382
スペックたけええ
IOくらいしかボトルネックになりそうなところなさそうだけど
2分遅れるってのはちょっと遅すぎだな

425:名前は開発中のものです。
15/02/13 23:08:30.20 E1xWFoJ9.net
ソース一枚で2000行ってのはもうちょっとバラせないのかなぁ?
相当大規模なプログラムなんだろうか

426:名前は開発中のものです。
15/02/14 00:36:28.82 +drYNYXs.net
>>409-410
別の環境(インタプリタ)で作っているゲームがありまして、
一部の重い処理をc++を使ってDLL化し、(インタプリタの方でDLLを読み込んで)使っている状態です
ツール→オプションやプロジェクト→プロパティでいくつか操作した記憶があるのですが、
どれを操作したのかは思い出せなません……。 すみません
URLリンク(fast-uploader.com)
あまりC++に慣れてなく、アップロード時にどこまで載せるべきなのかが分からないのですが
とりあえずcppファイルとhファイル、defファイルだけ用意したものです
(個人用開発のスクリプトで、本来あまりやるべきではない処理も複数使っているためコード自体はかなり見づらいと思います)
これのdll1.cppの最初の位置の方でコードを書くと波線がすぐ表示され、
dll1.cppの最後の方でコードを書くと波線が表示されるまでに数十秒、#if 0-#endifでの半透明化に2分ほど掛かる状態です

427:名前は開発中のものです。
15/02/14 00:52:52.43 o7XnZ6lm.net
かなりの素人っぽいコードになってるな。
これでプログラムは正常動作するんだったらいいけど。

428:名前は開発中のものです。
15/02/14 16:14:47.43 i+Qy19Ot.net
nullpo

429:名前は開発中のものです。
15/02/14 21:45:25.56 8yKSZnHL.net
nullptrだろ

430:名前は開発中のものです。
15/02/14 22:15:17.68 dPtZMbpp.net
肝心なこと忘れてるぞ
>>413 ガッ

431:名前は開発中のものです。
15/02/15 00:52:20.75 cKjU4/tc.net
>>355 ガッ ガッ

よくわからんけど、これでいいのか?

432:名前は開発中のものです。
15/02/15 14:24:16.38 HGj2LM7P.net
ぬるぽはガッする これ鉄の掟ネ

433:名前は開発中のものです。
15/02/15 17:08:32.51 lIyPTDYW.net
OpenGLのライトの設定って8つまでしか設定出来ないの?

434:名前は開発中のものです。
15/02/15 18:13:03.67 221Gw+Uq.net
一つのモデル書くのに8個も使うこと無いと思うけど

435:名前は開発中のものです。
15/02/15 18:18:15.97 kJKCFPVs.net
使うか使わないかなんて誰も聞いてないのでは

436:名前は開発中のものです。
15/02/15 18:27:22.52 QJPI0val.net
8つまでは保障されるって書かれてるね
それ以上はGPU次第?

437:名前は開発中のものです。
15/02/15 18:30:35.01 pHH37jBe.net
普通にシェーダにuniformで渡せばいいんじゃなかろうか

438:名前は開発中のものです。
15/02/15 20:13:36.87 221Gw+Uq.net
使わない機能について質問するのは普通なの?
ここってそういうスレッドだった?

439:名前は開発中のものです。
15/02/15 20:15:43.39 BSm63ZvK.net
未だに固定機能パイプライン使ってるのかよ



440:ES2.0やCoreプロファイルでは削除されたと言うのに



441:名前は開発中のものです。
15/02/16 10:55:53.67 GCnoGlJr.net
このスレのみんなは何ゲーム作ってる?作ってた?俺は今は2DRPGを作ってる。
作り始めてもう2年は経つが、バイトしながら作っているのでなかなか先に進まない。
その前は剣で敵を殴り倒すサイドビュー2Dアクションとか作ってた。
公開してる作品はまだ無いけれど、今回作ってる作品はようやく公開できそうだ。

442:名前は開発中のものです。
15/02/16 12:05:03.56 xAAEGNM/.net
いつゲームを思いついてもいいように自分用フレームワーク作ってる
今はポストエフェクトとかの高級機能の追加とパフォーマンスチューニングやってる・・・

443:名前は開発中のものです。
15/02/16 14:01:53.12 zTNZgaYq.net
昔3Dのゲーム公開してグラボ必須と明記したのに
オンボードのグラフィックで動かないって言われるから萎えたw

444:名前は開発中のものです。
15/02/16 14:25:13.79 GCnoGlJr.net
オンボードってグラボと違うんだ……知らんかった

445:名前は開発中のものです。
15/02/16 15:11:57.10 YsWE65vY.net
体験版かベンチマークテスト付けるのが間違いない

446:名前は開発中のものです。
15/02/16 15:20:33.89 SFvkE6bf.net
日本語が読めない日本人のコメ欄荒らしなんか今に始まった事じゃないし
ひどいと環境も書かずに動かないのでクソみたいなことを言ってくるぞ
その理由がインストール失敗だったりするし、あの人達は異常
>>426
何か作っちゃえよ…さもないと意味ないってそんな作業

447:名前は開発中のものです。
15/02/16 15:35:35.16 ilnxTAbg.net
起動時に「こんな貧相な環境では起動できません」とメッセージだすとか

448:名前は開発中のものです。
15/02/16 15:44:19.94 DJ/HQJjd.net
譏斐�ョ繧ェ繝ウ繝懊�シ繝峨げ繝ゥ繝輔ぅ繝�繧ッ繧ケ縺ッ譛ャ蠖薙↓雋ァ蠑ア縺縺」縺溘°繧峨↑窶ヲ
繧ヲ繧」繝ウ繝峨え繧ФI縺ョ謠冗判繧竪PU縺ァ繧�繧雁�コ縺励◆譛€霑代�ッ縺九↑繧翫�槭す縺ォ縺ェ縺」縺溘s縺倥c縺ェ縺�縺繧阪≧縺�

449:431
15/02/16 15:52:15.48 DJ/HQJjd.net
ごめんなんかすごい文字化けした、なんだこれ
最近になって普通のGUIをGPUで描画するようになって
ようやくオンボードグラフィックの性能も上がってきたよね
的なことを書きたかった・・・

450:名前は開発中のものです。
15/02/16 20:48:43.56 SFvkE6bf.net
>>431
大半のユーザーにとってはただ処理が煩雑になるだけだな
っつーか、手の込んだおちょくり方だなw

451:名前は開発中のものです。
15/02/16 22:42:53.99 vhmKDLh4.net
起動時にデバイスの判別とかする?
D3Dの初期化出来るかくらいしか見てないすわ
ていうかデバイスの判別なんて出来るもんなの?

452:名前は開発中のものです。
15/02/16 23:54:49.98 7aPTvn5L.net
GPUのデバイス名を見てショボそうだったらエフェクトを減らしたりして品質を下げるのは良くある

453:名前は開発中のものです。
15/02/16 23:58:04.64 +QAYKcbY.net
やるとしても初期化できるかできなかったらでいいと思う
できなかったらエラーはいてもいいけど,情報をログに出しておくとのちのち面倒になりにくい

454:名前は開発中のものです。
15/02/16 23:58:32.44 +QAYKcbY.net
訂)初期化できなかったら

455:名前は開発中のものです。
15/02/17 01:00:22.99 8xjE9Voj.net
メーカーや型番を調べるってこと? CAPSじゃなくて。

456:名前は開発中のものです。
15/02/17 04:37:03.07 rbxqwbjb.net
>>425
いま初めてまともな2Dアクション作ってるんだけども、
当たり判定(四分木・モートン)なんかの実装とか処理の順番で発生する矛盾とか解決するのがしんどい(´・ω


457:・`) 一度作ってしまえば使い回し効くんだろうけれどそれでもunuty辺りに逃げたくなる誘惑ががが



458:名前は開発中のものです。
15/02/17 10:09:59.94 rM4wsrPX.net
box2dでも使ってみれば?
自分で作るよりいろんな意味ではやいと思う

459:名前は開発中のものです。
15/02/17 11:20:06.28 R+csvIHk.net
>>427
初期のIntel GMA(のドライバ)はD3Dのデバイス機能あると返答する癖に実は使えん
とか、ファンキーな挙動をするゴミカス同然の問題児だなという印象があったが
五年前辺りの製品になるとだいぶマシだたよ
当時、即売会で同人ゲをバラ撒くために貧困糞スペ層対策にPentiumG6950と
i3 540のPC組んでテストしたけど、GF8400GSとRADEON4350載せた時と
速度的にほぼ互角で、プログラム側から見た時のD3DデバイスとしてのIntel IGP
特有のお粗末さに呆れる事も無く、特段配慮せずに適当に組んでも動いたので
感激した憶えアリ
もう五年前の製品なので、今の若い子はこれより新しい世代のハード使ってると
思う。これ以前のGMAの名を持つIntel IGPについては俺はもう完全に無視してる

460:名前は開発中のものです。
15/02/17 11:29:55.71 SVmL1BJ3.net
SM2.0~3.0ぐらいの世代の古いGPUだとD3D11自体は使えてもジオメトリシェーダー等は使えない
URLリンク(msdn.microsoft.com)
D3D11ではFeature Levelsというのを調べればデバイスの対応度が分かる

461:名前は開発中のものです。
15/02/17 11:38:29.47 SVmL1BJ3.net
GPUの種類を検出してドライバの問題に対応するのはChromeがやっている
NVIDIA Optimusを使っていると、今アプリケーションが使っているのが内蔵GPUか外部GPUかは検出できないらしいが
検出する方法はないわけでも無さそう
URLリンク(code.google.com)

462:名前は開発中のものです。
15/02/17 15:22:32.89 R+csvIHk.net
optimusか…。ウチの場合はIGPでも軽快に動くものを頒布してたから
その辺の不具合報告はたまたま来なかったな。来ても「それドライバ
の設定のせいだろ何とか自力で頑張れ」とか返事しちゃいそうだけど。
対応するとしたらこの辺の情報も使えそうかしら
URLリンク(www.garagegames.com)

463:名前は開発中のものです。
15/02/17 15:26:27.22 R+csvIHk.net
>>445訂正
IGP → Intel IGP

464:名前は開発中のものです。
15/02/17 17:34:23.35 kQ4D9OfR.net
Optimusは拡大鏡のようなMagnification APIが使えないので
背景を透過させるような処理が使えなかった
GDI通すと負荷が半端無いうえに自ウィンドウの裏が不完全

465:名前は開発中のものです。
15/02/17 17:38:33.49 c37KzA7E.net
商業ならやって当然だけど、サークルや個人製作でD3X10以上の機能が必須の
3Dゲーム作るって凄いと思うわ。
自分は一応プログラマブルシェーダは実装できたけどD3X9が限界だし、
ファーやブラーなどジオメトリシェーダ必須の特殊効果やテセレータによる分割って
「それがないと、どうしても実装できないゲームシステムがある」わけではないから…。

466:名前は開発中のものです。
15/02/17 17:39:35.00 c37KzA7E.net
D3X→DX3D

467:名前は開発中のものです。
15/02/17 17:49:14.01 QlaPcbbK.net
自分の場合は、俺がやりたいことをもっとも簡単に実現する方法が
ジオメトリシェーダで動的生成することだったから、DirectX10/11使ってる
たぶんメッシュを工夫するとかすればDirectX9の範囲でもできたことなんだろうけど
個人的にDirectX9の「お作法」に嫌気がさしてたってのもあったから移行に未練は無かった

468:名前は開発中のものです。
15/02/17 19:38:23.87 GIdVBJpd.net
質問なんだけど、位置情報ってどうやって保存してる?
1、Matrix4
2、Vector3、クォータニオン
3、Vector3、角度(float)

469:名前は開発中のものです。
15/02/17 19:50:16.17 R+csvIHk.net
>>448
俺は前回は時期的な都合でD3D9で組んでばら撒いたけど、次は
「楽をするために」D3D9切り捨てでばら撒くことにしてるよ
なお「新APIの新機能使わなくちゃ(使命感)」というのは皆無。
D3D10すっ飛ばしてD3D11のお勉強した感想は、あぁ^~極楽なn

470:名前は開発中のものです。
15/02/17 19:57:47.59 2VajbZX5.net
今って、2DでDirextX9からバージョン上げる必要って何かある?
昔はアルファーブレンド使いたかったらDirextX必須だったけど

471:名前は開発中のものです。
15/02/17 20:14:51.86 QlaPcbbK.net
ベクタグラフィックスを楽に使いたいとか
GDI/GDI+との相互運用がしたいとかなら
Direct2Dと連携できるDirectX10.1以降がいいかもしれない
あと、Direct2Dに関連して、DirectWriteを使うと
文字を出すのが超楽になるかもしれない

472:名前は開発中のものです。
15/02/17 20:15:09.37 R+csvIHk.net
>>451
その情報が関与する数値積分の計算式の都合で使い分け
俺はオッサンだから流行りのやり方は知らんけど、アニメーションの補間
アルゴリズムの都合が絡む所は四元数で回転情報持ってるけど、それ以外
では使ってないよ
例えばシミュレーション部の数値計算は行列で計算してるからわざわざ
四元数に変換して保存する意味ないんじゃね、というような判断で

473:名前は開発中のものです。
15/02/17 20:16:00.13 R+csvIHk.net
>>455訂正
数値積分→数値計算

474:名前は開発中のものです。
15/02/17 20:18:17.09 QlaPcbbK.net
あと
「移行しない理由」が欲しいなら無理に移行しなくていいのでは、とも思う

475:名前は開発中のものです。
15/02/17 20:18:25.23 R+csvIHk.net
>>453
XPにしがみ付く人に対応する気ありません、という強い気持ちを表現したい場合
とか

476:名前は開発中のものです。
15/02/17 21:41:07.26 2VajbZX5.net
今の自分にはあまりバージョンアップする必要は無さそうですね
このままでいきます

477:名前は開発中のものです。
15/02/17 22:01:14.76 jnPWiKnI.net
だからどうあってもしなきゃいけないんでもない限り別に必要ないって
ウイルス定義やOSのアップデートじゃあるまいに
デバイスロストが怖い
ただそれだけで十分だったりするのは秘密

478:名前は開発中のものです。
15/02/17 22:18:09.36 8JUkAmcn.net
とりあえず動けばいいじゃん?

479:名前は開発中のものです。
15/02/17 22:41:07.94 ePkhNQGN.net
dxlibでblenderで作った3Dモデリングを表示させたいんだけど
テクスチャのUV座標とかは一個一個代入しないとダメってことはないよね?
ポリゴン数多いと骨が折れるんだけど・・・

480:名前は開発中のものです。
15/02/17 22:48:43.96 91SkRfsF.net
デバイスロストは再取得する処理をいくつか書けばいいじゃんいいじゃん

481:名前は開発中のものです。
15/02/17 23:11:26.72 WkWjQbqK.net
>>450
その具体例は?
絵の質を上げたいっていうならまだ分かるけど、ゲームのルールに直結する部分で
ジオメトリシェーダが必須になるって、思い浮かばない。

482:名前は開発中のものです。
15/02/18 00:07:10.98 G38OtsQE.net
>>464
太さのあるモデルの�


483:ナ線や輪郭線を楽して描画したかっただけだよ 最初からモデルにつけとけば出来なくはなかったんだろうけど ゲームのルールに直結なんかしないよ 俺がそういう画面表現したかっただけ ルールがどうのって話出てたっけ?



484:名前は開発中のものです。
15/02/18 00:22:40.86 G38OtsQE.net
ああ、>>448
>「それがないと、どうしても実装できないゲームシステムがある」わけではないから…。
ってのの話?
だとしたら確かにゲームシステムなんかにゃ関係ない話だったな、すまんね

485:名前は開発中のものです。
15/02/18 15:04:19.81 f28x4TyT.net
ジオメトリシェーダって技術的には興味あるんだけど、ゲーム用途だとオーパースペックな感が。
絵のセンスを求めてる人はいても、絵のリアリティを求めてるゲーマーって少ないし。
同じ「プログラム技術」でも、経路探索とか衝突判定の方がゲーム内容に直結してる気がするんよ。

486:名前は開発中のものです。
15/02/18 15:21:22.07 QeK+UKTO.net
2Dのゲームだと未だに画像貼り付けで十分だったりするからなぁ
3Dになると途端に描画系に求められるものが跳ね上がる……というか、中途半端だとショボく見えやすい

487:名前は開発中のものです。
15/02/18 15:42:52.18 De5fOi6p.net
そういや昔、DX9やだやだDX7でいい、と駄々捏ねてた連中がいたっけ

488:名前は開発中のものです。
15/02/18 16:16:04.18 FM6JykcW.net
2Dでも、画面解像度と色が多くなると、DirctX 3D処理で2Dを書いたのが速くなる。

489:名前は開発中のものです。
15/02/18 16:53:19.00 6OJTipUu.net
blenderでエクスポートした拡張子.xの3Dモデルを
下のアドレスのサンプルコードで表示させようとおもったんだけど
URLリンク(homepage2.nifty.com)
真っ暗で何も表示されない
拡張子.mqoでエクスポートしたやつなら真っ白な3Dモデルがクライアント領域に表示されるんだけど
.xで表示されないのは何が原因なんだろう

490:名前は開発中のものです。
15/02/18 17:25:58.03 JA2VpMMo.net
>>471
ライトの設定?
よくわからないけど「blender directx エクスポート」でググれば?

491:名前は開発中のものです。
15/02/18 17:37:25.56 6OJTipUu.net
>>472
返答ありがとう
「blender directx エクスポート」あたりは既に昨日から何度もググってるんだが一向に分からないんだ
だけどさっき画面を良く見ると下のほうにすごく小さい点があって
dxlibに付属されてるDxLibModelViewerで例のモデルを見てみたら最大頂点座標と最小頂点座標が約-1~約1しかなくて
エクスポート時になぜかものすごく小さくされてることが分かったんだ
だからこれはblenderの問題っぽいのでここで失礼する事にする
でももし対処方法を知ってる方がいたら教えてくれるとありがたいです

492:名前は開発中のものです。
15/02/18 22:47:25.03 ILsqNe3P.net
ファイルにマテリアルの情報ついてないんじゃね

493:473
15/02/18 23:21:37.40 jPrz+6+J.net
あ、解決してたのか
よく読んでなかった

494:名前は開発中のものです。
15/02/19 19:55:57.68 D6yNUzB8.net
DirectXは旧バージョンとの互換性をガンガン切り捨てるけど、
古いバージョンをラップするのってやっぱり技術的には難しいのだろうか
まあ、根本的な仕様変更の問題もあるんだろうけど

495:名前は開発中のものです。
15/02/19 20:09:04.59 BvTV0nsZ.net
前のバージョンも丸ごと使えるようにしてるじゃん

496:名前は開発中のものです。
15/02/19 20:34:31.82 NvdslICU.net
旧バージョンのインタフェースをくれといえば、ちゃんと使えるだろう?
ある世代内では、互換性は維持されるし、仕様変更も無いはずだぞ。
新バージョンのAPI体系がガラッと変わるのは、時代のニーズなので仕方ない。
ただ、よほどのこだわりが無ければ、今後は、ゲームエンジンを使うか、
WebGL の関係で GL 系を覚えたほうが役に立つとは思う。

497:名前は開発中のものです。
15/02/19 20:45:49.81 oNkiA836.net
DirectInput8でジョイスティック設定するようにしてたら9で切り捨てられた。
仕方ないので9でオブジェクトの名称と機能を対応させてたら、ある日名称が変更された。
ガン切捨てくらいはされてるよw

498:名前は開発中のものです。
15/02/19 21:40:39.58 Q5dde7tF.net
APIに依存するようなところは自分でラップしといてバージョン変わったら書き換えるくらいしかないんじゃないかな
インターフェイス変えないと立ち行かなくなって結局大改修になる可能性はあるけど

499:名前は開発中のものです。
15/02/19 21:54:49.08 BvTV0nsZ.net
古いバージョンそのまま使えばええやん。
何か不都合あんの?

500:名前は開発中のものです。
15/02/19 22:04:43.69 srcYRBk+.net
>>481
新しい機能が使えない

501:名前は開発中のものです。
15/02/19 22:42:13.32 BvTV0nsZ.net
無くなったものはその新機能にそぐわないからなくなってんだよ
それぐらい解るだろ

502:名前は開発中のものです。
15/02/19 22:58:15.14 56/Nxvf8.net
どんな理由だろうが無くなれば困る奴はいるんだよ
それぐらい解るだろ

503:名前は開発中のものです。
15/02/19 23:01:29.94 z/wN7MYn.net
少数の無くなって困る奴を気にしすぎると新バージョンの開発が難しくなるんだよ
それくらい解るだろ

504:名前は開発中のものです。
15/02/19 23:26:36.09 yx5mPigo.net
そもそもDirectInputって切り捨てられたことあったっけ?
Windows SDKに統合された今でもヘッダとライブラリ残ってるし開発できるでしょ

505:名前は開発中のものです。
15/02/20 04:15:28.38 0Lt4GRA5.net
>>951
出ました! さり気ないウニステマ。

506:名前は開発中のものです。
15/02/20 04:40:02.95 Yq9E+HAh.net
新しいバージョンで無くなって困るって言ってる奴はその新しいバージョンの設計思想を読み取れないアホなんだから、移行せずに古いほう大人しく使っとけ

507:名前は開発中のものです。
15/02/20 10:47:36.85 LvDa2DK4.net
3D箱庭ゲーみたいな面の各頂点がバラバラのマップデータの処理ってどうやってるんだろう
正方形の地形が並んだxyデータだったら
指定した座標から地形を読み込んで処理すればいいのは知ってるけど

508:名前は開発中のものです。
15/02/20 10:55:37.99 1wvp+sDY.net
クオータービューも座標変換する前は普通に二次元のマップだと思うけど

509:名前は開発中のものです。
15/02/20 11:35:44.82 LvDa2DK4.net
>>490
クォータービューは3次元なはずだよ(2次元ももちろんあるけど)
xyだけじゃなくてz座標もないと奥行きと上下左右の同時表現が成り立たないし
あとあれも大体は一定の大きさの立方体の集まりだから
指定したxyz座標と立方体の大きさ(16だったら座標/16)で計算すれば読み込むべき地形を特定して処理できる
俺が知りたいのはその立方体の大きさや頂点の位置がばらばらだった場合の処理なんだよね・・・

510:名前は開発中のものです。
15/02/20 11:39:19.38 wXZtF1jQ.net
クォータービューがFFTみたいなの想定してるなら、z座標はセルごとに値で持っとけばいい
3Dの地形だって立体交差とかしない限りは同じでいい

511:名前は開発中のものです。
15/02/20 12:13:53.08 LvDa2DK4.net
>>492
いや同じだと立方体のがくがくした地形しか作れないとおもうんだけど
マリオ64みたいに地形を作りたいんだよなぁ
俺の説明の仕方が悪かったかもしれなかったらすまん

512:名前は開発中のものです。
15/02/20 12:42:42.94 LvDa2DK4.net
ごめんもっと簡単に言うと
大量のポリゴンがある空間の中で座標を指定した時
どうやって適用されるポリゴンを選ぶことが出来るかれるかが分からないんです

513:名前は開発中のものです。
15/02/20 12:43:09.25 mEXo8/Tf.net
地形で簡単なのが、”高さマップ” 碁盤の目の座標に高さデータを加えるだけ。
自由度が高いのが、Xファイルで作る方法。モデリングソフトで作ればよい。
ポリゴン数を少なくするように工夫がひつよう。 
非力なパソコン用に使われた方法�


514:ナは、”BSPマップ”がある、 マップを細分化して分割する、その中から必要な部分だけを表示する手法。



515:名前は開発中のものです。
15/02/20 12:52:21.59 81/jlh7Y.net
今時xファイル勧めるとか無いわ

516:名前は開発中のものです。
15/02/20 12:53:11.59 7oZJAYkq.net
もしポリゴンで判定したいなら、基本的には点と三角形の当たり判定になる。
重力判定であれば、その方向の直線がぶつかるポリゴンを見つけるのは難しくは無いだろう。
軽量化のために、メッシュ空間を予め分割しておくこともある。
描画用の細かいメッシュのほかに、当たり判定や移動判定用の荒いメッシュを持つ場合もある。
壁へのめりこみ判定も似たようなものだが、市販のゲームでも「壁抜け」系の
バグがよくあるように、完璧なものはけっこう難しい。

517:名前は開発中のものです。
15/02/20 12:54:54.49 81/jlh7Y.net
>>494
その程度も解らないなら既成のゲームエンジン使っといた方がいいよ
竹槍で航空機へ挑んでる感じ

518:名前は開発中のものです。
15/02/20 13:02:44.72 LvDa2DK4.net
>>495
>>497
ありがとうがんばってみる

519:名前は開発中のものです。
15/02/20 13:12:46.23 LvDa2DK4.net
>>498
一応方法としてはポリゴンごとにオブジェクトと距離測って範囲内にあれば処理するくらいならあったのだよ
でもそれだと処理量がすごいことになっちゃうからね
今からゆっくり理解するよ
ありがとう

520:名前は開発中のものです。
15/02/20 14:14:35.39 V4z76ahC.net
モートン序列というので大量の判定を軽量化出来るってどっかのサイトにあったが
地面との着地判定にはどう使うんだろうか
オープンワールドの地形よろしく分割されてれば出来そうだが、マップ読み込んだ時に自動的に分割されればデザイナーにも優しいかも

521:名前は開発中のものです。
15/02/20 14:17:28.45 LvDa2DK4.net
あれ、今言われたことを踏まえて改めて調べたんだけど
もしかして重力判定で通過したかどうかは一定の範囲のポリゴン全部チェックする必要があるんだ?
二次元データみたいに指定したxy座標にブロックの有無と種類を判別して処理ってことに近い事はポリゴンでは出来ないって事だよね?
これ重くならないか不安だったんだがこういう認識でOKだよね?
本当頭悪くてすまん

522:名前は開発中のものです。
15/02/20 15:28:45.62 f/qfY/pq.net
>>501
キャラクターだろうが地面だろうがひとつのオブジェクトとして扱うのが一番簡単なんじゃね
今モートン序列当たり判定自作してて各ブロックにオブジェクトを挿入するところまで出来たけれど、
肝心の探索でバグってて総当たりよりも遅くなっててわろえない

523:名前は開発中のものです。
15/02/20 16:33:09.05 V4z76ahC.net
同じブロックに入ってても通常より処理が増えるだけだからな
スカイリムみたいなオープンワールドで始めて効果を発揮するんじゃないか?
まぁスカイリムでもマップの反対側で当たり判定動かしてるのかわからないが

524:名前は開発中のものです。
15/02/20 16:50:19.91 kfuov5G/.net
>>502
ポリゴン全部っつーても、衝突判定に描画に使ってる精細なポリゴンをそのまま使う必要はなく
基本的にはそれを簡易化した描画しないローポリや、球、箱などとの判定でok

525:名前は開発中のものです。
15/02/20 17:03:56.05 LvDa2DK4.net
>>505
ありがとう!
みんな優しいね

526:名前は開発中のものです。
15/02/20 18:58:58.25 QKhWkDln.net
DirectInput8のためだけにDirect8で止めておく選択肢はあったかもなw
名称が変るのは回避できない可能性があるが。

527:名前は開発中のものです。
15/02/20 19:33:43.50 81/jlh7Y.net
ポリゴンのあたり判定もそれをやる前にオブジェクト毎にAABB(aligned axis bounding box)を持っといてそれで大まかな判定したあとポリゴンであたり判定するとかね
AABBは描画するときにもつかえる

528:名前は開発中のものです。
15/02/20 19:56:18.41 V4z76ahC.net
オクルージョンカリングってどうや�


529:驍フ?



530:名前は開発中のものです。
15/02/20 21:38:48.57 81/jlh7Y.net
出来るだけ少ないポリゴン数で遮蔽ポリゴンを作っておく(実際のポリゴンをはみ出ないように)
1.遮蔽ポリゴンだけを使ってデプスのみ描画
2.描画判定するオブジェクトのAABBをそのデプスを使って描画されるか判定(デプステストをパスするピクセル数を返すだけのAPIがある)
3. 2で描画されるピクセルがあると判定されたものだけ実際に描画する
いくつか方法あるけどスタンダードなのはこんな感じ

531:名前は開発中のものです。
15/02/20 21:43:31.32 mEXo8/Tf.net
Clipping
Culling
Occlusion
でしょ

532:名前は開発中のものです。
15/02/24 21:32:41.15 vaS9aulZ.net
C++/SFMLライブラリを使った2Dベースのゲームを作っているのですが、
自分で調べた感じですとSFML自体ではz-orderingの機能は持ち合わせていないようです。
こうなるとやはりvectorなどを用いてマニュアルで描画順をうまくやりくりするしかないのでしょうか?

533:名前は開発中のものです。
15/02/24 22:29:05.30 xhUImxJo.net
>>512
URLリンク(en.sfml-dev.org)
ちょっと古いやり取りだが、z-orderの機能はないし、リクエストも却下されたらしいぞ。
自前で管理するしかないんじゃないか?

534:名前は開発中のものです。
15/02/24 23:50:55.98 vaS9aulZ.net
>>513
早速の返答ありがとうございます。
dxlib関連の記事のようですが下記のようなサイトを見つけました。
こんなかんじで描画順を管理できるように試してみようと思います!
ありがとうございました。
URLリンク(ktkrmjskmjds.blog119.fc2.com)

535:名前は開発中のものです。
15/02/25 07:37:32.67 nWK6BI/o.net
BtconというWiiリモンコンをPCで使えるようにするツールを作っているのですが、
これはwiiyourself!ベースでwiiリモコンを制御しています。
しかしwiiリモコンプラスと元祖wiiリモコンで違いがあり、wiiリモコンプラスにwiiyourselfが対応していません。
wiiyourselfのほうがwiiリモコンプラス発売より前に作られたもので、開発が止まっているためです。
自分で調べて動いたという情報を元に改造してみたりしているのですが、動かなくて困っています。
詳しい方がおられましたらヒントをいただければ助かります。
URLリンク(xbmc.inpane.com)

536:名前は開発中のものです。
15/02/25 09:06:11.55 zNwgz5b4.net
wiiリモコンプラスはMSスタックは繋がらないようで、東芝のスタックであれば繋がりました。

537:名前は開発中のものです。
15/02/27 09:04:14.57 l7kW3nDz.net
DirectX9でミップマップって勝手にテクスチャ入れ替えてくれる?

538:名前は開発中のものです。
15/02/27 14:15:25.84 KjiqxG1B.net
URLリンク(msdn.microsoft.com)

539:名前は開発中のものです。
15/02/27 21:19:14.81 Pdgs5cQ7.net
シェーダ側では、ミップレベルを指定したい時はわざわざtex2Dlod()を呼び出すくらいだから
一般のtex2D()は自動でミップマップされてると考えていい。
ただもちろん、ハード対応してればだし(今動いてるPCはまずしてるだろうけど)、
「ミップレベルを入れ替える」のではなく「周辺の2つのミップレベルを補間する」実装のはず。

540:名前は開発中のものです。
15/02/27 21:26:33.67 Pdgs5cQ7.net
あ、ごめん、サンプラステートのMipFilterのことを忘れてた。

541:名前は開発中のものです。
15/03/03 08:02:03.50 O4uDv9F0.net
UnrealEngineのコードへのアクセスが無料化されたけどこのスレの住民は興味なし?

542:名前は開発中のものです。
15/03/03 08:44:20.60 nygqixhE.net
ゲームエンジンでは実現不能なアイデアばっかりなんで

543:名前は開発中のものです。
15/03/03 08:46:22.16 O4uDv9F0.net
ゲームエンジンを知らない奴が居ることは解った

544:名前は開発中のものです。
15/03/03 10:44:49.65 ngz/wjN8.net
UE4課金してるし無料になるならラッキーって程度。

545:名前は開発中のものです。
15/03/04 00:59:35.68 9TbqAfLf.net
興味ないどころか、この板自体がウニと非現実のステマに占領されてるので
嫌気が指してる。でもこういうのに限って板分けないだろうな運営。

546:名前は開発中のものです。
15/03/04 01:13:58.75 dqGNRwqL.net
っていう時代に取り残された人達が多い所か、ここは。
オクルージョンカリングの質問にもまともに答えれるひと居なかったし

547:名前は開発中のものです。
15/03/04 07:43:32.99 tS5hBT8s.net
オクルージョンカリングで思ったんだけど、
例えばキャラクターが建物やらの後ろにいて隠れるけど、
影は建物から出るって時、影は描画されるのん?
判定用モデルでそのまま影描画しちゃう感じ?

548:名前は開発中のものです。
15/03/04 09:43:02.19 GgwaroCI.net
シャドウマップを作るときはライトからの視点になるから、
また別のオクルージョンカリングを行うとか?

549:名前は開発中のものです。
15/03/04 10:13:15.70 yZTKs+IT.net
オクルージョンカリングね
あれうまいよな
でも俺はポンデリング派だな

550:名前は開発中のものです。
15/03/04 10:49:22.17 a+CSwpI9.net
影はビューカリングだけじゃない?
z-prepassすればそこまで重いものじゃないし影用モデルでかなり最適化できる。
オクルージョンカリングは描画結果のピクセル数を取得して0なら描画しないだけだよ。

551:名前は開発中のものです。
15/03/04 20:12:10.19 lWy5bGCc.net
オクルージョンカリングってgpu内で完結できたらいいのに。

552:名前は開発中のものです。
15/03/04 21:18:31.71 GgwaroCI.net
大きなトレードオフがないならGPUでやってほしいよね

553:名前は開発中のものです。
15/03/04 22:53:21.49 GI8MSIuN.net
>>529
くだらない事言ってるとお前の*に->するぞ

554:名前は開発中のものです。
15/03/05 00:38:58.57 f1raWeBS.net
>>531
>>532
簡素な遮蔽ポリゴンと、事前計算した超軽量なAABBでデプステストをパスするか確認するから軽くなるんだよ。
デプステストをパスしなかったら描画する対象のvertex shaderすら動かす必要が無いからね。
GPU内で完結するようにしたら実際のポリゴンを使うしかない。
そうすると、どうやっても全頂点計算するしかない。
それで隠れるポリゴンがあればfragment shaderは実行しなくて済むけど、それはTBDRっていう方法で既にGPUで実現済み。
ピクセルを書き込む回数を減らせるからメモリ帯域の狭いモバイルGPUでよく使われてる方法で、PowerVRが昔からその方法を使ってて有名。
それも半透明とかアルファテスト使うようなポリゴンがあると使えない。

555:名前は開発中のものです。
15/03/05 02:25:19.75 YpPGywcJ.net
なんか2chの専ブラでハードコーディングしたからAPIキーが割れたって言ってるけどコンパイルしてネイティブコードに変換されて読み取れるもんなの?

556:名前は開発中のものです。
15/03/05 06:12:17.20 KVc1+L+F.net
>>535
とりあえず板名100回復唱。な

557:名前は開発中のものです。
15/03/06 07:01:26.91 22aEiDue.net
オーバーフローと配列範囲外のチェックってどうやんの

558:名前は開発中のものです。
15/03/06 08:11:24.59 JOegiwit.net
if ( hoge.length() - 1<i ) return;

559:名前は開発中のものです。
15/03/09 00:28:48.51 iEPwp1GV.net
入門ゲームプログラミングって本買った
まずロベールのC++本で基礎を身につける

560:名前は開発中のものです。
15/03/09 00:55:44.81 KBqbZUvv.net
>>538
lengthがsize_tを返すのであればemptyの時に死ぬね

561:名前は開発中のものです。
15/03/09 08:43:44.85 5/H88Ii0.net
そんなん配列のnullチェック先にするに決まってんだろ

562:名前は開発中のものです。
15/03/09 11:25:36.92 KBqbZUvv.net
>>541
hogeってのは生配列を返す関数持っててnullチェックしないと使えない糞コンテナなのか?そんなもん窓から投げ捨てろ

563:名前は開発中のものです。
15/03/09 16:56:13.92 Tsv4BOfD.net
>>542
なんか話噛み合ってないと思ったら、javaと勘違いしてたごめん。
あとjavaにしてもlengthの後の括弧いらんかったごめん。

564:名前は開発中のものです。
15/03/14 11:31:02.28 Bn3tbHEp.net
ヘッダでstatic constな配列を初期化することってできない?

565:名前は開発中のものです。
15/03/14 12:27:07.32 FGm0AUiX.net
const_castとかあるけど使ったことないから分からない

566:名前は開発中のものです。
15/03/21 17:31:21.55 4J9dPJbb.net
DXライブラリで一通りゲームを作って次はDirctX9でゲームを作ろうと思って本なり読んでるけど
入力関連とかメインループ文に入ってるように見えないのになんで操作できてんだこれとか色々わけわかんなくてDXライブラリに逃げちゃいそう

567:名前は開発中のものです。
15/03/21 17:41:03.09 WO0UmCC8.net
入力の取得関数の所にブレークポイント張ればいつ呼ばれるか解るだろ
ソースレベルで追えないんじゃそのあとも苦労しそうだが

568:名前は開発中のものです。
15/03/21 22:19:51.97 Vu16KnFN.net
メッセージ系の処理の話かな?
Win32の仕組みを知らないといろいろわからないかもしれない
って言うか無理しないでDXLibでいいと思う

569:名前は開発中のものです。
15/03/22 13:15:06.80 RZoxpRxM.net
>>546
まさかまかりなりにもDxlib使ってゲーム作った経験があるのにコールバック関数を知らない訳じゃないだろうな・・・w

570:名前は開発中のものです。
15/03/23 00:04:40.06 6RzGsxDm.net
最低限の機能を使うだけなら、コールバック要らんぜ?

571:名前は開発中のものです。
15/03/23 02:47:34.49 5MPdWZ7w.net
話をまとめると「コールバック関数でググれ」だな

572:名前は開発中のものです。
15/03/23 08:21:54.36 OPwFNkI6.net
名前聞けば皆知ってそうなFLASHゲームの製作者なんて構造体すら知らなかったぞw
実装力>>>知識よ。

573:名前は開発中のものです。
15/03/23 14:50:59.94 ORae6Rkf.net
コールバックの利点ってなんぞ
軽い機能ならswitchすればいいしでかいならクラスごとするし手間かかるだけじゃないのか

574:名前は開発中のものです。
15/03/23 20:27:25.37 jlPJ7kT1.net
>>553
と、とりあえずググってこい、なっ?

575:名前は開発中のものです。
15/03/23 20:32:37.09 6RzGsxDm.net
「ゲームで」だとそこまでは…

576:名前は開発中のものです。
15/03/23 21:51:33.63 2BLAF17B.net
ライブラリの実装が楽になるぐらいじゃね

577:名前は開発中のものです。
15/03/25 00:11:47.80 q/dDA6au.net
誰にも迷惑がかかるわけでもなし
メリットが無いと思うのならば使わず突っ走ってみるのも一興
スマートポインタ?delete忘れるわけねーだろとツッパっていたら
見事に二重deleteを踏み抜いて以来
スマートポインタ教になった俺みたいに

578:名前は開発中のものです。
15/03/25 07:50:29.42 Ni1QV6xd.net
スマポ(RAII)は誰もが魅了される素晴らしい作法。

579:名前は開発中のものです。
15/03/25 09:05:10.14 QSKvYWqw.net
二重deleteは追えばすぐ分かるだけ良心的

580:名前は開発中のものです。
15/03/29 16:51:57.43 0emdsjcu.net
C++も、デフォルトで、ベクトル演算や行列演算のコンパイルができるようになればいいのに
コンパイラに任せると、機械語でオーバーヘッドが膨らみ過ぎるのかな・・・

581:名前は開発中のものです。
15/03/29 17:28:01.84 xcFREV5w.net
どうせベクトルや行列の型を指定するんだから見た目だけなら演算子オーバーロードでいいだろ
そうじゃない自動ベクトル化ならIntelCでも使えよ、一応VCにもあるけど

582:名前は開発中のものです。
15/03/29 17:28:41.73 ZYW27Yds.net
VC++の自動ベクトル化の空気さは異常

583:名前は開発中のものです。
15/03/29 22:35:03.23 0emdsjcu.net
>ベクトルや行列の型を指定するんだから見た目だけなら演算子オーバーロードでいい
要するに自分でクラス定義して、そのクラスを引数に取る演算子のオーバーロードするって事だよな。
それって面倒じゃん?
たとえば、ベクトルxとスカラーcがあるとして、
例えば、x-cなんかで、cをベクトルに拡張して四則演算してくれるようにコンパイルをしてくれれば便利だ
記述が、すげースッキリするぜ

584:名前は開発中のものです。
15/03/29 22:46:40.82 tAb5E4+1.net
そんな言語あるのか

585:名前は開発中のものです。
15/03/29 23:57:58.80 LTE960gn.net
HLSLとかGLSLはそうとも言えるんじゃね?
C++に含めるのは仕様が膨らみすぎるしどう考えてもありえないけど

586:名前は開発中のものです。
15/03/30 17:38:30.42 kGTScyVB.net
その程度のオーバーロードぐらい自分で書けよ

587:名前は開発中のものです。
15/03/30 17:39:10.89 kGTScyVB.net
それかライブラリ使え
それぐらい既にあるだろ

588:名前は開発中のものです。
15/03/30 18:13:10.35 slXQ1bOX.net
ベクトル化って並列化のことでなくて?

589:名前は開発中のものです。
15/03/30 18:23:29.49 kGTScyVB.net
>>568
スカラーをベクトルに拡張してって話をどうこねくり回しても並列化にたどり着かないんだけど

590:名前は開発中のものです。
15/03/30 20:10:43.25 1XyG6Wml.net
行列の話と、CPUの最適化の話がごっちゃになっとるなwww
Phiとか扱わんだろうからなぁ

591:名前は開発中のものです。
15/03/30 20:48:54.91 b0tJqvqw.net
>>565
C言語でも、静的配列はsizeof()で、要素数が求まるじゃん。
だから静的配列に限っては、それほど無理なコンパイル要件でもないと思うんだ。

592:名前は開発中のものです。
15/03/30 22:48:43.72 slXQ1bOX.net
>>569
いや
>>562
で出てんじゃん

593:名前は開発中のものです。
15/03/31 00:17:17.94 DE0yY6pv.net
>>572
そいつに言ってるわけじゃないし
ID:0emdsjcu
はどう見てもベクトル命令の方は言ってないだろ返信の為に引用した方から見ても

594:名前は開発中のものです。
15/04/04 12:05:56.45 QQCOreS+.net
>563
プリプロセッサとかテンプレート使え

595:名前は開発中のものです。
15/04/04 15:28:53.15 yUzuUUN3.net
unityとかue使わないのにはなんか理由があるの?

596:名前は開発中のものです。
15/04/04 16:35:38.22 vaG8wcz0.net
>>575
オープンソースじゃないと嫌な宗派の人たちとか
反プロプライエタリエンジン派の人たちとか?

597:名前は開発中のものです。
15/04/04 17:34:51.61 YDk4o154.net
ゲームを作るだけが目標じゃなくて
技術習得とか作る行程にもこだわりがあるとか

598:名前は開発中のものです。
15/04/06 02:30:22.94 uSGdnOak.net
>>577
まさにそれ。
ゲーム以外でも応用できる技術を身に着けるのが楽しくてしょうがない。
会社(非ゲーム)でも役に立ちまくってる。

599:名前は開発中のものです。
15/04/06 08:15:15.97 sWIkPIlR.net
日本のIT屋はOSやオフィスソフトなんかを作らなかった
結果世界を相手にできない
日本のハード屋はゼロから作ること(メイドインジャパン)にこだわった
結果世界を相手にできてる
unityとかもいいけどゼロからでも作り上げれる技術は保持しときたい
だからC++は捨てれない

600:名前は開発中のものです。
15/04/07 08:34:53.50 q9bGL2Lp.net
俺もだ
つまり、元々ゲームが作りたいんじゃなくて、プログラミングを楽しんで色んな技術や知見を得たい。その過程の一つとしてゲーム作ってるだけ。

601:名前は開発中のものです。
15/04/07 10:05:55.63 6mIxjEc4.net
>>579
言語は関係ないのでは?
コピペしたいなら別だけど

602:名前は開発中のものです。
15/04/07 19:26:39.87 J/eE9D3a.net
>581
VMでもスクリプトでもなくハードを直接叩けて多くのプラットフォーム向けのコンパイラのあるOOPも関数型もいける高級言語って他にある?

603:名前は開発中のものです。
15/04/07 20:05:14.94 pKp3reSH.net
ハードを直接叩くって時点でC++は…

604:名前は開発中のものです。
15/04/07 21:14:04.62 JigxqEUV.net
c++11以降の発展が素晴らしいから使ってる。

605:名前は開発中のものです。
15/04/07 21:49:14.25 6Igr/bFa.net
ガベージコレクタないらしいじゃん
それだけで使う気になんないわ

606:名前は開発中のものです。
15/04/07 22:15:58.91 Js45Pttp.net
C++11が神すぎて愛してる。
>>585
ガベコレの必要性が分からない。
スマポじゃダメなの??

607:名前は開発中のものです。
15/04/07 23:22:56.51 r6+ZyJLJ.net
たしかガベコレのCライブラリもあったはず
わざわざC++でガベコレの使うぐらいなら
それでこそJavaでよくね?とは思うけど
使いこなせる人はきっといるのだろう
ま、使いやすいと思う言語を使えばいいのさ

608:名前は開発中のものです。
15/04/07 23:52:39.26 V/NiCl4y.net
ジャンルにもよるけどゲームの場合はガベコレはデメリットが大きい
ガベコレ中はどうしても処理負荷がかかってしまう
あとガベコレでも循環参照とかメモリークの危険性はある

609:名前は開発中のものです。
15/04/08 01:18:56.44 FP0EIOAz.net
循環参照を上手いこと扱ってくれるのをガベコレって呼ばないか?
単純な参照カウントは含まないイメージがある

610:名前は開発中のものです。
15/04/09 04:57:40.20 V84tE5WO.net
処理が高速なのが売りの言語にそんな物を突っ込むこと自体が…
しかも、CPUの進化で結構余裕が出るようになってきたとはいえ1フレームを争うゲームで
まあ、処理の速さを活かして動作安定性を高めていると言えないこともないが

611:名前は開発中のものです。
15/04/09 10:55:23.90 MHTRE/z5.net
そのあたりの利便性と実行速度のバランス自体を作り手の技術と裁量次第で自由に出来るのがC++の良さ
例えば、マークアンドスイープをメモリ領域を小分けにしてフレーム単位で分散して実行するとか
同じサイズのオブジェクトが大量に生成破棄されるならそれ用のメモリプール作っておくとか

612:名前は開発中のものです。
15/04/09 11:07:59.75 U3R6v3b4.net
マークアンドスウィープ方式のGCを自分で実装なんて考えたこともないわ

613:名前は開発中のものです。
15/04/09 14:05:15.05 eY4Y798Y.net
boostあたりでgcライブラリを出してくれてもいいんでねえ?
スマポの延長みたいな感じで

614:名前は開発中のものです。
15/04/09 15:30:45.95 TQZSg7vZ.net
どうせ何かしらのスクリプト組み込むんだからGC必要な処理はそっちでやればいい

615:名前は開発中のものです。
15/04/09 15:32:48.11 0uLPtayU.net
プログラミング初心者にはわからないと思うけど、プログラミングそのものが有名ゲームをプレイする以上に楽しかったりするんだよね
むしろお金を払わないでプログラミングができるってだけで結構楽しかったり

616:名前は開発中のものです。
15/04/09 15:51:09.16 DMZkI4l5.net
料理とかプラモデルみたいな感覚って説明してる。
それを楽しいと思えるかどうかは別として。

617:名前は開発中のものです。
15/04/09 20:09:02.62 V84tE5WO.net
問題は覚えるべき要素も多くて取っ付きにくいことと、
言語仕様がとっ散らかってて時々その仕様に悩まされることだ

618:名前は開発中のものです。
15/04/09 21:03:17.88 0zValk89.net
C++11は洗練されてて好き。
まぁ、それでもプログラミングを楽しめるかどうかは適性次第だろうね。
自分はC++11が超キモチイイ。

619:名前は開発中のものです。
15/05/04 22:56:40.79 bWjMZjgH.net
初心者だがコードを書くこと自体に喜びを感じる。

620:名前は開発中のものです。
15/05/05 00:33:10.13 IAsXNTG2.net
それは幸せなことだ
初心者は喜びを知り
中級者は苦しみを知り
上級者は無常を知る
それがこの世界の理よ

621:名前は開発中のものです。
15/05/06 00:50:58.96 ZQTteOf/.net
>>600
すごい世界だ・・・

622:名前は開発中のものです。
15/05/06 01:10:46.90 o2LDDDsk.net
無情ならぬ無常か。イケテルじゃんw

623:名前は開発中のものです。
15/05/06 03:08:49.55 IHlLqFXR.net
当方ビジュアルスタジオ2010にてアクションゲームを作っているんですが、
デバッグ中、配列に格納したマップ情報とオブジェクトとの判定をする部分で
ごくまれにエラーが起きて停止します。
経験則で判断すると、マップ判定でのエラーは
マップ情報の無い部分にオブジェクトが飛び出すというものが多かったんですが
今回は目視ですべてのオブジェクトが飛び出してるか否か確認出来る状態で
毎回エラー発生時に怪しいオブジェクトがいないので、今までのエラーとは違うような気がします。
しかも、滅多にそのエラーが出ないため、原因を探れません。
ただ、気持ち悪いことがひとつありまして、そのエラーで停止したあと、
マップの情報を入れた配列にカーソルを当てて、要素を見たら、
途中から「?」という状態になって表示されてるんです。
URLリンク(download1.getuploader.com)
URLリンク(download1.getuploader.com)
これがおかしなことに、見るのを止めて、もう一度カーソルを合わせてみると
今度はちゃんと中身が入ってる状態で表示されたりします。
ビジュアルスタジオの扱いにまだ慣れてないせいもあり、
中身が「?」で表示されたのは初めてだし、覗き直すたびに
「?」だったり、ちゃんと中身が見れたりすることが気持ち悪いんですが
これは別に、問題ないのでしょうか?(もともとそういうものだ、とか)
もし、ゲーム中に配列の中身が「?」みたいになる瞬間があるのなら
そりゃいきなりオブジェクトがど真ん中にいてもエラーになると思うんです。。。
これが原因なのかと思うんですが、、違いますか?
もしくは配列覗いたときの、「?」表示はビジュアルスタジオのバグなんでしょうか?
ちなみに、マップ配列の中身の格納はゲームが始まる最初に行っているので、
ゲーム中にマップ配列の中身が変わることは考えられない仕様です。
だとするとこの「?」はなんなんでしょうか?
考えられる要因を教えて下さい、お願い致します。


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