C/C++ゲーム製作総合スレッド Part5
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2014/01/16(木) 00:00:31.27ID:w6WW3hAo元スレ
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/
0483名前は開発中のものです。
2014/04/05(土) 20:58:16.49ID:TIaN2lJ/変数として持つデータに依存する部分はメンバ関数にしたいけど
std::stringみたいになんでも入れちゃうのと
マイナーな機能は引数を取る静的関数や別クラスに分けるかはまた悩む
0484名前は開発中のものです。
2014/04/05(土) 21:40:17.97ID:nUDfpyEYゲームなら特に
0485名前は開発中のものです。
2014/04/05(土) 22:14:07.33ID:k4ryh3Xyええー、そんな感じなの。想像してたのと違うなぁ。
あ、俺は480じゃないけど似たような問題に詰まってる者です。
0486名前は開発中のものです。
2014/04/06(日) 01:53:43.72ID:E+ECXvrWそれだけで厚めの本が出るぐらいだし・・・
0487名前は開発中のものです。
2014/04/06(日) 12:16:47.72ID:kDoD0j2F0488名前は開発中のものです。
2014/04/06(日) 16:07:09.03ID:4sjYlVDb>>480,>>485
完成させてからのリファクタリングの段階ということなら具体的に説明
できるだろうしコード片をうpってもいいだろうし、お話になるのでは
話の振り方次第ですお
0489名前は開発中のものです。
2014/04/06(日) 16:50:44.66ID:MlcK3xADclass Player
{
public:
Player();
void update()
{
aClass_.update();
bClass_.update();
}
private:
A aClass_;
B bClass_;
};
0490名前は開発中のものです。
2014/04/06(日) 16:51:17.53ID:MlcK3xAD{
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_;
};
0491名前は開発中のものです。
2014/04/06(日) 17:03:11.51ID:sV4Btc1Cclass Aの前にclass B;を書けば良いんじゃね?
0492名前は開発中のものです。
2014/04/06(日) 17:10:52.22ID:7eM4W795とりあえず動作すれば良いってだけならクソ回答としてupdateの引数にそれぞれ渡してあげる
渡し方はゲッターとかクソだけど
0493名前は開発中のものです。
2014/04/06(日) 17:34:28.11ID:tqEQPRwfPlayerのupdateかprivateにupdateA,updateB作ってべた書きとか
AとBくっつけるとか
俺はどうしても他で必要にならない限り分けない、
enemyで必要とかになればそもそも一つ前にcharacterとか作って両方に持たせるとか
0494名前は開発中のものです。
2014/04/06(日) 19:31:11.73ID:3nuwa43PクラスAとBが相互依存してるから設計しなおす
0495名前は開発中のものです。
2014/04/06(日) 20:11:48.21ID:4sjYlVDb@AとBは合体だ!フュージョン!
AAとBで壁パスだ!ダブルディスパッチ!
BPlayerが面倒見ろ!メディエーター!
AとBが具体的に何なのか分からないとアレだよな
プレイヤーの所有物で、相互作用(値のやり取り)がある二つのもの。
しかし、プレイヤーとの間に作用はない。
ダウジングのアレとか?
0496名前は開発中のものです。
2014/04/06(日) 20:19:27.91ID:kDoD0j2Fトリガーとなるプレイヤー一人が発動したら周囲のプレイヤーの合体魔法用のメソッドを呼ぶ
メソッドの中ではそのプレイヤーのmpを減らしたりクールタイムを追加したり硬直したりする
トリガープレイヤーはそのメソッド呼ぶだけだから、もしかしたらプレイヤーによって処理は違うかもしれないが、とにかくそのプレイヤーは合体魔法に参加した
メソッドの返り値で成否を確認してもいい
その複数のプレイヤーの中心の座標に合体魔法を発動するなら、その計算処理はトリガープレイヤーがやる
0497名前は開発中のものです。
2014/04/06(日) 20:22:50.98ID:kDoD0j2FAとBの使用用途を書け
シチュエーションによって考え方が変わり、考え方に依存するからオブジェクト指向が最も効率いいとされて普及してる
0499名前は開発中のものです。
2014/04/07(月) 12:25:22.90ID:/OCJvUrMちゃんと.hと.cpp分けろよ
0500名前は開発中のものです。
2014/04/07(月) 20:27:14.10ID:bPq5EneUA…キー入力の処理
↑B.x_ ↓A.a_
B …キー入力後の移動処理と当たり判定
A→Bのデータの流れは分かるが、B→Aのデータの流れは何だ?
フォースフィードバック?
俺はこういう小出しの後出しジャンケンは別に気にしないけど
完成後のリファクタリングの段階なら「具体的に」書けるっしょ?
そろそろ誰かがキレると思うよ
0502名前は開発中のものです。
2014/04/09(水) 00:58:15.38ID:wd1GU5kL面倒くさくてもC++としてはちゃんとヘッダとソースは分けるべきだよ
0503名前は開発中のものです。
2014/04/09(水) 01:28:10.85ID:f0hevqdxあるべき論なんて一考にも値しない。
アホは、何故そう考えるのか理由を述べない。
0504名前は開発中のものです。
2014/04/09(水) 08:02:26.21ID:zim/sso+0505名前は開発中のものです。
2014/04/09(水) 10:52:16.89ID:uf/6C2tB経路探索だけで市販のゲーム風に出来るの?
0506名前は開発中のものです。
2014/04/09(水) 12:11:54.87ID:0loekIA0順番にそれを通過するように組む……というのが単純かな?
0507名前は開発中のものです。
2014/04/09(水) 12:53:17.52ID:HhpB/vqN0508名前は開発中のものです。
2014/04/09(水) 13:04:35.78ID:6ESwZ9mm多少ぶつかってもペナルティがほとんどないとか
ありえない速度でカーブ曲がってたりとか
0509名前は開発中のものです。
2014/04/09(水) 13:16:31.51ID:ZCvd+vVA0510名前は開発中のものです。
2014/04/11(金) 00:20:28.36ID:GEtB1yKl|∧
/
/
ただなぞるよりも (^o^)/
/( )
/ / >
(^o^) 三 選んだ自由に
(\\ 三
< \ 三
..\
(/∀・) 傷付くほうがイイ!
( /
/く
0511名前は開発中のものです。
2014/04/12(土) 22:13:32.52ID:Zyf8FLOE0512名前は開発中のものです。
2014/04/12(土) 23:44:55.21ID:0ybV74Ha0513名前は開発中のものです。
2014/04/13(日) 10:10:40.70ID:/fZAahnLググってもそれらしき情報が出てこないんだけど、具体的に方程式的なのってあるの?
0514名前は開発中のものです。
2014/04/13(日) 10:15:03.46ID:WZFk6ORNこれじゃないの?
0515名前は開発中のものです。
2014/04/13(日) 10:22:56.57ID:P+5kfwmh0516名前は開発中のものです。
2014/04/13(日) 14:11:27.24ID:8it2YQcZ0517名前は開発中のものです。
2014/04/20(日) 07:06:07.84ID:Lsg8M/g2出来るならどんな感じのソースになるのか教えてくれるとかなり助かる
0518名前は開発中のものです。
2014/04/20(日) 10:51:05.10ID:b2XGGGld0519名前は開発中のものです。
2014/04/20(日) 14:59:59.27ID:It9vI7xg0520名前は開発中のものです。
2014/04/20(日) 16:02:57.62ID:Lsg8M/g2それで大丈夫
まあさすがに回転してるのは無理だし・・・
0521名前は開発中のものです。
2014/04/20(日) 16:18:17.37ID:2PHJETXp上辺が相手の下辺をより上&&下辺が相手の上辺より下
を3軸分やればいいだけなのでは?
回転する直方体の衝突判定ってまるぺけになかったっけ?
0522名前は開発中のものです。
2014/04/20(日) 17:29:26.22ID:It9vI7xg直線上で線分同士が重なってるかどうか?という判定があって
単位、それを2回やったのが矩形同士の当たり判定だと考えれば良い。
そうすると、3次元や4次元(?)も、そのまま使えそうだろ?
0523名前は開発中のものです。
2014/04/22(火) 06:39:03.06ID:2qdEj7/z一応球体の当たり判定と線分の当たり判定でやってるんだけど、坂を下ろうとするとジャンプするように落ちていくっていう・・・
0524名前は開発中のものです。
2014/04/22(火) 07:04:26.37ID:Xs5gC1x8いいやつ教えてくれ。
0525名前は開発中のものです。
2014/04/22(火) 07:13:32.39ID:Ld5gvQeA斜めに移動させる
0526名前は開発中のものです。
2014/04/23(水) 20:54:31.77ID:wDU0qJca一つのループでswitchを使ってシーンを変えているのをいろんなサイトで見ますがこういう処理が当たり前なのでしょうか
0527名前は開発中のものです。
2014/04/23(水) 20:58:04.86ID:FTq0ixvH0528名前は開発中のものです。
2014/04/23(水) 21:00:21.88ID:zNP7HvPv理由は、ループは違っても共通のやること(キー入力とか画面出力処理)があって
そういうのを画面のループごとに別々に処理させてると管理が面倒だから。
(もちろん共通処理として関数化してはいたが、それでも面倒だった)
0529名前は開発中のものです。
2014/04/23(水) 21:36:36.02ID:wDU0qJcaなんですかそれ
>.528
なるほど
0530名前は開発中のものです。
2014/04/23(水) 21:48:10.54ID:a2O6zNfsループ自体は1つにして、そこから何らかの方法で振り分けるのが定番。
複数ループは即「やめとけ」って言われるレベル。
そこだけ守れば、あとはifで関数に投げるなり、switchで分けるなり、好きなようにすればいいと思うよ。
stateパターンについては、処理を振り分けるアルゴリズムの1つだけど
まあ、別にいいんじゃないかな。
0531名前は開発中のものです。
2014/04/23(水) 23:54:04.86ID:FTq0ixvHググれ
0532名前は開発中のものです。
2014/04/24(木) 08:45:54.28ID:wxyjU1yyYes
というか、君にループを分けるという発想を持たせた本かサイトか分からんが著者を呼んでこいぶっ飛ばしてやんよ
0533名前は開発中のものです。
2014/04/24(木) 09:15:53.69ID:1SkTvrzJ0534名前は開発中のものです。
2014/04/24(木) 09:46:36.37ID:XVAalfN1参考資料などがなかった場合、半分くらいは、
真っ先に思いつくのがループを個々に用意する方法のような気もする
0535名前は開発中のものです。
2014/04/24(木) 10:21:00.95ID:7sQk5lBbOSのフレームワーク含めてスレッドセーフな実装があまりない事にがっかりしたり
0536名前は開発中のものです。
2014/04/24(木) 11:59:52.01ID:1ftwUtauたかがシーン遷移でぶん回すループを、複数個所にコピペベースでおく意味がねー
0537名前は開発中のものです。
2014/04/24(木) 12:13:26.57ID:47DD1/Qn0538名前は開発中のものです。
2014/04/24(木) 12:53:05.17ID:1ftwUtau0539名前は開発中のものです。
2014/04/24(木) 13:22:18.45ID:fX1ni8oz0540名前は開発中のものです。
2014/04/24(木) 14:53:44.57ID:47DD1/Qn0541名前は開発中のものです。
2014/04/24(木) 16:29:40.03ID:LCot+zJdgoto?
0542名前は開発中のものです。
2014/04/24(木) 16:45:42.04ID:lgj86FWp0543名前は開発中のものです。
2014/04/24(木) 17:08:30.80ID:LCot+zJd0544名前は開発中のものです。
2014/04/24(木) 17:46:16.58ID:VQozCS4c0545名前は開発中のものです。
2014/04/24(木) 18:52:19.44ID:GSyZUE1jシーンの数が数十ってどんだけ大規模なゲーム作ってんのw
0546名前は開発中のものです。
2014/04/24(木) 19:03:46.70ID:AvrqiUr+ゲームというよりゲームエディタになってしまう
0547名前は開発中のものです。
2014/04/24(木) 19:18:31.92ID:wxyjU1yyゲームを作ってたつもりがエフェクトエディタが完成していた私のことをなぜ知っている
0548名前は開発中のものです。
2014/04/24(木) 19:23:13.77ID:47DD1/Qnドラクエ3程度
0549名前は開発中のものです。
2014/04/24(木) 19:36:08.29ID:7gC8mbT8その数十のループを1ソースにまとめるってとんでもないスパゲティだなw
完成すんのそれw
0550名前は開発中のものです。
2014/04/24(木) 19:54:33.85ID:1SkTvrzJ次回どのシーンを描画するのかポインタ返すってやり方の方がスマートじゃね?
0551名前は開発中のものです。
2014/04/24(木) 20:37:26.16ID:47DD1/Qn関数ポインタやクラスで分けるとあちこちに跳びまくるよね?ソレも嫌だから今のやり方でやってきた。
けどまあ、流れが判らなければ図を描けば済む話か。それでも、今の段階でやり直すのは……ん?
マップや戦闘のメインのシーンは今のままで良いな。サブのシーンの扱いは、直してみるかな?
ちょっと寝かしていたソースだが、色々と検討してみるか。
0552名前は開発中のものです。
2014/04/24(木) 20:41:28.50ID:XVAalfN1世の中にはディレクトリとか名前空間って概念があるから、便利なものよな
0553名前は開発中のものです。
2014/04/24(木) 20:55:45.26ID:7sQk5lBbクラス名なんて実装したいシーンの名前をそのままだから考える必要ないし
0554名前は開発中のものです。
2014/04/24(木) 22:24:05.32ID:/wenCDDH0555名前は開発中のものです。
2014/04/24(木) 22:35:04.46ID:1SkTvrzJ一人でコード組むなら図なんて書いたりしないからな
頭の中の仕様書通りにコード打つだけなんだから
0556名前は開発中のものです。
2014/04/24(木) 22:39:32.56ID:1SkTvrzJ0557名前は開発中のものです。
2014/04/24(木) 22:41:52.64ID:1SkTvrzJ背景に3Dフィールドを表示したまま半透明なステータス画面を描画したいとか
0558名前は開発中のものです。
2014/04/24(木) 23:29:46.37ID:/YmGGjJz0559名前は開発中のものです。
2014/04/24(木) 23:39:57.11ID:XVAalfN1その表現はちょっとおかしい気がする
いや言いたいことは分かるけどね?
0560名前は開発中のものです。
2014/04/25(金) 01:06:43.73ID:8lxSsrEc0561名前は開発中のものです。
2014/04/25(金) 06:16:12.48ID:GoYRAt3T0562名前は開発中のものです。
2014/04/25(金) 07:46:12.69ID:XsfFQEHlいいウィットだな
0563名前は開発中のものです。
2014/04/25(金) 09:30:36.62ID:jXAfeA6Fこういうのどうやって実装すんの?説明してるようなサイトがあったら教えてちょーだい
0564名前は開発中のものです。
2014/04/25(金) 09:42:20.41ID:XsfFQEHl0565名前は開発中のものです。
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:cWxmDdU50568名前は開発中のものです。
2014/04/25(金) 12:50:45.98ID:bu2wQqL4というか、そもそもデバッガでソース追えないという話に帰結しそうなのだが。
関数の中とかに「飛ぶ」訳ですし。
今後の事もあるから、「飛ぶ」事に慣れるのが肝要だと思いますけどね。
0569名前は開発中のものです。
2014/04/25(金) 15:11:16.15ID:uQbX0MMa0570名前は開発中のものです。
2014/04/25(金) 15:22:16.96ID:5DdHErYn著者:大槻有一郎
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流れの中で言ってたから、難しいというか本に頼らずともネットで情報集めてとにかく作れって感じだった。
その人自体もオブジェクト指向とか意味わからんでゲーム作ってるとか言ってるけど、
同人だけじゃなくコンシューマ機のゲームプログラムを1人で担ってるような人だし、
要は本見て文法覚えるより、汚くていいからとりあえず作品完成させろってことかと。
0572名前は開発中のものです。
2014/04/25(金) 17:46:46.24ID:WhIg+aCPとりあえず完成させろってのはその通りだな
ここでウンチク垂れ流してても自分の作品は完成させたことないってやつは多そう
そう、私の事ですorz
0573名前は開発中のものです。
2014/04/25(金) 18:37:51.58ID:kjeLMb9X0574名前は開発中のものです。
2014/04/26(土) 01:38:49.39ID:jf1SN+DQソースコードはネット上にあがってるぞ
0575名前は開発中のものです。
2014/04/26(土) 13:10:08.96ID:2tKTewnx0576名前は開発中のものです。
2014/04/26(土) 19:33:37.45ID:x5oOyDOe・フィールドシーン
・戦闘シーン
・アドベンチャーシーン
・シナリオ準備シーン
みたいな感じに大別されるよね
シーンはキー入力の挙動も変わるから
それも内包しないといけないよね
0577名前は開発中のものです。
2014/04/26(土) 19:37:39.56ID:IEmpvB3E0578名前は開発中のものです。
2014/04/26(土) 19:58:38.34ID:3cite/BRこれが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:x5oOyDOe0582名前は開発中のものです。
2014/04/27(日) 03:54:19.08ID:WYXfeo+Bclass 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 {};
■ このスレッドは過去ログ倉庫に格納されています