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/
0734名前は開発中のものです。
2014/05/11(日) 19:38:27.89ID:3XauxJKcっていうかその使い方わかりにくいしやめた方が
0735名前は開発中のものです。
2014/05/11(日) 19:44:07.91ID:3XauxJKcstatic_castでキャストすればいけるっぽい
0736名前は開発中のものです。
2014/05/11(日) 19:59:02.14ID:yHWGVGOF0737名前は開発中のものです。
2014/05/11(日) 21:01:42.40ID:KSscCZAlただこれだと再定義のエラーが前出たような気がする
0738名前は開発中のものです。
2014/05/11(日) 21:04:03.89ID:9RoLwWBRenum class MoneyType:int
{
GOLD,
DIA,
SIZE
};
int money[ MoneyType::Size ];
0739名前は開発中のものです。
2014/05/11(日) 21:06:37.47ID:KSscCZAl0740名前は開発中のものです。
2014/05/11(日) 21:14:58.11ID:9RoLwWBR将来お金の種類増えるかもしれないとか
配列使うぐらいならvectorにしとけとも思うが
0741名前は開発中のものです。
2014/05/11(日) 21:51:52.47ID:3XauxJKc0742名前は開発中のものです。
2014/05/12(月) 00:24:54.73ID:cE27KFFY例えば複数の種類のお金で買えるショップ機能を作りたい場合、
ショップ側でMoneyTypeという型と整数を持っておけば、処理が楽かなと思ったんだけど
0743名前は開発中のものです。
2014/05/12(月) 01:09:04.70ID:u2hQW3ha0744名前は開発中のものです。
2014/05/12(月) 14:46:27.12ID:Pch/P8kY(例えば主人公のデータとか色々な場面で使いそうなもの)
今まで単純にデータクラスの中に静的メンバ変数で定義してグローバル的にやってたけど、
たまたまシングルトンで管理してるソースを見つけて、色々あるのかなって思った
0745名前は開発中のものです。
2014/05/12(月) 18:22:11.56ID:cE27KFFY0746名前は開発中のものです。
2014/05/12(月) 18:22:35.24ID:gXmiaEA2それともクォータニオンで球面線形補間してる?
0747名前は開発中のものです。
2014/05/12(月) 20:18:49.99ID:u2hQW3haグローバル変数は可能な限り減らす、という理念の上でやってるなら、
それは実に正しい手法だと思うよ
0748名前は開発中のものです。
2014/05/12(月) 22:53:45.27ID:Qk7dokduその方向でプログラム書き直したところ、手間の物凄く増えて辟易。
やり方を間違ってるんじゃないか感が半端ない。
0749名前は開発中のものです。
2014/05/12(月) 23:01:55.91ID:Qk7dokduC++プログラムは人によってまるで違ってくる」とあったが本当みたいね。
本や解説サイトによって、サンプルがかなり違ってるようで混乱しまくるわ。
0750名前は開発中のものです。
2014/05/12(月) 23:39:44.01ID:4H1ieXj20751名前は開発中のものです。
2014/05/13(火) 06:24:12.16ID:hs5B6JyN一人で作ってるコンパクトなプログラムくらいだったら使いまくりでいいと思うわ
0752名前は開発中のものです。
2014/05/13(火) 10:40:34.58ID:lZBhyb5G複数のソースコードのあちこちに点在してるとそれが顕著になり
グローバル変数がクラスで依存関係があると動作保証が難しい
せめて組み込み型以外はポインタ型にして初期化の順序を決めちゃうのが安全
0753名前は開発中のものです。
2014/05/13(火) 11:22:50.82ID:i7OBK+99'MoneyType' is not a class or namespace
ってでる
visualstudio2010だと出来たと思うんだけど、
Eclipse4.3だと出来ない
C++のバージョンによってなんか変わったのかな
0754名前は開発中のものです。
2014/05/13(火) 12:15:46.52ID:D4assd32enum classはC++/CLIだからだろ
Cにそんな構文はない
俺はC++には詳しくないけど実はあるのかな
0755名前は開発中のものです。
2014/05/13(火) 13:16:16.22ID:LR5OHySp0756名前は開発中のものです。
2014/05/13(火) 22:03:52.41ID:VqkITLrD使うところでだけglobal.hをインクルードしてさ
grobal.cpp
int a;
groubal.h
#ifndef _GLOBAL_H_
#define _GLOBAL_H_
extern int a;
#endif
0757名前は開発中のものです。
2014/05/13(火) 23:05:24.12ID:RPOQlcBKわざわざ識別子を _ で始めるなんて沸いてるんじゃない?
0758名前は開発中のものです。
2014/05/13(火) 23:15:35.87ID:dsNPksM90759名前は開発中のものです。
2014/05/13(火) 23:46:55.80ID:VqkITLrDじゃあなんて書くんだ?
0760名前は開発中のものです。
2014/05/13(火) 23:51:06.96ID:dD8wYEBQ慣習的に
0761名前は開発中のものです。
2014/05/13(火) 23:59:25.01ID:VqkITLrDまじかよ
学校でこう習ったよ
何でそんな書き方教えるんだよ
まぁ開発はVSだから#pragma onceしか書かないから知らんかっただけっすけどね・・・
0762名前は開発中のものです。
2014/05/14(水) 00:50:31.19ID:qOCHvgWhつ>>663
ついでにnamespaceにぶち込んでもいいのよ
0763名前は開発中のものです。
2014/05/14(水) 00:53:50.93ID:qOCHvgWhgccでもいつの間にかpragma once使えたりするんだよな
あれ、サッサと標準仕様に盛り込めばいいのになと思うよ
0764名前は開発中のものです。
2014/05/14(水) 01:34:53.87ID:Bv7wzu+p0765名前は開発中のものです。
2014/05/14(水) 02:44:20.77ID:SkdpMvQeIDEによるかもしれん
0766名前は開発中のものです。
2014/05/14(水) 03:12:47.17ID:YePF79fhpragma once は処理系次第で最適化されてるからね。
複数のプラットフォームを想定するなら
安全策をとって両方記述するのがオススメ。
pragma once があれば効率的に処理してくれるかもしれないし、
もしpragma once を理解できない処理系でも
inlude guardは必ず処理してくれるからね。
0767名前は開発中のものです。
2014/05/14(水) 10:10:49.06ID:2wCAVOdx両方記述?寝言は寝て言えw
0768名前は開発中のものです。
2014/05/14(水) 10:25:37.80ID:vvdSHZVH自動生成したヘッダには#pragma onceと#ifndef-define-endifが
コンパイラバージョンによって自動で切り替わるように書かれてたと記憶している
その辺から考えても、両方書くのは無駄じゃない
0769名前は開発中のものです。
2014/05/14(水) 12:46:41.03ID:1doe1mvxtemplate argument 4 is invalidっていうエラーが出ます
具体的には
map<アイテムID(enum型),アイテムパラメータ(struct型)> aaaaa;
って感じです。
パラメータっていうのはその名の通りアイテムを装備するとstructのメンバの
addHPとかaddMPっていう変数の分だけ上昇する感じで、
使い方はプレイヤーはアイテムIDだけ持っておけば、あとは必要な時々で値だけ取得できるかなという感じです。
0770名前は開発中のものです。
2014/05/14(水) 13:13:18.32ID:CAIv9eLRstruct itemParam{int p1; int p2;};
itemParam param;
map<itemID, itemParam> m;
m.insert(make_pair(itemID::ID1, param));
こんな感じで動かない?
0771名前は開発中のものです。
2014/05/14(水) 13:15:39.85ID:Ocn3g8OS比較関数がないって怒られてるんじゃね
一つ目の型を enum型じゃなくて int に変更するわけにはいかないの?
0772名前は開発中のものです。
2014/05/14(水) 14:08:33.50ID:Ke2wFa7k>>733みたいな感じで配列で十分な気がするんだけど
0773名前は開発中のものです。
2014/05/14(水) 15:29:04.69ID:Ocn3g8OS0〜 イベントアイテム
10000〜 武器
20000〜 鎧
みたいに
0774名前は開発中のものです。
2014/05/14(水) 16:29:43.89ID:YPHrxvGY0775名前は開発中のものです。
2014/05/14(水) 21:01:01.54ID:qOCHvgWhそれ、>>770で動きますよ
>>772-774
仮に、実行時に追加削除更新等なし、静的、参照専用、の情報の集合
という前提条件であればstd::map(赤黒木)を使う合理性はあまりないかな
>>773のようにキー番号が連続してないのでれば、ハッシュマップの類の
ほうが向いてますね
http://research.preferred.jp/2011/07/stllike-containers/
補足:記事中のLoki::AssocVectorとほぼ同じものとしてboost::flat_map
もあります。でも、>>774の言う通り、結局vectorでおkにもできますね
ま、完成しない(動かない)事に比べればどれ選んでも瑣末な違いなので
(特に昨今のPCなら)好きなの選べばいいかと思います。身も蓋もないね
0776名前は開発中のものです。
2014/05/14(水) 23:37:56.68ID:XQ3tGmyBenumの最初を0と明示するだけで変わるんです?
0777名前は開発中のものです。
2014/05/15(木) 13:17:04.58ID:vi3A9MFw0778名前は開発中のものです。
2014/05/15(木) 17:35:02.68ID:CM4Haxt/コンパイラのバージョンとかで古いのだと駄目なのかな
0779名前は開発中のものです。
2014/05/15(木) 19:15:22.94ID:D0s76qwM0780名前は開発中のものです。
2014/05/16(金) 15:57:03.11ID:RLWXI/UA0781名前は開発中のものです。
2014/05/16(金) 23:45:36.07ID:bSd/X954ありますよ
navigation mesh pathfinding algorithm game waypoint graph search
など適当なキーワードでググるといいです。動画によるアルゴリズムの
解説も出てきますね。書籍ならAI Game Programming Wisdom 4 が
個人的にオススメです
0782名前は開発中のものです。
2014/05/17(土) 09:32:46.40ID:a+6vW56Rサンプルコードみても理解するのに時間がかかるわ
0783名前は開発中のものです。
2014/05/17(土) 10:01:46.81ID:ATk/Gp35最近の若者は読まないのか
0784名前は開発中のものです。
2014/05/17(土) 11:06:25.43ID:7UqYAydx英語が読めないのは脳が半分無いのと同じ。
それだけのこと。
0785名前は開発中のものです。
2014/05/17(土) 12:01:48.26ID:G1g9tldj0786名前は開発中のものです。
2014/05/17(土) 12:34:45.87ID:/WeYTHrmプログラムは勉強したところでコード書けないのが大半らしいな
元々作文が下手とかそういう次元ではなく理解できないとか
0787名前は開発中のものです。
2014/05/17(土) 12:40:03.20ID:o9p3b0z70788名前は開発中のものです。
2014/05/17(土) 13:44:47.33ID:7UqYAydx半年遅れで付いていく人間は残念ながら奴隷で終わるよw
英語ができて最先端に追従する奴、ときには自分が最先端を発信する奴に
「あ、こいつバカだなww」と思われながら生きる惨めな三流人生が待っている。
それで良ければ英語なんて学ぶ必要はない。
まぁ、普通は(普通の知性の持ち主は、という意味)
修士課程で英語の論文を死ぬほど読んで
「喋れないけど読める」という妙な英語力を身につけられるんだけどねw
0789名前は開発中のものです。
2014/05/17(土) 14:19:53.26ID:ZLhv9Phh0790名前は開発中のものです。
2014/05/17(土) 14:53:46.32ID:k3uAdR/A0791名前は開発中のものです。
2014/05/17(土) 17:55:58.84ID:ZLhv9Phh具体的に何をやってみてどこでつまずいてるのか話せば答えやすくなるかと
0792名前は開発中のものです。
2014/05/17(土) 18:02:04.88ID:G1g9tldjこれじゃあかんのか
0793名前は開発中のものです。
2014/05/18(日) 17:48:20.69ID:bAjzsQ9M0794名前は開発中のものです。
2014/05/18(日) 21:18:36.16ID:uYYY8hgNhttp://marupeke296.com/COL_2D_No8_QuadTree.html
これを3ビット毎にすれば出来ると思うんだがどうだろ
0795名前は開発中のものです。
2014/05/19(月) 04:39:02.31ID:XNC2jE/Yhttp://bituse.info/game/shot/11
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](省略);
}
だったらいけるみたいなんですけど、違いがよくわからないです・・・
0796名前は開発中のものです。
2014/05/19(月) 05:31:35.17ID:FdnDAUlP0797名前は開発中のものです。
2014/05/19(月) 10:00:14.39ID:hjxHIKHc正:ENEMY *enemy[ ENEMY_NUM ];
誤:ENEMY *enemy;
サイトを見ると省かれてるみたいだけど
敵を複数出すようにした時点で enemy を配列に変更しないといけない
0798名前は開発中のものです。
2014/05/19(月) 11:05:51.60ID:CSMuM09V無駄に読みにくいわ
0799795
2014/05/19(月) 11:33:54.01ID:XNC2jE/Yご指摘の通り、enemyを配列にしたら無事にコンパイルできました。
ちょっと私にはわかりにくいサイトだったようなので別のところで勉強してみます・・・
0800795
2014/05/19(月) 11:34:28.24ID:XNC2jE/Yご指摘ありがとうございました。
0801名前は開発中のものです。
2014/05/23(金) 00:32:00.04ID:61iiZtPGC++で作ったリアルタイムなネットワークゲームのオンラインサーバって
どういう環境で動いてんだべ?
ソシャゲならPHPでhttpでいいかもしんねけども、
ネトゲって実行ファイル動かし続けてんのかね
0802名前は開発中のものです。
2014/05/23(金) 00:34:30.27ID:BlMjMm70お前から感じるそのしったか臭は一体何なんだ?
0803名前は開発中のものです。
2014/05/23(金) 01:25:45.01ID:61iiZtPGそんなこと言っても知りたいってのは本当なんだけど
ていうかソシャゲってphpでhttp返してるって聞いたんだが違うのか
ソース3種類ぐらい別のところから聞いたからそうだと信じてたけど
0804名前は開発中のものです。
2014/05/24(土) 14:46:49.15ID:+A5Yp2pd0805名前は開発中のものです。
2014/05/24(土) 14:48:01.39ID:+A5Yp2pdスマートポインタ談義がすっぽり消えたなw
0806名前は開発中のものです。
2014/05/25(日) 20:49:24.73ID:oeSfMRxmC++で作ったゲームサーバーの話は聞かない
普通はPHPとかPerlで作ったHTTPサーバ
他にはUnity for Android製ゲームのサーバをD言語+vibe.dで書いたっていう例くらい
C++のHTTPサーバは国産のこれしか聞いた事無いし商用された話は見たこと無いなw
http://www.treefrogframework.org/ja/
0807名前は開発中のものです。
2014/05/25(日) 21:01:21.64ID:vsrsxORJ0808名前は開発中のものです。
2014/05/25(日) 21:10:04.84ID:NTyQi6H8速度優先だし。
>>806 は国産とか意味不明のこと言ってるし。ソーシャルゲームのことだろ。
0809名前は開発中のものです。
2014/05/26(月) 10:23:40.85ID:GZglaTlb↑w
0810名前は開発中のものです。
2014/05/26(月) 12:15:10.70ID:Pmy7lrM10811名前は開発中のものです。
2014/05/26(月) 23:19:43.69ID:NgiDAGf80812名前は開発中のものです。
2014/05/27(火) 00:18:29.37ID:E4+xEgMz卒論のためのプログラムをPerlで書いたんだよ。
「もしかして俺はアカデミズムの世界で生きられるほど賢くないのかもしれない」
そんな現実に気がつくころ、Perlも衰退を迎えてさ。
なんだか恥ずかしい青春の甘酸っぱい言語だよ。
0813名前は開発中のものです。
2014/05/27(火) 00:28:35.75ID:Cg0Gppa4一行一行、いちいち、ハテナ?と思わせる文章だな。
それが書けるのは>>806とお前くらいだよ。
0814名前は開発中のものです。
2014/05/27(火) 22:23:08.63ID:EKtsf5FUそれはさておき、サーバとクライアントとで同じ結果を出したいってときに、
Haxeを使ったってニュースなら見たことあるなあ
最終的に何言語になったかまでは覚えてないけど
0815名前は開発中のものです。
2014/05/30(金) 20:38:48.50ID:Z7hh6f//0816名前は開発中のものです。
2014/05/30(金) 22:00:59.71ID:3BKqOVuNwebブラウザ用の言語として生き残ってく予感しかしないんだが
0817名前は開発中のものです。
2014/05/31(土) 10:36:34.27ID:q6hYVMUhとうとうネットワークグラフ型に対応したstate machineを導入した。
状態遷移表を作ってみて、当初想定していた状態遷移仕様の複雑さに驚いた!
Game programming gemsの1巻を参考に実装したけど、
一定フレーム(もしくは時間)後に、自動的に遷移させるってどうやるのがいいんだろ。
0818名前は開発中のものです。
2014/05/31(土) 12:27:57.64ID:ROUPLRVK0819名前は開発中のものです。
2014/05/31(土) 13:53:36.95ID:q6hYVMUhレスthx
昔ドラゴンセイバーっていうゲームがあって、
射撃ボタンを押さずに放置すれば、溜め撃ちのエネルギーがたまって、十分にエネルギーがたまった状態で射撃ボタンを押すと、溜め撃ち弾発射っていう仕様があった。
この溜め撃ちを、有限状態機械的に表現すると、
・状態としては:「溜め撃ち不可能」「エネルギー溜め中」「溜め撃ち発射OK」「溜め撃ち発射中」
・入力としては:「射撃ボタン押し中」「射撃ボタン押さずに放置」
となって、
・「溜め撃ち不可能」状態で、「射撃ボタン押さずに放置」を入力すると、「ネルギー溜め中」状態になり、
・「ネルギー溜め中」状態で、さらに「射撃ボタン押さずに放置」を入力すると、そのまま「ネルギー溜め中」状態を維持して、
・「溜め撃ち発射OK」状態で、「射撃ボタン押し中」を入力すると、「溜め撃ち発射中」状態になる。
と適当に考えているんだけど、
問題は「ネルギー溜め中」状態から、「溜め撃ち発射OK」状態に遷移させるのはどうすればいいんだろう?
別途、「射撃ボタン押さずに放置(一定時間経過済み)」っていうFSM入力を新規に用意して、より上の層でタイマー管理して、入力を切り替えるのが良いのかな。
FSMとタイマーを融合させるいい方法はないかなあ。
遷移条件に最小連続入力回数を付け加えた上で、FSM入力の種類を増やして、連続入力回数もFSM入力させて、連続入力回数が、最小回数を上回っている場合だけ遷移させるとか・・・?
もしくは、そもそも上のFSMの定義がよろしくないのか・・・
0820名前は開発中のものです。
2014/05/31(土) 14:23:37.46ID:ROUPLRVKチャージ時間をパラメータとして持たせて不可から溜め中に遷移した時に初期化、ため中に放置で更新、一定値以上ならイベント起こしてOKの状態にする
みたいな感じじゃないとキツイ気がする
0821名前は開発中のものです。
2014/05/31(土) 14:26:46.71ID:TW8rxzzK0822名前は開発中のものです。
2014/06/07(土) 13:54:05.28ID:TPPcHjY+そうするとシングルトンや画面間で共有する変数とか無いってことだよね?
画面切り替わるたびに毎回HDDにセーブしてロードしてるの?
オブジェクト指向っていうとそうなりそうなんだけど
0823名前は開発中のものです。
2014/06/07(土) 14:11:15.61ID:Ug9B4jbc見た目=下部構造なんだな。
そのことを疑いもしない。
65越えるとようやく会話が成立するのだが。
0824名前は開発中のものです。
2014/06/07(土) 14:23:50.69ID:RywayQ4c0825名前は開発中のものです。
2014/06/07(土) 14:32:06.59ID:Hn3ULKCPもっとも会話自体する気無いように見えるけども
>>822
2行目の認識がちょっとずれてる気がする
シングルトンはオブジェクト指向プログラミングにおけるテクニックの一つだから
オブジェクト指向だとシングルトンが無い、なんてことにはならないと思う
共有したいデータは、複数の画面を管理するような寿命の長いインスタンスに入れておいて
各画面が都度アクセスするように作るかな、俺なら
プログラムって基本的に階層構造になってることが多いから、その上位階層で
下位階層で共有するデータを保持しておく、という感じで
0826名前は開発中のものです。
2014/06/07(土) 15:36:17.23ID:E1S3y9cEそれいちいち下位階層(各画面)のクラスに、共有データ保持クラスインスタンスへの参照メンバ変数を追加して、
さらにそれに参照を通すめのメンバ関数追加して、
場合によっては、そのメンバ関数を呼ぶタイミングに気を遣ったりと、面倒くさくない?
俺ならてっとり早くグローバル変数で解決だわw
しかし上記の様な構造が複数存在し得て、抽象化が迫られてるんだったら、
>>825の方法を取るかな
0827名前は開発中のものです。
2014/06/07(土) 16:19:22.33ID:TPPcHjY+これって俺に対して言ってるの?タイミング的にそうなんだろうけど
何言ってるのかさっぱりわからんこれが偏差値の壁か
0828名前は開発中のものです。
2014/06/07(土) 16:23:38.29ID:E1S3y9cEまだまだずっと先の話なんじゃないか
かなわないよなwww
0829名前は開発中のものです。
2014/06/07(土) 16:23:59.67ID:TPPcHjY+やっぱりメモリ上に保存するなら、共有したい階層の上で持つしかないよね
シングルトンはその最上位で必要以上の範囲で共有するから使うなって言われるのかな
0830名前は開発中のものです。
2014/06/07(土) 16:50:22.18ID:Hn3ULKCP「シングルトンを使うな」っていう人は
「グローバル変数は使うな」と言われる理由をよく理解しないで
さらにそれをシングルトンパターンまで勝手に拡大解釈してる人だと思って良いんじゃないかな
つまり聞き流しておk
0831名前は開発中のものです。
2014/06/07(土) 16:57:58.25ID:ZCBLR1T3そうなると、あえて使おうとも思わなくなる。
0832名前は開発中のものです。
2014/06/08(日) 06:13:59.13ID:SH3wdx83グローバル変数的な使い方は副次的な物
って解釈なんだけど
0833名前は開発中のものです。
2014/06/08(日) 09:00:11.27ID:CyDAhGQT■ このスレッドは過去ログ倉庫に格納されています