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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/01/16(木) 00:00:31.27ID:w6WW3hAo
ゲーム製作におけるC/C++全般に関するスレです。

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

前スレ
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/
0530名前は開発中のものです。2014/04/23(水) 21:48:10.54ID:a2O6zNfs
>>526
ループ自体は1つにして、そこから何らかの方法で振り分けるのが定番。
複数ループは即「やめとけ」って言われるレベル。
そこだけ守れば、あとはifで関数に投げるなり、switchで分けるなり、好きなようにすればいいと思うよ。

stateパターンについては、処理を振り分けるアルゴリズムの1つだけど
まあ、別にいいんじゃないかな。
0531名前は開発中のものです。2014/04/23(水) 23:54:04.86ID:FTq0ixvH
>>529
ググれ
0532名前は開発中のものです。2014/04/24(木) 08:45:54.28ID:wxyjU1yy
>>526
Yes
というか、君にループを分けるという発想を持たせた本かサイトか分からんが著者を呼んでこいぶっ飛ばしてやんよ
0533名前は開発中のものです。2014/04/24(木) 09:15:53.69ID:1SkTvrzJ
データベースといい会社組織図といいマトリクス型はなぜ好まれないのか
0534名前は開発中のものです。2014/04/24(木) 09:46:36.37ID:XVAalfN1
>>532
参考資料などがなかった場合、半分くらいは、
真っ先に思いつくのがループを個々に用意する方法のような気もする
0535名前は開発中のものです。2014/04/24(木) 10:21:00.95ID:7sQk5lBb
オブジェクト指向的に考えるとオブジェクトごとに独立したループが存在してるのもあり得るしな
OSのフレームワーク含めてスレッドセーフな実装があまりない事にがっかりしたり
0536名前は開発中のものです。2014/04/24(木) 11:59:52.01ID:1ftwUtau
そのループ(というか一連の処理)の意味合いを無視して設計空論しても意味ねー
たかがシーン遷移でぶん回すループを、複数個所にコピペベースでおく意味がねー
0537名前は開発中のものです。2014/04/24(木) 12:13:26.57ID:47DD1/Qn
ループ型を嫌う人はシーン数が数十個を越えてもswitchで分岐して作るのか、大変だなwww
0538名前は開発中のものです。2014/04/24(木) 12:53:05.17ID:1ftwUtau
イミフだろ。どの案でもループ必須なのに、ループ型ってなんだよw
0539名前は開発中のものです。2014/04/24(木) 13:22:18.45ID:fX1ni8oz
ポリモーフィズムか関数ポインタ使えよ
0540名前は開発中のものです。2014/04/24(木) 14:53:44.57ID:47DD1/Qn
で、数十の関数名やクラス名をわざわざ考えるのか、面倒だな
0541名前は開発中のものです。2014/04/24(木) 16:29:40.03ID:LCot+zJd
ループが別々にあったら前のループにどうやって戻るんだ?
goto?
0542名前は開発中のものです。2014/04/24(木) 16:45:42.04ID:lgj86FWp
ループ内にループが入ってる
0543名前は開発中のものです。2014/04/24(木) 17:08:30.80ID:LCot+zJd
その発想はなかった
0544名前は開発中のものです。2014/04/24(木) 17:46:16.58ID:VQozCS4c
ループザループ
0545名前は開発中のものです。2014/04/24(木) 18:52:19.44ID:GSyZUE1j
>>540
シーンの数が数十ってどんだけ大規模なゲーム作ってんのw
0546名前は開発中のものです。2014/04/24(木) 19:03:46.70ID:AvrqiUr+
C++でゲームを作ろうとすると
ゲームというよりゲームエディタになってしまう
0547名前は開発中のものです。2014/04/24(木) 19:18:31.92ID:wxyjU1yy
>>546
ゲームを作ってたつもりがエフェクトエディタが完成していた私のことをなぜ知っている
0548名前は開発中のものです。2014/04/24(木) 19:23:13.77ID:47DD1/Qn
>>545
ドラクエ3程度
0549名前は開発中のものです。2014/04/24(木) 19:36:08.29ID:7gC8mbT8
>>548
その数十のループを1ソースにまとめるってとんでもないスパゲティだなw
完成すんのそれw
0550名前は開発中のものです。2014/04/24(木) 19:54:33.85ID:1SkTvrzJ
つーかシーン(画面)をクラスで1:1で管理して、
次回どのシーンを描画するのかポインタ返すってやり方の方がスマートじゃね?
0551名前は開発中のものです。2014/04/24(木) 20:37:26.16ID:47DD1/Qn
画面の上から下に順番に動作しないと理解出来ないから今のやり方でやってるんだけどね。
関数ポインタやクラスで分けるとあちこちに跳びまくるよね?ソレも嫌だから今のやり方でやってきた。
けどまあ、流れが判らなければ図を描けば済む話か。それでも、今の段階でやり直すのは……ん?
マップや戦闘のメインのシーンは今のままで良いな。サブのシーンの扱いは、直してみるかな?
ちょっと寝かしていたソースだが、色々と検討してみるか。
0552名前は開発中のものです。2014/04/24(木) 20:41:28.50ID:XVAalfN1
>>540
世の中にはディレクトリとか名前空間って概念があるから、便利なものよな
0553名前は開発中のものです。2014/04/24(木) 20:55:45.26ID:7sQk5lBb
ポリモーフィズムで関数の名前考えなきゃならないてどういう状況だよ
クラス名なんて実装したいシーンの名前をそのままだから考える必要ないし
0554名前は開発中のものです。2014/04/24(木) 22:24:05.32ID:/wenCDDH
中身は空でいいからすべての遷移とデータの受け渡しくらい先に設計して実装しましょう。
0555名前は開発中のものです。2014/04/24(木) 22:35:04.46ID:1SkTvrzJ
プログラミング自体に慣れてないんだろうけど
一人でコード組むなら図なんて書いたりしないからな
頭の中の仕様書通りにコード打つだけなんだから
0556名前は開発中のものです。2014/04/24(木) 22:39:32.56ID:1SkTvrzJ
ポリモーフィズム使うならむしろ名前は考えなくていいだろ
0557名前は開発中のものです。2014/04/24(木) 22:41:52.64ID:1SkTvrzJ
普通はポリモーフィズムで大まかに分岐した後関数ポインタで細かく分岐するよな
背景に3Dフィールドを表示したまま半透明なステータス画面を描画したいとか
0558名前は開発中のものです。2014/04/24(木) 23:29:46.37ID:/YmGGjJz
クラスや関数を分けると処理が飛んで困るってstaticおじさんか
0559名前は開発中のものです。2014/04/24(木) 23:39:57.11ID:XVAalfN1
ポリモーフィズムの実現手段の1つとして関数ポインタが使われることもあるんだから
その表現はちょっとおかしい気がする

いや言いたいことは分かるけどね?
0560名前は開発中のものです。2014/04/25(金) 01:06:43.73ID:8lxSsrEc
なんでこういう話になったら、いちいち相手を馬鹿にする人間が出てくるのかね。
0561名前は開発中のものです。2014/04/25(金) 06:16:12.48ID:GoYRAt3T
数十のクラスが複雑に入り組むプログラムなんて作れない(能力が無い)からでは?と予想
0562名前は開発中のものです。2014/04/25(金) 07:46:12.69ID:XsfFQEHl
>>561
いいウィットだな
0563名前は開発中のものです。2014/04/25(金) 09:30:36.62ID:jXAfeA6F
>>557
こういうのどうやって実装すんの?説明してるようなサイトがあったら教えてちょーだい
0564名前は開発中のものです。2014/04/25(金) 09:42:20.41ID:XsfFQEHl
Stateパターンによる階層付きシーン遷移の方法は、確かセガ本あたりに載ってたような記憶がある
0565名前は開発中のものです。2014/04/25(金) 09:54:22.08ID:IVfFtFPz
ゲームプログラマになる前に覚えておきたい技術
ひらしょー本、セガ本
http://www.shuwasystem.co.jp/products/7980html/2118.html
http://www.shuwasystem.co.jp/gpro-sp/index.html
0566名前は開発中のものです。2014/04/25(金) 10:04:41.29ID:jXAfeA6F
昨日ちょうどそのセガ本の話が有名な同人プログラマのネット配信で出てたわ
「その本はプログラマになる前じゃなくてなった後に読む本だ」って言ってた
0567名前は開発中のものです。2014/04/25(金) 10:18:56.59ID:cWxmDdU5
その本って学生レベルでも中の下くらいだろ
0568名前は開発中のものです。2014/04/25(金) 12:50:45.98ID:bu2wQqL4
>>561
というか、そもそもデバッガでソース追えないという話に帰結しそうなのだが。
関数の中とかに「飛ぶ」訳ですし。

今後の事もあるから、「飛ぶ」事に慣れるのが肝要だと思いますけどね。
0569名前は開発中のものです。2014/04/25(金) 15:11:16.15ID:uQbX0MMa
セガ本で難しかったらgemsとか見たらもう発狂だな
0570名前は開発中のものです。2014/04/25(金) 15:22:16.96ID:5DdHErYn
14歳からはじめるC言語わくわくゲームプログラミング教室
著者:大槻有一郎
http://www.rutles.net/products/detail.php?product_id=392
かなりの素人向け、図書館にあるかもしれない。

内容はこれ、http://www.rutles.net/download/217/
0571名前は開発中のものです。2014/04/25(金) 16:40:46.26ID:jXAfeA6F
ゲームプログラマの新人でも面接時の作品提出では皆C+DirectX直打ちの人ばかりだようんたらかんたらという
流れの中で言ってたから、難しいというか本に頼らずともネットで情報集めてとにかく作れって感じだった。

その人自体もオブジェクト指向とか意味わからんでゲーム作ってるとか言ってるけど、
同人だけじゃなくコンシューマ機のゲームプログラムを1人で担ってるような人だし、
要は本見て文法覚えるより、汚くていいからとりあえず作品完成させろってことかと。
0572名前は開発中のものです。2014/04/25(金) 17:46:46.24ID:WhIg+aCP
>>571
とりあえず完成させろってのはその通りだな
ここでウンチク垂れ流してても自分の作品は完成させたことないってやつは多そう



そう、私の事ですorz
0573名前は開発中のものです。2014/04/25(金) 18:37:51.58ID:kjeLMb9X
directx直打ちじゃないけど大手新卒通ったわ
0574名前は開発中のものです。2014/04/26(土) 01:38:49.39ID:jf1SN+DQ
ゲームコーディングコンプリートって本にはGameLogicってクラスでゲームの状態を切り換えている
ソースコードはネット上にあがってるぞ
0575名前は開発中のものです。2014/04/26(土) 13:10:08.96ID:2tKTewnx
ぱっと見た感じ、キューかなんかで格納してる?
0576名前は開発中のものです。2014/04/26(土) 19:33:37.45ID:x5oOyDOe
スパロボみたいなゲームだと
・フィールドシーン
・戦闘シーン
・アドベンチャーシーン
・シナリオ準備シーン
みたいな感じに大別されるよね

シーンはキー入力の挙動も変わるから
それも内包しないといけないよね
0577名前は開発中のものです。2014/04/26(土) 19:37:39.56ID:IEmpvB3E
メニューとかの後の分岐はどうやってるの?
0578名前は開発中のものです。2014/04/26(土) 19:58:38.34ID:3cite/BR
http://i.imgur.com/C0gfdIL.jpg
これがPC98ロードランナーのチャートで、
イニシャライズ以下がゲームループになってる。
0579名前は開発中のものです。2014/04/26(土) 20:05:42.07ID:2tKTewnx
デモ読み込みはゲームループ外で、実際のデモ画面はループ内なんだな、面白い。
俺が思ってるデモ画面と別のものかもしれんけど。

>>576
当たり前っちゃ当たり前だけど、
フレームワークなりハードウェアなりから、キー情報を取り出したり使いやすいよう加工するのは共通部分で、
右キーで1マス動かすとか、そういう部分は各シーンのロジックで処理するのが良いんじゃない?

>>577
メニューって、「じゅもん」→「メラ」→「スライムA」 みたいな
シーン中に行われる多層型のメニューのこと?
0580名前は開発中のものです。2014/04/26(土) 21:29:25.57ID:5LBrFF8V
ポップアップメニュー出しながらもカメラや移動とか一部の操作はできるようにするとかだと
優先度とかそのキーで処理済みかの情報が欲しいから
シーンや入力が欲しいオブジェクトが欲しいキーを入力マネージャに登録しておいて
優先度の高い特殊なキーの組み合わせだけ先に処理して
あとは上位に位置するオブジェクトからキーを拾って処理して未処理は下に投げるとか
WindowsのWM_CHARを参考にしたキー処理終わってから各Updateみたいな事になってるけど
重複する事もあるキー入力の切り分けをシンプルに実装する方法ないかな
0581名前は開発中のものです。2014/04/26(土) 22:11:57.41ID:x5oOyDOe
キー処理用スレッドを作ってGetAsyncKeyStateを回すとか
0582名前は開発中のものです。2014/04/27(日) 03:54:19.08ID:WYXfeo+B
よく分からん質問だけど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 {};
0583名前は開発中のものです。2014/04/27(日) 10:28:25.38ID:C+qpjQzl
>>580
ポップアップメニューはモーダルなインタフェースだから
ある1つのオブジェクト(または選択されたオブジェクト群)を集中して操作しているのに
関係がないオブジェクトを操作ができるのはおかしくない?
0584名前は開発中のものです。2014/04/27(日) 10:46:42.01ID:w1gNzEbH
恐らくだけど、ここでのポップアップメニューは一般的なGUI部品のソレではなくて、
fpsでよく利用されてるポップアップする選択形式のウィンドウの事でね。
wasdで移動しながらメニュー表示キーを押す事でソレが表示され、マウスカーソルでメニュー選択できる、みたいな。

とりあえず>>582で問題ないと思うけどね。
0585名前は開発中のものです。2014/04/27(日) 18:14:34.21ID:Pq1XXwa+
>582のままだと何個か同時押ししてる時に子供がキー処理しちゃったら
親は欲しくて子供では未使用のキー情報取りたくとも来なくない?
0586名前は開発中のものです。2014/04/27(日) 18:30:43.78ID:ZxV1P0nx
どういう状況?
0587名前は開発中のものです。2014/04/27(日) 18:38:37.60ID:Pq1XXwa+
メニューが子供でWASDで移動してるとして押しっぱなしで
メニューの選択を動かす矢印やショートカット等の何らかのキー押したら
移動のキー処理が省かれ、結果移動が止まる
0588名前は開発中のものです。2014/04/27(日) 19:14:17.90ID:ZxV1P0nx
ああ、なるほど。

あんまりPCでゲームやらないので分からんのだけど、市販ゲームだとキーアサインはどうなってるのかな。
メニューを開いてない状態で使えるキー(デフォルトだとWASDとか?)は、メニュー画面で何の処理にも使われないような感じ?
0589名前は開発中のものです。2014/04/27(日) 19:44:36.31ID:DG4EJccZ
使うキー全てを押されているか1つ1つチェックしていけばいい
0590名前は開発中のものです。2014/04/27(日) 19:59:45.12ID:8WD0svuP
市販ゲームを買って調べろよ
知らないとこにゲームを作るなんてアホなの

LINEをやったこと無いのにLINEスタンプを作って儲けようとするアホと一緒
0591名前は開発中のものです。2014/04/27(日) 20:22:36.88ID:ZxV1P0nx
>>590
全く意味は分からんが、何か気に触ったようなのでスマン
0592名前は開発中のものです。2014/04/27(日) 21:47:11.67ID:zcnpepzc
RPGなどの、キーを1回押したら次のマスまで移動するようなゲームの衝突判定は
自キャラの位置と壁の位置を二次元配列で管理できるので作れるのですが、

アクションゲームのように、キーを1回押したら数ピクセルしか進まないような
ゲームの場合、マップチップエディタでマップを作った場合、衝突判定はどうするのでしょうか?
0593名前は開発中のものです。2014/04/27(日) 22:33:28.11ID:vcLDHUdb
衝突判定は、全部が計算で出る。 二次元配列で管理と同じ。
0594名前は開発中のものです。2014/04/27(日) 23:24:50.87ID:ZxV1P0nx
>>593
ソース見てみないと分からんけど、今まで1対1で対応するような当たり判定しかやってなかったので
そのままでは応用が効かないって話じゃない?


>>592
こういう場合に昼用となるのは、ある範囲とある範囲同士が、
座標上で重なっているかどうかをチェックする、という処理が必要となる。

少し前にも似たような話題があったが、
まず1次元上で、線分Aと線分Bが重なっているかどうかを判定する処理を考えてみよう。

      +---- A ----+
  0----------------------------------------X
             +-------- B --------+

答えを言ってしまうが、Aの右端がBの左端より右側」にあり、Bの左端がAの右端より左側にあるとき
線分AとBは重なってると言えるのが分かる。

これで少なくともX軸から見た時に重なって見えるかどうかを判定することが出来る。
じゃあこれをもう一度、Y軸に対してやれば、結果として重なってるかどうか分かると思わないかい?

一応、この判定には欠点があったりするけど、そのへんは詳しい諸兄に任せる
0595名前は開発中のものです。2014/04/27(日) 23:39:37.39ID:+r7oKZO8
592の質問ってそういうレベルの話なのか。
もっと複雑な話かと思った。

マップチップでブロック単位(要するに矩形判定のみ)しかしないんだったら
593の言うとおり2次元配列管理でいいんじゃないかな。

座標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る。(小数点以下切り捨て)
たとえばマップチップのサイズが 16*16 でマップデータが二次元配列に格納されてるとしたら
(100,150) の部分は二次元配列でいう (6,9) の部分という事になる。
あとはRPGなどと同じように衝突判定すればいい。
0596名前は開発中のものです。2014/04/27(日) 23:47:48.15ID:zcnpepzc
>>593-595
ありがとうございます!

>座標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る
この考えが欠けてました。言われれば当たり前のことなのに1人で悩んでると全然思い浮かばない(´・ω・`)
05975942014/04/28(月) 01:02:00.85ID:BBr+Jrn/
>>595
あー、そっちか
お恥ずかしい
0598名前は開発中のものです。2014/04/28(月) 09:50:59.01ID:GzOhtwBz
それだけだと自キャラがどのチップ上にいるかしかわからんから
壁と自キャラが重ならないようにするにはちょっと工夫いるんじゃない?
例えば自キャラの上下左右全部で衝突判定するとか
0599名前は開発中のものです。2014/04/28(月) 14:28:53.40ID:uu2sZY8y
そんな必要ないよ。
自分の位置より進行方向1ブロック分をチェックして障害物なら動かなくすればいいだけ。
0600名前は開発中のものです。2014/04/28(月) 14:31:26.43ID:uu2sZY8y
ああ、いや違った。
上と左に関しては進行方向1ピクセル分だった。
0601名前は開発中のものです。2014/04/28(月) 19:55:37.77ID:BBr+Jrn/
>>599-600
アクションゲームでそういう処理をするゲームは少なそうだが
0602名前は開発中のものです。2014/04/29(火) 00:40:51.84ID:EMV53Qmd
>>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();                               //ロゴ画面再生
0603名前は開発中のものです。2014/04/29(火) 00:42:06.52ID:EMV53Qmd
    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;
}
0604名前は開発中のものです。2014/04/29(火) 01:03:59.54ID:T7NavjR1
こりゃStateパターンを使えていない時点でゴミっすわ。
バカが書いたコードだと一目で分かる。

面接でこれ持ってきた奴がいたら不採用…と言いたいけど
この程度のバカが偏差値65クラスなわけで
次頭があれば徹底的に叩きなおすことを前提で採用、ってなるレベル。
0605名前は開発中のものです。2014/04/29(火) 01:31:18.44ID:l2CWKjf4
それでも俺は、自らコードを曝け出した事に対して尊敬するね。

批判だけなら誰でも出来る
0606名前は開発中のものです。2014/04/29(火) 01:46:17.29ID:EMV53Qmd
>>604
http://pc11.2ch.net/test/read.cgi/gamedev/1227748699/181-

当時は高専の学生でしたので
0607名前は開発中のものです。2014/04/29(火) 01:49:34.15ID:T7NavjR1
>>608
あー、それわかる!
高専生感がぷんぷん臭う。

俺の職場は理系院生が採用の中心だから
君のコード見ると偏差値70以下!って判定を下しちゃうんだよね…。
0608名前は開発中のものです。2014/04/29(火) 02:13:49.38ID:EMV53Qmd
どうか心安らかな日々を
0609名前は開発中のものです。2014/04/29(火) 02:16:22.74ID:ZoGLF8y+
んー別にいいんじゃね?
大してシーンも多くないゲームなら充分充分
パターンとかはもっと規模が大きくなって
制御構文使ってたら死ぬ時に使う物だと思うのだが

ということで誰かstateとstrategyの違いを教えてくださいな
ググってもイマイチ腹に落ちなくてなあ…
0610名前は開発中のものです。2014/04/29(火) 03:18:14.89ID:51TE7qv/
高専生感というとても具体的な指標
これが偏差値70以上の力だと言うのか・・・
0611名前は開発中のものです。2014/04/29(火) 08:43:51.10ID:7WDDZUtT
これdemo->Run()の中に別のゲームループがあるって事になるんだろ。
つまり>>528って事だろ。

ところでupdate()とdraw()に分けないのかな。
コンテンツロスト時の再描画とか、各シーンで個別に実装とかだるいっしょ。
0612名前は開発中のものです。2014/04/29(火) 10:25:45.81ID:EMV53Qmd
>>611
当時のソースは実家のPCに眠ってるのでうろ覚えなんですが、D3D9などの
デバイスロスト時の対応などはGAMEENVクラスに押し付けてました

描画と、ゲーム内時間発展のサイクルは独立。フレームスキップしてました。
描画は60⇔30⇔15[fps]の半固定。

時間発展の刻み幅は1/60[sec]固定。シミュレーション部分の計算自体は
とても軽かったので。あとはリプレイデータの都合。デバッグ時の巻き戻し
や早送り(任意時点へ移動)してたので
0613名前は開発中のものです。2014/04/29(火) 10:41:35.55ID:EMV53Qmd
>>611
>これdemo->Run()の中に別のゲームループがあるって事になるんだろ。
>つまり>>528って事だろ。

それぞれにゲーム内の時間発展を計算するサイクルがありましたね。
そういう意味ならそうなんだと思います。ゲーム固有の定石とやらは
よく知りません
0614名前は開発中のものです。2014/04/29(火) 11:00:02.81ID:R32lOXpJ
配信でコーディングしてる現役ゲームプログラマさんの仰っていた序列表貼っておきますね

神様 綺麗なコードで完成させられる人
人間 汚いコードで完成させられる人
=================( 越えられない壁 )====================
家畜 汚いコードで完成させられない人
ハエ 綺麗なコードで完成させられない人

ハエに出来るのは人間の邪魔だけと言っていて、なるほどなとリスナー達感心しきりでした。
ID:T7NavjR1見ててこの事思い出しましたね
0615名前は開発中のものです。2014/04/29(火) 11:23:57.20ID:k/FZV1V1
自分は
std::unique_ptr<Scene> scene = new なんかのシーン();
while(1){
scene->update();
scene->draw();
if( scene->isEnd() ) {
scene = std::move(scene->getNext());
}
}
ってやってそれぞれのシーンが次の遷移先返すようにしました
switchを意地でも使いたくてこんな形になった

実際switchの方がよく使われるものなの?サンプル探してもswitch使っているのしか見当たらないから困ってる
0616名前は開発中のものです。2014/04/29(火) 11:24:47.17ID:t5QADVCc
>>614
やるじゃんw
0617名前は開発中のものです。2014/04/29(火) 12:27:00.81ID:CXcBKCf+
>>615
多分だけど、

 if(関数に分けずそのまま羅列) → if(関数分け) → switch → stateパターン

……みたいに進化していくんだと思う。
単に自分がそういう順番でステップアップしたってだけなんだけどさ。

仮に自分が教えるなら、stateパターンによるシーン遷移は後回しにするかな
0618名前は開発中のものです。2014/04/29(火) 12:35:06.95ID:CXcBKCf+
ああそうだ思い出した。
シーン遷移をStateパターンで行う方法についてなんだけど、「シーン遷移しないとき」って、どうしてる?

(1) nullを返す
(2) thisを返す
(3) シーン遷移関数を用意しておき、それが呼ばれなかったとき
(4) その他

自分は(2)で、nullを返すときはゲーム終了ってことにしてる。
一般的なStateパターンなら(1)かなあ。
0619名前は開発中のものです。2014/04/29(火) 12:40:34.16ID:5MYZPLM5
>>612-613
なるほどthx. sceneの引数でgameenv貰ってるね。

シーン遷移の実装はシーン側は知る必要ないから、
その時の気分とかシーンの数とかで好きにやりゃいいと思うけどね。

Task的に入り組んだ作りしてないのなら、どれでもすぐ遷移図を思い描けるっしょ。
0620名前は開発中のものです。2014/04/29(火) 16:14:29.11ID:R32lOXpJ
>>616
曰く、
「クラス設計書貰うけど見ない。クラス流用して他のゲーム作ったことがないから意味がない」
「デザインパターン?何それ?」
「参考書は読んだことがないからオススメ本とか分かんない。ネットと、エラーが出たらググレカスで覚えた」


PSでほとんど1人でプログラム任される人の弁です
0621名前は開発中のものです。2014/04/29(火) 16:19:59.07ID:NQBFYHJc
>>620
すげぇ
俺そんなこと言ったことないけど、完全に俺だわ
ただ、作ってたのはPSじゃねぇけど
0622名前は開発中のものです。2014/04/29(火) 16:20:18.05ID:KJKa8R89
>>620
その人、協調性が無いから、単独でしか使い道が無い。
0623名前は開発中のものです。2014/04/29(火) 16:27:51.48ID:NQBFYHJc
人事を何とかしないとうちの会社はやばい
ゲー専卒で多少のコミュニケーションはできれば入れてる感じがする
8人中2人もう辞めてるし、てかそれ以前にDXライブラリをインクルードディレクトリへの追加方法わからねぇわ、プログラムが組めねぇわで最悪だわ
1人だけまともというかたぶん俺より組める奴居るけど
うちは研修する余裕なんてねぇってわかってんだろうが、去年入ったやつなんてもう最後の1人を何とか留まらせてるんだから、俺らに人事噛ませろよ
0624名前は開発中のものです。2014/04/29(火) 16:27:58.51ID:lMFqMvqX
PSでググレカスてどんな時代?
一昔前の1500円のミニゲーム移植とかの人てことなんだろうか
0625名前は開発中のものです。2014/04/29(火) 16:31:27.80ID:GSilIO8H
>>622
ちょっとワラタ
0626名前は開発中のものです。2014/04/29(火) 16:31:55.46ID:CPnqQaxX
従来の手続き型で何本もゲーム作ってきた俺だが
いっちょオブジェクト指向でも勉強するか、とやり始めた結果
もうずっと制作が滞ったままになっている。
なんでこんなにめんどくさいんだ……。
0627名前は開発中のものです。2014/04/29(火) 16:33:29.90ID:t5QADVCc
サッカー上手い人がサッカーの技術書読んでうまくなるわけもないし、そういう感覚なんかな。
本読まずにPG覚えるとか想像もつかねえw
0628名前は開発中のものです。2014/04/29(火) 16:59:24.66ID:CPnqQaxX
本は解るようになってから読むと解るけど、解らないうちに読んでも解らないからなw

そもそも本を書くような人は「本を読んだら解る人」だろうから、
本を読んでも解らない人でも解るような本を書けないだろうな。
0629名前は開発中のものです。2014/04/29(火) 17:12:12.68ID:dd41HZLf
ビギナーコラムでオブジェクト指向の哲学とか語られてもな
とりあえず作ってみよう系のほうが理解しやすい
ここを弄ったらこう変わるみたいな
■ このスレッドは過去ログ倉庫に格納されています