C/C++ゲーム製作総合スレッド Part4
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2013/08/12(月) NY:AN:NY.ANID:RPqvnGkC元スレ
DXライブラリ 総合スレッド その12
http://toro.2ch.net/test/read.cgi/gamedev/1330000532/
前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
0179名前は開発中のものです。
2013/09/27(金) 08:33:08.87ID:SP2W5RH20180名前は開発中のものです。
2013/09/27(金) 12:19:15.07ID:XzbTruZP久しぶりに見た
0181名前は開発中のものです。
2013/09/27(金) 12:49:19.82ID:h9p/NQii重さ12でやってるけどよく爪が割れるわ
0182名前は開発中のものです。
2013/09/27(金) 16:19:12.68ID:G+vvY9w/基礎的な単語の意味がわかっていいんだよ
0183名前は開発中のものです。
2013/09/27(金) 16:25:15.78ID:dN57jsSQwhile(1)
{
if(...)
{
break;
}
}
0184名前は開発中のものです。
2013/09/27(金) 16:50:51.96ID:Ftl1F3xi0185名前は開発中のものです。
2013/09/27(金) 17:43:19.40ID:W5Ecfj6h0186名前は開発中のものです。
2013/09/27(金) 18:07:48.07ID:MDl2Sh2q0187名前は開発中のものです。
2013/09/27(金) 18:16:14.47ID:dN57jsSQhttp://pics.dmm.co.jp/digital/video/11parm00001/11parm00001jp-8.jpg
http://pics.dmm.co.jp/digital/video/11parm00001/11parm00001jp-10.jpg
http://pics.dmm.co.jp/digital/video/11parm00001/11parm00001jp-11.jpg
http://pics.dmm.co.jp/digital/video/11parm00002/11parm00002jp-15.jpg
http://pics.dmm.co.jp/digital/video/11parm00002/11parm00002jp-16.jpg
http://pics.dmm.co.jp/digital/video/11parm00003/11parm00003jp-20.jpg
http://pics.dmm.co.jp/digital/video/11parm00006/11parm00006jp-7.jpg
http://pics.dmm.co.jp/digital/video/11parm00006/11parm00006jp-8.jpg
http://www.p-jinriki.com/pc/img/talentpic/l/pic_tohdohyouta_mypage.jpg
0188名前は開発中のものです。
2013/09/27(金) 18:35:55.36ID:eEyIdjJu無駄にハードの知識が必要だったりプログラムの知識は
関数ポインタやオブジェクト指向すら不要だったり
0189名前は開発中のものです。
2013/09/27(金) 19:40:15.31ID:mYXhuyuG0190名前は開発中のものです。
2013/09/27(金) 19:48:23.09ID:JDEMfhWoもしくはusb3.0とか扱えるような知識を
0191名前は開発中のものです。
2013/09/27(金) 19:55:23.31ID:XzbTruZP入社後のポイント稼ぎ用、という印象はある
職人様方には無用なものだろうね
0192名前は開発中のものです。
2013/09/27(金) 19:58:37.04ID:XzbTruZP0193名前は開発中のものです。
2013/09/27(金) 20:28:52.37ID:NDPmfmjE0194名前は開発中のものです。
2013/09/27(金) 20:42:18.24ID:OrreSYwI0195名前は開発中のものです。
2013/09/27(金) 21:26:58.83ID:t+y3xWop最近、ゲハ住人っぽいのがいるね。評論家気取りうぜぇ。
0196名前は開発中のものです。
2013/09/27(金) 22:53:02.77ID:PF1r05oxうおお、面白い。そういうやり方があるんだね
横からだけど、最近同期の方法とかに悩んでたから参考になります
2人対戦のゲームをUDPで完全に同期させる方法はネットにいろいろ参考になる資料があるんだけど
クライアントサーバで一定時間毎に同期させるような方法はあまり資料がない・・・
ゲームのジャンルやルールによってやり方が違いすぎるからかな
0197名前は開発中のものです。
2013/09/28(土) 06:23:44.02ID:5v1wAOlF>>178
できました
ありがとうございました
0198名前は開発中のものです。
2013/09/28(土) 10:29:41.31ID:Y+bKGXfAでるよ
>>188
総合的な知識が幅広く得られるのがメリット
プログラマは狭く深くになりがちだからそれを補える意味は大きい
関数ポインタもオブジェクト指向もでるよ
C言語の知識を補うならC言語検定もある
>>190
ベンダーべったりの知識はベンダー試験
マイクロソフトは充実してるよ
0199名前は開発中のものです。
2013/09/28(土) 12:29:50.40ID:/fMP8d9m知識を得るならその手の本を読めばいいだけ
0200名前は開発中のものです。
2013/09/28(土) 13:32:24.05ID:ihDNaDhE0201名前は開発中のものです。
2013/09/28(土) 15:50:16.20ID:nDU4ITkuキャラクターの位置とかはけっこうズレるし、敵にダメージ入るタイミングはズレたりはするけど、
死んでるはずの敵からの攻撃からダメージ受けることってなかったよね?(PSO2は除く)
特に派手なアクション要素がなければ、各クライアント側で起きたイベントをサーバで集めて
タイムスタンプとかとあわせて整合性を取って、発生し得るイベントを全クライアントに送るって感じ?
0202名前は開発中のものです。
2013/09/28(土) 18:14:48.97ID:RXTSyO+4ファンタシースターオンライン2は「MORPG」で非同期型/クライアント分散処理型ね
0203名前は開発中のものです。
2013/09/28(土) 18:34:11.99ID:ZZQuEZ6jクライアントは移動とか攻撃とかリクエスト投げるだけじゃないと
俺のカスタムクライアントが9999ダメージを連発させるぜ
0204名前は開発中のものです。
2013/09/28(土) 20:01:55.84ID:mp5f+xUzへー、C言語検定なんてものがあったのか
それは知らなかった
腕試しに受けてみようかな
0205名前は開発中のものです。
2013/09/28(土) 21:24:48.68ID:BqaH8pr+0206名前は開発中のものです。
2013/09/28(土) 22:25:03.13ID:Y1ge1Ybt専門学校1年の秋位に受けさせるレベルで超簡単だぞ
0207名前は開発中のものです。
2013/09/29(日) 07:44:25.71ID:hanumcZp全てのイベントの定義には移動や方向転換も含んでて情報が若干重複するから
座標と角度は一秒に一回とかでもいいかも
攻撃判定とかはサーバーで処理するのかな?
それともクライアントで判定して結果だけおくるのか
チートされると弱いけど。
0208名前は開発中のものです。
2013/09/29(日) 17:06:00.34ID:vFW2ihcI戦闘に関する処理は全てBattleっていう関数が処理してるという前提。
モンスターのLv・HP・攻撃力とかの初期値は、全てデータベースとして別のbinファイルに存在する。
今考えてるのは、
戦闘開始→乱数で「敵の数」「出現する敵のID」取得
Monsterっていうクラスを用意する。
コンストラクタで「出現する敵のID」を入力引数にする。
IDでデータベースから敵情報をリードしてくる。
リードしてきた敵のパラメータをprivateの変数に格納する。
みたいな感じになるのだろうか
0209名前は開発中のものです。
2013/09/29(日) 17:46:39.51ID:Vo2lxUIsそれでいいんじゃね?
0210名前は開発中のものです。
2013/09/29(日) 18:18:34.45ID:Ov6Kwx0jフィールド内でキャラクターが何歩あるいたら敵に遭遇するかがランダムなことなんじゃないの?
0211名前は開発中のものです。
2013/09/29(日) 18:23:06.00ID:xezVSvWv0212名前は開発中のものです。
2013/09/29(日) 18:56:18.52ID:vFW2ihcIうーん
戦闘が始まったら関数Battleを呼ぶ
Battle内でMonsterクラスの実体monster_nowを用意する
monster_nowは配列で数個(モンスターの数分)用意
monster_nowはモンスター種別IDを基にモンスターデータベースから敵データをリードする
HPを0にすると戦闘終了処理をした後にBattle関数がリターンする
・・・という作りを考えてるんだけど、それが>>209が言ってることに当たるのかな?
>>210-211
完全にそうですねwすいません
0213名前は開発中のものです。
2013/09/29(日) 19:00:09.19ID:vFW2ihcIclass Monster
{
private:
int HP;
int MP;
public:
Monster(int ID); // 種別IDを基にデータをリードするコンストラクタ
void Action(未定); // 敵と味方とのデータのやりとりの予定
~Monster(); // 経験値などの戦闘終了後の処理
};
こんな感じ
Battle関数が呼ばれるために
int Battle()
{
乱数で敵ID・数取得
Monster mob[敵の数];
〜〜
}
みたいな感じ
0214名前は開発中のものです。
2013/09/29(日) 19:01:24.28ID:DKLo6UIS出現する敵の種類と確率を定めたテーブル作ってそっちから取得した方がいいとオモ
あとこれ出てくる敵は必ず1種類のみなのか?
0215名前は開発中のものです。
2013/09/29(日) 19:08:23.21ID:DKLo6UIS0216名前は開発中のものです。
2013/09/29(日) 19:08:35.81ID:UYO2pFri0217名前は開発中のものです。
2013/09/29(日) 19:10:52.74ID:UYO2pFridxライブラリとかのフレームワークで3dゲームは一度だけ作った
0218名前は開発中のものです。
2013/09/29(日) 19:39:10.59ID:g9GnKKpA0219名前は開発中のものです。
2013/09/29(日) 20:08:25.90ID:/sjQW5wJ0220209
2013/09/29(日) 20:36:17.46ID:Vo2lxUIsclass CMonsterData
{
int hpmax; //最大体力
}
class CMonster
{
CMonsterData *monsterdata;
int hp; //残り体力
}
こんな感じで作成する。
各個体で別々にインスタンスを作らないといけないのは分かると思う。
アクションするモンスターはデータと別に作る。
データクラスはアプリケーション実行中には絶対にデータを弄らない。
弄るとややこしくなるから。
戦闘が終わればCMonsterを綺麗さっぱりdeleteすれば分かりやすい。
自分はこんな感じで作ってる。
因みに戦闘クラスは
class CBattle
{
CMonster *monsters[敵の数];
};
という感じでポインタを持たせる。
0221名前は開発中のものです。
2013/09/29(日) 21:07:58.43ID:vFW2ihcI数に関してはそんな感じです
なるほど、テーブル使ったほうが確かにイイですね
そしてそのテーブルを扱うためだけの関数を作ろうと思います。
>>220
ふむ・・・少し難しいですね
その方法だとどこでモンスターを指定できるのかが良く分かりません
CBattleにコンストラクタでモンスター種別(ID)を引数にして、
IDによって持たせるポインタを変える…というのは出来ないですよね?
0222名前は開発中のものです。
2013/09/29(日) 21:31:00.15ID:hanumcZpモンスタークラスのコンストラクタにモンスターデータクラスのインスタンス渡して、
モンスターデータクラスのコンストラクタにはプライマリキー渡して外部ファイルの読み込みとか
0223209
2013/09/29(日) 22:34:23.36ID:Vo2lxUIsモンスターの指定はCMonsterのコンストラクタか初期化関数で
CMonsterDataのポインタを渡せばよい。
イメージとしてはCMonsterDataの統轄クラスがCMonsterを吐き出す工場メソッドを作る感じ。
敵の種類のランダム指定もそのメソッドでやらせればよい。
CBattleについては設計思想にもよると思うが、個人的にはstateパターンを薦めたい。
例えばこんな感じ。
class CState
{
protected:
CMonsterData統轄クラス *monsterdatamanager; //参照するのみ
public:
virtual int OnClick(int x,int y){return 0;} //マウス操作はあまりしないと思うが
};
class CBattle : public CState
{
CMonster *monsters[敵の数];
};
class CFieldMap : public CState
{
};
0224名前は開発中のものです。
2013/09/29(日) 23:46:36.57ID:2IWoMpj3実家で技術評論社の「はじめてのC」読んでたらオカンと姉ちゃんがすげー剣幕で本をぶんどって行ったことがあったなー。
中身を確認した後顔真っ赤にして戻っていったが。
セックスの教本を居間で読むような度胸が俺にあるわけないでしょう?
0225名前は開発中のものです。
2013/09/29(日) 23:55:55.73ID:CMDsZPaO0226名前は開発中のものです。
2013/09/30(月) 20:56:01.83ID:dFNgJ59lゲームによる。アーケードなんかはチート不能だから瞬着の当たり判定とか普通にあるよ
参考になるかどうか分からないけど、ボーダーブレイクの主武器は発砲時にレティクルが
敵に重なってれば「当たり」。クライアント側(プレイヤーの筐体側)で判定してる
わかりやすい例かと
0227名前は開発中のものです。
2013/10/01(火) 18:12:36.03ID:IljiT9fF逆に非同期で実現できる面白い仕掛けのゲームも考えてみたいもんだね
0228名前は開発中のものです。
2013/10/01(火) 21:39:39.78ID:dkNVaEwCID:l+J8o0sa
http://engawa.2ch.net/test/read.cgi/gameama/1374691097/141
http://engawa.2ch.net/test/read.cgi/gameama/1374691097/144
http://engawa.2ch.net/test/read.cgi/gameama/1374691097/146
0229名前は開発中のものです。
2013/10/02(水) 10:08:22.51ID:MEhezrLj素直に巣に帰ったようで。ありがたい
0230名前は開発中のものです。
2013/10/02(水) 18:28:05.54ID:uhqaKlgzコンパイル時に外部リソースを実行ファイルに取り込むのって外部リソースのメリットを潰しちゃうかな?
具体的には、箱庭ゲーとかでのイベント発生時刻(タイムラインっていうの?)とか。
逆に、ユーザーにいじって欲しくないデータは隠せそうだけど、それはそれでプログラムに直書きした定数とどう違うのという疑問もある。
みんなconstexprとか使ってんの?
0231名前は開発中のものです。
2013/10/02(水) 18:29:13.84ID:uhqaKlgz0232名前は開発中のものです。
2013/10/02(水) 19:25:27.70ID:dQghyWFhそれはコピペミスか何かで本当は
>テンプレートメタプログラミングとかいう言葉を最近知ったんだけどさ
>みんなconstexprとか使ってんの?
っていうレスだったのかな?
それなら別に、C++11になるって制約以外には付け得なキーワードだから
付けられるとこには付けとくといいんでないかな
0233名前は開発中のものです。
2013/10/02(水) 20:18:22.46ID:Xkv5bAG0バランス調整でコンパイルがメンドかったら外部ファイル化。
バイナリファイル解析する奴なんてそうザラにいないし、
いざとなれば暗号化すればいいし。
0234名前は開発中のものです。
2013/10/02(水) 22:39:00.42ID:LQEQgpgVコンパイルが長杉
0235名前は開発中のものです。
2013/10/03(木) 00:06:52.85ID:ZwyUWlohincludeが深いとか翻訳単位が多くてコンパイルとリンクが多いと長い事はあるけど
0236名前は開発中のものです。
2013/10/03(木) 01:34:00.02ID:SAzGamr40237名前は開発中のものです。
2013/10/03(木) 02:02:11.52ID:S3Z1Fz0v0238名前は開発中のものです。
2013/10/03(木) 06:56:22.10ID:wIH7+l3Lビルド∋コンパイルってことか?
0239名前は開発中のものです。
2013/10/03(木) 07:33:06.73ID:CsDHW8Wiリンク=出来た.objから実行ファイルの生成
ビルド=それらの総称
って事だろ?
今日日、一々使い分ける事もないだろ。メンドくせぇな(^p^)
0240名前は開発中のものです。
2013/10/03(木) 07:44:02.31ID:kgKMfZTo個人レベルの開発規模なら、昨今ではわりと珍しい言い分だと思うかな
普及価格帯のPCの性能、SSDの普及率、こうした背景の中でPCHを使ってれば
設計が多少ゴチャってても、コードを一部修正した後のビルドは大抵一瞬で終わる
それでも遅いなら、ファイル(ソースやヘッダ)間の依存関係がスパゲッティ状態で
一部の修正が「不必要に」多数のファイルに影響を及ぼしてるとか、ビルド設定が
腐ってるとか、その辺に原因がありそう
0241名前は開発中のものです。
2013/10/03(木) 08:36:21.26ID:1JpHSTD+0242名前は開発中のものです。
2013/10/03(木) 08:42:00.57ID:vXordIizC++はまだ数秒かかるでしょ(Hello, Worldであっても)
多少は高性能な環境だと仮定しても一瞬は盛りすぎ
(そもそも開発環境は一般的な最新PCより劣る場合が多い)
0243名前は開発中のものです。
2013/10/03(木) 08:56:12.82ID:edQZBgYu加速度的にコンパイル時間は長くなる。
逆に、そうならないように各ヘッダで宣言すると
今度は一目で見通せなくなるから面倒臭い。
定数名で検索かければいいじゃねーかと思っても、
定数名なんて覚えてない。
そもそも、バランス調整ごときでIDE立ち上げるのも面倒臭い。
何十回もリトライするケースもあるしね。
0244名前は開発中のものです。
2013/10/03(木) 09:22:37.44ID:7ILxSOK40245名前は開発中のものです。
2013/10/03(木) 09:32:31.11ID:8Paj6jJkよく使う変数をまとめた初期化込みGet関数込みのクラスを継承させて
よほど特殊,重要な値じゃないかぎりそこでやりくりしてる
余分な変数大量に宣言&どこのクラスかで同じ変数でも意味が変わって
他人が見てもよくわからんから設計上よろしくないと思うが
普通はいちいちヘッダわけていろんな変数つけんの?
変数格納クラスに変数追加しないかぎりコンパイル時間は気にならない
副作用で変数の節約と機能ごとのカプセル化がうまくなった気がする
0246名前は開発中のものです。
2013/10/03(木) 10:27:51.09ID:aQc+PiUU"総称"じゃないよ。コンパイルとリンクのステップを順に実行して、最終アウトプットに組み上げるのが、言葉通りビルド。
総称って言っちゃうと語弊がある。
あと今日日分けないって意味だと、コンパイルじゃなくてビルドって言う。
当たり前の事なのでめんどくさい話じゃない。ちゃんと正確に理解しなさい。
0247名前は開発中のものです。
2013/10/03(木) 20:24:47.60ID:cC3MwkNs・ビルドが速い言語
・ハロワのビルドに数秒かかるC++
これらについての具体的な言語処理系(の製品名)を挙げてくれるとありがたいです。
ハロワ数秒を叩き出すPC環境についても差し支えない範囲でお願いします
あとmakefileかプロジェクトファイル、コンパイルオプションもあると助かります
一応、一般的な最新PCより劣る環境として
CPU:Core i7-860(Lynnfield世代)
MEM:PC3-12800 2GBx2
HDD:1TB 7200rpm
VGA:GTX260(216SP) GDDR3 896MB 2-way
SND:SB X-Fi XtremeGamer
OS:Win7 Pro 64bit (現在はSP1)
4年前にバイトして買ったパーツがこんな感じで、今は押入れの中で
眠ってるんですが、寄せ集めて検証用に一台組んで試してみようかと
SSDNow V100 SV100S2/64Gという3000円程度のローエンドなSSDも
たまたまあるので、これも使ってみようかなと
0248名前は開発中のものです。
2013/10/03(木) 22:00:56.49ID:98DwJ9Gs安価見逃した上にハロワのビルドが速い言語と空目してしまったのでHQ9+と上げておくw
0249名前は開発中のものです。
2013/10/03(木) 22:33:47.68ID:edQZBgYu0250名前は開発中のものです。
2013/10/03(木) 23:13:17.00ID:DhfDfaDp0251名前は開発中のものです。
2013/10/03(木) 23:42:09.30ID:mySEiIjB0252名前は開発中のものです。
2013/10/04(金) 00:23:20.56ID:yG2oikok延々と全プログラムを書き出しているとかいうオチじゃね〜の?
そりゃ重いよ。
0253名前は開発中のものです。
2013/10/04(金) 00:26:55.32ID:kN3IM+RsDXスレのがよっぽどゲーム的
0254名前は開発中のものです。
2013/10/04(金) 00:55:47.13ID:yG2oikokそーゆーよっぽどな理由がない限りは、DXライブラリ使った方が
良いとは俺も思う
0255名前は開発中のものです。
2013/10/04(金) 01:11:50.59ID:yG2oikokこれやられっと処理速度がやたらと遅くなるんだが・・・・・・
0256名前は開発中のものです。
2013/10/04(金) 01:25:42.28ID:yG2oikok0257名前は開発中のものです。
2013/10/04(金) 01:32:27.72ID:NV+cCaxOチャット?
0258名前は開発中のものです。
2013/10/04(金) 01:32:40.31ID:LBEm60p60259名前は開発中のものです。
2013/10/04(金) 02:03:50.60ID:yG2oikok0260名前は開発中のものです。
2013/10/04(金) 02:13:07.11ID:Vxt/QfR9i5に16GB積んでVC2012でハロワをビルドしても数秒かかるよ
I/Oの強化が効果的だけど、例えばFC接続したRAID5構成(HDD24台)でRHELのGCCでビルドしたって一瞬じゃ終わらん
やっぱ、Delphiが最強だな
0261名前は開発中のものです。
2013/10/04(金) 02:29:42.32ID:LBEm60p60262名前は開発中のものです。
2013/10/04(金) 02:33:31.45ID:yG2oikok0263名前は開発中のものです。
2013/10/04(金) 02:34:54.05ID:LBEm60p60264名前は開発中のものです。
2013/10/04(金) 02:46:28.17ID:yG2oikokあと、オブジェクト指向にも向いてるし、モジュール設計も楽。
0265名前は開発中のものです。
2013/10/04(金) 03:03:29.50ID:Y9YGW56v0266名前は開発中のものです。
2013/10/04(金) 03:05:51.85ID:LBEm60p6良かったな
0267名前は開発中のものです。
2013/10/04(金) 03:31:25.01ID:B5Ii4kbUC++が圧倒的に遅いのは最強! 無敵!
0268名前は開発中のものです。
2013/10/04(金) 05:40:39.74ID:GRmzq35U別にスマートポインタ使える必要ないよな
アロケータも別に
0269名前は開発中のものです。
2013/10/04(金) 08:53:12.46ID:8I+rYF1pスマポ普通に使うが、なんで名前を出した?
boost::shared_ptr も、都合によって自前も。「ひらがな書けます」くらいのレベルの話だ。
0270名前は開発中のものです。
2013/10/04(金) 08:55:12.20ID:8I+rYF1p自前ライブラリとかlibにしとかないか普通。
それでも遅いって話ならいいけど
0271名前は開発中のものです。
2013/10/04(金) 11:53:46.23ID:17B7kATN構造が複雑になった場合、どのタイミングで解放されているのかよくわからなくなる
みたいなことってないの?
0272名前は開発中のものです。
2013/10/04(金) 11:59:28.70ID:n+pz5jM/0273名前は開発中のものです。
2013/10/04(金) 12:06:41.37ID:B5Ii4kbUオーナー管理で罠にハマるとつらい
0274名前は開発中のものです。
2013/10/04(金) 12:23:47.55ID:17B7kATNなんらかのインスタンスを参照している場合、
先にインスタンスを解放してしまったら、
参照している方で不具合が起こるじゃないか。
0275名前は開発中のものです。
2013/10/04(金) 13:38:33.03ID:8I+rYF1p考え方的に逆。って言うかちょっと違う。
「いつ解放されるかわからない」って状況はスマポ使う使わない以前の自分が動作を認識してるかって話であって、
ライフサイクルは自分がわかった上で利用するんだよ。
つまりそのデストラクタはいつ呼ばれるかってのを自分がわかってて書いてるのが前提。
スマポはその上の保険と省力。
0276名前は開発中のものです。
2013/10/04(金) 13:41:02.20ID:8I+rYF1pそれはスマポに限らず設計の問題。
JavaやC#にあるGCと混同してないか?
全く別物で、スマポは単純だぞ
0277名前は開発中のものです。
2013/10/04(金) 14:30:37.37ID:D4r1gxKkだからコンパイルの高速なスクリプト言語を組み合わせるんだ
0278名前は開発中のものです。
2013/10/04(金) 15:16:13.30ID:PrPp4O7S■ このスレッドは過去ログ倉庫に格納されています