C/C++ゲーム製作総合スレッド Part4
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。
2013/08/12(月) NY:AN:NY.ANID:RPqvnGkC元スレ
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/
0885名前は開発中のものです。
2013/12/24(火) 18:15:55.42ID:L2qvgLfJさらに言うと、その判定の後でどのくらいめりこんだかの差分取ってキャラの位置戻すだけだよな。
0886名前は開発中のものです。
2013/12/24(火) 18:27:20.28ID:fizHiSzP今まで俺は何をやってたんだ!と思っちゃうレベルに楽チン
0887名前は開発中のものです。
2013/12/24(火) 19:32:38.32ID:L2qvgLfJ0888名前は開発中のものです。
2013/12/24(火) 20:47:42.39ID:JHDIB0t6以前に作ったことはあるんだけど、色々と問題(課題)もあって
解決の糸口が見つからないままなんだよ。
0889名前は開発中のものです。
2013/12/24(火) 21:08:19.97ID:GKhtGcW20890名前は開発中のものです。
2013/12/24(火) 21:29:12.06ID:SJQjNZFD1フレームあたり移動距離の途中でぶつかることがあるからね
俺は悩んで結局投げた経験あるわ
シューティング系のコモン探して参考にしてみたらどうかな
0891名前は開発中のものです。
2013/12/24(火) 21:29:29.81ID:JHDIB0t6例えば下図のように、斜めブロックと四角ブロックが並んでいて
A ______
/| |
/_|_B _|
A地点からB地点まで1フレームで移動した場合に、右の四角ブロックだけ判定して移動を戻してたから
両方のブロックの間に挟まってしまってた。
0892名前は開発中のものです。
2013/12/24(火) 22:26:58.00ID:jnOze0P52Dのアクションゲーでのブロック判定とか超絶黒歴史を思い出させるな!
1フレームでの移動距離を一気に移動させるんじゃなくて1フレームの中で少しずつその距離になるようにループで移動させて
表示的には1フレームで移動してるけど内部的には1フレーム内で何回も移動してるとか
そんなクソ処理しか書けなかった黒歴史は忘れさせてよお!
ちなみに今でもどうするのが正解かわからん
0893名前は開発中のものです。
2013/12/24(火) 22:35:04.90ID:bbz6Sep5なお壁に向かって走ると重くなるもよう
0894名前は開発中のものです。
2013/12/25(水) 03:10:45.93ID:0d//DW0c0895名前は開発中のものです。
2013/12/25(水) 04:06:58.17ID:FupEURWJ「ぶつかったら移動速度を-1して再判定」でも問題なく動く。
さすがに数百個でそれやったら重かったので、二分木もどきに改造したけど。
0896名前は開発中のものです。
2013/12/25(水) 08:58:32.32ID:xJny3ejoif( atari() )
{
pos_x -= idouryou;
}
ってやるから駄目なんだろ
for(int i=0; i<idouryou; i++)
{
pos_x++;
if( atari() )
{
pos_x--;
}
}
ってやればいいじゃん
0897名前は開発中のものです。
2013/12/25(水) 08:59:37.02ID:xJny3ejo向いてないから死んだ方がいいよ
0898名前は開発中のものです。
2013/12/25(水) 09:07:38.39ID:nCzBXRKQこれって>>892が発狂してたやつと同じやり方じゃね?
後、せめてbreak書こうぜ(ドヤッ
>>897
この程度も思いつかないとかなんなの
向いてないから死んだ方がいいよとか書いてるくせに
この程度の処理を軽くすることすら思いつかないとかなんなの
向いてないから死んだ方がいいよ
0899名前は開発中のものです。
2013/12/25(水) 09:20:17.32ID:9WcWfovO生 同 .じ . /´ | (ゝ___) い
.し 士 .レ .__/'r-┴<ゝi,,ノ ro、 は、
.な で .ベ ∠ゝ (ゝ.//` ./`| }⌒j
.い し .ル } ⌒ /`ヽ、_∠l,ノ ・ヽ´
.! ! か の / ´..:.} >、、___, .r、 ソ、`\
/ ..:.:.} / |∨ ` ̄
/ ..:.:./ | 丶
/ _、 ..:.:.:.{ .{.:.:. \
{ ..:Y .ゝ、 {.:.:.:.:. ヽ
|、 ..:/ 丿 .:〉 >.- ⌒ . ヽ
/ {. ..:./ ソ ..:./ .( ..:.:.:` ..:}
./..:.:}.:.:./ ヘ、 ..:./ .\ ..:.:r_,ノ、.:.:}
./..:.:/|.:/ {.:./ X.:.:}.} X X
/..:.:/ .}.:| }:/ .Y丶ヽ Y.:Y
. __/.:/ { } 《.〈、 _,,__>.:》丶 Y.:\
/.:.:.:.:.::/ !.:.:ゝ ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ \.: ̄>
0900名前は開発中のものです。
2013/12/25(水) 09:39:38.15ID:Zg4NIAsR男は黙ってcontinue
0901名前は開発中のものです。
2013/12/25(水) 10:08:54.97ID:FupEURWJ0902名前は開発中のものです。
2013/12/25(水) 10:09:07.15ID:MUlFxvaY上にあるし…うわぁ…
0903名前は開発中のものです。
2013/12/25(水) 10:17:42.98ID:gB5lV3uA0904名前は開発中のものです。
2013/12/25(水) 10:25:40.90ID:CUbWJvC8どっちの軸か、じゃなくて方向ベクトルに対して逆向きにするだけじゃないの?
0905名前は開発中のものです。
2013/12/25(水) 11:11:41.57ID:FupEURWJ基本は、めり込んだ距離の短い方に合わせる。
ただ個人的には、よほど差がなければy方向(上下)に優先的にずらす方が好み。
0906名前は開発中のものです。
2013/12/25(水) 11:20:22.37ID:xJny3ejoxとyは別々に処理する
xを処理したときはxを戻せばいいし
yを処理したときはyを戻せばいい
この程度も思いつかないとかなんなの
向いてないから死んだ方がいいよ
0907名前は開発中のものです。
2013/12/25(水) 11:49:07.39ID:j1ogVw80それXとYどっちを先に処理するかって事だから903の言ってるXとYのどっちにするかという問題の解決にまったくなってないわけだが。
0908名前は開発中のものです。
2013/12/25(水) 12:04:44.50ID:nCzBXRKQ無駄な繰り返しをしないように
typedef struct position {
int x;
int y;
} position;
position pos;
for(int i=0; i<movement; i++) {
pos.x++;
if(hit()) {
pos.y--;
break;
}
}
このほうが無駄な繰り返しが発生しなくなるからその分軽くなると思うんだが
continueだと結局無駄に繰り返すから意味無いし
0909名前は開発中のものです。
2013/12/25(水) 12:07:03.91ID:MUlFxvaY処理分岐の中に入るかどうかで決まる
0910名前は開発中のものです。
2013/12/28(土) 14:45:57.99ID:aLH6Im8H0911名前は開発中のものです。
2013/12/28(土) 15:33:11.78ID:XE/X4C7O0912名前は開発中のものです。
2013/12/28(土) 15:41:39.94ID:uwB+NH0s0913名前は開発中のものです。
2013/12/28(土) 15:51:47.55ID:aLH6Im8H0914名前は開発中のものです。
2013/12/28(土) 16:11:33.83ID:XE/X4C7O0915名前は開発中のものです。
2013/12/28(土) 16:21:18.45ID:aLH6Im8Hごめんorz
とりあえずソース書いてもらえると助かる
0916名前は開発中のものです。
2013/12/28(土) 16:59:11.51ID:i2BOVD4X0917名前は開発中のものです。
2013/12/28(土) 17:23:47.64ID:XE/X4C7Oメンバ変数とか関係なく、普通に配列へ代入するつもりでやる。ほんと普通に。
MyClass :: MyClass()
{
for(int i=0; i<MAX; ++i) array[i]=0;
}
0918名前は開発中のものです。
2013/12/28(土) 20:05:03.83ID:pCtwY2nWdefault デファウルト
0919名前は開発中のものです。
2013/12/28(土) 22:12:30.45ID:os0Do0OO引数付きコンストラクタをもったクラスの配列とかもありえるから
>>917のやり方で統一するのは一貫性があって良いと思う
0920名前は開発中のものです。
2013/12/29(日) 13:02:30.27ID:iivLZ8bD> プリミティブ型なら違う楽な書き方もあるけど
よかったらそのやり方教えて
0921名前は開発中のものです。
2013/12/29(日) 13:05:59.62ID:hFtnegM4「なぜ>>917が推奨されてるか理解しないまま、見た目がそれっぽいからという理由だけで楽な書き方を導入してその後どつぼにはまる」
流れ
0922名前は開発中のものです。
2013/12/29(日) 16:46:30.01ID:HeVOdclw>>919のこともあるしそもそもC++なんだから使うなって感じだけど
0923名前は開発中のものです。
2013/12/31(火) 07:47:28.85ID:bQaohfnRモチベーションはどうやって保ってますか
0924名前は開発中のものです。
2013/12/31(火) 07:58:30.67ID:W1ftg64k身体動かすと視床下部が刺激されてやる気出るし
0925名前は開発中のものです。
2013/12/31(火) 10:03:52.57ID:B8nb+CLa勉強とか仕事とか。
現実逃避してこっちをやりたくなる。
0926名前は開発中のものです。
2013/12/31(火) 10:09:41.40ID:MF4G8rMr0927名前は開発中のものです。
2013/12/31(火) 14:52:14.77ID:sUWQv5G4ロード画面でセーブデータのプレイ時間とかちょっとした情報を表示するにはどうすればいいのかな?
というか俺のシリアライズのやり方次第で詰んでる可能性も?
シリアライズ時にゲームオブジェクトから直接ストリームに順番に書き出して、
デシリアライズ時にゲームオブジェクトに順番に直接復元する方式にしちゃったんだけど、
もしかしてここは、ゲームオブジェクトのデータから「セーブデータクラス」をいったん生成して、
そいつをシリアライズ対象にして、復元時はセーブデータクラスの値からゲームオブジェクトを復元しないといけなかった?
でもそうするとポインタの復元が難しいというか、Mementoパターンとか深く考えずに、
Boostシリアライズのパワーに頼ってしまったんだが、セーブデータからは極力ポインタを
排除するようにしたほうが良かったんだろうか
0928名前は開発中のものです。
2013/12/31(火) 14:54:28.55ID:LVQwhj610929名前は開発中のものです。
2013/12/31(火) 15:23:07.56ID:sUWQv5G4迅速な回答ありがとうございます!
なるほど「セーブデータクラス」ではなく「セーブデータヘッダークラス」で十分なんですね、
これにBoostパワーで得たストリームをくっつけてみます、ありがとうございました
0930名前は開発中のものです。
2014/01/01(水) 23:41:19.87ID:ZZixNcFD0931名前は開発中のものです。
2014/01/01(水) 23:47:52.86ID:TDYNLr8Cboostなんて大して便利ではないことに気づくだろう
0932名前は開発中のものです。
2014/01/03(金) 23:44:33.00ID:SeRszv4Pセーブデータ用のクラスの作ってセーブする時にデータぶっこんでバイナリしゅわーんして
ロードする時にクラスのインスタンスの先頭アドレスあたりからバイナリどかーんってやってその後しこしこ値を取り出せたらかっこいいんだけど
vectorとか可変長データ扱えなさそう
0933名前は開発中のものです。
2014/01/04(土) 01:24:45.05ID:T7k3xx9eBoostパワーでしこしこシコりまくってドカーン、アヘーって保存したほうがいい
ポインタに関連する全てが壊れるが
0934名前は開発中のものです。
2014/01/06(月) 00:34:31.58ID:eOuf/sxJ0935名前は開発中のものです。
2014/01/06(月) 08:45:40.08ID:Db3wqsOf0936名前は開発中のものです。
2014/01/06(月) 08:49:45.11ID:g6N0ueBX便利だけど
0937名前は開発中のものです。
2014/01/06(月) 11:42:45.19ID:VBpdL55v0938名前は開発中のものです。
2014/01/06(月) 17:24:43.54ID:eOuf/sxJ板ポリ一枚だとPS1みたいになっちゃうね
0939名前は開発中のものです。
2014/01/06(月) 18:15:44.70ID:P4CMWCe+雲のレンダリング〜自然に見える工夫とは?
0940名前は開発中のものです。
2014/01/06(月) 18:18:03.96ID:x7/aJO380941名前は開発中のものです。
2014/01/06(月) 18:33:28.69ID:g6N0ueBX俺も一冊持ってるけど。
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プログラミングに熟練してる事がまず大前提で、特にシェーダプログラミング当たり前。
その中で最低限高校数学B以上の知識も必要でそれ以上が無いと多分説明そのものが理解できない。
何も前提が無い人向けにあれの説明始めたら、何倍のテキスト量になるかわからないほどの内容。
もしもあなたが理系の大学生かまたはビジュアル処理の研究者だったら、かなり参考になると思う。
そうじゃなくても知識と想像力と実験力持ってれば行けると思うけど。
とにかく、興味あったら一度手にとって実際に自分で目を通して。俺が言ってる意味がわかるから。
0945名前は開発中のものです。
2014/01/07(火) 11:26:35.53ID:8Imh3hEk0946名前は開発中のものです。
2014/01/07(火) 11:35:52.88ID:d36JERXj数学の知識は因数分解の所で止まっとる
知恵袋にプログラミングは数学や英語の知識なんて必要ないって書いてあったのに嘘つかれた
今から独学で勉強するのキツイだろうな
0947名前は開発中のものです。
2014/01/07(火) 11:37:24.42ID:d36JERXj0948名前は開発中のものです。
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:1ME8U7de0953名前は開発中のものです。
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:/OJHyl0l0956名前は開発中のものです。
2014/01/07(火) 22:49:15.44ID:sv99VL0o遅レスだが
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その辺の話は、>>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:RZLLvdiF0962名前は開発中のものです。
2014/01/08(水) 23:57:43.70ID:tURBup32よく当たり判定用のフレームを用意して判定すると軽いっていうけど、
一発で判定用フレームって作れないもんかなぁ
Metasequoiaでやってるけどなんかスムーズにいかない
0963名前は開発中のものです。
2014/01/09(木) 09:01:51.31ID:cr9CxzXm0964名前は開発中のものです。
2014/01/09(木) 09:21:22.68ID:HCIaBE+5convex-hull でググれ。
ちなみにbullet にその計算生成処理を実装した機能あるよ
0965名前は開発中のものです。
2014/01/09(木) 18:11:14.52ID:u/5Mkl0fそれだと形が変わっちゃうからなぁ
>>964
物理エンジンか・・・プログラム側でやるのか
0966名前は開発中のものです。
2014/01/10(金) 03:11:17.85ID:MSpxeAqe↑ ↑ ↑ ↑ ↑ ↑
0967名前は開発中のものです。
2014/01/10(金) 09:29:44.91ID:YP8fX2qGプログラムでやらずにどこでやるつもり
データとして最初から用意しておきたいって話なら、例えばその生成データを自分でファイルに書き出してもいいし、
あるいはBlenderのShrinkWrapでも使って作っても良い訳だし
0968名前は開発中のものです。
2014/01/12(日) 18:08:59.19ID:MPtGFllK今個別のキー入力を確認できるクラス作ってたんだけど
class KeyState {
}
0969968
2014/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:Z1XqjjE5GetKeyState() // 引数で与えた特定のキーの状態を取得
GetKeyStates() // 全部のキーの状態を取得
だな。
まぁ集合って意味なら安直にKeySetStateとか。
あるいはKeyboardState、GamepadState、InputDeviceState
みたいな、デバイスのステートって感じにするとか。
0971名前は開発中のものです。
2014/01/12(日) 18:35:46.99ID:n6PHKqWH上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:n6PHKqWH2.5秒程で訳わからんこと書いてすまん
>>969
>>970言ってる事が合ってる気がする
0973名前は開発中のものです。
2014/01/12(日) 18:49:50.88ID:MPtGFllK即レスサンクス!
>>970
>KeySetState
おおなるほど、このやり方があったのね。
接尾にListとかSetとか来るとコンテナの派生と紛らわしいかなーと思ったけど
このやり方ならそれらと区別が付いて良さそうだね。
>>971
わざわざ詳しくありがとう
ごめん、AnyKeyの判定をするんではなくて「ある1つのキー」のクラスだったね
0974名前は開発中のものです。
2014/01/13(月) 00:25:18.86ID:8rTnWJUa0975名前は開発中のものです。
2014/01/13(月) 00:58:21.33ID:+6YQ2j+G最近のゲーム(というかPS2あたりから)で目ぱちぱちとかあるけど
あれプログラムで動かしてるの?それともボーン仕込み・・・?
0976名前は開発中のものです。
2014/01/13(月) 01:10:50.23ID:CQvg+bCdプログラムが楽したいならボーンでやると良い
リソースが楽したいならプログラムでやると良い
0977名前は開発中のものです。
2014/01/13(月) 01:37:49.47ID:Y/TFSFDf0978名前は開発中のものです。
2014/01/13(月) 02:12:43.03ID:lO/bB9XFstruct Rect
{
int x, y, w, h = 100;
};
他の言語だと4つとも100になるのだがc++だと最後のhだけなのな。
0979名前は開発中のものです。
2014/01/13(月) 04:42:26.60ID:8rTnWJUa0980名前は開発中のものです。
2014/01/13(月) 11:05:14.35ID:+6YQ2j+Gボーン必要か・・・サンクス
ただ試してみたけど間接曲げるのとは違って歪むなぁ
0981名前は開発中のものです。
2014/01/13(月) 12:10:07.33ID:CQvg+bCd1本の毛で2〜3本付ける感じでやると滑らかになるよ
といっても1本の毛じゃなくて片方の睫毛全体を横に3分割して、それを2〜3本の骨にする感じだけど
0982名前は開発中のものです。
2014/01/13(月) 12:43:34.80ID:IMZjRt9B0983名前は開発中のものです。
2014/01/13(月) 13:24:24.95ID:PT945YBU逆に、それで4つとも100になる言語って何だろうって思ってしまった。
ちなみにPythonだとタプル表現でまとめて格納は出来るけど、あれイニシャライザとしての動作じゃないしなぁと。
0984名前は開発中のものです。
2014/01/13(月) 13:39:44.43ID:yhTeQc76レス数が950を超えています。1000を超えると書き込みができなくなります。