- 1 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 21:22:08.41 ID:iNm25OoA]
- ゲーム製作におけるC/C++全般に関するスレです。
元スレ DXライブラリ 総合スレッド その12 toro.2ch.net/test/read.cgi/gamedev/1330000532/
- 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
簡潔かつ具体的にどうぞ
|

|