- 1 名前:名前は開発中のものです。 mailto:sage [2014/01/16(木) 00:00:31.27 ID:w6WW3hAo.net]
- ゲーム製作におけるC/C++全般に関するスレです。
元スレ DXライブラリ 総合スレッド その17 toro.2ch.net/test/read.cgi/gamedev/1383795645/ 前スレ C/C++ゲーム製作総合スレッド Part1 toro.2ch.net/test/read.cgi/gamedev/1337516528/ C/C++ゲーム製作総合スレッド Part2 toro.2ch.net/test/read.cgi/gamedev/1351015269/ C/C++ゲーム製作総合スレッド Part3 toro.2ch.net/test/read.cgi/gamedev/1357899040/ C/C++ゲーム製作総合スレッド Part4 toro.2ch.net/test/read.cgi/gamedev/1376262450/
- 545 名前:名前は開発中のものです。 mailto:sage [2014/04/23(水) 21:48:10.54 ID:a2O6zNfs.net]
- >>526
ループ自体は1つにして、そこから何らかの方法で振り分けるのが定番。 複数ループは即「やめとけ」って言われるレベル。 そこだけ守れば、あとはifで関数に投げるなり、switchで分けるなり、好きなようにすればいいと思うよ。 stateパターンについては、処理を振り分けるアルゴリズムの1つだけど まあ、別にいいんじゃないかな。
- 546 名前:名前は開発中のものです。 mailto:sage [2014/04/23(水) 23:54:04.86 ID:FTq0ixvH.net]
- >>529
ググれ
- 547 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 08:45:54.28 ID:wxyjU1
]
- [ここ壊れてます]
- 548 名前:yy.net mailto: >>526
Yes というか、君にループを分けるという発想を持たせた本かサイトか分からんが著者を呼んでこいぶっ飛ばしてやんよ [] - [ここ壊れてます]
- 549 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 09:15:53.69 ID:1SkTvrzJ.net]
- データベースといい会社組織図といいマトリクス型はなぜ好まれないのか
- 550 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 09:46:36.37 ID:XVAalfN1.net]
- >>532
参考資料などがなかった場合、半分くらいは、 真っ先に思いつくのがループを個々に用意する方法のような気もする
- 551 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 10:21:00.95 ID:7sQk5lBb.net]
- オブジェクト指向的に考えるとオブジェクトごとに独立したループが存在してるのもあり得るしな
OSのフレームワーク含めてスレッドセーフな実装があまりない事にがっかりしたり
- 552 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 11:59:52.01 ID:1ftwUtau.net]
- そのループ(というか一連の処理)の意味合いを無視して設計空論しても意味ねー
たかがシーン遷移でぶん回すループを、複数個所にコピペベースでおく意味がねー
- 553 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 12:13:26.57 ID:47DD1/Qn.net]
- ループ型を嫌う人はシーン数が数十個を越えてもswitchで分岐して作るのか、大変だなwww
- 554 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 12:53:05.17 ID:1ftwUtau.net]
- イミフだろ。どの案でもループ必須なのに、ループ型ってなんだよw
- 555 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 13:22:18.45 ID:fX1ni8oz.net]
- ポリモーフィズムか関数ポインタ使えよ
- 556 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 14:53:44.57 ID:47DD1/Qn.net]
- で、数十の関数名やクラス名をわざわざ考えるのか、面倒だな
- 557 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 16:29:40.03 ID:LCot+zJd.net]
- ループが別々にあったら前のループにどうやって戻るんだ?
goto?
- 558 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 16:45:42.04 ID:lgj86FWp.net]
- ループ内にループが入ってる
- 559 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 17:08:30.80 ID:LCot+zJd.net]
- その発想はなかった
- 560 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 17:46:16.58 ID:VQozCS4c.net]
- ループザループ
- 561 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 18:52:19.44 ID:GSyZUE1j.net]
- >>540
シーンの数が数十ってどんだけ大規模なゲーム作ってんのw
- 562 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 19:03:46.70 ID:AvrqiUr+.net]
- C++でゲームを作ろうとすると
ゲームというよりゲームエディタになってしまう
- 563 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 19:18:31.92 ID:wxyjU1yy.net]
- >>546
ゲームを作ってたつもりがエフェクトエディタが完成していた私のことをなぜ知っている
- 564 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 19:23:13.77 ID:47DD1/Qn.net]
- >>545
ドラクエ3程度
- 565 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 19:36:08.29 ID:7gC8mbT8.net]
- >>548
その数十のループを1ソースにまとめるってとんでもないスパゲティだなw 完成すんのそれw
- 566 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 19:54:33.85 ID:1SkTvrzJ.net]
- つーかシーン(画面)をクラスで1:1で管理して、
次回どのシーンを描画するのかポインタ返すってやり方の方がスマートじゃね?
- 567 名前:名前は開発中のものです。 [2014/04/24(木) 20:37:26.16 ID:47DD1/Qn.net]
- 画面の上から下に順番に動作しないと理解出来ないから今のやり方でやってるんだけどね。
関数ポインタやクラスで分けるとあちこちに跳びまくるよね?ソレも嫌だから今のやり方でやってきた。 けどまあ、流れが判らなければ図を描けば済む話か。それでも、今の段階でやり直すのは……ん? マップや戦闘のメインのシーンは今のままで良いな。サブのシーンの扱いは、直してみるかな? ちょっと寝かしていたソースだが、色々と検討してみるか。
- 568 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 20:41:28.50 ID:XVAalfN1.net]
- >>540
世の中にはディレクトリとか名前空間って概念があるから、便利なものよな
- 569 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 20:55:45.26 ID:7sQk5lBb.net]
- ポリモーフィズムで関数の名前考えなきゃならないてどういう状況だよ
クラス名なんて実装したいシーンの名前をそのままだから考える必要ないし
- 570 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 22:24:05.32 ID:/wenCDDH.net]
- 中身は空でいいからすべての遷移とデータの
- 571 名前:受け渡しくらい先に設計して実装しましょう。 []
- [ここ壊れてます]
- 572 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 22:35:04.46 ID:1SkTvrzJ.net]
- プログラミング自体に慣れてないんだろうけど
一人でコード組むなら図なんて書いたりしないからな 頭の中の仕様書通りにコード打つだけなんだから
- 573 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 22:39:32.56 ID:1SkTvrzJ.net]
- ポリモーフィズム使うならむしろ名前は考えなくていいだろ
- 574 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 22:41:52.64 ID:1SkTvrzJ.net]
- 普通はポリモーフィズムで大まかに分岐した後関数ポインタで細かく分岐するよな
背景に3Dフィールドを表示したまま半透明なステータス画面を描画したいとか
- 575 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 23:29:46.37 ID:/YmGGjJz.net]
- クラスや関数を分けると処理が飛んで困るってstaticおじさんか
- 576 名前:名前は開発中のものです。 mailto:sage [2014/04/24(木) 23:39:57.11 ID:XVAalfN1.net]
- ポリモーフィズムの実現手段の1つとして関数ポインタが使われることもあるんだから
その表現はちょっとおかしい気がする いや言いたいことは分かるけどね?
- 577 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 01:06:43.73 ID:8lxSsrEc.net]
- なんでこういう話になったら、いちいち相手を馬鹿にする人間が出てくるのかね。
- 578 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 06:16:12.48 ID:GoYRAt3T.net]
- 数十のクラスが複雑に入り組むプログラムなんて作れない(能力が無い)からでは?と予想
- 579 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 07:46:12.69 ID:XsfFQEHl.net]
- >>561
いいウィットだな
- 580 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 09:30:36.62 ID:jXAfeA6F.net]
- >>557
こういうのどうやって実装すんの?説明してるようなサイトがあったら教えてちょーだい
- 581 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 09:42:20.41 ID:XsfFQEHl.net]
- Stateパターンによる階層付きシーン遷移の方法は、確かセガ本あたりに載ってたような記憶がある
- 582 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 09:54:22.08 ID:IVfFtFPz.net]
- ゲームプログラマになる前に覚えておきたい技術
ひらしょー本、セガ本 www.shuwasystem.co.jp/products/7980html/2118.html www.shuwasystem.co.jp/gpro-sp/index.html
- 583 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 10:04:41.29 ID:jXAfeA6F.net]
- 昨日ちょうどそのセガ本の話が有名な同人プログラマのネット配信で出てたわ
「その本はプログラマになる前じゃなくてなった後に読む本だ」って言ってた
- 584 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 10:18:56.59 ID:cWxmDdU5.net]
- その本って学生レベルでも中の下くらいだろ
- 585 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 12:50:45.98 ID:bu2wQqL4.net]
- >>561
というか、そもそもデバッガでソース追えないという話に帰結しそうなのだが。 関数の中とかに「飛ぶ」訳ですし。 今後の事もあるから、「飛ぶ」事に慣れるのが肝要だと思いますけどね。
- 586 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 15:11:16.15 ID:uQbX0MMa.net]
- セガ本で難しかったらgemsとか見たらもう発狂だな
- 587 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 15:22:16.96 ID:5DdHErYn.net]
- 14歳からはじめるC言語わくわくゲームプログラミング教室
著者:大槻有一郎 www.rutles.net/products/detail.php?product_id=392 かなりの素人向け、図書館にあるかもしれない。 内容はこれ、www.rutles.net/download/217/
- 588 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 16:40:46.26 ID:jXAfeA6F.net]
- ゲームプログラマの新人でも面接時の作品提出では皆C+DirectX直打ちの人ばかりだようんたらかんたらという
流れの中で言ってたから、難しいというか本に頼らずともネットで情報集めてとにかく作れって感じだった。 その人自体もオブジェクト指向とか意味わからんでゲーム作ってるとか言ってるけど、 同人だけじゃなくコンシューマ機
- 589 名前:のゲームプログラムを1人で担ってるような人だし、
要は本見て文法覚えるより、汚くていいからとりあえず作品完成させろってことかと。 [] - [ここ壊れてます]
- 590 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 17:46:46.24 ID:WhIg+aCP.net]
- >>571
とりあえず完成させろってのはその通りだな ここでウンチク垂れ流してても自分の作品は完成させたことないってやつは多そう そう、私の事ですorz
- 591 名前:名前は開発中のものです。 mailto:sage [2014/04/25(金) 18:37:51.58 ID:kjeLMb9X.net]
- directx直打ちじゃないけど大手新卒通ったわ
- 592 名前:名前は開発中のものです。 mailto:sage [2014/04/26(土) 01:38:49.39 ID:jf1SN+DQ.net]
- ゲームコーディングコンプリートって本にはGameLogicってクラスでゲームの状態を切り換えている
ソースコードはネット上にあがってるぞ
- 593 名前:名前は開発中のものです。 mailto:sage [2014/04/26(土) 13:10:08.96 ID:2tKTewnx.net]
- ぱっと見た感じ、キューかなんかで格納してる?
- 594 名前:名前は開発中のものです。 mailto:sage [2014/04/26(土) 19:33:37.45 ID:x5oOyDOe.net]
- スパロボみたいなゲームだと
・フィールドシーン ・戦闘シーン ・アドベンチャーシーン ・シナリオ準備シーン みたいな感じに大別されるよね シーンはキー入力の挙動も変わるから それも内包しないといけないよね
- 595 名前:名前は開発中のものです。 mailto:sage [2014/04/26(土) 19:37:39.56 ID:IEmpvB3E.net]
- メニューとかの後の分岐はどうやってるの?
- 596 名前:名前は開発中のものです。 mailto:sage [2014/04/26(土) 19:58:38.34 ID:3cite/BR.net]
- i.imgur.com/C0gfdIL.jpg
これがPC98ロードランナーのチャートで、 イニシャライズ以下がゲームループになってる。
- 597 名前:名前は開発中のものです。 mailto:sage [2014/04/26(土) 20:05:42.07 ID:2tKTewnx.net]
- デモ読み込みはゲームループ外で、実際のデモ画面はループ内なんだな、面白い。
俺が思ってるデモ画面と別のものかもしれんけど。 >>576 当たり前っちゃ当たり前だけど、 フレームワークなりハードウェアなりから、キー情報を取り出したり使いやすいよう加工するのは共通部分で、 右キーで1マス動かすとか、そういう部分は各シーンのロジックで処理するのが良いんじゃない? >>577 メニューって、「じゅもん」→「メラ」→「スライムA」 みたいな シーン中に行われる多層型のメニューのこと?
- 598 名前:名前は開発中のものです。 mailto:sage [2014/04/26(土) 21:29:25.57 ID:5LBrFF8V.net]
- ポップアップメニュー出しながらもカメラや移動とか一部の操作はできるようにするとかだと
優先度とかそのキーで処理済みかの情報が欲しいから シーンや入力が欲しいオブジェクトが欲しいキーを入力マネージャに登録しておいて 優先度の高い特殊なキーの組み合わせだけ先に処理して あとは上位に位置するオブジェクトからキーを拾って処理して未処理は下に投げるとか WindowsのWM_CHARを参考にしたキー処理終わってから各Updateみたいな事になってるけど 重複する事もあるキー入力の切り分けをシンプルに実装する方法ないかな
- 599 名前:名前は開発中のものです。 mailto:sage [2014/04/26(土) 22:11:57.41 ID:x5oOyDOe.net]
- キー処理用スレッドを作ってGetAsyncKeyStateを回すとか
- 600 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 03:54:19.08 ID: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 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 10:28:25.38 ID:C+qpjQzl.net]
- >>580
ポップアップメニューはモーダルなインタフェースだから ある1つのオブジェクト(または選択されたオブジェクト群)を集中して操作しているのに 関係がないオブジェクトを操作ができるのはおかしくない?
- 602 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 10:46:42.01 ID:w1gNzEbH.net]
- 恐らくだけど、ここでのポップアップメニューは一般的なGUI部品のソレではなくて、
fpsでよく利用されてるポップアップする選択形式のウィンドウの事でね。 wasdで移動しながらメニュー表示キーを押す事でソレが表示され、マウスカーソルでメニュー選択できる、みたいな。 とりあえず>>582で問題ないと思うけどね。
- 603 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 18:14:34.21 ID:Pq1XXwa+.net]
- >582のままだと何個か同時押ししてる時に子供がキー処理しちゃったら
親は欲しくて子供では未使用のキー情報取りたくとも来なくない?
- 604 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 18:30:43.78 ID:ZxV1P0nx.net]
- どういう状況?
- 605 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 18:38:37.60 ID:Pq1XXwa+.net]
- メニューが子供でWASDで移動してるとして押しっぱなしで
メニューの選択を動かす矢印やショートカット等の何らかのキー押したら 移動のキー処理が省かれ、結果移動が止まる
- 606 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 19:14:17.90 ID:ZxV1P0nx.net]
- ああ、なるほど。
あんまりPCでゲームやらないので分からんのだけど、市販ゲームだとキーアサインはどうなってるのかな。 メニューを開いてない状態で使えるキー(デフォルトだとWASDとか?)は、メニュー画面で何の処理にも使われないような感じ?
- 607 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 19:44:36.31 ID:DG4EJccZ.net]
- 使うキー全てを押されているか1つ1つチェックしていけばいい
- 608 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 19:59:45.12 ID:8WD0svuP.net]
- 市販ゲームを買って調べろよ
知らないとこにゲームを作るなんてアホなの LINEをやったこと無いのにLINEスタンプを作って儲けようとするアホと一緒
- 609 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 20:22:36.88 ID:ZxV1P0nx.net]
- >>590
全く意味は分からんが、何か気に触ったようなのでスマン
- 610 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 21:47:11.67 ID:zcnpepzc.net]
- RPGなどの、キーを1回押したら次のマスまで移動するようなゲームの衝突判定は
自キャラの位置と壁の位置を二次元配列で管理できるので作れるのですが、 アクションゲームのように、キーを1回押したら数ピクセルしか進まないような ゲームの場合、マップチップエディタでマップを作った場合、衝突判定はどうするのでしょうか?
- 611 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 22:33:28.11 ID:vcLDHUdb.net]
- 衝突判定は、全部が計算で出る。 二次元配列で管理と同じ。
- 612 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 23:24:50.87 ID:ZxV1P0nx.net]
- >>593
ソース見てみないと分からんけど、今まで1対1で対応するような当たり判定しかやってなかったので そのままでは応用が効かないって話じゃない? >>592 こういう場合に昼用となるのは、ある範囲とある範囲同士が、 座標上で重なっているかどうかをチェックする、という処理が必要となる。 少し前にも似たような話題があったが、 まず1次元上で、線分Aと線分Bが重なっているかどうかを判定する処理を考えてみよう。 +---- A ----+ 0----------------------------------------X +-------- B --------+ 答えを言ってしまうが、Aの右端がBの左端より右側」にあり、Bの左端がAの右端より左側にあるとき 線分AとBは重なってると言えるのが分かる。 これで少なくともX軸から見た時に重なって見えるかどうかを判定することが出来る。 じゃあこれをもう一度、Y軸に対してやれば、結果として重なってるかどうか分かると思わないかい? 一応、この判定には欠点があったりするけど、そのへんは詳しい諸兄に任せる
- 613 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 23:39:37.39 ID:+r7oKZO8.net]
- 592の質問ってそういうレベルの話なのか。
もっと複雑な話かと思った。 マップチップでブロック単位(要するに矩形判定のみ)しかしないんだったら 593の言うとおり2次元配列管理でいいんじゃないかな。
- 614 名前:タ標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る。(小数点以下切り捨て)
たとえばマップチップのサイズが 16*16 でマップデータが二次元配列に格納されてるとしたら (100,150) の部分は二次元配列でいう (6,9) の部分という事になる。 あとはRPGなどと同じように衝突判定すればいい。 [] - [ここ壊れてます]
- 615 名前:名前は開発中のものです。 mailto:sage [2014/04/27(日) 23:47:48.15 ID:zcnpepzc.net]
- >>593-595
ありがとうございます! >座標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る この考えが欠けてました。言われれば当たり前のことなのに1人で悩んでると全然思い浮かばない(´・ω・`)
- 616 名前:594 mailto:sage [2014/04/28(月) 01:02:00.85 ID:BBr+Jrn/.net]
- >>595
あー、そっちか お恥ずかしい
- 617 名前:名前は開発中のものです。 mailto:sage [2014/04/28(月) 09:50:59.01 ID:GzOhtwBz.net]
- それだけだと自キャラがどのチップ上にいるかしかわからんから
壁と自キャラが重ならないようにするにはちょっと工夫いるんじゃない? 例えば自キャラの上下左右全部で衝突判定するとか
- 618 名前:名前は開発中のものです。 mailto:sage [2014/04/28(月) 14:28:53.40 ID:uu2sZY8y.net]
- そんな必要ないよ。
自分の位置より進行方向1ブロック分をチェックして障害物なら動かなくすればいいだけ。
- 619 名前:名前は開発中のものです。 mailto:sage [2014/04/28(月) 14:31:26.43 ID:uu2sZY8y.net]
- ああ、いや違った。
上と左に関しては進行方向1ピクセル分だった。
- 620 名前:名前は開発中のものです。 mailto:sage [2014/04/28(月) 19:55:37.77 ID:BBr+Jrn/.net]
- >>599-600
アクションゲームでそういう処理をするゲームは少なそうだが
- 621 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 00:40:51.84 ID: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 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 00:42:06.52 ID: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 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 01:03:59.54 ID:T7NavjR1.net]
- こりゃStateパターンを使えていない時点でゴミっすわ。
バカが書いたコードだと一目で分かる。 面接でこれ持ってきた奴がいたら不採用…と言いたいけど この程度のバカが偏差値65クラスなわけで 次頭があれば徹底的に叩きなおすことを前提で採用、ってなるレベル。
- 624 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 01:31:18.44 ID:l2CWKjf4.net]
- それでも俺は、自らコードを曝け出した事に対して尊敬するね。
批判だけなら誰でも出来る
- 625 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 01:46:17.29 ID:EMV53Qmd.net]
- >>604
pc11.2ch.net/test/read.cgi/gamedev/1227748699/181- 当時は高専の学生でしたので
- 626 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 01:49:34.15 ID:T7NavjR1.net]
- >>608
あー、それわかる! 高専生感がぷんぷん臭う。 俺の職場は理系院生が採用の中心だから 君のコード見ると偏差値70以下!って判定を下しちゃうんだよね…。
- 627 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 02:13:49.38 ID:EMV53Qmd.net]
- どうか心安らかな日々を
- 628 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 02:16:22.74 ID:ZoGLF8y+.net]
- んー別にいいんじゃね?
大してシーンも多くないゲームなら充分充分 パターンとかはもっと規模が大きくなって 制御構文使ってたら死ぬ時に使う物だと思うのだが ということで誰かstateとstrategyの違いを教えてくださいな ググってもイマイチ腹に落ちなくてなあ…
- 629 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 03:18:14.89 ID:51TE7qv/.net]
- 高専生感というとても具体的な指標
これが偏差値70以上の力だと言うのか・・・
- 630 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 08:43:51.10 ID:7WDDZUtT.net]
- これdemo->Run()の中に別のゲームループがあるって事になるんだろ。
つまり>>528って事だろ。 ところでupdate()とdraw()に分けないのかな。 コンテンツロスト時の再描画とか、各シーンで個別に実装とかだるいっしょ。
- 631 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 10:25:45.81 ID:EMV53Qmd.net]
- >>611
当時のソースは実家のPCに眠ってるのでうろ覚えなんですが、D3D9などの デバイスロスト時の対応などはGAMEENVクラスに押し付けてました 描画と、ゲーム内時間発展のサイクルは独立。フレームスキップしてました。 描画は60⇔30⇔15[fps]の半固定。 時間発展の刻み幅は1/60[sec]固定。シミュレーション部分の計算自体は とても軽かったので。あとはリプレイデータの都合。デバッグ時の巻き戻し や早送り(任意時点へ移動)してたので
- 632 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 10:41:35.55 ID:EMV53Qmd.net]
- >>611
>これdemo->Run()の中に別のゲームループがあるって事になるんだろ。 >つまり>>528って事だろ。 それぞれにゲーム内の時間発展を計算するサイクルがありましたね。 そういう意味ならそうなんだと思います。ゲーム固有の定石とやらは よく知りません
- 633 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 11:00:02.81 ID:R32lOXpJ.net]
- 配信でコーディングしてる現役ゲームプログラマさんの仰っていた序列表貼っておきますね
神様 綺麗なコードで完成させられる人 人間 汚いコードで完成させられる人 =================( 越えられない壁 )==================== 家畜 汚いコードで完成させられない人 ハエ 綺麗なコードで完成させられない人 ハエに出来るのは人間の邪魔だけと言っていて、なるほどなとリスナー達感心しきりでした。 ID:T7NavjR1見ててこの事思い出しましたね
- 634 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 11:23:57.20 ID: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 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 11:24:47.17 ID:t5QADVCc.net]
- >>614
やるじゃんw
- 636 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 12:27:00.81 ID:CXcBKCf+.net]
- >>615
多分だけど、 if(関数に分けずそのまま羅列) → if(関数分け) → switch → stateパターン ……みたいに進化していくんだと思う。 単に自分がそういう順番でステップアップしたってだけなんだけどさ。 仮に自分が教えるなら、stateパターンによるシーン遷移は後回しにするかな
- 637 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 12:35:06.95 ID:CXcBKCf+.net]
- ああそうだ思い出した。
シーン遷移をStateパターンで行う方法についてなんだけど、「シーン遷移しないとき」って、どうしてる? (1) nullを返す (2) thisを返す (3) シーン遷移関数を用意しておき、それが呼ばれなかったとき (4) その他 自分は(2)で、nullを返すときはゲーム終了ってことにしてる。 一般的なStateパターンなら(1)かなあ。
- 638 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 12:40:34.16 ID:5MYZPLM5.net]
- >>612-613
なるほどthx. sceneの引数でgameenv貰ってるね。 シーン遷移の実装はシーン側は知る必要ないから、 その時の気分とかシーンの数とかで好きにやりゃいいと思うけどね。 Task的に入り組んだ作りしてないのなら、どれでもすぐ遷移図を思い描けるっしょ。
- 639 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 16:14:29.11 ID:R32lOXpJ.net]
- >>616
曰く、 「クラス設計書貰うけど見ない。クラス流用して他のゲーム作ったことがないから意味がない」 「デザインパターン?何それ?」 「参考書は読んだことがないからオススメ本とか分かんない。ネットと、エラーが出たらググレカスで覚えた」 PSでほとんど1人でプログラム任される人の弁です
- 640 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 16:19:59.07 ID:NQBFYHJc.net]
- >>620
すげぇ 俺そんなこと言ったことないけど、完全に俺だわ ただ、作ってたのはPSじゃねぇけど
- 641 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 16:20:18.05 ID:KJKa8R89.net]
- >>620
その人、協調性が無いから、単独でしか使い道が無い。
- 642 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 16:27:51.48 ID:NQBFYHJc.net]
- 人事を何とかしないとうちの会社はやばい
ゲー専卒で多少のコミュニケーションはできれば入れてる感じがする 8人中2人もう辞めてるし、てかそれ以前にDXライブラリをインクルードディレクトリへの追加方法わからねぇわ、プログラムが組めねぇわで最悪だわ 1人だけまともというかたぶん俺より組める奴居るけど うちは研修する余裕なんてねぇってわかってんだろうが、去年入ったやつなんてもう最後の1人を何とか留まらせてるんだから、俺らに人事噛ませろよ
- 643 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 16:27:58.51 ID:lMFqMvqX.net]
- PSでググレカスてどんな時代?
一昔前の1500円のミニゲーム移植とかの人てことなんだろうか
- 644 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 16:31:27.80 ID:GSilIO8H.net]
- >>622
ちょっとワラタ
- 645 名前:名前は開発中のものです。 mailto:sage [2014/04/29(火) 16:31:55.46 ID:CPnqQaxX.net]
- 従来の手続き型で何本もゲーム作ってきた俺だが
いっちょオブジェクト指向でも勉強するか、とやり始めた結果 もうずっと制作が滞ったままになっている。 なんでこんなにめんどくさいんだ……。
|

|