トップページgamedev
1001コメント329KB

C/C++ゲーム製作総合スレッド Part5

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/01/16(木) 00:00:31.27ID:w6WW3hAo
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
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/
0739名前は開発中のものです。2014/05/11(日) 21:06:37.47ID:KSscCZAl
適当に書いちゃったけど何をしようとしてるのかいまいち理解出来ないw
0740名前は開発中のものです。2014/05/11(日) 21:14:58.11ID:9RoLwWBR
enumの要素数を静的に得たいんでしょ
将来お金の種類増えるかもしれないとか
配列使うぐらいならvectorにしとけとも思うが
0741名前は開発中のものです。2014/05/11(日) 21:51:52.47ID:3XauxJKc
構造体じゃいかんのか
0742名前は開発中のものです。2014/05/12(月) 00:24:54.73ID:cE27KFFY
実際に使うの想像してこうなった。
例えば複数の種類のお金で買えるショップ機能を作りたい場合、
ショップ側でMoneyTypeという型と整数を持っておけば、処理が楽かなと思ったんだけど
0743名前は開発中のものです。2014/05/12(月) 01:09:04.70ID:u2hQW3ha
つまり>740が正解っぽい?
0744名前は開発中のものです。2014/05/12(月) 14:46:27.12ID:Pch/P8kY
ゲームで何時でも何処でも参照、代入できるデータって一般的にどうやって管理してます?
(例えば主人公のデータとか色々な場面で使いそうなもの)
今まで単純にデータクラスの中に静的メンバ変数で定義してグローバル的にやってたけど、
たまたまシングルトンで管理してるソースを見つけて、色々あるのかなって思った
0745名前は開発中のものです。2014/05/12(月) 18:22:11.56ID:cE27KFFY
シングルトンは嫌だからゲームマネージャークラス作ってそこにプレイヤーデータのポインタ持たせたりしてるけど、どうなんだろう??
0746名前は開発中のものです。2014/05/12(月) 18:22:35.24ID:gXmiaEA2
3Dゲームでカメラを遅らせて動かす場合って角度を線形補間してベクトルにしてる?
それともクォータニオンで球面線形補間してる?
0747名前は開発中のものです。2014/05/12(月) 20:18:49.99ID:u2hQW3ha
>>745
グローバル変数は可能な限り減らす、という理念の上でやってるなら、
それは実に正しい手法だと思うよ
0748名前は開発中のものです。2014/05/12(月) 22:53:45.27ID:Qk7dokdu
グローバル変数使いまくりの俺だが、グローバル変数は使わない方がいいと言われて
その方向でプログラム書き直したところ、手間の物凄く増えて辟易。
やり方を間違ってるんじゃないか感が半端ない。
0749名前は開発中のものです。2014/05/12(月) 23:01:55.91ID:Qk7dokdu
あるプログラム本に「JAVAなんかは誰が組んでも似たようなものになるが、
C++プログラムは人によってまるで違ってくる」とあったが本当みたいね。

本や解説サイトによって、サンプルがかなり違ってるようで混乱しまくるわ。
0750名前は開発中のものです。2014/05/12(月) 23:39:44.01ID:4H1ieXj2
グローバル変数どうのこうのは保険をかけるためのもので手間を減らすものではないから仕方ないね
0751名前は開発中のものです。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
>>738
'MoneyType' is not a class or namespace
ってでる

visualstudio2010だと出来たと思うんだけど、
Eclipse4.3だと出来ない

C++のバージョンによってなんか変わったのかな
0754名前は開発中のものです。2014/05/13(火) 12:15:46.52ID:D4assd32
>>753
enum classはC++/CLIだからだろ
Cにそんな構文はない
俺はC++には詳しくないけど実はあるのかな
0755名前は開発中のものです。2014/05/13(火) 13:16:16.22ID:LR5OHySp
C++11から入った構文
0756名前は開発中のものです。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
>>756
わざわざ識別子を _ で始めるなんて沸いてるんじゃない?
0758名前は開発中のものです。2014/05/13(火) 23:15:35.87ID:dsNPksM9
是非はともかく、よく見かけるけどな
0759名前は開発中のものです。2014/05/13(火) 23:46:55.80ID:VqkITLrD
>>757
じゃあなんて書くんだ?
0760名前は開発中のものです。2014/05/13(火) 23:51:06.96ID:dD8wYEBQ
アンダーバー始まりは処理系予約とかじゃ無かったっけ
慣習的に
0761名前は開発中のものです。2014/05/13(火) 23:59:25.01ID:VqkITLrD
>>760
まじかよ
学校でこう習ったよ
何でそんな書き方教えるんだよ
まぁ開発はVSだから#pragma onceしか書かないから知らんかっただけっすけどね・・・
0762名前は開発中のものです。2014/05/14(水) 00:50:31.19ID:qOCHvgWh
>>756
>>663

ついでにnamespaceにぶち込んでもいいのよ
0763名前は開発中のものです。2014/05/14(水) 00:53:50.93ID:qOCHvgWh
>>761
gccでもいつの間にかpragma once使えたりするんだよな
あれ、サッサと標準仕様に盛り込めばいいのになと思うよ
0764名前は開発中のものです。2014/05/14(水) 01:34:53.87ID:Bv7wzu+p
だいたいのコンパイラが対応してるみたいだしデファクトスタンダードってところ
0765名前は開発中のものです。2014/05/14(水) 02:44:20.77ID:SkdpMvQe
効率的には#pragma onceの方がいいと聞いたことはあるが
IDEによるかもしれん
0766名前は開発中のものです。2014/05/14(水) 03:12:47.17ID:YePF79fh
単純なi nclde guard は力技の処理だけど
pragma once は処理系次第で最適化されてるからね。

複数のプラットフォームを想定するなら
安全策をとって両方記述するのがオススメ。
pragma once があれば効率的に処理してくれるかもしれないし、
もしpragma once を理解できない処理系でも
inlude guardは必ず処理してくれるからね。
0767名前は開発中のものです。2014/05/14(水) 10:10:49.06ID:2wCAVOdx
>>766
両方記述?寝言は寝て言えw
0768名前は開発中のものです。2014/05/14(水) 10:25:37.80ID:vvdSHZVH
VC++に#pragma onceが入ってすぐの頃は
自動生成したヘッダには#pragma onceと#ifndef-define-endifが
コンパイラバージョンによって自動で切り替わるように書かれてたと記憶している
その辺から考えても、両方書くのは無駄じゃない
0769名前は開発中のものです。2014/05/14(水) 12:46:41.03ID:1doe1mvx
std::mapにenumとかstructを使いたいんだけど
template argument 4 is invalidっていうエラーが出ます

具体的には
map<アイテムID(enum型),アイテムパラメータ(struct型)> aaaaa;

って感じです。

パラメータっていうのはその名の通りアイテムを装備するとstructのメンバの
addHPとかaddMPっていう変数の分だけ上昇する感じで、

使い方はプレイヤーはアイテムIDだけ持っておけば、あとは必要な時々で値だけ取得できるかなという感じです。
0770名前は開発中のものです。2014/05/14(水) 13:13:18.32ID:CAIv9eLR
enum itemID{ID1=0, ID2, ID3, ID4};
struct 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
>>769
比較関数がないって怒られてるんじゃね
一つ目の型を enum型じゃなくて int に変更するわけにはいかないの?
0772名前は開発中のものです。2014/05/14(水) 14:08:33.50ID:Ke2wFa7k
そもそもそれmapにする意味あるのか?
>>733みたいな感じで配列で十分な気がするんだけど
0773名前は開発中のものです。2014/05/14(水) 15:29:04.69ID:Ocn3g8OS
map だと必要な分だけ使えるじゃん

0〜 イベントアイテム
10000〜 武器
20000〜 鎧

みたいに
0774名前は開発中のものです。2014/05/14(水) 16:29:43.89ID:YPHrxvGY
enum使うなら10000から武器みたいな区分けがそもそも必要ないと思うんだけど
0775名前は開発中のものです。2014/05/14(水) 21:01:01.54ID:qOCHvgWh
>>769
それ、>>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:XQ3tGmyB
>>770
enumの最初を0と明示するだけで変わるんです?
0777名前は開発中のものです。2014/05/15(木) 13:17:04.58ID:vi3A9MFw
変わらないですよ。試せばすぐ分かりますけど、ム板のスレに誘導されたいです?
0778名前は開発中のものです。2014/05/15(木) 17:35:02.68ID:CM4Haxt/
普通に動くよね
コンパイラのバージョンとかで古いのだと駄目なのかな
0779名前は開発中のものです。2014/05/15(木) 19:15:22.94ID:D0s76qwM
実は全然違うところでエラー出てるんじゃないの
0780名前は開発中のものです。2014/05/16(金) 15:57:03.11ID:RLWXI/UA
ナビメッシュのやり方が書いてある本とかサイトとかってある?
0781名前は開発中のものです。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
ゲームプログラミング本といえばGameProgrammingGemsシリーズなんだかな
最近の若者は読まないのか
0784名前は開発中のものです。2014/05/17(土) 11:06:25.43ID:7UqYAydx
現代の技術の世界において
英語が読めないのは脳が半分無いのと同じ。

それだけのこと。
0785名前は開発中のものです。2014/05/17(土) 12:01:48.26ID:G1g9tldj
翻訳したやつ読めば
0786名前は開発中のものです。2014/05/17(土) 12:34:45.87ID:/WeYTHrm
英語読めてもソースコード読めなかったりするし
プログラムは勉強したところでコード書けないのが大半らしいな
元々作文が下手とかそういう次元ではなく理解できないとか
0787名前は開発中のものです。2014/05/17(土) 12:40:03.20ID:o9p3b0z7
そもそも日本語で書いてあるプログラム解説書だって意味わかんないよw
0788名前は開発中のものです。2014/05/17(土) 13:44:47.33ID:7UqYAydx
>>785
半年遅れで付いていく人間は残念ながら奴隷で終わるよw
英語ができて最先端に追従する奴、ときには自分が最先端を発信する奴に
「あ、こいつバカだなww」と思われながら生きる惨めな三流人生が待っている。

それで良ければ英語なんて学ぶ必要はない。

まぁ、普通は(普通の知性の持ち主は、という意味)
修士課程で英語の論文を死ぬほど読んで
「喋れないけど読める」という妙な英語力を身につけられるんだけどねw
0789名前は開発中のものです。2014/05/17(土) 14:19:53.26ID:ZLhv9Phh
相変わらず病んでますね
0790名前は開発中のものです。2014/05/17(土) 14:53:46.32ID:k3uAdR/A
とりあえずナビメッシュのやり方教えて
0791名前は開発中のものです。2014/05/17(土) 17:55:58.84ID:ZLhv9Phh
780の人ですか?
具体的に何をやってみてどこでつまずいてるのか話せば答えやすくなるかと
0792名前は開発中のものです。2014/05/17(土) 18:02:04.88ID:G1g9tldj
http://www.lameije.co.jp/navigationmesh.html

これじゃあかんのか
0793名前は開発中のものです。2014/05/18(日) 17:48:20.69ID:bAjzsQ9M
オクツリーに障害物を表示させたいんだけど、オクツリーのある場所がどの座標なのかを調べる方法ってある?
0794名前は開発中のものです。2014/05/18(日) 21:18:36.16ID:uYYY8hgN
ボクセルのインデックスを座標のビット配列にしてインデックスからボクセルの位置を取得

http://marupeke296.com/COL_2D_No8_QuadTree.html
これを3ビット毎にすれば出来ると思うんだがどうだろ
0795名前は開発中のものです。2014/05/19(月) 04:39:02.31ID:XNC2jE/Y
この入門?みたいなサイトで勉強してたんだけどつまづいたので分かる方いたら教えてください
http://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:FdnDAUlP
enemyの型がポインタの配列になってないんじゃないの
0797名前は開発中のものです。2014/05/19(月) 10:00:14.39ID:hjxHIKHc
こうかな
正:ENEMY *enemy[ ENEMY_NUM ];
誤:ENEMY *enemy;

サイトを見ると省かれてるみたいだけど
敵を複数出すようにした時点で enemy を配列に変更しないといけない
0798名前は開発中のものです。2014/05/19(月) 11:05:51.60ID:CSMuM09V
これコンストラクタの引数なんで構造体の参照渡しじゃないのか
無駄に読みにくいわ
07997952014/05/19(月) 11:33:54.01ID:XNC2jE/Y
できました。
ご指摘の通り、enemyを配列にしたら無事にコンパイルできました。

ちょっと私にはわかりにくいサイトだったようなので別のところで勉強してみます・・・
08007952014/05/19(月) 11:34:28.24ID:XNC2jE/Y
お礼を忘れていました

ご指摘ありがとうございました。
0801名前は開発中のものです。2014/05/23(金) 00:32:00.04ID:61iiZtPG
おらLAMPしか知らないんだけども
C++で作ったリアルタイムなネットワークゲームのオンラインサーバって
どういう環境で動いてんだべ?
ソシャゲならPHPでhttpでいいかもしんねけども、
ネトゲって実行ファイル動かし続けてんのかね
0802名前は開発中のものです。2014/05/23(金) 00:34:30.27ID:BlMjMm70
>>801
お前から感じるそのしったか臭は一体何なんだ?
0803名前は開発中のものです。2014/05/23(金) 01:25:45.01ID:61iiZtPG
>>802
そんなこと言っても知りたいってのは本当なんだけど
ていうかソシャゲってphpでhttp返してるって聞いたんだが違うのか
ソース3種類ぐらい別のところから聞いたからそうだと信じてたけど
0804名前は開発中のものです。2014/05/24(土) 14:46:49.15ID:+A5Yp2pd
テスト
0805名前は開発中のものです。2014/05/24(土) 14:48:01.39ID:+A5Yp2pd
ロールバックしたのか
スマートポインタ談義がすっぽり消えたなw
0806名前は開発中のものです。2014/05/25(日) 20:49:24.73ID:oeSfMRxm
>>801
C++で作ったゲームサーバーの話は聞かない
普通は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:vsrsxORJ
MMORPGの鯖はCかC++じゃないのか
0808名前は開発中のものです。2014/05/25(日) 21:10:04.84ID:NTyQi6H8
普通はそうだな。
速度優先だし。

>>806 は国産とか意味不明のこと言ってるし。ソーシャルゲームのことだろ。
0809名前は開発中のものです。2014/05/26(月) 10:23:40.85ID:GZglaTlb
「普通はPHPとかPerlで作ったHTTPサーバ」

↑w
0810名前は開発中のものです。2014/05/26(月) 12:15:10.70ID:Pmy7lrM1
PSO2が80番ポートで通信してたら俺泣くかもしれんww
0811名前は開発中のものです。2014/05/26(月) 23:19:43.69ID:NgiDAGf8
さあ僕の胸の中で思い切り泣くがいい
0812名前は開発中のものです。2014/05/27(火) 00:18:29.37ID:E4+xEgMz
Perl懐かしすぎる。
卒論のためのプログラムをPerlで書いたんだよ。

「もしかして俺はアカデミズムの世界で生きられるほど賢くないのかもしれない」
そんな現実に気がつくころ、Perlも衰退を迎えてさ。
なんだか恥ずかしい青春の甘酸っぱい言語だよ。
0813名前は開発中のものです。2014/05/27(火) 00:28:35.75ID:Cg0Gppa4
>>812
一行一行、いちいち、ハテナ?と思わせる文章だな。
それが書けるのは>>806とお前くらいだよ。
0814名前は開発中のものです。2014/05/27(火) 22:23:08.63ID:EKtsf5FU
PerlはCGI以外のところで地味に生き残ってる印象があるな

それはさておき、サーバとクライアントとで同じ結果を出したいってときに、
Haxeを使ったってニュースなら見たことあるなあ
最終的に何言語になったかまでは覚えてないけど
0815名前は開発中のものです。2014/05/30(金) 20:38:48.50ID:Z7hh6f//
まぁなんだかんだで最後に生き残るのはJavaScriptだろうな
0816名前は開発中のものです。2014/05/30(金) 22:00:59.71ID:3BKqOVuN
サーバサイドのjavascriptって普及してんの?
webブラウザ用の言語として生き残ってく予感しかしないんだが
0817名前は開発中のものです。2014/05/31(土) 10:36:34.27ID:q6hYVMUh
これまで状態遷移管理をswitch一本でやってたけど、
とうとうネットワークグラフ型に対応したstate machineを導入した。
状態遷移表を作ってみて、当初想定していた状態遷移仕様の複雑さに驚いた!
Game programming gemsの1巻を参考に実装したけど、
一定フレーム(もしくは時間)後に、自動的に遷移させるってどうやるのがいいんだろ。
0818名前は開発中のものです。2014/05/31(土) 12:27:57.64ID:ROUPLRVK
俺は時限イベント用の配列にイベントと発動時間(シーン開始からの時間)詰め込んで毎フレーム確認するようにしてる
0819名前は開発中のものです。2014/05/31(土) 13:53:36.95ID:q6hYVMUh
>>818
レス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:TW8rxzzK
「現在の溜め量」の状態(数値)が不足してる気がする
0822名前は開発中のものです。2014/06/07(土) 13:54:05.28ID:TPPcHjY+
C++でゲーム作るからにはカプセル化してちゃんと画面ごとにデータを隠蔽してやりたいんだけど
そうするとシングルトンや画面間で共有する変数とか無いってことだよね?
画面切り替わるたびに毎回HDDにセーブしてロードしてるの?

オブジェクト指向っていうとそうなりそうなんだけど
0823名前は開発中のものです。2014/06/07(土) 14:11:15.61ID:Ug9B4jbc
抽象的な思考に慣れていない偏差値50〜60程度の層だと
見た目=下部構造なんだな。
そのことを疑いもしない。
65越えるとようやく会話が成立するのだが。
0824名前は開発中のものです。2014/06/07(土) 14:23:50.69ID:RywayQ4c
偏差値()
0825名前は開発中のものです。2014/06/07(土) 14:32:06.59ID:Hn3ULKCP
本当だ、会話が成立しないってのがよく分かる
もっとも会話自体する気無いように見えるけども

>>822
2行目の認識がちょっとずれてる気がする
シングルトンはオブジェクト指向プログラミングにおけるテクニックの一つだから
オブジェクト指向だとシングルトンが無い、なんてことにはならないと思う

共有したいデータは、複数の画面を管理するような寿命の長いインスタンスに入れておいて
各画面が都度アクセスするように作るかな、俺なら
プログラムって基本的に階層構造になってることが多いから、その上位階層で
下位階層で共有するデータを保持しておく、という感じで
0826名前は開発中のものです。2014/06/07(土) 15:36:17.23ID:E1S3y9cE
>>825
それいちいち下位階層(各画面)のクラスに、共有データ保持クラスインスタンスへの参照メンバ変数を追加して、
さらにそれに参照を通すめのメンバ関数追加して、
場合によっては、そのメンバ関数を呼ぶタイミングに気を遣ったりと、面倒くさくない?

俺ならてっとり早くグローバル変数で解決だわw
しかし上記の様な構造が複数存在し得て、抽象化が迫られてるんだったら、
>>825の方法を取るかな
0827名前は開発中のものです。2014/06/07(土) 16:19:22.33ID:TPPcHjY+
>>823
これって俺に対して言ってるの?タイミング的にそうなんだろうけど
何言ってるのかさっぱりわからんこれが偏差値の壁か
0828名前は開発中のものです。2014/06/07(土) 16:23:38.29ID:E1S3y9cE
65歳にならないと会話が通じないみたいだから、
まだまだずっと先の話なんじゃないか
かなわないよなwww
0829名前は開発中のものです。2014/06/07(土) 16:23:59.67ID:TPPcHjY+
>>825-826
やっぱりメモリ上に保存するなら、共有したい階層の上で持つしかないよね
シングルトンはその最上位で必要以上の範囲で共有するから使うなって言われるのかな
0830名前は開発中のものです。2014/06/07(土) 16:50:22.18ID:Hn3ULKCP
>>829
「シングルトンを使うな」っていう人は
「グローバル変数は使うな」と言われる理由をよく理解しないで
さらにそれをシングルトンパターンまで勝手に拡大解釈してる人だと思って良いんじゃないかな
つまり聞き流してお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
一つしかないことを保証しないといけないものって大体入出力周りだけ?
0834名前は開発中のものです。2014/06/08(日) 12:45:52.40ID:pvmKPe4B
多人数プレイをしないなら1つでいいんじゃないかな
あとはサウンド系だと思ってるけど
0835名前は開発中のものです。2014/06/08(日) 12:47:12.67ID:5L4ensoL
デバイス周り位しか思いつかない

あとは自分の作ったクラスを他人が使う時にオブジェクトがひとつなのを意識させない、とか
その場合はモノステートの方がいいかもしれんが
0836名前は開発中のものです。2014/06/08(日) 13:19:54.87ID:5L4ensoL
使い回しされるようなデータを何回も読み込まないようにシングルトンぽい記述したりすることがあるな
それをシングルトンと呼べるかどうかはわからんが
0837名前は開発中のものです。2014/06/08(日) 13:50:50.16ID:+WMv8FJD
2DのUIでZ座標で描画の優先順位を決めてるんだけど
3D空間じゃないからわざわざレイ飛ばすより画像のインスタンス見て回ったほうが早いと思ったんだけど
UIリストへの挿入時にソートするべきなのか?

なんか正解というのがピンと来ない
0838名前は開発中のものです。2014/06/08(日) 14:02:34.45ID:pt28O8XW
UIならシーンの初期化の時に全部読み込むだろうし、その時にソートしとけばいいんじゃないの
■ このスレッドは過去ログ倉庫に格納されています