488:名前は開発中のものです。
14/04/02 23:05:42.17 6rTn9j+m.net
>>473
>カメラ回転の応答速度が遅い
これ、見落とされがちだけどあるよね
ARMAでマウススムージングがデフォルトでONだったので視線の動きに
遅延が生じて気分悪かった。スムージングを切ったら何ともなかった
489:名前は開発中のものです。
14/04/03 00:12:27.55 d8bZaMxb.net
動き回る飛行船の上でアクションシーンを展開したゲームを作って見たいんだけど
着地判定というか、移動する床みたいなのってどうやってるんだ?
飛行船が上に進んでる時に急制動で下向いたら飛行船に乗ってたキャラクターが跳ねるチンフワ現象を取り入れたいんだけど
素直に物理エンジンに託した方がいい?
490:名前は開発中のものです。
14/04/03 00:41:04.11 paQ+FHve.net
物理エンジンが一番楽
正確じゃなくてもいいなら
飛行船が上に進んでいるときにキャラクターの下と飛行船の着地できる部分が接触してるか判定して
接触してるなら飛行船の上の移動量とキャラクターの上の移動量を比べて飛行船の移動量の方が大きいなら
キャラクターの上の移動量を飛行船の上の移動量に書き換える
こうすれば飛行船がいきなり止まったりしたときにふわって感じで浮くことは可能
ただ、違和感はある落ち方になると思うから物理エンジンをお勧めしとく
491:名前は開発中のものです。
14/04/03 01:07:35.19 d8bZaMxb.net
>>477
わかったありがとう
492:名前は開発中のものです。
14/04/04 02:07:12.66 iGGKX1Rj.net
詳しいね
さすがチンフワ総合スレッド
493:名前は開発中のものです。
14/04/05 17:41:08.13 Wu1wSHql.net
クラス分けって具体的にどんな感じでやっていけばいいの?
関数分けまでは普通に出来るんだけど、メンバ変数がある以上クラス分けしたくても出来ないし・・・
494:名前は開発中のものです。
14/04/05 18:16:26.54 cqmzi82f.net
「// ○○を△△する」ってなコメントが書けそうな関数が複数あったら
○○をメンバ変数に置いて、○○を操作する関数をメンバ関数にしたクラスにする
ツッコミどころ多そうだけど大雑把にこんな原則で大体どうにかなるんじゃないかな
495:名前は開発中のものです。
14/04/05 20:43:25.01 nUDfpyEY.net
例えばC言語みたいな手続き型の言語で攻撃の判定処理を作ったとする
1.判定対象を選択
2.判定対象の座標と大きさ、形を取得する
3.大きさや形に合わせて判定する
4.当たってたらhpをダメージ分引いたりノックバックさせたり双方の属性に合わせていくつかの処理に分岐する
5.繰り返し
クラスを使ってオブジェクト指向的に処理する
1.対象を選択
2.対象に「お前この判定対象と当たってなる?」と確認する
3.繰り返し
ここまで書いて何を言いたかったか忘れたのでこのまま投稿する
496:名前は開発中のものです。
14/04/05 20:58:16.49 TIaN2lJ/.net
関数を実行するのに必要な変数をまとめたのが最小単位かな
変数として持つデータに依存する部分はメンバ関数にしたいけど
std::stringみたいになんでも入れちゃうのと
マイナーな機能は引数を取る静的関数や別クラスに分けるかはまた悩む
497:名前は開発中のものです。
14/04/05 21:40:17.97 nUDfpyEY.net
オブジェクト指向を完全に突き詰めると動詞の関数しかなくなるような気がしないでもない
ゲームなら特に
498:名前は開発中のものです。
14/04/05 22:14:07.33 k4ryh3Xy.net
>>482
ええー、そんな感じなの。想像してたのと違うなぁ。
あ、俺は480じゃないけど似たような問題に詰まってる者です。
499:名前は開発中のものです。
14/04/06 01:53:43.72 E+ECXvrW.net
まあオブジェクト指向の作法については
それだけで厚めの本が出るぐらいだし・・・
500:名前は開発中のものです。
14/04/06 12:16:47.72 kDoD0j2F.net
自分のことは自分でやれってことだよ
501:名前は開発中のものです。
14/04/06 16:07:09.03 4sjYlVDb.net
だねぇ
>>480,>>485
完成させてからのリファクタリングの段階ということなら具体的に説明
できるだろうしコード片をうpってもいいだろうし、お話になるのでは
話の振り方次第ですお
502:名前は開発中のものです。
14/04/06 16:50:44.66 MlcK3xAD.net
例えばだけど、こういう場合はどうした方がいい?
class Player
{
public:
Player();
void update()
{
aClass_.update();
bClass_.update();
}
private:
A aClass_;
B bClass_;
};
503:名前は開発中のものです。
14/04/06 16:51:17.53 MlcK3xAD.net
class A
{
public:
A();
void update()
{
//メンバ変数とBクラスのx_が必要
}
private:
int a_;
int b_;
int c_;
};
class B
{
public:
B();
void update()
{
//メンバ変数とAクラスのa_が必要
}
private:
int x_;
int y_;
int z_;
};
504:名前は開発中のものです。
14/04/06 17:03:11.51 sV4Btc1C.net
>>490
class Aの前にclass B;を書けば良いんじゃね?
505:名前は開発中のものです。
14/04/06 17:10:52.22 7eM4W795.net
横からだけど
とりあえず動作すれば良いってだけならクソ回答としてupdateの引数にそれぞれ渡してあげる
渡し方はゲッターとかクソだけど
506:名前は開発中のものです。
14/04/06 17:34:28.11 tqEQPRwf.net
素人意見だがPlayerにabcxyz持たせて引数付きupdate作るとか
PlayerのupdateかprivateにupdateA,updateB作ってべた書きとか
AとBくっつけるとか
俺はどうしても他で必要にならない限り分けない、
enemyで必要とかになればそもそも一つ前にcharacterとか作って両方に持たせるとか
507:名前は開発中のものです。
14/04/06 19:31:11.73 3nuwa43P.net
>>489
クラスAとBが相互依存してるから設計しなおす
508:名前は開発中のものです。
14/04/06 20:11:48.21 4sjYlVDb.net
言いたい事は全部言われてた
①AとBは合体だ!フュージョン!
②AとBで壁パスだ!ダブルディスパッチ!
③Playerが面倒見ろ!メディエーター!
AとBが具体的に何なのか分からないとアレだよな
プレイヤーの所有物で、相互作用(値のやり取り)がある二つのもの。
しかし、プレイヤーとの間に作用はない。
ダウジングのアレとか?
509:名前は開発中のものです。
14/04/06 20:19:27.91 kDoD0j2F.net
合体魔法をプレイヤー複数人で打つとする
トリガーとなるプレイヤー一人が発動したら周囲のプレイヤーの合体魔法用のメソ
510:ッドを呼ぶ メソッドの中ではそのプレイヤーのmpを減らしたりクールタイムを追加したり硬直したりする トリガープレイヤーはそのメソッド呼ぶだけだから、もしかしたらプレイヤーによって処理は違うかもしれないが、とにかくそのプレイヤーは合体魔法に参加した メソッドの返り値で成否を確認してもいい その複数のプレイヤーの中心の座標に合体魔法を発動するなら、その計算処理はトリガープレイヤーがやる
511:名前は開発中のものです。
14/04/06 20:22:50.98 kDoD0j2F.net
>>490
AとBの使用用途を書け
シチュエーションによって考え方が変わり、考え方に依存するからオブジェクト指向が最も効率いいとされて普及してる
512:489
14/04/07 10:11:55.44 /pjQGnIZ.net
>>497
Aクラスはキー入力の処理
Bクラスはキー入力後の移動処理と当たり判定
513:名前は開発中のものです。
14/04/07 12:25:22.90 /OCJvUrM.net
最近は全部hppで書くのか?
ちゃんと.hと.cpp分けろよ
514:名前は開発中のものです。
14/04/07 20:27:14.10 bPq5EneU.net
>>498
A…キー入力の処理
↑B.x_ ↓A.a_
B …キー入力後の移動処理と当たり判定
A→Bのデータの流れは分かるが、B→Aのデータの流れは何だ?
フォースフィードバック?
俺はこういう小出しの後出しジャンケンは別に気にしないけど
完成後のリファクタリングの段階なら「具体的に」書けるっしょ?
そろそろ誰かがキレると思うよ
515:489
14/04/08 07:12:29.49 mcCDKO91.net
>>500
なんかごめん・・・
とりあえずこの質問はスルーってことでorz
516:名前は開発中のものです。
14/04/09 00:58:15.38 wd1GU5kL.net
テンプレートのせいか全部ヘッダ(h, hpp)に全部書く奴いるけど
面倒くさくてもC++としてはちゃんとヘッダとソースは分けるべきだよ
517:名前は開発中のものです。
14/04/09 01:28:10.85 f0hevqdx.net
>>502
あるべき論なんて一考にも値しない。
アホは、何故そう考えるのか理由を述べない。
518:名前は開発中のものです。
14/04/09 08:02:26.21 zim/sso+.net
煽るだけで何も説明しない人による華麗なる自虐芸
519:名前は開発中のものです。
14/04/09 10:52:16.89 uf/6C2tB.net
レースゲームのAIってどうやってるの?
経路探索だけで市販のゲーム風に出来るの?
520:名前は開発中のものです。
14/04/09 12:11:54.87 0loekIA0.net
幾つか方法はあるが、コース上に複数の「点」を作っておいて
順番にそれを通過するように組む……というのが単純かな?
521:名前は開発中のものです。
14/04/09 12:53:17.52 HhpB/vqN.net
多数の車が走ってて接触しないようにコース補正とか大変そうだな。
522:名前は開発中のものです。
14/04/09 13:04:35.78 6ESwZ9mm.net
リアル思考でない限り見えないところは適当だろ
多少ぶつかってもペナルティがほとんどないとか
ありえない速度でカーブ曲がってたりとか
523:名前は開発中のものです。
14/04/09 13:16:31.51 ZCvd+vVA.net
カービィのウエライドのデバッグモードを録画した動画がニコニコにあるからそれを見るといい少しはマシになるだろう!
524:名前は開発中のものです。
14/04/11 00:20:28.36 GEtB1yKl.net
決められたパスを ヘ(^o^)ヘ
|∧
/
/
ただなぞるよりも (^o^)/
/( )
/ / >
(^o^) 三 選んだ自由に
(\\ 三
< \ 三
..\
(/∀・) 傷付くほうがイイ!
( /
/く
525:名前は開発中のものです。
14/04/12 02:15:31.36 fxOCMkQi3
こっちだと規制されてナインかいな
526:名前は開発中のものです。
14/04/12 22:13:32.52 Zyf8FLOE.net
ちょっとわかんないからサッカーで説明して
527:名前は開発中のものです。
14/04/12 23:44:55.21 0ybV74Ha.net
初
528:めて作ったゲームは目標に向かって一直線に飛ぶ意味わからんハエみたいなシューティングゲームだった
529:名前は開発中のものです。
14/04/13 10:10:40.70 /fZAahnL.net
プログラム全く関係なくて物理の話で悪いんだけど、戦車が止まってる時と高速で動いてる時に大砲を撃った場合の大砲の速度って違うよね?
ググってもそれらしき情報が出てこないんだけど、具体的に方程式的なのってあるの?
530:名前は開発中のものです。
14/04/13 10:15:03.46 WZFk6ORN.net
戦車の速度+大砲の初速
これじゃないの?
531:名前は開発中のものです。
14/04/13 10:22:56.57 P+5kfwmh.net
ベクトル合わせるだけじゃん
532:名前は開発中のものです。
14/04/13 14:11:27.24 8it2YQcZ.net
もちろん空気抵抗やらゲームバランスやら考慮するなら変わってくるけどな
533:名前は開発中のものです。
14/04/20 10:51:05.10 b2XGGGld.net
矩形判定を3次元に拡張したのがAABB判定だと思う
534:名前は開発中のものです。
14/04/20 14:59:59.27 It9vI7xg.net
各辺が軸に平行、という前提でいいの?
535:名前は開発中のものです。
14/04/20 16:02:57.62 Lsg8M/g2.net
>>519
それで大丈夫
まあさすがに回転してるのは無理だし・・・
536:名前は開発中のものです。
14/04/20 16:18:17.37 2PHJETXp.net
それは簡単なんでないの
上辺が相手の下辺をより上&&下辺が相手の上辺より下
を3軸分やればいいだけなのでは?
回転する直方体の衝突判定ってまるぺけになかったっけ?
537:名前は開発中のものです。
14/04/20 17:29:26.22 It9vI7xg.net
最初から「平面上での矩形同士の当たり判定」と考えるから、そこから応用しにくいんじゃないか?
直線上で線分同士が重なってるかどうか?という判定があって
単位、それを2回やったのが矩形同士の当たり判定だと考えれば良い。
そうすると、3次元や4次元(?)も、そのまま使えそうだろ?
538:名前は開発中のものです。
14/04/22 06:39:03.06 2qdEj7/z.net
スーパーマリオ64風のゲームを作ってるんだけど、ステージとプレイヤーの当たり判定ってどうすればいいの?
一応球体の当たり判定と線分の当たり判定でやってるんだけど、坂を下ろうとするとジャンプするように落ちていくっていう・・・
539:名前は開発中のものです。
14/04/22 07:04:26.37 Xs5gC1x8.net
ゲームエンジン、物理エンジンの吟味から。
いいやつ教えてくれ。
540:名前は開発中のものです。
14/04/22 07:13:32.39 Ld5gvQeA.net
>>523
斜めに移動させる
541:名前は開発中のものです。
14/04/23 20:54:31.77 wDU0qJca.net
DXライブラリを使っているのですがタイトル画面やゲーム画面でループを変えるべきでしょうか
一つのループでswitchを使ってシーンを変えているのをいろんなサイトで見ますがこういう処理が当たり前なのでしょうか
542:名前は開発中のものです。
14/04/23 20:58:04.86 FTq0ixvH.net
stateパターンオヌヌメ
543:名前は開発中のものです。
14/04/23 21:00:21.88 zNP7HvPv.net
俺も最初は画面ごとにループ変えてたけど、ループはひとつにまとめるようになったな。
理由は、ループは違っても共通のやること(キー入力とか画面出力処理)があって
そういうのを画面のループごとに別々に処理させてると管理が面倒だから。
(もちろん共通処理として関数化してはいたが、それでも面倒だった)
544:名前は開発中のものです。
14/04/23 21:36:36.02 wDU0qJca.net
>>527
なんですかそれ
>.528
なるほど
545:名前は開発中のものです。
14/04/23 21:48:10.54 a2O6zNfs.net
>>526
ループ自体は1つにして、そこから何らかの方法で振り分けるのが定番。
複数ループは即「やめとけ」って言われるレベル。
そこだけ守れば、あとはifで関数に投げるなり、switchで分けるなり、好きなようにすればいいと思うよ。
stateパターンについては、処理を振り分けるアルゴリズムの1つだけど
まあ、別にいいんじゃないかな。
546:名前は開発中のものです。
14/04/23 23:54:04.86 FTq0ixvH.net
>>529
ググれ
547:名前は開発中のものです。
14/04/24 08:45:54.28 wxyjU1
548:yy.net
549:名前は開発中のものです。
14/04/24 09:15:53.69 1SkTvrzJ.net
データベースといい会社組織図といいマトリクス型はなぜ好まれないのか
550:名前は開発中のものです。
14/04/24 09:46:36.37 XVAalfN1.net
>>532
参考資料などがなかった場合、半分くらいは、
真っ先に思いつくのがループを個々に用意する方法のような気もする
551:名前は開発中のものです。
14/04/24 10:21:00.95 7sQk5lBb.net
オブジェクト指向的に考えるとオブジェクトごとに独立したループが存在してるのもあり得るしな
OSのフレームワーク含めてスレッドセーフな実装があまりない事にがっかりしたり
552:名前は開発中のものです。
14/04/24 11:59:52.01 1ftwUtau.net
そのループ(というか一連の処理)の意味合いを無視して設計空論しても意味ねー
たかがシーン遷移でぶん回すループを、複数個所にコピペベースでおく意味がねー
553:名前は開発中のものです。
14/04/24 12:13:26.57 47DD1/Qn.net
ループ型を嫌う人はシーン数が数十個を越えてもswitchで分岐して作るのか、大変だなwww
554:名前は開発中のものです。
14/04/24 12:53:05.17 1ftwUtau.net
イミフだろ。どの案でもループ必須なのに、ループ型ってなんだよw
555:名前は開発中のものです。
14/04/24 13:22:18.45 fX1ni8oz.net
ポリモーフィズムか関数ポインタ使えよ
556:名前は開発中のものです。
14/04/24 14:53:44.57 47DD1/Qn.net
で、数十の関数名やクラス名をわざわざ考えるのか、面倒だな
557:名前は開発中のものです。
14/04/24 16:29:40.03 LCot+zJd.net
ループが別々にあったら前のループにどうやって戻るんだ?
goto?
558:名前は開発中のものです。
14/04/24 16:45:42.04 lgj86FWp.net
ループ内にループが入ってる
559:名前は開発中のものです。
14/04/24 17:08:30.80 LCot+zJd.net
その発想はなかった
560:名前は開発中のものです。
14/04/24 17:46:16.58 VQozCS4c.net
ループザループ
561:名前は開発中のものです。
14/04/24 18:52:19.44 GSyZUE1j.net
>>540
シーンの数が数十ってどんだけ大規模なゲーム作ってんのw
562:名前は開発中のものです。
14/04/24 19:03:46.70 AvrqiUr+.net
C++でゲームを作ろうとすると
ゲームというよりゲームエディタになってしまう
563:名前は開発中のものです。
14/04/24 19:18:31.92 wxyjU1yy.net
>>546
ゲームを作ってたつもりがエフェクトエディタが完成していた私のことをなぜ知っている
564:名前は開発中のものです。
14/04/24 19:23:13.77 47DD1/Qn.net
>>545
ドラクエ3程度
565:名前は開発中のものです。
14/04/24 19:36:08.29 7gC8mbT8.net
>>548
その数十のループを1ソースにまとめるってとんでもないスパゲティだなw
完成すんのそれw
566:名前は開発中のものです。
14/04/24 19:54:33.85 1SkTvrzJ.net
つーかシーン(画面)をクラスで1:1で管理して、
次回どのシーンを描画するのかポインタ返すってやり方の方がスマートじゃね?
567:名前は開発中のものです。
14/04/24 20:37:26.16 47DD1/Qn.net
画面の上から下に順番に動作しないと理解出来ないから今のやり方でやってるんだけどね。
関数ポインタやクラスで分けるとあちこちに跳びまくるよね?ソレも嫌だから今のやり方でやってきた。
けどまあ、流れが判らなければ図を描けば済む話か。それでも、今の段階でやり直すのは……ん?
マップや戦闘のメインのシーンは今のままで良いな。サブのシーンの扱いは、直してみるかな?
ちょっと寝かしていたソースだが、色々と検討してみるか。
568:名前は開発中のものです。
14/04/24 20:41:28.50 XVAalfN1.net
>>540
世の中にはディレクトリとか名前空間って概念があるから、便利なものよな
569:名前は開発中のものです。
14/04/24 20:55:45.26 7sQk5lBb.net
ポリモーフィズムで関数の名前考えなきゃならないてどういう状況だよ
クラス名なんて実装したいシーンの名前をそのままだから考える必要ないし
570:名前は開発中のものです。
14/04/24 22:24:05.32 /wenCDDH.net
中身は空でいいからすべての遷移とデータの
571:受け渡しくらい先に設計して実装しましょう。
572:名前は開発中のものです。
14/04/24 22:35:04.46 1SkTvrzJ.net
プログラミング自体に慣れてないんだろうけど
一人でコード組むなら図なんて書いたりしないからな
頭の中の仕様書通りにコード打つだけなんだから
573:名前は開発中のものです。
14/04/24 22:39:32.56 1SkTvrzJ.net
ポリモーフィズム使うならむしろ名前は考えなくていいだろ
574:名前は開発中のものです。
14/04/24 22:41:52.64 1SkTvrzJ.net
普通はポリモーフィズムで大まかに分岐した後関数ポインタで細かく分岐するよな
背景に3Dフィールドを表示したまま半透明なステータス画面を描画したいとか
575:名前は開発中のものです。
14/04/24 23:29:46.37 /YmGGjJz.net
クラスや関数を分けると処理が飛んで困るってstaticおじさんか
576:名前は開発中のものです。
14/04/24 23:39:57.11 XVAalfN1.net
ポリモーフィズムの実現手段の1つとして関数ポインタが使われることもあるんだから
その表現はちょっとおかしい気がする
いや言いたいことは分かるけどね?
577:名前は開発中のものです。
14/04/25 01:06:43.73 8lxSsrEc.net
なんでこういう話になったら、いちいち相手を馬鹿にする人間が出てくるのかね。
578:名前は開発中のものです。
14/04/25 06:16:12.48 GoYRAt3T.net
数十のクラスが複雑に入り組むプログラムなんて作れない(能力が無い)からでは?と予想
579:名前は開発中のものです。
14/04/25 07:46:12.69 XsfFQEHl.net
>>561
いいウィットだな
580:名前は開発中のものです。
14/04/25 09:30:36.62 jXAfeA6F.net
>>557
こういうのどうやって実装すんの?説明してるようなサイトがあったら教えてちょーだい
581:名前は開発中のものです。
14/04/25 09:42:20.41 XsfFQEHl.net
Stateパターンによる階層付きシーン遷移の方法は、確かセガ本あたりに載ってたような記憶がある
582:名前は開発中のものです。
14/04/25 09:54:22.08 IVfFtFPz.net
ゲームプログラマになる前に覚えておきたい技術
ひらしょー本、セガ本
URLリンク(www.shuwasystem.co.jp)
URLリンク(www.shuwasystem.co.jp)
583:名前は開発中のものです。
14/04/25 10:04:41.29 jXAfeA6F.net
昨日ちょうどそのセガ本の話が有名な同人プログラマのネット配信で出てたわ
「その本はプログラマになる前じゃなくてなった後に読む本だ」って言ってた
584:名前は開発中のものです。
14/04/25 10:18:56.59 cWxmDdU5.net
その本って学生レベルでも中の下くらいだろ
585:名前は開発中のものです。
14/04/25 12:50:45.98 bu2wQqL4.net
>>561
というか、そもそもデバッガでソース追えないという話に帰結しそうなのだが。
関数の中とかに「飛ぶ」訳ですし。
今後の事もあるから、「飛ぶ」事に慣れるのが肝要だと思いますけどね。
586:名前は開発中のものです。
14/04/25 15:11:16.15 uQbX0MMa.net
セガ本で難しかったらgemsとか見たらもう発狂だな
587:名前は開発中のものです。
14/04/25 15:22:16.96 5DdHErYn.net
14歳からはじめるC言語わくわくゲームプログラミング教室
著者:大槻有一郎
URLリンク(www.rutles.net)
かなりの素人向け、図書館にあるかもしれない。
内容はこれ、URLリンク(www.rutles.net)
588:名前は開発中のものです。
14/04/25 16:40:46.26 jXAfeA6F.net
ゲームプログラマの新人でも面接時の作品提出では皆C+DirectX直打ちの人ばかりだようんたらかんたらという
流れの中で言ってたから、難しいというか本に頼らずともネットで情報集めてとにかく作れって感じだった。
その人自体もオブジェクト指向とか意味わからんでゲーム作ってるとか言ってるけど、
同人だけじゃなくコンシューマ機
589:のゲームプログラムを1人で担ってるような人だし、 要は本見て文法覚えるより、汚くていいからとりあえず作品完成させろってことかと。
590:名前は開発中のものです。
14/04/25 17:46:46.24 WhIg+aCP.net
>>571
とりあえず完成させろってのはその通りだな
ここでウンチク垂れ流してても自分の作品は完成させたことないってやつは多そう
そう、私の事ですorz
591:名前は開発中のものです。
14/04/25 18:37:51.58 kjeLMb9X.net
directx直打ちじゃないけど大手新卒通ったわ
592:名前は開発中のものです。
14/04/26 01:38:49.39 jf1SN+DQ.net
ゲームコーディングコンプリートって本にはGameLogicってクラスでゲームの状態を切り換えている
ソースコードはネット上にあがってるぞ
593:名前は開発中のものです。
14/04/26 13:10:08.96 2tKTewnx.net
ぱっと見た感じ、キューかなんかで格納してる?
594:名前は開発中のものです。
14/04/26 19:33:37.45 x5oOyDOe.net
スパロボみたいなゲームだと
・フィールドシーン
・戦闘シーン
・アドベンチャーシーン
・シナリオ準備シーン
みたいな感じに大別されるよね
シーンはキー入力の挙動も変わるから
それも内包しないといけないよね
595:名前は開発中のものです。
14/04/26 19:37:39.56 IEmpvB3E.net
メニューとかの後の分岐はどうやってるの?
596:名前は開発中のものです。
14/04/26 19:58:38.34 3cite/BR.net
URLリンク(i.imgur.com)
これがPC98ロードランナーのチャートで、
イニシャライズ以下がゲームループになってる。
597:名前は開発中のものです。
14/04/26 20:05:42.07 2tKTewnx.net
デモ読み込みはゲームループ外で、実際のデモ画面はループ内なんだな、面白い。
俺が思ってるデモ画面と別のものかもしれんけど。
>>576
当たり前っちゃ当たり前だけど、
フレームワークなりハードウェアなりから、キー情報を取り出したり使いやすいよう加工するのは共通部分で、
右キーで1マス動かすとか、そういう部分は各シーンのロジックで処理するのが良いんじゃない?
>>577
メニューって、「じゅもん」→「メラ」→「スライムA」 みたいな
シーン中に行われる多層型のメニューのこと?
598:名前は開発中のものです。
14/04/26 21:29:25.57 5LBrFF8V.net
ポップアップメニュー出しながらもカメラや移動とか一部の操作はできるようにするとかだと
優先度とかそのキーで処理済みかの情報が欲しいから
シーンや入力が欲しいオブジェクトが欲しいキーを入力マネージャに登録しておいて
優先度の高い特殊なキーの組み合わせだけ先に処理して
あとは上位に位置するオブジェクトからキーを拾って処理して未処理は下に投げるとか
WindowsのWM_CHARを参考にしたキー処理終わってから各Updateみたいな事になってるけど
重複する事もあるキー入力の切り分けをシンプルに実装する方法ないかな
599:名前は開発中のものです。
14/04/26 22:11:57.41 x5oOyDOe.net
キー処理用スレッドを作ってGetAsyncKeyStateを回すとか
600:名前は開発中のものです。
14/04/27 03:54:19.08 WYXfeo+B.net
よく分からん質問だけどUIコンポーネントの階層でやれば?
class Parent : UI {
UI* child;
void update(Event* e){
// 特殊キー
bool isCopy = Key::isHold(Key::LCtrl) && Key::isHold(Key::C);
// 子コンポーネント先
child->update(e);
// 子コンポーネントでキー入力が確定した
if(e->isKeyEvent == false) return;
// このコンポーネントのキー入力
bool isThis = Key::is ... ;
}
};
class Child : UI {};
601:名前は開発中のものです。
14/04/27 10:28:25.38 C+qpjQzl.net
>>580
ポップアップメニューはモーダルなインタフェースだから
ある1つのオブジェクト(または選択されたオブジェクト群)を集中して操作しているのに
関係がないオブジェクトを操作ができるのはおかしくない?
602:名前は開発中のものです。
14/04/27 10:46:42.01 w1gNzEbH.net
恐らくだけど、ここでのポップアップメニューは一般的なGUI部品のソレではなくて、
fpsでよく利用されてるポップアップする選択形式のウィンドウの事でね。
wasdで移動しながらメニュー表示キーを押す事でソレが表示され、マウスカーソルでメニュー選択できる、みたいな。
とりあえず>>582で問題ないと思うけどね。
603:名前は開発中のものです。
14/04/27 18:14:34.21 Pq1XXwa+.net
>582のままだと何個か同時押ししてる時に子供がキー処理しちゃったら
親は欲しくて子供では未使用のキー情報取りたくとも来なくない?
604:名前は開発中のものです。
14/04/27 18:30:43.78 ZxV1P0nx.net
どういう状況?
605:名前は開発中のものです。
14/04/27 18:38:37.60 Pq1XXwa+.net
メニューが子供でWASDで移動してるとして押しっぱなしで
メニューの選択を動かす矢印やショートカット等の何らかのキー押したら
移動のキー処理が省かれ、結果移動が止まる
606:名前は開発中のものです。
14/04/27 19:14:17.90 ZxV1P0nx.net
ああ、なるほど。
あんまりPCでゲームやらないので分からんのだけど、市販ゲームだとキーアサインはどうなってるのかな。
メニューを開いてない状態で使えるキー(デフォルトだとWASDとか?)は、メニュー画面で何の処理にも使われないような感じ?
607:名前は開発中のものです。
14/04/27 19:44:36.31 DG4EJccZ.net
使うキー全てを押されているか1つ1つチェックしていけばいい
608:名前は開発中のものです。
14/04/27 19:59:45.12 8WD0svuP.net
市販ゲームを買って調べろよ
知らないとこにゲームを作るなんてアホなの
LINEをやったこと無いのにLINEスタンプを作って儲けようとするアホと一緒
609:名前は開発中のものです。
14/04/27 20:22:36.88 ZxV1P0nx.net
>>590
全く意味は分からんが、何か気に触ったようなのでスマン
610:名前は開発中のものです。
14/04/27 21:47:11.67 zcnpepzc.net
RPGなどの、キーを1回押したら次のマスまで移動するようなゲームの衝突判定は
自キャラの位置と壁の位置を二次元配列で管理できるので作れるのですが、
アクションゲームのように、キーを1回押したら数ピクセルしか進まないような
ゲームの場合、マップチップエディタでマップを作った場合、衝突判定はどうするのでしょうか?
611:名前は開発中のものです。
14/04/27 22:33:28.11 vcLDHUdb.net
衝突判定は、全部が計算で出る。 二次元配列で管理と同じ。
612:名前は開発中のものです。
14/04/27 23:24:50.87 ZxV1P0nx.net
>>593
ソース見てみないと分からんけど、今まで1対1で対応するような当たり判定しかやってなかったので
そのままでは応用が効かないって話じゃない?
>>592
こういう場合に昼用となるのは、ある範囲とある範囲同士が、
座標上で重なっているかどうかをチェックする、という処理が必要となる。
少し前にも似たような話題があったが、
まず1次元上で、線分Aと線分Bが重なっているかどうかを判定する処理を考えてみよう。
+---- A ----+
0----------------------------------------X
+-------- B --------+
答えを言ってしまうが、Aの右端がBの左端より右側」にあり、Bの左端がAの右端より左側にあるとき
線分AとBは重なってると言えるのが分かる。
これで少なくともX軸から見た時に重なって見えるかどうかを判定することが出来る。
じゃあこれをもう一度、Y軸に対してやれば、結果として重なってるかどうか分かると思わないかい?
一応、この判定には欠点があったりするけど、そのへんは詳しい諸兄に任せる
613:名前は開発中のものです。
14/04/27 23:39:37.39 +r7oKZO8.net
592の質問ってそういうレベルの話なのか。
もっと複雑な話かと思った。
マップチップでブロック単位(要するに矩形判定のみ)しかしないんだったら
593の言うとおり2次元配列管理でいいんじゃないかな。
�
614:タ標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る。(小数点以下切り捨て) たとえばマップチップのサイズが 16*16 でマップデータが二次元配列に格納されてるとしたら (100,150) の部分は二次元配列でいう (6,9) の部分という事になる。 あとはRPGなどと同じように衝突判定すればいい。
615:名前は開発中のものです。
14/04/27 23:47:48.15 zcnpepzc.net
>>593-595
ありがとうございます!
>座標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る
この考えが欠けてました。言われれば当たり前のことなのに1人で悩んでると全然思い浮かばない(´・ω・`)
616:594
14/04/28 01:02:00.85 BBr+Jrn/.net
>>595
あー、そっちか
お恥ずかしい
617:名前は開発中のものです。
14/04/28 09:50:59.01 GzOhtwBz.net
それだけだと自キャラがどのチップ上にいるかしかわからんから
壁と自キャラが重ならないようにするにはちょっと工夫いるんじゃない?
例えば自キャラの上下左右全部で衝突判定するとか
618:名前は開発中のものです。
14/04/28 14:28:53.40 uu2sZY8y.net
そんな必要ないよ。
自分の位置より進行方向1ブロック分をチェックして障害物なら動かなくすればいいだけ。
619:名前は開発中のものです。
14/04/28 14:31:26.43 uu2sZY8y.net
ああ、いや違った。
上と左に関しては進行方向1ピクセル分だった。
620:名前は開発中のものです。
14/04/28 19:55:37.77 BBr+Jrn/.net
>>599-600
アクションゲームでそういう処理をするゲームは少なそうだが
621:名前は開発中のものです。
14/04/29 00:40:51.84 EMV53Qmd.net
>>530-536
大昔にタスクシステムスレだったかSTGスレだったかにこんな感じのソース
(微妙に違うかもだが)を貼ったが、別にゴチャゴチャ言われなかったけどな
因みに同人STG
int APIENTRY _tWinMain(HINSTANCE,HINSTANCE,LPTSTR,int)
{
try{
boost::shared_ptr<GAMEENV> gameenv(new GAMEENV); //D3D,SOUND,INPUT,USERDATA,etc
boost::scoped_ptr<SCENE> logo(new LOGO(gameenv)); //ロゴ画面
boost::scoped_ptr<SCENE> demo(new DEMO(gameenv)); //デモ画面
boost::scoped_ptr<SCENE> title(new TITLE(gameenv)); //タイトル画面
boost::scoped_ptr<SCENE> config(new CONFIG(gameenv)); //コンフィグ画面
boost::scoped_ptr<SCENE> stage1(new STAGE1(gameenv)); //ステージ1
(…中略…)
boost::scoped_ptr<SCENE> stage8(new STAGE8(gameenv)); //ステージ8
boost::scoped_ptr<SCENE> ending(new ENDING(gameenv)); //エンディング
logo->Run(); //ロゴ画面再生
622:名前は開発中のものです。
14/04/29 00:42:06.52 EMV53Qmd.net
while(1){
demo->Run(); //デモ画面再生
switch(title->Run()){ //タイトル画面再生
case TITLEOPTIONTYPE_CONFIG: //オプション画面再生
config->Run();break;
case TITLEOPTIONTYPE_GAMESTART //ゲームスタート
do{
if(stage1->Run() == STAGESELECTTYPE_GAMEOVER)break;
(…中略…)
if(stage8->Run() == STAGESELECTTYPE_GAMEOVER)break;
ending->Run(); //エンディング画面再生
}while(0);break;
}
}
}catch(...){return EXIT_FAILURE;}
return EXIT_SUCCESS;
}
623:名前は開発中のものです。
14/04/29 01:03:59.54 T7NavjR1.net
こりゃStateパターンを使えていない時点でゴミっすわ。
バカが書いたコードだと一目で分かる。
面接でこれ持ってきた奴がいたら不採用…と言いたいけど
この程度のバカが偏差値65クラスなわけで
次頭があれば徹底的に叩きなおすことを前提で採用、ってなるレベル。
624:名前は開発中のものです。
14/04/29 01:31:18.44 l2CWKjf4.net
それでも俺は、自らコードを曝け出した事に対して尊敬するね。
批判だけなら誰でも出来る
625:名前は開発中のものです。
14/04/29 01:46:17.29 EMV53Qmd.net
>>604
スレリンク(gamedev板:181-番)
当時は高専の学生でしたので
626:名前は開発中のものです。
14/04/29 01:49:34.15 T7NavjR1.net
>>608
あー、それわかる!
高専生感がぷんぷん臭う。
俺の職場は理系院生が採用の中心だから
君のコード見ると偏差値70以下!って判定を下しちゃうんだよね…。
627:名前は開発中のものです。
14/04/29 02:13:49.38 EMV53Qmd.net
どうか心安らかな日々を
628:名前は開発中のものです。
14/04/29 02:16:22.74 ZoGLF8y+.net
んー別にいいんじゃね?
大してシーンも多くないゲームなら充分充分
パターンとかはもっと規模が大きくなって
制御構文使ってたら死ぬ時に使う物だと思うのだが
ということで誰かstateとstrategyの違いを教えてくださいな
ググってもイマイチ腹に落ちなくてなあ…
629:名前は開発中のものです。
14/04/29 03:18:14.89 51TE7qv/.net
高専生感というとても具体的な指標
これが偏差値70以上の力だと言うのか・・・
630:名前は開発中のものです。
14/04/29 08:43:51.10 7WDDZUtT.net
これdemo->Run()の中に別のゲームループがあるって事になるんだろ。
つまり>>528って事だろ。
ところでupdate()とdraw()に分けないのかな。
コンテンツロスト時の再描画とか、各シーンで個別に実装とかだるいっしょ。
631:名前は開発中のものです。
14/04/29 10:25:45.81 EMV53Qmd.net
>>611
当時のソースは実家のPCに眠ってるのでうろ覚えなんですが、D3D9などの
デバイスロスト時の対応などはGAMEENVクラスに押し付けてました
描画と、ゲーム内時間発展のサイクルは独立。フレームスキップしてました。
描画は60⇔30⇔15[fps]の半固定。
時間発展の刻み幅は1/60[sec]固定。シミュレーション部分の計算自体は
とても軽かったので。あとはリプレイデータの都合。デバッグ時の巻き戻し
や早送り(任意時点へ移動)してたので
632:名前は開発中のものです。
14/04/29 10:41:35.55 EMV53Qmd.net
>>611
>これdemo->Run()の中に別のゲームループがあるって事になるんだろ。
>つまり>>528って事だろ。
それぞれにゲーム内の時間発展を計算するサイクルがありましたね。
そういう意味ならそうなんだと思います。ゲーム固有の定石とやらは
よく知りません
633:名前は開発中のものです。
14/04/29 11:00:02.81 R32lOXpJ.net
配信でコーディングしてる現役ゲームプログラマさんの仰っていた序列表貼っておきますね
神様 綺麗なコードで完成させられる人
人間 汚いコードで完成させられる人
=================( 越えられない壁 )====================
家畜 汚いコードで完成させられない人
ハエ 綺麗なコードで完成させられない人
ハエに出来るのは人間の邪魔だけと言っていて、なるほどなとリスナー達感心しきりでした。
ID:T7NavjR1見ててこの事思い出しましたね
634:名前は開発中のものです。
14/04/29 11:23:57.20 k/FZV1V1.net
自分は
std::unique_ptr<Scene> scene = new なんかのシーン();
while(1){
scene->update();
scene->draw();
if( scene->isEnd() ) {
scene = std::move(scene->getNext());
}
}
ってやってそれぞれのシーンが次の遷移先返すようにしました
switchを意地でも使いたくてこんな形になった
実際switchの方がよく使われるものなの?サンプル探してもswitch使っているのしか見当たらないから困ってる
635:名前は開発中のものです。
14/04/29 11:24:47.17 t5QADVCc.net
>>614
やるじゃんw
636:名前は開発中のものです。
14/04/29 12:27:00.81 CXcBKCf+.net
>>615
多分だけど、
if(関数に分けずそのまま羅列) → if(関数分け) → switch → stateパターン
……みたいに進化していくんだと思う。
単に自分がそういう順番でステップアップしたってだけなんだけどさ。
仮に自分が教えるなら、stateパターンによるシーン遷移は後回しにするかな
637:名前は開発中のものです。
14/04/29 12:35:06.95 CXcBKCf+.net
ああそうだ思い出した。
シーン遷移をStateパターンで行う方法についてなんだけど、「シーン遷移しないとき」って、どうしてる?
(1) nullを返す
(2) thisを返す
(3) シーン遷移関数を用意しておき、それが呼ばれなかったとき
(4) その他
自分は(2)で、nullを返すときはゲーム終了ってことにしてる。
一般的なStateパターンなら(1)かなあ。
638:名前は開発中のものです。
14/04/29 12:40:34.16 5MYZPLM5.net
>>612-613
なるほどthx. sceneの引数でgameenv貰ってるね。
シーン遷移の実装はシーン側は知る必要ないから、
その時の気分とかシーンの数とかで好きにやりゃいいと思うけどね。
Task的に入り組んだ作りしてないのなら、どれでもすぐ遷移図を思い描けるっしょ。
639:名前は開発中のものです。
14/04/29 16:14:29.11 R32lOXpJ.net
>>616
曰く、
「クラス設計書貰うけど見ない。クラス流用して他のゲーム作ったことがないから意味がない」
「デザインパターン?何それ?」
「参考書は読んだことがないからオススメ本とか分かんない。ネットと、エラーが出たらググレカスで覚えた」
PSでほとんど1人でプログラム任される人の弁です
640:名前は開発中のものです。
14/04/29 16:19:59.07 NQBFYHJc.net
>>620
すげぇ
俺そんなこと言ったことないけど、完全に俺だわ
ただ、作ってたのはPSじゃねぇけど
641:名前は開発中のものです。
14/04/29 16:20:18.05 KJKa8R89.net
>>620
その人、協調性が無いから、単独でしか使い道が無い。
642:名前は開発中のものです。
14/04/29 16:27:51.48 NQBFYHJc.net
人事を何とかしないとうちの会社はやばい
ゲー専卒で多少のコミュニケーションはできれば入れてる感じがする
8人中2人もう辞めてるし、てかそれ以前にDXライブラリをインクルードディレクトリへの追加方法わからねぇわ、プログラムが組めねぇわで最悪だわ
1人だけまともというかたぶん俺より組める奴居るけど
うちは研修する余裕なんてねぇってわかってんだろうが、去年入ったやつなんてもう最後の1人を何とか留まらせてるんだから、俺らに人事噛ませろよ
643:名前は開発中のものです。
14/04/29 16:27:58.51 lMFqMvqX.net
PSでググレカスてどんな時代?
一昔前の1500円のミニゲーム移植とかの人てことなんだろうか
644:名前は開発中のものです。
14/04/29 16:31:27.80 GSilIO8H.net
>>622
ちょっとワラタ
645:名前は開発中のものです。
14/04/29 16:31:55.46 CPnqQaxX.net
従来の手続き型で何本もゲーム作ってきた俺だが
いっちょオブジェクト指向でも勉強するか、とやり始めた結果
もうずっと制作が滞ったままになっている。
なんでこんなにめんどくさいんだ……。
646:名前は開発中のものです。
14/04/29 16:33:29.90 t5QADVCc.net
サッカー上手い人がサッカーの技術書読んでうまくなるわけもないし、そういう感覚なんかな。
本読まずにPG覚えるとか想像もつかねえw
647:名前は開発中のものです。
14/04/29 16:59:24.66 CPnqQaxX.net
本は解るようになってから読むと解るけど、解らないうちに読んでも解らないからなw
そもそも本を書くような人は「本を読んだら解る人」だろうから、
本を読んでも解らない人でも解るような本を書けないだろうな。
648:名前は開発中のものです。
14/04/29 17:12:12.68 dd41HZLf.net
ビギナーコラムでオブジェクト指向の哲学とか語られてもな
とりあえず作ってみよう系のほうが理解しやすい
ここを弄ったらこう変わるみたいな
649:名前は開発中のものです。
14/04/29 17:21:14.92 5MYZPLM5.net
c++だけがoopじゃないっすから…
650:名前は開発中のものです。
14/04/29 17:40:38.04 lMFqMvqX.net
>>628 だいぶ使いこなせるようになっても読めない初心者向けの本とかあるから性質が悪い ゲーム用だけじゃないが初心者の頃はコードがのっててサンプルが作りたい物に近いから買ってみるけど… Cマガも半分ぐらいしか理解できなかったがいま読み返すと消えてる技術も多くて笑える
652:名前は開発中のものです。
14/04/29 17:48:57.10 bM1HEdOI.net
ゲーム系の学生なんだけど、ゲーム会社ってどのくらいのレベルのオブジェクト指向まで要求されるの?
あと、AIとかそういうアルゴリズムも重視される?
653:名前は開発中のものです。
14/04/29 18:14:47.39 NQBFYHJc.net
>>632
ぶっちゃけ会社によって様々だからうちの会社で書くけど
新卒には特別な期待はしない
とりあえず、プログラムを作れれば良いや、ゲームまで作れたら儲け物って感じだな
後はただ、人間として基本的なことはできてればそれだけで良い
俺は現場だからこういうのを求めてるけど、人事は即戦力のゲームプログラマーとしてプログラムを作れないやつを入れてくるから何を見てるか同じ会社なのにわからん
とりあえず残業させてないのに毎年1ヶ月以内に1人、3ヶ月以内に半分になる新卒はゲーム作る気がないよね
654:名前は開発中のものです。
14/04/29 18:23:27.78 EMV53Qmd.net
マ板でやれ。な
655:名前は開発中のものです。
14/04/29 18:25:53.36 R32lOXpJ.net
>>621
スーパープログラマさんかな?w
他の配信者も有名な人だよって言ってたし、多分在京で働いてる業界人なら知ってる人ですよ。
ちなみに、よくプログラマになるにはどうしたらいい?という初見リスナーのレスあるけど
「C++とDirectX(ライブラリ自作)で『完成した』作品を持ってこい」と言ってますね。
本人もデザインパターンを配信中にググって知ったみたいだし
オブジェクト指向とか関係ないんじゃないかと。とにかく完成品をよこせと。
656:名前は開発中のものです。
14/04/29 18:34:29.77 lKQHJo0L.net
Q 漫画家になるにはどうしたらいいですが?
A 漫画を描けば漫画家です
プロになりたければ作った作品を持ち込んでください
Q ゲームプログラマになるにはどうしたらいいですか?
A ゲームを作ればゲームプログラマです
プロになりたければ作品を持ち込んでください
657:名前は開発中のものです。
14/04/29 18:38:17.18 NQBFYHJc.net
>>636
これ
でも、自分じゃなくて友人が作ったやつを持ち込むクソも居る
658:名前は開発中のものです。
14/04/29 19:08:58.63 WRxgjGJf.net
スレ違いの話題振る質問者は不採用です
659:名前は開発中のものです。
14/04/29 19:14:20.55 t5QADVCc.net
くだらないループ話を延々続けてる馬鹿に飽きていたからいい暇つぶしになったw
660:名前は開発中のものです。
14/04/29 20:34:32.58 EMV53Qmd.net
>>609
>制御構文使ってたら死ぬ時に使う物
>>615
>実際switchの方がよく使われるものなの?
>>619
>シーン遷移の実装はシーン側は知る必要ないから、
>その時の気分とかシーンの数とかで好きにやりゃいいと思うけどね。
>
>Task的に入り組んだ作りしてないのなら、どれでもすぐ遷移図を思い描けるっしょ。
同意です。実装の選択肢は色々あり、個々の状況に応じて選べば良い事かと。
>>602-603の例で言えば、振る舞い的に拡張する予定がなく、実際しなかった
部分なので別に問題なかったですね
元々HSP上がりの人間(周りも同様)だったので手続き型の記述のほうが平易
というのもありました
>>617
State Pattern
switch-case構文
661:名前は開発中のものです。
14/04/29 20:35:52.86 EMV53Qmd.net
>>640訂正
末尾の三行は消し忘れです。>>617さんごめんなさい
662:名前は開発中のものです。
14/04/29 20:52:06.90 CXcBKCf+.net
>>635
何年か前に、画像表示、パッド入力、音声出力くらいまでは何とか作ったけど
途中で面倒くさくなって、結局DXライブラリに戻ってしまったという残念な経験しかないやw
663:名前は開発中のものです。
14/04/29 20:55:41.83 EMV53Qmd.net
>>619
会社帰りにたまにボー●ーブ●イクでチャリンチャリンしてたんですが
転勤先にそれ置いてるゲーセンが
664:なくて悲しみのあまり余暇にパチモン 作りで自分を慰めてるんですが、火器とかAIの部分はStateというかStrategy というかそんな感じのコードはありますね。条件分岐でダラダラ書いてたら 流石に眩暈がしてきたので
665:名前は開発中のものです。
14/04/30 00:47:22.57 bEifU6C0.net
何を言いたいのかサッパリ分からん
666:名前は開発中のものです。
14/04/30 01:21:27.75 3yGpFv6B.net
>>643
パーツとか持ち替えの武器とか大量にあると面倒くさいことになるよね
あの手のアセンゲーっぽいのは俺も好きだが作りたいとは思わないな
667:名前は開発中のものです。
14/04/30 09:11:19.42 JP5IUHRh.net
つまらない流れなので誰かネタ振りお願いします><
668:名前は開発中のものです。
14/04/30 10:28:13.43 vrCaDxEc.net
初心者な質問ですみません。
クラスからクラスを呼ぶときってどういう書き方が普通なんですかね?
class A {
public :
static A* me ;
int a ;
A() ;
}
A* A::me ;
A::A() {
me = this ;
}
ってやって A::me->a とかやってるけど、なんかスマートじゃなくて……。
669:名前は開発中のものです。
14/04/30 11:46:43.01 eqz1Of7R.net
なにがしたいのかさっぱりわからんけど、それmeにインスタンス入れてるだけであんまり意味なくない?
クラスからメソッド直接使いたいとかなら、メソッドをstaticで定義してクラス名::メソッド名()だけど
670:名前は開発中のものです。
14/04/30 12:04:25.51 gNDB74Yv.net
グローバル変数みたいなことがしたいのかな
アクセス可能なオブジェクトを限定するのがオブジェクト指向の組み方だから
アクセスする必要があるクラスにポインタなり参照なり持たせたほうが良いんじゃない
671:名前は開発中のものです。
14/04/30 12:58:15.72 2hopiA0K.net
日本語不自由で変な質問するやつはほっといたほうがいいよ
672:名前は開発中のものです。
14/04/30 13:13:03.63 8+rqYap5.net
staticメンバの初期化の仕方の話でねーのん。
最近c++触ってないから間違ってたらすまんけど。
// A.h
class A {
public:
static int a;
}
// A.cpp
int A::a = 10; // 初期化
// main.cpp
void main() {
A::a; // 利用
}
673:名前は開発中のものです。
14/04/30 13:38:55.27 MPxnDurN.net
3Dゲームで経路探索をやってみようと思うんだけど、3Dの位置情報ってどうやって調べればいいの?
674:名前は開発中のものです。
14/04/30 14:23:59.95 bEifU6C0.net
具体的には?
基本的に平面で移動するゲームなら2Dと大して変わらんしだろうし
キューブ状の座標(2Dで言うところのマス目)を移動するだけなら、移動方向に上下という選択肢が増えただけと考えられるし
ビルの中を探索するようなゲームなら、階段やエレベータでエリアを区切ればいい気がする。
675:名前は開発中のものです。
14/04/30 14:32:28.53 Uak2ZaC3.net
何が聞きたいのかさっぱりわからんけど、普通に変数参照すればいいんじゃない?
複雑な地形での経路探索がわからんって話なら、地形の要点にポイント作ってダイクストラ法でいいんじゃないの
676:名前は開発中のものです。
14/04/30 14:35:02.75 Uak2ZaC3.net
ごめんダイクストラ法じゃなくてA*か
677:名前は開発中のものです。
14/04/30 14:50:11.17 49atqyLw.net
経路探索
URLリンク(samples.jbpub.com)
Chapter 5 にあるように 経路探索する。
Chapter 8\Raven_CoarseGraph のようにグラフとして探索する。
678:名前は開発中のものです。
14/04/30 16:08:24.08 L0vWdcDz.net
>>655
A*はダイクストラの拡張版で、基本アルゴリズムは重複する部分が大きいから、
大筋外してはいないよ
ゲーム用途の経路探索性能は、A*の方がより最適化されるみたいだけど
679:名前は開発中のものです。
14/04/30 16:47:29.58 IG+u4GlD.net
>>647
URLリンク(ideone.com)
そのコードが何か不明だがこういう振る舞いをするという事がわかってれば好きにしろ
680:名前は開発中のものです。
14/04/30 22:30:05.62 vrCaDxEc.net
647です。皆さん色々すみません。
やりたかったのは、例えばコンフィグデータを一括管理するクラスを作って
他のクラスでそれを使う、ような事です。
例として挙げたソースは簡単に書いただけで直接書き換えたいというわけではありませんでした。
関係ない愚痴ですが、こうやれば動くからこれでいいのかな、と作り進めてても
やっぱりおかしいよな、とまた一から作り直す、を繰り返してて制作が全く進みません……。
681:名前は開発中のものです。
14/05/01 03:51:25.76 jedbV3SH.net
スレリンク(ghard板:235番)
↑ ↑ ↑ ↑ ↑ ↑
682:名前は開発中のものです。
14/05/01 05:10:34.61 z13QLsnT.net
唯一のインスタンスを保証するシングルトンではなく、
インスタンスは複数作れるけど、実体は同じものを作っている……っていうアルゴリズムあったよね。
>659の場合だと、その方法使えそうな気がするものの……名前が分からんので教えられん
683:名前は開発中のものです。
14/05/01 08:21:56.84 3d6d8Z4v.net
>>659
そんなのグローバル変数でいいだろ
つまんないとこで止まってないで先進めよ
684:名前は開発中のものです。
14/05/01 09:19:18.98 OWwKad9r.net
インクルードガードとexternでおk
685:名前は開発中のものです。
14/05/01 11:26:20.56 HOcvGku/.net
URLリンク(ja.wikipedia.org)
これをプログラムに直すとどうなるの?
大学数学はさっぱり分からないから誰か教えて
686:名前は開発中のものです。
14/05/01 12:30:19.75 Fm1fH+z1.net
>>664
ダイクストラ法は大学数学関係ないぞ
Game Coding Gemsの1か2に解説とソースコードがある
687:名前は開発中のものです。
14/05/01 12:35:48.55 d2ShpQiQ.net
>>664
図のアニメーションと解説を読めば分かると思うが…
難解な数学計算無し。少なくとも高校数学の域は逸脱してない。
記号の意味分からない子向けに手続きを文章で丁寧に解説してる。
下手すりゃ厨房でも「コンピュータってバカ正直な事なんだね…」
と感想を述べながら呆れ顔をしてくるレベル
688:名前は開発中のものです。
14/05/01 12:37:56.10 d2ShpQiQ.net
×「コンピュータってバカ正直な事なんだね…」
○「コンピュータってバカ正直な事をやるんだね…」
689:名前は開発中のものです。
14/05/01 13:21:29.38 d2ShpQiQ.net
>>662-663
同意
690:名前は開発中のものです。
14/05/01 13:56:28.60 z13QLsnT.net
「馬鹿正直」って感想はさ、たぶんコンピュータへの理解の第一歩だよね?
691:名前は開発中のものです。
14/05/01 14:18:18.47 d2ShpQiQ.net
そうなんじゃない?学園祭でマイクロマウスの実演と解説をしてた時の消防や
厨房の反応は楽しかったよ。「かあいい」「頭悪過ぎうー」「きゃはは」
「がんばれー」とかが大半だったけど、眼鏡っ子の厨房が模造紙の解説を
一所懸命に読んでて、繰り出す質問がなかなか賢すぎてこっちが呆れた
692:名前は開発中のものです。
14/05/01 14:26:30.17 0k+QrX5J.net
メンバ変数が全部staticのパターンの名前が思い出せない
モノトーンだかそんなような名前だった覚えがあるけど
693:名前は開発中のものです。
14/05/01 14:27:47.22 d2ShpQiQ.net
monostateじゃね
使ったことないが
694:名前は開発中のものです。
14/05/01 16:56:40.77 ZxuEhXPJ.net
シングルトン モノステート
695:名前は開発中のものです。
14/05/02 00:13:50.98 5CvmG/6A.net
皆さんは描画リストに登録して、Zソートやらしてからとめて描画などしてますか?
2Dで同じようなことを考えてるのですが、描画管理クラスにリストを持たせ、
その管理クラスのメソッドを通してリストへ登録しようとしてます
XNAのSpriteBatchの形が近いです
しかしこの方法だと管理クラスを引数でどんどん渡していかなければいけなく、良い方法がないか探してます
2Dオブジェクトにstaticで管理クラス、または描画リストを持たせた方がいいのでしょうか
設計の話なので明確な答えがないのはわかってます
皆さんの考えを参考程度に聞きたいです
696:名前は開発中のものです。
14/05/02 00:48:59.22 DPIL44M1.net
スプライト的な「2Dオブジェクト」を作って、
そこにパラメータ与えて、あとは自動的に描画されるような組み方してるん?
697:名前は開発中のものです。
14/05/02 01:19:41.25 ZlBT84m3.net
>>674
>しかしこの方法だと管理クラスを引数でどんどん渡していかなければいけなく、良い方法がないか探してます
依存性があるなら明示する(例えばSetterやコンストラクタで注入するだとか)
というのはOO的には無難なお作法だと思うけど。なんか不都合あるの?
(いちいち記述するのがかったるい、だとか)
まぁ、あまりに広範に渡ってその依存性が確認されるなら、グローバルな
存在、グローバルなサービス、として提供してもいいのでは。尤も、描画
モジュールに依存するモジュールってゲームの中では限定的だと思うけどね
698:名前は開発中のものです。
14/05/02 01:31:13.85 Ru1dUuzy.net
表示するもの {
private IDrawable model;
private Vector2 pos;
private 表示するもの[] children;
public void Draw(描画管理クラス){
描画管理クラス.add(model,pos);
for child in child {
child.draw(管理クラス);
}
}
}
699:名前は開発中のものです。
14/05/02 06:36:13.80 Bq1H46te.net
ダイクストラ法ってゴールをコロコロ変える(プレイヤーを追いかける)ことって出来る?
700:名前は開発中のものです。
14/05/02 07:18:20.71 DPIL44M1.net
たとえば屋内を探索するゲームの場合、
ある部屋から別のある部屋へ行く方法ってのは基本的に固定なので、最初に各パターンを計算しておけばいい。
上手く追いかけるように動かしたいってことなら、
有名なところで、パックマンの敵アルゴリズムの話がシンプルでわかりやすいと思う。
701:名前は開発中のものです。
14/05/02 07:57:10.51 gb8xd1Dr.net
自キャラの範囲と、敵の範囲と、とりあえず目指すポイント
みたいな表を作っておけば良いのか
702:名前は開発中のものです。
14/05/02 09:29:13.26 dzhB41LP.net
>>675
2Dオブジェクトは座標、テクスチャを持ち、描画関数内で管理クラスのリストへ登録
という流れを考えてますので、自動的な描画はしません
>>676
やはりプログラムの最初にsetterで登録が一番無難ですよね
不都合はないのですが、2Dオブジェクト全てが
管理クラスのsetterを持つのが気持ち悪く思えてしまい・・・
描画モジュールに依存するものが限定的とは...ゲーム内では殆どのものが
描画されるものだと思ってましたが違うのでしょうか
オブジェクトを管理したりするものは別だと思いますが・・・
>>677
これは結局引数でどんどん渡していくのでは・・・?
703:名前は開発中のものです。
14/05/02 09:52:01.66 Ru1dUuzy.net
>>681
引数で渡していっていいと思う
常に同じ描画管理クラス使うとは限らないし
704:名前は開発中のものです。
14/05/02 13:12:16.23 6RPuKXq0.net
>>681
何故「気持ち悪い」のか言葉で説明できるようにしてみれば
どうすればいいのかわかるんじゃない?
705:名前は開発中のものです。
14/05/02 13:23:32.11 taHVwRQz.net
リストへの登録を描画関数と分ければ?
登録するデータを戻り値にして呼び出し側で登録するとか
706:名前は開発中のものです。
14/05/02 19:21:58.74 dzhB41LP.net
>>682
レンダーターゲットを変えた時などでしょうか
>>683
2Dオブジェクトは例えばスコアや、メニューなどに使用するのに
管理クラスのsetterを常に持ち続けてるから・・・?
>>684
list.add(pObj->draw()); という感じですか?
この場合複数のオブジェクトを描画する時はどうなるんでしょう
スコアクラスは1桁描画を複数回呼ぶと思います
そういう時は戻り値でデータを返せないのでは
結局引数で渡してリストへ登録
または2DObject自身がリストを保持し、そこへ各派生クラスが登録する
という形になってしまうのでしょうか
707:名前は開発中のものです。
14/05/02 20:24:35.53 tEs8rCVt.net
ゲームで2つのプレイヤーの画面を並べる時ってどうしてる?
プレイヤーの状態とかエフェクトとかシングルトンで管理していて今まではどこかのクラスから
Game::instance()->registerEffect(new Effect())
みたいにできたんだけどプレイヤーごとにGameを作るようにしたらこれができなくなって
ゲームのインスタンスをあちこちに渡さなきゃならなくなったんだけどこんなことしないでもできる方法ない?
708:名前は開発中のものです。
14/05/02 20:30:31.53 DPIL44M1.net
話の流れがよくわからないんだけど、
renderer.add(PlayerObject); //プレイヤーキャラクターのオブジェクトを登録
renderer.add(EnemyObject); //敵キャラクターのオブジェクトを登録
…みたいなのとは全く別の話?
709:名前は開発中のものです。
14/05/02 20:32:36.22 DPIL44M1.net
>>686
Gameクラスってなんじゃらほい?
いわゆるシーンとかシーケンスってやつ?
710:名前は開発中のものです。
14/05/02 20:37:30.44 Yjnja2zX.net
>686
シングルトンが用を足さない状態だからやめるのが手っ取り早いけど
とりあえずシングルトンインスタンスの取得にID等の引数もたせれば?
引数違いなら違うオブジェクトを返すてのは実装は容易でしょ
こういうどこでも使えるグローバル変数的な状況で使うシングルトンは嫌いだけどな
711:名前は開発中のものです。
14/05/02 20:42:33.50 Ru1dUuzy.net
>>685
レンダリングターゲットを変えたときもあるかもしれないけど、
マルチスレッドで分割してトラバースするこもとあるし。
Direct3D11でコンテキストを複数作れるようになったしね
712:名前は開発中のものです。
14/05/02 20:45:40.07 Gu2dz6L1.net
>>685
戻り値をVectorかなんかにしたら
>>686
instance()に引数渡して特定のインスタンス取得出来るようにする
これまでシングルトンだったのが複数必要になった時点で設計見直した方がいいような気もするけど
713:名前は開発中のものです。
14/05/02 20:54:53.01 tEs8rCVt.net
情報不足すぎたうえに色々酷いごめんよ
Effectは別で管理している
シングルトンをやめるからどうするのが良いのかと思って聞いたんだ
ダブルディスパッチで敵の当たった処理とかしているんだけど
class Game {
Enemy enemy[];
}
class Enemy {
void hit() {
if( 死んだ ) { Effect::addEffect(new Effect()); }
}
}
みたいにしててどのエフェクトを使うかはEnemy側で決めるようにしたいからこうなったんだけど
GameにEffectのインスタンス持たせてEnemyにそのインスタンスの参照なりなんなり渡して
if( 死んだ ) { effect->addEffect(new Effect()); }
とかしても良いんだけどなんかしっくりこないんで気になったのよ
>>688
そうなんだけど実際あんまり関係なかった・・・
>>689
うまい設計思いつかなかったんよね
その方法手っ取り早いし良さそうです
714:名前は開発中のものです。
14/05/02 21:46:30.08 Yjnja2zX.net
>>692
EnemyはどうしたってEffectへのポインタが欲しいわけで描画の関係からか複数存在してるとなると
初期化などでずっと持たせるのが嫌ならhitかそれ以上に位置するGameから呼ぶ関数に引数として渡すか
EnemyはGameクラスのポインタ位持ってるならGameのほうにAddEffect関数もたせてEnemyはそれを呼ぶか
スレッドセーフでない設計ならEffectポインタのグローバルか静的関数なGetterとSetter用意して
GameオブジェクトごとにEnemy更新前にSetterでGetterの戻り値となるポインタを入れ替え…止めた方がいいな
715:名前は開発中のものです。
14/05/02 22:17:39.20 DPIL44M1.net
実際のコードでは、Effectクラスから派生した HitEffect とか DeadEffect とかを
Enemy内から呼んでるんだよね?
716:名前は開発中のものです。
14/05/02 22:41:54.83 gb8xd1Dr.net
GameがEnemyを管理するんだったらEnemyに
エフェクト番号とフラグを持たせれば良いんじゃない
717:名前は開発中のものです。
14/05/03 02:03:51.33 aTctHTqN.net
>>687
そんな感じです
ですがそのrendererを渡そうか悩んでます
引数ですとかなり深い(?)ところまで渡す必要があるのではないかという感じです
>>690
引数で渡した方が自由が利きますね
めんどくささと柔軟性のどっちをとるかみたいな感じでしょうか
>>691
座標、テクスチャ、UV、色などのことを考えるとVectorかなんかだときつそうです
とりあえず引数で渡す方向で作ってみたいと思います
オブジェクト指向難しいです...
718:名前は開発中のものです。
14/05/03 06:24:50.92 aTctHTqN.net
ああ、文章にミスが
>>696
rendererを渡そうか×
rendererをどう渡そうか○
です
719:名前は開発中のものです。
14/05/03 14:23:28.87 yzrAO4fX.net
ヒープ領域のオブジェクトを参照で引数で渡したい時ってどういう風に書けばいいの?
720:名前は開発中のものです。
14/05/03 16:01:04.13 ZggXQf33.net
普通に参照渡しするだけだよ
721:名前は開発中のものです。
14/05/03 18:27:55.89 Dtrz+is9.net
void f(A &a);
A *a = new A();
f(*a);
こんな感じゃない
参照って殆ど使った事ないからあってるかどうかわからんけど
722:名前は開発中のものです。
14/05/03 19:07:15.30 hZKN3J0P.net
「ゲームプログラマになる前に覚えておきたい技術」
という本がオススメと言われたんですが、これ持ってる人いませんか?
役に立つ度合いとかアドバイスしてもらえたら嬉しいです
723:名前は開発中のものです。
14/05/03 19:31:10.25 R+meoZG6.net
ゲームプログラマになる前に覚えておきたい技術
01 この本はどんな本か
URLリンク(www.shuwasystem.co.jp)
これを読みましたか?
724:名前は開発中のものです。
14/05/03 20:46:14.95 TVFyIiNS.net
>>693
やっぱりそれぞれが持つしかありませんかねえ
呼び出し元をparentとかして持たせておくのって普通にやっていることなんですか?
この場合だとEnemy::parentにGameへの参照か何かを持たせるとか
>>694
はいそうです
725:名前は開発中のものです。
14/05/03 21:38:49.30 XwaCxcGs.net
重いので持ち運びには向かない、かな
726:名前は開発中のものです。
14/05/03 21:46:57.91 XwaCxcGs.net
>>703
各クラスがどのエフェクトを使うのか?というのをハッキリさせておいて
必要なものだけインクルードするようにすれば、そこまで気持ち悪いことにはならないんじゃないだろうか。
たとえばEnemyクラスは、Effect::GettingItem(アイテム獲得)とかEffect::PlayerDead(プレイヤー死亡)は不要だろう。
それすら気持ち悪いと思うなら(分からんでもない)、
ObserverとかListenerとかCallbackとかその辺に頼るとかでも良いんじゃない?
727:名前は開発中のものです。
14/05/03 22:35:18.25 Kqu7ExT3.net
>>700
参照引数は「読むだけ」を意図してる場合が多いからconst付きが多いかな
>>703
>呼び出し元をparentとかして持たせておくのって普通にやっていることなんですか?
>この場合だとEnemy::parentにGameへの参照か何かを持たせるとか
その疑問は>>674-696のやり取りと同じ話っぽいね、俺も>>704-705に同意かな。
依存関係を明示すると違和感を覚えたり気持ち悪くなるのは、大抵の場合
依存関係の認識(or分析)が大雑把。依存関係を明示するとそれが露見しちゃう。
機能分割が大雑把。依存関係を詳細に分析すると広範に絡み合ってて一体でした。
とか。Gameへの参照は、恐らく要らん情報にアクセスする権利も与えてるから
依存関係の明示というより、広範に渡る権力へのアクセス権の譲渡なのかな?
君はこの世界に神になる。俺はいいと思うけどね。というか、はなっから
グローバルなサービスとして提供してしてもいいかもね。完成させてから
リファクタリングしたほうがいい
個人的な短期小規模開発(作り捨て)なら別に問題ない。完成と反省のサイクルよ
728:名前は開発中のものです。
14/05/03 23:45:58.24 yuGTooJm.net
具体的なEnemyなんてアプリ層なんだから泥臭くていいと思うのだが。
729:名前は開発中のものです。
14/05/04 00:03:34.32 4VZ37tn9.net
すまん、>704はセガ本が物理的に重いって話のつもりだったんだ
730:名前は開発中のものです。
14/05/04 00:09:25.10 LNtKUxSS.net
まあ大概のゲームプログラミング本は重いよね
電子版あるならそっちの方が捗りそうだ
731:名前は開発中のものです。
14/05/04 07:21:43.07 r1PwGAIh.net
描画クラスを作って描画用のインターフェイスを作る
描画されるクラスはインターフェイスを実装
描画クラスはそのインターフェイスをリスト管理し順番に描画
ゲームクラスはデータクラスと描画クラスを管理し
必要に応じてデータクラスを作り、描画クラスに登録
ゲームクラスが当たり判定をして、エフェクトクラスをnew、描画クラスに登録
て感じじゃ駄目なの
732:名前は開発中のものです。
14/05/04 18:09:40.60 Oce/sxqq.net
>>701
サンプルプログラムの修正版があるからそれ見て決めたら?
ちなみに独自のライブラリを使ってる
733:名前は開発中のものです。
14/05/04 21:44:57.67 o3zvQF1I.net
もし、新幹線できたらな
飛行機乗客が減り、飛行場が苦労する
バス乗客が減り、高速道路が苦労する
結果的に、四国地方の経営破たん
734:名前は開発中のものです。
14/05/06 09:11:34.47 WKSS3LlW.net
ポインタに構造体を持たせる場合ってきちんとスマートポインタを使った方がいいの?
735:名前は開発中のものです。
14/05/06 10:42:16.25 2Ki+N293.net
>>711
独自ライブラリですかー・・・
ありがとう。ちょっとどっかで立ち読み出来るまでは買い控えます。
736:名前は開発中のものです。
14/05/06 14:47:05.12 D61HzG9l.net
>>713
本来スマートポインタはラクをするために使う。あとは好きにしろ
あと言語の使い方一般についての質問はプログラム板のほうがいい
【初心者歓迎】C/C++室 Ver.90【環境依存OK】
スレリンク(tech板)
はい、次の方どうぞ
737:名前は開発中のものです。
14/05/06 15:47:49.53 C6PkJkWu.net
そのスレ、ちょっと見たけど罵りばっかじゃないかw
738:名前は開発中のものです。
14/05/06 16:22:09.99 tFTEVnQV.net
x64の64bitビルドでのループ変数とかメンバ変数てint,unsigned intとsize_tどっちが最適なの?
DirectXのAPIが32bit幅なのにSTLは64bitみたいに混在してて決め打ちしにくいんだけど
インデックスとして毎回32bitを64bit拡張と変数を32bitにstatic_castと
タイプ量はともかく実行時に効率いいほうにしたい
739:名前は開発中のものです。
14/05/06 16:27:40.04 D61HzG9l.net
>>716
報告しなくていい。そういう感想は彼らに直に言ってあげな。陰口より建設的だろ
はい、次の方どうぞ
740:名前は開発中のものです。
14/05/06 16:28:53.69 D61HzG9l.net
>>717
かぶったすまん
741:名前は開発中のものです。
14/05/06 16:44:38.90 C6PkJkWu.net
>>718
そんな非建設的な事実上機能していないスレに誘導してどうするんだって事だよ。
はい、次の方どうぞ。
742:名前は開発中のものです。
14/05/06 17:21:27.34 D61HzG9l.net
>>717
例えばループ変数については普通にint使ってるな
参考までに、科学計算系のライブラリでもそんな感じだったと思うよ
計算速度云々が問題になる場合、気にかける場所はもっと別の所かと
743:名前は開発中のものです。
14/05/06 20:22:43.10 HhBjBQsT.net
32bit環境でもint iをbyte iとかshort iにはしない
あとむやみにunsignedにするとsignedにunsigned加算して警告でたり面倒のもと
744:名前は開発中のものです。
14/05/08 22:05:56.40 Np2Vdwsy.net
ローカル変数がautoばかりになってしまうんだけど意図的な型だけ除外しておけば問題ないよね?
constもメンバ関数含めて相当あるけど
745:名前は開発中のものです。
14/05/08 22:48:55.29 v1IR+nQC.net
人間がソースコードを読んだときに
「型が明らかである場合か、あるいは逆に全く意識してほしくない場合にのみ使う……とかにしておけば?
746:名前は開発中のものです。
14/05/09 09:00:26.26 3cnn0QfE.net
ローカル変数にauto使うメリットってある?
イテレータの型書くの面倒くさい、位しか思いつかない
747:名前は開発中のものです。
14/05/09 09:04:31.69 7ikJMhxE.net
十分じゃないか
748:名前は開発中のものです。
14/05/09 13:56:58.03 Kaaj65V1.net
型推論って引数に使ったら勝手にオーバーロードしてくれるんだと思ってたんだが、引数とか戻り値には使えないんだな
iteratorの記述を省略するための機能か
749:名前は開発中のものです。
14/05/09 17:15:23.11 htXiJh1L.net
そういう用途にはテンプレート関数があるしね
750:名前は開発中のものです。
14/05/10 00:22:59.13 6TirXj8H.net
>>725
個人的にはイテレータを簡単に書けるメリットが一番大きいと思ってるが
それ以外で使うとしたら
auto f = new Foo(); //Foo型なのは明らか
とか
//交換
auto tmp = a; //型は明らかではないが意識する必要がない
a = b;
b = tmp;
とかかなあ。
後者は素直にtemplate関数にでも投げたほうが良さそうだけどね
751:名前は開発中のものです。
14/05/10 10:54:20.51 dAeX94+O.net
配列に入ってる複数の要素のうちの一つをポインタに持たせる場合って、スタックのアドレスをポインタに持たせても大丈夫?
752:名前は開発中のものです。
14/05/10 11:11:37.14 hKETio2L.net
>>730
「スタックのアドレス」を「スタック上におかれた配列の要素を指すアドレス」と解釈したけど
URLリンク(ideone.com)
その配列が生きている間は問題ない
753:名前は開発中のものです。
14/05/10 22:40:27.91 +R2ltZ7t.net
const T& f();
void g()
{
auto t= f();
}
ってすると t は const T& 型になると思ってたけど
実はただの T 型でコピーコンストラクタでひどいことになったことあります
754:名前は開発中のものです。
14/05/11 18:46:58.77 8qR2WxrE.net
#include "define/MoneyType.h"
int money[MoneyType.SIZE];
こういう宣言の仕方って出来ないの?
MoneyTypeはenumで
enum MoneyType {
GOLD,
DIA,
SIZE
};
755:名前は開発中のものです。
14/05/11 19:38:27.89 3XauxJKc.net
enumはC++11で整数としてあつかえなくなったってwikiに書いてあった気がする
っていうかその使い方わかりにくいしやめた方が
756:名前は開発中のものです。
14/05/11 19:44:07.91 3XauxJKc.net
訂正
static_castでキャストすればいけるっぽい
757:名前は開発中のものです。
14/05/11 19:59:02.14 yHWGVGOF.net
GOLD,DIA,SIZEって何かと思ったけど、もしかしてお金の単位なのかな?
758:名前は開発中のものです。
14/05/11 21:01:42.40 KSscCZAl.net
MoneyType::SIZEかな?
ただこれだと再定義のエラーが前出たような気がする
759:名前は開発中のものです。
14/05/11 21:04:03.89 9RoLwWBR.net
>>733
enum class MoneyType:int
{
GOLD,
DIA,
SIZE
};
int money[ MoneyType::Size ];
760:名前は開発中のものです。
14/05/11 21:06:37.47 KSscCZAl.net
適当に書いちゃったけど何をしようとしてるのかいまいち理解出来ないw
761:名前は開発中のものです。
14/05/11 21:14:58.11 9RoLwWBR.net
enumの要素数を静的に得たいんでしょ
将来お金の種類増えるかもしれないとか
配列使うぐらいならvectorにしとけとも思うが
762:名前は開発中のものです。
14/05/11 21:51:52.47 3XauxJKc.net
構造体じゃいかんのか
763:名前は開発中のものです。
14/05/12 00:24:54.73 cE27KFFY.net
実際に使うの想像してこうなった。
例えば複数の種類のお金で買えるショップ機能を作りたい場合、
ショップ側でMoneyTypeという型と整数を持っておけば、処理が楽かなと思ったんだけど
764:名前は開発中のものです。
14/05/12 01:09:04.70 u2hQW3ha.net
つまり>740が正解っぽい?
765:名前は開発中のものです。
14/05/12 14:46:27.12 Pch/P8kY.net
ゲームで何時でも何処でも参照、代入できるデータって一般的にどうやって管理してます?
(例えば主人公のデータとか色々な場面で使いそうなもの)
今まで単純にデータクラスの中に静的メンバ変数で定義してグローバル的にやってたけど、
たまたまシングルトンで管理してるソースを見つけて、色々あるのかなって思った
766:名前は開発中のものです。
14/05/12 18:22:11.56 cE27KFFY.net
シングルトンは嫌だからゲームマネージャークラス作ってそこにプレイヤーデータのポインタ持たせたりしてるけど、どうなんだろう??
767:名前は開発中のものです。
14/05/12 18:22:35.24 gXmiaEA2.net
3Dゲームでカメラを遅らせて動かす場合って角度を線形補間してベクトルにしてる?
それともクォータニオンで球面線形補間してる?
768:名前は開発中のものです。
14/05/12 20:18:49.99 u2hQW3ha.net
>>745
グローバル変数は可能な限り減らす、という理念の上でやってるなら、
それは実に正しい手法だと思うよ
769:名前は開発中のものです。
14/05/12 22:53:45.27 Qk7dokdu.net
グローバル変数使いまくりの俺だが、グローバル変数は使わない方がいいと言われて
その方向でプログラム書き直したところ、手間の物凄く増えて辟易。
やり方を間違ってるんじゃないか感が半端ない。
770:名前は開発中のものです。
14/05/12 23:01:55.91 Qk7dokdu.net
あるプログラム本に「JAVAなんかは誰が組んでも似たようなものになるが、
C++プログラムは人によってまるで違ってくる」とあったが本当みたいね。
本や解説サイトによって、サンプルがかなり違ってるようで混乱しまくるわ。
771:名前は開発中のものです。
14/05/12 23:39:44.01 4H1ieXj2.net
グローバル変数どうのこうのは保険をかけるためのもので手間を減らすものではないから仕方ないね
772:名前は開発中のものです。
14/05/13 06:24:12.16 hs5B6JyN.net
グローバル変数使わずにやろうとすると関数の引数が複雑になりがちだからな
一人で作ってるコンパクトなプログラムくらいだったら使いまくりでいいと思うわ
773:名前は開発中のものです。
14/05/13 10:40:34.58 lZBhyb5G.net
グローバル変数は初期化の順序が問題になる
複数のソースコードのあちこちに点在してるとそれが顕著になり
グローバル変数がクラスで依存関係があると動作保証が難しい
せめて組み込み型以外はポインタ型にして初期化の順序を決めちゃうのが安全
774:名前は開発中のものです。
14/05/13 11:22:50.82 i7OBK+99.net
>>738
'MoneyType' is not a class or namespace
ってでる
visualstudio2010だと出来たと思うんだけど、
Eclipse4.3だと出来ない
C++のバージョンによってなんか変わったのかな
775:名前は開発中のものです。
776:
>>753 enum classはC++/CLIだからだろ Cにそんな構文はない 俺はC++には詳しくないけど実はあるのかな
777:名前は開発中のものです。
14/05/13 13:16:16.22 LR5OHySp.net
C++11から入った構文
778:名前は開発中のものです。
14/05/13 22:03:52.41 VqkITLrD.net
グローバル変数はこう書けば良いんじゃね
使うところでだけglobal.hをインクルードしてさ
grobal.cpp
int a;
groubal.h
#ifndef _GLOBAL_H_
#define _GLOBAL_H_
extern int a;
#endif
779:名前は開発中のものです。
14/05/13 23:05:24.12 RPOQlcBK.net
>>756
わざわざ識別子を _ で始めるなんて沸いてるんじゃない?
780:名前は開発中のものです。
14/05/13 23:15:35.87 dsNPksM9.net
是非はともかく、よく見かけるけどな
781:名前は開発中のものです。
14/05/13 23:46:55.80 VqkITLrD.net
>>757
じゃあなんて書くんだ?
782:名前は開発中のものです。
14/05/13 23:51:06.96 dD8wYEBQ.net
アンダーバー始まりは処理系予約とかじゃ無かったっけ
慣習的に
783:名前は開発中のものです。
14/05/13 23:59:25.01 VqkITLrD.net
>>760
まじかよ
学校でこう習ったよ
何でそんな書き方教えるんだよ
まぁ開発はVSだから#pragma onceしか書かないから知らんかっただけっすけどね・・・
784:名前は開発中のものです。
14/05/14 00:50:31.19 qOCHvgWh.net
>>756
つ>>663
ついでにnamespaceにぶち込んでもいいのよ
785:名前は開発中のものです。
14/05/14 00:53:50.93 qOCHvgWh.net
>>761
gccでもいつの間にかpragma once使えたりするんだよな
あれ、サッサと標準仕様に盛り込めばいいのになと思うよ
786:名前は開発中のものです。
14/05/14 01:34:53.87 Bv7wzu+p.net
だいたいのコンパイラが対応してるみたいだしデファクトスタンダードってところ
787:名前は開発中のものです。
14/05/14 02:44:20.77 SkdpMvQe.net
効率的には#pragma onceの方がいいと聞いたことはあるが
IDEによるかもしれん
788:名前は開発中のものです。
14/05/14 03:12:47.17 YePF79fh.net
単純なi nclde guard は力技の処理だけど
pragma once は処理系次第で最適化されてるからね。
複数のプラットフォームを想定するなら
安全策をとって両方記述するのがオススメ。
pragma once があれば効率的に処理してくれるかもしれないし、
もしpragma once を理解できない処理系でも
inlude guardは必ず処理してくれるからね。
789:名前は開発中のものです。
14/05/14 10:10:49.06 2wCAVOdx.net
>>766
両方記述?寝言は寝て言えw
790:名前は開発中のものです。
14/05/14 10:25:37.80 vvdSHZVH.net
VC++に#pragma onceが入ってすぐの頃は
自動生成したヘッダには#pragma onceと#ifndef-define-endifが
コンパイラバージョンによって自動で切り替わるように書かれてたと記憶している
その辺から考えても、両方書くのは無駄じゃない
791:名前は開発中のものです。
14/05/14 12:46:41.03 1doe1mvx.net
std::mapにenumとかstructを使いたいんだけど
template argument 4 is invalidっていうエラーが出ます
具体的には
map<アイテムID(enum型),アイテムパラメータ(struct型)> aaaaa;
って感じです。
パラメータっていうのはその名の通りアイテムを装備するとstructのメンバの
addHPとかaddMPっていう変数の分だけ上昇する感じで、
使い方はプレイヤーはアイテムIDだけ持っておけば、あとは必要な時々で値だけ取得できるかなという感じです。
792:名前は開発中のものです。
14/05/14 13:13:18.32 CAIv9eLR.net
enum itemID{ID1=0, ID2, ID3, ID4};
struct itemParam{int p1; int p2;};
itemParam param;
map<itemID, itemParam> m;
m.insert(make_pair(itemID::ID1, param));
こんな感じで動かない?
793:名前は開発中のものです。
14/05/14 13:15:39.85 Ocn3g8OS.net
>>769
比較関数がないって怒られてるんじゃね
一つ目の型を enum型じゃなくて int に変更するわけにはいかないの?
794:名前は開発中のものです。
14/05/14 14:08:33.50 Ke2wFa7k.net
そもそもそれmapにする意味あるのか?
>>733みたいな感じで配列で十分な気がするんだけど
795:名前は開発中のものです。
14/05/14 15:29:04.69 Ocn3g8OS.net
map だと必要な分だけ使えるじゃん
0~ イベントアイテム
10000~ 武器
20000~ 鎧
みたいに
796:名前は開発中のものです。
14/05/14 16:29:43.89 YPHrxvGY.net
enum使うなら10000から武器みたいな区分けがそもそも必要ないと思うんだけど
797:名前は開発中のものです。
14/05/14 21:01:01.54 qOCHvgWh.net
>>769
それ、>>770で動きますよ
>>772-774
仮に、実行時に追加削除更新等なし、静的、参照専用、の情報の集合
という前提条件であればstd::map(赤黒木)を使う合理性はあまりないかな
>>773のようにキー番号が連続してないのでれば、ハッシュマップの類の
ほうが向いてますね
URLリンク(research.preferred.jp)
補足:記事中のLoki::Assoc
798:Vectorとほぼ同じものとしてboost::flat_map もあります。でも、>>774の言う通り、結局vectorでおkにもできますね ま、完成しない(動かない)事に比べればどれ選んでも瑣末な違いなので (特に昨今のPCなら)好きなの選べばいいかと思います。身も蓋もないね
799:名前は開発中のものです。
14/05/14 23:37:56.68 XQ3tGmyB.net
>>770
enumの最初を0と明示するだけで変わるんです?
800:名前は開発中のものです。
14/05/15 13:17:04.58 vi3A9MFw.net
変わらないですよ。試せばすぐ分かりますけど、ム板のスレに誘導されたいです?
801:名前は開発中のものです。
14/05/15 17:35:02.68 CM4Haxt/.net
普通に動くよね
コンパイラのバージョンとかで古いのだと駄目なのかな
802:名前は開発中のものです。
14/05/15 19:15:22.94 D0s76qwM.net
実は全然違うところでエラー出てるんじゃないの
803:名前は開発中のものです。
14/05/16 15:57:03.11 RLWXI/UA.net
ナビメッシュのやり方が書いてある本とかサイトとかってある?
804:名前は開発中のものです。
14/05/16 23:45:36.07 bSd/X954.net
> とかってある?
ありますよ
navigation mesh pathfinding algorithm game waypoint graph search
など適当なキーワードでググるといいです。動画によるアルゴリズムの
解説も出てきますね。書籍ならAI Game Programming Wisdom 4 が
個人的にオススメです
805:名前は開発中のものです。
14/05/17 09:32:46.40 a+6vW56R.net
そういうのって概要だけ聞いて自分で考えて作った方が早くない?
サンプルコードみても理解するのに時間がかかるわ
806:名前は開発中のものです。
14/05/17 10:01:46.81 ATk/Gp35.net
ゲームプログラミング本といえばGameProgrammingGemsシリーズなんだかな
最近の若者は読まないのか
807:名前は開発中のものです。
14/05/17 11:06:25.43 7UqYAydx.net
現代の技術の世界において
英語が読めないのは脳が半分無いのと同じ。
それだけのこと。
808:名前は開発中のものです。
14/05/17 12:01:48.26 G1g9tldj.net
翻訳したやつ読めば
809:名前は開発中のものです。
14/05/17 12:34:45.87 /WeYTHrm.net
英語読めてもソースコード読めなかったりするし
プログラムは勉強したところでコード書けないのが大半らしいな
元々作文が下手とかそういう次元ではなく理解できないとか
810:名前は開発中のものです。
14/05/17 12:40:03.20 o9p3b0z7.net
そもそも日本語で書いてあるプログラム解説書だって意味わかんないよw
811:名前は開発中のものです。
14/05/17 13:44:47.33 7UqYAydx.net
>>785
半年遅れで付いていく人間は残念ながら奴隷で終わるよw
英語ができて最先端に追従する奴、ときには自分が最先端を発信する奴に
「あ、こいつバカだなww」と思われながら生きる惨めな三流人生が待っている。
それで良ければ英語なんて学ぶ必要はない。
まぁ、普通は(普通の知性の持ち主は、という意味)
修士課程で英語の論文を死ぬほど読んで
「喋れないけど読める」という妙な英語力を身につけられるんだけどねw
812:名前は開発中のものです。
14/05/17 14:19:53.26 ZLhv9Phh.net
相変わらず病んでますね
813:名前は開発中のものです。
14/05/17 14:53:46.32 k3uAdR/A.net
とりあえずナビメッシュのやり方教えて
814:名前は開発中のものです。
14/05/17 17:55:58.84 ZLhv9Phh.net
780の人ですか?
具体的に何をやってみてどこでつまずいてるのか話せば答えやすくなるかと
815:名前は開発中のものです。
14/05/17 18:02:04.88 G1g9tldj.net
URLリンク(www.lameije.co.jp)
これじゃあかんのか
816:名前は開発中のものです。
14/05/18 17:48:20.69 bAjzsQ9M.net
オクツリーに障害物を表示させたいんだけど、オクツリーのある場所がどの座標なのかを
817:調べる方法ってある?
818:名前は開発中のものです。
14/05/18 21:18:36.16 uYYY8hgN.net
ボクセルのインデックスを座標のビット配列にしてインデックスからボクセルの位置を取得
URLリンク(marupeke296.com)
これを3ビット毎にすれば出来ると思うんだがどうだろ
819:名前は開発中のものです。
14/05/19 04:39:02.31 XNC2jE/Y.net
この入門?みたいなサイトで勉強してたんだけどつまづいたので分かる方いたら教えてください
URLリンク(bituse.info)
for(int i=0;i<ENEMY_NUM;++i){
enemy[i]=new ENEMY(data[i].type,data[i].stype,data[i].m_pattern,data[i].s_pattern,data[i].in_time,data[i].stop_time,data[i].shot_time,data[i].out_time,data[i].x,data[i].y,data[i].speed,data[i].hp,data[i].item);
}
↑この文の enemy[i]=new ENEMYのイコールのところでオペランドと一致する演算子なんてねぇよって怒られます
原因として考えられるものってなんでしょうか?
for(int i=0;i<ENEMY_NUM;++i){
enemy = new ENEMY[i](省略);
}
だったらいけるみたいなんですけど、違いがよくわからないです・・・
820:名前は開発中のものです。
14/05/19 05:31:35.17 FdnDAUlP.net
enemyの型がポインタの配列になってないんじゃないの
821:名前は開発中のものです。
14/05/19 10:00:14.39 hjxHIKHc.net
こうかな
正:ENEMY *enemy[ ENEMY_NUM ];
誤:ENEMY *enemy;
サイトを見ると省かれてるみたいだけど
敵を複数出すようにした時点で enemy を配列に変更しないといけない
822:名前は開発中のものです。
14/05/19 11:05:51.60 CSMuM09V.net
これコンストラクタの引数なんで構造体の参照渡しじゃないのか
無駄に読みにくいわ
823:795
14/05/19 11:33:54.01 XNC2jE/Y.net
できました。
ご指摘の通り、enemyを配列にしたら無事にコンパイルできました。
ちょっと私にはわかりにくいサイトだったようなので別のところで勉強してみます・・・
824:795
14/05/19 11:34:28.24 XNC2jE/Y.net
お礼を忘れていました
ご指摘ありがとうございました。
825:名前は開発中のものです。
14/05/23 00:32:00.04 61iiZtPG.net
おらLAMPしか知らないんだけども
C++で作ったリアルタイムなネットワークゲームのオンラインサーバって
どういう環境で動いてんだべ?
ソシャゲならPHPでhttpでいいかもしんねけども、
ネトゲって実行ファイル動かし続けてんのかね
826:名前は開発中のものです。
14/05/23 00:34:30.27 BlMjMm70.net
>>801
お前から感じるそのしったか臭は一体何なんだ?
827:名前は開発中のものです。
14/05/23 01:25:45.01 61iiZtPG.net
>>802
そんなこと言っても知りたいってのは本当なんだけど
ていうかソシャゲってphpでhttp返してるって聞いたんだが違うのか
ソース3種類ぐらい別のところから聞いたからそうだと信じてたけど
828:名前は開発中のものです。
14/05/23 01:54:24.22 W5hvE4XG.net
上から目線だと>>802みたいなのが湧いて終わりw
それがネットの宿命。
和光同塵に励み、
下から目線で質問すると、
「そんなのこと知ってるよヴァカw」ってレベルの奴がトクトクと語り始める。
人生ってのは上手くいかないものだ。
やはりアドヴァイスはリアルな知り合いに、
顔を付きあわせて語り求めるのが一番良い。
ネットで集まってくるのは多くの場合クズだ。
829:名前は開発中のものです。
14/05/23 04:11:24.69 R2Hq6koN.net
>「そんなのこと知ってるよヴァカw」ってレベルの奴がトクトクと語り始める。
そうかな。
知ったかが知ってる振りをして偉そうにした挙句、何も実のあることは言わずに去るだけな気もするが。
830:名前は開発中のものです。
14/05/23 06:08:22.99 61iiZtPG.net
いや質問してるんだけど
831:名前は開発中のものです。
14/05/23 08:01:15.27 VwzG+tx8.net
知ったかだけど
C/C++ならOSのAPIかライブラリ使ってTCPとUDP使い分けでしょ
PHPでもソケット通信
832:出来るらしいし言語はなんでもいいんじゃないの 実行効率の問題はあるだろうけど
833:名前は開発中のものです。
14/05/23 08:49:57.28 UZe2P6GU.net
個人のゲーム製作でC++使うメリットってあるかな?
Cの方が小回り効くし使いやすいと思うんだが
834:名前は開発中のものです。
14/05/23 08:57:29.89 WZOW9ZIo.net
C++のほうがゲーム向き。
基本的にC言語の機能を全て含んでいて、追加部分を使いたくなれば使わなければいいだけ。
使って便利な機能を使うことで開発効率は上がる。
835:名前は開発中のものです。
14/05/23 09:01:24.07 UZe2P6GU.net
多人数やチームで作るなら保守性とか高いし必要だとは思うんだけど
個人製作なら手続きが多い分無駄な気がするんだよね>C++
836:名前は開発中のものです。
14/05/23 09:24:40.27 J41CukcG.net
複数のゲームオブジェクトが相互作用するような場合はポリモーフィズム使うと楽になる
継承して独自の部分実装すれば新しいオブジェクト作れるしメンテもしやすい
837:名前は開発中のものです。
14/05/23 09:25:32.36 gVP8nGPF.net
準備されてるクラスライブラリが圧倒的にC++の方が便利
838:名前は開発中のものです。
14/05/23 09:32:14.08 mJ3PfvgI.net
スマートボインタとかCじゃできないしな
839:名前は開発中のものです。
14/05/23 09:40:35.21 61iiZtPG.net
構造体でオブジェクト表現してるのか
840:名前は開発中のものです。
14/05/23 10:13:18.75 UZe2P6GU.net
構造体でほとんど間に合うと思うんだよな。
トリッキーに何しても怒られないし。
841:名前は開発中のものです。
14/05/23 10:19:18.29 3Qz0nlZE.net
C++使ったらコードの見通し良くなって楽ってだけで、Cに慣れてるならそりゃCの方が楽
ミニゲーム程度ならどっち使っても変わらん
842:名前は開発中のものです。
14/05/23 10:21:23.05 u1Ct/Di+.net
構造体を引数としてとる関数は文が長くなりがち
構造体に関数ポインタ入れるより仮想関数のが簡潔に書けるし分かり易い
名前空間がないと名前の衝突が起こるから冗長なプリフィクスが必要になる
DirectXとかCOM周りはC++のが簡潔に書ける
843:名前は開発中のものです。
14/05/23 10:35:11.17 UZe2P6GU.net
慣れてるせいなんだろうけど関数ポインタで簡潔に書けちゃうんだよな。
むしろ手続きや決まりごとの分C++の方が長くなっちゃうんだよ。
スマートポインタも俺からするとプログラマが解放し忘れてても勝手に解放って逆に怖いと思うんだよ。
メモリの使用状況なんかデバッグ画面かなんかで常に確認するべきだしメモリの解放は意識してやりたいなあ。
844:名前は開発中のものです。
14/05/23 10:48:05.07 u1Ct/Di+.net
意識してスマートポインタ使うんだから開放されるタイミングは判る
気にしないのは実装部分だけ
いくら自前で管理しようとも例外をsetjump/longjumpで無理やり組むしかないCには容易には出来ない安全性もある
逆にオーバーロードとかコピーが複雑なので頼ったほうが良いC++の悪さの部分でもあるが
845:名前は開発中のものです。
14/05/23 10:50:19.88 WZOW9ZIo.net
自動開放で平気だ。
かなりの言語が強制て自動開放を取り入れている。
パフォーマンスだけの問題だろう。
846:名前は開発中のものです。
14/05/23 10:59:56.27 UZe2P6GU.net
俺がアセンブラ時代から組んでるせいなんだろうけど自動解放って怖いんだよな。
メモリの管理状況やクリアも全部自前のプリミティブな関数でやりたいと思っちゃうんだよな。
まあ気にし過ぎなのかもしれないね。
昔はCも最適化が甘くてオーバーヘッドが酷かったからどうも知らない間にメモリを触られてたりするのが信用できなくてなあ。
847:名前は開発中のものです。
14/05/23 11:06:17.74 u1Ct/Di+.net
スタックの自動開放も怖いのかい?寿命で消えるのは同じことだよ
アセブンブリ出力みてりゃ大したことやってないよ
848:名前は開発中のものです。
14/05/23 11:12:25.32 WZOW9ZIo.net
C言語のauto変数も勝手に開放するな
849:名前は開発中のものです。
14/05/23 11:14:29.88 UZe2P6GU.net
ま、俺の気にし過ぎなんだろうね。
初心者が構造体のコピーとか平気で書いちゃってんの見てビックリしたりする方だからさ。
記述は簡潔だけどその一文でどのくらいオーバーヘッドかかってるかわかって書いてんのか?とか思っちゃうんだよ。
簡易なコード記述の生産性と実行速度は別なんで、その辺はなるべくコワモテでいいんじゃないかと思うんだよ。
850:名前は開発中のものです。
14/05/23 11:15:51.86 WZOW9ZIo.net
CとC++の話で自動開放の話になるのがそもそもおかしいな。
C++はガベージコレクションを取り入れたわけでなく、メモリ管理についてはCと大差ないだろ。
Cでもスマートポインタ使えるだろ。
851:名前は開発中のものです。
14/05/23 11:16:04.73 wh7XodOP.net
ID:UZe2P6GU
わかる。deleteのタイミングって自分で管理したい。
そもそも、スマートポインタに頼ろうという発想が出る時点で、
そのソースはすでにごっちゃになってないかと問いたい。
852:名前は開発中のものです。
14/05/23 11:25:27.68 LtRYMhK0.net
スマポのソース見ればどうなるかきっちりわかるんだから見てみりゃいいじゃん
853:名前は開発中のものです。
14/05/23 11:28:39.46 u1Ct/Di+.net
>>826
好きな時にnullptrを入れて開放してもいいんだぜ
スマートポインタのオブジェクトの寿命=解放のタイミング、一部がコピーで寿命が移動するだけなんだから
Cでmallocしたポインタの値を見失うことがないようなプログラムの組み方ならごっちゃにならない
854:名前は開発中のものです。
14/05/23 11:33:42.15 CnVFPzVq.net
関数のデストラクタとかあれば良いのにな
855:名前は開発中のものです。
14/05/23 11:33:43.66 WZOW9ZIo.net
Boehm GC を使う
The Boehm-Demers-Weiser conservative garbage collector (Boehm GC) は、C言語用のメジャーなガベージコレクタ。
さまざまなソフトウェアがこのライブラリを使っている。
ガベージコレクタを使うと、メモリを好きなだけ確保するだけでよく、解放は自動的にしてくれる。
巨大なメモリを明示的に解放するような場合のほかは、メモリを解放するコードを書く必要はない。
Boehm GCは、保守的GCという方法でガベージコレクトする。定期的にメモリ内を走査し、使われていないと見られるオブジェクトのメモリを回収していく。
Boehm GC以外では、boost::shared_ptrが参照カウント方式を用いている。
URLリンク(www.nslabs.jp)
856:名前は開発中のものです。
14/05/23 11:38:28.27 Q1W0mucT.net
プログラマがコントロール出来ないGCは処理落ちの原因になるからやめた方がいい
857:名前は開発中のものです。
14/05/23 11:41:53.89 UZe2P6GU.net
>>831
同感。こういうのが嫌なんだよ。
記述上だけでスマート・簡潔に組めたつもりで実際は実行速度がグダグダになってる。
858:名前は開発中のものです。
14/05/23 11:45:53.20 wh7XodOP.net
>>827
?
>>828
そもそもの動機だよ。誰がスマートポインタをなぜ欲しがるのかってこと。
既にnew/delete対応なんてスッキリハッキリ管理されてるはず。
スマートポインタが活躍する一部場面がある、というのなら限定的に使っていいと思うが、
それはそれ、それだけのこと。
あとたぶん、ID:WZOW9ZIoはもう喋らないほうがいいな。
>>831
たとえばC#でゲームつくってるとGC動かさないように気をつかったり、
GCの実装に振り回されたり、なんとも滑稽な事態に陥るw