- 1 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 21:22:08.41 ID:iNm25OoA]
- ゲーム製作におけるC/C++全般に関するスレです。
元スレ DXライブラリ 総合スレッド その12 toro.2ch.net/test/read.cgi/gamedev/1330000532/
- 43 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 00:45:10.53 ID:mZT3BYan]
- >>41
newで確保した領域はdeleteされるまで存在しますよ。 なのでデストラクタ―が呼ばれるまで大丈夫です。 気にしているのは、ポインターdataの寿命かと思いますが、 dataはクラスのメンバ変数なのでこちらも大丈夫です。 dataの初期化はコンストラクタの初期化子でも設定できるみたいです。 こちらの方が初期化として、意味的に正しいのだと思います。 Hoge( UINT n ) : data( new DATA [n] ){}
- 44 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 06:29:42.60 ID:sYTZ8FZ7]
- いろいろ環境や目的もあるだろうからあれだけど
std::vectorやstd::dequeを参照で渡すほうが遙かに楽だと思うぜ まあイテレータの宣言はダラダラ長くてめんどくさいけど
- 45 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 08:26:33.69 ID:qNAXiXfS]
- C++11ならAutoさんが活躍
- 46 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 09:19:00.25 ID:n/ZlLmSI]
- >>43
とても参考になりました! ありがとうございます!! >>44 こっちのほうが楽じゃないですか? 自分の無知から来る疑問ですけど
- 47 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 09:33:53.29 ID:AVLO1dG0]
- 絶対vectorのほうが楽。
new/deleteで神経質になる必要が無いし、配列サイズ変更も楽。 >>37でもいいし、漏れはコンストラクタで Hoge(int num){m_array.resize(num,0);} にする。引数の0は初期値。 あえてvector使わないときは、 せいぜい定数代わりの配列使うときくらいかな?
- 48 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 10:20:14.62 ID:YnP/Ncq+]
- 自分を初心者だと思ってるうちは、STLを安易に使わないほうがいい。
中級者向け。
- 49 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 11:53:20.03 ID:Mn2K1W8a]
- STLこそ初心者向けだろw
- 50 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 12:21:42.12 ID:sYTZ8FZ7]
- >>46
ゲームだとこんな処理したくならない? /** キャラクター一覧 */ int listUp( std::vector< MyCharacter >& v ) { if ( v.empty() ) { Message( "キャラクターがいません" ); return 0; } int s = v.size(); for( int i=0; i<s; ++i ) { Message( v[i].Name ); } return v.size(); }; 配列の操作を経験しとくのはいいことだと思うけど リスク≒デバッグ負荷って面もあるしな 表記が長くなるって程度のめんどくささはあるけどね
- 51 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 13:31:37.34 ID:YnP/Ncq+]
- >>49
入門書にSTLが載っているが、それを理解したら入門者じゃないんだなw とりあえずC++入門3分の1ぐらい読んで、作り始めちゃっているようなやつが初心者なわけで。
- 52 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 14:00:10.53 ID:cjBLATMC]
- Cの本なんてほとんど読んだ事もなくて、STL? vector? インスタンスとかメソッドとか何それ?
な状態でゲームを数本完成させた俺は初心者ですか中級者ですか。
- 53 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 14:11:15.14 ID:0uzx/Lw1]
- ゲームの内容や規模によるだろ
規模が大きくなるにつれて低レベルの処理が重要になるからSTLを選ぶかどうかが重要になる 小規模なら力技で何とかなるし
- 54 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 15:26:20.14 ID:Mn2K1W8a]
- STLを使うのは誰でもできるだろ。
あれと同じ機能のクラスを実装しろってんなら 中級以上じゃないと無理だが。
- 55 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 15:34:03.30 ID:9WXEv1xv]
- >>52
間違いなく初心者
- 56 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 15:35:30.76 ID:/ghVU8JG]
- >>52
他人に自分のコードを説明できなきゃ初心者 他人のコードを読めて理解できれば中級者
- 57 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 18:15:50.25 ID:CY70W+Ee]
- クラスの中に int main()
- 58 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 18:37:54.09 ID:/ZaEqx4s]
- 初級者中級者ぐだぐだ言ってるやつは初心者に決まってるだろw
- 59 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 20:00:14.96 ID:YnP/Ncq+]
- STLは難しいとされてるのが一般的じゃないの?
そりゃプリミティブ型でpush_back()しか知らないで使うならいいけど、 コピーコンストラクタとかスマートポインタに関する 理解をもたないでやったら謎バグに嵌るのが目に見えるわ。
- 60 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 20:11:52.79 ID:qNAXiXfS]
- 別に嵌っても良いんでない?
勉強になるし
- 61 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 20:37:53.40 ID:9WXEv1xv]
- スマートポインタはSTLじゃなくてboost使ったほうがいいよ。
スコープで一時的に使いたかったらunique_ptrでいいけど。
- 62 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 20:49:46.55 ID:IK85TX04]
- STL使うとバグに悩まされるけど、自前でlistだのmapを実装するとバグはないらしい
- 63 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 20:55:53.89 ID:9WXEv1xv]
- いやいやいや、そぉかぁ?www
昔のSTLならともかく、今はそれはないでしょーw ゲームじゃないけど、業務にバリバリvectorとlistとsetとmap使って遭遇しなかったよ。 STLportだけど。
- 64 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 20:59:05.52 ID:iewKyvkB]
- >>62
妄想乙w
- 65 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 21:03:23.03 ID:IK85TX04]
- いや、>>59の主張を言い換えただけなんだが・・・
- 66 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 21:09:15.76 ID:9WXEv1xv]
- 俺にはauto_ptrなどのスマーポインタをわけわからんで使ったときの挙動と解釈した。
STL自体のバグには言及してないっしょう。たぶん。
- 67 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 21:14:13.92 ID:hIKRkdFB]
- STLなんて、std::vectorとstd::mapにstd::string出し入れするだけなら、
解説サイトの例文をコピペするだけで使えるじゃん コピペで定番の処理ができるものについては、 初級のうちからガンガンやっといていい 自分で考えるところが出てくるようなものは、多少プログラムに慣れるまでは 迂闊に手を出さないほうがいいかもしれないけど
- 68 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 21:47:13.31 ID:YnP/Ncq+]
- コピペおまじないプログラムだとこうなる
toro.2ch.net/test/read.cgi/gamedev/1330000532/796
- 69 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 21:55:02.55 ID:8FH0wSaN]
- 仕様を理解せずに使えばどんなライブラリだってバグの温床になるよ。
問題は自分の不勉強をライブラリのせいにする無能さ加減。 原因追及は出来ないけどSTLを使うとバグるとか言う人間はその典型例。 きっちり検証した上で、ここの実装がおかしいとか指摘できるならその限りにあらずだけどね。
- 70 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 23:31:08.11 ID:n/ZlLmSI]
- newしたクラスのメソッドにアクセスして
テスト用の文字出力みて満足してデリートしないでウィンドウ閉じた (´・_・`)
- 71 名前:名前は開発中のものです。 mailto:sage [2012/05/25(金) 00:11:59.72 ID:9i1PDVc5]
- イテレータとか使い出したら初心者が混乱するのは分かるが、
vectorくらいなら初心者でもぽんぽん使っていいと思う。 インスタンス管理で躓くならstl云々ではなくてC++の勉強しなおしが要る。 >>70 あー、これどうなるんだろうな。 最近のOSだと良い感じにしてくれそうな感じはするが。
- 72 名前:名前は開発中のものです。 mailto:sage [2012/05/25(金) 01:55:38.79 ID:GIl7/nNl]
- Bjarne Stroustrup インタビュー
www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
- 73 名前:名前は開発中のものです。 mailto:sage [2012/05/25(金) 05:50:35.88 ID:7a2EC8PQ]
- >>70
>ウィンドウ閉じた プロセスを閉じればプロセスで使っていたヒープは解放される。 つまりメモリリークはプロセスの内側のこと。
- 74 名前:名前は開発中のものです。 mailto:sage [2012/05/25(金) 07:37:23.51 ID:NHlde/d0]
- 碌に作ったことないけどmainクラスからtitleとかgameとか呼び出してその中でwhileループ、
クリアとかしたらmainに戻ってまた他の項目呼び出すのが簡単に出来そうだな
- 75 名前:名前は開発中のものです。 mailto:sage [2012/05/25(金) 18:21:37.17 ID:AwX4C6l5]
- >>72
懐かしいパロディ
- 76 名前:名前は開発中のものです。 [2012/05/26(土) 14:19:42.97 ID:e8/fGbGH]
- シーンクラスのコンストラクタに、シーンクラスのアドレスを保持するクラスのコンストラクタに渡すことはできるでしょうか?
また、する方法はどうしたらいいでしょうか? ↓イメージだとこんな感じです class abc{ praivate: def* hoge; public: abc(){ def = new def(this*); } ~def(); }; class def{ praivate: abc* hogu; public def(abc* tmp):hogu(tmp){} };
- 77 名前:名前は開発中のものです。 mailto:sage [2012/05/26(土) 14:24:06.06 ID:U5Ue5qkT]
- class defの前方宣言をclass abcの定義前に置く
- 78 名前:名前は開発中のものです。 [2012/05/26(土) 14:24:19.28 ID:lwTzxCQ6]
- >>76
class abc{ の前に class def; を追加すれば出来る。
- 79 名前:名前は開発中のものです。 [2012/05/26(土) 14:35:04.98 ID:e8/fGbGH]
- あ、順番間違えました
コンストラクタの引き数にthis*は、文法としてあってる?
- 80 名前:名前は開発中のものです。 [2012/05/26(土) 14:39:08.15 ID:lwTzxCQ6]
- *thisに直すべし
- 81 名前:名前は開発中のものです。 [2012/05/26(土) 14:49:54.86 ID:e8/fGbGH]
- >>80
ありがとう
- 82 名前:名前は開発中のものです。 mailto:sage [2012/05/26(土) 14:51:45.38 ID:jFmnTHnO]
- thisでポインタ
- 83 名前:名前は開発中のものです。 mailto:sage [2012/05/26(土) 21:13:49.29 ID:U+nTXa0c]
- >>77 >>78 できるか?
引数付きコンストラクタを宣言できないからダメだと思うが。 前方宣言すべきはabcのはず。 class abc; class def{ public: def(abc* pABC){} }; class abc{ public: abc(){ abc* pThis = this; def* pDEF = new def(pThis); } };
- 84 名前:名前は開発中のものです。 mailto:sage [2012/05/26(土) 22:42:16.01 ID:U+nTXa0c]
- .h と .cpp 分けるのは必須だな。
- 85 名前:名前は開発中のものです。 mailto:sage [2012/05/26(土) 23:10:07.09 ID:5tO+iNJs]
- 初心者を装って引っかけ質問してる臭い
>>83 正しいと思うが、俺ならテンプレート使いたくなるな template < class T > class Class1 { public: T * c2; Class1( T * caller ) { c2 = caller; }; virtual ~Class1() {}; }; class Class2 { public: Class1<Class2> * c1; Class2() { c1 = new Class1< Class2 >( this ); }; virtual ~Class2() { delete c1; }; }; 連絡クラスか上位クラスで連携すべきだよね
- 86 名前:名前は開発中のものです。 mailto:sage [2012/05/27(日) 00:26:41.53 ID:ByeFImNB]
- オンライン対戦ってどうやるんですか
- 87 名前:名前は開発中のものです。 mailto:sage [2012/05/27(日) 01:22:42.60 ID:jTp1UMkC]
- C/C++関係ねえw
ネットワーク接続機能のあるライブラリ使う
- 88 名前:名前は開発中のものです。 mailto:sage [2012/05/27(日) 08:50:30.87 ID:2c7du0Oa]
- DirectPlayとか。
- 89 名前:名前は開発中のものです。 mailto:sage [2012/05/27(日) 09:48:40.07 ID:Sq25nKDW]
- VCって何年版がおすすめ?
- 90 名前:名前は開発中のものです。 mailto:sage [2012/05/27(日) 10:22:53.21 ID:DTmcX9vm]
- C++11触りたいなら2010、それ以外は一長一短
- 91 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 07:40:52.97 ID:uR2hVdYz]
- オンラインはな…鯖がな…
- 92 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 07:56:12.09 ID:RkjNhW6P]
- いきなりですが2Dエフェクトってどういう作り方してますか?
数枚画像を用意して、あとはプログラム側で加工するのか、 元から透過画像とかを全部用意して表示するだけなのか…一般的なのはどれだろう
- 93 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 08:10:15.29 ID:IVkwT0S2]
- >>89
特に理由がなければ最新でいいと思うよ 古いバージョンだと色々と対応してなくて面倒 >>92 グラフィック用意して透過や加算で表示
- 94 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 09:37:38.39 ID:8NkasfYy]
- >>92
スピード的にエフェクト画像は元から用意しとくべき。 ランタイムでは位置とスケールと透過度を変えるくらいだな。
- 95 名前:名前は開発中のものです。 [2012/05/29(火) 00:47:50.68 ID:ajD2ZMcH]
- marupeke296.com/TIPS_No13_ClassArrayInitialize.html
ここの一番下のplacement newを使ってクラス配列にコンストラクタを使いたいんですけど 一番下って動的に増減できないですよね? クラスAのコンストラクタで、動的に他のクラスB配列(Bコンストラクタによる初期化機能付き)をインスタンス化するにはどうしたら良いでしょうか? クラスBを、クラスAのコンストラクタの引数分、配列にしてメンバにしたいです。
- 96 名前:名前は開発中のものです。 [2012/05/29(火) 03:11:27.66 ID:ZvK6euHz]
- ここの来ると
「寄ってくるな」「来るんじゃねえよ」 こないと、何故かちょっかいが来る 不思議なもんだ
- 97 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 03:34:23.96 ID:ZvK6euHz]
- ホモ本ばっかだけど
男だったんだっけか?
- 98 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 04:04:39.91 ID:ZvK6euHz]
- なんでBLなんだよ orz
- 99 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 05:58:59.29 ID:WcnaYjLE]
- >>95
動的に確保するなら、そもそもBの引数無しコンストラクタ使う必要ないんじゃない? Aのコンストラクタの引数で配列のサイズ受け取って、 Aのコンストラクタ内でその分だけBを作ればいい でも、メモリ管理面倒になるから普通にvector使ったほうが楽だよ
- 100 名前:名前は開発中のものです。 [2012/05/29(火) 08:36:02.60 ID:ajD2ZMcH]
- >>99
Bを、Aのコンストラクタの中でBのコンストラクタに引き数を渡して、初期化をしたかったんですが iniメソッドを別で作ったほうがいいですか?
- 101 名前:名前は開発中のものです。 [2012/05/29(火) 08:36:41.71 ID:ajD2ZMcH]
- vector(´・ω・`)・・・
- 102 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 09:06:33.41 ID:HdwzMGJO]
- vectorでポインタ持たせた方がずっと良い。
動的なサイズ変更とか楽だし。 コンストラクタでnewしてデストラクタでdeleteすれば 別にインスタンス管理で悩むことも無いし。
- 103 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 09:12:31.28 ID:WcnaYjLE]
- >>100
Aのコンストラクタ内で m_b = new B[size]; for (int i=0;i<size;i++) m_b[i] = B(b); とすればいいと思うけど、俺なら確実にメモリリークする自信がある
- 104 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 09:37:49.28 ID:8hClbexe]
- >>103
sizeをconstにすれば大丈夫な気がしてきました! ありがとうございます!
- 105 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 11:11:05.67 ID:kEO6PQW4]
- そもそも同じ引数でいいなら配列版のplacement newてのがあってだな
delete要らないったってデストラクタに意味があるとか使わなくなったから消したいときは デストラクタとplacement deleteを両方呼ばなきゃいけないし 結論としてvector使え、管理面倒ならvector<shared_ptr<T> >
- 106 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 11:31:41.26 ID:HdwzMGJO]
- vectorだと要素数が固定じゃなくても、size()があるしね。
別のコンテナでもイテレータがあるし。 頑なにvector回避する理由なんて無いだろ。
- 107 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 11:54:40.08 ID:0OI7v8Tb]
- そもそもSTLを回避してる理由ってなに?
- 108 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 13:18:32.52 ID:3ho6bi3y]
- コピーコンストラクタが分かっていないとか、
デストラクタの呼ばれるタイミングを理解していないとか、 メンバのポインタがコピーされて二重解放するとか、 仕様を分かっていない馬鹿がバグを出すには十分だからだろう。 無能だからSTLを使わない、その理由に疑問の余地は微塵も無い。
- 109 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 14:08:39.03 ID:ydqxZFnO]
- 言えてる気がする。
俺もどっちかっつーと馬鹿な方だから、STLが怖くて 自作のコンテナ使ってる。 出来合いのものを使った方が機能も多くて堅牢で ずっと良いんだろうけどさ。
- 110 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 16:51:46.79 ID:HdwzMGJO]
- >>109
漏れも最初はそうだったけど、使い始めると一瞬で慣れるよ。 ググったら日本語で解説や使用例が山ほどヒットするのがデカイ。
- 111 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 17:43:50.08 ID:uK14SeXM]
- STLごときで上級者気取る奴は明らかに初心者
- 112 名前:名前は開発中のものです。 [2012/05/29(火) 17:47:49.24 ID:ajD2ZMcH]
- >>103
これってコンストラクタ?? 引き数を渡してるの?
- 113 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 18:28:57.24 ID:WcnaYjLE]
- >>112 >>103
Aのコンストラクタ内で、Bのコンストラクタに引数渡して初期化してる m_b … Aのメンバ変数のBの配列 size … Bの配列のサイズ。Aのコンストラクタの引数とか b … Bのコンストラクタの引数
- 114 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 18:35:32.92 ID:ajD2ZMcH]
- >>113
コンストラクタの返値を代入してるように見える・・・ 「コンストラクタは特殊で、こういう使い方もできる」 って理解でいい?
- 115 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 19:06:36.23 ID:CIJM7t3P]
- 一時オブジェクトをコピーコンストラクタでコピーしてる
- 116 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 19:12:41.63 ID:ZxX1trWI]
- むしろそっちのやり方のほうがSTLコンテナより高度
- 117 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 19:18:19.05 ID:CIJM7t3P]
- いやどっちも全然高度じゃないし
- 118 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 19:33:39.81 ID:oMsrWIHY]
- メモリプール&自作動的配列か
- 119 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 19:36:33.07 ID:HdwzMGJO]
- 俺もさっぱりわからん。placement_newとかなんぞやw
オブジェクトの配列なんて普段STLコンテナしか使わないですしおすし
- 120 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 19:58:54.63 ID:5CsBVBDy]
- 新しい大統領ってことだよ
- 121 名前:名前は開発中のものです。 [2012/05/29(火) 20:55:06.94 ID:ajD2ZMcH]
- >>115
なるほど! あと最後に質問なんですが B(b)って実態できないですか?
- 122 名前:名前は開発中のものです。 [2012/05/29(火) 21:06:49.97 ID:ajD2ZMcH]
- これはできるのでしょうか?
class krasuA{ int hoge; kurasuB* B; kurasuA(int tmphoge):hoge(tmphoge){ for(int i=0;i<hoge;i++){ new(&hugo+i) B(/*Bのコンストラクタの引き数*/); } } }; ↓これをちょっと変えたんですけど marupeke296.com/TIPS_No13_ClassArrayInitialize.html
- 123 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 21:23:59.83 ID:5MrgPwME]
- placement new とか 引数付きコンストラクタはできれば避けたほうがいいな。
- 124 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 21:36:10.64 ID:5MrgPwME]
- >>122
できないよ。全くもっておかしい。
- 125 名前:名前は開発中のものです。 [2012/05/29(火) 22:13:10.43 ID:ajD2ZMcH]
- 間違えました
hugoじゃなくてBでした
- 126 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 22:27:07.32 ID:ajD2ZMcH]
- あ、違う
new(&B+i) kurasuB(/*Bのコンストラクタの引き数*/); こうでした。 int型を足すのがよくわからないですが、リンク先の文章ではクラスの配列をintでずらしてましたし・・・
- 127 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 23:19:35.98 ID:Rb8xQrUK]
- こうやって理解しないままでたまたまコンパイルできちゃったときにバグが蓄積されていくわけだな
- 128 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 23:27:07.76 ID:CxAL5fmd]
- どうも2Dキャラの画像パターンが早いと思ったら>と<が逆だった、紛らわしい
ifとかだと逆になるんだっけ
- 129 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 23:41:16.87 ID:ajD2ZMcH]
- *kurasuB B;
int Bnum kurasuA(int num){ Bnum=num; for(int i=0;i<num;i++){ B[num] = new kurasuB("aa"); } } これじゃダメっていう
- 130 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 00:30:51.36 ID:2jOUDrUI]
- 悪いことは言わん
Placement newのことはひとまず忘れるんだ
- 131 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 01:33:55.24 ID:UrD0aw2e]
- 配列とポインタが全然わかってないのが致命的。
もっと初心者向けのやり方でやれ(つまり初期化の関数作れ) int karasu_num = 100; Karasu* karasu_list = new Karasu[100]; for(int i=0;i<karasu_num;i++){ karasu_list[i].Initialize("oh...yea...oh...yes...!"); }
- 132 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 01:47:19.26 ID:UrD0aw2e]
- ちなみに placement new だと。
for(int i=0;i<num;i++){ new( B+i ) kurasuB( "aa" ); }
- 133 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 07:05:58.24 ID:ZKjgmpWL]
- で、それが出来るとどんなゲームが作れるの?
- 134 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 07:48:00.61 ID:UrD0aw2e]
- 無能には作れないゲームがつくれます
- 135 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 08:22:42.69 ID:1zhA8gll]
- >>131
じゃあ>>132のほうが簡単じゃないですか numをconstにすれば多分安全ですし・・・
- 136 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 08:28:13.88 ID:NLDozPhE]
- CRASS **Crass;
Crass = new *CRASS[Num]; for(i=0;i<Num;i++) { Crass[i]=new CRASS; }
- 137 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 08:37:55.19 ID:kfkMhAbK]
- 少々くどいな
そろそろ他の話題が出てこないかな
- 138 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 08:54:24.92 ID:dGAr2JTI]
- 非ポインタ配列・コンストラクタで初期化値渡す、ってのに拘ってたら
何時までたってもゲーム作れんぞ。 コーディング中にゲームデザインの見落とし・見直しで嫌ほど悩むのに。 ポインタでの管理が安全じゃないって思うのは単に理解不足。 九九の答えが合ってるか分からないから足し算で計算するのと同レベル。
- 139 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 09:35:26.80 ID:AhB/MNAS]
- 動いたとしてもメモリリークしまくってそう
- 140 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 09:52:37.13 ID:UrD0aw2e]
- >>135
俺がそちらを進めるのは彼がポインタや参照を理解してないとみたから。 質問の文からみて非常に程度が低い。 とりあえず無難なやりかたで進めながら勉強するか、一生無理だね。。
- 141 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 10:10:01.57 ID:RKjVMfvb]
- ポインタと参照がわからずつかえないなら
VBでやったほうがわかりやすいし生産効率あがるとおもう VBで不便に感じたことがCのポインタで便利になったと思え 理解がはやいんじゃないかな
- 142 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 11:23:54.10 ID:PCmhSwHy]
- >>140
それぼくです(´・_・`)
- 143 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 15:00:40.72 ID:7evXqAvV]
- 少し前までシーン遷移は継承したクラスのポインタでやってたが
最近テンプレートの特殊化を知って少しずつ処理を置き換えてる 多少手間増えるけど、コンパイル時にエラー出してくれるのはやっぱいいね
- 144 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 15:48:03.89 ID:RKMJ5hGw]
- >>149
具体的にどんなん?
- 145 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 16:08:58.02 ID:P0UtVE4F]
- みんな頭良さそうだな、俺なんて順次選択繰り返しのゴリ押しだけでゲーム作ってるのにCプログラマ名乗ってるわ
- 146 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 17:46:30.28 ID:UOZ4aZwc]
- ぶっちゃけ画像と音声と条件文あればどうにでも
- 147 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 17:58:02.14 ID:dGAr2JTI]
- この板ではC++だろうがHSPだろうがツクールだろうが
ゲームを完成させるのが一番大事。 ただ、C++選んでる奴は既存のシステムや 枠組みに囚われたく無い奴が比較的多いんだろうな。 となれば、それを実現するために 必要な知識や技術も自ずと増えていくわけで。
- 148 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 17:58:19.30 ID:rNjTrxi5]
- ジェネリックプログラミングか
本当に使いこなせるのは天才だけだと思ってる
- 149 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 21:43:05.95 ID:GqVx2abs]
- 言語によって、
遅くて1秒間60フレ出ないとかGC対策が面倒とか、 ライブラリ自体に制約があってやりたいことができないとか、 いろいろ制約あるけど、まぁC++とDXライブラリならそういう制約は少ないから選んだわ 知識や技術は別に特別なものは必要ないと思ってる 他の言語と共通する程度と、あとちょっとC++独自のを知ってる程度で十分かと
- 150 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 21:51:08.88 ID:0SZX+VUb]
- >>149
で、ゲームできたの?
- 151 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 22:10:25.90 ID:P0UtVE4F]
- この板の中じゃどこ行っても万能すぎるお決まりの文句だよな
- 152 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 22:35:35.79 ID:GqVx2abs]
- >>150
鋭意製作中w
- 153 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 22:58:58.18 ID:vC8mOnYT]
- 一番簡単なのってHSP?DX?
- 154 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 23:03:34.46 ID:GqVx2abs]
- 小さい仕様であればあるほどHSPのほうが簡単になる
規模が大きくなって、HSPだとめんどくせーってなったらDXライブラリもいい
- 155 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 23:10:22.61 ID:dGAr2JTI]
- HSPってクラス扱えないんだよな?
俺には無理w
- 156 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 23:11:36.82 ID:gc4Q0khA]
- >>151
でも、他人があえて言う意味って無いよな
- 157 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 23:14:19.90 ID:e5z2kRn1]
- モノを完成させたことも無いヤツが、かじった程度で御託を並べるなと言うことだろう。
- 158 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 23:28:49.34 ID:GqVx2abs]
- ま、そういうこったなw
小さい仕様のは作ったけど今作ってる奴は完成してないからな
- 159 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 00:03:48.81 ID:qSE9w4FD]
- javaとかC#でゲーム作ったことないのにGCがどうこうとかね。
C++の80%が遅いのに、遅いDXライブラリを使う不思議。
- 160 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 00:09:04.71 ID:3lgmsZci]
- 作った作ってないって言っても0か1じゃねーんだし。
俺は数本ほど2Dゲームを作った経験があるけど、「どうせミニゲームだろ」と思われるだろうだけだろう。 ぶっちゃけミニゲームかそうでないかは、データ量の違いがほとんどを占めると思うけどw
- 161 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 00:09:52.31 ID:X2kmab9H]
- 横アクション作ってるんだけどジャンプ中に移動が出来なくて困った
ジャンプ処理と移動処理はやはり両方通るようにしないとダメか
- 162 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 01:16:53.38 ID:3lgmsZci]
- 本来、ジャンプ中に移動できるほう(いわゆるスーパーマリオジャンプ)がおかしいんだけどねw
- 163 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 06:17:31.08 ID:k8PTBoUk]
- 魔界村はジャンプ中に移動できないが、
あれはプログラマが初心者だったからなのか・・・
- 164 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 07:18:02.09 ID:M5YppKNB]
- まあジャンプの出来に関しては作り手のこだわり次第だろ
デコジャンプで面白いゲームもあれば放物線でもつまらないゲームもある
- 165 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 08:43:38.66 ID:98ut8STl]
- ジャンプはステージのデザインと切り離しては考えられないしな
C++は処理速度・ライブラリの豊富さ・エラーチェック・日本語がまともに通る、点に魅力感じるなぁ HSPは「メインループとはなにか?」ってレベルの勉強には使えるかもだが、それ以降は・・・ >>160 そういやミニゲームって何だろうな RPGの中にポーカーが入っていれば明らかにミニゲームだが ではポーカーゲームはミニゲームなのか? とか。まあスレ違いだが
- 166 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 20:55:45.16 ID:qCagfYPX]
- リアルでないこと、現実シミュレーションと違うことが、
ゲームの面白さに繋がることもあるよな と思ったがこれもまぁスレチか
- 167 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 21:53:32.35 ID:AsMcXKmB]
- 繋がることもあるってなんだよw
現実シミュレーションが面白さに繋がってるゲームなんて一握りしかないだろう だったら現実でやれって話
- 168 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 22:44:36.71 ID:qCagfYPX]
- 放物線・現実シミュレーションが面白いゲームもあるし、
ジャンプ中に移動できるジャンプが面白いゲームもある 片方が一握りしかないとか、前者をやれ、とかは思わんなあ
- 169 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 23:12:19.50 ID:tiWdIkDb]
- 現実でFPSをやったら殺人罪になるし、
カーレースをやったら事故死か白バイのお世話になるし、 ジャンプアクションをやったら転落死するし、 恋愛シミュレーションをしたら変態になる。
- 170 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 23:38:40.80 ID:CSiaqjKe]
- おまいらはboost使ってる?
- 171 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 23:41:56.86 ID:XVqRqiij]
- なんですかそれは
- 172 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 23:49:58.12 ID:aJXCPyxU]
- >>170
ゲームそのものでは、あんまり使った記憶ないなあ。 それ以外だと正規表現とか使いまくってるけど。
- 173 名前:名前は開発中のものです。 [2012/05/31(木) 23:56:05.31 ID:uky8HTVF]
- DXLibとか時代遅れのライブラリなんかより
OgreとかBulletとか使ってるひとおらん? 今はまあC++とかよりUnityやunreal engineの時代なのかもしれんけど
- 174 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 00:06:38.86 ID:2hjVHnyz]
- 流行に流されない俺様は自前ライブラリを使っていますよ?
人間、使い慣れた道具が一番でしょ。
- 175 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 00:18:08.05 ID:jiOBWGhf]
- unityとか何それ、美味いの?レベル。
物理エンジンはとにかく、 他はインターフェースの面でしか楽にならんでしょ。 インターフェースのウェイトが重めのゲームとは縁が無い。
- 176 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 00:22:36.93 ID:TU92J+Oa]
- >>173
ogreは機能豊富だけどapiデザインはもう時代遅れ 対応プラットフォームも最近だと物足りない あえて今使う理由はないかな
- 177 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 00:23:33.07 ID:jiOBWGhf]
- >>172
なんか使えそうで使わないんだよね。 最近、シリアライズで使おうと思ったんだけど、 随分ややこしそうな処理してるんで結局やめた。 スマポで使ってる話は聞くけど、俺スマポ使わんし。
- 178 名前:名前は開発中のものです。 [2012/06/01(金) 00:27:03.18 ID:fycJbMU0]
- >>176
今だとC++ではどんなのがタイムリーなの?
- 179 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 00:57:23.11 ID:GysQPsBs]
- >>176
具体的にどの辺りが時代遅れなの?
- 180 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 03:56:37.85 ID:bIBm1EvQ]
- >>169
それらが現実シミュレーションだって?冗談だろw
- 181 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 06:12:45.95 ID:YzCF0h/I]
- >>175
unity以外にwin, mac, ps, xbox, iphone, androidに対応してる エンジンなんかあるのか?
- 182 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 07:14:24.44 ID:2hjVHnyz]
- 急にステマがわいてきたな
- 183 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 07:18:32.15 ID:U3o9Kj54]
- >>170 Xpressive使ってる
>>173 Irrlicht使ってる。新しくはないが素直でいいエンジンだと思う 日本語には弱いけどね RPG作ろうとしてるんだがゼロから作るとデータの保存・読み出しが面倒だ Xmlで保存しちまうかw
- 184 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 08:00:25.82 ID:LAk2EFKF]
- >>181
そんなに対応する必要あるの?
- 185 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 08:24:20.72 ID:zQI52x1x]
- >>184
macはいらないけど、その他は必要でしょ。
- 186 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 08:35:27.13 ID:TU92J+Oa]
- >>181
shiva + marmaladeならもっと範囲は広いのではないかと思うが、 marmaladeのゲーム機サポートは最近情報が隠れ気味... 今はideaworkgamestudioチームによる個別移植が必要なのかも。昔はそんなことなさそうだったのだけれど。
- 187 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 08:42:49.00 ID:46HM1XVZ]
- >>185
winか携帯だけでいいんじゃね インディーズでxboxならxnaのほうが楽につくれるし ps3は会社で専用やつがきまってることがほとんどだし
- 188 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 09:55:01.79 ID:jiOBWGhf]
- >>181
現状、windows向けにしか興味ないですしおすし
- 189 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 10:00:27.62 ID:XmKAMpEh]
- Ogre触っているけどそれよりもナウなライブラリがあると聞いて
- 190 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 10:19:57.82 ID:TU92J+Oa]
- >>189
gritとかmaratisとか 機能面ではogreユーザーには不足かもね
- 191 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 11:52:56.10 ID:3z3bXcMg]
- 海外のゲームエンジンはメジャーなものでもフルスクリーン切り替えができないものがあって驚く。
>>190 gritは内部でogre使ってるって書いてるような。
- 192 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 13:51:27.62 ID:TU92J+Oa]
- >>191
内部で、ね
- 193 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 14:10:59.17 ID:fDBKT1KS]
- >>190
ありがと、今度みてみるわー
- 194 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 18:30:36.97 ID:o2lhntQH]
- フルスクリーン対応って今更必要か?
液晶モニタももはや新品はHDしか売ってないし、規格は統一されてないみたいだし
- 195 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 18:34:50.83 ID:JwZ2BVqY]
- C/C++と関係するかは微妙だが…
コアなプレイヤーからの要望があって初めて搭載を検討するくらいでいんじゃね
- 196 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 18:43:21.55 ID:yH+d3ni3]
- その場合ティアリングはどうしてるんかな?
- 197 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 18:51:16.02 ID:a4OlxP0h]
- >フルスクリーン対応って今更必要か?
少なくとも俺はフルスクできないゲームはやる気がかなり減退する。 目が悪いからできるだけでかい画面でやりたいし、 全てのPCユーザーが最新環境もしくはそれに近いスペックの環境でやってるわけではない。
- 198 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 19:15:04.43 ID:/NYjtNV7]
- PS3でゲームアーカイブスを遊んだり、3DSでDSゲーを遊んだりするとき、
画像サイズを無理やり引き伸ばすか、それとも整数倍(1倍含む)にしてレターボックスにするか設定できたりするけど、 前者の需要はかなり多いと聞く。
- 199 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 20:07:09.97 ID:JwZ2BVqY]
- 画像サイズを任意サイズに引き伸ばすのは割と優先度高い機能と思う
フルスクリーンなしでも、画像引き伸ばしのほうは必須に近いかと
- 200 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 21:11:23.06 ID:Fx7ZWIqp]
- 液晶ディスプレイが普及している現在、最適解像度以外に変更するようなフルスクリーン化をするぐらいなら、
最上位ウインドウを全体に展開して、プログラム側で画像を調整するべきだろう。
- 201 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 22:32:20.69 ID:myF5RtO5]
- 全てのプレイヤーが「最適解像度」を意識してるわけじゃない。
そんなの一部のマニアくらいだ。 「最上位ウィンドウを展開して〜うんぬん」ができるのは良いとして それとは別にフルスクリーンモードをできるようにすればいいだけなのに それをしないのは作り手の怠慢だ。
- 202 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 22:51:41.46 ID:j4ElIJFU]
- 4:3の映像を16:9に引き伸ばしてデブったキャラに違和感を感じないんだろうか・・・
上下移動より左右移動の方が速かったり・・・
- 203 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 22:58:05.13 ID:JwZ2BVqY]
- 1)「フルスクなし、引き伸ばしなし」 →NG
2)「フルスクあり、引き伸ばしなし」 →NG 3)「フルスクなし、引き伸ばしあり」 →OK 4)「フルスクあり、引き伸ばしあり」 →OKだがそこまで手間かけなくてもいいよ こんなとこ
- 204 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 22:59:09.90 ID:QK2zXOEH]
- 解像度やアスペクト比って
それなりに柔軟に対応出来るように作るもんじゃねーの…? と思ったけど完全2Dゲームは黒縁いれなどうにもならんのかね
- 205 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 23:02:11.37 ID:myF5RtO5]
- フルスクリーンってひょっとしてディスプレイの大きさに完全一致させる事を言ってるのか。
フルスクリーンを望む人間がそれを望んでいると思うのか。 黒縁ありでアスペクト比優先に決まってるじゃん。
- 206 名前:名前は開発中のものです。 mailto:sage [2012/06/02(土) 23:04:55.36 ID:JwZ2BVqY]
- ・ゲームの解像度が画面の解像度に比べて小さすぎてプレイに支障をきたす
・アスペクト比が違っていてプレイに支障をきたす この2点について対策するのは、必須に近いな 引き伸ばしできればこのあたりはできる
- 207 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 00:23:21.31 ID:3U3UPjhL]
- スレ違い
- 208 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 01:12:58.58 ID:aP5ZetOZ]
- javaでAndroidSDK触ってきたけどなんだアレ難しすぎワロタ
- 209 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 01:13:07.02 ID:v/OzWZ4D]
- 対応できる言語が他にはあまり無いだろ
全く無いとまでは言わないが
- 210 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 01:13:34.79 ID:aP5ZetOZ]
- やっぱC++でコードいじってる方が性に合うわ
- 211 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 08:47:32.70 ID:UydZV2Td]
- 3Dゲームなら4:3にも16:9にも対応してないと困る。
3D部分はカメラのパラメータいじるだけだし。 GUIのレイアウトがちょっと面倒だが。
- 212 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 09:19:16.35 ID:v/OzWZ4D]
- Windows2Kも見捨てた事だし、4:3も見捨てるかな?
どうせ完成までには時間もかかるし
- 213 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 09:29:33.79 ID:UydZV2Td]
- 4:3モニタだと香港映画のエンドロールみたく縦長になるの?w
- 214 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 09:52:01.34 ID:XtOj+Vwn]
- DbD、アス比固定、全画面の選択はビデオカードもしくはディスプレイの仕事だから下手に弄る必要ないよ
例外として、ドット絵系のゲームが拡大されてぼけぼけになるのを防ぐために必ずゲーム側でNN法で拡大したいとか、 画面の大きさによってゲーム内で見える範囲を変えたいとか、3DならGUIの大きさだけ小さいままにしたいとかなら弄らないといけないけどね 「画面が小さいからプレイに支障をきたす」ということで拡大したいならゲーム側での処理は一切必要ない もちろんフルスクリーンとウィンドウモードを切り替えるオプションは必要だけどな
- 215 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 10:29:18.59 ID:VQ0xfCpl]
- スレ違いか微妙なところだな
ブラウザゲーでは考慮のいらない部分だし C/C++以外の環境ではあまり問題にならない部分か 個人的には、ゲーム側に拡大機能がついてないと困るわ わざわざ拡大するフリーソフトが存在する理由はそれだし しかも、そのソフトでも拡大できないゲームとかあったりして困るわ
- 216 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 10:35:05.15 ID:cJiiOnF4]
- 2Dエフェクトとか3Dエフェクトって作るの難しいな…微妙な差が違和感を産む
もしかして自分で作成ツールとか作るのが普通なのか?
- 217 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 10:41:19.26 ID:J6YmoIaF]
- >>216
モンハンのような血しぶきがつくれなくてこまっています
- 218 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 13:25:57.94 ID:XtOj+Vwn]
- >>215
普通のPCならグラボかモニタで設定できるだぞ? 5年以上古いビジネス用途のノートパソコンとか使ってるんだろうが ゲームするならまともなやつに買い替えたほうがいいよ
- 219 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 14:07:41.96 ID:4q6OEElb]
- >>218
そういうもんなのか、初耳だった
- 220 名前:219 mailto:sage [2012/06/03(日) 14:29:44.36 ID:4q6OEElb]
- ああ失敬、フルスクリーンでか。
拡大機能っていうからウィンドウモードでの話かと思ってた。 それならグラボなりモニタ任せってのは1つの方法だよね。 多くのモニタ/グラボが対応してる解像度を選ぶなら、1920x1080とかになっちゃいそうだけど…。 つい最近、昔の320x240のゲームをフルスクで起動したら、見事に真ん中に小さく表示されてしまったのを思い出した。 洋ゲーとかその辺しっかりしてる印象があるけど、デュアルモニタ絡みになると結構バラバラのような。
- 221 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 15:52:09.21 ID:XtOj+Vwn]
- 対応してる解像度って何の話してんだ?
どんな解像度だろうがスケーリングはできるだろ >つい最近、昔の320x240のゲームをフルスクで起動したら、見事に真ん中に小さく表示されてしまったのを思い出した。 これはスケーリングの設定をDbDにしてるからだろ 嫌なら他の設定にすればいいのに意味がわからん
- 222 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 16:03:02.78 ID:/Di23sVK]
- >>217
赤い点をばら撒くだけでいい
- 223 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 16:29:41.17 ID:dCvIbGe4]
- newとかmallocでちゃんとエラー処理してる人っている?
ってかメモリ確保失敗って実際問題起こる?
- 224 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 17:56:48.59 ID:v/OzWZ4D]
- エラー処理って言ってもログ出すぐらいだな。
ちなみに、細かい動的メモリー確保で起きるフラグメンテーションには自前でGC作って対応した。
- 225 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 19:26:32.14 ID:lfTPN7Pn]
- 起きないだろ。
メモリ足りなきゃOSがHDD使って仮想メモリをいくらでも作るはず。 それにプレイヤーが推奨動作環境でプレイしていれば まずメモリが足りなくなるはずないし、普通は必要ない。
- 226 名前:名前は開発中のものです。 [2012/06/03(日) 21:00:29.34 ID:v/OzWZ4D]
- VCのヒープメモリーのサイズは10Mしか無いって知らないんだね
ちなみにnewやmallocはヒープメモリーだ それ以上のメモリーを取得しようと思ったら、VirtualAllocを使わないと駄目だよ
- 227 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:14:18.66 ID:v/OzWZ4D]
- 間違えた。ヒープのサイズは1Mだった。
- 228 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:20:15.72 ID:ufFTQ137]
- スタックサイズと間違えてるだろ明らかに・・・
- 229 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:22:27.91 ID:Y5aEM5Jb]
- >>226
そんな事実はない。VirtualAllocのがぎりぎりまでとれるのは事実だけど管理も全部自分でするはめになるぞ
- 230 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:26:33.66 ID:Y5aEM5Jb]
- >>228
いや、初期値はそれで合ってる。仮想メモリの上限がくるまでどんどん拡張される仕様
- 231 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:27:17.84 ID:cJHhyghN]
- ヒープが1Mってw
20年前かw
- 232 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:30:41.62 ID:v/OzWZ4D]
- >>228
VC2010とヒープで検索してみ? っつ〜か、携帯からの入力は疲れるな
- 233 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:37:01.71 ID:v/OzWZ4D]
- >>230
何処に拡張されるって書いてあるの?
- 234 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:40:50.99 ID:+Cd4NORe]
- Windows で new の仕様としてHeapAlloc を呼ぶ
HeapAlloc はヒープサイズが足りなくなったらVirtualAlloc を呼ぶ
- 235 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:44:36.31 ID:v/OzWZ4D]
- ソースプリーズ
- 236 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:48:02.82 ID:+Cd4NORe]
- ごめんうそ書いた。確かめたら
new は足りなくなったら直接VirtualAlloc 呼ぶのね
- 237 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:51:19.35 ID:ufFTQ137]
- じゃあ、どっち道newでいいじゃん。
つか、32Mでも確保エラー俺のとこじゃ起きないけど。
- 238 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 21:58:54.52 ID:xWr54rm7]
- newとヒープは同じで、VirtualAllocは別物だね。
msdn.microsoft.com/ja-jp/library/dd744766(v=vs.85).aspx
- 239 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 22:03:21.55 ID:Y5aEM5Jb]
- >>233
実際やってみ。状況にもよるが数百Mぐらいは特に問題ないから
- 240 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 22:27:01.07 ID:Y5aEM5Jb]
- Win32の VirtualAlloc は仮想メモリから直接メモリを確保する機能で、
ページ単位の操作しかできないので細かい確保にはむかない。 100byte だけ欲しいと思っても 64kbとられてしまうので、 C++のオブジェクトの確保とかで使うとすごい無駄なことになる 静的なM単位の大容量データの確保用に使うのには向いてる HeapAlloc は仮想メモリから確保したメモリを、 さらに小分けに管理して割り当ててくれる。管理のオーバヘッドと 引き替えに細かいメモリを効率的に使える。 VC++ の malloc や new はこの HeapAlloc で実装されてるはず ただ、ヒープ系メモリはどうしても「断片化」がおこる。 合計ではメモリが余ってても、間に邪魔者がいると連続領域を確保できなくなる。 ゲームはわりとこの断片化をおこしやすい傾向があるので、 オブジェクトの寿命ごとにヒープを別グループで確保するのが 定番テクニックになる。C++ ではクラス単位で new を差し替えできるから、 そこで使うヒープを切り替えるようにする Win なら HeapAlloc を直接使って別ヒープを確保する形で new を実装するか、 あるいはVirtualAlloc したメモリに対して dlmalloc などの ヒープライブラリを使って実装することになる。
- 241 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 22:52:52.00 ID:dCvIbGe4]
- 良く分からんけど、エラー処理は趣味の問題ってことでいいの?
- 242 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 22:57:43.88 ID:v/OzWZ4D]
- >>239
VisualStudio2005を使ってた頃、自作のスクリプト言語を作ってみた所、 数百行程度でフラグメンテーションによると思われる確保失敗を起こした。 ちなみにその頃のOSはxp。 で、GlobalAllocのGHNDを使って回避した。 Windowsが7になってもこの状況が変わったとは思えないんだがな……
- 243 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 23:13:03.94 ID:7gzK+eao]
- 銃クラスが、兵士クラスのアドレス貰って銃クラスが当たり判定すべき?
それとも銃クラスから判定クラスに銃クラスの位置や角度を渡して判定させるべき?
- 244 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 23:34:56.12 ID:0GlelDaK]
- なになにする「べき」なんて方法は無い。
システムに合わせて一番実装しやすい方法を選択しろ。
- 245 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 23:37:00.73 ID:Y5aEM5Jb]
- >>241
メモリ確保失敗したら、基本続けるのは無理だろうから基本は即終了でいいんじゃないかと 全部解放してタイトルに戻るとかそういう工夫はしてもいいと思う >>242 Win32以降のGlobalAlloc/LocalAlloc はHeapAlloc のラッパー関数です。領域も malloc と同じはず GHNDすると再配置もしてくれてるからフラグメンテーションにならなかったってことではないかと。 そのかわりパフォーマンスはわりと落ちていたと推測します スクリプト系は、作りにもよるけど、案外あっさり フラグメンテーションの原因になるので、あらかじめ リソースとはヒープわけるのが上策ですね
- 246 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 23:38:27.61 ID:xWr54rm7]
- >>241
メモリリークを引き起こさない自信があるなら、エラー処理しなくてもいいと思う フラグメンテーションに関しては、頭の片隅にでも入れておけばいい。
- 247 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 00:11:37.59 ID:U4cKxLml]
- >>245
その辺りの推測は、大筋では当たってると思う。ただ、ちょっと疑問がね。 GlobalAllocのクリップボードでの使われ方の説明がつかない。そして、 GlobalAllocのGHND(正確にはGMEM_MOVEABLE)は64K個まで使える。 この意味理解できる? おそらく、GlobalAllocのGHNDのヒープは、アプリケーションのヒープ領域 とは別に、OSが割り振ったヒープ領域を使ってる可能性がある。そのため、 下手にヒープ領域を使うよりもより多くのヒープ領域を使える可能性がある。
- 248 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 00:18:22.31 ID:suZpr76G]
- メモリ談義はいいんだが
C++ならnew/deleteにこだわるのはやめたほうがいいと思うぜ ttp://www.libjingu.jp/trans/bs_faq2-j.html#memory-leaks >>243 疑って悪いが、お前>>15じゃないだろうな?
- 249 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 00:20:39.87 ID:Em2GMpFA]
- >>248
そうだよ 似た質問しない方が良かった?
- 250 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 00:48:35.66 ID:suZpr76G]
- 何回も同じような質問するのはまずいだろ
「やろとしたができなかった」とか「やってみたが効果がいまいちだった」とかなら それを軽く説明してから改めて質問に入るべきじゃね でなきゃ>>243だよ。相手する意味がないしな
- 251 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 00:55:06.96 ID:NFm2pd34]
- 銃は発射するだけだろ。弾受け取って兵士が処理すりゃいい。
フルアーマーの奴と、裸の奴もおるだろ。
- 252 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 01:12:22.83 ID:5kM6hLnq]
- じゃあ生成したユニットデータに座標を持たせるのと、
マップの座標にユニット番号持たせるのどっちが良いのっと
- 253 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 02:02:20.06 ID:NFm2pd34]
- 好みだろ
- 254 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 05:46:34.75 ID:BRzk8XkE]
- >>252
どっちも持たせる。
- 255 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 07:59:01.95 ID:weX4F0Ac]
- >>251
基本的に当たり判定って食らう側がするもんだよね
- 256 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 08:37:58.08 ID:kLL4aZzx]
- >>255
どっちでもやる事は一緒。
- 257 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 08:47:58.63 ID:Em2GMpFA]
- >>252
処理多くならない?
- 258 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 08:48:30.58 ID:alVEkGAv]
- この手の話って、常に正解を教えられて育ってきた人間が、精神病のごとく質問してくるよね。
自分で決めていいことなのに、自分で決められず、 誰かに正解を提示されないと不安で仕方がない心の病気にかかっているヤツ。
- 259 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 09:49:57.78 ID:TYJ+eYx9]
- それまで・これからのコーディングやゲームデザインによっても変わってくるしな。
その上で、この手法はこういうデメリットがあるし、 あの手法はああいうデメリットがあるし悩んでる。 っていうのを言えば、こういう方法があんじゃね? ってことも言えるんだけど。 質問が大雑把過ぎるんだよな、結局。 恐らくデザインやクラス設計がイマイチ固まってないんだろう。
- 260 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 10:15:50.33 ID:kLL4aZzx]
- 弾が速くて可変フレームレートの場合は、
前回の位置と今の位置との線分で当たり判定が必要だから、 弾を移動させるロジックと同時に判定もさせた方が 楽だと思うに一票。
- 261 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 13:25:02.85 ID:kY76Nlsr]
- 銃の弾は、弾の移動でやったほうが楽だし
地雷の接触などはキャラが動いた時のほうが楽だし 楽なほうでやったらいいんじゃないかい もしくは当たりイベントのスレッドをつくって統括するって方法もあるけど
- 262 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 14:00:18.48 ID:GfSYyx1Y]
- 弾クラスには弾クラスだけで、兵士クラスには兵士クラスだけで
完結するメソッドを持たせて、存在する全ての弾と兵士にアクセスできる 判定クラスがあればいんじゃね? mediatorパターンというか、トランザクションスクリプトというか Cライクやり方をお勧めする。 class Judge { Bullet* all_bullet_array; Soldier* all_soldier_array; void judge_all(){ for(...){...}; } };
- 263 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 15:48:15.62 ID:nQ9KtldE]
- FPSなら線分で良さそうに思えるが
毎フレーム接触判定してるもんなのかな
- 264 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 16:20:02.21 ID:GfSYyx1Y]
- 3Dかどうかもわからんが、彼のレベルからすると
ファミコンマリオぐらいのアクションゲームだと思う。
- 265 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 20:21:19.07 ID:NFm2pd34]
- シミュレーションかもしれんぞ
- 266 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 20:30:56.37 ID:QyF/fiyn]
- マリオって作るの結構難しいよね
あのジャンプなんだよ
- 267 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 21:55:13.21 ID:q0NKYXAt]
- ジャンプ中、亀を蹴って飛び上がれるときと当たって死ぬときが
あるけどどういう判定にしているのかみたいな話題がどっかのスレであったな
- 268 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 22:06:41.15 ID:5kM6hLnq]
- >>257
射線1マスごとにユニット表総舐めする前者と 行動主を特定するのにマップを総当たりする後者 冗長構成の一貫性さえ保てればイイトコ取りの>>254 好きなのを選ぼう!
- 269 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 22:40:23.00 ID:l61wSE5A]
- ユニットスタックの概念がなかったら後者の方が単純でわかりやすいけど、
汎用性とか考えたら前者の方がよいんじゃないかという気がするな。 まぁ今のPCならメモリ不足はあまり心配する必要ないんだし、 前者をベースに後者の「ユニット判定専用マップ」を用意するってのが いろいろできていいかも。
- 270 名前:名前は開発中のものです。 mailto:sage [2012/06/04(月) 23:31:53.31 ID:gSaZzhQ+]
- リアルテイストの競馬育成ゲームで毎年生まれる馬3万体の
遺伝データをずーっとメモリに持たせたらとんでもないことになった思い出
- 271 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 07:03:53.84 ID:5hghPcJi]
- どうなったんです?
- 272 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 19:54:18.88 ID:X1AjLJeN]
- 正直初心者にはマリオですらアクションゲーは無謀だと思う
まずはWizみたいな探索ゲーを作るべき
- 273 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 19:57:18.38 ID:AKltwP6Q]
- おいおいw Wizは難易度高いだろ。
最初はパックマンか倉庫番でいくべし。
- 274 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 20:14:39.78 ID:X1AjLJeN]
- そうかな
シーン管理と変数配列構造体辺り出来れば割りとなんとかできそうなんだけど
- 275 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 20:35:08.86 ID:s+a7RtxR]
- 探索だけなら簡単だな。
1マス未満の移動を出来るようにするとか、戦闘やらイベントを加えると途端に面倒だと思う
- 276 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 20:57:04.12 ID:rQvv9pU4]
- 宣言用.hと定義用.cpp作って
そこにexternで変数関係ぶち込むと凄い楽できることに気付いた 単純なミニゲームとかなら楽に作れそうだけど何か穴とかあるのかな
- 277 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 21:12:18.32 ID:s+a7RtxR]
- 単純なミニゲームならそれでいいんじゃね。
規模に比例して、デメリットが大きくなると思うけど。
- 278 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 23:39:25.37 ID:mjwjZU1k]
- >>276
関数外のstaticの使い方とか覚えると、さらに世界が広がる >>277 デメリットって?
- 279 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 23:46:14.46 ID:mjwjZU1k]
- >>236
ソースプリーズ new はVirtualAllocを呼ばないだろ
- 280 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 00:15:24.25 ID:yfcMlTbU]
- extern自体あまり使うべきじゃないよな...
- 281 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 00:31:44.41 ID:s5fJFGX+]
- >>278
「グローバル変数 弊害」などでぐぐると沢山の資料が出てくるので、そちらを参考にされたい。 名前空間やシングルトンパターンなどの利用で回避できる部分もあるけどね。 あと、プログラミングにおける有名な考え方(哲学)の1つなんだけど。 ざっくり言うと、「オレ専用のモノはオレだけが知っていればいい」という考え方がある。 例えばfor文で使ってる変数iとか、他のところから見て何の価値も無いよね。 単にどうでもいいってだけじゃなく、価値のない情報が溢れかえると肝心の情報が埋没するというデメリットがある。 本当に必要なものだけを選別しないと、それこそ狼少年みたいに重要なことが見過ごされてしまうかもしれない。 ミニゲームのうちは、そういった無価値な情報が多少あっても問題にならない。 でも規模が大きくなると、相対的に不要な情報が増えてくるんだ。
- 282 名前:名前は開発中のものです。 [2012/06/06(水) 00:57:04.37 ID:0Qe/6ch0]
- 木の葉を隠すなら森の中
- 283 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 05:05:34.22 ID:F+8wYuiU]
- デバイスまとめクラスは
オレオレ名前空間内のstaticなグローバルオブジェクトにしてるな どの程度正しく作るかって難しいよな
- 284 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 06:13:10.68 ID:BB9r7cef]
- >>274
迷路自動作成ロジックはどうする?
- 285 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 07:30:32.76 ID:B+n3k45G]
- >>281
例えばだけど、規模が大きくても付けた変数名を絶対に忘れない人が一人で作れば問題ないよな 場合によっちゃそこらへんのツールで重複調べられるしな
- 286 名前:名前は開発中のものです。 [2012/06/06(水) 07:45:33.71 ID:LQ8HTB51]
- グローバル変数名は頭に「g_」を付けましょう。
- 287 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 09:05:26.97 ID:mjTHO3b4]
- >>285
ホントに「例えば」だな。クラス設計が分からない時、 やたらグローバルな変数を宣言してたが見事に破綻したよ。
- 288 名前:名前は開発中のものです。 [2012/06/06(水) 09:28:51.13 ID:yfcMlTbU]
- >>285
「人によってはなんとかなることもあるから開発効率落としてみてもいいだろ。俺もそのなんとかなる人の一人かもしれないし」 こういうこと?
- 289 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 10:15:18.79 ID:WiOpGBsA]
- 名前空間+グローバル変数は結構使いやすい。
.hと.cppをめんどくても分けるのは 相互参照でコンパイル通らないC++の都合だね。
- 290 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 12:11:44.97 ID:Ez398/8e]
- なんだかんだで「変数はクラスに入れとけ」となるのはわかるんだが
じゃあそのクラスのインスタンスはグローバル的に参照したらダメなんかね? たとえばジャンルがRPGだとして、キャラクターデータを // common.h(各cppでincludeする) namespace Sample { // パーティーデータを宣言 MyCharacterData Party; }; // main.cpp #include "common.h" int main( int argc, char ** argv, char ** env ) { // 起動時に初期化 Party.init(); : } ・・・といった作りにするのはどうなんだろ
- 291 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 13:28:41.38 ID:s5fJFGX+]
- グローバル変数のデメリットと言われるものは複数ある。
そのうちの幾つかは解消されるけど、残りは解消されないと言った感じ。 例えば、意図しない変数名のバッティングは回避されるだろう。 でも、複数の箇所から操作される可能性はそのままだ。
- 292 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 13:31:53.21 ID:mJCSqxTc]
- グローバル変数のメリットは複数の箇所から操作出来る事なのでは……。
- 293 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 13:50:04.63 ID:s5fJFGX+]
- >>292
それがグローバル変数の「特徴」だな。 メリットにもなりうるし、デメリットにもなりうる。 どうしても複数の箇所から操作しなければならない変数だけ、ピンポイントでグローバルにするのはマジ有効。 何でもかんでもグローバルにするのは、あまり好ましくないと言われる。 熟練者が使えば凄く有効に使えるけど、 俺のような初心者は、最初から「グローバル変数は絶対に使わない」と決めてしまった方が楽w 他にもgoto文なんかがそうだね。 ちなみに自分は、C++のconst変数(いわゆる定数)のみ、 きちんと名前空間で整理した上で、まさに>276の方法でグローバル化することがある。 もちろん、ビルド時間や不要な情報が増えるというデメリットは超デカいけど、 一箇所にまとまるというメリットも、それなりに大きい。
- 294 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 13:54:50.07 ID:mJCSqxTc]
- そうなんだ。
俺はどうでもいい一時変数以外は全部グローバルでやっちゃってるよ。 別んとこで確保したローカル変数をまた別んとこで利用する、なんてやりかたやってたらバグの温床になりそうで。
- 295 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 14:03:27.96 ID:s5fJFGX+]
- >>294
呼び出し元(例えばmain関数)で変数を宣言して、複数の関数に引数で渡すというのは、 ありとあらゆるプログラム(C/C++以外の言語でも!)で使われる書き方だ。 だからもし、そこに面倒臭さとか一種の恐怖感を感じるなら、 無理矢理にでも改善したほうが良いかもしれない。 その上でグローバルを使うなら、ご自由に。
- 296 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 14:39:35.53 ID:9xH4E1Ru]
- >>294
さすがにそれは言語に対する理解が足りてないだろ。 「グローバル変数は絶対使ってはいけない」みたいなことを言う人達はおかしいとは思うけどね。 グローバル変数はどうしても必要なときにだけ使った方がいいぞ。
- 297 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 15:00:33.42 ID:mjTHO3b4]
- 逆にグローバルが最適ってどんなケースだろ?
サブクラス化でメッセージ受け取ったときのための、 ウインドウハンドルを記憶させたstlのmapくらい。 とりあえず俺が使ってるのはそれくらい。 dxutなんかも、使い出したらグローバル変数は使いそうだなぁ。
- 298 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 15:35:42.70 ID:PskKn+mp]
- >>294
一時変数ってローカル変数だろ? 確保したローカル変数ってなんぞ
- 299 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 15:57:44.74 ID:UXlaP3IH]
- メインループの前に変数宣言しておいて
メインループの中で弄ってるんだけど、 これってクラスのフィールドとメソッドポインタで代用できるよね お前ら的にはこの方法どうなの?
- 300 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 16:19:17.31 ID:s5fJFGX+]
- >>299
簡潔かつ具体的にどうぞ
- 301 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 19:31:30.78 ID:WiOpGBsA]
- シングルトンとしてわざわざprivateコンストラクタとか書きたくない場合、
引数でデータを渡すセッターが書きたくない場合かな。 まあ手抜きだね。 経験や設計力の足りない人が、とりあえずグローバル変数で手抜きをしてつくり、 後で修正するのはいいんじゃないかな。 >>299 >>15さんの好きなようにやりなさい。
- 302 名前:名前は開発中のものです。 [2012/06/06(水) 20:03:58.82 ID:dE87BNoI]
- 一人で開発してるとどうしても手抜きになるのは仕方かも。
就職してチームで開発するようになればセオリーの コーディングスタイルを学べるんだけどね。 すでに退職した人が書いたコードのバグを治す立場になれば グローバル変数の悪どさが身を持って分かるようになる。
- 303 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 20:08:37.83 ID:K3C+b+6o]
- クラスごとに読み込み専用とか書き込み可能とかのアクセス制御を簡単に記述できるなら
何処からでも参照可能なデータクラスがあっても悪くないのかもしれないけど
- 304 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 20:13:09.98 ID:s5fJFGX+]
- システム担当が1人しかいないので大して変わらん俺…(´・ω・`)
- 305 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 20:21:15.36 ID:wItmrJee]
- そもそも数人で作れるほどの腕を持つ奴はこんなとこ来ないから別にいいよ
しかもなんでバグ前提だよ>>302
- 306 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 20:22:50.00 ID:z1YH6Ic0]
- まとめ
グローバル変数は把握出来るようにきちんと整理しておきましょう
- 307 名前:名前は開発中のものです。 [2012/06/06(水) 21:31:22.54 ID:fkjdBITD]
- >>305
バグ0前提のほうがありえないだろw
- 308 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 21:32:44.31 ID:wItmrJee]
- 一項目を一通り作ったらビルドしないの?
まさか全部作るまでテストしない…?
- 309 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 21:35:34.97 ID:wItmrJee]
- なにいってんだ俺は
一通り終わってバグがあったらその都度バグ潰すってことね
- 310 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 21:56:51.01 ID:s5fJFGX+]
- >>308-309
そこだけ訂正されても、「お前は何を言ってるんだ」は変わらんぞw
- 311 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 22:10:00.23 ID:Ez398/8e]
- というか、グローバル変数をあちこちから直接触るのが危険、はわかるが
(どうせ他人のプログラム読むにはGrep必須じゃね? みたいな揚げ足取りは置いといて) クラスインスタンスを大域的にアクセス可能にすることにはどういうリスクがあるかな あちこちで生成・破棄を繰り返したらヤバイとか、 マルチスレッド時変数にロック必須とかは俺にもわかる 他に目立つデメリットってどんなものがあるだろう?
- 312 名前:名前は開発中のものです。 mailto:sage [2012/06/06(水) 23:42:28.46 ID:32DOJ83b]
- グローバルなフラグ処理があちこちで絡み合って、全体の処理が全くわけわからなくなるとかか?
- 313 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 01:05:23.58 ID:BJcvBZeM]
- グローバルアクセスじゃなくてもポインタで共有してたら
マルチスレッドでは注意が必要だな。 問題は追尾性じゃないかな。検索使わないで探すとしたら大変だ。
- 314 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 07:52:16.47 ID:Jv6ss4Bc]
- 管理出来るなら使え、管理出来ない奴は使うな、でいいよね
- 315 名前:311 mailto:sage [2012/06/07(木) 08:05:17.72 ID:1pAFbwR/]
- なるほど・・・改めて言われてみるとそうかもな
引数にしとけば関数一覧見ただけで出入りがわかるもんな 今後参考にする、ありがとう
- 316 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 08:07:50.47 ID:ABZ9H4yv]
- 端から見て意思の疎通が出来てるのか心配になるやり取りだなw
- 317 名前:名前は開発中のものです。 [2012/06/07(木) 13:55:27.92 ID:QQtm5YS7]
- >>311
直行性の破壊
- 318 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 14:44:16.39 ID:aJnWGOd5]
- ゼノギアスみたいに3Dマップに2Dを歩かせたいんだけど、2DキャラにVECTOR座標持たせないとダメなのかな?
それともカメラとマップの動きでなんとかするのかな
- 319 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 21:30:16.39 ID:BJcvBZeM]
- やりたいようにやりなさい。
- 320 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 22:02:16.36 ID:Ukk/kqdB]
- マジレスしていいのか?
- 321 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 22:20:38.30 ID:G9hkoO5R]
- オブジェクト指向の弊害というか、基本的なアルゴリズム力がない人が増えたよな
特に内部の数値と表示部を分けて考えずに直結して考えてる人が多い
- 322 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 23:49:11.74 ID:vdC1mnp6]
- アルゴリズム力って何?
- 323 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 23:54:38.13 ID:p6Iwkliq]
- まぁ、ゲームというのは基本的に電源を入れ続けている間には停止しないので、
不完全なアルゴリズムであるといえよう
- 324 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 05:39:14.26 ID:emaLFwiS]
- >>323
哲学かw
- 325 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 12:13:59.29 ID:DZv8KWRM]
- ブログラムを学び始めて一ヶ月、トランプのゲームや簡単なアクションなら楽に作れるようになった
しかし未だにポインタの使い道が分からない
- 326 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 13:31:45.51 ID:q3HoT9+Z]
- >>325
心配しなくても、そのうちポインタじゃないと出来ないこと、ポインタの方がスマートに出来ることにブチ当たる。 その時に改めて覚えればいいのよ。 例えば、セーブシステムを実装してみるとかどうかな。
- 327 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 13:52:13.27 ID:tcFLKDMc]
- うむセーブできるスロットを3個として
それを読み込んだり上書きしたり そんなときに
- 328 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 17:42:03.38 ID:aSm1ZnJU]
- 俺がポインタ使い始めたのは
オブジェクトの配列を使わざるを得なくなったときかな? 上で一応、ポインタ不使用で配列扱う方法あったけど、 当時はそこまで調べきれんかった。 まぁ知っててもポインタ使ってただろうけど。 あとはfactoryパターンなんかポインタあってこそだな。
- 329 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 18:39:35.31 ID:pbnxpIOe]
- 俺がポインタ使い始めたのは、文字列の多次元配列を使わざるを得なくなったときだった
- 330 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 19:35:21.69 ID:lRuRBADW]
- ぼ、僕の初めてはmallocちゃん・・・
- 331 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 20:05:18.05 ID:SJfmbBy9]
- 俺はライブラリがポインタ返してくる場合を除いて使わないかな
それを除けばSTLコンテナと参照渡しでほとんど済むというか std::mapに関数ポインタ入れてスイッチ消すとかは価値あると思うんだけど コンパイル時に型と内容が確定するメリットが捨てがたいんだよな
- 332 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 20:50:19.69 ID:j/2x2bX+]
- 関数ポインタやストラテジーパターンならタイプセーフだぞ。
- 333 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 21:13:56.33 ID:m5MO4L1R]
- セガの人の本で関数内で引数の中身が変わるかどうかわかるように
ポインタと参照を使い分ける話があってそれに従ってるな
- 334 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 21:30:09.93 ID:zMZgxXcw]
- RPGツクールやってたせいかポインタ使わなくても処理できる方法が浮かぶから困る
多少コード長くなるかもしれないけど知らん
- 335 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 21:42:33.38 ID:+harBrKu]
- >>333
const使って解決するほうが堅牢に思える
- 336 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 21:44:24.52 ID:z81hpupn]
- さらにSAL注釈も付けるかな
- 337 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 21:44:25.54 ID:6tY7hMDQ]
- RPGツクールとポインタ使わなくても処理できる方法の
関連性がよくわからん
- 338 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 21:48:46.35 ID:PkeZlA3u]
- みんなポインタどこで勉強した?
- 339 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 21:53:09.92 ID:MREanol0]
- >>338
昔はネットが無いかわりにCマガジンという雑誌があってだな・・・
- 340 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 22:05:47.44 ID:MREanol0]
- >>234>>236
今更だが、ちょっと気になったので。 GetProcessHeapとHeapCreateでそれぞれ検索する事をオススメする。 ちなみに、C++のnewがどっちのヒープを使ってるかは分からなかった。 速度では前者、汎用性、拡張性を優先しているなら後者なんだが・・・
- 341 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 22:25:17.57 ID:2sQEIMbG]
- >>337
ツクールに限らず、そもそもポインタ使わなくてもゲームは作れるって話でしょう。 あれば便利だがなくてもできなくはないという程度の意味で。
- 342 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 22:30:05.74 ID:b1Lp2XzC]
- while(*dst++ = *src++ )
;
- 343 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 22:34:51.17 ID:FXgS0hSf]
- >>340
crt見ればいいよ 昔はheapを確保できればHeapAlloc、できなければVirtualAlloc VC10だとその辺の記述がごっそりなくなってるからreallocでまとめられたのかもしれない。たぶん というか本人がよく分かっていないのに他の人にググれっていうのは厳しいだろw
- 344 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 22:54:45.78 ID:MREanol0]
- >>343
でも、>>234>>236が何を混同してたのかは理解出来るんでは? HeapAlloc+HeapCreate(0,0,0)の挙動とnewの挙動を ごちゃ混ぜにしてた事は理解できたから。 HeapAlloc+GetProcessHeapの方が早いし使い勝手も良いから、 C/C++ではこちらを採用していると考える方が自然かと。拡張性は無いけど。
- 345 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 23:21:38.88 ID:meBz3r1I]
- 実はnewの挙動をMSがコッソリ変えていたというのが真相だったりしてな
- 346 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 23:30:02.10 ID:m5MO4L1R]
- >>335
constもつけるよ あくまで呼び出した側でわかりやすいという話 一種のおまじないかも
- 347 名前:名前は開発中のものです。 mailto:sage [2012/06/09(土) 14:17:30.16 ID:lNgYTjBj]
- CでIMEの設定変更する方法っていうか関数あったりする?
標準全角入力使われたら予期せぬ動きしまくるしrewindでもクリアできないしマジ困る あれはバッファの中身どうなってるんだろう・・・
- 348 名前:名前は開発中のものです。 mailto:sage [2012/06/09(土) 15:10:15.66 ID:x2dTOO+E]
- >>347
Cにあるわけない。 WindowsAPI(Win32 API)か何かに投げるんじゃねーのかな。
- 349 名前:名前は開発中のものです。 mailto:sage [2012/06/09(土) 16:37:02.46 ID:FTBfxQeH]
- DirectXのサンプルの中にImeUi.h、ImeUi.cppってのがあったけど
俺は途中で放り投げたから詳細はわからない 要はTSFってのを使うらしい
- 350 名前:名前は開発中のものです。 mailto:sage [2012/06/09(土) 18:53:04.60 ID:XUfV5Ps7]
- "C/C++" IME
とかでぐぐるといろいろあるみたいだな
- 351 名前:名前は開発中のものです。 mailto:sage [2012/06/11(月) 08:03:40.59 ID:Vdy0LhS9]
- ちょっとCからは反れるかも知れないんだけど、3Dのマップモデルってどう表示してる?
1マップを超巨大なモデルを作ってそれをドカッと配置しようかとしてるんだけどまともな方法なのかな? そしてそれに家とかのモデルを一個ずつ配置するか、それとも地面にセットでくっ付けておくか悩む
- 352 名前:名前は開発中のものです。 mailto:sage [2012/06/11(月) 08:26:57.69 ID:pW3epnaG]
- >>351
地形と家や木などの何度も登場するモデルは分けて読み込んでプログラム側で配置すると良いよ。 ロード時間の短縮、メモリ節約、当たり判定の高速化、描画の高速化のメリットがある。 もちろんこれらの機能は自分で実装しなくてはいけないけどね。
- 353 名前:名前は開発中のものです。 mailto:sage [2012/06/11(月) 09:16:10.08 ID:IS7oiAfA]
- >>351
地形マップは大きいのが一つ。 建物などのオブジェクトは個々のモデルを配置する。 LODで高速化できるので。
- 354 名前:名前は開発中のものです。 mailto:sage [2012/06/11(月) 09:50:09.21 ID:67uf8PuE]
- 地形マップの着地判定って手作業で設定して行くの?
それともポリゴンの点から面を取得して〜・・・
|

|