X



C/C++ゲーム製作総合スレッド Part7 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
垢版 |
2015/01/11(日) 10:19:31.85ID:RDQlUyF+
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その18
http://peace.2ch.net/test/read.cgi/gamedev/1399459468/

前スレ
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/
C/C++ゲーム製作総合スレッド Part5
http://peace.2ch.net/test/read.cgi/gamedev/1389798031/
C/C++ゲーム製作総合スレッド Part6
http://peace.2ch.net/test/read.cgi/gamedev/1404815419/
0004名前は開発中のものです。
垢版 |
2015/01/12(月) 16:06:35.67ID:skthRk+e
基本的にゲーム内で使う文章を外に書くメリットはないよな?
で、セーブファイルは専用の構造体を用意して
そこに保存が必要な数値を片っ端からぶっこめばいいんだよな?
なら今のゲームでテキストファイルを使う場面って、
セーブデータ等のテキストデータのエクスポートくらいだと考えていいんだろうか?
0006名前は開発中のものです。
垢版 |
2015/01/12(月) 16:41:38.11ID:2JI68Ytd
海外のゲームやったことないのかね?
大抵テキストデータは外に置いてあって日本語化Modとか作られてたりする。
日本国内しか相手にしないならそれでも良いと思うけど
0007名前は開発中のものです。
垢版 |
2015/01/12(月) 18:56:00.81ID:+4zBZCv5
テキストデータでデータ構造作っておくと色々と便利だよ
テキストエディッタ使えばデータを書き換えられるから、
わざわざ専用エディッタを作らなくてもいいし
0008名前は開発中のものです。
垢版 |
2015/01/13(火) 02:13:15.64ID:NQh/p/ub
lua,Squirrelなどを使って、シナリオ・文章などを、
読み込んだりしているんじゃないの?

これらを修正する度に、
コンパイルするのは時間の無駄
0009名前は開発中のものです。
垢版 |
2015/01/13(火) 02:51:46.58ID:z6JNQND6
ウチの会社では、基本的にゲーム内で使う文章は外のツールで作成してるな。
わざわざソース内に置くメリットがむしろ感じられない。誤字修正の度にプログラマが手を入れる必要が出てくるし、ビルドに時間もかかるし、別の言語に移植する際に面倒じゃないか。
あ、あと、文章の問題であればそのツールを開けばいいという、問題の修正箇所を局所化できるというメリットもあるから。


セーブは確かに専用の構造体(というかPODクラス)を用意して必要なデータをぶっこむ、シリアライズして吐き出す形だな。

それらの吐き出す形は結局単純なテキストではなく、何らかの形式に則ったバイナリ(テキストエディタで開いても意味不明な部分が交じるファイル)だけど。
0010名前は開発中のものです。
垢版 |
2015/01/13(火) 08:36:10.29ID:u897FUjW
プログラマ1人で造るミニゲームとかで、メニュー程度の文章量しかないなら
たしかにハードコーディングのほうが楽ではある
0012名前は開発中のものです。
垢版 |
2015/01/13(火) 12:40:45.14ID:x0mM86eW
4 :名前は開発中のものです。:1985/01/12(土) 16:06:35.67 ID:skthRk+e
基本的にゲーム内で使う画像を外に書くメリットはないよな?
で、描画手順は専用の構造体を用意して
そこに開始点・終了点の座標や塗る色の数値を片っ端からぶっこめばいいんだよな?
なら今のゲームで画像ファイルを使う場面って、
画面紹介等の画像のスクショくらいだと考えていいんだろうか?
0013名前は開発中のものです。
垢版 |
2015/01/13(火) 18:27:31.65ID:u897FUjW
>>11
ユニークな名前で管理するのが面倒な規模なら
ロジックの部分もある程度は外に投げるようになるんでね
0014名前は開発中のものです。
垢版 |
2015/01/13(火) 18:40:16.59ID:RKeKGf32
画像ファイルでそれやろうって奴はいないだろ…
テキストは定義された物を書き出すだけだからやろうって考える人がいるだけで
あと、MOD作ってもいいよとか多人数でやるよとか
追加含めて大量に書くよってんならテキスト外置きなんだろうけど、
逆に言えばこのどれにも当たらないならいらないかなって
一部でもオープンソースにする気はないって人もいるだろうし

壊せる壁って破壊済み相当の状態で床などに変化するオブジェクトだけど、
これはダメージを与えていくと壊せる物はマップチップ扱いなのかキャラクター扱いなのかよく分からない
キャラクターをマップチップに正確に重ねてチップを隠すんならいけそうだけど、
そうするとマップ情報をキャラクター生成部に送る必要があるんだろうか?
0015名前は開発中のものです。
垢版 |
2015/01/13(火) 19:39:05.23ID:MdTOZHze
>>14
普通に居るけど
Mod作りやすいってことは本編も作りやすいって事がわからんのだろうかね。
あとオープンソースの使い方おかしい
0016名前は開発中のものです。
垢版 |
2015/01/13(火) 22:57:29.48ID:RKeKGf32
それ、一部の場面でレイヤーの代わりに使ったりする物のことを言ってるんだろ?
描画画像を全部内部で0から生成なんかやってたらそのコードだけでものすごい量になっちゃうよ
逆にそれが部品として小さいなら、外に置かなくても組み込んじゃえってのはありだとは思うし
それを実行しているのが一行目ってわけだ

非現実的な案ではあるけど、できるんなら画像の隠蔽は完璧だな
あと、一部ならオープンソースじゃなくてシェアードソースね、おk覚えた
0020名前は開発中のものです。
垢版 |
2015/01/14(水) 00:25:45.86ID:8sU4Ec1w
スレを流し読みしたが、>>14-16の辺りが話が噛み合ってないよな
これお互いに誤読してるだろ。推測するに大凡の所お前らの間には
目立った意見の食い違いはなさそうだから仲良くしろよな
0021名前は開発中のものです。
垢版 |
2015/01/14(水) 01:05:05.22ID:8sU4Ec1w
>>14
>壊せる壁って破壊済み相当の状態で床などに変化するオブジェクトだけど、
>これはダメージを与えていくと壊せる物はマップチップ扱いなのかキャラクター扱いなのかよく分からない

本来は、昔のゲーム機の仕様(例えばOBJとかBGがあるやつね)の様々な縛り
の中での話なので、今なら好きに定義して自由に作ればいいんじゃねーかな

見当がつかなくて何か参考にしたいんならツクールの類でも触ってみて
内部の仕組みを推測して真似てみたりすればいいんじゃねーかな

>キャラクターをマップチップに正確に重ねてチップを隠すんならいけそうだけど、

そういう手も当然ありだよね

>そうするとマップ情報をキャラクター生成部に送る必要があるんだろうか?

どういう機能分割をしてるのかイマイチ分からんけど、座標系の概念が
考慮されてないなら取り入れたほうがいいんじゃねーの
0022名前は開発中のものです。
垢版 |
2015/01/14(水) 01:50:18.20ID:oy3qeLAO
え、俺はマップチップもキャラも一緒のオブジェクトなんだけど
お前らわざわざ分けてんの?
0023名前は開発中のものです。
垢版 |
2015/01/14(水) 18:32:13.33ID:b3+ap1tg
>>22
舞台装置と役者は似て非なる別物だからよ

>>14みたいなことをやる場合、
当たり判定まではキャラクターと同じでも
HPは持っていない壊せない壁をどう定義するかがな
0025名前は開発中のものです。
垢版 |
2015/01/14(水) 20:25:50.33ID:mV/UlqnK
好きなようにすりゃええがな
あんさんの方法を否定してる奴なんて誰もおらん
あんさんは他人を否定したくて仕方ないかも知れないがな!
0026名前は開発中のものです。
垢版 |
2015/01/14(水) 21:38:06.89ID:0XojYraf
例えどんな方法でも実現可能だったとしても
複数の手法の中からベストな物を追求するのは良いことである
0027名前は開発中のものです。
垢版 |
2015/01/14(水) 22:19:18.87ID:oy3qeLAO
>>25
まぁ、お前にゃ聞いてないがw
似て非なる別物の根拠を訪ねただけで、否定したように感じるってのは相当病んでるぞ
0028名前は開発中のものです。
垢版 |
2015/01/14(水) 23:02:57.92ID:iwR4jgL6
当たり判定の範囲をなしを含む特有の定義にして、
一番最初に横たわるキャラクターオブジェクト それがマップ

他のキャラクターとは一部の要素が大きく違う分管理に差が出るし
無駄を承知で分けた方が分かりやすくはなる…かも
0029名前は開発中のものです。
垢版 |
2015/01/15(木) 21:04:25.90ID:v7OuMrqm
マップと言えば、マップチップタイプみたいな並びを記憶しておく必要があるマップは、
当然二次元配列を使うとして
たとえば現在の装備一覧のような、
同じ要素を指す数値の並びをしている物の塊も二次元配列にすべきなんだろうか
0031名前は開発中のものです。
垢版 |
2015/01/16(金) 08:47:44.30ID:ZjU+PjG/
>>29
別にどう作っても良いけどマップも1次元の配列で持っていた方が楽
座標x、yも持たせておけばいい
0033名前は開発中のものです。
垢版 |
2015/01/16(金) 23:19:42.96ID:aIsA+egi
>>29
>たとえば現在の装備一覧のような(…中略…)二次元配列にすべきなんだろうか

一覧表示にも色々あるけど
要求(される操作)に応じて適切なデータ構造(コンテナ)選ぶものなので
二次元配列でおk(な要求)ならそれで作るのが一番いいんじゃねーの

要素数がたかが知れてる場合、配列(std::vector)使ってるからって
何か問題が生じるような事はまずないわけだし
0036名前は開発中のものです。
垢版 |
2015/01/17(土) 11:55:03.58ID:YJD7hT+O
一次元配列で確保した上で行(or列)先頭にアクセスするための
インデックス(LUT)を用意するような内部実装でも二次元配列
なんであってだな(>>32)

ターゲットも実装も不明ならメリットねぇとは断言できんよ
0038名前は開発中のものです。
垢版 |
2015/01/17(土) 17:31:33.18ID:KBPYDccT
たとえば縦スクロールSTGのマップとかで、
メモリ節約のためにマップを行ごとに細切れにして
表示範囲の上に一行足して下から一行引くような処理をしていたりする場合、
一行ずつ読み込んでるんだという事を示すためにわざとやるとか
試作段階で仕様が固まらなかった時の苦肉の策がそのままになっちゃったとか?
二次配列ってなんかあんまり使い道が浮かばない
0039名前は開発中のものです。
垢版 |
2015/01/17(土) 18:57:09.16ID:O8Io0R5L
3Dでキャラクターが技によって自由に地面の凹凸を操作できるようにしたいんですが
予め頂点を作っておかないとダメでしょうか?

キャラクターがここじゃーって指してる座標に一番近い面の上に
頂点をいい感じに窪ませるように配置して、
もともとあった面と入れ替わるような感じにしたいのですが、
当たり判定やハードウェアレンダリングしたいならやっぱり面倒ですか?

まぁハードウェアレンダリングなんてどうやればいいのかわからないですが
0040名前は開発中のものです。
垢版 |
2015/01/17(土) 20:24:50.48ID:dqiO68fF
確かにあんまり、というか殆ど多次元配列使わないな
配列へのアクセス部分は、隠蔽する傾向にあるから、アクセス用インデックスが多次元でも、アクセスの内部仕様は1次元配列でやってることが多いな

また配列の次元数を増やすと、後から解読するのが難しくなって、可読性が下がる
だから次元が増える場合は、次元別にクラス定義して、一次元配列のメンバに下位次元を持たせるようにしてるな

そういやD3DMATRIXに2次元配列のメンバあるけど、自分で定義したものじゃないし、そもそもそのメンバって殆どアクセスしないなぁ
0046名前は開発中のものです。
垢版 |
2015/01/17(土) 22:50:59.20ID:Gl1ppQ6p
>>41
リソースに余裕がある場面では使ってるな
規模が大きくなってくると細かいことまで気にしてられんからこれ使うとラク
0047名前は開発中のものです。
垢版 |
2015/01/17(土) 22:59:23.12ID:aI7crSKW
>>39
テッセレータを使ったらいいのでは?
凹ませたい領域を4頂点の単純なタイルで表現し、それをフィールドに敷き詰めておく。
凹ませるときは、該当するタイルに対しテッセレーション(最大64分割)して、
高さマップを与えてディスプレースメントさせる。
0050名前は開発中のものです。
垢版 |
2015/01/18(日) 12:34:52.67ID:W1O9uyd7
vector<vector<T>>は便利なときもあるけど、
コピーやトラバースのパフォーマンスがvector<T>に比べて著しく遅いんで、
そちらが重要なときは多少冗長でもvector<T>で扱うようにしてる。
0051名前は開発中のものです。
垢版 |
2015/01/18(日) 12:40:46.60ID:beKeRz4L
vector<vector<T>*>
0056名前は開発中のものです。
垢版 |
2015/01/18(日) 15:53:55.88ID:dWFx6RaG
相当昔にC++触って、今と環境がかなり違いそうなのですが、
タスクシステムを実装する時、昔は固定長のメモリを予め確保したうえで、そのメモリを
newすることによって使っていたのですが、今のゲームもこのやり方が主流ですか?
それともスマートポインタ+std::listでも速度出るのでしょうか?

スマートポインタとやらは、これはやってる事はガベージコレクションですよね?
速度に問題無しということですが、ヒープ領域から自由にnewdeleteして大丈夫なのかと不安になるのですが・・・
0058名前は開発中のものです。
垢版 |
2015/01/18(日) 17:19:29.87ID:W1O9uyd7
>>56
スマートポインタはリソース管理の安全性を高めるだけで、
new、deleteのパフォーマンスを高めるわけではない。
むしろクラス被せる分、オーバーヘッドが嵩む。
現代のハードウェア環境においては、多くの場合そのオーバーヘッドは問題にならないというだけ。
0059名前は開発中のものです。
垢版 |
2015/01/18(日) 18:04:36.15ID:WcZ4waH9
手動解放は、車で例えると
タイム短縮のためにわずかなエンジンパワーのロスも許されないプロレーサーや、
オートマはエンジンパワーが完全には伝わらないのでクソ
俺は完璧なギアチェンジ操作ができる(自称含む)のでマニュアルで通すんだって人向け

解放忘れてメモリリーク他の面倒な問題を起こしても泣かないなら全部手動で
それが嫌なら我々が作った処理班にぜひおまかせ下さい!
スマートポインタってそういうもの
shared_ptrやweak_ptr自体の書き忘れや循環参照などは防げないけど

>>54
ga
0061名前は開発中のものです。
垢版 |
2015/01/18(日) 20:33:19.91ID:E2jV+3+x
おじさんは2万円前後の安もんの8インチタブ(CPU:Z3735G,RAM:1GB)を
即売会場でデモ機として使う都合で、バッテリー駆動でできるだけ長時間
ヌルヌル動かすために貧乏根性丸出しな組み方しちゃったけど、そういう
変な目的が無ければ自分の好きなようにやればいいと思うんだがな

○○のやり方が大丈夫なのか不安とか意味わかんねぇな。周りキョロって
ねぇで自分で決めた基準動作環境で自分でテストすればいいじゃんと
0062名前は開発中のものです。
垢版 |
2015/01/19(月) 05:04:21.05ID:xLKHfZFD
最近は底の方でも1GB
これなら多少雑に使ってもリークさえさせなければ問題ないな

なお512MB以下は爆死する模様
そんな化石がまだあるのかどうかは知らないが
0064名前は開発中のものです。
垢版 |
2015/01/19(月) 19:59:00.97ID:21R5SuXr
ふははは、貴様のセルを使うかどうかもわからない画像や音楽データで埋めてくれる!

読み込み時間といい、占有領域といい、ロースペにはある種のテロだな…
0065名前は開発中のものです。
垢版 |
2015/01/19(月) 23:27:21.97ID:U55o2asL
音楽やムービーのストリーム再生以外で、オンメモリでないゲームが作れるって凄いな。
そこまでリソースが用意できないよ。
0066名前は開発中のものです。
垢版 |
2015/01/20(火) 00:33:47.17ID:KjcEBQWF
メモリ次第ではあるけど
常駐とブラウザ合わせたら警告食らうくらいのゲームならあるんじゃないの
0067名前は開発中のものです。
垢版 |
2015/01/20(火) 01:29:50.61ID:VPdLWQW0
>>65
数年前、(旧)Android Marketに個人でゲーム出した時は機種依存の
バッドノウハウの量に本気で吐き気がしたけど、あれに比べたら
PCゲーは作りやすい思たよ。メモリフットプリント小さくするだけで
おkなら大したこたないと思える程にAndroidスマホはカオス

(だった。今はどうなってるのか知りません)
0068名前は開発中のものです。
垢版 |
2015/01/20(火) 10:35:24.77ID:B8GspOPa
1080pの画像を一度に100枚読み込めばロード地獄間違いなし
1920*1080*4 /1024/1024 *100 = 791MBぐらい
スマホだとアプリが強制終了するかも

グラフィックの豪華なアプリのModern Combat 5でもメモリは512MBぐらいまでしか使わない
0070名前は開発中のものです。
垢版 |
2015/01/21(水) 16:36:27.53ID:OnV6g/fE
そういや、Appmethodってどうよ?ちょっと気になってるんだが使ってる奴居る?
0071名前は開発中のものです。
垢版 |
2015/01/21(水) 22:17:40.75ID:1wPj2se9
タスクシステムで組む時、
・タスクリスト2つ用意して移動と描画分ける
・タスクリスト1つに移動も描画も入れる

どっちがいいのでしょうか?個人的には前者にしたいけど・・・
0072名前は開発中のものです。
垢版 |
2015/01/21(水) 22:19:47.80ID:CqaY5thk
前者にしたいのにできない要因を考えるのがよい
「みんながどうやってるか気になる」ってだけなら気にする必要はない
0073名前は開発中のものです。
垢版 |
2015/01/22(木) 00:52:45.85ID:fqCV4qez
タスクシステムはバグった時に大変そうな印象
そりゃあ、バグれば大抵それなりに大変な目に遭うんだけどさ
0075名前は開発中のものです。
垢版 |
2015/01/22(木) 07:47:04.58ID:niGIPEW3
昔タスクシステムスレあったけど相手の主張への罵詈雑言だらけでいつの間にか消えたなw
0077名前は開発中のものです。
垢版 |
2015/01/22(木) 16:50:32.20ID:MBqyL5iH
>>75
「タスクシステム」っていう名前が何を指すのかがすごく曖昧なのに
それを無視して自分の中の定義を押しつけ合う奴らの隔離スレだったし
消えて当然とも言える
0078名前は開発中のものです。
垢版 |
2015/01/22(木) 17:35:35.81ID:niGIPEW3
まあ個人でゲーム作る分にはどう作ろうが60FPS出てちゃんと動けば勝ちだからなw
会社とかで厳密にタスク管理されてるなら覚えなきゃならんのだろうけど。
0081名前は開発中のものです。
垢版 |
2015/01/22(木) 21:13:16.12ID:ZmYkrSmS
>>79
OS上で動くアプリならそうかもな
OS込みとしてならタスクは最適解だろうし、組み込み系で使われてるOSは名前が違うだけて同じ系統のものだよ
現在マイノリティなのは認めるけどな
0087名前は開発中のものです。
垢版 |
2015/01/23(金) 01:07:05.72ID:JihQada2
はじめからほとんど完成しているシステムに、
そのシステムの中枢部に触れないように要素を追加できるような実装を目指すなら有効
つまり、OSやエンジン作るならこれがいいかもしれない
が、そうでなければバグが修正困難だったり無駄な手続きが多いクソ
なんだ実行順って 必要になった時にやらせろオラァァ
0088名前は開発中のものです。
垢版 |
2015/01/23(金) 10:32:52.67ID:ZhBY7M7O
最近はどんな言語でもクロージャやジェネレータ (yield) をサポートするようになってきた。
タスクシステムとは呼ばれないけど、同じ目的には使えるんじゃないの?

描画に関しては、オブジェクトが自前で描画命令を発行するのか、
オブジェクトとは別にスプライトのような構造を用意して、描画はそちらに任せるかの差が大きい気がする。
巷のゲーム向けのフレームワークを見るに、後者のほうが可搬性は優れているんじゃないか?
0089名前は開発中のものです。
垢版 |
2015/01/23(金) 10:52:38.49ID:ZpK8PG+c
オブジェクトが自前で描画って構造はゲームではあり得なくない?
ポーズ作るだけで一苦労じゃん
0090名前は開発中のものです。
垢版 |
2015/01/23(金) 16:09:48.65ID:gTjNx7m+
ネットに転がってるC++のゲームソースしっかりしたのはほとんどタスクシステムっぽいのばっかだから
そういうソースじゃないと読む気がしなくなったっていう(´・ω・`)
0091名前は開発中のものです。
垢版 |
2015/01/23(金) 16:29:50.12ID:Qg1gWf/N
単一のタスクだけで動かすと実によく機能するのに、
タスク同士を連動させようとすると途端にギクシャクする辺りが
実にぼっちらしくてよいが、
プログラムにそんなのやらせてどうするんだ
0092名前は開発中のものです。
垢版 |
2015/01/24(土) 11:10:33.23ID:vN0iK6Pw
>>89
cocos2dとかそんな感じじゃね
0093名前は開発中のものです。
垢版 |
2015/01/24(土) 13:26:12.19ID:AuIVSu3m
C++11のstd::asyncってのが便利そうだから使ってみた。
確かに簡単に別スレッドに非同期に仕事をさせられる。
だが、どうも処理結果を受け取ってスレッドを終了するのに膨大なコスト(500msくらい)がかかるようだ。

代わりに、std::threadで常時スレッドを走らせておいて、std::mutexで同期を取りながら
データのやり取りをするようにしたらとてもスムーズに動くようになった。
しかし、std::asyncを使った場合と比べて、煩雑な記述が避けられない。

スレッド終了のコスト高杉。
0096名前は開発中のものです。
垢版 |
2015/01/24(土) 20:09:43.23ID:Js5qaCaY
C11使っとけ
009793
垢版 |
2015/01/24(土) 21:51:42.90ID:AuIVSu3m
>>94
サンクス。
調べてみる。

>>95
そうだよ。
0098名前は開発中のものです。
垢版 |
2015/01/24(土) 22:06:18.60ID:SL/s5qpu
1タスクごとにスレッドそのものを開始終了するとコストが高いので
想定するCPUのコア数だけワーカースレッドを用意して
それらにタスクを投げるのが定石じゃないかな。

・キューにタスクがない時はスレッド待機。
・タスクをキューに投げたら全ての待機スレッドを励起。
・いずれかのスレッドがキュー上のタスクを取得して実行、他は再び待機。
・タスクが完了してもスレッド完了せず、次のタスクを確認する。

デザインパターンにあったはず。
0101名前は開発中のものです。
垢版 |
2015/01/24(土) 22:31:57.37ID:AuIVSu3m
>>98
勉強になった。
やっぱそういうやり方が常套なのね。
そういや、マルチスレッドのデザインパターンってのがあるって聞いたことがあるな。
調べてみるわ。
0103名前は開発中のものです。
垢版 |
2015/01/25(日) 21:27:30.87ID:16a+UuyX
シーンって「タイトル画面とキャラ選択画面とゲームのメインループその他」の意?
それとも「メインループ中の各シーン」のことかな。

>>101
標準テンプレートとか使える程度に技術のある人なら余裕で実装できるよ。
0105名前は開発中のものです。
垢版 |
2015/01/25(日) 23:53:06.16ID:5N9PH1z0
>>98
ワーカースレッドが、キューに何もないことを確認して、
眠ろうとしているところに、
キューにタスクが入って、ワーカーに起きるよう指示を出す。
ワーカースレッドはその後寝てしまう。悪いことに全ワーカーが同じ状態。
次のキュー挿入で起きるけど。

なんかこんなこと考えると、こんがらがってきます。
0106名前は開発中のものです。
垢版 |
2015/01/26(月) 15:41:45.19ID:VjIajR+F
>>105
キュー操作そのものにミューテックスで排他かけるから
「寝る」一連の動作と「起こす」一連の動作は複数のスレッドで並行に起こらない。

「寝て大丈夫かキューを確認したらタスクがあるから寝ずに実行」か
「完全に寝る→即座に次のタスクがキューにある状況で起こされる」のどちらか。

.NETだとWait()とPulseAll()、Javaならwait()とnotifyAll()で
簡単に実装できるけど、Win32APIだと少し面倒だった。

まずは上記2つのどちらかを調べて流れを掴んで、
それをC/C++用のAPIで書き表すことを考えてはどうかな。
0109名前は開発中のものです。
垢版 |
2015/01/26(月) 17:06:44.50ID:plLWVR07
/2の除算
0114名前は開発中のものです。
垢版 |
2015/01/26(月) 21:04:49.69ID:J7eP3rC5
>>106
Javaや.NETはスレッド簡単に書けるんか。
C++11や今後の新しいC++規格で同じようなライブラリ入れてくんないかな?
0115名前は開発中のものです。
垢版 |
2015/01/26(月) 21:13:32.54ID:nJhOAZkT
>>114
すでに >>107 が答えてくれてる。
std::thread, mutex, shared_mutex(=RWLock), condition_variable, async/future
C++11, 14 にて、この手の処理のための部品は揃ったと思われる。
あくまで部品なので、タスクキューなんかは自分で多少は書くことになるとは思うが。
0116名前は開発中のものです。
垢版 |
2015/01/26(月) 21:19:26.58ID:thceLWWx
#ifndef〜#endifの組み合わせと#pragma onceの違いがよく分からない
前者は明確なインクルードガードだけど、後者は?
0119名前は開発中のものです。
垢版 |
2015/01/26(月) 21:57:36.77ID:MFO6WL+3
ついでに言うと#pragma onceは非標準

だけど主要コンパイラで実装してないものがないほぼデファクトスタンダード状態
0120名前は開発中のものです。
垢版 |
2015/01/26(月) 22:06:02.39ID:J7eP3rC5
>>115
ありがとう!
C++的にはちょうど良い落としどころっぽいね。
使い易くてハイパフォーマンスなスレッド記述をマスターしてやるぜ!
0121名前は開発中のものです。
垢版 |
2015/01/26(月) 23:14:24.34ID:thceLWWx
なるほど、むしろ#pragma onceがインクルードガード専用なんだな

>>119
マジで!?
VSで最初から書き込まれているプリプロセッサが非標準なのかよ
0124名前は開発中のものです。
垢版 |
2015/01/27(火) 09:41:49.82ID:kpJLUqPw
>>123
リンク先見た?
俺もVCだけの互換の無い機能と思っていたが、互換してないのはIBMの一種(世の中のコンパイラを網羅してるわけではないけど)だけだったよ
標準仕様が〜とかよりも便利なモノは取り込まれてくんだと思った
0133名前は開発中のものです。
垢版 |
2015/01/28(水) 16:49:43.54ID:/ZB0USJc
土台のしっかりしている家は頑丈だからな
しかし最近、犬小屋程度の建物にビルのような土台を作ってどうすんだ?
と思うようにもなってきた
0135名前は開発中のものです。
垢版 |
2015/01/28(水) 19:20:53.89ID:nasZb7nZ
最近ホント、この板でこじつけで日本の風習をバカにする奴が増えたな。

レガシで安定したものはラップして使い回すのが鉄板なのに、
横からうまく吹き込んで全部潰して一から作り直そうとさせる。
それだけ、相手の発展を遅らせることができる。
0136名前は開発中のものです。
垢版 |
2015/01/28(水) 19:28:52.88ID:tBFCEOiA
古いからといってバグが無いとは限らないけどな。
特に昔のコードは脆弱性対策が練られてない事が多い
0137名前は開発中のものです。
垢版 |
2015/01/28(水) 20:15:35.81ID:RgnZVm9M
FirefoxはJavaScriptの速度がChromeを超えたとか言われている割にもっさりしている感が否めない
後発のChromeの方が速い
0138名前は開発中のものです。
垢版 |
2015/01/28(水) 20:18:09.19ID:t3hT+Wje
>>137
感覚でなく実測で。
0139名前は開発中のものです。
垢版 |
2015/01/28(水) 20:33:36.08ID:RgnZVm9M
ブラウザの使用感はスクリプトの実行速度だけで決まるわけじゃないからな
読み込み時間の短縮も大事
v8の方がバイトコードを通さず直接マシン語を生成するから読み込み速いんじゃないか

全体の速度はTom's Hardwareが調べていたが
スコアを合計したら何かFirefoxが速いという結論になっているのが理解できなかった
どんな計算をしたのやら
http://www.tomshardware.com/reviews/chrome-27-firefox-21-opera-next,3534.html

古い記事だけど
0140名前は開発中のものです。
垢版 |
2015/01/28(水) 20:35:32.45ID:GO27aJnJ
関係ないけど体感速度を速く感じさせるって大事な事だね

Chromeはメモリの使い方や優先順位の割り振りが上手いんじゃないかと
0142名前は開発中のものです。
垢版 |
2015/01/28(水) 23:41:47.26ID:gWUJCc9x
わずかな妥協さえ許さずチューニングに血道を上げ
DNSの応答時間すら惜しむ
そりゃ比べる相手が悪すぎる
0144名前は開発中のものです。
垢版 |
2015/01/29(木) 08:56:31.18ID:KH1X7ZAq
メモリが多めのマシンだとChromeが最速だろうね
逆にChromeでメモリ不足に陥るマシンなら最速はFirefoxセーフモードかと
0145名前は開発中のものです。
垢版 |
2015/01/29(木) 09:36:37.60ID:6+mjNHtZ
FirefoxはブックマークとかタブとかRSSあたりが使いやすい
あとはDuckDuckGoに対応してたりとか
まあ好きな方使えばいいんじゃない?
0147名前は開発中のものです。
垢版 |
2015/01/29(木) 11:20:16.55ID:XKuc65oW
JavaScriptとブラウザの速度が一緒くたにしてる。
ChromeはJavaScript不使用であってもメモリ食う。
ChromeにIE,FirefoxのJavaScriptエンジン搭載したらメモリ消費が減ると思えん。
0148名前は開発中のものです。
垢版 |
2015/01/29(木) 13:39:58.83ID:c6VwBThb
ブラウザ全体が確保したメモリを使いまわしているのだろう

新しいのページ等はHTML5で書かれているので実質JavaScriptを完全にオフにはできない。

v8もメモリが十分にある環境だとメモリ使用量が200MBを超えたぐらいにならないとGCされない。
0152名前は開発中のものです。
垢版 |
2015/01/30(金) 17:01:12.20ID:1O7TniCL
「国産フリーゲームの舞台をPCスタンドアロン(主にC++)から
ブラウザゲーム(クラウド、HTML5)やスマートフォンアプリ(非C++多)に移行」
させようという思惑を、最近この板でひしひしと感じる。
0155名前は開発中のものです。
垢版 |
2015/01/30(金) 18:28:39.45ID:cceEvulu
一般企業 : C++って難しいんでしょ?
奴隷商人 : 新しいxx言語やツールを使えば簡単ですよ
奴隷商人 : C++なんか使う必要ありません
奴隷商人 : 素人でもちょっと勉強すれば使えますよ
奴隷商人 : わが社では優秀なxx言語エンジニアを多く確保しています
奴隷商人 : 非常にリーズナブルな値段で派遣できますよ
一般企業 : じゃあxx言語とツールで開発するからnn人派遣して
奴隷商人 : まいどw

奴隷商人 : さてと在庫減ったし新しいボンクラ雇うかな、安い金でw
奴隷商人 : Appmethod? ボンクラがC++使えるわけねーだろw
奴隷商人 : うちは安さが売りなの

C++プログラマ : 仕事ないすか?
一般企業 : うちはxx言語とツールで開発するからC++いらないよ
一般企業 : C++高くつくし

ユーザ : みためはそれなりだけど、手抜き感ありありのクソゲー増えたな
ユーザ : 今売れてる○○なんか△△をパクッて版権キャラゲーにしただけだし
ユーザ : そのくせバグが多くて元の△△より面白くない
0160名前は開発中のものです。
垢版 |
2015/01/30(金) 21:50:27.80ID:xDmuU9zY
民度が高過ぎる(笑)。

自分は案件減や開発コスト軽減からC#やPHPに日和ってしまってるけど
やっぱりちゃんとC++で「アセンブラレベルで何が起こってるか」意識した
プログラムしないとダメになっちゃうかもね。
0162名前は開発中のものです。
垢版 |
2015/01/30(金) 23:29:11.58ID:lEERAgAH
正直C++もC#も言語使用は簡単でしょ?
問題はオブジェクト指向とかアルゴリズムじゃないの?
0163名前は開発中のものです。
垢版 |
2015/01/30(金) 23:48:33.71ID:mPLLQnOv
ラインパーティクルみたいな細長くて透明な部分があるテクスチャが
交差するときって
どうすればいいですか?
というか、Zソートってテクスチャが貼られた面の重心を使ってやるんですか?
0164名前は開発中のものです。
垢版 |
2015/01/31(土) 00:04:49.27ID:XljQIOh1
メモリを意識して書かないといけないのはC/C++くらいでないの
メモリアドレス扱う言語って他になんかある?
0165名前は開発中のものです。
垢版 |
2015/01/31(土) 00:15:01.69ID:vx9WzsVv
>>162
C++は根底にCとしての組み込み系やら、ドライバとかの知識が有るかどうかでかなり変わると思う
まーもうニッチな世界になってしまってるけど、ゲームに絞るとコンシューマとかで何かを極めようとしたときに需要は有るかと
0166名前は開発中のものです。
垢版 |
2015/01/31(土) 00:23:27.83ID:08SnV/iE
ZソートってZバッファのかわりに遠い方から描くって意味?
厳密にやるなら、ポリゴンを無限平面とした場合に交差する他のポリゴンを
交差する線で分割する処理をすべてのポリゴンにして
って文章で書いてもわかりにくいな。
分割のあとは2分木のクイックソートで、あるポリゴンの面から見て
別の比較するポリゴンが手前側か向こう側でソート判定する。

多分それなりに有名な方法と思うから検索すれば見つかると思うけど
手法の名前は知らない。
あと、赤黒木でもできるのかしらない。
0167名前は開発中のものです。
垢版 |
2015/01/31(土) 01:24:39.63ID:vx9WzsVv
プレステやらサターンの時のZソートなら、重心か頂点の順番忘れたが二頂点のZ値を加算したものでソートしてたよ
でも組み込み方としては実際にソートではなく、リスト構造で管理してたと思う
だから解像度が低いとバキバキになってた
wソートってのも出たけど、流行る前にZバッファでパフォーマンス出るようになって無くなったと思う
0169名前は開発中のものです。
垢版 |
2015/01/31(土) 02:31:32.35ID:MYAY0/XK
>>161
じつはC#でXNAやってたんよ。

C++に戻るということは、ここ数年で作った自分ライブラリと
そこから呼び出しているXNAライブラリをDirectXに移植することを意味する。
けっこう大変だったり。

あとMonoGameが実用に足りるようになったらC#のままの方が楽というのも
正直、ある。C++でクロスプラットフォームの3Dライブラリがあれば
別なんだけど…。
0170166
垢版 |
2015/01/31(土) 02:34:23.55ID:08SnV/iE
> 手法の名前は知らない。
多分、BSPツリー法だと思う。wikipediaにバイナリ空間分割でのってる。

wソートってどんなのかちょっと興味あるけど、説明されても難いと読まないだろうなw
0172名前は開発中のものです。
垢版 |
2015/01/31(土) 08:12:54.84ID:e0isyZ8t
C#ってある意味理想的な言語だよね

・オブジェクトはすべて参照渡し
・値は参照渡しは出来るが参照で持つことはできない
・共有したい変数はクラス(構造体)にする
0174名前は開発中のものです。
垢版 |
2015/01/31(土) 12:13:09.01ID:H+AZbHjO
>>171
おお、川瀬さんのページか。
清水さんと交流あったんだな。

>>172
>・共有したい変数はクラス(構造体)にする
C#がやたらクラスだらけなのはそういうことだったのか・・・
0175名前は開発中のものです。
垢版 |
2015/01/31(土) 12:39:15.50ID:jayN4xwq
C#って、構造体の参照渡しで「メソッド側で書き換え不可能」指定ができないのが難。

ref:入出力を兼ねる参照渡し
out:出力のみの参照渡し(意外と便利)

C++のconst 型 *やconst 型 &がないと言えばいいか。
0176名前は開発中のものです。
垢版 |
2015/01/31(土) 12:44:18.35ID:dP8uz4HA
Wソートってもしかしてローカルな話だったのか?
Zソートはリストだって話を書いたけど、そのリストを更にソートすることで込み合ってる部分を細かく前後入れ換える事で若干バリバリを押さえる感じだった
当時は描画よりも演算の方が圧倒的に早かったのとダブルバッファやトリプルバッファでの空き時間を有効にって感じだったよ
でも自分では研究以外では使ってない
理由は当時は整数演算だったから、ほとんど効果が感じられなかったから
0178名前は開発中のものです。
垢版 |
2015/01/31(土) 12:51:54.53ID:vx9WzsVv
>>177
書き換えちゃダメって言っても書き換える人が居るから言ってるんだと思うよ
全員自分なら楽な話だけどさ
0179名前は開発中のものです。
垢版 |
2015/01/31(土) 12:55:33.58ID:jayN4xwq
あ、連投ごめん。

上のリンク先とMSの解説で、ZバッファとWバッファの意味が逆になってる気がする。
https://msdn.microsoft.com/ja-jp/library/cc324546.aspx

リンク先は「割るほうがWバッファ、割らないほうがZバッファ」、
MSだと「割るほうがZバッファ、割らないほうがWバッファ」に読める。
用語の混乱があるのか、自分が何か勘違いしてるのか。


で、Wソートって何?
昔のPSみたくバッファリングしないでポリゴン単位でソートするけど、Wでやるってことかね。
0180名前は開発中のものです。
垢版 |
2015/01/31(土) 13:05:31.10ID:+0dbs7Ey
const必要になるのはライブラリ作成とかチーム開発とかだろうし
ひとりでシコシコ作ってる分には別に不便もないよな
コーディングルールは自分ルールだし
0181名前は開発中のものです。
垢版 |
2015/01/31(土) 13:12:28.57ID:H+AZbHjO
自分も、自分用プログラムばっかり作ってて、const利用はハードコーディングな定数以外は0。
自分以外を考慮に入れると、たしかにconst修飾子は重要になると思うけど、
ある程度小規模なチームなら、ルールで十分賄えると思う。
0182名前は開発中のものです。
垢版 |
2015/01/31(土) 14:06:11.93ID:9fyUH/Hj
struct, classのコピーを避けるために参照・ポインタを多用してると確実にミス出るし
constは値を中身を書き換えない保障でもあるから、内部処理を忘れたときとかに役立つ
0183名前は開発中のものです。
垢版 |
2015/01/31(土) 14:13:16.03ID:ehZNZ4NM
オブジェクトの参照を渡した時に中身を書き換えてくれるなよ、という要求はある
それをC++のようにconstで表現するのがいいかどうか
C#ではイラネってなったし要らないと思う
0184名前は開発中のものです。
垢版 |
2015/01/31(土) 14:18:46.16ID:4UKOkNc6
ところで、const 同士の operater== は operater==(const) const; でいいのか?
最後の const で数時間悩んだんだが。ゲーム以外のところで…
0188名前は開発中のものです。
垢版 |
2015/01/31(土) 19:40:50.51ID:LvLYpCGK
単に規約の問題だけじゃなくて。
constというかC#のreadonlyは構造体にも指定できるんだけど、
それを先述のref指定でメソッドに渡せないんだよ。

既存のライブラリでref指定(参照渡し)になっているものが
少なからずある。まあ別の変数に代入してから値渡しできるんだけど、
微妙にパフォーマンス落ちるでしょう。
0189名前は開発中のものです。
垢版 |
2015/01/31(土) 22:35:54.52ID:g0XZBTK4
const無しをデフォルトにしてしまうと,引数先で書き換えるのかどうか,引数からわからなくなるから
基本はconst参照だよね
0193名前は開発中のものです。
垢版 |
2015/02/01(日) 09:04:46.33ID:4SXpmV3a
>>188
たまにそういうシチュエーションがあるけど、それを解決するために言語使用に手を入れるのは言語道断
0194名前は開発中のものです。
垢版 |
2015/02/01(日) 16:13:17.17ID:7SDWQ5Km
>>191
intとかならそうなんじゃないかな。
でもconstで定義されるのがクラスインスタンスの場合、
実行時に生成されるのでは(恐らくクラスに最初にアクセスした時)。

>>192
>#defineした変数
#defineはプリプロセッサで置換されるマクロに過ぎないよ。
0196名前は開発中のものです。
垢版 |
2015/02/01(日) 16:38:49.06ID:gTwIs5aq
template初めて使ったんだけど引数側に同じtemplate型があれば、
返り値をわざわざ指定しなくてもいいの?

↓こんなん
template<typename T>
T zeroCheckException(T t){
if(t == 0)throw;
return t;
}
0197名前は開発中のものです。
垢版 |
2015/02/01(日) 16:44:02.52ID:wN5YVAib
>>196
2つあるTはどちらも同じ型なんだから、むしろ指定できたらダメだろ
引数と同じ型を返す関数、という意味になっている

引数から推測できない型を返したいなら、typename を2回書けばいい
template < typename R, typename T > R convertTo(T t) { return ... }
string r = convertTo<string>(123);
0198名前は開発中のものです。
垢版 |
2015/02/01(日) 16:59:29.96ID:7TQeJfVA
>>196
>>返り値をわざわざ指定しなくてもいいの?
多分質問の意味からだと、返り値を引数と同じ型(T)で返したいなら返り値(の型)の宣言は必要
その部分はtemplateとは関係のない関数宣言の話で、template内はTと言う型が使えるようになっているだけだと思って関数を宣言すればOK
だから、その関数が返り値を返す必要がないならvoid、intを返したいならintになる
0204名前は開発中のものです。
垢版 |
2015/02/01(日) 19:36:58.64ID:mV3TuxIT
>>200
ideoneに張る意味ねえな。
最低限実行出来るようにしてから張れ。
その過程でここで質問するまでもなく解決することもある。
0205名前は開発中のものです。
垢版 |
2015/02/01(日) 19:53:30.95ID:I530QHNw
>>200
11行目のgetPositionをnextPosにしても駄目?
評価順は正しいとは思うけど最適化とかキャッシュとかで狂ってるのかな?と思いました
しかし、難読化してるようなソースだな…
0206名前は開発中のものです。
垢版 |
2015/02/01(日) 20:01:18.83ID:mV3TuxIT
>>200
ヒント

unitListが標準コンテナだとするとsize()の返す型はsize_t
多くの処理系でsize_tは符号無し
1-2uの結果は?
0212名前は開発中のものです。
垢版 |
2015/02/01(日) 22:52:09.95ID:UZAipjiA
自分はtypename派だな。
classに限定しない使い方が多いからというのがあるけどね。
ま、組み込み型も一種のクラスと見做せないことはないし、文字数少ない分、classのほうがいいかもしんないけど。
0214名前は開発中のものです。
垢版 |
2015/02/02(月) 01:35:39.62ID:g0RkpJRz
て、テンプレ使えれば前以上に楽ができるかもしんないし!
なお移植性が壊滅的に下がる模様
0215名前は開発中のものです。
垢版 |
2015/02/02(月) 04:07:49.86ID:lvNA0Ulc
テンプレート使って移植性が下がるってここの住民は一体いつの時代に生きてるんだろうか
0218名前は開発中のものです。
垢版 |
2015/02/02(月) 09:50:21.86ID:pbbvOQ2U
VSのバージョン上がるたびにどこかしらテンプレートで書いたところの書き直しが待ってるんだよな
MPLに手を出すと他の処理系でまた違う方言で困るし
0219名前は開発中のものです。
垢版 |
2015/02/02(月) 10:05:53.54ID:ZKghX0zO
バージョン上がるたびに、ってほどテンプレートに手入ってたっけ?
むしろ、いままでコンパイルを通すためにいちいち">"と">"の間にスペースを入れていたのが
入れる必要なくなったとか、そういう方面の変更しか知らないんだけど
0220名前は開発中のものです。
垢版 |
2015/02/02(月) 10:33:54.29ID:TF5MhFQ8
だいぶこなれてきたから、できないことができるようにはなっても、逆は無いと思うぞ
確かにC++03時代は typename が急に必要にされてエラーになるのはあったけど

気になるなら互換性を吸収するラッパーとしてboostを使うのも手だな
0221名前は開発中のものです。
垢版 |
2015/02/02(月) 11:10:10.63ID:pbbvOQ2U
最近変えたところだと
enable_ifが無い頃の代替としての部分特殊化のコードが
2012では通ってたのに2013でC2753で通らなくなって
代わりにenable_if使えるからそれになって
2015でconstexprあるからそこはテンプレート要らないだろうなて状態だわ

なんでエラーなのか追いかけるの面倒だから新機能で凌いでる
boostのを最初から使えばいいんだけどライブラリのバージョンアップが面倒でね
0224名前は開発中のものです。
垢版 |
2015/02/02(月) 13:21:17.62ID:ZKghX0zO
SFINAE周りは確かに、C++11でようやく統一仕様が策定されて多少手を付けやすくなった印象がある

>>223
テンプレートを使ってるライブラリを使うのと
テンプレートなクラスや関数を自分で作るのとは
結構隔たりがある気がする…
0225名前は開発中のものです。
垢版 |
2015/02/02(月) 13:54:32.94ID:fu9cgs9q
スタンダードテンプレートライブラリ(の構想・実装)が先にあってC++で実装するためにテンプレートが導入された。テンプレートはSTL実装のための道具といえる。


Standard Template Library - Wikipedia

STLのアーキテクチャの多くはアレクサンドル・ステパノフという一人の人物の手によって作られた。
1979年に彼はジェネリックプログラミングの初期アイデアを練り始め、そしてソフトウェア開発に革命をもたらす可能性を探究し始めた。

当時はジェネリックプログラミングを実際にサポートしているプログラミング言語がまだなかった。
それをサポートする最初のメジャーな言語はジェネリックユニットの機能があるAdaであった。

1987年までにステパノフとマッサーはジェネリックプログラミングの研究成果としてAdaのリスト処理ライブラリを開発してリリースしていた。
C++は当時まだ言語として未成熟ではあったものの(テンプレートはまだなく後から実装された)、より広く普及してジェネリックプログラミングの良好なサポートが提供される可能性が高いと考えられた。
0226名前は開発中のものです。
垢版 |
2015/02/02(月) 14:52:33.01ID:bbrlQEEY
で、結局>>200はuintの減算でオーバーフローしてるってことでいいのか?
int - uintがintにキャストされれば大丈夫そうな気がするけど
0229名前は開発中のものです。
垢版 |
2015/02/02(月) 17:14:57.39ID:ZKghX0zO
直接的な解決策や原因は分からないけど、俺なら
・「unitList.size()*140」を「unitList.size()*140.0f」にして直るか確認する
・set/getPositionXを通さなかったらどうなるか確認する(当該メンバ関数の実装が自明である場合を除く)
・コンパイラの警告設定を最強にしてみて、何かメッセージが出るか確認する
あたりをやってみると思う
0230名前は開発中のものです。
垢版 |
2015/02/02(月) 18:13:33.41ID:NKDBUGQv
で、ゲーム制作だと意識して。
開発環境を開発中やデバッグ中に更新するとか無いだろ
移植で困ることは判る
0231名前は開発中のものです。
垢版 |
2015/02/02(月) 18:39:29.29ID:u58PP6hj
新しい開発環境に新規実装された要素どうしても使いたかったんだ…と推測(適当)

CやC++とはあまり関係ないけど、
一部の開発環境では、関数や変数を書いた行にコメントしとけば
カーソル合わせるだけでコメントが出るのでメモ代わりにできるな
なおソースがコメントだらけになり、よそに貼った時に失笑物のソースになる模様
0233名前は開発中のものです。
垢版 |
2015/02/02(月) 20:49:55.23ID:0Y8pqiU9
色々試してみたけど、オーバーフローした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;
}
0236名前は開発中のものです。
垢版 |
2015/02/02(月) 21:39:18.84ID:lvNA0Ulc
>>235
違う
intとunsigned intの演算結果はunsigned int
もちろんunsigned intはマイナスを表現出来ない、なので0-1uはUINT_MAXになる。(符号無し整数は桁あふれしても未定義動作ではない)
でも符号あり整数の桁あふれは未定義動作なのでUINT_MAXをintへキャストするのは未定義動作
まぁ大抵の処理系では動くだろうけど。
0241名前は開発中のものです。
垢版 |
2015/02/03(火) 02:08:59.87ID:YnXnr0TR
size_tはsizeofで測ったデータの長さを受け取る物だからよ
データの長さに0未満はあり得ないから定義できないようにしてるんだろう
0242名前は開発中のものです。
垢版 |
2015/02/03(火) 04:00:41.53ID:WscpFvcA
質問です。
抽象クラス(親クラスとする)を継承した派生クラス(子クラスとする)を
親クラスの型のメンバー変数に子クラス型でnew()し、抽象化して保持してます。

このメンバーをdelete してすぐNULLを代入しても、参照が残ってるみたいで
エラーでる場合があります。

抽象化しているオブジェクトの削除の、お作法みたいなものってありますでしょうか。
0245名前は開発中のものです。
垢版 |
2015/02/03(火) 13:03:57.60ID:vrraL4+G
スレはあってるけど板が違う的な。
まあ、ゲーム関係かどうかの境目って結構曖昧だけれども。
0247名前は開発中のものです。
垢版 |
2015/02/05(木) 07:36:31.37ID:gQYa1HB0
開発期間が長すぎて、開発環境が何度も変わるのってどう思いますか?
開発環境を固定する?それともコードを書き直して対応する?
0248名前は開発中のものです。
垢版 |
2015/02/05(木) 08:11:52.44ID:6fCmneha
boost辺りならまだしも、言語自体のバージョンが上がるまでって
一体どんだけ開発期間が長いか間が悪いんだよ…

どうしても使いたい追加要素でもなければ変えない トラブルの素
0249名前は開発中のものです。
垢版 |
2015/02/05(木) 09:22:24.85ID:JByM0e2E
CSのSDKとかじゃないの?
開発序盤なら対応、終わりが見えてたらそのままってのが普通だと思うけど
0251名前は開発中のものです。
垢版 |
2015/02/05(木) 12:20:47.44ID:qWgtWrzH
vsの2005から2012に上げたら、Releaseでは動くけどdebugでは動かなくなった
自前で作ってた文字列クラスが弾かれたから、現在、std::wstringに置き換え中
0254名前は開発中のものです。
垢版 |
2015/02/05(木) 19:45:56.22ID:ckteJ+s1
プロの人も来てるのかも知れないけど、同人ならぶっちゃけ
DirectX9辺りの技術基盤があれば十分じゃないの。

新技術に取り組むこと自体が目的化して、ゲームを完成させる方が
疎かになってしまうって、何かありがちな気がする。
0258名前は開発中のものです。
垢版 |
2015/02/06(金) 09:00:23.95ID:12AknHRs
>>254
DirectXがそもそも出来ない人が話に混じってるだけだから気にしない方が
DXライブラリ程度でいいんじゃないかな?同人なら
自作ライブラリ作れる人ですら少ないよ
0260名前は開発中のものです。
垢版 |
2015/02/06(金) 14:58:45.96ID:1vhL8u+G
もとの環境で大体完成していたのに、
無理やり次世代機用に作り直そうとしたがうまくいかず、
そのまま爆死した家庭用機向けソフトのプロジェクトなら知ってる
0261名前は開発中のものです。
垢版 |
2015/02/06(金) 17:34:24.75ID:12AknHRs
>>260
RomからCD-ROMへの移植は苦労が多かった
ROMの容量が4Mバイト超えてるとRAMご足りなくなって、動的に入れ換えしようとするとリソースのマネージメントが大変だったから
0262名前は開発中のものです。
垢版 |
2015/02/06(金) 22:49:06.68ID:qIQhbqny
しかもそれだけ苦労したにもかかわらず、ロードが遅いと文句言われたに違いない…。
0264名前は開発中のものです。
垢版 |
2015/02/07(土) 13:42:24.95ID:buz4BGGO
>>251
置き換えたらさらに別の場所が動かなかったから2013へと移行したりw
いや、ネットでは動くコードと書かれているんだよ、2013からは動くと
うちのPCで2013はマトモに動くかな?今インストール中だが
0265名前は開発中のものです。
垢版 |
2015/02/07(土) 14:45:09.34ID:84N483gz
ヘッダで前方宣言したはずのクラスがCandidates are: struct SimpleAudioEngineとエラーを出され
定義でreference to 'SimpleAudioEngine' is ambiguousとエラーを出されます
ヘッダではポインタしか使ってません
思うところがあるとすればSimpleAudioEngineの名前空間をusing namespaceしてるぐらいです
0267名前は開発中のものです。
垢版 |
2015/02/07(土) 16:04:21.06ID:ns5GMSPv
異なる名前空間の中で前方宣言すると別物だとみなされて
あとでusing namespaceすると区別できない
0268名前は開発中のものです。
垢版 |
2015/02/07(土) 19:26:49.25ID:buz4BGGO
開発環境をvs2012からvs2013に変更したのは大当たりだった
エラーの位置は分かりやすくなったし、デバッグ機能は大幅に強化されてるし、
文字列クラス(std::wstring)は扱いやすくなったし、全般的に軽くなった
0270名前は開発中のものです。
垢版 |
2015/02/07(土) 23:10:30.01ID:buz4BGGO
operaterがほとんど対応してなかったんだよ。
+=はあるのに+は無いとか、map<wstring,wstring>で使えないとか。
0271名前は開発中のものです。
垢版 |
2015/02/07(土) 23:18:38.16ID:17zrnW4A
ためしてないがそれはないだろ。
あとSTLやC標準ライブラリ、C++標準ライブラリは備え付けのを必ずしも使う必要がない。
実装は多数ある。
0274名前は開発中のものです。
垢版 |
2015/02/08(日) 00:15:39.03ID:uih1DHvo
UMLのツールを買ってみて、たまたま家のVSで対応してるのが2005だけだったから、
後からインストールし直したんだよな

そっか、VS2005のコードでC++のコードが上書きされてたか
0276名前は開発中のものです。
垢版 |
2015/02/08(日) 01:13:03.19ID:sR/2PkWV
VC6でもoperator+位あったような気もするけど
不便な所は連続したメモリ領域の保証が無いから
実装上はともかく厳密にやろうとするとvectorじゃないとダメな所
0277名前は開発中のものです。
垢版 |
2015/02/08(日) 09:15:03.02ID:dvv+ci6w
連続領域かどうかに関しては
- vector C++03/11 → 連続保証
- string C++03 → 実装依存 / C++11 → 連続保証
らしいぞ。 最近のVCなら大丈夫なんじゃないかな。
0278名前は開発中のものです。
垢版 |
2015/02/08(日) 13:48:18.26ID:vuQZMEzS
連続性が保証されるようになっているとはな
外見は変わらなくても内部は少しづつ変わってるんだな
0283名前は開発中のものです。
垢版 |
2015/02/10(火) 22:00:30.08ID:Lg1oqTmd
ポインタは使い勝手がわかると色々出来るが、無くても問題無くなってきてるからなぁ……
0284名前は開発中のものです。
垢版 |
2015/02/10(火) 23:49:52.25ID:2hfNPcff
それなりのもの作ろうとしたらアロケーター自作になるゲーム制作はポインタ必須なんじゃないの
0285名前は開発中のものです。
垢版 |
2015/02/10(火) 23:59:52.09ID:m/pIKos0
プラットホームによるとは思うが、いまだにカスタムアロケータなんて使うのか?
OSや言語処理系を書いているわけではないだろうに
0287名前は開発中のものです。
垢版 |
2015/02/11(水) 00:26:12.68ID:IKslX+U4
流石にOSデフォルトのアロケーターは使わないんじゃないの
ライブラリのメモリプール使うにしてもポインタは使うだろうし
0288名前は開発中のものです。
垢版 |
2015/02/11(水) 00:38:39.31ID:5bVnp7SH
アロケーターはC言語かSTLのやつのことだろ?
OS自体のメモリ管理はOS自体のソースからビルドしないと変更むりでは。
0291名前は開発中のものです。
垢版 |
2015/02/11(水) 00:52:08.05ID:vZk9YDm5
new deleteの動作なんて実装によるとしか言いようがない
STLのstd::allocator<T>の話なら、単にnewとdeleteを呼び出す実装になってる
0292名前は開発中のものです。
垢版 |
2015/02/11(水) 00:59:11.50ID:5bVnp7SH
mallocやnewを置き換えてもOSの命令を使ってたら
OS自体のメモリ管理の制約は受けるわけで。
OSと完全に独立できるものか?
OSが既に管理してるところを横取りしないとならないが。
0293名前は開発中のものです。
垢版 |
2015/02/11(水) 01:01:23.93ID:WPu+kv42
ちょっと前に「ゲームの場合、出現オブジェクトの個数に上限を設けることが多いから
new deleteせず自分でプールを確保する手もある」という話をしなかったっけ。

とりあえずstd::allocator<T>で書いといて、あとでカスタム化してもよいのでは。
0294名前は開発中のものです。
垢版 |
2015/02/11(水) 01:03:22.28ID:5bVnp7SH
malloc - Wikipedia

OSのカーネルでもアプリケーションと同様にメモリ確保が必要である。
カーネル内にもmalloc相当の関数はあるが、その実装はCライブラリのものとは大きく異なる。
例えば、DMA用のバッファには特別な制限が課せられることがあるし、割り込み処理でメモリを動的に確保したい場合もある。
このため、カーネルの仮想記憶サブシステムと密に連携した malloc 実装が要求される。
0296名前は開発中のものです。
垢版 |
2015/02/11(水) 01:06:40.34ID:IKslX+U4
自作アロケーターは最初に領域確保してその分を切り盛りするでしょ
ていうかそれ以外の作り方を知らない
0298288
垢版 |
2015/02/11(水) 01:16:23.87ID:5bVnp7SH
>>287に対して、自作アロケータ、マイアロケータってのは
ほとんどのケースで、OSデフォルト、カーネルアロケータに依存してるだろ?って反応なわけで。
0299名前は開発中のものです。
垢版 |
2015/02/11(水) 01:32:15.63ID:rJC6nJDr
そうだな
>>287
が言ってるOSデフォルトってのが悪かった。
アプリケーションが使うメモリアロケーターの殆どの実装はライブラリが行ってる。
OSからシステムコールでブロック単位でメモリを貰いアプリケーション内で分配な。
0300名前は開発中のものです。
垢版 |
2015/02/11(水) 01:41:17.25ID:IKslX+U4
すんませんVC++のメモリ確保がWin32APIの関数呼ぶだけって何かで見たからそういうもんだと思ってました
0301名前は開発中のものです。
垢版 |
2015/02/11(水) 01:49:31.11ID:tga+SBCo
>>296
アプリケーションとしてのゲームはこれで確定だと思ってた
動的と言えば動的だけど都度都度確保はあり得ないって意味でこの手の話はスルーしてたけど、そう言うものでも無いみたいだと知ったわ
取れなかった場合の処理は思い付かないけど
0302名前は開発中のものです。
垢版 |
2015/02/11(水) 01:55:07.09ID:5bVnp7SH
ヒープ、動的確保は丸投げに近いが。普通のauto変数とかは最初に確保した領域を使いまわす。



メモリの4 領域
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/MP/final/part06/img6.png
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/MP/final/part06/node8.html

テキスト領域:機械語に翻訳されたプログラムが格納される. この機械語の命令が 1 行づつ実行されることでプログラムが動く。

静的領域:グローバル変数などの静的変数が置かれる。

ヒープ領域:メモリの動的管理 (C 言語の malloc 関数や C++ の new 演算子でメモリを確保すること) で用いられる。

スタック領域:今回の演習で扱ったように CPU のレジスタを一時的に退避させたり、また C 言語の自動変数 (多くのローカル変数) が置かれる。
0303名前は開発中のものです。
垢版 |
2015/02/11(水) 02:24:49.00ID:COJ2IR9k
いわゆるメモリープールのようなものは既にランタイムに実装されてる場合もあるし
自分で実装する・しないは実行環境によると思う。
最近はこの辺のことは既に当たり前になってるのかどうか知らないけど、
検索してもあまり引っかからないね。とりあえず引っかかったところ
http://vcpp-ml.ldblog.jp/archives/1169943.html
ではVCのランタイムのソースみればとなってるので
興味ある人は読んでみては。
0304名前は開発中のものです。
垢版 |
2015/02/11(水) 02:41:42.58ID:0cWu/C1d
俺が昔作ったベンチ引っ張り出してきた
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を上回れる。

まぁ、はっきり言って速度だけを考えると自作アロケータの必要はないかなレベル・・・と思う。
確か、スマートポインタのベンチもどっかにあったはずなんだが、どこだったか・・・
0305名前は開発中のものです。
垢版 |
2015/02/11(水) 02:52:05.14ID:IKslX+U4
>>303
ゲームエンジン&#8226;アーキテクチャ(ソフトバンククリエイティブ)によれば、デフォルトのnewが遅い理由は管理コストとOSのコンテキストスイッチとあるけど
URL先の内容からすると最初に確保された分越えなければコンテキストスイッチは発生しないって事なんかな
ていうか2000年の時点でそういう仕様だったのか
0306名前は開発中のものです。
垢版 |
2015/02/11(水) 02:52:16.60ID:rJC6nJDr
>>304
その自作アロケーターって複数スレッドから呼んでも大丈夫なように作ってんの?
だったらたいしたもの。

今時モバイルですらマルチスレッドが当たり前だからベンチマークも複数スレッドで実行すべき。
スレッド使うライブラリーをリンクしないとシングルスレッド版のmallocとリンクする環境もあるし
0307名前は開発中のものです。
垢版 |
2015/02/11(水) 03:06:07.85ID:rJC6nJDr
>>305
ライブラリが貧弱な環境だと効果はあったんじゃない?
ライブラリが貧弱で有名だったPS3とか。
ゲームエンジン アーキテクチャって本PS専門デベロッパーだった人の著書みたいだし
0308名前は開発中のものです。
垢版 |
2015/02/11(水) 03:24:52.81ID:tga+SBCo
>>306
データ読み込みや通信で「now loading…」、ムービー再生とか以外でマルチスレッドって何に使うの?
いろんな判定でシングルでないと困らない?
俺はコンシューマ長すぎのせいか、マルチスレッド(タイムスライス型)は、そもそもゲームシステムとして実装が思い付かない
どうしてもタスク()で疑似マルチしか作れないや
0309名前は開発中のものです。
垢版 |
2015/02/11(水) 03:29:13.74ID:0cWu/C1d
>>306
ポインタのつなぎ替えの部分に一応クリティカルセクション使ってる。
が、これのベンチがねぇ・・・
複数スレッドで同時に確保しまくって人為的にコリジョン起こしても、
シングルの場合と違って純粋な値が取れないので。
0310名前は開発中のものです。
垢版 |
2015/02/11(水) 03:54:41.50ID:0cWu/C1d
スマポあった。同じく10000を10回。

new 0.00696283003770957 100
shared_ptr 0.039324851409757 564.782584046715

生ポインタとboostのshared_ptrね。
下が自作のリンク方式とカリカリにチューンした参照カウント方式のスマートポインタ。

link 0.0273835524999122 393.281932082318
count 0.0157994938635595 226.911956460117

これも、安全をとるなら生より多少遅くてもboostで十分と思う。
自作のスマポは労力の割にはねぇ。
0311名前は開発中のものです。
垢版 |
2015/02/11(水) 04:10:32.63ID:0cWu/C1d
書き忘れてた。>>304はゲームに近いように
10000まで{ 4, 10, 20, 100, 208, 501 }のサイズを巡回して確保していってる。

>>310は同じオブジェクトをずーっと生成してる。
こうするとnewがなぜか結構速いんだけど、その状態で対決してみたかったので。
0312名前は開発中のものです。
垢版 |
2015/02/11(水) 08:00:15.92ID:JqfHYvpf
んーなんか車輪の再発明がどんどん無駄になってくのな
必要な機能が既存のコードにあるなら、わざわざ作る必要は無い、みたいな
0313名前は開発中のものです。
垢版 |
2015/02/11(水) 08:08:59.24ID:JqfHYvpf
自分は今は自作コンパクションを使ってるけど、これも誰かの作ったコードを流用した方が早い時代が来るのかな?
0315名前は開発中のものです。
垢版 |
2015/02/11(水) 13:02:10.23ID:tga+SBCo
>>314
これの詳細を知ってるが、レンダリングはPCだとGPU処理だから、マルチスレッドとは別で非同期でしょ?
それ以外は先程書いた通り
因みにこのフレームワークは自動変数(スタック)以外はメモリは静的に持ってるよ
0316名前は開発中のものです。
垢版 |
2015/02/11(水) 13:10:49.29ID:vZk9YDm5
ガチな将棋AIとか作ることになったらやっぱりCPUスレッド数のスレッド作って読みを分散するんじゃなかろうか
0318名前は開発中のものです。
垢版 |
2015/02/11(水) 14:57:37.67ID:/JcbXeo3
そもそもメモリ管理なんて個人でやるものじゃないよ
せいぜいオブジェクトプールのように局所的なところで使ったほうがいい
自作アロケータを使ってみたい気持ちはわかるんだけどねぇ
0319名前は開発中のものです。
垢版 |
2015/02/11(水) 15:06:24.20ID:rJC6nJDr
>>308
シングルスレッドでパフォーマンス十分なら要らないんじゃない?
その場合アロケーター自作しようとする理由すら解らなくなるけど。

レンダリングスレッドを分けるってのは比較的簡単だからよく使われてる方法だね。
グラフィックスのAPIが全て非同期という訳でもないし、呼ぶ事自体比較的コストが高いものもあるドローコールとか
あとGPUが全てやってくれるわけでもない。
影とかモデルの持ってるマテリアルによってはマルチパスレンダリングが必要になるしね
それら含めて一つの独立したスレッドでレンダリングを行うって事
どこまでやるかはそれぞれのゲームエンジンの実装次第だけど
0320名前は開発中のものです。
垢版 |
2015/02/11(水) 20:31:12.70ID:IKslX+U4
PS3なんかはは汎用コアが貧弱でマルチスレッド使わないとまともに動かないらしいけど
PCはターボブーストなんかもあるし処理分割しなくてもそれなりに動くのかね
ゲームで重い処理って言ったらAIとか物理演算とか?
それらやらなきゃコア使い切る事もなさそう
0321名前は開発中のものです。
垢版 |
2015/02/11(水) 22:28:39.42ID:o3rdwdSA
自分の場合、(作ったのはC#とXNAだったけど)

・更新
非同期・4体のキャラの思考ルーチンをマルチスレッドで(他のキャラの状態は前フレームのものを利用)。
同期・同時に行う必要のある判定類。
非同期・4体のキャラのアニメーション演算(*)

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

・更新
※未了のタスクがあればいったん待機して、最初と同じ。

ということはやっていた。じつはXNAは(**)が異様に重くなるというハンデ持ちで、
(*)はC++だろうと当然重いはずだから、パフォーマンス上がると思うよ。
0322名前は開発中のものです。
垢版 |
2015/02/11(水) 22:33:55.73ID:o3rdwdSA
連投悪い。

というか、マルチコアのCPUなのにシングルで動作させてるって、同人ならともかく
商用ゲームだとハードを全然使いこなせていないんじゃないの。

仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。
0323名前は開発中のものです。
垢版 |
2015/02/11(水) 23:00:37.92ID:DLujIAOi
妖精左「マルチスレッド!!」
妖精右「マルチタスク!!」
俺「じっそうできればいいから・・・」
部長「ま だ か は や く し ろ 。」
0328名前は開発中のものです。
垢版 |
2015/02/12(木) 02:30:04.64ID:rNOcVIpi
>>322
たしかにC#だと、ネイティヴDirectX呼び出す時点でカーネル切替が発生し、ボトルネックになる
(ただ一方、GCはちょっと工夫すればシーン切替時以外は抑制できる)。

まあC++が最強という事実は揺るがないし、だからここを覗きに来てるんだけど
今まで作った資産をそっくり移植するのは全部1人開発だと工数的に厳し過ぎるんよ。
自分はあくまでゲームを完成させるのが主眼なもんで。
0330名前は開発中のものです。
垢版 |
2015/02/12(木) 09:37:50.92ID:ebWGGwik
>>328
> 仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
> それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
> もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。

こんなこと言う人間が

> 自分はあくまでゲームを完成させるのが主眼なもんで。

なんてよく言えるな
0335名前は開発中のものです。
垢版 |
2015/02/12(木) 12:11:18.44ID:ZP/aF8VN
アホか。

みなが同じ道具を使ったら、それを売って儲ける奴の小作農になるだけ。
これが分からない人こそ

>一生地を這う
0338名前は開発中のものです。
垢版 |
2015/02/12(木) 15:23:29.14ID:gRG035Lb
作るものに応じて道具を選べない人が一生地を這うのでは

各処理をどんだけ細切れにしても結局全部処理しないと次には進めず、
しかも実は単一の処理は積み重ねても大して時間はかかっておらず、
単なるスレッドの立て損にしかなっていないんならマルチスレッドなんか不要
商業だからだのなんだのと適当な言い訳をしても、
実際は目に付くよさそうに見えるものに振り回されているキョロ充
まずは作りやすい方法で実装してテストして、ダメだったら作り直せばいいじゃん
0341名前は開発中のものです。
垢版 |
2015/02/12(木) 19:41:03.02ID:gRG035Lb
うにちゃんは次期主力ゲームエンジンの座を狙っているからね、仕方ないね

何が悲しくてわざわざ柔軟な使い方のできる言語投げ捨ててゲームエンジンなんぞに…
PHPやらJAVAやらに行った方がマシ
0342名前は開発中のものです。
垢版 |
2015/02/12(木) 20:21:56.36ID:K+V6X3Ce
そんなに自信があるのなら、自分たちでゲーム機を出せばいいのに
彼らの夢は、所詮は砂上の楼閣なんかね
0345名前は開発中のものです。
垢版 |
2015/02/12(木) 20:35:29.18ID:wNE8sYSh
>>342
それは無理。彼らの夢は、ゲーム業界に巣喰う寄生虫になる事だから。
0347名前は開発中のものです。
垢版 |
2015/02/12(木) 21:16:05.40ID:SEu5lClB
シングルスレッドで足りるならシングルスレッドで作ればいいと思う
後からマルチスレッドにしようとか考えたら地獄みるけど
ムダに作り込んで時間かけても仕方ないしね
0348名前は開発中のものです。
垢版 |
2015/02/12(木) 21:57:58.62ID:5lpYcWcf
スレッドの話で盛り上がってるけど、みんなpromiseとかatomicとかcasとかちゃんと理解できてる?
俺は半分も理解してない
0349名前は開発中のものです。
垢版 |
2015/02/12(木) 22:02:24.65ID:BY0ie4C4
C++を書いているとJavaやC#にだんだん似てくるし
C++で便利コードを書いても既存のライブラリには適わないし
C++でゲーム用ライブラリを書いていると既存のエンジンに似てきたから
既存のエンジン使うことにした。困ったらエンジン改造すればいい。
0350名前は開発中のものです。
垢版 |
2015/02/12(木) 23:13:41.81ID:X8c9QSvd
おーい、誰かクマが釣り針見つめてるAA持ってない?

>>348
promiseはFutureパターンのSTL実装かな。
casは不勉強だったわ。いちいちロックしなくても非同期でノード更新できるってことかな。
0352名前は開発中のものです。
垢版 |
2015/02/13(金) 00:16:59.27ID:6pLn2rnq
visual c++2010です
コードを書いていると、未定義エラーなどのエラーが起こっている部分を波線で表示する機能がありますが
それをすばやく表示したい(エラーを確認する間隔を早めたい)時はどうすればいいのでしょうか?
オプションでそれらしき項目を探しているのですが、見つけられず困っています…
0353名前は開発中のものです。
垢版 |
2015/02/13(金) 00:28:10.25ID:FqU8O5pj
今表示されてる速度が最速だよ
文句があるならもっと早いCPUに代えろ
もしくはVSのバージョン上げたら改善される可能製はある
0354名前は開発中のものです。
垢版 |
2015/02/13(金) 00:38:48.23ID:PNw/R4Nn
何が原因かわからんが仮にnullpoって変数なり型名なりがあるとしてpoにだけ下線とエラー表示が出る謎現象なんかが困る
nullpoの間にスペース入れた後に消すなりコンパイルするなりして文字解析をやり直させると普通に通る
0356名前は開発中のものです。
垢版 |
2015/02/13(金) 02:11:39.11ID:E1xWFoJ9
コードを書いてるといきなり妙な場所に波線
面食らいつつ原因を探るべくコードを見直しているといつの間にか消える
他にも指摘されて修正した部分の波線がなかなか消えず、
あれ?修正間違ったかなと書き直そうとすると消えたりする

VSに不信感を抱きそう
0357名前は開発中のものです。
垢版 |
2015/02/13(金) 03:15:03.66ID:Jw6U7GOH
VS2010より2012, 2013はずっと賢いから変えたほうがいい
あとVSの謎の挙動はコードが悪いせいなのできちんと書くように心がけましょう
0358名前は開発中のものです。
垢版 |
2015/02/13(金) 03:17:28.00ID:Jw6U7GOH
いつもコードが悪いせいではないな
一括置換とかファイル名変更とか,変なことをやるとVSたんはたまにアホになる
0359名前は開発中のものです。
垢版 |
2015/02/13(金) 03:36:37.36ID:PNw/R4Nn
というわけでついっさっきVS2013導入したった
C++で打ってる時2010だとショートカットキー(Alt→派)でしかインテリセンス出なかったのが改善されてるのが今のところ一番嬉しい
0362名前は開発中のものです。
垢版 |
2015/02/13(金) 10:50:31.89ID:WvS4Hu4Q
JavaやC#ならわかる
だが負の遺産であるクソ構文抱えたC++で
実用的な速度であれだけのことが出来ることそのものが信じられん
動いたらラッキーくらいの謙虚な気持ちで使うべき
0363名前は開発中のものです。
垢版 |
2015/02/13(金) 11:23:05.70ID:/fWsfy1c
C++とC#ってそんなにちがうか??
C++って多少手間暇かかる部分はあるが、自前で組めばどうにでもなる事でね?

まあ、プログラムはソースの書き方だけで作る時間に10倍以上の差が出るし、
モジュールやオブジェクト指向を理解してるかどうかで100倍以上の差が出るから、
その辺りの違いだろうけどな。
0365名前は開発中のものです。
垢版 |
2015/02/13(金) 12:17:28.61ID:oAXnXeHu
学習コストの高い言語はもう流行んないでしょ
ゲームもコア部分以外はスクリプトで書くのが主流になるだろうし
C++プログラマはゲームエンジン書けるレベルの人しか生き残れないな
0367名前は開発中のものです。
垢版 |
2015/02/13(金) 14:00:42.22ID:wCixqXPj
状況次第ではJavaScriptの方が速いなんて事もあるのに
まだそんな事を言っているのか

http://arewefastyet.com/#machine=28&;view=breakdown&suite=asmjs-ubench
0371名前は開発中のものです。
垢版 |
2015/02/13(金) 14:20:03.86ID:s8SeVfmU
しかも、asm-jsってClangで中間コードにしたものをJavascriptに変換するものであって人間が書いてネイティブコードより速くなるもんじゃねえよ
0372名前は開発中のものです。
垢版 |
2015/02/13(金) 14:58:19.33ID:wCixqXPj
他の言語は実行がVMだから遅い、C++はネイティブコードだから(常に)VMより速いと言う幻想を>>366は持っているようなので
ぶち壊してやった
0374名前は開発中のものです。
垢版 |
2015/02/13(金) 15:23:17.57ID:fRUihGLp
>>371
>>372 は多分あなたの言っていることが全く理解できていないだろうな。

たぶん初〜中級者に「VMやJSは思ったほど遅くない」という幻想を抱かせるのが目的。
0376名前は開発中のものです。
垢版 |
2015/02/13(金) 15:25:55.96ID:9I9SRziA
C++の中にCをラップしているという、気味の悪いC++の現状を憂う気持ちは分かる
C++という言語自体がすでに溶岩流状態だよなwww

0377名前は開発中のものです。
垢版 |
2015/02/13(金) 15:26:18.69ID:s8SeVfmU
>>372
誰もVMだから遅いなんて言ってないと思うんだけど
で、遅いのは確実だろC#がネイティブコードになっても遅いのは変わらないよ
CやC++より実行時に行う事が多いのだから当たり前のこと
0378名前は開発中のものです。
垢版 |
2015/02/13(金) 15:27:18.22ID:7ayiwF3a
中間コードを実行するVMの関数呼び出しや演算がC++より速くなることは原理的にないんじゃないの
速くなったとしても結局記述されたコードのレベルの差でしょ
C++でチューニングしたコード書けばもっと速くなる
Cのコードがチューニングされたアセンブリより遅いのといっしょ
0379名前は開発中のものです。
垢版 |
2015/02/13(金) 15:31:25.28ID:4Xq/J0Q+
話の流れに乗ってみるが
ゲーム本体はc++でツール等はc#というのを
ちらほら聞くけど実行している人いる?
いるとしたらどれだけ有用か意見をお伺いしたい
0380名前は開発中のものです。
垢版 |
2015/02/13(金) 15:36:07.95ID:s8SeVfmU
>>378
いや、そうとも限らないよターゲットが固定されてるなら問題ないが、
ネイティブコードに変換したら実行するCPUを完全に生かすコードを吐けるとは限らない。

JITならターゲットがコンパイラを内蔵してるようなものだから動かす環境のCPUを完全に生かすコードを吐ける。
もちろん実行時だから時間のかかる複雑な最適化は出来ないから元のコード次第だけど

>>379
そういえばUnrealは昔エディタはVB製だったな。
0381名前は開発中のものです。
垢版 |
2015/02/13(金) 15:43:02.61ID:6pLn2rnq
>>361
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分ぐらいかかります
0382名前は開発中のものです。
垢版 |
2015/02/13(金) 15:46:18.40ID:diYHW0ok
原理的なパフォーマンスより生産性を優先されることで言語の歴史は移り変わってきたし、
機械語 ⇒ アセンブラ ⇒ C
までは割とはっきりと移り変わってきたと思う。
それ以降、C ⇒ C++ ⇒ Java or C#
についてはうろうろしてる感じ・・・。

やっぱり、今もC++は欠かせないでしょ。
0384名前は開発中のものです。
垢版 |
2015/02/13(金) 15:52:11.33ID:KYsA9vla
ツールはマルチプラットホームで動く必要が無いってのが大きいんじゃないの?
Windows, Mac, コンシューマ機 で動くとなると C++ しか選択肢が無かった気がする。
そこにモバイルが加わって、必ずしもC++が移植性の面で最良では無くなりつつあるのかもしれない。
0385名前は開発中のものです。
垢版 |
2015/02/13(金) 15:55:59.21ID:/fWsfy1c
問題点がGCを使うことの有無になってきてる気がするな
適切にGC.Collect()を使えばいいというような話はあるが……どちらが良いかはよーわからんw
0386名前は開発中のものです。
垢版 |
2015/02/13(金) 15:56:27.80ID:7ah0RMwS
なんか勘違いしてる人が多いみたいだけど、C#は簡単な言語じゃなくて、理想的なオブジェクト指向をするための言語
そもそもオブジェクト指向が出来ない人はC++もC#もまともに使いこなせないから
0387名前は開発中のものです。
垢版 |
2015/02/13(金) 15:59:29.02ID:diYHW0ok
>>386
まーそうだな。
いずれにしても、ちゃんとした設計ができるというのが前提。

その上でパフォーマンスと生産性(クロスプラットフォームかどうかなど)を勘案した上で適切な言語を選択する。

できれば全部C++でやりたい派だけどw
0388名前は開発中のものです。
垢版 |
2015/02/13(金) 16:09:25.94ID:/fWsfy1c
設計気にせずコーディングでゴリゴリやりたい派が居るからなぁ……
ライブラリが充実してると有効なんだが、充実してない場合は……お察し下さい
0389名前は開発中のものです。
垢版 |
2015/02/13(金) 17:05:12.10ID:wCixqXPj
C++のコンパイラは事前コンパイラだから
実行前にはプログラム全体のネイティブコードが得られるが
プログラム全体を無差別に最適化する分コンパイルに時間が掛かるし
実行時の状況を見て最適化する事も出来ない

JITコンパイルは実行時によく使われたコードだけを最適化するから割と高速に実行できる事が多い

http://ja.wikipedia.org/wiki/実行時コンパイラ
0390名前は開発中のものです。
垢版 |
2015/02/13(金) 17:11:55.89ID:diYHW0ok
その中間がGPUのシェーダーって感じかな。
動的ではないけど、同じコードをデバイス(ドライバ)に応じて実行直前に一度コンパイルする。
0391名前は開発中のものです。
垢版 |
2015/02/13(金) 17:26:17.39ID:wCixqXPj
JITだと最適化すべき所があまりに多いと最適化が間に合わないし、あまり複雑な最適化はできないだろうけど
プロファイラで遅いところを見つけてそこだけC++で書くことも出来る

そうすれば速度が下がるデメリットより生産性が上がるメリットの方が上回ると思う

Android 5.0は中間コードから事前コンパイル出来るらしいが
インストールに時間取りそうだな

MonoはJITコンパイルが禁止されているiOS向けには事前コンパイルするらしい
0393名前は開発中のものです。
垢版 |
2015/02/13(金) 17:40:26.14ID:7ayiwF3a
ただでさえ動的な型付けやジェネリクス、クロージャなんかでスクリプトの最適化にかかるコストは高いし
かけられるコストに制限のかかるJITが静的なコンパイラ超えるのはまだまだ先の話だろうな
0394名前は開発中のものです。
垢版 |
2015/02/13(金) 17:49:39.74ID:3uAgugBd
C++入門系の本だと「STLは難しいので分からなくてOKです^^;」とか書いてあるけど
Javaとかの入門書だとジェネリクスやリフレクションも簡単に分かって当たり前が前提
程度の低い人がC++入門書の内容も理解できずに「C++はすごいんだ」と威張っている
0396名前は開発中のものです。
垢版 |
2015/02/13(金) 17:57:54.44ID:9I9SRziA
どこの入門書だよ…
STLのような便利ツールを分からなくてOKなんて書くような入門書はクソ本認定必至だぞ

Unityに絡まれたりC#やJavaに絡まれたり大変だな
一体何が始まるんです?
0398名前は開発中のものです。
垢版 |
2015/02/13(金) 18:05:07.34ID:s8SeVfmU
>>394
> Javaとかの入門書だとジェネリクスやリフレクションも簡単に分かって当たり前が前提

何が言いたいのか解らないからここだけに反応するけど、AmazonでJava入門して人気度でソートして一番上に出てきた「スッキリわかるJava入門」って本の目次にはジェネリクスもリフレクションも無いぞ
0400名前は開発中のものです。
垢版 |
2015/02/13(金) 19:06:42.10ID:diYHW0ok
ほんとに最初はSTLなしで勉強したらいいけど、
ある程度できるようになったらSTLを使わない手はない。
STLなしで大規模プログラミングするとか拷問。
0402名前は開発中のものです。
垢版 |
2015/02/13(金) 19:20:16.61ID:ozS65/+Z
>>401
上は本当に何もすることが無い、空実装の場合だけ
下2段は好み(規約でスタイルが統一されてない場合)
0403名前は開発中のものです。
垢版 |
2015/02/13(金) 19:23:44.45ID:9WE2qWDV
バージョンによるかも知れないけどVSでインデント自動だと

Hoge() {}

じゃなくて

Hoge() { }

と中括弧の間に半角空白が入るのが気になる。
0407名前は開発中のものです。
垢版 |
2015/02/13(金) 21:20:17.39ID:ozS65/+Z
まあ最適化の方針自体が処理系依存だしな

言語仕様で他言語と比較すること自体無意味かも
0408名前は開発中のものです。
垢版 |
2015/02/13(金) 22:15:35.36ID:9+3djK7O
>>381
スペックたけええ
IOくらいしかボトルネックになりそうなところなさそうだけど
2分遅れるってのはちょっと遅すぎだな
0409名前は開発中のものです。
垢版 |
2015/02/13(金) 23:08:30.20ID:E1xWFoJ9
ソース一枚で2000行ってのはもうちょっとバラせないのかなぁ?
相当大規模なプログラムなんだろうか
0410名前は開発中のものです。
垢版 |
2015/02/14(土) 00:36:28.82ID:+drYNYXs
>>408-409
別の環境(インタプリタ)で作っているゲームがありまして、
一部の重い処理をc++を使ってDLL化し、(インタプリタの方でDLLを読み込んで)使っている状態です
ツール→オプションやプロジェクト→プロパティでいくつか操作した記憶があるのですが、
どれを操作したのかは思い出せなません……。 すみません

http://fast-uploader.com/file/6979396992867/
あまりC++に慣れてなく、アップロード時にどこまで載せるべきなのかが分からないのですが
とりあえずcppファイルとhファイル、defファイルだけ用意したものです
(個人用開発のスクリプトで、本来あまりやるべきではない処理も複数使っているためコード自体はかなり見づらいと思います)
これのdll1.cppの最初の位置の方でコードを書くと波線がすぐ表示され、
dll1.cppの最後の方でコードを書くと波線が表示されるまでに数十秒、#if 0-#endifでの半透明化に2分ほど掛かる状態です
0411名前は開発中のものです。
垢版 |
2015/02/14(土) 00:52:52.43ID:o7XnZ6lm
かなりの素人っぽいコードになってるな。
これでプログラムは正常動作するんだったらいいけど。
0423名前は開発中のものです。
垢版 |
2015/02/15(日) 20:15:43.39ID:BSm63ZvK
未だに固定機能パイプライン使ってるのかよ
ES2.0やCoreプロファイルでは削除されたと言うのに
0424名前は開発中のものです。
垢版 |
2015/02/16(月) 10:55:53.67ID:GCnoGlJr
このスレのみんなは何ゲーム作ってる?作ってた?俺は今は2DRPGを作ってる。
作り始めてもう2年は経つが、バイトしながら作っているのでなかなか先に進まない。
その前は剣で敵を殴り倒すサイドビュー2Dアクションとか作ってた。
公開してる作品はまだ無いけれど、今回作ってる作品はようやく公開できそうだ。
0425名前は開発中のものです。
垢版 |
2015/02/16(月) 12:05:03.56ID:xAAEGNM/
いつゲームを思いついてもいいように自分用フレームワーク作ってる
今はポストエフェクトとかの高級機能の追加とパフォーマンスチューニングやってる・・・
0426名前は開発中のものです。
垢版 |
2015/02/16(月) 14:01:53.12ID:zTNZgaYq
昔3Dのゲーム公開してグラボ必須と明記したのに
オンボードのグラフィックで動かないって言われるから萎えたw
0429名前は開発中のものです。
垢版 |
2015/02/16(月) 15:20:33.89ID:SFvkE6bf
日本語が読めない日本人のコメ欄荒らしなんか今に始まった事じゃないし
ひどいと環境も書かずに動かないのでクソみたいなことを言ってくるぞ
その理由がインストール失敗だったりするし、あの人達は異常

>>425
何か作っちゃえよ…さもないと意味ないってそんな作業
0431名前は開発中のものです。
垢版 |
2015/02/16(月) 15:44:19.94ID:DJ/HQJjd
譏斐?ョ繧ェ繝ウ繝懊?シ繝峨げ繝ゥ繝輔ぅ繝?繧ッ繧ケ縺ッ譛ャ蠖薙↓雋ァ蠑ア縺縺」縺溘°繧峨↑窶ヲ
繧ヲ繧」繝ウ繝峨え繧ФI縺ョ謠冗判繧竪PU縺ァ繧?繧雁?コ縺励◆譛霑代?ッ縺九↑繧翫?槭す縺ォ縺ェ縺」縺溘s縺倥c縺ェ縺?縺繧阪≧縺?
0432431
垢版 |
2015/02/16(月) 15:52:15.48ID:DJ/HQJjd
ごめんなんかすごい文字化けした、なんだこれ

最近になって普通のGUIをGPUで描画するようになって
ようやくオンボードグラフィックの性能も上がってきたよね
的なことを書きたかった・・・
0433名前は開発中のものです。
垢版 |
2015/02/16(月) 20:48:43.56ID:SFvkE6bf
>>430
大半のユーザーにとってはただ処理が煩雑になるだけだな
っつーか、手の込んだおちょくり方だなw
0434名前は開発中のものです。
垢版 |
2015/02/16(月) 22:42:53.99ID:vhmKDLh4
起動時にデバイスの判別とかする?
D3Dの初期化出来るかくらいしか見てないすわ
ていうかデバイスの判別なんて出来るもんなの?
0435名前は開発中のものです。
垢版 |
2015/02/16(月) 23:54:49.98ID:7aPTvn5L
GPUのデバイス名を見てショボそうだったらエフェクトを減らしたりして品質を下げるのは良くある
0436名前は開発中のものです。
垢版 |
2015/02/16(月) 23:58:04.64ID:+QAYKcbY
やるとしても初期化できるかできなかったらでいいと思う
できなかったらエラーはいてもいいけど,情報をログに出しておくとのちのち面倒になりにくい
0439名前は開発中のものです。
垢版 |
2015/02/17(火) 04:37:03.07ID:rbxqwbjb
>>424
いま初めてまともな2Dアクション作ってるんだけども、
当たり判定(四分木・モートン)なんかの実装とか処理の順番で発生する矛盾とか解決するのがしんどい(´・ω・`)
一度作ってしまえば使い回し効くんだろうけれどそれでもunuty辺りに逃げたくなる誘惑ががが
0441名前は開発中のものです。
垢版 |
2015/02/17(火) 11:20:06.28ID:R+csvIHk
>>426
初期のIntel GMA(のドライバ)はD3Dのデバイス機能あると返答する癖に実は使えん
とか、ファンキーな挙動をするゴミカス同然の問題児だなという印象があったが
五年前辺りの製品になるとだいぶマシだたよ

当時、即売会で同人ゲをバラ撒くために貧困糞スペ層対策にPentiumG6950と
i3 540のPC組んでテストしたけど、GF8400GSとRADEON4350載せた時と
速度的にほぼ互角で、プログラム側から見た時のD3DデバイスとしてのIntel IGP
特有のお粗末さに呆れる事も無く、特段配慮せずに適当に組んでも動いたので
感激した憶えアリ

もう五年前の製品なので、今の若い子はこれより新しい世代のハード使ってると
思う。これ以前のGMAの名を持つIntel IGPについては俺はもう完全に無視してる
0444名前は開発中のものです。
垢版 |
2015/02/17(火) 15:22:32.89ID:R+csvIHk
optimusか…。ウチの場合はIGPでも軽快に動くものを頒布してたから
その辺の不具合報告はたまたま来なかったな。来ても「それドライバ
の設定のせいだろ何とか自力で頑張れ」とか返事しちゃいそうだけど。

対応するとしたらこの辺の情報も使えそうかしら
http://www.garagegames.com/community/forums/viewthread/136127
0446名前は開発中のものです。
垢版 |
2015/02/17(火) 17:34:23.35ID:kQ4D9OfR
Optimusは拡大鏡のようなMagnification APIが使えないので
背景を透過させるような処理が使えなかった
GDI通すと負荷が半端無いうえに自ウィンドウの裏が不完全
0447名前は開発中のものです。
垢版 |
2015/02/17(火) 17:38:33.49ID:c37KzA7E
商業ならやって当然だけど、サークルや個人製作でD3X10以上の機能が必須の
3Dゲーム作るって凄いと思うわ。

自分は一応プログラマブルシェーダは実装できたけどD3X9が限界だし、
ファーやブラーなどジオメトリシェーダ必須の特殊効果やテセレータによる分割って
「それがないと、どうしても実装できないゲームシステムがある」わけではないから…。
0449名前は開発中のものです。
垢版 |
2015/02/17(火) 17:49:14.01ID:QlaPcbbK
自分の場合は、俺がやりたいことをもっとも簡単に実現する方法が
ジオメトリシェーダで動的生成することだったから、DirectX10/11使ってる
たぶんメッシュを工夫するとかすればDirectX9の範囲でもできたことなんだろうけど
個人的にDirectX9の「お作法」に嫌気がさしてたってのもあったから移行に未練は無かった
0450名前は開発中のものです。
垢版 |
2015/02/17(火) 19:38:23.87ID:GIdVBJpd
質問なんだけど、位置情報ってどうやって保存してる?

1、Matrix4
2、Vector3、クォータニオン
3、Vector3、角度(float)
0451名前は開発中のものです。
垢版 |
2015/02/17(火) 19:50:16.17ID:R+csvIHk
>>447
俺は前回は時期的な都合でD3D9で組んでばら撒いたけど、次は
「楽をするために」D3D9切り捨てでばら撒くことにしてるよ

なお「新APIの新機能使わなくちゃ(使命感)」というのは皆無。
D3D10すっ飛ばしてD3D11のお勉強した感想は、あぁ^〜極楽なn
0452名前は開発中のものです。
垢版 |
2015/02/17(火) 19:57:47.59ID:2VajbZX5
今って、2DでDirextX9からバージョン上げる必要って何かある?
昔はアルファーブレンド使いたかったらDirextX必須だったけど
0453名前は開発中のものです。
垢版 |
2015/02/17(火) 20:14:51.86ID:QlaPcbbK
ベクタグラフィックスを楽に使いたいとか
GDI/GDI+との相互運用がしたいとかなら
Direct2Dと連携できるDirectX10.1以降がいいかもしれない
あと、Direct2Dに関連して、DirectWriteを使うと
文字を出すのが超楽になるかもしれない
0454名前は開発中のものです。
垢版 |
2015/02/17(火) 20:15:09.37ID:R+csvIHk
>>450
その情報が関与する数値積分の計算式の都合で使い分け

俺はオッサンだから流行りのやり方は知らんけど、アニメーションの補間
アルゴリズムの都合が絡む所は四元数で回転情報持ってるけど、それ以外
では使ってないよ

例えばシミュレーション部の数値計算は行列で計算してるからわざわざ
四元数に変換して保存する意味ないんじゃね、というような判断で
0458名前は開発中のものです。
垢版 |
2015/02/17(火) 21:41:07.26ID:2VajbZX5
今の自分にはあまりバージョンアップする必要は無さそうですね
このままでいきます
0459名前は開発中のものです。
垢版 |
2015/02/17(火) 22:01:14.76ID:jnPWiKnI
だからどうあってもしなきゃいけないんでもない限り別に必要ないって
ウイルス定義やOSのアップデートじゃあるまいに

デバイスロストが怖い
ただそれだけで十分だったりするのは秘密
0461名前は開発中のものです。
垢版 |
2015/02/17(火) 22:41:07.94ID:ePkhNQGN
dxlibでblenderで作った3Dモデリングを表示させたいんだけど
テクスチャのUV座標とかは一個一個代入しないとダメってことはないよね?
ポリゴン数多いと骨が折れるんだけど・・・
0463名前は開発中のものです。
垢版 |
2015/02/17(火) 23:11:26.72ID:WkWjQbqK
>>449
その具体例は?

絵の質を上げたいっていうならまだ分かるけど、ゲームのルールに直結する部分で
ジオメトリシェーダが必須になるって、思い浮かばない。
0464名前は開発中のものです。
垢版 |
2015/02/18(水) 00:07:10.98ID:G38OtsQE
>>463
太さのあるモデルの稜線や輪郭線を楽して描画したかっただけだよ
最初からモデルにつけとけば出来なくはなかったんだろうけど

ゲームのルールに直結なんかしないよ
俺がそういう画面表現したかっただけ
ルールがどうのって話出てたっけ?
0465名前は開発中のものです。
垢版 |
2015/02/18(水) 00:22:40.86ID:G38OtsQE
ああ、>>447
>「それがないと、どうしても実装できないゲームシステムがある」わけではないから…。
ってのの話?
だとしたら確かにゲームシステムなんかにゃ関係ない話だったな、すまんね
0466名前は開発中のものです。
垢版 |
2015/02/18(水) 15:04:19.81ID:f28x4TyT
ジオメトリシェーダって技術的には興味あるんだけど、ゲーム用途だとオーパースペックな感が。
絵のセンスを求めてる人はいても、絵のリアリティを求めてるゲーマーって少ないし。

同じ「プログラム技術」でも、経路探索とか衝突判定の方がゲーム内容に直結してる気がするんよ。
0467名前は開発中のものです。
垢版 |
2015/02/18(水) 15:21:22.07ID:QeK+UKTO
2Dのゲームだと未だに画像貼り付けで十分だったりするからなぁ
3Dになると途端に描画系に求められるものが跳ね上がる……というか、中途半端だとショボく見えやすい
0469名前は開発中のものです。
垢版 |
2015/02/18(水) 16:16:04.18ID:FM6JykcW
2Dでも、画面解像度と色が多くなると、DirctX 3D処理で2Dを書いたのが速くなる。
0470名前は開発中のものです。
垢版 |
2015/02/18(水) 16:53:19.00ID:6OJTipUu
blenderでエクスポートした拡張子.xの3Dモデルを
下のアドレスのサンプルコードで表示させようとおもったんだけど
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.html#R1N1
真っ暗で何も表示されない
拡張子.mqoでエクスポートしたやつなら真っ白な3Dモデルがクライアント領域に表示されるんだけど
.xで表示されないのは何が原因なんだろう
0472名前は開発中のものです。
垢版 |
2015/02/18(水) 17:37:25.56ID:6OJTipUu
>>471
返答ありがとう
「blender directx エクスポート」あたりは既に昨日から何度もググってるんだが一向に分からないんだ
だけどさっき画面を良く見ると下のほうにすごく小さい点があって
dxlibに付属されてるDxLibModelViewerで例のモデルを見てみたら最大頂点座標と最小頂点座標が約-1〜約1しかなくて
エクスポート時になぜかものすごく小さくされてることが分かったんだ
だからこれはblenderの問題っぽいのでここで失礼する事にする
でももし対処方法を知ってる方がいたら教えてくれるとありがたいです
0474473
垢版 |
2015/02/18(水) 23:21:37.40ID:jPrz+6+J
あ、解決してたのか
よく読んでなかった
0475名前は開発中のものです。
垢版 |
2015/02/19(木) 19:55:57.68ID:D6yNUzB8
DirectXは旧バージョンとの互換性をガンガン切り捨てるけど、
古いバージョンをラップするのってやっぱり技術的には難しいのだろうか
まあ、根本的な仕様変更の問題もあるんだろうけど
0477名前は開発中のものです。
垢版 |
2015/02/19(木) 20:34:31.82ID:NvdslICU
旧バージョンのインタフェースをくれといえば、ちゃんと使えるだろう?
ある世代内では、互換性は維持されるし、仕様変更も無いはずだぞ。
新バージョンのAPI体系がガラッと変わるのは、時代のニーズなので仕方ない。

ただ、よほどのこだわりが無ければ、今後は、ゲームエンジンを使うか、
WebGL の関係で GL 系を覚えたほうが役に立つとは思う。
0478名前は開発中のものです。
垢版 |
2015/02/19(木) 20:45:49.81ID:oNkiA836
DirectInput8でジョイスティック設定するようにしてたら9で切り捨てられた。
仕方ないので9でオブジェクトの名称と機能を対応させてたら、ある日名称が変更された。

ガン切捨てくらいはされてるよw
0479名前は開発中のものです。
垢版 |
2015/02/19(木) 21:40:39.58ID:Q5dde7tF
APIに依存するようなところは自分でラップしといてバージョン変わったら書き換えるくらいしかないんじゃないかな
インターフェイス変えないと立ち行かなくなって結局大改修になる可能性はあるけど
0481名前は開発中のものです。
垢版 |
2015/02/19(木) 22:04:43.69ID:srcYRBk+
>>480
新しい機能が使えない
0482名前は開発中のものです。
垢版 |
2015/02/19(木) 22:42:13.32ID:BvTV0nsZ
無くなったものはその新機能にそぐわないからなくなってんだよ
それぐらい解るだろ
0484名前は開発中のものです。
垢版 |
2015/02/19(木) 23:01:29.94ID:z/wN7MYn
少数の無くなって困る奴を気にしすぎると新バージョンの開発が難しくなるんだよ
それくらい解るだろ
0485名前は開発中のものです。
垢版 |
2015/02/19(木) 23:26:36.09ID:yx5mPigo
そもそもDirectInputって切り捨てられたことあったっけ?
Windows SDKに統合された今でもヘッダとライブラリ残ってるし開発できるでしょ
0487名前は開発中のものです。
垢版 |
2015/02/20(金) 04:40:02.95ID:Yq9E+HAh
新しいバージョンで無くなって困るって言ってる奴はその新しいバージョンの設計思想を読み取れないアホなんだから、移行せずに古いほう大人しく使っとけ
0488名前は開発中のものです。
垢版 |
2015/02/20(金) 10:47:36.85ID:LvDa2DK4
3D箱庭ゲーみたいな面の各頂点がバラバラのマップデータの処理ってどうやってるんだろう
正方形の地形が並んだxyデータだったら
指定した座標から地形を読み込んで処理すればいいのは知ってるけど
0490名前は開発中のものです。
垢版 |
2015/02/20(金) 11:35:44.82ID:LvDa2DK4
>>489
クォータービューは3次元なはずだよ(2次元ももちろんあるけど)
xyだけじゃなくてz座標もないと奥行きと上下左右の同時表現が成り立たないし
あとあれも大体は一定の大きさの立方体の集まりだから
指定したxyz座標と立方体の大きさ(16だったら座標/16)で計算すれば読み込むべき地形を特定して処理できる

俺が知りたいのはその立方体の大きさや頂点の位置がばらばらだった場合の処理なんだよね・・・
0491名前は開発中のものです。
垢版 |
2015/02/20(金) 11:39:19.38ID:wXZtF1jQ
クォータービューがFFTみたいなの想定してるなら、z座標はセルごとに値で持っとけばいい
3Dの地形だって立体交差とかしない限りは同じでいい
0492名前は開発中のものです。
垢版 |
2015/02/20(金) 12:13:53.08ID:LvDa2DK4
>>491
いや同じだと立方体のがくがくした地形しか作れないとおもうんだけど
マリオ64みたいに地形を作りたいんだよなぁ
俺の説明の仕方が悪かったかもしれなかったらすまん
0493名前は開発中のものです。
垢版 |
2015/02/20(金) 12:42:42.94ID:LvDa2DK4
ごめんもっと簡単に言うと
大量のポリゴンがある空間の中で座標を指定した時
どうやって適用されるポリゴンを選ぶことが出来るかれるかが分からないんです
0494名前は開発中のものです。
垢版 |
2015/02/20(金) 12:43:09.25ID:mEXo8/Tf
地形で簡単なのが、”高さマップ” 碁盤の目の座標に高さデータを加えるだけ。

自由度が高いのが、Xファイルで作る方法。モデリングソフトで作ればよい。
ポリゴン数を少なくするように工夫がひつよう。 

非力なパソコン用に使われた方法では、”BSPマップ”がある、
マップを細分化して分割する、その中から必要な部分だけを表示する手法。
0496名前は開発中のものです。
垢版 |
2015/02/20(金) 12:53:11.59ID:7oZJAYkq
もしポリゴンで判定したいなら、基本的には点と三角形の当たり判定になる。
重力判定であれば、その方向の直線がぶつかるポリゴンを見つけるのは難しくは無いだろう。
軽量化のために、メッシュ空間を予め分割しておくこともある。
描画用の細かいメッシュのほかに、当たり判定や移動判定用の荒いメッシュを持つ場合もある。

壁へのめりこみ判定も似たようなものだが、市販のゲームでも「壁抜け」系の
バグがよくあるように、完璧なものはけっこう難しい。
0498名前は開発中のものです。
垢版 |
2015/02/20(金) 13:02:44.72ID:LvDa2DK4
>>494
>>496
ありがとうがんばってみる
0499名前は開発中のものです。
垢版 |
2015/02/20(金) 13:12:46.23ID:LvDa2DK4
>>497
一応方法としてはポリゴンごとにオブジェクトと距離測って範囲内にあれば処理するくらいならあったのだよ
でもそれだと処理量がすごいことになっちゃうからね
今からゆっくり理解するよ
ありがとう
0500名前は開発中のものです。
垢版 |
2015/02/20(金) 14:14:35.39ID:V4z76ahC
モートン序列というので大量の判定を軽量化出来るってどっかのサイトにあったが
地面との着地判定にはどう使うんだろうか
オープンワールドの地形よろしく分割されてれば出来そうだが、マップ読み込んだ時に自動的に分割されればデザイナーにも優しいかも
0501名前は開発中のものです。
垢版 |
2015/02/20(金) 14:17:28.45ID:LvDa2DK4
あれ、今言われたことを踏まえて改めて調べたんだけど
もしかして重力判定で通過したかどうかは一定の範囲のポリゴン全部チェックする必要があるんだ?
二次元データみたいに指定したxy座標にブロックの有無と種類を判別して処理ってことに近い事はポリゴンでは出来ないって事だよね?
これ重くならないか不安だったんだがこういう認識でOKだよね?
本当頭悪くてすまん
0502名前は開発中のものです。
垢版 |
2015/02/20(金) 15:28:45.62ID:f/qfY/pq
>>500
キャラクターだろうが地面だろうがひとつのオブジェクトとして扱うのが一番簡単なんじゃね

今モートン序列当たり判定自作してて各ブロックにオブジェクトを挿入するところまで出来たけれど、
肝心の探索でバグってて総当たりよりも遅くなっててわろえない
0503名前は開発中のものです。
垢版 |
2015/02/20(金) 16:33:09.05ID:V4z76ahC
同じブロックに入ってても通常より処理が増えるだけだからな
スカイリムみたいなオープンワールドで始めて効果を発揮するんじゃないか?
まぁスカイリムでもマップの反対側で当たり判定動かしてるのかわからないが
0504名前は開発中のものです。
垢版 |
2015/02/20(金) 16:50:19.91ID:kfuov5G/
>>501
ポリゴン全部っつーても、衝突判定に描画に使ってる精細なポリゴンをそのまま使う必要はなく
基本的にはそれを簡易化した描画しないローポリや、球、箱などとの判定でok
0505名前は開発中のものです。
垢版 |
2015/02/20(金) 17:03:56.05ID:LvDa2DK4
>>504
ありがとう!
みんな優しいね
0506名前は開発中のものです。
垢版 |
2015/02/20(金) 18:58:58.25ID:QKhWkDln
DirectInput8のためだけにDirect8で止めておく選択肢はあったかもなw
名称が変るのは回避できない可能性があるが。
0507名前は開発中のものです。
垢版 |
2015/02/20(金) 19:33:43.50ID:81/jlh7Y
ポリゴンのあたり判定もそれをやる前にオブジェクト毎にAABB(aligned axis bounding box)を持っといてそれで大まかな判定したあとポリゴンであたり判定するとかね
AABBは描画するときにもつかえる
0509名前は開発中のものです。
垢版 |
2015/02/20(金) 21:38:48.57ID:81/jlh7Y
出来るだけ少ないポリゴン数で遮蔽ポリゴンを作っておく(実際のポリゴンをはみ出ないように)

1.遮蔽ポリゴンだけを使ってデプスのみ描画
2.描画判定するオブジェクトのAABBをそのデプスを使って描画されるか判定(デプステストをパスするピクセル数を返すだけのAPIがある)
3. 2で描画されるピクセルがあると判定されたものだけ実際に描画する

いくつか方法あるけどスタンダードなのはこんな感じ
0511名前は開発中のものです。
垢版 |
2015/02/24(火) 21:32:41.15ID:vaS9aulZ
C++/SFMLライブラリを使った2Dベースのゲームを作っているのですが、
自分で調べた感じですとSFML自体ではz-orderingの機能は持ち合わせていないようです。
こうなるとやはりvectorなどを用いてマニュアルで描画順をうまくやりくりするしかないのでしょうか?
0513名前は開発中のものです。
垢版 |
2015/02/24(火) 23:50:55.98ID:vaS9aulZ
>>512
早速の返答ありがとうございます。
dxlib関連の記事のようですが下記のようなサイトを見つけました。
こんなかんじで描画順を管理できるように試してみようと思います!
ありがとうございました。

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

http://xbmc.inpane.com/main/rc/wiiremote.php#mc
0515名前は開発中のものです。
垢版 |
2015/02/25(水) 09:06:11.55ID:zNwgz5b4
wiiリモコンプラスはMSスタックは繋がらないようで、東芝のスタックであれば繋がりました。
0518名前は開発中のものです。
垢版 |
2015/02/27(金) 21:19:14.81ID:Pdgs5cQ7
シェーダ側では、ミップレベルを指定したい時はわざわざtex2Dlod()を呼び出すくらいだから
一般のtex2D()は自動でミップマップされてると考えていい。

ただもちろん、ハード対応してればだし(今動いてるPCはまずしてるだろうけど)、
「ミップレベルを入れ替える」のではなく「周辺の2つのミップレベルを補間する」実装のはず。
0524名前は開発中のものです。
垢版 |
2015/03/04(水) 00:59:35.68ID:9TbqAfLf
興味ないどころか、この板自体がウニと非現実のステマに占領されてるので
嫌気が指してる。でもこういうのに限って板分けないだろうな運営。
0525名前は開発中のものです。
垢版 |
2015/03/04(水) 01:13:58.75ID:dqGNRwqL
っていう時代に取り残された人達が多い所か、ここは。
オクルージョンカリングの質問にもまともに答えれるひと居なかったし
0526名前は開発中のものです。
垢版 |
2015/03/04(水) 07:43:32.99ID:tS5hBT8s
オクルージョンカリングで思ったんだけど、
例えばキャラクターが建物やらの後ろにいて隠れるけど、
影は建物から出るって時、影は描画されるのん?
判定用モデルでそのまま影描画しちゃう感じ?
0527名前は開発中のものです。
垢版 |
2015/03/04(水) 09:43:02.19ID:GgwaroCI
シャドウマップを作るときはライトからの視点になるから、
また別のオクルージョンカリングを行うとか?
0529名前は開発中のものです。
垢版 |
2015/03/04(水) 10:49:22.17ID:a+CSwpI9
影はビューカリングだけじゃない?
z-prepassすればそこまで重いものじゃないし影用モデルでかなり最適化できる。
オクルージョンカリングは描画結果のピクセル数を取得して0なら描画しないだけだよ。
0533名前は開発中のものです。
垢版 |
2015/03/05(木) 00:38:58.57ID:f1raWeBS
>>530
>>531
簡素な遮蔽ポリゴンと、事前計算した超軽量なAABBでデプステストをパスするか確認するから軽くなるんだよ。
デプステストをパスしなかったら描画する対象のvertex shaderすら動かす必要が無いからね。

GPU内で完結するようにしたら実際のポリゴンを使うしかない。
そうすると、どうやっても全頂点計算するしかない。
それで隠れるポリゴンがあればfragment shaderは実行しなくて済むけど、それはTBDRっていう方法で既にGPUで実現済み。
ピクセルを書き込む回数を減らせるからメモリ帯域の狭いモバイルGPUでよく使われてる方法で、PowerVRが昔からその方法を使ってて有名。
それも半透明とかアルファテスト使うようなポリゴンがあると使えない。
0534名前は開発中のものです。
垢版 |
2015/03/05(木) 02:25:19.75ID:YpPGywcJ
なんか2chの専ブラでハードコーディングしたからAPIキーが割れたって言ってるけどコンパイルしてネイティブコードに変換されて読み取れるもんなの?
0541名前は開発中のものです。
垢版 |
2015/03/09(月) 11:25:36.92ID:KBqbZUvv
>>540
hogeってのは生配列を返す関数持っててnullチェックしないと使えない糞コンテナなのか?そんなもん窓から投げ捨てろ
0542名前は開発中のものです。
垢版 |
2015/03/09(月) 16:56:13.92ID:Tsv4BOfD
>>541
なんか話噛み合ってないと思ったら、javaと勘違いしてたごめん。
あとjavaにしてもlengthの後の括弧いらんかったごめん。
0545名前は開発中のものです。
垢版 |
2015/03/21(土) 17:31:21.55ID:4J9dPJbb
DXライブラリで一通りゲームを作って次はDirctX9でゲームを作ろうと思って本なり読んでるけど
入力関連とかメインループ文に入ってるように見えないのになんで操作できてんだこれとか色々わけわかんなくてDXライブラリに逃げちゃいそう
0546名前は開発中のものです。
垢版 |
2015/03/21(土) 17:41:03.09ID:WO0UmCC8
入力の取得関数の所にブレークポイント張ればいつ呼ばれるか解るだろ
ソースレベルで追えないんじゃそのあとも苦労しそうだが
0547名前は開発中のものです。
垢版 |
2015/03/21(土) 22:19:51.97ID:Vu16KnFN
メッセージ系の処理の話かな?
Win32の仕組みを知らないといろいろわからないかもしれない
って言うか無理しないでDXLibでいいと思う
0548名前は開発中のものです。
垢版 |
2015/03/22(日) 13:15:06.80ID:RZoxpRxM
>>545
まさかまかりなりにもDxlib使ってゲーム作った経験があるのにコールバック関数を知らない訳じゃないだろうな・・・w
0551名前は開発中のものです。
垢版 |
2015/03/23(月) 08:21:54.36ID:OPwFNkI6
名前聞けば皆知ってそうなFLASHゲームの製作者なんて構造体すら知らなかったぞw
実装力>>>知識よ。
0552名前は開発中のものです。
垢版 |
2015/03/23(月) 14:50:59.94ID:ORae6Rkf
コールバックの利点ってなんぞ
軽い機能ならswitchすればいいしでかいならクラスごとするし手間かかるだけじゃないのか
0556名前は開発中のものです。
垢版 |
2015/03/25(水) 00:11:47.80ID:q/dDA6au
誰にも迷惑がかかるわけでもなし
メリットが無いと思うのならば使わず突っ走ってみるのも一興

スマートポインタ?delete忘れるわけねーだろとツッパっていたら
見事に二重deleteを踏み抜いて以来
スマートポインタ教になった俺みたいに
0559名前は開発中のものです。
垢版 |
2015/03/29(日) 16:51:57.43ID:0emdsjcu
C++も、デフォルトで、ベクトル演算や行列演算のコンパイルができるようになればいいのに
コンパイラに任せると、機械語でオーバーヘッドが膨らみ過ぎるのかな・・・
0560名前は開発中のものです。
垢版 |
2015/03/29(日) 17:28:01.84ID:xcFREV5w
どうせベクトルや行列の型を指定するんだから見た目だけなら演算子オーバーロードでいいだろ
そうじゃない自動ベクトル化ならIntelCでも使えよ、一応VCにもあるけど
0562名前は開発中のものです。
垢版 |
2015/03/29(日) 22:35:03.23ID:0emdsjcu
>ベクトルや行列の型を指定するんだから見た目だけなら演算子オーバーロードでいい
要するに自分でクラス定義して、そのクラスを引数に取る演算子のオーバーロードするって事だよな。
それって面倒じゃん?

たとえば、ベクトルxとスカラーcがあるとして、
例えば、x-cなんかで、cをベクトルに拡張して四則演算してくれるようにコンパイルをしてくれれば便利だ
記述が、すげースッキリするぜ
0564名前は開発中のものです。
垢版 |
2015/03/29(日) 23:57:58.80ID:LTE960gn
HLSLとかGLSLはそうとも言えるんじゃね?
C++に含めるのは仕様が膨らみすぎるしどう考えてもありえないけど
0569名前は開発中のものです。
垢版 |
2015/03/30(月) 20:10:43.25ID:1XyG6Wml
行列の話と、CPUの最適化の話がごっちゃになっとるなwww
Phiとか扱わんだろうからなぁ
0570名前は開発中のものです。
垢版 |
2015/03/30(月) 20:48:54.91ID:b0tJqvqw
>>564
C言語でも、静的配列はsizeof()で、要素数が求まるじゃん。
だから静的配列に限っては、それほど無理なコンパイル要件でもないと思うんだ。
0572名前は開発中のものです。
垢版 |
2015/03/31(火) 00:17:17.94ID:DE0yY6pv
>>571
そいつに言ってるわけじゃないし
ID:0emdsjcu
はどう見てもベクトル命令の方は言ってないだろ返信の為に引用した方から見ても
0577名前は開発中のものです。
垢版 |
2015/04/06(月) 02:30:22.94ID:uSGdnOak
>>576
まさにそれ。
ゲーム以外でも応用できる技術を身に着けるのが楽しくてしょうがない。
会社(非ゲーム)でも役に立ちまくってる。
0578名前は開発中のものです。
垢版 |
2015/04/06(月) 08:15:15.97ID:sWIkPIlR
日本のIT屋はOSやオフィスソフトなんかを作らなかった
結果世界を相手にできない
日本のハード屋はゼロから作ること(メイドインジャパン)にこだわった
結果世界を相手にできてる
unityとかもいいけどゼロからでも作り上げれる技術は保持しときたい
だからC++は捨てれない
0579名前は開発中のものです。
垢版 |
2015/04/07(火) 08:34:53.50ID:q9bGL2Lp
俺もだ

つまり、元々ゲームが作りたいんじゃなくて、プログラミングを楽しんで色んな技術や知見を得たい。その過程の一つとしてゲーム作ってるだけ。
0581名前は開発中のものです。
垢版 |
2015/04/07(火) 19:26:39.87ID:J/eE9D3a
>580
VMでもスクリプトでもなくハードを直接叩けて多くのプラットフォーム向けのコンパイラのあるOOPも関数型もいける高級言語って他にある?
0586名前は開発中のものです。
垢版 |
2015/04/07(火) 23:22:56.51ID:r6+ZyJLJ
たしかガベコレのCライブラリもあったはず
わざわざC++でガベコレの使うぐらいなら
それでこそJavaでよくね?とは思うけど
使いこなせる人はきっといるのだろう

ま、使いやすいと思う言語を使えばいいのさ
0587名前は開発中のものです。
垢版 |
2015/04/07(火) 23:52:39.26ID:V/NiCl4y
ジャンルにもよるけどゲームの場合はガベコレはデメリットが大きい
ガベコレ中はどうしても処理負荷がかかってしまう
あとガベコレでも循環参照とかメモリークの危険性はある
0588名前は開発中のものです。
垢版 |
2015/04/08(水) 01:18:56.44ID:FP0EIOAz
循環参照を上手いこと扱ってくれるのをガベコレって呼ばないか?
単純な参照カウントは含まないイメージがある
0589名前は開発中のものです。
垢版 |
2015/04/09(木) 04:57:40.20ID:V84tE5WO
処理が高速なのが売りの言語にそんな物を突っ込むこと自体が…
しかも、CPUの進化で結構余裕が出るようになってきたとはいえ1フレームを争うゲームで
まあ、処理の速さを活かして動作安定性を高めていると言えないこともないが
0590名前は開発中のものです。
垢版 |
2015/04/09(木) 10:55:23.90ID:MHTRE/z5
そのあたりの利便性と実行速度のバランス自体を作り手の技術と裁量次第で自由に出来るのがC++の良さ

例えば、マークアンドスイープをメモリ領域を小分けにしてフレーム単位で分散して実行するとか
同じサイズのオブジェクトが大量に生成破棄されるならそれ用のメモリプール作っておくとか
0592名前は開発中のものです。
垢版 |
2015/04/09(木) 14:05:15.05ID:eY4Y798Y
boostあたりでgcライブラリを出してくれてもいいんでねえ?
スマポの延長みたいな感じで
0594名前は開発中のものです。
垢版 |
2015/04/09(木) 15:32:48.11ID:0uLPtayU
プログラミング初心者にはわからないと思うけど、プログラミングそのものが有名ゲームをプレイする以上に楽しかったりするんだよね
むしろお金を払わないでプログラミングができるってだけで結構楽しかったり
0595名前は開発中のものです。
垢版 |
2015/04/09(木) 15:51:09.16ID:DMZkI4l5
料理とかプラモデルみたいな感覚って説明してる。
それを楽しいと思えるかどうかは別として。
0596名前は開発中のものです。
垢版 |
2015/04/09(木) 20:09:02.62ID:V84tE5WO
問題は覚えるべき要素も多くて取っ付きにくいことと、
言語仕様がとっ散らかってて時々その仕様に悩まされることだ
0597名前は開発中のものです。
垢版 |
2015/04/09(木) 21:03:17.88ID:0zValk89
C++11は洗練されてて好き。
まぁ、それでもプログラミングを楽しめるかどうかは適性次第だろうね。
自分はC++11が超キモチイイ。
0599名前は開発中のものです。
垢版 |
2015/05/05(火) 00:33:10.13ID:IAsXNTG2
それは幸せなことだ
初心者は喜びを知り
中級者は苦しみを知り
上級者は無常を知る
それがこの世界の理よ
0602名前は開発中のものです。
垢版 |
2015/05/06(水) 03:08:49.55ID:IHlLqFXR
当方ビジュアルスタジオ2010にてアクションゲームを作っているんですが、
デバッグ中、配列に格納したマップ情報とオブジェクトとの判定をする部分で
ごくまれにエラーが起きて停止します。
経験則で判断すると、マップ判定でのエラーは
マップ情報の無い部分にオブジェクトが飛び出すというものが多かったんですが
今回は目視ですべてのオブジェクトが飛び出してるか否か確認出来る状態で
毎回エラー発生時に怪しいオブジェクトがいないので、今までのエラーとは違うような気がします。
しかも、滅多にそのエラーが出ないため、原因を探れません。

ただ、気持ち悪いことがひとつありまして、そのエラーで停止したあと、
マップの情報を入れた配列にカーソルを当てて、要素を見たら、
途中から「?」という状態になって表示されてるんです。
http://download1.getuploader.com/g/zipcodezipcode/91/B.png
http://download1.getuploader.com/g/zipcodezipcode/90/A.png
これがおかしなことに、見るのを止めて、もう一度カーソルを合わせてみると
今度はちゃんと中身が入ってる状態で表示されたりします。

ビジュアルスタジオの扱いにまだ慣れてないせいもあり、
中身が「?」で表示されたのは初めてだし、覗き直すたびに
「?」だったり、ちゃんと中身が見れたりすることが気持ち悪いんですが
これは別に、問題ないのでしょうか?(もともとそういうものだ、とか)
もし、ゲーム中に配列の中身が「?」みたいになる瞬間があるのなら
そりゃいきなりオブジェクトがど真ん中にいてもエラーになると思うんです。。。
これが原因なのかと思うんですが、、違いますか?
もしくは配列覗いたときの、「?」表示はビジュアルスタジオのバグなんでしょうか?

ちなみに、マップ配列の中身の格納はゲームが始まる最初に行っているので、
ゲーム中にマップ配列の中身が変わることは考えられない仕様です。
だとするとこの「?」はなんなんでしょうか?
考えられる要因を教えて下さい、お願い致します。
0604名前は開発中のものです。
垢版 |
2015/05/06(水) 04:44:45.87ID:IHlLqFXR
>>603
深夜なのにレスありがとうございます。
リリースで実行中に、エラーが起きて「中断」します。
そのときに黄色の矢印がつきますよね、エラーが起きたところで。
中断状態ですね、デバッグモードになってるんでしょうか、
その時の話です。
0606名前は開発中のものです。
垢版 |
2015/05/08(金) 09:17:52.46ID:NPzwaxuV
DXライブラリでデータベースと連携させてアカウント制のオンラインゲームとかって作れる?
0607名前は開発中のものです。
垢版 |
2015/05/08(金) 17:02:47.08ID:1OSTxxey
DXライブラリは、ただのDirectXのラッパだ
別のライブラリなり、自前なりで用意して組み合わせれば当然出来るだろう

DXライブラリにそういう機能があるか?って質問なら、無い。
そういう質問をするレベルの人が作れるかと問われれば、相当厳しいが頑張れとしか。
0609名前は開発中のものです。
垢版 |
2015/05/12(火) 19:53:17.91ID:S9OdlII3
>>601
マジで最近は技術の陳腐化がものすごく早まって、
ちょっと前までこれが最新最適とされていたコードがもう古い役に立たないコード扱いされてたりして、
そういう意味では無常ではある
0613名前は開発中のものです。
垢版 |
2015/05/24(日) 01:01:21.31ID:2/e5e/p/
ゲームのAI作るの楽しいな
一応動いてくれた時の感動がたまらない
けど相手に合わせて学習するようなAIはデバッグが難しいね
0616名前は開発中のものです。
垢版 |
2015/05/30(土) 09:46:19.17ID:B9JLVvSW
参考書増えすぎて置き場所がなくなってきた
ブックエンドいくつか使って何とか置いてたけど
ちゃんとした本棚買うべきか・・・
0618名前は開発中のものです。
垢版 |
2015/05/30(土) 10:36:42.87ID:B9JLVvSW
本棚買う金で新しい参考書買えるんじゃね?って考えてしまう気持ちもあってなぁ・・・
0619名前は開発中のものです。
垢版 |
2015/06/02(火) 17:39:01.05ID:MlWv0OLE
今日発売の ゲームプログラマのためのコーディング技術 って読んだ人いる?
少し立ち読みして良かったら買おうと思って近所の本屋に寄ったけど置いてなかった
ゲームのシステムがある程度の規模になってくるとゴチャゴチャしてきて
わけわからなくなってくるから綺麗なコード書けるようになりたいんだけど参考になるかね?
専門学校時代も入れるとゲーム製作は3本目なんだけど、
いまだに悩んでるスパゲッティコードをなんとかしたい
0620名前は開発中のものです。
垢版 |
2015/06/02(火) 17:58:05.87ID:MlWv0OLE
あ、3本目って言うのは一人で全部プログラミングしたって意味
分担ならもっと多いです
0621名前は開発中のものです。
垢版 |
2015/06/02(火) 21:36:22.65ID:SNgoyQru
読んでないけどゲームプログラマのためのコーディング技術なんて
ループしないで並べるとか細かくメモリとらないとか、
綺麗なコードとは関係なさそうなイメージしかないけどな
0622名前は開発中のものです。
垢版 |
2015/06/02(火) 22:41:29.74ID:kPJiVod8
汚いコード書く奴ほどバグ出してると感じることはある
綺麗に書こうと努力してるコードは何かしらのこだわりを持って書いているからだろうか
必然的に保守し易くなる傾向にあるとも思える
しかし何にも増して重要なのはやはりセンス
0623名前は開発中のものです。
垢版 |
2015/06/02(火) 22:52:24.02ID:OsC99ZpC
>>622
まったくの同意。
美意識の低い人間のコードは見辛い、保守性悪い、汎用性、可搬性が考慮されていない等々、機能的にも美しくない。
こういうやつの尻拭いがまわってくる度に怒りが込み上げてくる。

うっかりミスや、見通しが難しい段階でのコーディングなど、止むを得ないことは仕方ないが、
もうちと考えるなり拘るなりしようや・・・。
0625名前は開発中のものです。
垢版 |
2015/06/03(水) 16:11:07.48ID:Nya6+czP
とりあえず動けばいいやと考えて作るから場当たり的になってコードが汚くなるんだよ
はじめに全体像を大まかにでも作り上げておいて、それに従って体系だったコードを書いて
場合によっては書き直しも視野に入れるくらいしないと後でバグ探しが大変だよ
0627名前は開発中のものです。
垢版 |
2015/06/03(水) 19:09:02.96ID:sRl87IVO
継承しまくってもはやどれだけの要素が絡んでるのかわからない子クラスとか、
ソースで使う要素が書かれていないヘッダとか、
あまり意味のないtypedefのせいで紛らわしくなってるソースとか、
ろくに改行もせずにごちゃごちゃ書きなぐってるソースとか…
可読性は落とそうと思えばいくらでも落とせそうだからなぁ
0628名前は開発中のものです。
垢版 |
2015/06/04(木) 16:11:36.42ID:vrU+ubOi
>>625
たぶん、「とりあえず動けばいい」というコーディングをしつつも、
最低限の体裁が整ってるような、基礎力が必要なんだろうなあ

勉強しなきゃ
0631名前は開発中のものです。
垢版 |
2015/06/05(金) 20:37:14.05ID:mCe853J4
3回も書き直せばマシになると思う
というか当たり前だけど、設計って細かい点までどうしてそうしたか説明できないと
0635名前は開発中のものです。
垢版 |
2015/06/07(日) 13:09:26.35ID:NNLpNWfN
 技術テストだから・・・と書き始めたコードを、体裁整えて本番用にしてしまいました。
 構造体には、今後を見据えた無駄が沢山ヽ(`Д´)ノ
 関数には、アップデートの過程で使われなくなった関数そこそこヽ(`Д´)ノ
 グローバル変数こそ控え目なものの、そこかしらに謎の変数int i;が溢れていますヽ(`Д´)ノ

 うん、もう少し頑張ろう。
0640名前は開発中のものです。
垢版 |
2015/06/09(火) 20:36:17.49ID:fdMK9ws0
>>635
バージョン管理ソフトで定期的にバックアップを取りつつ、
使わなくなった関数は消してあげるといいよぉ
っつーか、使わないなら消してくれ 頼むから
0641名前は開発中のものです。
垢版 |
2015/08/31(月) 13:46:15.71ID:BsMwLClI
幸福を固定された状況で規定するのは無意味
重要なのはどれだけそれを望むかということ

それに富と名声が同時に手に入らないと決まっているわけでもない
わざわざ自分から天井作ることはないだろ
ニートよ大志を抱け
0646名前は開発中のものです。
垢版 |
2016/03/08(火) 21:48:03.20ID:aJ2MUmL6
14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編p148に

//画像を読み込み
if (LoadGameImage() == FALSE) return -1; 

というのがあるんだが
画像をこれで読み込んでるらしいが
プログラムに異常があったときの処理があるようにしか見えない
それともC++とDXライブラリではこれが画像読み込みを意味するんだろうか・・・
0650名前は開発中のものです。
垢版 |
2016/03/08(火) 23:59:47.69ID:HZQ9dU35
>プログラムに異常があったときの処理があるようにしか見えない

これが具体的に何を指すのかが分かれば
答えようもあるんだが
0651名前は開発中のものです。
垢版 |
2016/03/09(水) 00:25:01.22ID:6v8oW5co
http://www12128uf.さくら.ne.jp/forum/viewtopic.php?t=16197&p=128079

ここに>>646が言ってるものと思われるコードが載ってるけど、
エラー判定をするif文に何か関数が入ってれば当然その関数もif文を判定するときに実行される
だからエラー判定の一行だけで画像の読み込みも同時に済む
これはDXライブラリの仕様ではないよ

>プログラムに異常があったときの処理があるようにしか見えない
これは失敗した時に-1を返すようになってるからそう思ったんだと思う
DXライブラリの関数でもそうなっているね
0652名前は開発中のものです。
垢版 |
2016/03/09(水) 10:30:03.03ID:hrHSTVTj
if(!Func()) return 0;
みたいな書き方を俺はよくしてるけど
"!"よりも"== FALSE"の方が可読性高かったりする?
0654名前は開発中のものです。
垢版 |
2016/03/09(水) 16:03:42.30ID:k0YnCSJd
んなことはない
俺は!でも分かるし
オープンソースソフトウェアのソースコードでもよく使われている
0656646
垢版 |
2016/03/09(水) 18:40:53.88ID:Y8IoTovs
あああ ありがとうございました
if文の中の関数が実行されるとは・・・
0658名前は開発中のものです。
垢版 |
2016/03/09(水) 19:50:34.93ID:JQPFUPms
!はよく使うけど、if文の中に関数は書かないな。
エラー処理とかしたい時は一旦hogeでも挟む。
strcmpとか条件分岐で使うのが前提みたいな関数は書くけど。

ってか人多いな。
0659名前は開発中のものです。
垢版 |
2016/03/09(水) 20:28:24.63ID:KZC9RKwk
>>653
!がわかりにくいのではなくて
strcmpのような真偽値でない値を返す関数に対して!を使ってる
本質的に正しくない書き方だからじゃないか?
0660名前は開発中のものです。
垢版 |
2016/03/09(水) 21:34:28.22ID:JVQPGZ6h
!か==FALSEかの可視性に関してはその関数が何を返してくるかによると思うけどね

>>658
自分も一旦変数で受けてから評価するかな
0661名前は開発中のものです。
垢版 |
2016/03/09(水) 21:58:58.25ID:RXGdxmu3
半年ぶりの書き込みだって言うのに結構レスついたな
書き込みなかっただけでチェックしてる人はいたのか
0662名前は開発中のものです。
垢版 |
2016/03/09(水) 22:07:48.28ID:bvV2Ln2d
!使うときって、正常終了時は0が返ってきて、エラーの時は0以外(エラー番号)、
ってな関数の時に使うこともある

他人に判りやすく書くなら、S_OKとか使った方がいいんだろうけど
0665名前は開発中のものです。
垢版 |
2016/03/11(金) 13:06:08.83ID:N544VfcK
確かに戻り値0orNot0とstrcmpは分けるべきだったな、失礼。
お願いだから、0<strcmp(a,b)って
書き方だけは止めてくれーーー!!(心の叫び)
0667名前は開発中のものです。
垢版 |
2016/03/11(金) 22:16:16.31ID:N544VfcK
strcmp(a,b)<0は、a<bって脳内変換できるけど、
0<strcmp(a,b)はa>bになって、不等号が逆になっちゃうんだよね

if (a==1) を if(a=1)としてもエラーにならないから
if(1==a)って書きましょうっていう
コーディング規約の影響なんだけと
0670名前は開発中のものです。
垢版 |
2016/03/19(土) 05:49:07.11ID:of13wxGN
Javaのコーディング規則で、必ず左側に、
小さい方を書く、というのを見たことがある

a < b OK
a > b これはダメ
0671名前は開発中のものです。
垢版 |
2016/03/19(土) 23:46:05.96ID:O4bWw4/W
不等号は基本的に小なりを使いたいってのは、分からんではないかな?
「必ず」ってなると面倒そうだが。
0672名前は開発中のものです。
垢版 |
2016/03/23(水) 21:40:01.22ID:Ti6+V5d4
「統一した方がいい」という発想は分かるけど、何でも絶対的な規則で
統一するのが正しいと考えるのは中級プログラマの悪い癖だよ

文脈上、xという変数が意味を持つ箇所で「x > 0」でなく「0 < x」と書くのは
だだの教条主義。「臨機応変」が正解なんだ
0673名前は開発中のものです。
垢版 |
2016/03/24(木) 16:12:48.68ID:CsdUy+70
「初心者がgotoを連発するよりは、全面禁止にしてしまったほうがトラブルが少ない」
みたいな類かもしれない
0674名前は開発中のものです。
垢版 |
2016/03/24(木) 19:13:52.99ID:TxcOybH3
原則的に不等号は直接書かないようにしている。
比較なりなんなりは“ホニャララ”かどうかを判断するためにあるのだから
“ホニャララかどうか”というマクロなり関数なりメソッドにしてる。
0675名前は開発中のものです。
垢版 |
2016/03/25(金) 07:10:43.20ID:5jyLFHUE
その発想も確かに正しいが、
比較1つ程度でなんでもかんでもそれやると、逆にわかりにくくならん?
0676名前は開発中のものです。
垢版 |
2016/03/31(木) 00:24:44.36ID:qFkKshiZ
>>672
よくある規則としては
特別な理由がない限り従うこと
だ。

特に共通部品系を作成する奴はスキルが高い事が大前提のため、規則を無視することが多い。
十分にデバッグするしね
0677名前は開発中のものです。
垢版 |
2016/04/12(火) 00:37:37.91ID:YMU8Fmug
リスト構造ってゲームの場合どういう時によく使われるんだろう?
0682名前は開発中のものです。
垢版 |
2016/04/16(土) 00:29:38.93ID:QR94Rf2u
Siv3D触ってみたけど
while (System::Update())
{
}
こういうスタティック上等、エラーも返すで^^な書き方って何の影響を受けてんの?
0683名前は開発中のものです。
垢版 |
2016/04/16(土) 09:17:43.38ID:wej20Ait
リストは削除と挿入のコストがO(1)だから増えたり減ったりが多いような時に使う
ただし検索コストはO(n)になる
0686名前は開発中のものです。
垢版 |
2016/04/17(日) 05:39:51.98ID:yyaaEcZM
>>677
2Dゲーム作ってます。
リストはキャラ情報繋ぐのに使用。
先頭さえ押さえておけば、キャラ情報領域を総当りしなくても良いので便利。
ついでに作画順番も決まるので、順番を調整すれば重ね合わせも制御できます。
0687名前は開発中のものです。
垢版 |
2016/04/17(日) 08:05:02.97ID:i3HsvLfj
exists みたいなフラグが1つ減るというのは
ちょっとだけスマート。。。かもしれない
0688名前は開発中のものです。
垢版 |
2016/04/24(日) 00:23:52.15ID:MInVRodY
リストじゃなかったら配列ってメモリ配置の事言ってるのか?
データ構造の事なら他にも色々あると思うが
0689名前は開発中のものです。
垢版 |
2016/04/24(日) 00:37:02.19ID:nXkxGb8d
こういうデータ構造が向いてる、ってのが分かってるなら、そっちを使うだけで
用途を限定しなかったら一般的には配列になるんじゃね
0690名前は開発中のものです。
垢版 |
2016/04/24(日) 23:39:03.51ID:MInVRodY
むしろデータ構造なんて用途ありきなんだから用途を限定せずにって前提は無意味な気が
超汎用のコンテナ作ってるならともかく
0691名前は開発中のものです。
垢版 |
2016/07/30(土) 13:10:59.59ID:gYGEPygV
ゲ製板の任意ワッチョイの導入についての投票を8月7日(日)に行います。
ご希望の方は是非参加お願い致します。
http://tamae.2ch.net/test/read.cgi/vote/1469829608/
0692名前は開発中のものです。
垢版 |
2016/08/04(木) 03:44:27.44ID:uSHyJnw3
今からDirectXやろうと思ったらDirectX11でいいんだろうか
9のほうがサンプルとか記事は多いけど…
0694名前は開発中のものです。
垢版 |
2016/08/06(土) 13:22:04.65ID:jvnNi9Fg
1週間前にも告知いたしましたが再度告知致します。
ゲ製板の任意ワッチョイの導入についての投票を8月7日(日)に行います。
スレの>>2の訂正部分に気を付けて是非参加お願い致します。
http://tamae.2ch.net/test/read.cgi/vote/1469829608/
0695名前は開発中のものです。
垢版 |
2016/08/06(土) 18:57:46.72ID:zv4mu8Do
C++ゲーム制作ライブラリで
https://developer.mozilla.org/ja/docs/Web/CSS/border-image
こういう処理を提供しているのってありますかね?
会話ウィンドウとかこういうのあると結構便利だと思うんだけど
0696名前は開発中のものです。
垢版 |
2016/08/07(日) 00:48:34.67ID:KJmZIl4L
【訂正】
>>694において8/7(日)に行うと告知されたワッチョイ導入についての投票ですが、
自治スレでは投票の是非について結論が出ておらず、
現時点において投票の実施が決まったという事実はありません
なお、ワッチョイ導入そのものが否決されたわけではありません
導入についての議論は現在も自治スレにおいて継続中です
ご意見のある方は自治スレまでお越しください

■ ゲーム製作技術板自治04 [無断転載禁止]&#169;2ch.net・
http://echo.2ch.net/test/read.cgi/gamedev/1469698797/
0697名前は開発中のものです。
垢版 |
2016/08/07(日) 01:05:27.05ID:95O87T0V
荒らしが出没しておりワッチョイの議論だけでなく投票自体もまとまらないから
投票を開始しましたが【訂正】と言い投票自体を妨害する方が出没しています。
投票自体は20:59まで行っており、確認時間も23:59までの3時間行っておりますので
是非参加お願いいたします。
http://tamae.2ch.net/test/read.cgi/vote/1469829608/
0699名前は開発中のものです。
垢版 |
2016/11/20(日) 15:53:19.18ID:Zr00I/Qf
             ,彳;;;;;;;;;;;;;;;;;;;;;;;;;;、
           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,ヽ     涙が あとからあとから あふれ出て
          /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;t、                     
          ,';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;z    止めることができなく なる
         !;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i
         |''';;;;;;;;;;;;;'''"  ,;;;;;;;;;;;;;;;;;;;;f ニ;、    マヨーレマヨーレ!
         {丁  "'' _    ,;;;;;;;;;;;;;;;;;//万 !
         ! .i厂\( \       六夂 i、__          http://goo.gl/kY6CYb
         ! .{.\ \  \     ,' ! ‐ ´      ̄ ̄ Zz、
         i >、 ヽ  \  \   |  |              \
        .| \\\   ヽ  ー=  !                .\
         !   \\\ 、,. `'     |                 ヽ
         }   ≧! 、,,.         !                  !
        ノ    .',           |                  |
      ./     八          ',                  !
     /      ./  .>‐、       .∧        :;         .!
   ./       /   / ヽ \      ∧        !:        ハ
 /        /  ./   ',  ヽ     .∧      /        ノ i
         / /      ,  ',      ∧      !        '  !
        //        !  ∨     ∧    ,'         i  .!
      / /         セ、  ∨     ∧   !         !  .|
    /z ´            .\ ∨      \ _|         .'  .|
0700長留裕平
垢版 |
2016/11/29(火) 21:25:56.43ID:s/ljbuDp
ブックオフで本がうってるぜそれを全部買ってこい
0701長留裕平 ◆lirqr6DwLQ
垢版 |
2016/11/29(火) 21:26:57.45ID:s/ljbuDp
ブックオフで本が打ってるぜそれをかってこい
0702長留裕平 ◆lirqr6DwLQ
垢版 |
2016/11/29(火) 21:28:24.55ID:s/ljbuDp
ブックオフで本が打ってるぜそれを全部買ってこい
0703長留裕平 ◆lirqr6DwLQ
垢版 |
2016/11/29(火) 21:29:50.98ID:s/ljbuDp
柴田さんを崇めなさい
0704名前は開発中のものです。
垢版 |
2016/12/05(月) 22:18:08.65ID:ZTsIsC0K
並列処理しても、キャッシュ機構がネックになるから、
参照するヒープが膨大だと、
必ずしも速度倍率=動員コア数とはならないな
0708名前は開発中のものです。
垢版 |
2017/08/11(金) 19:45:04.06ID:aPax3ehE
namespace GameObject{
namespace Player{}
class Player;
}

visual studioで上記のことやりたいんだけどできないんだけ?
前提としてフォルダとnamespace構造をいっしょにしたい。

現状の実装
namespace Player{
class Player{};
//PlayerHelperClass,Function
}
みたいなことやっているけど
GameObject::Player::Playerってなんだか気持ちが悪い
これを避けるためにnamespace PlayerHelperを作ったほうがいいのか悩んでるんですけど

皆様はどうしてます?
0710名前は開発中のものです。
垢版 |
2017/08/12(土) 18:22:36.69ID:iYZm+7V9
ありですな
ありがとう

クラス内クラスにする場合、クラス内に前方宣言しとかないといけないのが欠点だけど
大した手間ではないけどうーんこれがベターか?
c++ではpartial class的なことできればな
ヘッダー汚れなくて済むのに


他のコンパイラだとnamespaceとclass被ってもコンパイルできたりするのに


player.hとplayerhelperfuncを同じフォルダに入れたかったから今の設計にしたんだと思うけど、別に同じフォルダに入れなくてもいい気もしてきた

ありがとうございました
0711名前は開発中のものです。
垢版 |
2017/12/31(日) 19:27:52.04ID:/rN76OKL
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

L23CW9IZ1K
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況