トップページgamedev
1001コメント353KB

C/C++ゲーム製作総合スレッド Part4

レス数が1000を超えています。これ以上書き込みはできません。
0001名前は開発中のものです。2013/08/12(月) NY:AN:NY.ANID:RPqvnGkC
ゲーム製作におけるC/C++全般に関するスレです。

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

前スレ
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/
0932名前は開発中のものです。2014/01/03(金) 23:44:33.00ID:SeRszv4P
セーブデータってやっぱりキャラクタークラスのポインタからスカラにまで落としてテキストで保存した方がいいの?

セーブデータ用のクラスの作ってセーブする時にデータぶっこんでバイナリしゅわーんして
ロードする時にクラスのインスタンスの先頭アドレスあたりからバイナリどかーんってやってその後しこしこ値を取り出せたらかっこいいんだけど
vectorとか可変長データ扱えなさそう
0933名前は開発中のものです。2014/01/04(土) 01:24:45.05ID:T7k3xx9e
>>932
Boostパワーでしこしこシコりまくってドカーン、アヘーって保存したほうがいい
ポインタに関連する全てが壊れるが
0934名前は開発中のものです。2014/01/06(月) 00:34:31.58ID:eOuf/sxJ
意味ねぇ
0935名前は開発中のものです。2014/01/06(月) 08:45:40.08ID:Db3wqsOf
ポインタ壊さないのがBoostパワーだろ
0936名前は開発中のものです。2014/01/06(月) 08:49:45.11ID:g6N0ueBX
>>931
便利だけど
0937名前は開発中のものです。2014/01/06(月) 11:42:45.19ID:VBpdL55v
言語仕様の限界であの程度のことしかできないのは仕方ないさ
0938名前は開発中のものです。2014/01/06(月) 17:24:43.54ID:eOuf/sxJ
雲ってどうやって表示してる?
板ポリ一枚だとPS1みたいになっちゃうね
0939名前は開発中のものです。2014/01/06(月) 18:15:44.70ID:P4CMWCe+
http://game.watch.impress.co.jp/docs/20070307/cry2.htm
雲のレンダリング〜自然に見える工夫とは?
0940名前は開発中のものです。2014/01/06(月) 18:18:03.96ID:x7/aJO38
海の波ってどうやって自然に表示してる?
0941名前は開発中のものです。2014/01/06(月) 18:33:28.69ID:g6N0ueBX
その辺はもう初心者向けの内容じゃないので、NVIDIAのGemsとか読むとヒントがあるかも。
俺も一冊持ってるけど。
0942名前は開発中のものです。2014/01/07(火) 00:45:34.95ID:NZ+rg5Nj
ゲームとしては水や雲ってすごく基本的なことなのにやたら難しいよね
参考サイトもろくに無くて挫折ポイントですよ
水って透明なブロック状3Dモデルに青いテクスチャーはっ付けてテクスチャー滑らせてるだけかと思ってた
0943名前は開発中のものです。2014/01/07(火) 09:24:51.89ID:NXlvb1xx
リアルな水や雲がゲームの基本的な事って言う発想が既にかなり間違ってる。
その辺は完全にビジュアルとしての演出処理の範疇で、さらにその辺は設計者やプログラマの創意工夫の分野なので、
特に教科書的な単一の正解も無いから、方法も様々だし書きようがない。

ただ、ジュンク堂みたいなでかい本屋行くと、NVIDIAが出してる技術書とか置いてると思うので、読んでみるといい。
考え方や部分式が書いてあるから。
0944名前は開発中のものです。2014/01/07(火) 09:37:17.00ID:NXlvb1xx
ちなみにGemsのその辺の文献は、見ればわかると思うけど初心者向けの内容じゃなく、応用編の先の先の世界なので、
プログラミングに熟練してる事がまず大前提で、特にシェーダプログラミング当たり前。
その中で最低限高校数学B以上の知識も必要でそれ以上が無いと多分説明そのものが理解できない。
何も前提が無い人向けにあれの説明始めたら、何倍のテキスト量になるかわからないほどの内容。

もしもあなたが理系の大学生かまたはビジュアル処理の研究者だったら、かなり参考になると思う。
そうじゃなくても知識と想像力と実験力持ってれば行けると思うけど。
とにかく、興味あったら一度手にとって実際に自分で目を通して。俺が言ってる意味がわかるから。
0945名前は開発中のものです。2014/01/07(火) 11:26:35.53ID:8Imh3hEk
そんなレベルの奴が雲だの水だの言ってんのかよwww
0946名前は開発中のものです。2014/01/07(火) 11:35:52.88ID:d36JERXj
あかん
数学の知識は因数分解の所で止まっとる

知恵袋にプログラミングは数学や英語の知識なんて必要ないって書いてあったのに嘘つかれた
今から独学で勉強するのキツイだろうな
0947名前は開発中のものです。2014/01/07(火) 11:37:24.42ID:d36JERXj
何でも難しい計算は全てコンピュータがやってくれるから人間が考える必要ないとか何とか言ってた
0948名前は開発中のものです。2014/01/07(火) 12:04:12.55ID:8Imh3hEk
×難しい計算
○めんどくさい計算
0949名前は開発中のものです。2014/01/07(火) 12:22:01.86ID:n8ArE3NN
言っても初等数学だし
むしろ因数分解のほうがコンピュータ的には難しいくらい
0950名前は開発中のものです。2014/01/07(火) 17:16:08.90ID:PeCFLZx5
計算はコンピュータがするが、
計算手順は人様がコンピュータに教えてやらねばならん。
0951名前は開発中のものです。2014/01/07(火) 17:45:36.74ID:3gFkFxX8
メンバ関数を持つクラスを、配列で宣言した場合、
そのメンバ関数内で自分が配列の何番目であるかを取得するにはどうしたらいいでしょうか?
0952名前は開発中のものです。2014/01/07(火) 19:03:53.37ID:1ME8U7de
クラスのメンバ変数として番号を保持すれば良いのでは
0953名前は開発中のものです。2014/01/07(火) 19:54:00.03ID:3gFkFxX8
レスありがとうございます。
それはもちろん考えたんですけど、いちいち設定するのってスマートじゃないから他に方法があるかなと思いまして。

そもそも配列の番号を頻繁に必要とする時点で設計を間違ってるとは思うのですが、まだ力不足でして……。
0954名前は開発中のものです。2014/01/07(火) 20:00:24.75ID:PeCFLZx5
配列のポインタをそのクラスに持たせて
自身のポインタかなんらかのID値を配列から検索して割り出す。
0955名前は開発中のものです。2014/01/07(火) 20:05:26.71ID:/OJHyl0l
アドレス解ってんなら引き算するだけだろ
0956名前は開発中のものです。2014/01/07(火) 22:49:15.44ID:sv99VL0o
>>779
遅レスだが
ttp://www.youtube.com/watch?v=Y4PNIzOoZ3Q
ttp://j-lyric.net/artist/a055706/l025d97.html
0957名前は開発中のものです。2014/01/08(水) 01:05:19.44ID:RZLLvdiF
それ、番号を使用している場所を
番号の代わりにポインタを使うようにすれば
すっきりしそうに思える
勘で言うけど
0958名前は開発中のものです。2014/01/08(水) 01:15:34.47ID:GhGooqG2
>>947
その辺の話は、>>950 も言ってるけど、もともとコンピュータに何をやらせたいのかって話と、
単純にプログラミング行為そのものの話を一緒くたにしてる一般の人が陥る話。

簡単な例で言えば、会社会計の処理をするプログラムを作ろうとしたら、会計士が求めるような用件しらないと作れない。
でも単純にプログラミングする上で会社会計や決算についての知識は必須か?って言われたら明らかに不要。
それと同じ。やらせたい事自体の本質は何で、そこになんの知識が必要かってのは目的によるって事。

それが違えば高度な数学がいる事もあるし、まったくいらない事もあるってだけ。
0959名前は開発中のものです。2014/01/08(水) 07:29:15.57ID:BLQUEdhx
一般的なプログラマが作る業務アプリなんかはゲームで使う幾何計算とか無縁だからな
ワークフローにそった処理作るだけだからそりゃ数学は必要ない
0960名前は開発中のものです。2014/01/08(水) 20:23:42.14ID:+GfACctw
でも原理は知っておかないと。
例えば三角関数の軽量版が作れないなら、ゲームプログラミングでは意味が無い。
0961名前は開発中のものです。2014/01/08(水) 22:34:47.56ID:RZLLvdiF
そうなんだすごい
0962名前は開発中のものです。2014/01/08(水) 23:57:43.70ID:tURBup32
ごめん流れ変わるけど
よく当たり判定用のフレームを用意して判定すると軽いっていうけど、
一発で判定用フレームって作れないもんかなぁ
Metasequoiaでやってるけどなんかスムーズにいかない
0963名前は開発中のものです。2014/01/09(木) 09:01:51.31ID:cr9CxzXm
頂点の数を減らすだけでいいんじゃないかな
0964名前は開発中のものです。2014/01/09(木) 09:21:22.68ID:HCIaBE+5
>>962
convex-hull でググれ。
ちなみにbullet にその計算生成処理を実装した機能あるよ
0965名前は開発中のものです。2014/01/09(木) 18:11:14.52ID:u/5Mkl0f
>>963
それだと形が変わっちゃうからなぁ
>>964
物理エンジンか・・・プログラム側でやるのか
0966名前は開発中のものです。2014/01/10(金) 03:11:17.85ID:MSpxeAqe
http://toro.2ch.net/test/read.cgi/gamedev/1175423459/691
  ↑  ↑  ↑   ↑  ↑  ↑
0967名前は開発中のものです。2014/01/10(金) 09:29:44.91ID:YP8fX2qG
>>965
プログラムでやらずにどこでやるつもり
データとして最初から用意しておきたいって話なら、例えばその生成データを自分でファイルに書き出してもいいし、
あるいはBlenderのShrinkWrapでも使って作っても良い訳だし
0968名前は開発中のものです。2014/01/12(日) 18:08:59.19ID:MPtGFllK
あるクラスの集合を表すクラスってなんて命名したら良いのかな?

今個別のキー入力を確認できるクラス作ってたんだけど
class KeyState {

}
09699682014/01/12(日) 18:17:38.04ID:MPtGFllK
すまんミスった。


今のところ(かなり簡略化してる)
class KeyState {
 bool isKeyDown();
}

class KeysState {
 bool isKeyDown(int keyNo);
}

class KeysStateManager {
 bool isKeyDown(int joypadNo, int keyNo);
}

って感じなんだけど、上2つがかなり紛らわしい。
0970名前は開発中のものです。2014/01/12(日) 18:33:44.45ID:Z1XqjjE5
Win32APIだと
GetKeyState() // 引数で与えた特定のキーの状態を取得
GetKeyStates() // 全部のキーの状態を取得
だな。
まぁ集合って意味なら安直にKeySetStateとか。
あるいはKeyboardState、GamepadState、InputDeviceState
みたいな、デバイスのステートって感じにするとか。
0971名前は開発中のものです。2014/01/12(日) 18:35:46.99ID:n6PHKqWH
>>969
上2つの動作の違いを書いてくれ
クラス分けする必要が無いように感じる

とりあえずエスパーで回答すると
1、1つ目の方には引数が無いから何かしら押している状態で2つ目が引数が1つあるから特定のキーを押した場合と考える
そうすると1つ目にはisAnyKeyStateクラスのisKeyDown関数で2つ目にisKeyStateクラスのisKeyDown(int keyNo)関数とする

2、何かもう色々とアレだから違うこと書く気がするから参考にしないでくれ
class Keybord {
 bool isAnyKeyDown();

 bool isKeyDown(int keyNo);

 bool isKeysDown(const char *keyNo, ...);
}

class Joypad {
 bool isButtonDown(int joypadNo, int buttonNo);
}

class Input {
 Keybord keybord;
 Joypad joypad;
}
0972名前は開発中のものです。2014/01/12(日) 18:37:37.90ID:n6PHKqWH
>>970
2.5秒程で訳わからんこと書いてすまん

>>969
>>970言ってる事が合ってる気がする
0973名前は開発中のものです。2014/01/12(日) 18:49:50.88ID:MPtGFllK
>>970-971
即レスサンクス!

>>970
>KeySetState
おおなるほど、このやり方があったのね。
接尾にListとかSetとか来るとコンテナの派生と紛らわしいかなーと思ったけど
このやり方ならそれらと区別が付いて良さそうだね。

>>971
わざわざ詳しくありがとう
ごめん、AnyKeyの判定をするんではなくて「ある1つのキー」のクラスだったね
0974名前は開発中のものです。2014/01/13(月) 00:25:18.86ID:8rTnWJUa
そして複数形が同じ単語にハマるところまでがワンセット(笑)
0975名前は開発中のものです。2014/01/13(月) 00:58:21.33ID:+6YQ2j+G
まつ毛の動かし方分からなくて詰んだ
最近のゲーム(というかPS2あたりから)で目ぱちぱちとかあるけど
あれプログラムで動かしてるの?それともボーン仕込み・・・?
0976名前は開発中のものです。2014/01/13(月) 01:10:50.23ID:CQvg+bCd
>>975
プログラムが楽したいならボーンでやると良い
リソースが楽したいならプログラムでやると良い
0977名前は開発中のものです。2014/01/13(月) 01:37:49.47ID:Y/TFSFDf
プログラムで動かすにしろ、ボーンなりモーフターゲットなりUVアニメなりは必要だろ
0978名前は開発中のものです。2014/01/13(月) 02:12:43.03ID:lO/bB9XF
イニシャライザ誤解しててえらいめにあったぜ

struct Rect
{
int x, y, w, h = 100;
};

他の言語だと4つとも100になるのだがc++だと最後のhだけなのな。
0979名前は開発中のものです。2014/01/13(月) 04:42:26.60ID:8rTnWJUa
そーいや、そのへん言語によって結構バラバラだった気がするな
0980名前は開発中のものです。2014/01/13(月) 11:05:14.35ID:+6YQ2j+G
>>976-977
ボーン必要か・・・サンクス
ただ試してみたけど間接曲げるのとは違って歪むなぁ
0981名前は開発中のものです。2014/01/13(月) 12:10:07.33ID:CQvg+bCd
>>980
1本の毛で2〜3本付ける感じでやると滑らかになるよ
といっても1本の毛じゃなくて片方の睫毛全体を横に3分割して、それを2〜3本の骨にする感じだけど
0982名前は開発中のものです。2014/01/13(月) 12:43:34.80ID:IMZjRt9B
まつ毛ってアルファ付きの海苔一枚じゃないのん?
0983名前は開発中のものです。2014/01/13(月) 13:24:24.95ID:PT945YBU
>>978
逆に、それで4つとも100になる言語って何だろうって思ってしまった。

ちなみにPythonだとタプル表現でまとめて格納は出来るけど、あれイニシャライザとしての動作じゃないしなぁと。
0984名前は開発中のものです。2014/01/13(月) 13:39:44.43ID:yhTeQc76
4つとも100になる言語がわからない
0985名前は開発中のものです。2014/01/13(月) 14:48:31.24ID:CQvg+bCd
100になる言語が大半でしょ
とか思ってたら=じゃなくて,なのか
あるのかよ?
0986名前は開発中のものです。2014/01/13(月) 15:12:06.67ID:jUM+Z6Pm
ちょっと違うけどアリスソフトのSystem4には
const int a=1, b, c, d;

a=1, b=2, c=3, d=4
なんつー奇妙な初期化があったな
0987名前は開発中のものです。2014/01/13(月) 15:17:30.37ID:yhTeQc76
列挙型と思えばまあ
0988名前は開発中のものです。2014/01/13(月) 15:45:58.33ID:Jd6+e9YY
>>982
はい
0989名前は開発中のものです。2014/01/13(月) 17:41:02.61ID:hQVVoc94
a, b, c, d = 1, 2, 3, 4
というのならあるけど、>>978は知らんなあ
0990名前は開発中のものです。2014/01/13(月) 23:25:06.63ID:8rTnWJUa
>>986
ふいた。
何その変態仕様w 嫌いじゃないぜ
0991名前は開発中のものです。2014/01/13(月) 23:37:35.74ID:CQvg+bCd
もうさ
1行に制御1つって仕様にしようぜ
int a = 1;
int b = 2;
int c = 3;
int d = 4;
みんなこうしよう!
0992名前は開発中のものです。2014/01/13(月) 23:45:04.64ID:TvUGg5Yy
int a=1,b=2,c=3,d=4;
がいいな
0993名前は開発中のものです。2014/01/13(月) 23:49:21.40ID:yhTeQc76
const int a = 1;
const int b = 2;
...
0994名前は開発中のものです。2014/01/13(月) 23:54:47.58ID:TvUGg5Yy
defineとかわんないよ
0995名前は開発中のものです。2014/01/16(木) 00:01:51.69ID:w6WW3hAo
次スレ立てたよ〜

C/C++ゲーム製作総合スレッド Part5
http://toro.2ch.net/test/read.cgi/gamedev/1389798031/
0996名前は開発中のものです。2014/01/16(木) 01:28:24.43ID:O05vNItA
>>995
乙ーん
0997名前は開発中のものです。2014/01/16(木) 01:37:05.69ID:mCTAN+WW
>>995

0998名前は開発中のものです。2014/01/16(木) 19:48:55.90ID:w6WW3hAo
>>994
実は微妙に違う。こんな事が出来る。
const int w=getW(),h=getH();
0999名前は開発中のものです。2014/01/17(金) 00:51:28.29ID:gg+ew/zx
#defineとconstってどっちのほうが速いっていうかメモリに無駄が少ないんかね
最適化で同じになるかな
1000名前は開発中のものです。2014/01/17(金) 01:51:34.77ID:9+qwa48r
#define をなんだと思ってるんだ君は
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。