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

このエントリーをはてなブックマークに追加
1名前は開発中のものです。
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その12
http://toro.2ch.net/test/read.cgi/gamedev/1330000532/
2名前は開発中のものです。:2012/05/20(日) 22:01:46.39 ID:/AOQLV8Q
>>1
スレ立て乙
3名前は開発中のものです。:2012/05/20(日) 22:03:54.15 ID:xMXzf6LN
プラットフォームやライブラリは限定しないの?
何話せばいいの?
4名前は開発中のものです。:2012/05/20(日) 22:18:13.59 ID:m1rxCUFY
>>3
限定しない
C/C++がらみの雑談とか、初心者質問とか

元スレで、DXライブラリ + C/C++でゲーム作ってる住人が、
直接DXライブラリに関係しない、STLとか、ポリモーフィズムとか、
シーン管理とか、ポインタとか、そういう話をしてて、
スレ作ろうか、という話になったのが経緯な感じ
5名前は開発中のものです。:2012/05/20(日) 23:50:39.99 ID:yU6Yon3O
>>1 乙カレー
6名前は開発中のものです。:2012/05/21(月) 00:08:53.00 ID:AjGf5HQx
タイトル、ゲーム画面、メニュー画面、ステージ選択画面…みたいに分けるのが普通なのかな
混ぜこぜしてたら分け分からん
7名前は開発中のものです。:2012/05/21(月) 00:09:43.91 ID:fb8qDzrd
関連のあるやつは入れ子にする
8名前は開発中のものです。:2012/05/21(月) 00:32:00.15 ID:AJ0vKVNf
「スレ違いの話は他でやれ」とかいうのは嫌いだが、確かにこういうスレは欲しかった。
9名前は開発中のものです。:2012/05/21(月) 01:56:37.38 ID:ZnI/WkSf
>>8
ごめん
10名前は開発中のものです。:2012/05/21(月) 06:38:23.30 ID:yPj86Kps
>>1
昔は言語単体の質問はム板で質問する事が多かったが
正直今のム板は質問に対してまじめな答えが返ってくるかどうか怪しいからな
11名前は開発中のものです。:2012/05/21(月) 08:25:25.64 ID:L5xx/kw7
画面(シーン)管理は、StateだかStrategyだかのパターンでやってるけど
入れ子処理までは実装してなかったなー
12名前は開発中のものです。:2012/05/21(月) 10:05:21.56 ID:MNhfbtF0
シーン管理はXNAのサンプルをいろいろ改造して使ってる
13名前は開発中のものです。:2012/05/21(月) 11:17:48.78 ID:GYCQ6sMJ
ファミコンドラクエのメッセージコマンドが難しかったり。
村人が動き回るの止めて足ふみだけさせつつ、会話窓を動かすやつ。
14名前は開発中のものです。:2012/05/21(月) 15:48:25.44 ID:L5xx/kw7
>>13
歩きモーションと実際の移動量との誤差を気にしないなら、
「動かないけど足踏み」ってフラグを立てるなり、「NPC->Move()」だけを外すようにすればいい。
15名前は開発中のものです。:2012/05/22(火) 00:27:01.91 ID:fGZyqonm
「あたり判定判断クラス」にキャラクターのデータへのポインタを
「あたり判定判断クラスを保持するクラス」のコンストラクタで持たせた方がいいですか?

それとも

「あたり判定判断クラス」を保持せずに、
あたり判定の要求があったら
その場でインスタンス化して要求と一緒にキャラクターのデータへのポインタをもらった方がいいですか?
16名前は開発中のものです。:2012/05/22(火) 03:06:37.64 ID:IEgsA2mw
一体なんの話だ?
17名前は開発中のものです。:2012/05/22(火) 08:40:25.25 ID:AbC1K/ic
>>1
素人だけどたまに覗かせてもらうわ

>>15
文章が下手くそすぎてわからん
「データとその処理クラスはどう保持してる?」って訊きたいのか?
なら管理クラス作って両方保持させたらいんじゃね?

2D/3Dとライブラリとジャンルは書いた方が答えもらいやすいと思うぜ
18名前は開発中のものです。:2012/05/22(火) 12:47:51.14 ID:O/bzOsDb
今簡単なライブラリで3Dゲーム作るならDXよりseleneのがいいかな?
19名前は開発中のものです。:2012/05/22(火) 13:46:35.52 ID:IEgsA2mw
Siv3D待てるんじゃないか?ロジックだけ先に作っとけ
20名前は開発中のものです。:2012/05/22(火) 14:12:03.81 ID:IEgsA2mw
Siv3D待てるんじゃないか?ロジックだけ先に作っとけ
21名前は開発中のものです。:2012/05/22(火) 17:28:48.14 ID:te9dNttw
>>18
3Dをモデリングするツールが決まってるなら
対応してるライブラリを選んだほうが楽だと思う
大手有償ツールならツール名指しで対応してて安心だけど
シェアウェアやフリーはフォーマットに対応してても
読み込めなかったり制限があったり多いし
22名前は開発中のものです。:2012/05/22(火) 17:37:05.40 ID:te9dNttw
ついでに参考リンク

各種ライブラリ紹介スレ2
http://toro.2ch.net/test/read.cgi/gamedev/1177886529/
【2D&3D】ゲームグラフィックス【質問OK】
http://toro.2ch.net/test/read.cgi/gamedev/1209800609/
■3Dツール総合@ゲーム製作■
http://toro.2ch.net/test/read.cgi/gamedev/1094144808/


>>19
これどんなライブラリなの?
日本人が作ってるって事で興味深いな
公式サイトらしき所を見てもほとんど情報でてないね
23名前は開発中のものです。:2012/05/22(火) 17:56:27.46 ID:te9dNttw
>>6
画面遷移でわけてる

>>8
スレのタイトルっていわばインターフェースだと思うんだよ
目的に沿った質問をしやすいタイトルのスレは、ユーザビリティ向上に必須だと思う
だから、言語別・ライブラリ別にたくさんスレ立てたほうがいいと思う

>>10
あっちはあっち、こっちはこっちだよな
ム板や色んな板と連動とろうとすると矛盾でるから
こっちで完結していいと思う

>>15
ゲームによって違うんだろうけど
if (obj1->collision(obj2->collision()))
{
  /*hit!!*/
}
って感じがわかりやすいんじゃね

collision(obj1->pos, obj2->pos)
のほうが見やすいかな
24名前は開発中のものです。:2012/05/22(火) 18:17:45.58 ID:ew4b5/bW
俺は、以前まではそのように画面ごとで処理を分けてたけど今はもう全部同じにしちゃった。
「タイトル画面」というキャラを作って操作して、そこでステージセレクトを選ぶと
「ステージセレクト画面」というキャラを作って、それ以外のキャラを消す、とか。

こうすると新しい画面を作りたいときに、すぐに追加できて凄く楽だった。

一般的な方法かどうかは知らん。
25名前は開発中のものです。:2012/05/22(火) 18:21:56.42 ID:eT4XUhop
(どういう状況を想定してるのかがサッパリ分からない…)
26名前は開発中のものです。:2012/05/22(火) 20:21:26.35 ID:uHnpkRvx
シーン管理の話でしょ。
27名前は開発中のものです。:2012/05/22(火) 21:40:46.06 ID:eT4XUhop
そりゃ話の流れを考えれば分かるけど
28名前は開発中のものです。:2012/05/22(火) 22:19:31.11 ID:4VM6HR6S
>>19
そういえばそれあったね、忘れてた
見た感じ年内には出来そうだけど…
29名前は開発中のものです。:2012/05/23(水) 10:44:09.36 ID:b4o10B2o
人いるかな? クラスのメンバ構造体のポインタを引数に渡すとエラーを吐く。
何回やっても「CClass::TStructをTStructに変換できません」と起こるのよ。
助言求む。
30名前は開発中のものです。:2012/05/23(水) 11:20:19.27 ID:b4o10B2o
事故解決
31名前は開発中のものです。:2012/05/23(水) 11:34:17.84 ID:a5ppZSNn
おめ
何がどうなってどうしたかを書いてくれると情報共有できて助かる
32名前は開発中のものです。:2012/05/23(水) 13:54:53.18 ID:su87BFwO
typedef使ったのかな
33名前は開発中のものです。:2012/05/23(水) 15:52:18.93 ID:b4o10B2o
クラスのメンバ関数に同じメンバの構造体配列のポインタを渡して処理させようとしたんだけど、配列で同じメンバだったら要素を指定する値を渡せばいいだけだった。
目的は構造体(敵キャラクター)の情報をポインタで参照させてルーチンで動かすことだったんだけど、これに結構な時間を食われたわ。解決法は無理矢理だけどな
しかし、一人でゲ製はきついなあ。傍で優しく教えてくれる美少女プログラマが欲しい
34名前は開発中のものです。:2012/05/23(水) 16:52:38.35 ID:a5ppZSNn
よくわからんがこうしたって事?

class myData
{
};


class Hoge
{
Hoge(){}
~Hoge(){}
myData *arry[10];
void shori (int x){ arry[x]を弄る処理; };
};
35名前は開発中のものです。:2012/05/23(水) 18:30:57.39 ID:3SO9CJHe
まだ良く分からなくて想像妊娠だけど、typenameで根本解決するっぽい。
36名前は開発中のものです。:2012/05/23(水) 22:24:42.87 ID:IjYu3jeM
すいません、何度か過去に若干似たような質問をしてしまったのですがまとめたので改めて質問させてください。

クラスの配列メンバを、コンストラクタで動的に初期化(インスタンス化?)することはできるでしょうか?
コンストラクタに与えられた値の分だけの要素数を持った配列をメンバにしたいです。
37名前は開発中のものです。:2012/05/23(水) 22:36:04.71 ID:wZno0p8L
配列じゃなくてvectorをメンバに持てばいい
初期化子を使ってvectorのコンストラクタに値渡せばできる

class Hoge
{
std::vector<int> m_array;

Hoge(int num) : m_array(num){}
};

つーか、vectorなら後でどうこうできるから別にこんなことしなくていんだが

38名前は開発中のものです。:2012/05/23(水) 22:48:10.25 ID:okQmDLbt
>>36
動的に配列のメンバー変数のサイズを決める事はできないと思います。
擬似的な方法として以下ではどうでしょう?

1)テンプレートで要素数を指定する。
template<UINT n>class Hoge {
DATA data[n];
};

Hoge<3> hoge3;
Hoge<2> hoge2;

サイズが違うと違う型扱いになる。
Hoge<3>*で&hoge2は受け取れない(逆も)。

(2)データを配列で持たずポインターで持つ。
class Hoge {
explicit Hoge( UINT n ){ data = new DATA [n]; }
~Hoge(){ delete [] data; }

DATA* data;
};

Hoge hoge3(3);
Hoge hoge2(2);

Hoge*は&hoge2も&hoge3でも受け取れる。
39名前は開発中のものです。:2012/05/23(水) 23:05:58.54 ID:IjYu3jeM
>>38
コンストラクタの手前の装飾子と、UNITという定義はc++の機能なのでしょうか?
みた感じそれが1番わかりやすそうです。
40名前は開発中のものです。:2012/05/23(水) 23:11:42.60 ID:IjYu3jeM
>>37
stdは一個や二個使うんじゃなくて次作る時に一気に活用したいので・・・
すいません。今はめんどくさいです。
41名前は開発中のものです。:2012/05/23(水) 23:25:09.30 ID:IjYu3jeM
>>39
すいません、調べればわかることでしたね・・・

ただ、コンストラクタでインスタンス化してポインタに代入しても、
実体はコンストラクタのスコープの中だけで
コンストラクタが終わるとデータも無くなる・・・
ということはないのでしょうか?
42名前は開発中のものです。:2012/05/24(木) 00:08:46.35 ID:h3LSjb5w
ID:IjYu3jeMはmapを使いたいって言ってた人だろ?
諦めんなよ
43名前は開発中のものです。:2012/05/24(木) 00:45:10.53 ID:mZT3BYan
>>41
newで確保した領域はdeleteされるまで存在しますよ。
なのでデストラクタ―が呼ばれるまで大丈夫です。

気にしているのは、ポインターdataの寿命かと思いますが、
dataはクラスのメンバ変数なのでこちらも大丈夫です。

dataの初期化はコンストラクタの初期化子でも設定できるみたいです。
こちらの方が初期化として、意味的に正しいのだと思います。

Hoge( UINT n ) : data( new DATA [n] ){}
44名前は開発中のものです。:2012/05/24(木) 06:29:42.60 ID:sYTZ8FZ7
いろいろ環境や目的もあるだろうからあれだけど
std::vectorやstd::dequeを参照で渡すほうが遙かに楽だと思うぜ
まあイテレータの宣言はダラダラ長くてめんどくさいけど
45名前は開発中のものです。:2012/05/24(木) 08:26:33.69 ID:qNAXiXfS
C++11ならAutoさんが活躍
46名前は開発中のものです。:2012/05/24(木) 09:19:00.25 ID:n/ZlLmSI
>>43
とても参考になりました!
ありがとうございます!!

>>44
こっちのほうが楽じゃないですか?
自分の無知から来る疑問ですけど
47名前は開発中のものです。:2012/05/24(木) 09:33:53.29 ID:AVLO1dG0
絶対vectorのほうが楽。
new/deleteで神経質になる必要が無いし、配列サイズ変更も楽。
>>37でもいいし、漏れはコンストラクタで
Hoge(int num){m_array.resize(num,0);}
にする。引数の0は初期値。

あえてvector使わないときは、
せいぜい定数代わりの配列使うときくらいかな?
48名前は開発中のものです。:2012/05/24(木) 10:20:14.62 ID:YnP/Ncq+
自分を初心者だと思ってるうちは、STLを安易に使わないほうがいい。
中級者向け。
49名前は開発中のものです。:2012/05/24(木) 11:53:20.03 ID:Mn2K1W8a
STLこそ初心者向けだろw
50名前は開発中のものです。: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名前は開発中のものです。:2012/05/24(木) 13:31:37.34 ID:YnP/Ncq+
>>49
入門書にSTLが載っているが、それを理解したら入門者じゃないんだなw
とりあえずC++入門3分の1ぐらい読んで、作り始めちゃっているようなやつが初心者なわけで。
52名前は開発中のものです。:2012/05/24(木) 14:00:10.53 ID:cjBLATMC
Cの本なんてほとんど読んだ事もなくて、STL? vector? インスタンスとかメソッドとか何それ?
な状態でゲームを数本完成させた俺は初心者ですか中級者ですか。
53名前は開発中のものです。:2012/05/24(木) 14:11:15.14 ID:0uzx/Lw1
ゲームの内容や規模によるだろ
規模が大きくなるにつれて低レベルの処理が重要になるからSTLを選ぶかどうかが重要になる
小規模なら力技で何とかなるし
54名前は開発中のものです。:2012/05/24(木) 15:26:20.14 ID:Mn2K1W8a
STLを使うのは誰でもできるだろ。
あれと同じ機能のクラスを実装しろってんなら
中級以上じゃないと無理だが。
55名前は開発中のものです。:2012/05/24(木) 15:34:03.30 ID:9WXEv1xv
>>52
間違いなく初心者
56名前は開発中のものです。:2012/05/24(木) 15:35:30.76 ID:/ghVU8JG
>>52
他人に自分のコードを説明できなきゃ初心者
他人のコードを読めて理解できれば中級者
57名前は開発中のものです。:2012/05/24(木) 18:15:50.25 ID:CY70W+Ee
クラスの中に int main()
58名前は開発中のものです。:2012/05/24(木) 18:37:54.09 ID:/ZaEqx4s
初級者中級者ぐだぐだ言ってるやつは初心者に決まってるだろw
59名前は開発中のものです。:2012/05/24(木) 20:00:14.96 ID:YnP/Ncq+
STLは難しいとされてるのが一般的じゃないの?
そりゃプリミティブ型でpush_back()しか知らないで使うならいいけど、
コピーコンストラクタとかスマートポインタに関する
理解をもたないでやったら謎バグに嵌るのが目に見えるわ。
60名前は開発中のものです。:2012/05/24(木) 20:11:52.79 ID:qNAXiXfS
別に嵌っても良いんでない?
勉強になるし
61名前は開発中のものです。:2012/05/24(木) 20:37:53.40 ID:9WXEv1xv
スマートポインタはSTLじゃなくてboost使ったほうがいいよ。
スコープで一時的に使いたかったらunique_ptrでいいけど。
62名前は開発中のものです。:2012/05/24(木) 20:49:46.55 ID:IK85TX04
STL使うとバグに悩まされるけど、自前でlistだのmapを実装するとバグはないらしい
63名前は開発中のものです。:2012/05/24(木) 20:55:53.89 ID:9WXEv1xv
いやいやいや、そぉかぁ?www
昔のSTLならともかく、今はそれはないでしょーw

ゲームじゃないけど、業務にバリバリvectorとlistとsetとmap使って遭遇しなかったよ。
STLportだけど。
64名前は開発中のものです。:2012/05/24(木) 20:59:05.52 ID:iewKyvkB
>>62
妄想乙w
65名前は開発中のものです。:2012/05/24(木) 21:03:23.03 ID:IK85TX04
いや、>>59の主張を言い換えただけなんだが・・・
66名前は開発中のものです。:2012/05/24(木) 21:09:15.76 ID:9WXEv1xv
俺にはauto_ptrなどのスマーポインタをわけわからんで使ったときの挙動と解釈した。
STL自体のバグには言及してないっしょう。たぶん。
67名前は開発中のものです。:2012/05/24(木) 21:14:13.92 ID:hIKRkdFB
STLなんて、std::vectorとstd::mapにstd::string出し入れするだけなら、
解説サイトの例文をコピペするだけで使えるじゃん

コピペで定番の処理ができるものについては、
初級のうちからガンガンやっといていい

自分で考えるところが出てくるようなものは、多少プログラムに慣れるまでは
迂闊に手を出さないほうがいいかもしれないけど
68名前は開発中のものです。:2012/05/24(木) 21:47:13.31 ID:YnP/Ncq+
コピペおまじないプログラムだとこうなる
http://toro.2ch.net/test/read.cgi/gamedev/1330000532/796
69名前は開発中のものです。:2012/05/24(木) 21:55:02.55 ID:8FH0wSaN
仕様を理解せずに使えばどんなライブラリだってバグの温床になるよ。
問題は自分の不勉強をライブラリのせいにする無能さ加減。

原因追及は出来ないけどSTLを使うとバグるとか言う人間はその典型例。
きっちり検証した上で、ここの実装がおかしいとか指摘できるならその限りにあらずだけどね。
70名前は開発中のものです。:2012/05/24(木) 23:31:08.11 ID:n/ZlLmSI
newしたクラスのメソッドにアクセスして
テスト用の文字出力みて満足してデリートしないでウィンドウ閉じた
(´・_・`)
71名前は開発中のものです。:2012/05/25(金) 00:11:59.72 ID:9i1PDVc5
イテレータとか使い出したら初心者が混乱するのは分かるが、
vectorくらいなら初心者でもぽんぽん使っていいと思う。
インスタンス管理で躓くならstl云々ではなくてC++の勉強しなおしが要る。

>>70
あー、これどうなるんだろうな。
最近のOSだと良い感じにしてくれそうな感じはするが。
72名前は開発中のものです。:2012/05/25(金) 01:55:38.79 ID:GIl7/nNl
73名前は開発中のものです。:2012/05/25(金) 05:50:35.88 ID:7a2EC8PQ
>>70
>ウィンドウ閉じた
プロセスを閉じればプロセスで使っていたヒープは解放される。
つまりメモリリークはプロセスの内側のこと。
74名前は開発中のものです。:2012/05/25(金) 07:37:23.51 ID:NHlde/d0
碌に作ったことないけどmainクラスからtitleとかgameとか呼び出してその中でwhileループ、
クリアとかしたらmainに戻ってまた他の項目呼び出すのが簡単に出来そうだな
75名前は開発中のものです。: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名前は開発中のものです。: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名前は開発中のものです。:2012/05/26(土) 14:51:45.38 ID:jFmnTHnO
thisでポインタ
83名前は開発中のものです。: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名前は開発中のものです。:2012/05/26(土) 22:42:16.01 ID:U+nTXa0c
.h と .cpp 分けるのは必須だな。
85名前は開発中のものです。: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名前は開発中のものです。:2012/05/27(日) 00:26:41.53 ID:ByeFImNB
オンライン対戦ってどうやるんですか
87名前は開発中のものです。:2012/05/27(日) 01:22:42.60 ID:jTp1UMkC
C/C++関係ねえw

ネットワーク接続機能のあるライブラリ使う
88名前は開発中のものです。:2012/05/27(日) 08:50:30.87 ID:2c7du0Oa
DirectPlayとか。
89名前は開発中のものです。:2012/05/27(日) 09:48:40.07 ID:Sq25nKDW
VCって何年版がおすすめ?
90名前は開発中のものです。:2012/05/27(日) 10:22:53.21 ID:DTmcX9vm
C++11触りたいなら2010、それ以外は一長一短
91名前は開発中のものです。:2012/05/28(月) 07:40:52.97 ID:uR2hVdYz
オンラインはな…鯖がな…
92名前は開発中のものです。:2012/05/28(月) 07:56:12.09 ID:RkjNhW6P
いきなりですが2Dエフェクトってどういう作り方してますか?
数枚画像を用意して、あとはプログラム側で加工するのか、
元から透過画像とかを全部用意して表示するだけなのか…一般的なのはどれだろう
93名前は開発中のものです。:2012/05/28(月) 08:10:15.29 ID:IVkwT0S2
>>89
特に理由がなければ最新でいいと思うよ
古いバージョンだと色々と対応してなくて面倒

>>92
グラフィック用意して透過や加算で表示
94名前は開発中のものです。:2012/05/28(月) 09:37:38.39 ID:8NkasfYy
>>92
スピード的にエフェクト画像は元から用意しとくべき。
ランタイムでは位置とスケールと透過度を変えるくらいだな。
95名前は開発中のものです。:2012/05/29(火) 00:47:50.68 ID:ajD2ZMcH
http://marupeke296.com/TIPS_No13_ClassArrayInitialize.html
ここの一番下のplacement newを使ってクラス配列にコンストラクタを使いたいんですけど
一番下って動的に増減できないですよね?

クラスAのコンストラクタで、動的に他のクラスB配列(Bコンストラクタによる初期化機能付き)をインスタンス化するにはどうしたら良いでしょうか?

クラスBを、クラスAのコンストラクタの引数分、配列にしてメンバにしたいです。
96名前は開発中のものです。:2012/05/29(火) 03:11:27.66 ID:ZvK6euHz
ここの来ると
「寄ってくるな」「来るんじゃねえよ」

こないと、何故かちょっかいが来る

不思議なもんだ

97名前は開発中のものです。:2012/05/29(火) 03:34:23.96 ID:ZvK6euHz
ホモ本ばっかだけど
男だったんだっけか?
98名前は開発中のものです。:2012/05/29(火) 04:04:39.91 ID:ZvK6euHz
なんでBLなんだよ orz
99名前は開発中のものです。: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名前は開発中のものです。:2012/05/29(火) 09:06:33.41 ID:HdwzMGJO
vectorでポインタ持たせた方がずっと良い。
動的なサイズ変更とか楽だし。
コンストラクタでnewしてデストラクタでdeleteすれば
別にインスタンス管理で悩むことも無いし。
103名前は開発中のものです。: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名前は開発中のものです。:2012/05/29(火) 09:37:49.28 ID:8hClbexe
>>103
sizeをconstにすれば大丈夫な気がしてきました!
ありがとうございます!
105名前は開発中のものです。:2012/05/29(火) 11:11:05.67 ID:kEO6PQW4
そもそも同じ引数でいいなら配列版のplacement newてのがあってだな
delete要らないったってデストラクタに意味があるとか使わなくなったから消したいときは
デストラクタとplacement deleteを両方呼ばなきゃいけないし
結論としてvector使え、管理面倒ならvector<shared_ptr<T> >
106名前は開発中のものです。:2012/05/29(火) 11:31:41.26 ID:HdwzMGJO
vectorだと要素数が固定じゃなくても、size()があるしね。
別のコンテナでもイテレータがあるし。
頑なにvector回避する理由なんて無いだろ。
107名前は開発中のものです。:2012/05/29(火) 11:54:40.08 ID:0OI7v8Tb
そもそもSTLを回避してる理由ってなに?
108名前は開発中のものです。:2012/05/29(火) 13:18:32.52 ID:3ho6bi3y
コピーコンストラクタが分かっていないとか、
デストラクタの呼ばれるタイミングを理解していないとか、
メンバのポインタがコピーされて二重解放するとか、
仕様を分かっていない馬鹿がバグを出すには十分だからだろう。
無能だからSTLを使わない、その理由に疑問の余地は微塵も無い。
109名前は開発中のものです。:2012/05/29(火) 14:08:39.03 ID:ydqxZFnO
言えてる気がする。
俺もどっちかっつーと馬鹿な方だから、STLが怖くて
自作のコンテナ使ってる。

出来合いのものを使った方が機能も多くて堅牢で
ずっと良いんだろうけどさ。
110名前は開発中のものです。:2012/05/29(火) 16:51:46.79 ID:HdwzMGJO
>>109
漏れも最初はそうだったけど、使い始めると一瞬で慣れるよ。
ググったら日本語で解説や使用例が山ほどヒットするのがデカイ。
111名前は開発中のものです。:2012/05/29(火) 17:43:50.08 ID:uK14SeXM
STLごときで上級者気取る奴は明らかに初心者
112名前は開発中のものです。:2012/05/29(火) 17:47:49.24 ID:ajD2ZMcH
>>103
これってコンストラクタ??
引き数を渡してるの?
113名前は開発中のものです。:2012/05/29(火) 18:28:57.24 ID:WcnaYjLE
>>112 >>103
Aのコンストラクタ内で、Bのコンストラクタに引数渡して初期化してる
m_b … Aのメンバ変数のBの配列
size … Bの配列のサイズ。Aのコンストラクタの引数とか
b … Bのコンストラクタの引数
114名前は開発中のものです。:2012/05/29(火) 18:35:32.92 ID:ajD2ZMcH
>>113
コンストラクタの返値を代入してるように見える・・・
「コンストラクタは特殊で、こういう使い方もできる」
って理解でいい?
115名前は開発中のものです。:2012/05/29(火) 19:06:36.23 ID:CIJM7t3P
一時オブジェクトをコピーコンストラクタでコピーしてる
116名前は開発中のものです。:2012/05/29(火) 19:12:41.63 ID:ZxX1trWI
むしろそっちのやり方のほうがSTLコンテナより高度
117名前は開発中のものです。:2012/05/29(火) 19:18:19.05 ID:CIJM7t3P
いやどっちも全然高度じゃないし
118名前は開発中のものです。:2012/05/29(火) 19:33:39.81 ID:oMsrWIHY
メモリプール&自作動的配列か
119名前は開発中のものです。:2012/05/29(火) 19:36:33.07 ID:HdwzMGJO
俺もさっぱりわからん。placement_newとかなんぞやw
オブジェクトの配列なんて普段STLコンテナしか使わないですしおすし
120名前は開発中のものです。: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のコンストラクタの引き数*/);
  }
 }
};

↓これをちょっと変えたんですけど
http://marupeke296.com/TIPS_No13_ClassArrayInitialize.html
123名前は開発中のものです。:2012/05/29(火) 21:23:59.83 ID:5MrgPwME
placement new とか 引数付きコンストラクタはできれば避けたほうがいいな。
124名前は開発中のものです。:2012/05/29(火) 21:36:10.64 ID:5MrgPwME
>>122
できないよ。全くもっておかしい。
125名前は開発中のものです。:2012/05/29(火) 22:13:10.43 ID:ajD2ZMcH
間違えました
hugoじゃなくてBでした
126名前は開発中のものです。:2012/05/29(火) 22:27:07.32 ID:ajD2ZMcH
あ、違う
new(&B+i) kurasuB(/*Bのコンストラクタの引き数*/);
こうでした。
int型を足すのがよくわからないですが、リンク先の文章ではクラスの配列をintでずらしてましたし・・・
127名前は開発中のものです。:2012/05/29(火) 23:19:35.98 ID:Rb8xQrUK
こうやって理解しないままでたまたまコンパイルできちゃったときにバグが蓄積されていくわけだな
128名前は開発中のものです。:2012/05/29(火) 23:27:07.76 ID:CxAL5fmd
どうも2Dキャラの画像パターンが早いと思ったら>と<が逆だった、紛らわしい
ifとかだと逆になるんだっけ
129名前は開発中のものです。: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名前は開発中のものです。:2012/05/30(水) 00:30:51.36 ID:2jOUDrUI
悪いことは言わん
Placement newのことはひとまず忘れるんだ
131名前は開発中のものです。: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名前は開発中のものです。:2012/05/30(水) 01:47:19.26 ID:UrD0aw2e
ちなみに placement new だと。

for(int i=0;i<num;i++){
new( B+i ) kurasuB( "aa" );
}
133名前は開発中のものです。:2012/05/30(水) 07:05:58.24 ID:ZKjgmpWL
で、それが出来るとどんなゲームが作れるの?
134名前は開発中のものです。:2012/05/30(水) 07:48:00.61 ID:UrD0aw2e
無能には作れないゲームがつくれます
135名前は開発中のものです。:2012/05/30(水) 08:22:42.69 ID:1zhA8gll
>>131
じゃあ>>132のほうが簡単じゃないですか
numをconstにすれば多分安全ですし・・・
136名前は開発中のものです。: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名前は開発中のものです。:2012/05/30(水) 08:37:55.19 ID:kfkMhAbK
少々くどいな
そろそろ他の話題が出てこないかな
138名前は開発中のものです。:2012/05/30(水) 08:54:24.92 ID:dGAr2JTI
非ポインタ配列・コンストラクタで初期化値渡す、ってのに拘ってたら
何時までたってもゲーム作れんぞ。
コーディング中にゲームデザインの見落とし・見直しで嫌ほど悩むのに。

ポインタでの管理が安全じゃないって思うのは単に理解不足。
九九の答えが合ってるか分からないから足し算で計算するのと同レベル。
139名前は開発中のものです。:2012/05/30(水) 09:35:26.80 ID:AhB/MNAS
動いたとしてもメモリリークしまくってそう
140名前は開発中のものです。:2012/05/30(水) 09:52:37.13 ID:UrD0aw2e
>>135
俺がそちらを進めるのは彼がポインタや参照を理解してないとみたから。
質問の文からみて非常に程度が低い。
とりあえず無難なやりかたで進めながら勉強するか、一生無理だね。。
141名前は開発中のものです。:2012/05/30(水) 10:10:01.57 ID:RKjVMfvb
ポインタと参照がわからずつかえないなら
VBでやったほうがわかりやすいし生産効率あがるとおもう
VBで不便に感じたことがCのポインタで便利になったと思え
理解がはやいんじゃないかな
142名前は開発中のものです。:2012/05/30(水) 11:23:54.10 ID:PCmhSwHy
>>140
それぼくです(´・_・`)
143名前は開発中のものです。:2012/05/30(水) 15:00:40.72 ID:7evXqAvV
少し前までシーン遷移は継承したクラスのポインタでやってたが
最近テンプレートの特殊化を知って少しずつ処理を置き換えてる

多少手間増えるけど、コンパイル時にエラー出してくれるのはやっぱいいね
144名前は開発中のものです。:2012/05/30(水) 15:48:03.89 ID:RKMJ5hGw
>>149
具体的にどんなん?
145名前は開発中のものです。:2012/05/30(水) 16:08:58.02 ID:P0UtVE4F
みんな頭良さそうだな、俺なんて順次選択繰り返しのゴリ押しだけでゲーム作ってるのにCプログラマ名乗ってるわ
146名前は開発中のものです。:2012/05/30(水) 17:46:30.28 ID:UOZ4aZwc
ぶっちゃけ画像と音声と条件文あればどうにでも
147名前は開発中のものです。:2012/05/30(水) 17:58:02.14 ID:dGAr2JTI
この板ではC++だろうがHSPだろうがツクールだろうが
ゲームを完成させるのが一番大事。
ただ、C++選んでる奴は既存のシステムや
枠組みに囚われたく無い奴が比較的多いんだろうな。
となれば、それを実現するために
必要な知識や技術も自ずと増えていくわけで。
148名前は開発中のものです。:2012/05/30(水) 17:58:19.30 ID:rNjTrxi5
ジェネリックプログラミングか
本当に使いこなせるのは天才だけだと思ってる
149名前は開発中のものです。:2012/05/30(水) 21:43:05.95 ID:GqVx2abs
言語によって、
遅くて1秒間60フレ出ないとかGC対策が面倒とか、
ライブラリ自体に制約があってやりたいことができないとか、
いろいろ制約あるけど、まぁC++とDXライブラリならそういう制約は少ないから選んだわ

知識や技術は別に特別なものは必要ないと思ってる
他の言語と共通する程度と、あとちょっとC++独自のを知ってる程度で十分かと
150名前は開発中のものです。:2012/05/30(水) 21:51:08.88 ID:0SZX+VUb
>>149
で、ゲームできたの?
151名前は開発中のものです。:2012/05/30(水) 22:10:25.90 ID:P0UtVE4F
この板の中じゃどこ行っても万能すぎるお決まりの文句だよな
152名前は開発中のものです。:2012/05/30(水) 22:35:35.79 ID:GqVx2abs
>>150
鋭意製作中w
153名前は開発中のものです。:2012/05/30(水) 22:58:58.18 ID:vC8mOnYT
一番簡単なのってHSP?DX?
154名前は開発中のものです。:2012/05/30(水) 23:03:34.46 ID:GqVx2abs
小さい仕様であればあるほどHSPのほうが簡単になる
規模が大きくなって、HSPだとめんどくせーってなったらDXライブラリもいい
155名前は開発中のものです。:2012/05/30(水) 23:10:22.61 ID:dGAr2JTI
HSPってクラス扱えないんだよな?
俺には無理w
156名前は開発中のものです。:2012/05/30(水) 23:11:36.82 ID:gc4Q0khA
>>151
でも、他人があえて言う意味って無いよな
157名前は開発中のものです。:2012/05/30(水) 23:14:19.90 ID:e5z2kRn1
モノを完成させたことも無いヤツが、かじった程度で御託を並べるなと言うことだろう。
158名前は開発中のものです。:2012/05/30(水) 23:28:49.34 ID:GqVx2abs
ま、そういうこったなw
小さい仕様のは作ったけど今作ってる奴は完成してないからな
159名前は開発中のものです。:2012/05/31(木) 00:03:48.81 ID:qSE9w4FD
javaとかC#でゲーム作ったことないのにGCがどうこうとかね。
C++の80%が遅いのに、遅いDXライブラリを使う不思議。
160名前は開発中のものです。:2012/05/31(木) 00:09:04.71 ID:3lgmsZci
作った作ってないって言っても0か1じゃねーんだし。
俺は数本ほど2Dゲームを作った経験があるけど、「どうせミニゲームだろ」と思われるだろうだけだろう。

ぶっちゃけミニゲームかそうでないかは、データ量の違いがほとんどを占めると思うけどw
161名前は開発中のものです。:2012/05/31(木) 00:09:52.31 ID:X2kmab9H
横アクション作ってるんだけどジャンプ中に移動が出来なくて困った
ジャンプ処理と移動処理はやはり両方通るようにしないとダメか

162名前は開発中のものです。:2012/05/31(木) 01:16:53.38 ID:3lgmsZci
本来、ジャンプ中に移動できるほう(いわゆるスーパーマリオジャンプ)がおかしいんだけどねw
163名前は開発中のものです。:2012/05/31(木) 06:17:31.08 ID:k8PTBoUk
魔界村はジャンプ中に移動できないが、
あれはプログラマが初心者だったからなのか・・・
164名前は開発中のものです。:2012/05/31(木) 07:18:02.09 ID:M5YppKNB
まあジャンプの出来に関しては作り手のこだわり次第だろ
デコジャンプで面白いゲームもあれば放物線でもつまらないゲームもある
165名前は開発中のものです。:2012/05/31(木) 08:43:38.66 ID:98ut8STl
ジャンプはステージのデザインと切り離しては考えられないしな

C++は処理速度・ライブラリの豊富さ・エラーチェック・日本語がまともに通る、点に魅力感じるなぁ
HSPは「メインループとはなにか?」ってレベルの勉強には使えるかもだが、それ以降は・・・

>>160
そういやミニゲームって何だろうな
RPGの中にポーカーが入っていれば明らかにミニゲームだが
ではポーカーゲームはミニゲームなのか? とか。まあスレ違いだが
166名前は開発中のものです。:2012/05/31(木) 20:55:45.16 ID:qCagfYPX
リアルでないこと、現実シミュレーションと違うことが、
ゲームの面白さに繋がることもあるよな
と思ったがこれもまぁスレチか
167名前は開発中のものです。:2012/05/31(木) 21:53:32.35 ID:AsMcXKmB
繋がることもあるってなんだよw
現実シミュレーションが面白さに繋がってるゲームなんて一握りしかないだろう
だったら現実でやれって話
168名前は開発中のものです。:2012/05/31(木) 22:44:36.71 ID:qCagfYPX
放物線・現実シミュレーションが面白いゲームもあるし、
ジャンプ中に移動できるジャンプが面白いゲームもある

片方が一握りしかないとか、前者をやれ、とかは思わんなあ
169名前は開発中のものです。:2012/05/31(木) 23:12:19.50 ID:tiWdIkDb
現実でFPSをやったら殺人罪になるし、
カーレースをやったら事故死か白バイのお世話になるし、
ジャンプアクションをやったら転落死するし、
恋愛シミュレーションをしたら変態になる。
170名前は開発中のものです。:2012/05/31(木) 23:38:40.80 ID:CSiaqjKe
おまいらはboost使ってる?
171名前は開発中のものです。:2012/05/31(木) 23:41:56.86 ID:XVqRqiij
なんですかそれは
172名前は開発中のものです。: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名前は開発中のものです。:2012/06/01(金) 00:06:38.86 ID:2hjVHnyz
流行に流されない俺様は自前ライブラリを使っていますよ?
人間、使い慣れた道具が一番でしょ。
175名前は開発中のものです。:2012/06/01(金) 00:18:08.05 ID:jiOBWGhf
unityとか何それ、美味いの?レベル。
物理エンジンはとにかく、
他はインターフェースの面でしか楽にならんでしょ。
インターフェースのウェイトが重めのゲームとは縁が無い。
176名前は開発中のものです。:2012/06/01(金) 00:22:36.93 ID:TU92J+Oa
>>173
ogreは機能豊富だけどapiデザインはもう時代遅れ
対応プラットフォームも最近だと物足りない
あえて今使う理由はないかな
177名前は開発中のものです。:2012/06/01(金) 00:23:33.07 ID:jiOBWGhf
>>172
なんか使えそうで使わないんだよね。
最近、シリアライズで使おうと思ったんだけど、
随分ややこしそうな処理してるんで結局やめた。
スマポで使ってる話は聞くけど、俺スマポ使わんし。
178名前は開発中のものです。:2012/06/01(金) 00:27:03.18 ID:fycJbMU0
>>176
今だとC++ではどんなのがタイムリーなの?
179名前は開発中のものです。:2012/06/01(金) 00:57:23.11 ID:GysQPsBs
>>176
具体的にどの辺りが時代遅れなの?
180名前は開発中のものです。:2012/06/01(金) 03:56:37.85 ID:bIBm1EvQ
>>169
それらが現実シミュレーションだって?冗談だろw
181名前は開発中のものです。:2012/06/01(金) 06:12:45.95 ID:YzCF0h/I
>>175
unity以外にwin, mac, ps, xbox, iphone, androidに対応してる
エンジンなんかあるのか?
182名前は開発中のものです。:2012/06/01(金) 07:14:24.44 ID:2hjVHnyz
急にステマがわいてきたな
183名前は開発中のものです。:2012/06/01(金) 07:18:32.15 ID:U3o9Kj54
>>170 Xpressive使ってる

>>173 Irrlicht使ってる。新しくはないが素直でいいエンジンだと思う
日本語には弱いけどね

RPG作ろうとしてるんだがゼロから作るとデータの保存・読み出しが面倒だ
Xmlで保存しちまうかw
184名前は開発中のものです。:2012/06/01(金) 08:00:25.82 ID:LAk2EFKF
>>181
そんなに対応する必要あるの?
185名前は開発中のものです。:2012/06/01(金) 08:24:20.72 ID:zQI52x1x
>>184
macはいらないけど、その他は必要でしょ。
186名前は開発中のものです。:2012/06/01(金) 08:35:27.13 ID:TU92J+Oa
>>181
shiva + marmaladeならもっと範囲は広いのではないかと思うが、
marmaladeのゲーム機サポートは最近情報が隠れ気味...
今はideaworkgamestudioチームによる個別移植が必要なのかも。昔はそんなことなさそうだったのだけれど。
187名前は開発中のものです。:2012/06/01(金) 08:42:49.00 ID:46HM1XVZ
>>185
winか携帯だけでいいんじゃね
インディーズでxboxならxnaのほうが楽につくれるし
ps3は会社で専用やつがきまってることがほとんどだし
188名前は開発中のものです。:2012/06/01(金) 09:55:01.79 ID:jiOBWGhf
>>181
現状、windows向けにしか興味ないですしおすし
189名前は開発中のものです。:2012/06/01(金) 10:00:27.62 ID:XmKAMpEh
Ogre触っているけどそれよりもナウなライブラリがあると聞いて
190名前は開発中のものです。:2012/06/01(金) 10:19:57.82 ID:TU92J+Oa
>>189
gritとかmaratisとか
機能面ではogreユーザーには不足かもね
191名前は開発中のものです。:2012/06/01(金) 11:52:56.10 ID:3z3bXcMg
海外のゲームエンジンはメジャーなものでもフルスクリーン切り替えができないものがあって驚く。

>>190
gritは内部でogre使ってるって書いてるような。
192名前は開発中のものです。:2012/06/01(金) 13:51:27.62 ID:TU92J+Oa
>>191
内部で、ね
193名前は開発中のものです。:2012/06/01(金) 14:10:59.17 ID:fDBKT1KS
>>190
ありがと、今度みてみるわー
194名前は開発中のものです。:2012/06/02(土) 18:30:36.97 ID:o2lhntQH
フルスクリーン対応って今更必要か?
液晶モニタももはや新品はHDしか売ってないし、規格は統一されてないみたいだし
195名前は開発中のものです。:2012/06/02(土) 18:34:50.83 ID:JwZ2BVqY
C/C++と関係するかは微妙だが…
コアなプレイヤーからの要望があって初めて搭載を検討するくらいでいんじゃね
196名前は開発中のものです。:2012/06/02(土) 18:43:21.55 ID:yH+d3ni3
その場合ティアリングはどうしてるんかな?
197名前は開発中のものです。:2012/06/02(土) 18:51:16.02 ID:a4OlxP0h
>フルスクリーン対応って今更必要か?

少なくとも俺はフルスクできないゲームはやる気がかなり減退する。
目が悪いからできるだけでかい画面でやりたいし、
全てのPCユーザーが最新環境もしくはそれに近いスペックの環境でやってるわけではない。
198名前は開発中のものです。:2012/06/02(土) 19:15:04.43 ID:/NYjtNV7
PS3でゲームアーカイブスを遊んだり、3DSでDSゲーを遊んだりするとき、
画像サイズを無理やり引き伸ばすか、それとも整数倍(1倍含む)にしてレターボックスにするか設定できたりするけど、
前者の需要はかなり多いと聞く。
199名前は開発中のものです。:2012/06/02(土) 20:07:09.97 ID:JwZ2BVqY
画像サイズを任意サイズに引き伸ばすのは割と優先度高い機能と思う
フルスクリーンなしでも、画像引き伸ばしのほうは必須に近いかと
200名前は開発中のものです。:2012/06/02(土) 21:11:23.06 ID:Fx7ZWIqp
液晶ディスプレイが普及している現在、最適解像度以外に変更するようなフルスクリーン化をするぐらいなら、
最上位ウインドウを全体に展開して、プログラム側で画像を調整するべきだろう。
201名前は開発中のものです。:2012/06/02(土) 22:32:20.69 ID:myF5RtO5
全てのプレイヤーが「最適解像度」を意識してるわけじゃない。
そんなの一部のマニアくらいだ。

「最上位ウィンドウを展開して〜うんぬん」ができるのは良いとして
それとは別にフルスクリーンモードをできるようにすればいいだけなのに
それをしないのは作り手の怠慢だ。
202名前は開発中のものです。:2012/06/02(土) 22:51:41.46 ID:j4ElIJFU
4:3の映像を16:9に引き伸ばしてデブったキャラに違和感を感じないんだろうか・・・
上下移動より左右移動の方が速かったり・・・
203名前は開発中のものです。:2012/06/02(土) 22:58:05.13 ID:JwZ2BVqY
1)「フルスクなし、引き伸ばしなし」 →NG
2)「フルスクあり、引き伸ばしなし」 →NG
3)「フルスクなし、引き伸ばしあり」 →OK
4)「フルスクあり、引き伸ばしあり」 →OKだがそこまで手間かけなくてもいいよ
こんなとこ
204名前は開発中のものです。:2012/06/02(土) 22:59:09.90 ID:QK2zXOEH
解像度やアスペクト比って
それなりに柔軟に対応出来るように作るもんじゃねーの…?
と思ったけど完全2Dゲームは黒縁いれなどうにもならんのかね
205名前は開発中のものです。:2012/06/02(土) 23:02:11.37 ID:myF5RtO5
フルスクリーンってひょっとしてディスプレイの大きさに完全一致させる事を言ってるのか。
フルスクリーンを望む人間がそれを望んでいると思うのか。
黒縁ありでアスペクト比優先に決まってるじゃん。
206名前は開発中のものです。:2012/06/02(土) 23:04:55.36 ID:JwZ2BVqY
・ゲームの解像度が画面の解像度に比べて小さすぎてプレイに支障をきたす
・アスペクト比が違っていてプレイに支障をきたす
この2点について対策するのは、必須に近いな
引き伸ばしできればこのあたりはできる
207名前は開発中のものです。:2012/06/03(日) 00:23:21.31 ID:3U3UPjhL
スレ違い
208名前は開発中のものです。:2012/06/03(日) 01:12:58.58 ID:aP5ZetOZ
javaでAndroidSDK触ってきたけどなんだアレ難しすぎワロタ
209名前は開発中のものです。:2012/06/03(日) 01:13:07.02 ID:v/OzWZ4D
対応できる言語が他にはあまり無いだろ
全く無いとまでは言わないが
210名前は開発中のものです。:2012/06/03(日) 01:13:34.79 ID:aP5ZetOZ
やっぱC++でコードいじってる方が性に合うわ
211名前は開発中のものです。:2012/06/03(日) 08:47:32.70 ID:UydZV2Td
3Dゲームなら4:3にも16:9にも対応してないと困る。
3D部分はカメラのパラメータいじるだけだし。
GUIのレイアウトがちょっと面倒だが。
212名前は開発中のものです。:2012/06/03(日) 09:19:16.35 ID:v/OzWZ4D
Windows2Kも見捨てた事だし、4:3も見捨てるかな?
どうせ完成までには時間もかかるし
213名前は開発中のものです。:2012/06/03(日) 09:29:33.79 ID:UydZV2Td
4:3モニタだと香港映画のエンドロールみたく縦長になるの?w
214名前は開発中のものです。:2012/06/03(日) 09:52:01.34 ID:XtOj+Vwn
DbD、アス比固定、全画面の選択はビデオカードもしくはディスプレイの仕事だから下手に弄る必要ないよ

例外として、ドット絵系のゲームが拡大されてぼけぼけになるのを防ぐために必ずゲーム側でNN法で拡大したいとか、
画面の大きさによってゲーム内で見える範囲を変えたいとか、3DならGUIの大きさだけ小さいままにしたいとかなら弄らないといけないけどね

「画面が小さいからプレイに支障をきたす」ということで拡大したいならゲーム側での処理は一切必要ない
もちろんフルスクリーンとウィンドウモードを切り替えるオプションは必要だけどな
215名前は開発中のものです。:2012/06/03(日) 10:29:18.59 ID:VQ0xfCpl
スレ違いか微妙なところだな
ブラウザゲーでは考慮のいらない部分だし
C/C++以外の環境ではあまり問題にならない部分か

個人的には、ゲーム側に拡大機能がついてないと困るわ
わざわざ拡大するフリーソフトが存在する理由はそれだし
しかも、そのソフトでも拡大できないゲームとかあったりして困るわ
216名前は開発中のものです。:2012/06/03(日) 10:35:05.15 ID:cJiiOnF4
2Dエフェクトとか3Dエフェクトって作るの難しいな…微妙な差が違和感を産む
もしかして自分で作成ツールとか作るのが普通なのか?
217名前は開発中のものです。:2012/06/03(日) 10:41:19.26 ID:J6YmoIaF
>>216
モンハンのような血しぶきがつくれなくてこまっています
218名前は開発中のものです。:2012/06/03(日) 13:25:57.94 ID:XtOj+Vwn
>>215
普通のPCならグラボかモニタで設定できるだぞ?

5年以上古いビジネス用途のノートパソコンとか使ってるんだろうが
ゲームするならまともなやつに買い替えたほうがいいよ
219名前は開発中のものです。:2012/06/03(日) 14:07:41.96 ID:4q6OEElb
>>218
そういうもんなのか、初耳だった
220219:2012/06/03(日) 14:29:44.36 ID:4q6OEElb
ああ失敬、フルスクリーンでか。
拡大機能っていうからウィンドウモードでの話かと思ってた。

それならグラボなりモニタ任せってのは1つの方法だよね。
多くのモニタ/グラボが対応してる解像度を選ぶなら、1920x1080とかになっちゃいそうだけど…。
つい最近、昔の320x240のゲームをフルスクで起動したら、見事に真ん中に小さく表示されてしまったのを思い出した。

洋ゲーとかその辺しっかりしてる印象があるけど、デュアルモニタ絡みになると結構バラバラのような。
221名前は開発中のものです。:2012/06/03(日) 15:52:09.21 ID:XtOj+Vwn
対応してる解像度って何の話してんだ?
どんな解像度だろうがスケーリングはできるだろ

>つい最近、昔の320x240のゲームをフルスクで起動したら、見事に真ん中に小さく表示されてしまったのを思い出した。
これはスケーリングの設定をDbDにしてるからだろ
嫌なら他の設定にすればいいのに意味がわからん
222名前は開発中のものです。:2012/06/03(日) 16:03:02.78 ID:/Di23sVK
>>217
赤い点をばら撒くだけでいい
223名前は開発中のものです。:2012/06/03(日) 16:29:41.17 ID:dCvIbGe4
newとかmallocでちゃんとエラー処理してる人っている?
ってかメモリ確保失敗って実際問題起こる?
224名前は開発中のものです。:2012/06/03(日) 17:56:48.59 ID:v/OzWZ4D
エラー処理って言ってもログ出すぐらいだな。
ちなみに、細かい動的メモリー確保で起きるフラグメンテーションには自前でGC作って対応した。
225名前は開発中のものです。: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名前は開発中のものです。:2012/06/03(日) 21:14:18.66 ID:v/OzWZ4D
間違えた。ヒープのサイズは1Mだった。
228名前は開発中のものです。:2012/06/03(日) 21:20:15.72 ID:ufFTQ137
スタックサイズと間違えてるだろ明らかに・・・
229名前は開発中のものです。:2012/06/03(日) 21:22:27.91 ID:Y5aEM5Jb
>>226
そんな事実はない。VirtualAllocのがぎりぎりまでとれるのは事実だけど管理も全部自分でするはめになるぞ
230名前は開発中のものです。:2012/06/03(日) 21:26:33.66 ID:Y5aEM5Jb
>>228
いや、初期値はそれで合ってる。仮想メモリの上限がくるまでどんどん拡張される仕様
231名前は開発中のものです。:2012/06/03(日) 21:27:17.84 ID:cJHhyghN
ヒープが1Mってw
20年前かw
232名前は開発中のものです。:2012/06/03(日) 21:30:41.62 ID:v/OzWZ4D
>>228
VC2010とヒープで検索してみ?
っつ〜か、携帯からの入力は疲れるな
233名前は開発中のものです。:2012/06/03(日) 21:37:01.71 ID:v/OzWZ4D
>>230
何処に拡張されるって書いてあるの?
234名前は開発中のものです。:2012/06/03(日) 21:40:50.99 ID:+Cd4NORe
Windows で new の仕様としてHeapAlloc を呼ぶ
HeapAlloc はヒープサイズが足りなくなったらVirtualAlloc を呼ぶ
235名前は開発中のものです。:2012/06/03(日) 21:44:36.31 ID:v/OzWZ4D
ソースプリーズ
236名前は開発中のものです。:2012/06/03(日) 21:48:02.82 ID:+Cd4NORe
ごめんうそ書いた。確かめたら
new は足りなくなったら直接VirtualAlloc 呼ぶのね
237名前は開発中のものです。:2012/06/03(日) 21:51:19.35 ID:ufFTQ137
じゃあ、どっち道newでいいじゃん。
つか、32Mでも確保エラー俺のとこじゃ起きないけど。
238名前は開発中のものです。:2012/06/03(日) 21:58:54.52 ID:xWr54rm7
newとヒープは同じで、VirtualAllocは別物だね。
http://msdn.microsoft.com/ja-jp/library/dd744766(v=vs.85).aspx
239名前は開発中のものです。:2012/06/03(日) 22:03:21.55 ID:Y5aEM5Jb
>>233
実際やってみ。状況にもよるが数百Mぐらいは特に問題ないから
240名前は開発中のものです。: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名前は開発中のものです。:2012/06/03(日) 22:52:52.00 ID:dCvIbGe4
良く分からんけど、エラー処理は趣味の問題ってことでいいの?
242名前は開発中のものです。:2012/06/03(日) 22:57:43.88 ID:v/OzWZ4D
>>239
VisualStudio2005を使ってた頃、自作のスクリプト言語を作ってみた所、
数百行程度でフラグメンテーションによると思われる確保失敗を起こした。
ちなみにその頃のOSはxp。
で、GlobalAllocのGHNDを使って回避した。
Windowsが7になってもこの状況が変わったとは思えないんだがな……
243名前は開発中のものです。:2012/06/03(日) 23:13:03.94 ID:7gzK+eao
銃クラスが、兵士クラスのアドレス貰って銃クラスが当たり判定すべき?
それとも銃クラスから判定クラスに銃クラスの位置や角度を渡して判定させるべき?
244名前は開発中のものです。:2012/06/03(日) 23:34:56.12 ID:0GlelDaK
なになにする「べき」なんて方法は無い。
システムに合わせて一番実装しやすい方法を選択しろ。
245名前は開発中のものです。:2012/06/03(日) 23:37:00.73 ID:Y5aEM5Jb
>>241
メモリ確保失敗したら、基本続けるのは無理だろうから基本は即終了でいいんじゃないかと
全部解放してタイトルに戻るとかそういう工夫はしてもいいと思う

>>242
Win32以降のGlobalAlloc/LocalAlloc はHeapAlloc のラッパー関数です。領域も malloc と同じはず
GHNDすると再配置もしてくれてるからフラグメンテーションにならなかったってことではないかと。
そのかわりパフォーマンスはわりと落ちていたと推測します

スクリプト系は、作りにもよるけど、案外あっさり
フラグメンテーションの原因になるので、あらかじめ
リソースとはヒープわけるのが上策ですね
246名前は開発中のものです。:2012/06/03(日) 23:38:27.61 ID:xWr54rm7
>>241
メモリリークを引き起こさない自信があるなら、エラー処理しなくてもいいと思う
フラグメンテーションに関しては、頭の片隅にでも入れておけばいい。
247名前は開発中のものです。:2012/06/04(月) 00:11:37.59 ID:U4cKxLml
>>245
その辺りの推測は、大筋では当たってると思う。ただ、ちょっと疑問がね。
GlobalAllocのクリップボードでの使われ方の説明がつかない。そして、
GlobalAllocのGHND(正確にはGMEM_MOVEABLE)は64K個まで使える。
この意味理解できる?

おそらく、GlobalAllocのGHNDのヒープは、アプリケーションのヒープ領域
とは別に、OSが割り振ったヒープ領域を使ってる可能性がある。そのため、
下手にヒープ領域を使うよりもより多くのヒープ領域を使える可能性がある。
248名前は開発中のものです。: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名前は開発中のものです。:2012/06/04(月) 00:20:39.87 ID:Em2GMpFA
>>248
そうだよ
似た質問しない方が良かった?
250名前は開発中のものです。:2012/06/04(月) 00:48:35.66 ID:suZpr76G
何回も同じような質問するのはまずいだろ

「やろとしたができなかった」とか「やってみたが効果がいまいちだった」とかなら
それを軽く説明してから改めて質問に入るべきじゃね

でなきゃ>>243だよ。相手する意味がないしな
251名前は開発中のものです。:2012/06/04(月) 00:55:06.96 ID:NFm2pd34
銃は発射するだけだろ。弾受け取って兵士が処理すりゃいい。
フルアーマーの奴と、裸の奴もおるだろ。
252名前は開発中のものです。:2012/06/04(月) 01:12:22.83 ID:5kM6hLnq
じゃあ生成したユニットデータに座標を持たせるのと、
マップの座標にユニット番号持たせるのどっちが良いのっと
253名前は開発中のものです。:2012/06/04(月) 02:02:20.06 ID:NFm2pd34
好みだろ
254名前は開発中のものです。:2012/06/04(月) 05:46:34.75 ID:BRzk8XkE
>>252
どっちも持たせる。
255名前は開発中のものです。:2012/06/04(月) 07:59:01.95 ID:weX4F0Ac
>>251
基本的に当たり判定って食らう側がするもんだよね
256名前は開発中のものです。:2012/06/04(月) 08:37:58.08 ID:kLL4aZzx
>>255
どっちでもやる事は一緒。
257名前は開発中のものです。:2012/06/04(月) 08:47:58.63 ID:Em2GMpFA
>>252
処理多くならない?
258名前は開発中のものです。:2012/06/04(月) 08:48:30.58 ID:alVEkGAv
この手の話って、常に正解を教えられて育ってきた人間が、精神病のごとく質問してくるよね。
自分で決めていいことなのに、自分で決められず、
誰かに正解を提示されないと不安で仕方がない心の病気にかかっているヤツ。
259名前は開発中のものです。:2012/06/04(月) 09:49:57.78 ID:TYJ+eYx9
それまで・これからのコーディングやゲームデザインによっても変わってくるしな。
その上で、この手法はこういうデメリットがあるし、
あの手法はああいうデメリットがあるし悩んでる。
っていうのを言えば、こういう方法があんじゃね?
ってことも言えるんだけど。
質問が大雑把過ぎるんだよな、結局。
恐らくデザインやクラス設計がイマイチ固まってないんだろう。
260名前は開発中のものです。:2012/06/04(月) 10:15:50.33 ID:kLL4aZzx
弾が速くて可変フレームレートの場合は、
前回の位置と今の位置との線分で当たり判定が必要だから、
弾を移動させるロジックと同時に判定もさせた方が
楽だと思うに一票。
261名前は開発中のものです。:2012/06/04(月) 13:25:02.85 ID:kY76Nlsr
銃の弾は、弾の移動でやったほうが楽だし
地雷の接触などはキャラが動いた時のほうが楽だし
楽なほうでやったらいいんじゃないかい
もしくは当たりイベントのスレッドをつくって統括するって方法もあるけど
262名前は開発中のものです。: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名前は開発中のものです。:2012/06/04(月) 15:48:15.62 ID:nQ9KtldE
FPSなら線分で良さそうに思えるが
毎フレーム接触判定してるもんなのかな
264名前は開発中のものです。:2012/06/04(月) 16:20:02.21 ID:GfSYyx1Y
3Dかどうかもわからんが、彼のレベルからすると
ファミコンマリオぐらいのアクションゲームだと思う。
265名前は開発中のものです。:2012/06/04(月) 20:21:19.07 ID:NFm2pd34
シミュレーションかもしれんぞ
266名前は開発中のものです。:2012/06/04(月) 20:30:56.37 ID:QyF/fiyn
マリオって作るの結構難しいよね
あのジャンプなんだよ
267名前は開発中のものです。:2012/06/04(月) 21:55:13.21 ID:q0NKYXAt
ジャンプ中、亀を蹴って飛び上がれるときと当たって死ぬときが
あるけどどういう判定にしているのかみたいな話題がどっかのスレであったな
268名前は開発中のものです。:2012/06/04(月) 22:06:41.15 ID:5kM6hLnq
>>257
射線1マスごとにユニット表総舐めする前者と
行動主を特定するのにマップを総当たりする後者
冗長構成の一貫性さえ保てればイイトコ取りの>>254

好きなのを選ぼう!
269名前は開発中のものです。:2012/06/04(月) 22:40:23.00 ID:l61wSE5A
ユニットスタックの概念がなかったら後者の方が単純でわかりやすいけど、
汎用性とか考えたら前者の方がよいんじゃないかという気がするな。

まぁ今のPCならメモリ不足はあまり心配する必要ないんだし、
前者をベースに後者の「ユニット判定専用マップ」を用意するってのが
いろいろできていいかも。
270名前は開発中のものです。:2012/06/04(月) 23:31:53.31 ID:gSaZzhQ+
リアルテイストの競馬育成ゲームで毎年生まれる馬3万体の
遺伝データをずーっとメモリに持たせたらとんでもないことになった思い出
271名前は開発中のものです。:2012/06/05(火) 07:03:53.84 ID:5hghPcJi
どうなったんです?
272名前は開発中のものです。:2012/06/05(火) 19:54:18.88 ID:X1AjLJeN
正直初心者にはマリオですらアクションゲーは無謀だと思う
まずはWizみたいな探索ゲーを作るべき
273名前は開発中のものです。:2012/06/05(火) 19:57:18.38 ID:AKltwP6Q
おいおいw Wizは難易度高いだろ。
最初はパックマンか倉庫番でいくべし。
274名前は開発中のものです。:2012/06/05(火) 20:14:39.78 ID:X1AjLJeN
そうかな
シーン管理と変数配列構造体辺り出来れば割りとなんとかできそうなんだけど
275名前は開発中のものです。:2012/06/05(火) 20:35:08.86 ID:s+a7RtxR
探索だけなら簡単だな。
1マス未満の移動を出来るようにするとか、戦闘やらイベントを加えると途端に面倒だと思う
276名前は開発中のものです。:2012/06/05(火) 20:57:04.12 ID:rQvv9pU4
宣言用.hと定義用.cpp作って
そこにexternで変数関係ぶち込むと凄い楽できることに気付いた
単純なミニゲームとかなら楽に作れそうだけど何か穴とかあるのかな
277名前は開発中のものです。:2012/06/05(火) 21:12:18.32 ID:s+a7RtxR
単純なミニゲームならそれでいいんじゃね。
規模に比例して、デメリットが大きくなると思うけど。
278名前は開発中のものです。:2012/06/05(火) 23:39:25.37 ID:mjwjZU1k
>>276
関数外のstaticの使い方とか覚えると、さらに世界が広がる
>>277
デメリットって?
279名前は開発中のものです。:2012/06/05(火) 23:46:14.46 ID:mjwjZU1k
>>236
ソースプリーズ
new はVirtualAllocを呼ばないだろ
280名前は開発中のものです。:2012/06/06(水) 00:15:24.25 ID:yfcMlTbU
extern自体あまり使うべきじゃないよな...
281名前は開発中のものです。: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名前は開発中のものです。:2012/06/06(水) 05:05:34.22 ID:F+8wYuiU
デバイスまとめクラスは
オレオレ名前空間内のstaticなグローバルオブジェクトにしてるな

どの程度正しく作るかって難しいよな
284名前は開発中のものです。:2012/06/06(水) 06:13:10.68 ID:BB9r7cef
>>274
迷路自動作成ロジックはどうする?
285名前は開発中のものです。:2012/06/06(水) 07:30:32.76 ID:B+n3k45G
>>281
例えばだけど、規模が大きくても付けた変数名を絶対に忘れない人が一人で作れば問題ないよな
場合によっちゃそこらへんのツールで重複調べられるしな
286名前は開発中のものです。:2012/06/06(水) 07:45:33.71 ID:LQ8HTB51
グローバル変数名は頭に「g_」を付けましょう。
287名前は開発中のものです。:2012/06/06(水) 09:05:26.97 ID:mjTHO3b4
>>285
ホントに「例えば」だな。クラス設計が分からない時、
やたらグローバルな変数を宣言してたが見事に破綻したよ。
288名前は開発中のものです。:2012/06/06(水) 09:28:51.13 ID:yfcMlTbU
>>285
「人によってはなんとかなることもあるから開発効率落としてみてもいいだろ。俺もそのなんとかなる人の一人かもしれないし」
こういうこと?
289名前は開発中のものです。:2012/06/06(水) 10:15:18.79 ID:WiOpGBsA
名前空間+グローバル変数は結構使いやすい。

.hと.cppをめんどくても分けるのは
相互参照でコンパイル通らないC++の都合だね。
290名前は開発中のものです。: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名前は開発中のものです。:2012/06/06(水) 13:28:41.38 ID:s5fJFGX+
グローバル変数のデメリットと言われるものは複数ある。
そのうちの幾つかは解消されるけど、残りは解消されないと言った感じ。

例えば、意図しない変数名のバッティングは回避されるだろう。
でも、複数の箇所から操作される可能性はそのままだ。
292名前は開発中のものです。:2012/06/06(水) 13:31:53.21 ID:mJCSqxTc
グローバル変数のメリットは複数の箇所から操作出来る事なのでは……。
293名前は開発中のものです。:2012/06/06(水) 13:50:04.63 ID:s5fJFGX+
>>292
それがグローバル変数の「特徴」だな。 メリットにもなりうるし、デメリットにもなりうる。

どうしても複数の箇所から操作しなければならない変数だけ、ピンポイントでグローバルにするのはマジ有効。
何でもかんでもグローバルにするのは、あまり好ましくないと言われる。

熟練者が使えば凄く有効に使えるけど、
俺のような初心者は、最初から「グローバル変数は絶対に使わない」と決めてしまった方が楽w
他にもgoto文なんかがそうだね。


ちなみに自分は、C++のconst変数(いわゆる定数)のみ、
きちんと名前空間で整理した上で、まさに>276の方法でグローバル化することがある。

もちろん、ビルド時間や不要な情報が増えるというデメリットは超デカいけど、
一箇所にまとまるというメリットも、それなりに大きい。
294名前は開発中のものです。:2012/06/06(水) 13:54:50.07 ID:mJCSqxTc
そうなんだ。
俺はどうでもいい一時変数以外は全部グローバルでやっちゃってるよ。

別んとこで確保したローカル変数をまた別んとこで利用する、なんてやりかたやってたらバグの温床になりそうで。
295名前は開発中のものです。:2012/06/06(水) 14:03:27.96 ID:s5fJFGX+
>>294
呼び出し元(例えばmain関数)で変数を宣言して、複数の関数に引数で渡すというのは、
ありとあらゆるプログラム(C/C++以外の言語でも!)で使われる書き方だ。

だからもし、そこに面倒臭さとか一種の恐怖感を感じるなら、
無理矢理にでも改善したほうが良いかもしれない。

その上でグローバルを使うなら、ご自由に。
296名前は開発中のものです。:2012/06/06(水) 14:39:35.53 ID:9xH4E1Ru
>>294
さすがにそれは言語に対する理解が足りてないだろ。

「グローバル変数は絶対使ってはいけない」みたいなことを言う人達はおかしいとは思うけどね。
グローバル変数はどうしても必要なときにだけ使った方がいいぞ。
297名前は開発中のものです。:2012/06/06(水) 15:00:33.42 ID:mjTHO3b4
逆にグローバルが最適ってどんなケースだろ?
サブクラス化でメッセージ受け取ったときのための、
ウインドウハンドルを記憶させたstlのmapくらい。
とりあえず俺が使ってるのはそれくらい。
dxutなんかも、使い出したらグローバル変数は使いそうだなぁ。
298名前は開発中のものです。:2012/06/06(水) 15:35:42.70 ID:PskKn+mp
>>294
一時変数ってローカル変数だろ?
確保したローカル変数ってなんぞ
299名前は開発中のものです。:2012/06/06(水) 15:57:44.74 ID:UXlaP3IH
メインループの前に変数宣言しておいて
メインループの中で弄ってるんだけど、
これってクラスのフィールドとメソッドポインタで代用できるよね
お前ら的にはこの方法どうなの?
300名前は開発中のものです。:2012/06/06(水) 16:19:17.31 ID:s5fJFGX+
>>299
簡潔かつ具体的にどうぞ
301名前は開発中のものです。:2012/06/06(水) 19:31:30.78 ID:WiOpGBsA
シングルトンとしてわざわざprivateコンストラクタとか書きたくない場合、
引数でデータを渡すセッターが書きたくない場合かな。
まあ手抜きだね。

経験や設計力の足りない人が、とりあえずグローバル変数で手抜きをしてつくり、
後で修正するのはいいんじゃないかな。

>>299
>>15さんの好きなようにやりなさい。
302名前は開発中のものです。:2012/06/06(水) 20:03:58.82 ID:dE87BNoI
一人で開発してるとどうしても手抜きになるのは仕方かも。
就職してチームで開発するようになればセオリーの
コーディングスタイルを学べるんだけどね。
すでに退職した人が書いたコードのバグを治す立場になれば
グローバル変数の悪どさが身を持って分かるようになる。
303名前は開発中のものです。:2012/06/06(水) 20:08:37.83 ID:K3C+b+6o
クラスごとに読み込み専用とか書き込み可能とかのアクセス制御を簡単に記述できるなら
何処からでも参照可能なデータクラスがあっても悪くないのかもしれないけど
304名前は開発中のものです。:2012/06/06(水) 20:13:09.98 ID:s5fJFGX+
システム担当が1人しかいないので大して変わらん俺…(´・ω・`)
305名前は開発中のものです。:2012/06/06(水) 20:21:15.36 ID:wItmrJee
そもそも数人で作れるほどの腕を持つ奴はこんなとこ来ないから別にいいよ
しかもなんでバグ前提だよ>>302
306名前は開発中のものです。:2012/06/06(水) 20:22:50.00 ID:z1YH6Ic0
まとめ
グローバル変数は把握出来るようにきちんと整理しておきましょう
307名前は開発中のものです。:2012/06/06(水) 21:31:22.54 ID:fkjdBITD
>>305
バグ0前提のほうがありえないだろw
308名前は開発中のものです。:2012/06/06(水) 21:32:44.31 ID:wItmrJee
一項目を一通り作ったらビルドしないの?
まさか全部作るまでテストしない…?
309名前は開発中のものです。:2012/06/06(水) 21:35:34.97 ID:wItmrJee
なにいってんだ俺は
一通り終わってバグがあったらその都度バグ潰すってことね
310名前は開発中のものです。:2012/06/06(水) 21:56:51.01 ID:s5fJFGX+
>>308-309
そこだけ訂正されても、「お前は何を言ってるんだ」は変わらんぞw
311名前は開発中のものです。:2012/06/06(水) 22:10:00.23 ID:Ez398/8e
というか、グローバル変数をあちこちから直接触るのが危険、はわかるが
(どうせ他人のプログラム読むにはGrep必須じゃね? みたいな揚げ足取りは置いといて)

クラスインスタンスを大域的にアクセス可能にすることにはどういうリスクがあるかな
あちこちで生成・破棄を繰り返したらヤバイとか、
マルチスレッド時変数にロック必須とかは俺にもわかる
他に目立つデメリットってどんなものがあるだろう?
312名前は開発中のものです。:2012/06/06(水) 23:42:28.46 ID:32DOJ83b
グローバルなフラグ処理があちこちで絡み合って、全体の処理が全くわけわからなくなるとかか?
313名前は開発中のものです。:2012/06/07(木) 01:05:23.58 ID:BJcvBZeM
グローバルアクセスじゃなくてもポインタで共有してたら
マルチスレッドでは注意が必要だな。

問題は追尾性じゃないかな。検索使わないで探すとしたら大変だ。
314名前は開発中のものです。:2012/06/07(木) 07:52:16.47 ID:Jv6ss4Bc
管理出来るなら使え、管理出来ない奴は使うな、でいいよね
315311:2012/06/07(木) 08:05:17.72 ID:1pAFbwR/
なるほど・・・改めて言われてみるとそうかもな
引数にしとけば関数一覧見ただけで出入りがわかるもんな
今後参考にする、ありがとう
316名前は開発中のものです。:2012/06/07(木) 08:07:50.47 ID:ABZ9H4yv
端から見て意思の疎通が出来てるのか心配になるやり取りだなw
317名前は開発中のものです。:2012/06/07(木) 13:55:27.92 ID:QQtm5YS7
>>311
直行性の破壊
318名前は開発中のものです。:2012/06/07(木) 14:44:16.39 ID:aJnWGOd5
ゼノギアスみたいに3Dマップに2Dを歩かせたいんだけど、2DキャラにVECTOR座標持たせないとダメなのかな?
それともカメラとマップの動きでなんとかするのかな
319名前は開発中のものです。:2012/06/07(木) 21:30:16.39 ID:BJcvBZeM
やりたいようにやりなさい。
320名前は開発中のものです。:2012/06/07(木) 22:02:16.36 ID:Ukk/kqdB
マジレスしていいのか?
321名前は開発中のものです。:2012/06/07(木) 22:20:38.30 ID:G9hkoO5R
オブジェクト指向の弊害というか、基本的なアルゴリズム力がない人が増えたよな
特に内部の数値と表示部を分けて考えずに直結して考えてる人が多い
322名前は開発中のものです。:2012/06/07(木) 23:49:11.74 ID:vdC1mnp6
アルゴリズム力って何?
323名前は開発中のものです。:2012/06/07(木) 23:54:38.13 ID:p6Iwkliq
まぁ、ゲームというのは基本的に電源を入れ続けている間には停止しないので、
不完全なアルゴリズムであるといえよう
324名前は開発中のものです。:2012/06/08(金) 05:39:14.26 ID:emaLFwiS
>>323
哲学かw
325名前は開発中のものです。:2012/06/08(金) 12:13:59.29 ID:DZv8KWRM
ブログラムを学び始めて一ヶ月、トランプのゲームや簡単なアクションなら楽に作れるようになった
しかし未だにポインタの使い道が分からない
326名前は開発中のものです。:2012/06/08(金) 13:31:45.51 ID:q3HoT9+Z
>>325
心配しなくても、そのうちポインタじゃないと出来ないこと、ポインタの方がスマートに出来ることにブチ当たる。
その時に改めて覚えればいいのよ。

例えば、セーブシステムを実装してみるとかどうかな。
327名前は開発中のものです。:2012/06/08(金) 13:52:13.27 ID:tcFLKDMc
うむセーブできるスロットを3個として
それを読み込んだり上書きしたり
そんなときに
328名前は開発中のものです。:2012/06/08(金) 17:42:03.38 ID:aSm1ZnJU
俺がポインタ使い始めたのは
オブジェクトの配列を使わざるを得なくなったときかな?
上で一応、ポインタ不使用で配列扱う方法あったけど、
当時はそこまで調べきれんかった。
まぁ知っててもポインタ使ってただろうけど。
あとはfactoryパターンなんかポインタあってこそだな。
329名前は開発中のものです。:2012/06/08(金) 18:39:35.31 ID:pbnxpIOe
俺がポインタ使い始めたのは、文字列の多次元配列を使わざるを得なくなったときだった
330名前は開発中のものです。:2012/06/08(金) 19:35:21.69 ID:lRuRBADW
ぼ、僕の初めてはmallocちゃん・・・
331名前は開発中のものです。:2012/06/08(金) 20:05:18.05 ID:SJfmbBy9
俺はライブラリがポインタ返してくる場合を除いて使わないかな
それを除けばSTLコンテナと参照渡しでほとんど済むというか

std::mapに関数ポインタ入れてスイッチ消すとかは価値あると思うんだけど
コンパイル時に型と内容が確定するメリットが捨てがたいんだよな
332名前は開発中のものです。:2012/06/08(金) 20:50:19.69 ID:j/2x2bX+
関数ポインタやストラテジーパターンならタイプセーフだぞ。
333名前は開発中のものです。:2012/06/08(金) 21:13:56.33 ID:m5MO4L1R
セガの人の本で関数内で引数の中身が変わるかどうかわかるように
ポインタと参照を使い分ける話があってそれに従ってるな
334名前は開発中のものです。:2012/06/08(金) 21:30:09.93 ID:zMZgxXcw
RPGツクールやってたせいかポインタ使わなくても処理できる方法が浮かぶから困る
多少コード長くなるかもしれないけど知らん
335名前は開発中のものです。:2012/06/08(金) 21:42:33.38 ID:+harBrKu
>>333
const使って解決するほうが堅牢に思える
336名前は開発中のものです。:2012/06/08(金) 21:44:24.52 ID:z81hpupn
さらにSAL注釈も付けるかな
337名前は開発中のものです。:2012/06/08(金) 21:44:25.54 ID:6tY7hMDQ
RPGツクールとポインタ使わなくても処理できる方法の
関連性がよくわからん
338名前は開発中のものです。:2012/06/08(金) 21:48:46.35 ID:PkeZlA3u
みんなポインタどこで勉強した?
339名前は開発中のものです。:2012/06/08(金) 21:53:09.92 ID:MREanol0
>>338
昔はネットが無いかわりにCマガジンという雑誌があってだな・・・
340名前は開発中のものです。:2012/06/08(金) 22:05:47.44 ID:MREanol0
>>234>>236
今更だが、ちょっと気になったので。
GetProcessHeapとHeapCreateでそれぞれ検索する事をオススメする。
ちなみに、C++のnewがどっちのヒープを使ってるかは分からなかった。
速度では前者、汎用性、拡張性を優先しているなら後者なんだが・・・
341名前は開発中のものです。:2012/06/08(金) 22:25:17.57 ID:2sQEIMbG
>>337

ツクールに限らず、そもそもポインタ使わなくてもゲームは作れるって話でしょう。
あれば便利だがなくてもできなくはないという程度の意味で。
342名前は開発中のものです。:2012/06/08(金) 22:30:05.74 ID:b1Lp2XzC
while(*dst++ = *src++ )
;      
343名前は開発中のものです。:2012/06/08(金) 22:34:51.17 ID:FXgS0hSf
>>340
crt見ればいいよ
昔はheapを確保できればHeapAlloc、できなければVirtualAlloc
VC10だとその辺の記述がごっそりなくなってるからreallocでまとめられたのかもしれない。たぶん
というか本人がよく分かっていないのに他の人にググれっていうのは厳しいだろw
344名前は開発中のものです。:2012/06/08(金) 22:54:45.78 ID:MREanol0
>>343
でも、>>234>>236が何を混同してたのかは理解出来るんでは?
HeapAlloc+HeapCreate(0,0,0)の挙動とnewの挙動を
ごちゃ混ぜにしてた事は理解できたから。
HeapAlloc+GetProcessHeapの方が早いし使い勝手も良いから、
C/C++ではこちらを採用していると考える方が自然かと。拡張性は無いけど。
345名前は開発中のものです。:2012/06/08(金) 23:21:38.88 ID:meBz3r1I
実はnewの挙動をMSがコッソリ変えていたというのが真相だったりしてな
346名前は開発中のものです。:2012/06/08(金) 23:30:02.10 ID:m5MO4L1R
>>335
constもつけるよ
あくまで呼び出した側でわかりやすいという話
一種のおまじないかも
347名前は開発中のものです。:2012/06/09(土) 14:17:30.16 ID:lNgYTjBj
CでIMEの設定変更する方法っていうか関数あったりする?
標準全角入力使われたら予期せぬ動きしまくるしrewindでもクリアできないしマジ困る
あれはバッファの中身どうなってるんだろう・・・
348名前は開発中のものです。:2012/06/09(土) 15:10:15.66 ID:x2dTOO+E
>>347
Cにあるわけない。
WindowsAPI(Win32 API)か何かに投げるんじゃねーのかな。
349名前は開発中のものです。:2012/06/09(土) 16:37:02.46 ID:FTBfxQeH
DirectXのサンプルの中にImeUi.h、ImeUi.cppってのがあったけど
俺は途中で放り投げたから詳細はわからない
要はTSFってのを使うらしい
350名前は開発中のものです。:2012/06/09(土) 18:53:04.60 ID:XUfV5Ps7
"C/C++" IME
とかでぐぐるといろいろあるみたいだな
351名前は開発中のものです。:2012/06/11(月) 08:03:40.59 ID:Vdy0LhS9
ちょっとCからは反れるかも知れないんだけど、3Dのマップモデルってどう表示してる?
1マップを超巨大なモデルを作ってそれをドカッと配置しようかとしてるんだけどまともな方法なのかな?
そしてそれに家とかのモデルを一個ずつ配置するか、それとも地面にセットでくっ付けておくか悩む
352名前は開発中のものです。:2012/06/11(月) 08:26:57.69 ID:pW3epnaG
>>351
地形と家や木などの何度も登場するモデルは分けて読み込んでプログラム側で配置すると良いよ。
ロード時間の短縮、メモリ節約、当たり判定の高速化、描画の高速化のメリットがある。
もちろんこれらの機能は自分で実装しなくてはいけないけどね。
353名前は開発中のものです。:2012/06/11(月) 09:16:10.08 ID:IS7oiAfA
>>351
地形マップは大きいのが一つ。
建物などのオブジェクトは個々のモデルを配置する。
LODで高速化できるので。
354名前は開発中のものです。:2012/06/11(月) 09:50:09.21 ID:67uf8PuE
地形マップの着地判定って手作業で設定して行くの?
それともポリゴンの点から面を取得して〜・・・
355名前は開発中のものです。:2012/06/16(土) 10:35:31.77 ID:vg/FkkM9
モデルの周囲のマップポリゴン取得して判定じゃないの
多分上でも横でも下でも同時に判定
356名前は開発中のものです。:2012/06/16(土) 17:08:27.63 ID:PiAa+uCj
開発環境どうしよ
357名前は開発中のものです。:2012/06/16(土) 18:42:06.80 ID:fQVFYSdj
DXライブラリで
358名前は開発中のものです。:2012/06/16(土) 18:50:34.59 ID:gf1z4GH6
DXライブラリからAndroid開発に移ろうともおったら
開発環境の導入難しすぎて笑えない
359名前は開発中のものです。:2012/06/16(土) 19:12:23.61 ID:PiAa+uCj
DXライブラリ使い始めたら便利すぎて興奮するどころか逆に「使われ感」に耐えられなくなったぜ・・・
なんつーかツクール触ってるのと同じ感覚というか
360名前は開発中のものです。:2012/06/16(土) 19:36:42.75 ID:hUY4K/cc
>>359
DXライブラリはそこまでフレームワークしてないだろ…
361名前は開発中のものです。:2012/06/16(土) 21:00:38.51 ID:OrOjWnvd
DXライブラリはせいぜいBASIC程度だと思うが
それで堪えられないんじゃVBとか使えそうにないな。
362名前は開発中のものです。:2012/06/16(土) 21:34:32.71 ID:PiAa+uCj
みんなすげーな、もっかいWIN32APIとDirectX勉強しなおすか
363名前は開発中のものです。:2012/06/16(土) 23:09:04.37 ID:OrOjWnvd
いや、DXライブラリ程度で「使われ感」を感じる方が凄いだろ。
アセンブラとか平気で使いそうだ。
364名前は開発中のものです。:2012/06/16(土) 23:13:03.32 ID:fCZvL1Y3
こっちがビックリだな。ホント。
365名前は開発中のものです。:2012/06/16(土) 23:45:45.26 ID:/PPwjQKu
逸材
366名前は開発中のものです。:2012/06/17(日) 01:07:21.27 ID:y4HfOs6J
typeidの使い方が全然わからないんだけど誰か教えてくれ
is-a関係のスーパークラスを対象にtypeidするとサブクラスの型が帰ってくるのか?
判定マップに使おうと思うんだけど高負荷とかないよな
367名前は開発中のものです。:2012/06/17(日) 08:19:06.74 ID:ppOlS8tt
それより基底にidでも持たせて、それぞれのコンストラクタで初期化でもしたら速度的にいいんじゃね?
368名前は開発中のものです。:2012/06/17(日) 13:28:59.57 ID:arTej1fp
ハッシュマップとかツリーマップのキーに使えるんじゃないか?
thisで型とればサブクラスの方が取れる

class Base
{
static char*m_name;
char* GetMapKey(){ return m_name; }

コンストラクタ()
{
char* name = typeid( this ).name();
strcpy_s(...);
}
}
369名前は開発中のものです。:2012/06/17(日) 16:45:28.54 ID:3oLpj4sR
staticは、なんでかデバッグの時なかがみれないんでグローバルにしちゃってるわ
370名前は開発中のものです。:2012/06/17(日) 21:36:35.34 ID:X5n06HU7
>>366
typeidはRTTI使うから、C++の操作の中では凄い高負荷な方だよ
それこそ>>367の言うような実装の方がまだ良い
371名前は開発中のものです。:2012/06/17(日) 21:41:45.53 ID:+OGkPGu8
>>370
wikiにはdynamic_castより高速って書いてあるけど。
372名前は開発中のものです。:2012/06/17(日) 21:47:22.00 ID:X5n06HU7
>>371
そらdynamic_castよりは高速だろうよ…… RTTI使って遅いのの代表格じゃないか
dynamic_castは型情報を取得して妥当な場合にcastを行うわけで、結局実行時型情報取得して、さらに操作を加えてるわけだし
あとどのwikiよ?
373名前は開発中のものです。:2012/06/18(月) 06:38:57.18 ID:HXu2Y335
ドヤ顔w
374名前は開発中のものです。:2012/06/20(水) 07:53:04.22 ID:XC0rn3Nz
RokDeBone2で3Dモーション作ったんだけどフレームの最後と最初って勝手に補間しないんだな
これってプログラム側で合わせられるのかな
375名前は開発中のものです。:2012/06/20(水) 08:26:33.00 ID:llZF7wNG
その最後のフレーム+10あたりのとことに最初のフレームをコピーすればいいさ
376名前は開発中のものです。:2012/06/20(水) 18:12:56.89 ID:IEGdWNmy
>>375
それもそうだな、ありがとう助かった

もう一つ聞きたいんだけど、空ってどうやって描画してる?
空間の↑の方にテクスチャ貼るだけじゃダメなのかな
377名前は開発中のものです。:2012/06/20(水) 18:21:30.54 ID:lxlkaz8F
Skyboxって言うんだっけ?
箱とかドーム形のポリゴンにテクスチャ貼る。
378名前は開発中のものです。:2012/06/21(木) 07:55:27.65 ID:BotwF0Gl
Skyboxってググってもほとんど情報ないんだな
379名前は開発中のものです。:2012/06/21(木) 08:16:25.19 ID:TdDX3f6l
概要さえわかってれば実装自体は難しくないしな
ただ雲の影落としたいとか、ちょっと欲張りな話になってくると悩む
380名前は開発中のものです。:2012/06/21(木) 15:42:48.25 ID:XrqXFppV
>>378
Game Programming Gemsに掲載されてたはず
どの号かは忘れた
381名前は開発中のものです。:2012/06/21(木) 17:33:33.23 ID:Eeyw3SHy
C言語の知識ははprintf,scanfとかfor,whileとか触りだけ知ってて、C/C++でゲーム作りたいと思ってるんだ

まだゲームとか作ったことないから簡単なプログラムのゲームから作っていきたいと思ってるんだけど、
どんな物から作っていけばいいんだろう・・・

わからないところはグーグル先生なりに頼って調べてやるつもりだから
誰かオススメ教えて(´Д⊂
382名前は開発中のものです。:2012/06/21(木) 17:36:58.00 ID:BmRCrynr
作りたいものを作れ
いや冗談抜きで簡単だけど作りたくないもの作っても作る気力出ないからちょっと複雑でも作りたいものを作るのがいい
383名前は開発中のものです。:2012/06/21(木) 17:49:12.53 ID:Udnr3W8c
ルーチンを学べば後は単語組み合わせるだけだから楽
難易度高ければDXライブラリでも使え
384名前は開発中のものです。:2012/06/21(木) 17:52:53.30 ID:WYHj8H7f
ミニゲーム作りなよ
385名前は開発中のものです。:2012/06/21(木) 17:53:03.67 ID:JQnL4TE5
>>381
マスターマインドとかはどう?
4桁の数字を当てるやつ
386名前は開発中のものです。:2012/06/21(木) 17:56:24.84 ID:suI+Yk2L
Hit&Blowかそれ
387名前は開発中のものです。:2012/06/21(木) 18:29:46.04 ID:Eeyw3SHy
色々ありがとう。
とりあえずマスターマインド?Hit&Blow?
かわかんないけど、それ作ってみるわ
388名前は開発中のものです。:2012/06/21(木) 18:35:26.41 ID:HvQGDDgW
テンプレも整えていきたいな
389名前は開発中のものです。:2012/06/21(木) 18:47:03.64 ID:KxMEgY22
Cのゲーム作りってビットいじるイメージあるが
390名前は開発中のものです。:2012/06/21(木) 19:03:59.30 ID:fz57PckV
>>377
それ画面端に近づいたときに歩いて空に触れるっていう現象が起こるんじゃね?
skyrimとかやってるとなにか他の方法があるはずなんだよなと思う
391名前は開発中のものです。:2012/06/21(木) 19:13:51.94 ID:Eeyw3SHy
あ、ところで皆はフローチャート書いてる?
392名前は開発中のものです。:2012/06/21(木) 19:13:52.19 ID:mgHWeJL4
3Dやったことないけど、視点中心に固定すりゃいいんじゃないの。
空みたいな遠景、キャラが動いた程度で景色が変わるわけじゃないし。
それでも景色変わらせたかったらプラネタリウムみたいに球体を回すとか。
393名前は開発中のものです。:2012/06/21(木) 19:37:14.71 ID:Hhmvvp+K
C++/CLIならとにかく初心者がいきなり
windowsプログラミングに手出すと訳分からなくなるから
とりあえずCUIベースのほうがいいね。

>>391
クラス設計は脳内にしろ紙上にしろ必ずする。
フローチャートは複数のクラスを参照する
込み入った処理を書くときくらい。
394名前は開発中のものです。:2012/06/21(木) 21:29:55.73 ID:vZK2yuWy
>>391
書いた事無い。
395名前は開発中のものです。:2012/06/22(金) 12:13:59.34 ID:PPZRXfV7
背景が3Dでプレイヤーが2Dのゲームって、一見キャラは2Dだけど実は全部3D処理なのか?
モデルに2Dテクスチャ貼っつけて常にカメラの方を向くようにしてるだけなんかな
396名前は開発中のものです。:2012/06/22(金) 13:11:41.21 ID:aztgz62P
ジオメトリの後にいつもの2Dゲーみたいにビュー上に反映させればいいだけじゃないのか
397名前は開発中のものです。:2012/06/22(金) 14:43:13.18 ID:9Ck8n4Mc
ゲームによるとしか。
コーディングで2Dっぽい記述をしても、
ライブラリの内部処理で3Dと同じエンジン使ってたりするんで
どちらを使っているかはあまり意味はない。
398名前は開発中のものです。:2012/06/22(金) 18:36:22.08 ID:qm6xR/aE
ライブラリによって答え変わる話を環境書かずにされてもな

>>381
モダンな思考にある程度慣れてるなら、自分の好みのライブラリで始めるといいと思う
ただWinAPIとかDirectXとかは直接触らないほうがいい、グチャグチャになりやすいからw

モダンな思考にまったく慣れてないなら、スクリプト言語系のライブラリから入るほうがいいかも?
スレ違いなんで説明はしないけど、Rubyの「DxRuby」とかLuaを使う「AIMS」とか
C++にも役に立つ発想が学べるし、なにより短時間で形になるんで、並行して触る価値はあると思います
399名前は開発中のものです。:2012/06/22(金) 22:43:50.26 ID:+Xm14l3Q
ところで3Dエフェクトって完全透明なメッシュに普通のテクスチャを貼る、で合ってる?
モデル扱いだよね?
400名前は開発中のものです。:2012/06/22(金) 23:32:29.49 ID:DPu75k8v
>>399
透明なメッシュっていうか、テクスチャが透明(アルファ付き)なんだけど。
401名前は開発中のものです。:2012/06/22(金) 23:39:29.21 ID:+Xm14l3Q
>>400
ごめん俺がよく理解してないかもしれない
見えないモデル(ポリゴン)に、テクスチャ(フォトショとかで透過した斬撃など)を貼って表示するんだよね?
402名前は開発中のものです。:2012/06/23(土) 00:20:46.26 ID:AFUiiNnJ
見えないポリゴンにテクスチャ貼っても意味ないだろ
403名前は開発中のものです。:2012/06/23(土) 00:45:22.57 ID:slzyJXJI
>>399
そんなとこじゃない?
後はシェーダを使うとか。

>>402
透明なガラスに絵を描くようなものだよ。
404名前は開発中のものです。:2012/06/23(土) 02:27:16.00 ID:n6O252Ih
ポリゴンのアルファ値 * テクスチャのアルファ値 が最終的なアルファ値だから、ポリゴンは不透明にしなきゃ
405名前は開発中のものです。:2012/06/23(土) 04:19:22.68 ID:ZSEfPqkD
○透明なガラスに絵を描く
×絵が描いてあるガラスが透明
406名前は開発中のものです。:2012/06/23(土) 04:20:10.93 ID:ZSEfPqkD
○×逆だったわw
407名前は開発中のものです。:2012/06/23(土) 06:33:56.26 ID:FkvE6HHG
ポリゴンは普通白でしょ。
それにアルファ付きテクスチャ貼れば透明になる。
ポリゴンの方のアルファ直でイフェクトのフェードイン・アウトを
表現する。

408名前は開発中のものです。:2012/06/23(土) 22:06:31.84 ID:51ZWEJvn
うわあああああああああああああああ
409名前は開発中のものです。:2012/06/23(土) 23:58:51.31 ID:vtRNBF0W
うおおおおおおおおおおおおおおおおおお
410名前は開発中のものです。:2012/06/24(日) 12:56:56.50 ID:qh886fVY
出来たああああああああああああああああ
411名前は開発中のものです。:2012/06/24(日) 22:15:23.29 ID:bs3Q6xui
必要のないincludeって可読性のためにしますか?
例えば、
キャラクタークラス→判定クラス/攻撃判定クラス→判定管理クラス・・・
みたいに枝分かれしたりくっついたりしてわかりにくいじゃないですか。
しかも判定管理クラスはキャラクタークラスの情報もわかるわけで、
判定管理クラスでキャラクターの情報を扱おう(ポインタとか)と思った場合簡単にできちゃうわけじゃないですか
そういった場合、無駄というか多少サイズが増えようともincludeを記述すべきなんでしょうか
勿論includeガードを前提とした話で
412名前は開発中のものです。:2012/06/24(日) 23:15:14.06 ID:QTYxn4V+
まだ自前includeが5個しかない小規模プロジェクトだから、
必要なincludeだけ配置する、のほうを優先してる
413名前は開発中のものです。:2012/06/24(日) 23:26:06.25 ID:UNx4+SS2
情報を扱おうと思ったらincludeは必須だろ
414名前は開発中のものです。:2012/06/24(日) 23:52:48.37 ID:f11XiEEl
ってかソースファイルのサイズなんか意識したことない。
ちょっと俺のソースファイル眺めてみたら
判定管理クラスでもvector使う必要性が生じたら
キャラクタークラスでvectorをincludeしてても新しくincludeする。
と言っても判定管理クラスでは
キャラクタークラスはわざわざincludeしない。
新しくincludeするかどうかは
完全にカプセル化されているか否かだと思うんだけど
自分でもどういうときにやるのか良く分からんw
415名前は開発中のものです。:2012/06/25(月) 00:28:00.94 ID:VJrC7tHJ
あともう一個・・・
攻撃を受けることをなんていう?
攻撃←→攻撃を受ける
っておかしいし、弾限定なら
射撃←→被弾
ってあるわけだからなんか・・・思いつかん
416名前は開発中のものです。:2012/06/25(月) 00:28:54.30 ID:MIKwNMgf
>>411
自分の場合、パッと見て分からないものならincludeする。
分かりそうならincludeしないことも多い。

例えば親クラスの親クラスとかなら、簡単に想像できるので改めてincludeはしない。
でも、3代も4代も遡るなら、includeするかもしれない。

継承じゃなくて、例えば途中で特定の構造体を使うために読み込んでるヘッダファイルとかなら、
たとえ必要じゃなくてもincludeすると思う。

417名前は開発中のものです。:2012/06/25(月) 00:31:03.17 ID:MIKwNMgf
>>415
防御、被害、攻撃対象、被ダメージ
このあたりだと思うが、たぶんスレ違い。
418名前は開発中のものです。:2012/06/25(月) 07:48:02.46 ID:lWOdOHa6
被撃やなw
419名前は開発中のものです。:2012/06/28(木) 00:32:53.69 ID:UEJxsXGQ
四角・線・円のどれかの形を持ったオブジェクトが複数あって、
それぞれ重なってるかどうかを確認したいんだけどどうしたらいい?

四角-四角
四角-線
四角-円
線-線
線-円
円-円

ってそれぞれ関数を作って、それぞれswitchで分岐したほうがいいの?
420名前は開発中のものです。:2012/06/28(木) 06:29:43.23 ID:qgT/AfIR
>>419
とりあえずその6つの関数はすべて用意した方がいいね。
staticにして。

どう呼び出すかは色々方法あるけど、C++なら
各形状クラスにIsCollidedWith(anotherObject)
って関数作って、その中で処理すると分かりやすいかな。
421名前は開発中のものです。:2012/06/28(木) 21:50:23.26 ID:Mmuyo/OK
やったああああああ基本ルーチンできたあああああああああああ
3Dは難易度高い分嬉しいな
422名前は開発中のものです。:2012/06/29(金) 08:29:30.02 ID:ppjvoJRJ
だから対外できたああああああああ時点で燃え尽きて
自己満足し完成しない
423名前は開発中のものです。:2012/06/29(金) 20:18:18.12 ID:xIRuvtNR
質問いいですか? 
やりたい事:メインのウインドウからの操作で
コンフィグ用のサブウィンドウを呼び出したい
困ったこと:
メインを閉じるとサブのほうが解放されない
(タスクマネージャのプロセスで.exeが残る)
今の状態:
メインのWndProc(HWND ...){
static SubWindow* sub=NULL;
swith(msg){
WM_LBUTTONDOWN:
if (!sub){
sub=new SubWindow();
sub->Loop();
delete sub;
sub=NULL;
}
return 0;

WM_CLOSE:
if(sub){
delete sub;
sub=NULL;
}
break;
...
注)SubWindowはコンストラクタやデストラクタでCreateWindowとか
DestroyWindowsを呼んでいてこれは単体テストでは問題なく動く
サブを先に閉じるとちゃんと解放される
424名前は開発中のものです。:2012/06/29(金) 21:17:15.58 ID:NjDBxu3W
ポインタ消しただけだからじゃないの
425名前は開発中のものです。:2012/06/29(金) 23:55:43.61 ID:Xs/coWGt
>>423
SubWindowのデストラクタ、Loop()関数が良く分からんからなんとも言えんけど
ttp://msdn.microsoft.com/ja-jp/library/cc410763.aspx
>別のスレッドで作成したウィンドウを DestroyWindow 関数で破棄することはできません。
これじゃない?
APIの仕様は見るようにした方が良いよ。
426名前は開発中のものです。:2012/06/30(土) 07:54:01.71 ID:P6kSrEOz
>425
独学なのでスレッドの概念がいまいち理解できてないのかもしれませんが
クラスのThread的なものは使ってなくてLoopの中身はよくあるGetMessageとかを
無限ループに入れたやつです(これがないとすぐdeleteが呼ばれるので)
全体の構成を変えてsub->Loop()を失くすと上手くいきました
ありがとうございました
427名前は開発中のものです。:2012/06/30(土) 09:03:02.17 ID:0X24vcpq
>>426
基本的にウインドウメッセージは必要な処理が終わったら
すぐにOSに処理を返さなきゃ駄目。
メッセージループはもちろん、重くなる画像処理なんかもできれば避けるべき。
そもそもメッセージループを二つ持つ設計もあまり聞かない。
俺が作るならコンフィグ用ウインドウをモーダルなダイアログにするなぁ。
428426:2012/06/30(土) 09:46:52.38 ID:P6kSrEOz
>427
一人で勉強するとこういう暗黙の常識とか天下り的にこう書けみたいに
なっている所を間違いがちなのは自覚しています
(今回はメッセージループはウインドウごとに必要と勘違いしていました
よく考えたらハンドルも渡して無いし当たり前なのですが)
モーダルダイアログは使ったことが無いのですが試してみて使い勝手が
いいほうで実装しようと思います
429名前は開発中のものです。:2012/06/30(土) 15:01:50.05 ID:3F9rNwbD
14歳からはじめるC++ゲームプログラミングを読んでみて
理解を深めるために改造に挑戦してるんですが、シューティングゲームからアクションゲームにしたいと思っています。
拾ってきた棒人間の素材を歩かせてパンチを実装するところまでは出来たんですが、パンチして相手がのけぞる・・なんてプログラムはどのようなロジックが必要ですかね?
見当が付きません・・・向いてないのかな・・・w
因みに当たり判定は一応出来てます。DXライブラリを使用しています。
430名前は開発中のものです。:2012/06/30(土) 15:04:09.09 ID:u9ES/HMI
>>429
敵キャラが攻撃を受けて消滅する、というプログラムが出来るなら、
やることは同じだぜ
431名前は開発中のものです。:2012/06/30(土) 15:21:01.50 ID:3F9rNwbD
>>430
回答ありがとうございます。
なるほど、敵のライフが減ったらのけぞるアニメーションを出力させる。ということをすれば良かったのか・・・w
なんかアホみたいな質問すみませんでしたwww
432名前は開発中のものです。:2012/06/30(土) 15:21:32.06 ID:0X24vcpq
ダメージを受けた⇒仰け反る画像表示⇒必要あらばノックバック(x軸移動)⇒元に戻す
433名前は開発中のものです。:2012/06/30(土) 16:03:33.88 ID:3F9rNwbD
>>432
ノックバックもあったほうがいいですね!試みてみます!
434名前は開発中のものです。:2012/06/30(土) 19:23:17.85 ID:u9ES/HMI
じ際やるかどうかは別として、仕組みだけでも作っておけば、
ノックバックの数値による武器性能差や敵の防御力差も表現できるからなー。
435名前は開発中のものです。:2012/06/30(土) 20:24:49.36 ID:ekMlCqRn
自キャラと敵の位置関係からのけぞる方向を決めて…ってまで言わなくていいか。
436名前は開発中のものです。:2012/06/30(土) 20:44:40.59 ID:uUUVMwRK
当たり判定って難しいなぁ
斜め四部分の座標を用意して判定してるんだけどダメなのかな
左上と右下だけでいいらしいけど
437名前は開発中のものです。:2012/06/30(土) 21:30:36.47 ID:sFmEknko
なんで矩形判定に四つも座標要るんだよw
上下のx座標は同じだし、
左右のy座標は同じだろ。
438名前は開発中のものです。:2012/06/30(土) 21:43:49.87 ID:luwfrBPp
当たり判定はぐぐればいくらでも例が出てくるから、
かなり簡単なほうだと思う
439名前は開発中のものです。:2012/06/30(土) 21:46:25.17 ID:u9ES/HMI
回転しない矩形なら、まずは1次元(いわゆる数直線)での線分同士の接触から考えると良いと思うんだ。
440名前は開発中のものです。:2012/06/30(土) 22:11:42.93 ID:BzVFJBXt
いくらなんでも回転は必要だろw
441名前は開発中のものです。:2012/06/30(土) 22:21:38.51 ID:luwfrBPp
ゲームによる
小規模なゲームなら、回転なしで済むことも多いんじゃないかな
442名前は開発中のものです。:2012/06/30(土) 22:38:14.91 ID:ekMlCqRn
小さい当たり判定を持つブロックを連結して回転させるって方法もある。
443名前は開発中のものです。:2012/06/30(土) 23:48:01.33 ID:sFmEknko
自機との衝突判定ならそうはいかないけど
敵と自弾の当たり判定なら適当でもそれっぽく見えるもんだしな。
444名前は開発中のものです。:2012/07/01(日) 07:10:15.89 ID:YspR7/0m
C++でゲームを作る利点は? と訊かれて、何と答えれば良いですか?
445名前は開発中のものです。:2012/07/01(日) 08:04:46.32 ID:AF0355cY
座標クラス作って矩形クラス作ってテキスト表示クラス作って
イベント処理クラス作ったあたりで力尽きて次のプロジェクトを開く俺
446名前は開発中のものです。:2012/07/01(日) 08:10:58.61 ID:jOlQX6bu
>>444
何と比較しての話だ。
447名前は開発中のものです。:2012/07/01(日) 08:45:59.40 ID:sxvh8MwG
>>444
オブジェクト志向言語の中では一番高速
448名前は開発中のものです。:2012/07/01(日) 09:00:10.52 ID:ns7VOwMN
ノウハウが多い
便利なライブラリがある
俺が慣れてる
449名前は開発中のものです。:2012/07/01(日) 09:00:30.01 ID:y6Ae8N/U
C++しかやったことないから分からん
450名前は開発中のものです。:2012/07/01(日) 09:15:01.84 ID:ATpFcdqZ
高速省メモリ以外に何があるというんだ
451名前は開発中のものです。:2012/07/01(日) 09:17:40.87 ID:fdCf0Rpd
C++の勉強と並行にできるから
452名前は開発中のものです。:2012/07/01(日) 09:25:51.88 ID:YP0EClal
C++に対する各界の反応:

私はオブジェクト指向という言葉を発明したが、C++のことなんて全く念頭になかったね。
-- アラン・ケイ

C++の進化の歴史は文字列の抽象化を漏れを塞ごうと試行錯誤するものである。
なぜ彼らが単にネイティブ文字列を追加しないのかわからない。
-- ジョエル・スポルスキー

C++は見栄えをよくしたCOBOLとして現在使われている唯一の言語だ。
-- バートランド・メイヤー

もしBjarneがCとの互換性にこだわる必要がなかったとしたら、Javaを開発していたろうね。
-- ビル・ジョイ

C++言語のデザイナーたちは、同じ問題を解決するアイディアが二つあると、いつも「よし、両方ともやろう」と言う。
だからこの言語は私の感覚ではかなり奇怪(baroque)なものになっている。
-- ドナルド・クヌース

歴史的に、他人に使ってもらえるようにデザインされた言語は出来が悪い:COBOL, PL/I, Pascal, Ada, C++.
良い言語はクリエイターが自身が使うためにデザインしたものである:C, Perl, Smalltalk, Lsip.
-- ポール・グレアム

C++なぞ問題外. ^^;;;
-- まつもとゆきひろ
453名前は開発中のものです。:2012/07/01(日) 09:34:02.19 ID:14Ptl6dQ
>>444の質問の仕方が微妙に癪に障る。
「何と答えれば良いですか?」ってどういうことだよ。
454名前は開発中のものです。:2012/07/01(日) 09:46:39.51 ID:Zk1+a/ob
>>453
誰かに聞かれて答えに窮したんじゃない?
455名前は開発中のものです。:2012/07/01(日) 11:13:32.21 ID:14Ptl6dQ
>>454
だったら尚更おかしくねーか?
>>444がC++に何らかの利点を見出して使っていて
誰かから氏の考える利点を聞かれたのだとしたら、
こちらはそれを知る由がない。とどのつまり、氏の考えを答えれば良い。
456名前は開発中のものです。:2012/07/01(日) 11:46:44.73 ID:PIvK6wSS
「俺はこう思うがみんなはどう思う?」ならわかりやすいってこったな
または、「俺にはよくわからないがみんなはどう思う?」かな
457名前は開発中のものです。:2012/07/01(日) 20:48:21.10 ID:t/E9qLzT
3Dの当たり判定フレームって用意するべき?
透明で作ったのに実際に使うと灰色で表示しちゃう
458名前は開発中のものです。:2012/07/01(日) 21:22:21.43 ID:hIrVEsp2
ここC/C++総合でエスパースレじゃないからいい加減にしとけ
459名前は開発中のものです。:2012/07/01(日) 21:29:27.24 ID:PIvK6wSS
でも>>458のIDはESPer
460名前は開発中のものです。:2012/07/01(日) 22:24:58.66 ID:BSmkZ9bf
ワロタw
461名前は開発中のものです。:2012/07/01(日) 22:40:30.25 ID:+/mujehG
これはすごいww
462名前は開発中のものです。:2012/07/02(月) 00:08:50.06 ID:3A+KHbJa
>>458
早く答えろよ
463名前は開発中のものです。:2012/07/02(月) 07:50:25.69 ID:BzUrP9PR
__|__  __|__       /\  ____
__|__   _|_      /__\    /   | _|_
 __|    /  |/ ヽ      _|_    (     |  .__|
(_ノ\   ヽ__|  ノ  ヽ   _|_     \   し(_丿\

 | 立 ヽ|二| | |  |  ___
ノ|ヽ日 ヽ|二| | | .|
 | 心 /ハ  .」 | (___
     __
 \  |   |
 _   |_|二|_   ―┼―ヽヽ_/_        .  l     |         _|_,
   |  |┌┐ |   ―┼―   /   \ |   \.  |  ̄ ̄| ̄  \ /ヽヽ  |/⌒ヽ
  /.  |└┘ .」  |  ゝ    / ___|   |     | |    |   /     /|     |
 /\____  \_     \ノ\  レ      レ   ノ   l__.    |   ○ヽ
464名前は開発中のものです。:2012/07/02(月) 18:52:40.56 ID:N8CuyDk2
文字を枠内に修めるように20字で改行するようにしたら文字化けして禿げる
結局1文字目から半角全角判定するはめになってしまった
465名前は開発中のものです。:2012/07/02(月) 19:32:41.62 ID:8aDIpve6
文字数カウントならUnicodeでも使えば? と思ったけど
その目的じゃ無意味か…
466名前は開発中のものです。:2012/07/03(火) 15:44:13.61 ID:qcphWCMt
文字使わないゲームは楽でいい
467名前は開発中のものです。:2012/07/03(火) 19:17:00.56 ID:PqTZI9VV
ちょっと質問、アクションでの敵の出現って

マップロード時に出現用座標xyセット→
出現用xyが画面(640*480)より内側に入ったら実座標xyをセットして出現フラグ0から1に→
出現フラグ1の時に敵の行動

でいいのかな?
シューティングは時間で勝手に出てくるからいいんだけどアクションとなると不安になる
468名前は開発中のものです。:2012/07/03(火) 19:57:49.61 ID:w7+696z6
ちゃんと想定通りになるなら、なんでもいいんじゃないの。

規模によっては、ゲームスタート時に全敵キャラ配置してしまって、
プレイヤーが近づくまでは動かない、みたいにしておいても問題ないだろうし。
469名前は開発中のものです。:2012/07/03(火) 21:01:27.95 ID:hewWujfE
>>467
画面に写ってる・写ってない関係なく、
すべての敵を同等に処理すべし。
例えば「主人公が近づいたら攻撃開始」ってロジックだと、
遠くの敵は何もしないわけから、出現フラグとかは無駄なだけ。

キャラが持ってる座標は一つだけでいい。(ワールド座標)
スクリーン座標への変換は描画する時に毎フレーム行う。
470名前は開発中のものです。:2012/07/03(火) 21:08:27.79 ID:PqTZI9VV
>>469
意味が分からない
どれに対して何を言っているんだ
471名前は開発中のものです。:2012/07/03(火) 21:24:34.52 ID:hewWujfE
>>470
何が分からないのか逆に分からないが、一応467の言葉を使ってまとめると、

ー出現フラグはいらない(常に1という扱いでいい)
ー出現用座標・実座標という区分はいらない(キャラが持つのは
ワールド座標一つだけ。描画のルーチン内でスクリーン座標に変換)



472名前は開発中のものです。:2012/07/03(火) 21:27:19.44 ID:fvwgxM+2
>>471
なるほど
でも座標区分しないと復活した時に面倒じゃないの?
一回倒せば二度と出てこないってんならそれでもいいけど
473名前は開発中のものです。:2012/07/03(火) 21:29:20.94 ID:/lyu3gmk
>>472
何がどう面倒なの?
474名前は開発中のものです。:2012/07/03(火) 22:12:31.15 ID:lGBezvmV
あるクラスのメンバクラスが、他のメンバクラスにアクセスするにはどうしたらいいでしょうか?

private:
 hoge a;
 hage b;

aからbにアクセスするにはbのアドレスをaに渡すほうがいいのでしょうか?
aを配列として使うのですべての配列要素が全く同じアドレスを持つというのは無駄な気がしなくもないんですが・・・
475名前は開発中のものです。:2012/07/03(火) 22:44:43.80 ID:QVaNABCq
staticメンバ使えば最初に登録すればいいだけなのでは
476名前は開発中のものです。:2012/07/03(火) 23:33:37.00 ID:lGBezvmV
とりあえず、メンバクラスにアドレスを渡して置くという方法?
477名前は開発中のものです。:2012/07/03(火) 23:39:29.74 ID:kMyALjn1
>>474
aの管理クラスを作ってbにアドレスを渡してる。
aのインスタンス管理は無論、a管理クラスに任せる。
478名前は開発中のものです。:2012/07/03(火) 23:49:05.86 ID:QVaNABCq
>>476
hogeのstaticメンバとしてhageへのポインタを用意すんの
これじゃだめかな
479名前は開発中のものです。:2012/07/05(木) 05:35:55.79 ID:PrdEEWPn
>>474
aが何で、bが何かによると思うのは俺だけ?
480名前は開発中のものです。:2012/07/05(木) 08:29:33.89 ID:LCKU4gy4
>>477
管理クラス←アンチパターン
481名前は開発中のものです。:2012/07/05(木) 17:35:54.33 ID:mowBZkIu
ネトゲのリポップ処理ってどうやってるんだろうね
あれ全モンスターにID持たせるのかな、数千数万になるけど…
482名前は開発中のものです。:2012/07/05(木) 18:17:21.42 ID:Uz6KpPXV
エリアごとに分けてればそれほどでもないだろ。
483名前は開発中のものです。:2012/07/05(木) 18:43:07.03 ID:+By1gDj8
エリアのプレイヤー数に対してモンスターが少なすぎるようなら生成
IDは生成したときに与える、ってとこじゃないだろうか
484名前は開発中のものです。:2012/07/05(木) 19:06:23.28 ID:Uz6KpPXV
俺はID(があるなら)固定だと思うけどね。ていうかそもそも消えたりしてないんじゃないかと。

例えば、あるエリアにスライム5、ゴブリン5居たとして、スライム一匹潰した後に湧くのが
ゴブリンだなんて事はありえない。かならずスライムが湧くはず。

つまりスライムは完全に消えたわけじゃなくて、見えなくなっただけで時間が経つとまた出てくる。
(もし近くに長時間プレイヤーがいなければ、また見えなくなる)
……って感じじゃないかと思ってる。
485名前は開発中のものです。:2012/07/05(木) 20:43:41.25 ID:oxq25Y2j
敵って湧き出させるモノだったのか。作りかけで放置している
アクションゲームでは、敵はマップの切り替え時に出現させてたな。
ちなみに今はRPGを作ってる。
486名前は開発中のものです。:2012/07/05(木) 20:53:06.49 ID:u34UuYlA
敵をどう出現させるかはゲームにもよるんじゃね?
ネトゲの場合はマップ切り替え事に敵を出現させるわけにはいかないからな
487名前は開発中のものです。:2012/07/05(木) 20:54:56.82 ID:yWXaexJ3
各プレイヤーの画面から外れた時や、視覚になっているところにスポーンさせてるゲームもあるね。
488名前は開発中のものです。:2012/07/05(木) 20:58:25.81 ID:oxq25Y2j
煙とともに湧き出して、爆発して消えれば良いんじゃね?
まあ、地面から生えてきても空から降ってきても何でも良いわけだが。
489名前は開発中のものです。:2012/07/05(木) 20:59:40.72 ID:AJBPOHQp
やっぱり全マップの全モンスターに個別の識別IDあるっぽいね…
データは鯖で受け持つからいけるのか
490名前は開発中のものです。:2012/07/05(木) 21:12:23.60 ID:u34UuYlA
鯖を安定させたいなら敵の数は一定数以下にするわな。
メモリーの断片化問題は未だに存在するからな。
491名前は開発中のものです。:2012/07/05(木) 22:47:29.79 ID:1bz8EPLc
モンスがマップ移動せず、そのマップで出現数とか種類が固定ならさして意識するほどでもないんじゃないか
同期もマップごとだろうしなおさら負荷は軽いと思うけど
492名前は開発中のものです。:2012/07/08(日) 13:20:15.74 ID:S3ewktKV
むしろモンスターよりもアクセス数の方が問題になるんじゃね?
何人がアクセスするかは知らんけど。podとかもアクセスするんだろうし。
493名前は開発中のものです。:2012/07/08(日) 19:44:51.23 ID:H5MzAkTh
まあモンスターの増減にくらべたらプレイヤーのIN/OUT管理のほうが面倒だろうね
そのへん扱った本も出てた気がするが
494名前は開発中のものです。:2012/07/09(月) 00:34:03.18 ID:OxO1vT6L
キャラクターってポップ・リスポーンするたびにnewする?
アバウトすぎて悪いが。
495名前は開発中のものです。:2012/07/09(月) 00:36:25.45 ID:r1EZTK91
弾幕ゲーの弾みたいに、大量に使うもんでもなければnewしちゃうかなー。
496名前は開発中のものです。:2012/07/09(月) 06:09:54.33 ID:80lo3JdK
>>494
PCならnewで問題ない。
モバイルだとメモリ容量とスピードが厳しいから
スタート時に必要な分だけnewしておくって
方法が推奨されてるが。
497名前は開発中のものです。:2012/07/09(月) 21:03:32.49 ID:GTyE2QTK
2DSTGで大量に使うつもりなんで、最初にnewするほうで作ってる
498名前は開発中のものです。:2012/07/09(月) 21:31:36.26 ID:ErXR7xzG
最初にやるならnewである必要はないんじゃなかろうか
499名前は開発中のものです。:2012/07/09(月) 21:42:14.13 ID:42rBHU/9
( ´・ω・)ニュ?
500名前は開発中のものです。:2012/07/09(月) 22:23:39.90 ID:5e5gne6r
二重三重にnewするぐらいなら素直にvector使っとけって事だろ
std::vector< std::vector<int> >
とかな
501名前は開発中のものです。:2012/07/09(月) 22:33:26.08 ID:r1EZTK91
vectorならいっそlistで…
502名前は開発中のものです。:2012/07/09(月) 23:55:15.54 ID:ErXR7xzG
ん、ここC#じゃなくてC++だろ?
503名前は開発中のものです。:2012/07/10(火) 01:56:39.34 ID:rmrYQa3p
ん?
504名前は開発中のものです。:2012/07/10(火) 01:57:39.49 ID:bYyr9lHU
>>502
えーっと?
505名前は開発中のものです。:2012/07/10(火) 06:50:57.67 ID:l1WJD6/w
>>500
intならそれでいいけど、キャラの話だからクラスでしょ。
無駄にコピーコンストラクタ呼ばない為にもポインタ配列の方がスマート。
506名前は開発中のものです。:2012/07/10(火) 08:34:22.27 ID:FrGvDDTz
最初に宣言するなら静的に確保すればいいって話じゃないの?
507名前は開発中のものです。:2012/07/10(火) 09:38:19.15 ID:EJC+7XBR
ポリモルフィズム絡むと動的確保になるんじゃね?
508名前は開発中のものです。:2012/07/10(火) 09:43:51.21 ID:0iT5fjjR
>>507
今ならその振る舞いはデータなりスクリプトなり外に定義するのが定石だし、あんまり多態に気を使う必要はないと思うな。
509名前は開発中のものです。:2012/07/10(火) 10:55:37.09 ID:FrGvDDTz
>>507

そういうものなの?
ほかの人がどうやって処理してるのか知らないけど、私みたいに敵弾全てのポインタを一つのlistにまとめて、判定が求められる度に最初から最後まで回すというやり方だと、静的確保でも動的確保でも扱いは一緒だけど。
510名前は開発中のものです。:2012/07/10(火) 11:10:39.07 ID:0iT5fjjR
>>509
うーんと、日本語でok。
色々言葉が抜けてると思う。
511名前は開発中のものです。:2012/07/10(火) 12:23:24.28 ID:bYyr9lHU
文章の意味は通じるけど、噛み合ってないだけのような気がする。
例えば敵キャラだとして、

>507:
敵基本クラスを用意して、それぞれの敵ごとに派生クラスを用意する方法。(ポリモーフィズム)
この場合、それぞれの敵データは動的確保になるのではないか。
→ コンテナ自体については何も言っていない。

>509:
初心者向け講座などでも見かける、分かりやすい方法。
配列に突っ込んでfor文で回し、その敵キャラが生存中なら動かす。
こういう使い方なら、コンテナが性的確保でも動的確保でも大して変わらないのではないか。
512名前は開発中のものです。:2012/07/10(火) 21:14:35.21 ID:w8zKxgID
性的確保とかオニーチャン(*・∀・*)エッチー!!
513名前は開発中のものです。:2012/07/10(火) 22:00:13.75 ID:w5hM7Ju/
俺も性的確保してるわー!!
514名前は開発中のものです。:2012/07/11(水) 02:29:16.09 ID:oUV8iC+I
クォータニオン全然わかんね
フライトゲー作れん
515名前は開発中のものです。:2012/07/11(水) 05:51:41.63 ID:qo66iTif
クォータニオンの理屈を理解する必要はないでしょ。
ただ関数の使い方を覚えればいいだけ。
ベクトル演算してくれる便利な関数として。
516名前は開発中のものです。:2012/07/11(水) 12:09:33.22 ID:u+O+5Fp4
今イベント作ってるんだけど結構難しいな、処理の流れが分からん
呼び出したイベントの中でwhileさせて終わったらbreakして元のゲームシーンに戻る、でいいのかな
517名前は開発中のものです。:2012/07/11(水) 12:18:55.07 ID:Ss1m1zkg
Event e;
while (GetEvent(&e)) {
switch(e.types){
case EV_XXX: Handle_XXX(&e); break;
case EV_YYY: Handle_YYY(&e); break;
default: UndefinedEvent(&e); break;
}
}
Update();
Render();

こういう話け?
518名前は開発中のものです。:2012/07/11(水) 12:19:22.08 ID:tqKQLHM/
ゲームループを2つ持つのは危険じゃない?
危険というか面倒というか。
519名前は開発中のものです。:2012/07/11(水) 12:32:33.71 ID:u+O+5Fp4
>>517
多分そう、具体的にいうとイベント発生場所にいったら関数でIventを呼び出して…って思ったけどよく考えたらwhileいらなそうだった…
とにかく呼び出したイベント内で人形劇の処理をして、終わったら操作可能にしたいんだ
520名前は開発中のものです。:2012/07/11(水) 13:11:43.36 ID:QVXr7gUf
>>519
イベントではゲームのステートを「ゲーム中」から「人形劇」に変えるだけ。

Update関数の中で、

if ( state == IN_GAME ) UpdateGame();
if ( state == NINGYOGEKI ) UpdateNingyogeki();

って分けて処理する。

Render関数内も同様にステート別に分けて処理する。

一番いいのはStateMachineのデザインパターンを使う事だな。


521名前は開発中のものです。:2012/07/11(水) 17:51:31.94 ID:KGHQaVRn
なんか話がかみ合わないと思ったらここDXライブラリスレからの派生だったのか
522名前は開発中のものです。:2012/07/11(水) 21:06:06.49 ID:/SCDzRML
ほかの人がC/C++で何使ってるかも興味ある
523名前は開発中のものです。:2012/07/11(水) 21:15:00.60 ID:2n0kaEhz
カードゲーム作ってる
524名前は開発中のものです。:2012/07/11(水) 21:33:53.06 ID:tqKQLHM/
>>521
噛み合わないって程でもないと思うけどな。
DXライブラリのユーザや経験者はかなり多いから、その話になることはあると思うけど。
525名前は開発中のものです。:2012/07/11(水) 23:17:34.72 ID:p3ZGdSyh
どこにDXライブラリの話があったのかすら分からない
俺はどうかしてしまったんだろうか
526名前は開発中のものです。:2012/07/12(木) 01:44:30.76 ID:sOmAnMYX
>>519
シーンごとにクラス分けてポインタで切り替えるのが一般的なんじゃないかな

俺はシーン遷移が好きじゃないんで、
入力処理、描画処理、エネミー管理、などをそれぞれクラスにして毎ループ呼んでる
処理が不要なときはそれらのクラスが自分で判断して即return

いずれにしろ、ゲームループ側では何も判断しないほうが安全だろうと思う
メインループあちこちに作っても作れなくはないだろうけど、大変でしょ。単純に
527名前は開発中のものです。:2012/07/12(木) 05:56:46.54 ID:ERiCLftQ
C++で書かれていてお手本になるような、ゲームのソースコードがどこかにないものか
528名前は開発中のものです。:2012/07/12(木) 06:05:39.68 ID:1YIGftK5
出来のいいオープンソースのゲームを覗くしかないのでは
でも出来がいいものほどソース理解するの難しいよな
529名前は開発中のものです。:2012/07/12(木) 06:12:20.72 ID:Okbrb1eH
デザインパターンを理解してないと難しいだろうね。
Factoryとか。
530名前は開発中のものです。:2012/07/12(木) 16:16:02.67 ID:CNTbtg6J
出来のいいものほど柔らか骨格にパラメータで全体の流れを巧みに操つる造りに成ってるからな
531名前は開発中のものです。:2012/07/12(木) 21:15:31.97 ID:Q3jNzQF9
勉強の段階によってお手本は変わってくるんじゃね
1個のお手本で、こどものさんすうから大学の数学までカバーできないように
532名前は開発中のものです。:2012/07/12(木) 21:48:26.05 ID:0hXWCNMw
むしろDXライブラリ使ってまでC++に留まるメリットがわからん
533名前は開発中のものです。:2012/07/12(木) 22:12:25.81 ID:BAoiCiKw
>>532
うーん、自分にはその発想が理解できん
534名前は開発中のものです。:2012/07/12(木) 22:20:52.68 ID:N7b9n3Sl
というか何が言いたいのかわからん。
535名前は開発中のものです。:2012/07/12(木) 22:33:13.93 ID:BAoiCiKw
>>534
ちょっと考えてみたが、C言語用のゲームライブラリくらいにしか認識してないのかなと思った。
それなら何故C++使ってるのにDXライブラリなのか?という疑問も理解できる。
536名前は開発中のものです。:2012/07/13(金) 05:22:42.09 ID:bMeyv5YE
いや、それでも分からん・・・
じゃ何使えばいいの?
537名前は開発中のものです。:2012/07/13(金) 05:38:57.75 ID:7k+Kbp95
じゃあ何言語を使えばいいの?って聞き返せばいいんだよ。
538名前は開発中のものです。:2012/07/13(金) 06:34:46.83 ID:153d+V+p
C#と言う宗教
539名前は開発中のものです。:2012/07/13(金) 07:29:32.94 ID:PGJULSr7
C#使ってみたけど結局C++に戻った俺もいるしな
な〜んか使い方にクセがあって扱いづらかった
.NET用に拡張されたCって感じで、VBで良いジャンて
540名前は開発中のものです。:2012/07/13(金) 08:49:14.24 ID:PGJULSr7
おや?IDがPGだ
C++って資料が沢山出てるから本に頼ってゲームを作る人には扱い易いんだよな
ライブラリも色々出てるしな
まあ、自分の場合はライブラリは自前で作ってるけど
541名前は開発中のものです。:2012/07/13(金) 09:50:37.60 ID:lnobyAq4
c#もc++/cliちょっと弄ったことある。
ヴィジュアルな開発スタイルは確かに魅力的だが
いかんせん、.netがもっさりしてるw
542名前は開発中のものです。:2012/07/13(金) 11:32:07.77 ID:tBFmzkh+
いや、C#の構文は美しいよ。
さすがに後発だけあって、Javaでの不都合も解消されてるし。

スピード命のエンジンレベルはC++で、
ゲームの挙動レベルはC#でって組み合わせが最強。
543名前は開発中のものです。:2012/07/13(金) 12:05:05.15 ID:nWhRf/8s
C#キチは専用スレでやってね
544名前は開発中のものです。:2012/07/13(金) 12:45:53.36 ID:+ttgLcnr
現状ではWin2000以降の対応でゲーム出してるけど、.NETだとランタイムをユーザーにインストールして貰う必要があるからなあ。
フリーソフトならともかく金取ってるゲームでそんな手間かけてもらうわけにもいかない。
545535:2012/07/13(金) 12:54:11.36 ID:enpDtwWd
>>536
>DxLib + C++

例えるなら、PerlでGUIアプリを作るとか、PHPをウェブ以外で使うとか、
特に問題があるわけではないけど、何か違うくね?……っていう感覚なんじゃないかなと。

DxLibは基本的にDirectXのラッパでしかなく、それを更にラップした独自ライブラリ/フレームワークを用意して
実際のゲーム制作ではそちらを使うというスタイルが多い(らしい)から、ちょっと的外れかなとは思うけれどね。

C++初心者向けのゲームライブラリとして、何があるかまでは不勉強なので分からないや。
546名前は開発中のものです。:2012/07/13(金) 19:24:51.62 ID:ooGYr7Tb
こんな回りくどい言い方しないで
もっと率直に自分の感情を書くべきだ
1日でIDが変わる匿名掲示板なんだから
547名前は開発中のものです。:2012/07/13(金) 21:52:02.26 ID:GFWaB287
DirectXのラッパを自作する上で参考になるサイト知らないですか?
548名前は開発中のものです。:2012/07/13(金) 21:54:17.44 ID:v88A/xlY
>>547
DXライブラリのソースを読んでみたら?

俺は挫折したけどw
549名前は開発中のものです。:2012/07/13(金) 22:11:12.04 ID:153d+V+p
>>547
無目的なただのラッパ?
それとも何か理由と目的のあるラッパ?
前者ならなんとなくDxLib真似るとか、
後者なら内容次第。
完全な個人向けならお好きなように、じゃね
550名前は開発中のものです。:2012/07/13(金) 23:18:57.82 ID:xCVn/t3+
俺とともにIrrlichtを使わないか?
551名前は開発中のものです。:2012/07/14(土) 01:50:47.28 ID:/kLJ8Xzy
>>547
MSDNじゃないかなぁ。
まずはコレ。
ttp://msdn.microsoft.com/ja-jp/library/ff381399%28v=vs.85%29.aspx
モジュール1でウィンドウニングについて述べられて、
モジュール2のCOMの使用方法
モジュール3の(IUnknown の実装であるところの)Direct2Dの使用例
ここまで読めれば、SDKの中のサンプルコードが読めるようになると思うから
VCのincludeディレクトリの中にある comip.h の _com_ptr_t クラスをじっと眺めてみれば
もう少し目的がはっきりしてくるんじゃないかなと思う。
552名前は開発中のものです。:2012/07/14(土) 09:05:20.35 ID:LgPC3apE
ラップる目的なら色々あるな
Windowsの面倒な初期化処理を隠蔽するとか、エラー処理を統一するとか、
メモリーの断片化を押さえるとか、色々な後始末をクラス構造に任せるとか、
文字列処理を理解し易くするとか、ファイルとメモリー処理を統合するとか、
とりあえず自分がクラス構造でラップしまくった理由を思い付くままに挙げてみた
まだ何か自前ライブラリに走った理由はあったかな?
553名前は開発中のものです。:2012/07/14(土) 09:35:56.82 ID:0fILVSE/
>>552
そこまで詰め込むと何かが犠牲にならない?w
パフォーマンスとか、設計構造を維持するための時間とか、
全体の整合性とか、ゲームを作る目的とライブラリを作る目的が
入れ替わってきている気がするんだが・・・。
鉄製の釘でも鋼鉄製の釘でも釘は釘なんだが。ちなみにIDがPC。w
554名前は開発中のものです。:2012/07/14(土) 13:11:00.27 ID:SOXnt3Ty
>>552にはなにも難しいこといってない
毎回書くお決まりをまとめておいたりスマート化させるだけ
デメリットはほとんど無い
555名前は開発中のものです。:2012/07/14(土) 13:20:50.95 ID:HDGGmFuy
十分なスキルがあれば、いいんじゃないかな
逆に言えば、自分のスキルと相談して規模決めるのは必要かもな
556名前は開発中のものです。:2012/07/14(土) 21:52:53.79 ID:KzvhKU6/
ライブラリ作る時間でどれだけゲーム作れるかと
557名前は開発中のものです。:2012/07/14(土) 22:43:48.43 ID:M75BI5Yo
必要だと思ったときにつくりゃいいよ
558名前は開発中のものです。:2012/07/14(土) 22:51:13.34 ID:pGsrpRjZ
ミニゲーム作る
   ↓
汎用的に使えそうな部分だけ抜きだす
   ↓
それを元に新作を作る
   ↓
汎用的に使えそうな部分だけ抜きだす
   ↓
以下、ループ


自分はこんな感じ

559名前は開発中のものです。:2012/07/14(土) 23:07:03.88 ID:i6fWDWmL
俺もそんな感じだな。
次第に使いやすくなってきてはいるが、あくまで「自分にとって使いやすい」だけなのが微妙だw
それに「抜き出す」作業が結構めんどい。
560名前は開発中のものです。:2012/07/14(土) 23:19:25.00 ID:pGsrpRjZ
>>559
一応ライブラリっぽい体裁にはなってるけど、新作の度に少しずつ修正してるから
ライブラリ自体の互換性がないのも問題だよなw
561名前は開発中のものです。:2012/07/14(土) 23:24:34.69 ID:CUAwDKNY
カプコンのMTフレームワークもそんな感じだし別にいいんじゃね
562名前は開発中のものです。:2012/07/15(日) 03:22:03.42 ID:86w3bsYI
修正と互換性は関係ないだろ...
563名前は開発中のものです。:2012/07/15(日) 03:51:55.19 ID:M3YlRKmP
>>562
そういう人はそうなんだろうね、としか言えん
564名前は開発中のものです。:2012/07/15(日) 09:35:47.68 ID:qivp1FGs
クラスで遷移管理しているゲームで、

トップメニュー→ゲームセッティング→メインゲーム
って分けるか
トップメニュー→メインゲーム(セッティング)

ってわけるかどっちがいいの?
セッティングってのはキャラクターの数とか武器の種類とか決められる
565名前は開発中のものです。:2012/07/15(日) 11:34:16.49 ID:g5V3H3w4
プレイヤーに何をやらせたいか次第じゃない?
毎回セッティングさせたいなら、セッティングを上位に持ってくる
セッティングは最初の1回だけなら、セッティングは下位に置いておく
その中間なら、中間の位置

スタンダードなのは
・トップメニュー
 ・メインゲーム
 ・ゲームセッティング
という階層構造だよな
566名前は開発中のものです。:2012/07/15(日) 11:55:28.53 ID:qivp1FGs
>>565
ゲームセッティングの情報をメインゲームに伝えるにはトップメニューで情報を持つの?
567名前は開発中のものです。:2012/07/15(日) 12:01:55.64 ID:g5V3H3w4
ごめん、>>565はUIのことしか考えてなかったわ
多分>>564のききたいことと無関係なんで、一旦おいといて
568名前は開発中のものです。:2012/07/15(日) 12:12:07.21 ID:qT0/v6ro
参照さえ渡しておけば、どっちからでも呼び出せるんでは。
569名前は開発中のものです。:2012/07/15(日) 12:59:49.07 ID:k7fUvEhZ
全部シングルトンにしておけば万事おk
570名前は開発中のものです。:2012/07/15(日) 16:56:53.22 ID:M3YlRKmP
>>566
 int level = 1;  //ステージセレクト
 p = new GameMain(level);

とか

 p = new GameMain();
 p->level = 1;  //ステージセレクト

とかは?
 
571名前は開発中のものです。:2012/07/15(日) 18:31:21.04 ID:qivp1FGs
よくわからないので

クラス3つ作って

「このゲームモードでメインゲームを作って」

「ゲームモードの各種設定するからこれらを使ってメインゲーム作って」

「メインゲームの管理するよ」

ってわけました
一番目のやつですね
572名前は開発中のものです。:2012/07/15(日) 19:00:18.80 ID:0Hpy85vc

ゲームセッティングは、 メインゲームのファクトリクラスの要素が強ければ上
(例えばSTGの残機の初期数、難易度の初期値とか)
メインゲームのパラメータを直接触るなら(例えば残機そのもの、難易度そのものを増減させる)
それは、メインゲームのコントローラクラスの要素が強いから下

もし、コントローラクラスでの設定をファクトリクラスにも伝播させたければ、chain of responsibility で繋ぐ。
って感じじゃないかなぁ・・。
573名前は開発中のものです。:2012/07/15(日) 20:48:21.18 ID:wcfQStx9
セーブ処理って使ってる変数一個一個調べて全部詰め込むの?
凄い大変そうなイメージがある
574名前は開発中のものです。:2012/07/15(日) 21:06:29.29 ID:uYx7dRQJ
構造体丸ごとバイナリデータとして吐き出しゃええやん
575名前は開発中のものです。:2012/07/15(日) 21:35:31.74 ID:74On16p0
シリアライズ
576名前は開発中のものです。:2012/07/15(日) 21:48:47.73 ID:ZYToeOBD
構造体丸ごとっていうけど
普通キャラクターのHPとかのステータス情報と
マップの現在位置とかのデータって別構造体になってるよね
別クラスのメンバになってるよね
構造体丸ごとじゃできないよね
577名前は開発中のものです。:2012/07/15(日) 22:14:14.52 ID:/cTlEB1E
構造体2個保存すればいいじゃん
578名前は開発中のものです。:2012/07/15(日) 22:33:47.13 ID:XWx+X5ep
構造体に対してまるごとコピーするのって、そもそもあんましよくないんじゃなかったっけ?
継承関連の情報が含まれてたり(C++)、データのアライメントの問題(C、C++)だったりで。

俺はRPGのデータ一つ一つ保存してるけど、対して苦じゃないよ
579名前は開発中のものです。:2012/07/15(日) 22:42:18.78 ID:8DUrkUeO
Boost.Serializationを知らないって哀しいことだよな…
ゲーム作れればいいとか言ってるヤツほど、無駄な労力使ってる
580名前は開発中のものです。:2012/07/15(日) 22:59:14.81 ID:GGXAkzGd
こう作るのが楽って書いてあるところが見つからなくてな
581名前は開発中のものです。:2012/07/15(日) 23:01:42.65 ID:MIGl/6HM
>>579

まったくその通りだ。
でも、どこで無駄な労力を使ってるのかすら分かってないんだ。
582名前は開発中のものです。:2012/07/15(日) 23:16:27.02 ID:YnaGyMGF
>>580
そのものズバリが書かれてないと書けませんなんて事無いでしょ
583名前は開発中のものです。:2012/07/15(日) 23:18:13.84 ID:g5V3H3w4
boostにしろデザインパターンにしろ、知らない人向けに噛み砕いたサイトってのはまだまだ少ない気がするな
584名前は開発中のものです。:2012/07/15(日) 23:18:42.01 ID:wcfQStx9
全て構造体で変数作るのか、かなり大変だな…
585名前は開発中のものです。:2012/07/15(日) 23:20:47.28 ID:0Hpy85vc
仮想メモリ環境のOS下なら、mmap とか CreateFileMappingから始まる
メモリマップをつくってPODの構造体コピーしてやるのが一番楽だと思うけど。
586名前は開発中のものです。:2012/07/15(日) 23:25:14.63 ID:GGXAkzGd
ヒントが転がってても気づけなきゃ意味ないし答え知ってるのは自分の飯の種として隠すか見下すために言わないか
実績のある作者が本でも書いてくれりゃいいがそういう人は自分のゲームに忙しい
おかげで初心者たちは再発見に時間を使わなきゃならんというわけだ
同じ立場なら俺もそうするから責められないが
587名前は開発中のものです。:2012/07/15(日) 23:28:34.48 ID:g5V3H3w4
自分のことは棚に上げて責めるのも自由だ
588名前は開発中のものです。:2012/07/15(日) 23:30:00.36 ID:Bi5s8JYn
クラス設計で悩みだしたら
デザインパターンを一通り目を通しておいたほうが良いと思う。
589名前は開発中のものです。:2012/07/15(日) 23:37:36.39 ID:cSn3r97a
情報を噛み砕いて文章にするのはスキルがいるし労力もかかる。
それに正確性を期すのも大変だよ。
多分そんな感じで情報が共有されるレベルまで行かないんだと思うな。
590名前は開発中のものです。:2012/07/16(月) 02:00:57.26 ID:DJjfK88A
>>578
マクロで全フィールドにマーキングしておけば
msgpackなんかはよきに計らってくれるはず
591名前は開発中のものです。:2012/07/16(月) 02:36:25.90 ID:L/A42VBY
なんだかんだでセガ本あたりかねぇ
592名前は開発中のものです。:2012/07/16(月) 09:35:19.75 ID:Uqd2+x+y
>>586
〉答え知ってるのは自分の飯の種として隠すか見下すために言わないか
〉実績のある作者が本でも書いてくれりゃ

飯の種とか見下すとか、 なんかまるで教えてくれないのが悪い、みたいな前提の話になってないか?
別に学校の先生でも我が子育てる親でもないんだから、労力がいる事を「してくれて当たり前」みたいに考えちゃダメでしょ。
根本的な話として。技術を得たいのは自分自身であって、何が自分に足りないかを知ってるのも自分なんだから、
わからなければ、他力本願じゃなくて、経験して理解するのが早道。
593名前は開発中のものです。:2012/07/16(月) 09:45:12.78 ID:9sam7l2U
お説ご尤もだが、飯の種の方はともかく、見下す方は擁護の必要はないと思われる。
「なに? お前、こんな事もわかんねーの?」と嘲るだけで何も説明しない輩は
技術の習得うんぬん以前に人として非難されるのは至極当然。
594名前は開発中のものです。:2012/07/16(月) 11:04:24.23 ID:eBMHiQ3e
見下してるやつを非難するなんてことに労力使ってるからいつまでも見下される側なんだろうなw
595名前は開発中のものです。:2012/07/16(月) 13:06:33.41 ID:qKizLWRj
お前が典型的な例だもんな
596名前は開発中のものです。:2012/07/16(月) 20:07:14.29 ID:RbiinpUt
>>592
禿げ上がるほど同意
悩んで禿げてこそ一流だ
597名前は開発中のものです。:2012/07/16(月) 20:23:14.89 ID:hSpDc6+M
お前等の下らない言い合いのためにリソース食い散らかすな
598名前は開発中のものです。:2012/07/16(月) 20:29:58.87 ID:L/A42VBY
職業PGだけど、ゲームでこう使える!みたいな発想がどうも苦手でなあ……
599名前は開発中のものです。:2012/07/17(火) 06:47:39.67 ID:qhDrAxRl
俺はSQLiteでセーブする派

RPG作るとテーブルデータからクラス(or構造体)起こす処理が必要なのは明白
テーブルデータの調整を楽にするためにSQLiteを選んだ
だがゲームは完成していない

>>550
使ってるぜIrrlicht。公式バイナリで日本語表示できるようになると勧めやすいんだけどな

>>579
良さそうだなこれ

>>591
あれすごいけど「いまの家庭用ゲーム機についていくには」みたいな視点じゃないかな
Cで開発してきた人をC++に移行させるための啓蒙書みたいな感じがしたよ
個人制作だとちょっと話が大きすぎるような気がします
600名前は開発中のものです。:2012/07/17(火) 07:04:40.45 ID:0qIEGrOp
>>599
配布する時はSQLiteも含めるの?
601名前は開発中のものです。:2012/07/17(火) 07:40:40.17 ID:qhDrAxRl
うん。いまはスタティックリンクにしてる
完成してないから配布については考えてない
配布するとしてもフリーだから暗号化とかはしない
602名前は開発中のものです。:2012/07/17(火) 08:34:48.53 ID:ANZSdsn3
boostのserializationはfriendクラスにしないといけないからなぁ。
何らかのバグが発生したときトレースしきれない自信がある
603名前は開発中のものです。:2012/07/17(火) 11:17:12.91 ID:OTajX6lo
とりあえずboostっていうのを入れればいいんだな?
604名前は開発中のものです。:2012/07/17(火) 11:49:41.08 ID:wWSNiTpy
デカいライブラリは導入が異常に面倒くさい
605名前は開発中のものです。:2012/07/17(火) 12:43:20.68 ID:Zgg/U2ne
Boost proでインストーラ落としてこいよ
606名前は開発中のものです。:2012/07/17(火) 14:35:26.75 ID:nfucLn83
>>599
>セガ本

そういう感じ方もあるのか。

個人的には、家庭用云々はあんまり関係ない気がしたなあ。
ある程度C/C++の経験があるって人に向けた、ゲーム開発への生かし方って感じで読んでた。

「ゲームプログラマのためのC++」っていうのも、そんな感じらしいと聞いたけど
こっちは積んじゃってるので他の人に任せる。
607名前は開発中のものです。:2012/07/17(火) 19:02:15.02 ID:MceBY65n
セガ本一冊まるまる読んだけど
分かったような気になっただけで見返しては納得する俺
608名前は開発中のものです。:2012/07/17(火) 22:27:48.21 ID:sCGB26ok
セガ本は読むほど味が出てくるいい本
ただ厚過ぎて持って読んでると腕が折れそうになるのが名
609名前は開発中のものです。:2012/07/17(火) 22:35:20.53 ID:I6vSt2jt
推薦図書/必読書のためのスレッド in ゲ製作技術5
ttp://toro.2ch.net/test/read.cgi/gamedev/1261811596/
610名前は開発中のものです。:2012/07/17(火) 23:47:30.58 ID:/VYte7+O
つい先日引っかかったんだけどセガ本のファイル構成にすると
最新版だとコンパイル通らないらしいな
ディレクトリの違う同名ファイルを区別できなくなってる
シーン遷移周りを参考にしたかったんだけどなあ
611名前は開発中のものです。:2012/07/17(火) 23:52:24.67 ID:SZG0xDQ4
解決策は出版社のサイトに載っていなかったか
ほんの少し手間がかかるけれども
612名前は開発中のものです。:2012/07/17(火) 23:52:44.29 ID:nfucLn83
>>608
心じゃなくて腕かよ!

>>610
本文に結構なページ割いてるし、そっち参考にすれば?
613名前は開発中のものです。:2012/07/18(水) 09:31:06.99 ID:bvOByfir
>>611
おお、たしかに書いてある。でもすでに1の方法で解決済み
名前を長くしていいならフォルダに入れる意味が薄いから
Game/GameParentじゃなくてGame_Parentにしているけど
614名前は開発中のものです。:2012/07/18(水) 23:46:04.83 ID:6D5A7IBy
┌────────────────
│DEATHTRUCTORが呼ばれました
└───v────────────
     /⌒\ っ   /\
    /'⌒'ヽ \ っ/\  |
    (●.●) )/   |: | 
     >冊/  ./     |: /
   /⌒   ミミ \   〆
   /   / |::|λ|    |
   |√7ミ   |::|  ト、   |
   |:/    V_ハ   |
  /| i         | ∧|∧
   и .i      N /⌒ ヽ) 
    λヘ、| i .NV  |   | |
      V\W   ( 、 ∪
              || |
              ∪∪


615名前は開発中のものです。:2012/07/19(木) 19:01:46.93 ID:XwbaxFO8
はぁ大した量表示してないのにすごいカクカクする
616名前は開発中のものです。:2012/07/19(木) 19:08:43.88 ID:tYV2VgeL
>>606
>「ゲームプログラマのためのC++」
コストとかパフォーマンスについての話が多いんだけど
なんつーか、延々とわかり切ってる理想論をグダグダ並べたててるだけな感じだった
あと個人的な見解だけどSTLとboostとゴリ押ししてるし翻訳本だし、原本は少し古めの文献なんじゃないかな
617名前は開発中のものです。:2012/07/19(木) 19:17:35.14 ID:u2gc6jJx
すれ違いをgdgd書いてるお前よりは役に立ってるだろうよ
618名前は開発中のものです。:2012/07/19(木) 19:18:11.81 ID:tYV2VgeL
>>616追記
ちなみにゲームジャンルごとのサンプルプログラムみたいなものは一切ナシ(悲しかった)
「ゲームプログラマのため」という文言は「ゲームを作るプログラマのため」という意味ではなく
「限られたリソースの中で頑張るゲームプログラマのため」と受け取った方が良い
それくらいひたすらにパフォーマンスに拘っててしつこい。
デバッグ関連の有用性を説く章はそれなりにありがたみがある
619名前は開発中のものです。:2012/07/19(木) 19:24:03.30 ID:UnPTkSsr
「C/C++ゲーム製作総合スレッド Part1」で
「ゲームプログラマのためのC++」 っていう本についての話題がスレ違いなら
どこがどうスレ違いなのか是非とも説明して貰いたいね
620名前は開発中のものです。:2012/07/19(木) 19:51:57.14 ID:u2gc6jJx
c/c++に付いて話すスレで
本の評価してるのがスレ違いだっていってんだよ
621名前は開発中のものです。:2012/07/19(木) 19:53:13.48 ID:N0B7FXkX
自治厨うぜえ
622名前は開発中のものです。:2012/07/19(木) 20:21:32.85 ID:IL2LAukx
>>618
なんか最近の人っぽい考え方だな
あまり物考えないと言うか。
いや、その本が良いかどうかはさておき
623名前は開発中のものです。:2012/07/19(木) 20:29:01.45 ID:I6a19EOK
スレの使い分けも出来ないようだし
624名前は開発中のものです。:2012/07/20(金) 01:16:30.34 ID:vgNQuNcc
推薦図書スレも糞だろ
自然発生的に本の具体的な内容を書いてるから
スレチだといわれててもレスを読んで参考になった
オワリ
625名前は開発中のものです。:2012/07/20(金) 06:20:49.20 ID:eFSITxTF
c++11使ってみたいけど古いライブラリに依存しまくってるからたぶんコンパイル失敗しまくる
なんか憂鬱

626名前は開発中のものです。:2012/07/20(金) 21:15:06.81 ID:MTDARsSs
よくわかんないけどvc++2010ってc++11は対応してないの?
627名前は開発中のものです。:2012/07/20(金) 21:55:58.47 ID:mS1Bozmc
しらねぇ、ムーブコンストラクタってなんだよw
628名前は開発中のものです。:2012/07/21(土) 08:59:25.19 ID:bWQ7BK3y
>>625
失敗しまくってから元の環境に戻せば良いんじゃね?
629名前は開発中のものです。:2012/07/21(土) 09:06:04.06 ID:dOppzJZt
新しいアプリ試したいときは仮想マシンで試すと、失敗しても安心だね
Eclipse CDTとかそのうち試したい
630名前は開発中のものです。:2012/07/21(土) 14:50:49.62 ID:PQeEkzhT
>>629
そのうちと言わず今からでもどうぞ
631名前は開発中のものです。:2012/07/21(土) 15:36:11.72 ID:buYHeeqC
632名前は開発中のものです。:2012/07/21(土) 17:05:51.12 ID:GRTG5N73
雑談スレ向けの内容だが
これからの季節には効果がありそうだな
そのサイト
633名前は開発中のものです。:2012/07/24(火) 18:08:49.80 ID:0CBoN4Z+
膨大な量のキャラデータが必要になる場合、データベース部分ってお前らどうしてる?
本格RPG作ろうと思ったら敵キャラデータをコンストラクタに直打ちなんてダメだよな・・・
634名前は開発中のものです。:2012/07/24(火) 18:13:17.75 ID:N2lYolDF
エクセルに1つずつ打ち込んでる
635名前は開発中のものです。:2012/07/24(火) 18:19:26.90 ID:0CBoN4Z+
>>634
CSV?暗号化は一回専用のアプリ通してクラスにあったバイナリ化すればいいのかな
636名前は開発中のものです。:2012/07/24(火) 18:24:00.47 ID:N2lYolDF
暗号化は面倒だからしてないなー
637名前は開発中のものです。:2012/07/24(火) 18:48:58.02 ID:vx/T3CYh
テキストで独自のデータ形式作って、バイナリー変換してる
はとんどスクリプト言語のノリだけどな
暗号化はしてないけど、色々な機能を組み込んでて、重宝してる
638名前は開発中のものです。:2012/07/24(火) 18:51:29.91 ID:wK7ydSzT
csvだな。excelで編集できることもあって
製作過程でのパラメータ追加やバランス調整が圧倒的に楽。
特にサポートしないけど、改造したけりゃ改造して良いよって感じ。
バイナリデータ化したこともあったが酷く面倒。
639名前は開発中のものです。:2012/07/24(火) 20:26:17.93 ID:zHnP6mwO
バイナリー化する前はこんな感じだな、俺は。

MapUnit{
ドット絵ファイル(file)={"MapUnit.png"}
カラーキー(dword:16)={ FF008080 }
ドット絵サイズ(word:10)={32,32}
}
MapChip{
ドット絵ファイル(file)={"マップチップ.png"}
ドット絵サイズ(word:10)={16,16}
}
MapObject{
ドット絵ファイル(file)={"マップオブジェクト.png"}
カラーキー(dword:16)={ FF004B4B }
ドット絵サイズ(word:10)={16,32}
}
640名前は開発中のものです。:2012/07/24(火) 20:49:06.63 ID:7BTXeCLC
>>633
いいんじゃない?ツールでもない限り作業量ほとんど変わらんわ
641名前は開発中のものです。:2012/07/24(火) 21:26:10.01 ID:zHnP6mwO
外部ファイルにまとめる事で作業量が減るのなら、外部ファイル化するべきかと。
外部ファイル化にはいくつかのメリットもある。外部ファイルに共通の情報をまとめる事で、
似たようなソースコードを量産する手間を減らせる。あと、多人数で作業する場合に、
プログラマ以外の複数の人間に作業を分割する事が出来るようになる。
642名前は開発中のものです。:2012/07/24(火) 21:49:06.36 ID:mALEYpZN
本格RPGはプログラムもリソースも大規模になる
先にごくごく小規模の(ファミコンドラクエよりもずっとずっっと小規模の)
RPGを作って、コツを身に着けておくのもいいんじゃないかな。急がば回れ
643名前は開発中のものです。:2012/07/24(火) 22:48:29.65 ID:0ClKVVst
csv以外なら
xmlとかjsonとかYAMLとかどうだろ
でもxml以外は編集ツールが無くてほぼ手打ちになるな

後は(もう言ってるみたいだけど)スクリプト内に書くとか
sqliteとか
644名前は開発中のものです。:2012/07/24(火) 22:48:40.60 ID:f3OVFnCv
表計算→TSV→そのまま読む or DB化 かなぁ
ごく簡単な算出マクロを組むことはあるけどだいたい手打ちで
一連の流れを作って力尽きてゴールインするのがいつものパターン

C++ハードコーディングだと調整するときイヤにならんかい?



645名前は開発中のものです。:2012/07/24(火) 22:51:27.51 ID:0ClKVVst
svnとかでバージョン管理するならマージできるテキストファイルの方が良いよな
バイナリ化する場合も、テキストファイルの方だけ管理して
生成されたバイナリファイルは無視って事ができる

>>644
コンパイル遅いし共同作業には使えないよね
646名前は開発中のものです。:2012/07/24(火) 22:53:25.94 ID:0CBoN4Z+
みんなどうもありがとう。色々試してみるよ
647名前は開発中のものです。:2012/07/24(火) 22:54:16.17 ID:b4Or3K27
データマスクしてSQLiteかな俺
648名前は開発中のものです。:2012/07/24(火) 22:55:50.53 ID:b4Or3K27
データマスクしてSQLiteかな俺
649名前は開発中のものです。:2012/07/24(火) 22:58:27.20 ID:b4Or3K27
エラーだと思ったら連投になってたスマン
650名前は開発中のものです。:2012/07/24(火) 23:00:02.69 ID:HyxxDia4
Protocol Buffer とか、Message Pack とかシリアライズ用のライブラリはさがせばいろいろあるよ
651名前は開発中のものです。:2012/07/25(水) 16:00:54.77 ID:XJuMBerE
ライブラリでちっとも楽にならないC/C++のシリアライズ
ネイティブだとjavaみたいにはいかないのかー?
652名前は開発中のものです。:2012/07/25(水) 16:52:57.39 ID:pWs4T1oJ
よっぽど性能求められるところ以外はスクリプト言語のせて処理させるのが楽やね
653名前は開発中のものです。:2012/07/25(水) 21:43:16.99 ID:1j1hbyt8
>>651
シリアライザに限らないけど、boost知らないままそんな事言ってるとかありえない
http://www.kmonos.net/alang/boost/classes/serialization.html

ましてついたレスが突っ込みじゃないとか驚き
654名前は開発中のものです。:2012/07/25(水) 23:28:52.92 ID:AaFQ8CbB
ちょっと変わった事をやろうとすると途端に面倒くさくなる印象があるな
655名前は開発中のものです。:2012/07/26(木) 00:51:35.16 ID:Rprrq5hW
javaを比較にだされると、メンバをいちいち指定する必要がある時点でどうしようもないよね
656名前は開発中のものです。:2012/07/26(木) 07:29:08.55 ID:6qNak+K/
他言語、他プラットフォーム向けにソースやデータ、データ構造を転用する可能性を考えたらboostでシリアライズすることをしつこく勧めるなんてありえない
657名前は開発中のものです。:2012/07/26(木) 07:54:15.01 ID:wFOEKvxc
ゲーム製作と関係あんの?
658名前は開発中のものです。:2012/07/26(木) 08:23:43.29 ID:6qNak+K/
>>657
どのレスが関係ないと思ったのかくらい書けよ
659名前は開発中のものです。:2012/07/26(木) 08:25:12.35 ID:cB+3C+zX
こういうのやり始めたい場合とかって、まずCから学ぶのがいいの?それともC++?
教えてエロい人
660名前は開発中のものです。:2012/07/26(木) 08:45:23.63 ID:y48rLJxz
使いたい方の言語を好きに選べばいいんじゃないの。
一般的にはBetterCとしてのC++が多いと思うよ。
661名前は開発中のものです。:2012/07/26(木) 09:19:15.00 ID:6qNak+K/
>>659
c89から始めるとc++使うようになってから、c++に合わないソースを書く癖がつきやすい(ループカウンタを関数先頭に書くとか)
c99はvc++で使えないからWindows向けではじめたい人には微妙 。
純粋なcから始めるってのは選択肢から外れると思う。
662名前は開発中のものです。:2012/07/26(木) 09:23:29.73 ID:ITShcysm
モダンな言語もつまみ食いするとなおよしですな

>>653
boostは入れててもビルド必須のものは無視ってヤツもいる。俺とか
663名前は開発中のものです。:2012/07/26(木) 09:33:39.75 ID:sk/8kE/T
boostは正規表現のために入れたのが最初だったなあ
664名前は開発中のものです。:2012/07/26(木) 09:39:44.57 ID:r2vIh4Sz
boostのシリアライズは怖い。friendにしなきゃならんし。
665名前は開発中のものです。:2012/07/26(木) 16:37:20.05 ID:p5mTHbux
>>656
どこに転用する前提が出てたの?
妄想?
666名前は開発中のものです。:2012/07/26(木) 18:26:11.86 ID:qCTIlzXm
>>665
プログラマとして当然の想定だろ。
こんなものも毎回作り直す気か?
コンパイラのバージョンが変わったりboostのバージョン変えたりするだけで文法エラーが起きるboostへの依存度を落とすのは悪いことじゃないぞ。
667名前は開発中のものです。:2012/07/26(木) 18:56:46.54 ID:p5mTHbux
>>666
単に、とある制作中のゲームの内部データをシリアライズして読み書きしたいって話じゃないの?
こんなもの毎回とか言ってるけど、ただの固有用件じゃないの?そこの前提違うの?
汎用ライブラリ書いてるならまた別のはなしだけど
668名前は開発中のものです。:2012/07/26(木) 22:12:09.98 ID:qCTIlzXm
>>667
dbでいえばせいぜいカラムとテーブルが増減するだけなんだから、毎回書かないほうが利口なのは間違いない。
パッチ担当者の好きなツールチェーン以外だとあまりテストされないし、マイナーバージョンの変更どころか、リビジョンの変更程度でも結構な変更が加えられるからboostの信頼性はそれほど高くない。
boost自体の更新はしないようにするにしても、セキュリティの観点からコンパイラと標準ライブラリの更新はするだろう。
それでも動かなくなることは普通にある。
シリアライザのテストコードを自分でプロダクト毎に書くなんてやってられんがな。
669名前は開発中のものです。:2012/07/26(木) 22:21:01.74 ID:d7x44jgn
てかstlのコンテナそのまま扱える以外にいいとこない。遅いし。
670名前は開発中のものです。:2012/07/26(木) 22:21:47.80 ID:WWYpupPA
stlは命名規則をマジでどうにかしてほしい
671名前は開発中のものです。:2012/07/27(金) 00:46:49.18 ID:5pY9f1sl
>>661
じゃあどこから始めるのがいのだろう。
誰かに貢献したい一心なんだけどどこから始めていいかさっぱり
672名前は開発中のものです。:2012/07/27(金) 09:09:07.14 ID:AF7Q1wUL
>>671
ちゃんと読んでないことだけはわかった
673名前は開発中のものです。:2012/07/27(金) 11:21:23.74 ID:W2GYpr+s
いや、アレで分かる初心者が居たら凄いぞ
674名前は開発中のものです。:2012/07/27(金) 11:58:22.73 ID:W2GYpr+s
どの言語が良いか迷ってるなら↓で確認すると良い
ttp://vipprog.net/wiki/

ゲームの作り方が分からないなら↓で段階的に作るようにお題がある
ttp://wiki.game-develop.com/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%BD%E9%BF%B4%BC%D4%B8%FE%A4%B1%2F%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2F%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC

MSのところにも↓のように資料はある
ttp://msdn.microsoft.com/ja-jp/library/default%28classic%29.aspx

重要なのは、何かあったら検索する癖を付けること
675名前は開発中のものです。:2012/07/27(金) 12:56:16.58 ID:4bZVBqKh
>>668
boostに結構な変更がっていうが、根本的な変更なんて稀だろう
メソッド名の変更とかなら分かるが、それなら直すコストは低い
そしてコンパイラと標準ライブラリがポンポン入れ替わる環境に居ることに同情する
676名前は開発中のものです。:2012/07/27(金) 13:40:31.30 ID:dkWqIOt7
デバッグにも金がいるんだよねぇ
677名前は開発中のものです。:2012/07/27(金) 17:25:28.19 ID:/+LHoqU4
>>675
根本的な変更なんかなくたって"構文エラー"になるよ。
正しい使い方のままstatic assertにひっかかるような変更は頻繁にある。公式のbts見てみるといいよ。
あと、モバイル開発なんかやってたらツールチェーンの変更なんて1年に1,2回はあるし、pcだってvisual studioのリリースペースもそこそこなもんだ。
boostのバージョンアップで、従来使ってたvisual studioのバージョンよりも前のvisual studioでしか動かなくなってしまったこともある。(パッチ提供者の環境が古かっため)
で、実際更新してひっかかったら開発止めるのかい?
678名前は開発中のものです。:2012/07/27(金) 18:08:18.79 ID:Ns+2z0Au
いま目の前にある、単発の製品の開発で使う、って話じゃなかったのか
そうでなければその通りだけど、アスペみたいな反応してるように見えるぞ
言い方悪いけど
679名前は開発中のものです。:2012/07/27(金) 18:43:06.95 ID:U38dQLPE
>>677
うるせえええええええええええええええええええええええええええええええええええええ
680名前は開発中のものです。:2012/07/27(金) 18:48:52.34 ID:70FKRJ8d
IT土方ってアスぺみたいなの多いよな
プログラムなんてしたことありませーんっていう文系SEのほうが
よっぽどまともというか実用的なアルゴリズム作れるのはよくある
681名前は開発中のものです。:2012/07/27(金) 20:24:25.81 ID:yF8VGD5q
職業マと趣味マがごちゃまぜのスレは上手くいかない。
682名前は開発中のものです。:2012/07/27(金) 20:32:05.73 ID:xXCz1sz4
>>680
入門スレで質問しても叩く奴いるからな
しかも叩いてるのはちょっと齧った初心者レベルのクズというオチが…
オタ系多いからかな
683名前は開発中のものです。:2012/07/27(金) 21:52:20.63 ID:gGP3qWk4
>>674
C系やPerlだと1990年代から放置されてるページなんかもあるからなぁ
うかつに検索しても迷宮に入るだけってことも・・・俺はずいぶん迷ったからなぁw

・大きな本屋行って専門書のプログラムの棚をざっと眺める
・活発なフォーラムをROMる(英語フォーラムがほとんどだが)
・日本では仕方ないので2chスレにあたる

古い言語についてはこのへんが妥当なんじゃないかな
少なくとも2chなら的外れすぎ・レトロすぎる意見にはそれなりに批判つくしね

>>671
お前が何作りたいかわからんのに何をどう指示しろと言うんだ
684名前は開発中のものです。:2012/07/27(金) 21:56:05.06 ID:1pRv6rD9
>>683
わかるわ、独学で進めてたらハンガリアン記法だのdefineで定数定義だのなかなかの化石地雷を踏まされた
685名前は開発中のものです。:2012/07/27(金) 22:06:45.70 ID:gMpcUuwx
Cでdefineは特に地雷じゃないと思うな
686名前は開発中のものです。:2012/07/27(金) 22:55:40.51 ID:70FKRJ8d
defineは使うなとか、あんなもの実装しなきゃよかったとかカーニハンが言ってるって噂を聞いたことがある
687名前は開発中のものです。:2012/07/28(土) 00:09:11.19 ID:FBtqFvFA
>>678
> いま目の前にある、単発の製品の開発で使う、って話じゃなかったのか
まてまて、そんな話は出てないぞ
688名前は開発中のものです。:2012/07/28(土) 02:03:29.05 ID:Vd+xP+fU
defineが無ければtemplateは生まれなかったわけで
689名前は開発中のものです。:2012/07/28(土) 03:20:20.26 ID:SzCuaDIh
2Dのマップチップのあたり判定ってどうすればいいの?
例えばコの字型のマップチップと_ではあたり判定の数って違うよね
690名前は開発中のものです。:2012/07/28(土) 07:13:51.31 ID:JUIeIzmi
最小単位に区切ってそれを一つとして判定
691名前は開発中のものです。:2012/07/28(土) 07:38:16.29 ID:firuRbZ1
>>689
意味が分からん。
スーパーマリオだとどの部分?
692名前は開発中のものです。:2012/07/28(土) 07:44:15.42 ID:VvsMgWQP
普通はマップチップ単位で当たりか当たりじゃないか設定するんじゃないの
693名前は開発中のものです。:2012/07/28(土) 08:02:17.09 ID:ZmA6zlgd
普通に考えると、コの字って言われると
■■
□■
■■
こんな感じで6枚のチップを使うことが考えられると思うんだけどね。
694名前は開発中のものです。:2012/07/28(土) 09:57:04.52 ID:SzCuaDIh
マップチップじゃなくてオブジェクトでした。
またセル?と言った方が正しいのでしょうか
1つのオブジェクトに複数のあたり判定を設定したいです。

コズミックブレイクというゲームのマップエディタ画面なんですけどこんな感じです。
セル上にオブジェクトを配置してあたり判定はオブジェクトが持っています。

http://image.search.yahoo.co.jp/search?p=%E3%82%B3%E3%82%BA%E3%83%9F%E3%83%83%E3%82%AF%E3%83%96%E3%83%AC%E3%82%A4%E3%82%AF+%E3%83%9E%E3%83%83%E3%83%97%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF&aq=-1&oq=&ei=UTF-8#image_1

セルには地面のテクスチャとあたり判定を持っていますが付近のオブジェクトによってはあたり判定がなくなるんですが、これもどうやるんでしょうか?

トンネル型のオブジェクトを壁に埋め込むと壁のあたり判定が消える感じです。
695名前は開発中のものです。:2012/07/28(土) 10:06:51.66 ID:aiBSrNuG
■■■ ■□■ ■■■
■■■ □□■ □□■
□■□ ■■■ ■■■
696名前は開発中のものです。:2012/07/28(土) 10:08:44.62 ID:F+FEvBdI
>>694
なんで2Dと3Dが関係あると思ったの?
697名前は開発中のものです。:2012/07/28(土) 10:17:41.07 ID:QlvNL+M5
長方形3つの当たり判定領域に分ければいいんじゃないの
698名前は開発中のものです。:2012/07/28(土) 10:22:12.52 ID:6ocLctAe
どういう答えが返ってくるつもりだったんだろ
こんな聞き方しておいてifで分ければいいだけじゃんとか言うとキレるんだろうか
699名前は開発中のものです。:2012/07/28(土) 10:56:31.18 ID:F+FEvBdI
ようやく意味分かったわ
矩形とか円とかじゃなくて変態図形に当たり判定付けたいんだろ
何個か矩形判定重ねて置くしかないんじゃないの
700名前は開発中のものです。:2012/07/28(土) 11:12:25.95 ID:firuRbZ1
四角の組み合わせでほぼ何でもカバーできる。
701名前は開発中のものです。:2012/07/28(土) 12:33:06.04 ID:SzCuaDIh
変態図形と、そうで無いものを同じクラスで管理してるんですけど
あたり判定をあらかじめ複数個宣言しておいて使用フラグをつけるしかないですか?
702名前は開発中のものです。:2012/07/28(土) 12:41:05.03 ID:FUn+qIGM
使用フラグはいらない。
703名前は開発中のものです。:2012/07/28(土) 13:04:32.10 ID:fXwhiuG/
>>701
そうで無いものを基底クラス、変態図形を派生クラス、
あたり判定を仮想関数にするのはどうでしょうか?
704名前は開発中のものです。:2012/07/28(土) 13:05:25.85 ID:FUn+qIGM
>>703
セオリーだよねw
705名前は開発中のものです。:2012/07/28(土) 14:10:47.44 ID:5gEdQ3al
図形を認識して勝手に当たり判定付けてくれる関数作れば完璧や!!不可能はないんや!!
706名前は開発中のものです。:2012/07/28(土) 14:32:43.48 ID:sO0MKliG
そしてパフォーマンスの壁にぶちあたると
707名前は開発中のものです。:2012/07/28(土) 15:33:30.65 ID:FBtqFvFA
>>703
普通形状と変態形状の境界でめりこむんじゃないの
2Dで厳密に判定したいならシェイプ並べて物理エンジンに投げることになると思う

でも凝るべきところはもっとほかにあるんじゃないかしら
708名前は開発中のものです。:2012/07/28(土) 15:34:55.65 ID:FBtqFvFA
>>701へレスすべき内容だった
709名前は開発中のものです。:2012/07/28(土) 22:47:11.20 ID:yWZJShpi
このヘンタイ!
710名前は開発中のものです。:2012/07/29(日) 17:30:57.88 ID:zgdnuvbA
一方通行の壁(壁の中には入れないが外には出れる)って
不可侵領域の壁より難しくないか?
なんでみんなそんなの使うんだ?
711名前は開発中のものです。:2012/07/29(日) 17:35:52.29 ID:rXCk/Mgb
普通グラフでやるから簡単だぞ
712名前は開発中のものです。:2012/07/29(日) 17:49:25.97 ID:aij3DCjJ
俺は一方通行専用のブロックみたいなの作って対応したが別に不都合はなかった。
713名前は開発中のものです。:2012/07/29(日) 19:57:11.38 ID:btrJzhth
なんでみんなそんなの使うんだ? ってどういう意味だ
714名前は開発中のものです。:2012/07/29(日) 20:05:14.96 ID:DsKPwgWN
ゲームに必要なら作るだけだよな。

それはさておき、例えば2Dマリオ系のゲームだとして、
真下からのジャンプで飛び乗れるブロック(上方向の一方通行)っていうのは、作っておくと便利ではあるな。
715名前は開発中のものです。:2012/07/30(月) 01:40:33.84 ID:bZ/BDkhk
飛び乗れる判定 のが汎用性あるかと
716名前は開発中のものです。:2012/07/30(月) 01:44:37.03 ID:U1GqaWjU
グラフで接触判定って何?
無知ですまん
717名前は開発中のものです。:2012/07/30(月) 13:57:17.91 ID:7z6dKoz0
接触判定じゃなく一方通行領域を片方向グラフで表現するって意味だろ
718名前は開発中のものです。:2012/07/30(月) 16:29:55.50 ID:Ky09EnO9
俺もそのグラフとやらがさっぱり分からん、初耳だな

どんな実装方法なの?簡単で良いから説明して欲しい
719名前は開発中のものです。:2012/07/30(月) 16:37:12.07 ID:bZ/BDkhk
俺も初耳だな
720名前は開発中のものです。:2012/07/30(月) 16:41:54.16 ID:zdkty5n/
721名前は開発中のものです。:2012/07/30(月) 17:20:53.09 ID:WAuPSmek
長方形の下の辺に触れた時上の辺に有向グラフが張ってあったらすり抜けて
張ってなかったら当たるだけで下に落ちるってこと?
722名前は開発中のものです。:2012/07/30(月) 17:49:59.86 ID:bZ/BDkhk
これをグラフ理論ていうのか
でも、辺り判定に使おうとは思わないな
フィールドマップとかで目的地をキー操作でマーカー動かすとかなら使うけど
723名前は開発中のものです。:2012/07/30(月) 22:37:13.36 ID:jDxZc52y
・〆切あと10日
・音ゲー制作
・C++全然理解できない、ポインタ?STL?わかんね

これはオワタ
724名前は開発中のものです。:2012/07/30(月) 22:49:19.21 ID:ye9/vUYY
C++わからないのになぜ音ゲー作ろうなんて事になったのか。
725名前は開発中のものです。:2012/07/30(月) 22:51:48.67 ID:QDgT0m9I
STLはイタレータとかやらなければ簡単
726名前は開発中のものです。:2012/07/30(月) 22:57:13.00 ID:6zPVpGWN
厳しそうだな
どの環境でどのライブラリ使ってるか、によっては変わるのかもしれんけど
727名前は開発中のものです。:2012/07/30(月) 23:14:28.57 ID:d/5CZ7EL
音ゲーでもC++/CLIでワンキーゲームなら実製作期間は短い。
728名前は開発中のものです。:2012/07/31(火) 01:25:00.31 ID:wRhBim9X
音ゲーだとむしろ素材が大変そう
729名前は開発中のものです。:2012/07/31(火) 02:07:02.96 ID:Ir1Mba9t
mbedに関しての質問です。
LEDを一気に選択する方法を教えてください。
つまりこういうことです。↓
myled[0]=0;
myled[1]=0;
myled[2]=0;
myled[3]=0;
wait(0.1);
っていうプログラムを
myled(0〜4)=0;
wait(0.1);
ってかんじにまとめることはできませんか?
730名前は開発中のものです。:2012/07/31(火) 04:23:43.65 ID:F0wWWn5k
myled[0]=myled[1]=myled[2]=myled[3]=myled[4]=0;

あんまりまとまってないが
731名前は開発中のものです。:2012/07/31(火) 06:17:09.02 ID:HhNZRqc6
>>725
イタレータをゼロから作るのは大変だが、
使うだけなら簡単だろw
732名前は開発中のものです。:2012/07/31(火) 07:43:58.46 ID:kApV6XAH
>>727
そんなもの使うならc++だけにするかc#+P/Invokeのほうがいい。
音ゲーは同期のためサウンドモジュールを低レベルから実装する必要が出てくることがあるので、そう(期間的に)なめてかかれるものでもない。
733名前は開発中のものです。:2012/07/31(火) 08:47:14.26 ID:OusJy6s+
mbedがなにか知らんけどループにしたらいいだけじゃないの?
734名前は開発中のものです。:2012/07/31(火) 09:39:04.74 ID:mfVyk6Hr
マイコンキットだと思うけど、板として合ってるかどうかは疑問
735名前は開発中のものです。:2012/07/31(火) 10:06:24.85 ID:RMRMG8Oe
>>732
どーせ、課題かなんかでしょ。
例えば、動画サイトに上がってたセサミストリートのハードコアみたいなのを
再現するだけでも音ゲーの範疇にはなる。ひたすら連打するだけになると思うが。
736名前は開発中のものです。:2012/07/31(火) 10:35:56.69 ID:mfVyk6Hr
そういえば学校の組み込みプログラミングの課題でマイコンキットを渡されたときに
課題無視してマスターマインドっぽいゲームを作ったことはあったな。あれは楽しかった。
737名前は開発中のものです。:2012/07/31(火) 14:54:08.90 ID:SV5ZN2ZT
課題無視しちゃう自由奔放な俺パネェ
738名前は開発中のものです。:2012/07/31(火) 14:58:25.62 ID:mfVyk6Hr
>>737
確か7セグLEDに数字を表示しなさいって課題だったから、条件は満たしてたよ! 大丈夫!
739名前は開発中のものです。:2012/07/31(火) 15:20:21.34 ID:SV5ZN2ZT
俺パネェ
740名前は開発中のものです。:2012/07/31(火) 15:28:22.16 ID:CoZeHHrD
ハードに強いやつは尊敬するw
741名前は開発中のものです。:2012/07/31(火) 16:58:56.56 ID:VgHRSHRw
やる気の出る動きってなんでもないからないか
プラシーボでもいい
742名前は開発中のものです。:2012/07/31(火) 17:21:22.21 ID:kRC1H/5J
実行中にマイコンに書き込もうとして壊したことなんて数知れず
743名前は開発中のものです。:2012/07/31(火) 17:59:58.00 ID:RMRMG8Oe
>>741
ゲーム・パソコンから離れる。特に外に出る。これだね。
744名前は開発中のものです。:2012/07/31(火) 21:29:38.65 ID:n+3khGAI
効くね
745名前は開発中のものです。:2012/08/01(水) 00:53:19.55 ID:eLZD3DWi
>>743
最初だるいけどなんか良いよね。軽くなるというか何というか・・・w
746名前は開発中のものです。:2012/08/01(水) 06:26:17.45 ID:5ep+Ia52
一発抜いて聖人モード中にゲーム作るとすごく効率いい。
747名前は開発中のものです。:2012/08/01(水) 20:59:16.15 ID:xnNYnHj7
場合によるんじゃね
抜いたあとに思考力、判断力が落ちて、あとは寝るだけモードになって、
効率どころじゃなくなることもあったりなかったり
748名前は開発中のものです。:2012/08/01(水) 21:20:15.03 ID:4djRnBuY
つまり外で抜くと良いのか。
749名前は開発中のものです。:2012/08/01(水) 23:44:49.58 ID:r0rA1WfF
ガンシューティングゲームのマップ作成に悩んでるんですけど質問させてください

外部から貰ったオブジェクトを外部から貰ったマップデータに沿ってぽんぽん置いてく感じに作りたいのですが、
このオブジェクトを
「机や椅子や植木鉢だけでなく、部屋や通路といったマップ上のすべての要素」
というようにしたいんです。(楽そうだし)

また、敵AIの関係上、部屋や通路といったものは単純な障害オブジェクトとは別に切り分けたいんです。
多分基底クラスを同じにして継承して分ければなんとかなると思うのですが
やる気がおきないです。どうしたらいいですか?
750名前は開発中のものです。:2012/08/02(木) 00:56:31.63 ID:d01HvU1E
お前の考えたゲームを作れるのがお前だけ
751名前は開発中のものです。:2012/08/02(木) 01:56:51.72 ID:xvIY7MB3
やる気を起こせばいいです
752名前は開発中のものです。:2012/08/02(木) 08:42:17.15 ID:sXtVHqkw
>>749
がんばれ
753名前は開発中のものです。:2012/08/02(木) 15:49:46.44 ID:f+p2Vt7d
ガンシューとか入力どうするの
パッドじゃいまいちでしょ
754名前は開発中のものです。:2012/08/02(木) 20:54:00.72 ID:cZkte04R
マウスじゃね?
755名前は開発中のものです。:2012/08/02(木) 20:59:54.79 ID:Mimw+MoU
タッチパネルPC向けとかそういう
756名前は開発中のものです。:2012/08/03(金) 22:58:29.61 ID:jw4xM6OH
クラス定義の中でクラスメンバのコンストラクタの引き数を指定できますか?

class Hoge{
public:
 Hage hage("うんこ");
}
757名前は開発中のものです。:2012/08/03(金) 23:04:26.50 ID:9328T93u
Hage hage に悪意を感じた
758名前は開発中のものです。:2012/08/03(金) 23:54:29.28 ID:jw4xM6OH
できるの?
759名前は開発中のものです。:2012/08/04(土) 01:37:07.02 ID:fOnVWjjU
できねえ
760名前は開発中のものです。:2012/08/04(土) 06:21:30.79 ID:L1HWd/cz
>>756
定義内では無理。
定義はあくまでも定義だけ。
実際メンバー変数が初期化されるのは
クラスのコンストラクタ内だから、
そこで引数指定すべし。

class Hoge
{
public:
 Hage hage;
 Hoge();
}

Hoge::Hoge()
 : hage("うんこ")
{
}
761名前は開発中のものです。:2012/08/04(土) 12:49:32.31 ID:X/2HAD39
.Netってどうよ?C++とAPIでプログラム組むのはなれてるけれども、
C++と.Netで組むのは初めてなんよ。何となく、ツールとか作るのが
楽になりそうだな〜とか、正式なC++と比べると別物なのかな??
とか色々思ってるけど。
762名前は開発中のものです。:2012/08/04(土) 14:16:21.59 ID:pRUKYZCn
>>761
c++/cliという意味ならやめておけ。
グチャグチャだし、使える.netのバージョンも低い。

ツールだけpure .NETにする分にはあまり問題はない。
データ変換にGUIにだいたいこなせる。
ゲーム本体と同じレンダラでプレビューできるツールがほしいならはP/Invokeとかでなんとかなる。

コンパイル時間とlinqにこだわりが無いならにC++11でもC#に近い感覚で書けるよ。
763名前は開発中のものです。:2012/08/04(土) 16:28:21.19 ID:7bUieZsP
>>761
素直にC#使うべし。
764名前は開発中のものです。:2012/08/04(土) 16:40:27.49 ID:mtOx7kF7
class Hoge{
public:
 Hoge() : hage("うんこ") { }
 Hage hage;
}
765名前は開発中のものです。:2012/08/04(土) 17:33:49.33 ID:fOnVWjjU
連チャンで質問しちゃって悪いんだけど
1つのマップオブジェクトクラスが複数の当たり判定を持つ予定なんだけど、
マップオブジェクトの情報はすべて外部ファイルから読み込むからどんな形の判定が来るかわからない。

そういった場合、どんな形で持つのが適切ですか?
自分が思いついたのは、
そのマップオブジェクトの当たり判定の情報が読み込まれたら、適切な形状の判定クラスのコピーコンストラクタで、
マップオブジェクトクラスが保持している当たり判定のポインタ配列にぽんぽん追加してく
というのがメモリ浪費しなさそうだし良いと思うんですけど
もっといい方法がありますか?
766名前は開発中のものです。:2012/08/04(土) 17:34:27.93 ID:fOnVWjjU
敬語がばらばら死にたいくない
767名前は開発中のものです。:2012/08/04(土) 18:53:19.70 ID:X/2HAD39
>>762
4.0と4.5ってそんなに違うの??あと、グチャグチャって何がそんなに違うの?
768名前は開発中のものです。:2012/08/04(土) 20:54:29.20 ID:O8qMQ3Jy
>>765
ごめん、ちょっと意味がわからない。
マップオブジェクトがフィールドとキャラクターの当たり判定持つの?
769名前は開発中のものです。:2012/08/04(土) 21:16:08.08 ID:X/2HAD39
>>762
併用してみた。strcpy系を使えない点がちょっと面倒かな?

#include <TCHAR.h>
#include <stdio.h>

using namespace System;

int main(array<System::String ^> ^args)
{
int nLength = args->Length;
for(int i = 0;i<nLength;i++)
{
int nLength2 = args[i]->Length;
System::String ^ argc = args[i];
_TCHAR sz[80];
for(int i2 = 0 ;i2 < nLength2; i2 ++)
{
sz[i2] = argc[i2];
}
sz[nLength2] = 0;
_putts(sz);
Console::WriteLine(argc);
}
return 0;
}
770名前は開発中のものです。:2012/08/04(土) 21:17:43.37 ID:/rSKW2FM
1つのマップオブジェクトには、1つの判定オブジェクトだけ持たせる。
ただし、マップオブジェクトがツリー構造になってて、
親マップオブジェクトが、実質的に複数の当たり判定オブジェクトを持つことになる。

とかどうだろう。

子マップオブジェクトは、親マップオブジェクトからの相対座標を
持つようにすれば、親に追随して移動するし。

まぁ、>>765と大した違いはないけど。
771名前は開発中のものです。:2012/08/04(土) 21:26:52.03 ID:fOnVWjjU
>>768
マップオブジェクトクラスはマップオブジェクトが持つ当たり判定のみ持ちます。
"複雑な形状の当たり判定は複数に分けたほうが楽"なのでマップオブジェクトクラスは複数の当たり判定を持つ。

例えば>>765の場合ですと、
外部ファイルが「基準座標から(x1,y1)の座標に縦3横5の四角形と、(x2,y2)の座標に半径2の円の当たり判定を持つオブジェクト」
と指定してきた場合、マップオブジェクトクラスは四角形の当たり判定クラスと円の当たり判定クラスをそれぞれインスタンス化して保持する。
という感じです。

勿論四角形が2個や3個、種類が3種類以上になる場合も想定してマップオブジェクトクラスを作りたいです。

>>765の"思いついたのは〜"のくだりは
すべての当たり判定クラスは基底クラスがあるので
基底クラスのポインタに派生クラスをインスタンス化したものを追加してったら無駄が無さそうと思っただけです。
イテレータ?のようなものを使うのでよくわからないですが
772名前は開発中のものです。:2012/08/04(土) 21:30:20.49 ID:fOnVWjjU
>>770
マップオブジェクトがマップオブジェクトを持つ感じですか
そっちのほうが楽かなーー
773名前は開発中のものです。:2012/08/04(土) 21:33:43.88 ID:JxPJnz4U
>>769
失礼、新しいvsだと.netのサポートバージョンあがったんだね
以前fbx sdkから.netアプリへのブリッジ作ろうと思ったけど
演算子や非マネージコードとの書き分け、.netの参照と参照とポインタと...と考えたところで
c++のみの独自形式へのコンバータをc++で描いて、c#側にインポータを実装するほうがはるかに楽だと思ってc++/cliはやめた。

そこそこ名前の知れてる日本人のc++/cliユーザーってひげねことえぴすてーめーくらいだし
トラブルあっても情報すくないよ
c++/cliからあるモジュールを起動したら死ぬ。c#からはうまくいく。なんてこともxnaかなんかで発生してたとはず。
あと静的オブジェクトの初期化に関して、ひげねこが最近はまってたな
774名前は開発中のものです。:2012/08/04(土) 23:42:38.95 ID:X/2HAD39
>>773
なるほどね。情報が異常なまでに少ないんだ。
インテリセンスも切られてるしな。MSの対応もC++だけ遅いみたいだし。
ただ、情報の多いvb.netのコードが参考に出来るから便利なんだよね〜。
ガベコレ使えるし、Excelで図表とか描けるし、XML使えるし。
んー、必要なときだけ流用するかな?ライブラリとして見たら便利そうだし。
775名前は開発中のものです。:2012/08/06(月) 15:23:45.90 ID:Sdt9Z3H3
質問です。struct, class のプロタイプ宣言ってできますか?
struct Hoge;

class Nanika{
Hoge hoge;
};

struct Hoge{
int a, b, c;
};

的な流れで書きたいです
776名前は開発中のものです。:2012/08/06(月) 16:05:31.43 ID:Ms7SVxEW
それくらい自分で試してみろよ……
777名前は開発中のものです。:2012/08/06(月) 22:43:47.72 ID:eS4QkXvl
struct Hoge{
int a, b, c;
}hoge[3]={{0,1,2},{3,4,5},{6,7,8}};みたいな事をしたいって事?
778名前は開発中のものです。:2012/08/06(月) 22:49:07.14 ID:eS4QkXvl
ぐぐってみた。
struct Hoge{
int a, b, c;
};

class Nanika{
Hoge hoge;
};
C++の場合はこの順番でないと駄目じゃね?
779名前は開発中のものです。:2012/08/07(火) 04:24:11.33 ID:sbTUrCC/
>>775
前方宣言はあるけど、ポインタじゃないといけなかったはず

struct Hoge;

class Nanika{
Hoge* hoge;
};

struct Hoge{
int a, b, c;
};

これならいける
あとはどっかでインスタンスつくればおk
780名前は開発中のものです。:2012/08/07(火) 08:11:13.98 ID:G7Nsn76Q
自分のクラスに別のクラスを持たせるには、
その別クラスの情報(サイズ)を知っておかないと、自分自身のサイズを確定できないからね。

自分より先に定義されていれば何も問題なし、
定義されてない場合はNGだけど、ポインタとしてならサイズは固定だから自身のサイズを確定できる……と。
781名前は開発中のものです。:2012/08/07(火) 10:43:23.73 ID:DFVdQVTb
結局のところは、>>780 の制約からは逃れられないから、
可能ならば >>778 の様にHogeの定義を先にした方が楽だと思うし、
>>779の様にポインタで持たせるのもまた定石だと思うけど、

Nanikaから見てHogeは未知の型だから、ここはtemplateを使って

template<class Hoge> class Nanika{ Hoge hoge;};
struct Hoge{ int a,b,c;};
// インスタンス
Nanika<Hoge> a;

とすれば、Nanikaの定義 → Hogeの定義という流れがつくれるんじゃないかな。
782名前は開発中のものです。:2012/08/07(火) 13:03:14.90 ID:KxsxnLUD

こういう例を英語で「over engineering」と言います。
テクニックに頼り過ぎると問題の本質を見失いがちです。
783名前は開発中のものです。:2012/08/07(火) 17:43:56.04 ID:h5/mkG/J
循環参照てポインタなら発生しないの?
784名前は開発中のものです。:2012/08/08(水) 18:51:08.99 ID:4RDI8WKX
動いて完成すりゃあいいんだよ
785名前は開発中のものです。:2012/08/08(水) 18:55:18.01 ID:fpPOrVv0
>>783
ポインタだとメンバーに持たせる時宣言してるだけでいい
class huge;
class hoge

  class huge a;//includeが必要なのでエラー
  class huge *b;//必要ない
};

なので結果的に循環参照することもない
786名前は開発中のものです。:2012/08/09(木) 07:15:36.52 ID:cQGiG8tL
質問の内容なら「定義を後に書くな」で終わりな気もするが

持たせたいクラスが数種類あって分岐するなら>>781かな
クラス内で使うものを外で生成する>>779はできれば避けたい感じ
そうするしかない時はあると思うが、この質問程度なら必要はないかと

787名前は開発中のものです。:2012/08/10(金) 07:13:00.99 ID:sRCexQGz
ttp://ynupl.com/reddam/archives/146#comment-7
このサイトの

BaseScene* main(){

BaseScene* nextScene;

などはなぜポインタにしているのでしょうか?というかこれはポインタなんでしょうか?
ポインタにするとアドレスだけ渡すので関数の引数へ渡す時処理が軽くなるというやつでしょうか?

また、このことについてよくわかるサイトなどがあれば教えて欲しいです
この行為の一般的な名称でもいいです

おねがいします

788名前は開発中のものです。:2012/08/10(金) 08:28:53.94 ID:gSDf2CE0
>>787
コストとか以前の問題。
一つは、シーン毎にそれぞれのシーンを起動、実行するコードを書かなきゃいけないのを回避するため。
これ以上はここでうだうだ説明するのはなんか違う気がする。あとは自分で調べたほうが良い。
ポインタ使わない書き方に直してみるってのもいいね。

余談だけど、いまから作るならシーン毎にc++のクラスなんか作らずに、scriptに投げたほうがいいと思う。
789名前は開発中のものです。:2012/08/10(金) 08:53:32.69 ID:kfqdvsz7
>>787
ポリモーフィズム
790名前は開発中のものです。:2012/08/10(金) 08:58:40.46 ID:9dc2A+AB
>>789
英語で言っちゃ分からないよw
ようするに多態性ってことね。
791名前は開発中のものです。:2012/08/10(金) 09:13:05.29 ID:KRTgZJ6N
元の、BaseScene::main() が BaseScene自体を返すと、BaseScene の仮想関数を呼び出すときに、サブクラスの仮想関数が呼ばれるのではなくて
BaseScene自体の仮想関数が呼び出されてしまう。値で返すと、元のサブクラスの型情報は失われるから、そりゃそうだよねって話。

少し簡略化して、基底クラス Base とそれを継承した サブクラス Sub が存在して、それぞれに仮想関数invoke() を用意する。
// cl.exe /EHsc /W4 /WX main.cpp
#include <iostream>
// 基底クラス
class Base{ public: virtual void invoke(){ std::cout << "Base::invoke();" << std::endl; };};
// サブクラス
class Sub : public Base{ public: virtual void invoke(){ std::cout << "Sub::invoke();" << std::endl; };};
int main( int, char*[]){
Sub a; Base b = a ; Base* c;
c = static_cast<Base*>(&a);
a.invoke(); // Sub::invoke(); "Sub::invoke() が呼び出される"
b.invoke(); // Base::invoke(); "Base::invoke() が呼び出される"
c->invoke(); // Sub::invoke(); "Sub::invoke() が呼び出される"
return 0;
}
この場合、bは、Sub のインスタンスである a を代入してるけど、b は 依然としてBaseのインスタンスなので、
b.invoke() は、 Base::invoke() を呼び出す。 これをポインタ経由で呼び出すときは c->invoke() で Sub::invoke() が呼ばれる。
792名前は開発中のものです。:2012/08/10(金) 14:55:20.88 ID:cjU48vRV
バーチャルってやるとエラーでるからオーバーライドにした
793名前は開発中のものです。:2012/08/10(金) 15:45:35.25 ID:1z3BYq16
>>792
・・・は?
794名前は開発中のものです。:2012/08/10(金) 16:24:38.45 ID:cjU48vRV
外部のcsvファイルからデータを読み込んでキャラクターのパラメータの初期化をしたいんだけど
どういう拡張子にしたらいい?

拡張子とか関係なしにcsvとして読みこめるかな?
なら適当に.datとかにするんだけど・・・
795名前は開発中のものです。:2012/08/10(金) 17:33:06.03 ID:OgDAnr9s
【初心者歓迎】C/C++室 Ver.79【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1341052801/

基本がまずできてないから、ゲーム以前に基礎を勉強したほうがいいと思う。
796名前は開発中のものです。:2012/08/10(金) 17:42:30.45 ID:iuoU+G7p
>>794
拡張子は何でもかまわない。
.bmpでもおk。
797名前は開発中のものです。:2012/08/10(金) 18:03:34.10 ID:n163ngmW
拡張子なんてなくてもええやないの
798名前は開発中のものです。:2012/08/10(金) 18:17:10.87 ID:aA1ql2AZ
拡張子があったら編集するソフトと関連付けられる利点がある
種類は競合しなければ何でもいいけどね
799名前は開発中のものです。:2012/08/10(金) 18:34:56.55 ID:LyEfpN4D
拡張子はただの判別記号
800名前は開発中のものです。:2012/08/10(金) 19:24:42.16 ID:Mky0nKTI
質問botじゃねーの? という気がしてきたんだが
801名前は開発中のものです。:2012/08/14(火) 18:00:04.84 ID:v87N75Ka
基底クラス→サブクラスのエラーコードlnk2001がデバックできない
仮装関数をがどうのでエラー出るし、他のサブクラスと全く同じ記述してるのにわけわかめ
802名前は開発中のものです。:2012/08/14(火) 20:49:55.76 ID:+ttBWkPm
仮想関数と関数名が重複してるんだろ
別の関数名に変えれば良いんじゃね?
803名前は開発中のものです。:2012/08/15(水) 00:31:08.89 ID:5UyTJR1o
仮想関数ってサブクラスでオーバーロードして定義した関数を基底クラスから呼び出すものだと思ってた
勉強し直そう
804名前は開発中のものです。:2012/08/15(水) 01:11:56.76 ID:5UyTJR1o
オーバーライドでした
805名前は開発中のものです。:2012/08/15(水) 02:36:39.21 ID:JFaF6/IH
>>801
エラーメッセージのヘルプに書いてるだろ
基底クラスのコンストラクタかデストラクタで純粋仮想関数を呼び出すことは出来ない

実体あればそのエラーにはならないが、基底クラスのコンストラクタ呼び出し中は、まだサブクラスの仮想関数の初期化ができてないから君の期待する処理にはならない。常に基底クラスの関数が呼ばれることになる

そういうことをしたい場合は Factory パターンで生成するようにするのが一般的
806名前は開発中のものです。:2012/08/16(木) 21:58:32.39 ID:dLMi6Kjq
立ち絵ってどう表現してる?テクスチャに貼り付ける場合、
画面サイズと比べると明らかに無駄になる領域が多い気がするんだが。
無駄になる領域は無視?それとも、巨大なテクスチャを切り分けて使ってる?
807名前は開発中のものです。:2012/08/16(木) 22:32:55.44 ID:YGqHupj+
立ち絵ごときに無駄な領域なんて気にするな。
BMPファイル使ってるわけでも無いだろうから、どうせ圧縮されるし。
808名前は開発中のものです。:2012/08/16(木) 22:58:48.55 ID:b0ELioIy
画面サイズより小さいサイズにしないかい?
じゃないと、画面内の好きな場所に表示できないし。
(画面サイズと同じ大きさでも、はみ出させれば好きな場所に表示できるけど
はみ出させるのってなんか気持ち悪い)

俺ははみ出させるのが趣味だ!!!っていうなら止めないがw
809名前は開発中のものです。:2012/08/16(木) 23:33:30.45 ID:FX+5Wp/r
>>806
立ち絵の性質上共用テクスチャは詰められないから効果は限定的だけど、
テクスチャをパックするツール使って他のリソースを一緒に詰め込むのはどうか。

それ以上を望むなら、文字列の動的レンダリングみたいに、
動的に作った巨大テクスチャにロードしたテクスチャを貼って詰めて使うとか?そこまでして得られるものは大きくないと思うけど。
810名前は開発中のものです。:2012/08/17(金) 00:21:44.75 ID:abdJm09F
立ち絵のテクスチャ…?
811名前は開発中のものです。:2012/08/17(金) 21:29:06.72 ID:mMkXt00r
マルチスレッドで fopen(), fclose() 使ってるところを
別スレッドにして動かしたりして大丈夫かな?

やりたいこととしては、メインスレッドで Now Loading って出して
別スレッドで fopen() とかで読み出すようにしたいんだ
812名前は開発中のものです。:2012/08/17(金) 21:35:04.17 ID:FUKyzUxv
>>811
意味が分かってれば普通に大丈夫
813名前は開発中のものです。:2012/08/17(金) 21:37:38.10 ID:a+X8V9dI
環境によってスレッドセーフじゃなかったりするんだろうか
814名前は開発中のものです。:2012/08/17(金) 22:00:54.63 ID:NpZCpWd6
スレッドセーフじゃないって、メインスレッド以外で使うなって意味じゃないだろ
815名前は開発中のものです。:2012/08/17(金) 23:11:42.40 ID:a+X8V9dI
あ、読み込み処理自体を並列化するわけじゃないのか。失敬
816名前は開発中のものです。:2012/08/20(月) 10:02:22.49 ID:NpIy5OAh
マルチスレッド上の、エラーコードを返すためのerrnoの取り扱いってどうなってるの?
それとも規格に書いてあるの?それともコンパイラ依存?
817名前は開発中のものです。:2012/08/20(月) 12:51:33.67 ID:mKlyj6/G
>>816
実装依存。posix ではスレッドセーフであることが求められてる。
Visual C++ ではCRTの範囲で、ドキュメントの errno の所には書いてないけど、マルチスレッド版ならスレッドセーフな実装になってる。

この場合、スレッドセーフってのは、スレッドごとに別の値ってことね
818名前は開発中のものです。:2012/08/24(金) 01:56:07.63 ID:YKP6lc7q
VRAMでも断片化って起こるのかな?それともグラボによって変わるのかな?
簡単で小規模なRPGを作ってるんだが、敵画像や立ち絵の管理で迷ってます。
画像を一括で読み込むか?必要になったら読み込んで不要になったら消すか?
必要になったら読み込んで、そのままゲームが終わるまで消さないか?
やっぱり二番目ですかね?
819名前は開発中のものです。:2012/08/24(金) 15:27:43.35 ID:TzEX4/VL
>>818
グループにわけてグループ毎に一括で読んで、シーン毎にそのグループを解放するのがいいよ
テクスチャの解放って遅延されるし、GPUメーカー毎のプロファイラ使って調べてとか大変だし、
消費具合を見積もりやすい構成にしておくほうが楽だと思う
820名前は開発中のものです。:2012/08/24(金) 20:23:34.39 ID:YKP6lc7q
Thanks!あんがと!やってみる!!
821名前は開発中のものです。:2012/08/26(日) 22:18:58.32 ID:qaOZLgLr
っっh
822名前は開発中のものです。:2012/08/27(月) 15:09:09.65 ID:6lu5kgZo
質問です。
ファミコン風のゲームをc++で作ろうと思っています。
しかし、当時のテイストでドット絵を打っていると
エミュのファミコンゲーム同様
遊ぶにはあまりに小さいゲーム画面になります。
(例えば、ファミコンのマリオのドットは32×32)

結果、エミュレータでは画面を拡大させ遊んでるわけで、
だったらファミコン風ゲームを作るなら
最初からそれぞれのドット絵を描いては2倍ほど拡大し
それでゲームを作った方がいいと考えました。

しかし、そこで気になったのですが
最初から拡大したグラフィックを用意するより、
小さいサイズのグラフィックをプログラムの方で拡大表示しつつ利用するのとでは
どちらがプログラムの実行速度への影響が強いのでしょうか?

教えてくださいませ。
823名前は開発中のものです。:2012/08/27(月) 15:22:53.52 ID:K35bcChK
小さいサイズでゲームを作って、描画はすべてサーフェスにする
その後描画済みの画面を好きな大きさに拡大して描画すればいいだけ

質問の内容に答えるとするなら、当然小さいサイズのグラフィック
824名前は開発中のものです。:2012/08/27(月) 15:27:16.59 ID:WvKA4oHh
でもどっちでも実行速度一緒みたいなもんじゃないかな
825名前は開発中のものです。:2012/08/27(月) 15:29:27.32 ID:4UX4FWs7
ファミコン風のゲームなのにどこにどれだけリソース使うつもりでコストの心配してるんだろう
826名前は開発中のものです。:2012/08/27(月) 15:30:19.57 ID:K35bcChK
あと個人的な好みで言わせてもらうとフルスクリーン化のできないゲームはノーサンキュー
827名前は開発中のものです。:2012/08/27(月) 15:31:05.46 ID:4UX4FWs7
フルスクリーンて需要あったのかよ・・・
828名前は開発中のものです。:2012/08/27(月) 15:32:25.54 ID:K35bcChK
逆にゲームする時に全画面以外にするメリットって何?
829名前は開発中のものです。:2012/08/27(月) 15:36:45.24 ID:SV0xM023
>>828
育てゲーがフルスクリーンだったらウザくね?
830名前は開発中のものです。:2012/08/27(月) 15:36:46.20 ID:WvKA4oHh
ロード時間に2chとか見れる
831名前は開発中のものです。:2012/08/27(月) 15:37:20.60 ID:4UX4FWs7
2PCとか2画面する以前は断然ウインドウモードだったわ。FPS的な視点操作するなら全画面だけど
スカイプとかメッセとか確認しないといけないからなぁ
832名前は開発中のものです。:2012/08/27(月) 15:41:20.91 ID:SsPy0+dS
ネットで攻略ページを見ながらゲームを遊べる
あと、メモ描きしながらゲームを遊べる
833名前は開発中のものです。:2012/08/27(月) 15:42:10.18 ID:4l3eqSFM
フルスクリーンってどういう意味で使われてるんだろう
モニタの解像度変更?
クライアント側を拡大などでフルスクリーンはまた違うん?
834名前は開発中のものです。:2012/08/27(月) 15:43:04.17 ID:6lu5kgZo
レス沢山ありがとうございます。
びっくりしました。
携帯からなのでアンカーは割愛させてください。

ビジュアルスタジオ2010で作りだして間もないのですが
すでに最初の読み込みが遅くなって来てまして、
ゲーム中も表示したオブジェクトの数の増減で
処理速度がパンパン変わります。

まだ作り始めて敵と自機と弾と背景程度なのに、、、

もちろん初心者なのでプログラムに問題があったり
ノーパソなんでそれらも影響しているのかもしれませんが
とにかくファミコン程度の画像群でこんななるとは思いませんでした。
(だってファミコンのRomなんて数バイトですよ??)
835名前は開発中のものです。:2012/08/27(月) 15:46:35.69 ID:4UX4FWs7
ふぇえ、さすがに数十KBじゃないとキツイよぉ・・・
836名前は開発中のものです。:2012/08/27(月) 15:54:17.37 ID:6lu5kgZo
例えばスーパーマリオと同じ見栄え、同じ内容で
ゲームを作れば、当時のスーパーマリオの用量に近いはず
じゃないですか?

もちろん、いろんな部分で工夫があったわけで
可能だったのはわかります。
しかしその工夫を度外視しても、
スーパーマリオを再現した様なものがメガレベルのデータ量になるもんなんですか?

不思議なんです。
837名前は開発中のものです。:2012/08/27(月) 16:00:08.88 ID:WvKA4oHh
もしかしてメモリに画像を読み込まず直接表示してる?
838名前は開発中のものです。:2012/08/27(月) 16:20:51.74 ID:LWSqiDME
ファミコン時代のテレビって解像度どのくらいだったの?
839名前は開発中のものです。:2012/08/27(月) 16:43:43.67 ID:6yqEaStJ
>>836
扱う画像は差が無くても、当時とは実行環境も開発環境も何もかも決定的に違うでしょ
アセンブラでハードウェアを直接叩くようなコードを書いてるわけじゃないんだから
840名前は開発中のものです。:2012/08/27(月) 16:45:27.74 ID:wkZodGL/
>>836
ファミコン上で動くプログラムならそれくらいで済むかもしれんが
841名前は開発中のものです。:2012/08/27(月) 16:49:25.49 ID:WKeekkgP
>>836
windows用アプリとして必要な情報とかあるだろ
ホントはライブラリのコードなんだけど
842名前は開発中のものです。:2012/08/27(月) 17:13:12.40 ID:/DODHc0m
>数バイト
当時のハドソン任天堂シャープのエースかきあつめても無理。
そんな容量のファミコン向けマリオは無い。
843名前は開発中のものです。:2012/08/27(月) 17:39:57.66 ID:BSnAwg14
「ゲーム専用機」の意味を考えれば自ずと答えが出る。

で、画像は他の人も要ってるように毎回読み込んでるんじゃないの?
メモリに読ませておけばローディングで一度読み込ませれば良いいから
その分作業が減る
844名前は開発中のものです。:2012/08/27(月) 23:14:09.29 ID:AmONeSj3
>>834
流石にコードがおかしいとしか考えられん。
今日日、24bitビットマップをbitbltで描画してもそこまで遅くならんはず。
845名前は開発中のものです。:2012/08/28(火) 07:44:04.49 ID:1MFBORqr
.net使ってるんじゃね?
846名前は開発中のものです。:2012/08/28(火) 08:32:37.67 ID:AqlMnlIw
>>845
2001年に帰れ
847名前は開発中のものです。:2012/08/28(火) 08:50:17.50 ID:1MFBORqr
SetTimer使ってるとか
848名前は開発中のものです。:2012/08/29(水) 15:31:42.47 ID:+DLDQRaV
描画か当たり判定で変な事してね?
849名前は開発中のものです。:2012/08/29(水) 18:15:33.38 ID:+DLDQRaV
STGではないが、昔、敵同士の当たり判定とかやったら重くなったなぁ〜
敵同士が重ならなくするの
850名前は開発中のものです。:2012/08/29(水) 20:12:36.47 ID:hTOYdg/l
多対多の判定は最適化しないと重いな
851名前は開発中のものです。:2012/09/04(火) 14:18:16.24 ID:T3uW6K/y
ゲーム開発がC#一色になるとは思わなかったよね
http://engawa.2ch.net/test/read.cgi/poverty/1346732507/l50
852名前は開発中のものです。:2012/09/04(火) 14:23:08.45 ID:/jg+QwLl
ゲーム制作に向いてるのがC++なの事実
C#はミドルウェアが強くてマルチプラットフォーム前提の商業がメインのイメージがある
853名前は開発中のものです。:2012/09/04(火) 14:37:35.39 ID:fEYsFRS6
エンジンやコアな部分はC++。
ゲームの挙動はC#。

この組み合わせでFA。
854名前は開発中のものです。:2012/09/04(火) 19:16:06.72 ID:DbHqsSfz
回転軸である基準点と、高さと幅の情報から四角形を作りたいんだけど、
一つの角を求めるのに数学関数の中でも重いって評判のcosを2回も使ってしまう。
cosを一個に減らすように最適化、もしくは点の求め方を教えて下さい
(x1,y1)
・━━━┓
┃    ┃
┃ ・  ┃ ↑角度0 Angle
┃ (X,Y) ┃
┗━━━┛

x1=X+cos(Angle)*takasa+cos(Angle+3.141592/2)*haba;
y1=Y-sin(Angle)*takasa-sin(Angle+3.141592/2)*haba;

xとyは左上が0,0です。
855名前は開発中のものです。:2012/09/04(火) 19:51:33.29 ID:IAhJLyuf
最近のPCなら猛烈な回数実行しないなら誤差じゃね
856名前は開発中のものです。:2012/09/04(火) 20:41:49.71 ID:DbHqsSfz
>>855
なんというか、例えば
cos(Angle)*takasa
の部分がY軸の差分で
cos(Angle+90度)*haba
が横の差分でわかりにくいので、なんとかひとつに纏められないかと思ったんですけど・・・
857名前は開発中のものです。:2012/09/04(火) 20:43:31.31 ID:p1OrbEeH
cos(x+pi/2)=-sin(x)
sin(x+pi/2)=cos(x)

sincosだかcossinだか、一回呼べば二つ計算してくれる関数があったと思う。
858名前は開発中のものです。:2012/09/04(火) 20:50:18.17 ID:N34J7QrT
arctanで一発じゃん
859名前は開発中のものです。:2012/09/04(火) 21:14:55.52 ID:C98+JCbF
俺が昔書いたやつだとたしか

r = (X - haba)*(X - haba) + (Y - takasa)*(Y - takasa);
x1 = (X - haba) + r * sin(Angle);
y1 = (Y - takasa) + (r - r * cos(Angle));

みたいに書いてたはず
AngleがPI/2以上ならPI/2以下になるようにして
860名前は開発中のものです。:2012/09/04(火) 21:31:00.67 ID:b/bTDDat
>>859
rは平方根しないのけ?
861名前は開発中のものです。:2012/09/04(火) 21:42:42.98 ID:C98+JCbF
>>860
忘れてた、平方根つけるわ
あとPI/2じゃなくてPI/4だわ
862名前は開発中のものです。:2012/09/05(水) 00:44:56.65 ID:U8dRTkNm
その昔だと、角度をunsigned char の256通りとかにしておくという手法もあったな
863名前は開発中のものです。:2012/09/05(水) 12:19:22.88 ID:Kz04qKqT
atan2で45度の方向に高さ幅でいいかな・・・
864名前は開発中のものです。:2012/09/05(水) 23:22:56.83 ID:U6US6re6
適当な sin cos のテーブル作っといて線形補間すればいいんでねーの?
865名前は開発中のものです。:2012/09/11(火) 12:21:34.97 ID:mbdwJAM1
ゲームエンジンもオープンソース化の時代かぁ
http://www.gamasutra.com/view/news/177431/Game_engine_Torque_3D_will_soon_be_free_open_source.php
866名前は開発中のものです。:2012/09/11(火) 20:03:19.99 ID:4nOYAXXy
翻訳、頑張ってね〜
867名前は開発中のものです。:2012/09/11(火) 22:25:48.77 ID:I3uO1Url
エンジンは珍しいな。他は何かあったっけ?

>>866
そんなに難しい英文じゃないだろ。
C++PGなら英語ドキュメント読むこと多いし。
868名前は開発中のものです。:2012/09/11(火) 23:04:32.63 ID:6cBDHKR4
GPLライセンスかバイバイ
869名前は開発中のものです。:2012/09/11(火) 23:05:58.31 ID:NaEY+UgF
俺にはMITに読めるが
870名前は開発中のものです。:2012/09/11(火) 23:39:26.53 ID:jAODdP1V
派生クラスの内部クラスから
基底クラスのpublicメンバにはアクセスできないんでしょうか?
871名前は開発中のものです。:2012/09/11(火) 23:48:13.25 ID:0sp12dmv
よくわからん。javaみたいなアクセスをしたいって話?
それとも、インスタンスを受け取ったうえでの話?
872名前は開発中のものです。:2012/09/12(水) 00:25:16.83 ID:ksQCH+Sb
class A{
int Data
};

class B : public A{
public:
class C{
public:
void Test(){
Data = 100;
}
};
};

};

みたいなことです
873名前は開発中のものです。:2012/09/12(水) 00:55:34.41 ID:EJWmlpV2
classの宣言のときにメンバ変数/関数に付けるアクセス指定子と、
継承の時に使う指定子とを勘違いしている予感。

ちなみにclassの場合、デフォルトのアクセス指定子はprivate。
874名前は開発中のものです。:2012/09/12(水) 01:01:32.21 ID:SUL9a/g2
>>872
それ派生とか関係なくCはBの変数にだって干渉できない
CクラスはBクラスの中にあるだけでAやBとは関係のないクラスなんだから
void Test( B* b ) { b->Data = 100; }
875873:2012/09/12(水) 01:09:35.75 ID:EJWmlpV2
失敬、内部クラスなの見逃してた
876名前は開発中のものです。:2012/09/12(水) 01:34:15.90 ID:kIjd7kIW
C++の内部クラスはJavaとは違って直接親のメンバは参照できない。
Javaでもstatic指定すれば同じようになる

親のprivate なメンバは見えるから、コンストラクタとかで親の参照を持つようにするか、
それぞれのメソッドで渡すようにして、
それ経由で操作する形にすれば同じようにつかえる
877名前は開発中のものです。:2012/09/12(水) 20:43:25.67 ID:1KrKd/TO
テンポラリオブジェクトが乱舞して楽しい。
878名前は開発中のものです。:2012/09/14(金) 17:27:37.15 ID:u0rStZ5H
class キャラクター
{
int 体力;
public:
キャラクター(){};
};

int _tmain(int argc, _TCHAR* argv[])
{
キャラクター 主人公 ;
return 0 ;
}
コンパイル出来た\(^o^)/
879名前は開発中のものです。:2012/09/14(金) 18:26:27.93 ID:lfEIPkIB
よかったね。
880名前は開発中のものです。:2012/09/18(火) 22:47:40.70 ID:vS8mOuy6
>>878
そりゃ真面目に一生懸命頑張ってる人の足まで引っ張ったりはしないよ
そういう人にそんな隙は無い
しかし頑張りが足りない、足元がおろそかな奴がいたならば
容赦なく引っ張ってやるのが礼儀ってもんだろ社会の
881名前は開発中のものです。:2012/09/18(火) 22:50:05.65 ID:EPJm1FYF
>>880
アチャー
882名前は開発中のものです。:2012/09/19(水) 05:06:07.69 ID:rDMxVM0A
他言語を馬鹿にするのをやめてもらえませんか?
883名前は開発中のものです。:2012/09/19(水) 09:40:40.61 ID:IltfEa/t
話の流れが全く見えない
884名前は開発中のものです。:2012/09/19(水) 09:46:58.68 ID:luhrirZT
>>883
流れを逸脱したレスを読んで流れ読むのは無理だろw
885名前は開発中のものです。:2012/09/28(金) 19:41:40.57 ID:hBbbuXvm
class B{
B();
bool Flag;
B::B(){
Flag = false;
}
};

class C{
void Test(bool& flag);
void C::Test(bool& flag){
flag = true;
}
};

class A{
bool update();
B b;
C c;
bool A::update(){
if(Key[KEY_INPUT_Z]) c.Test(b.Flag); //Zキーを押したらTest実行
return b.Flag;
}
};

int main(){
A a;
while(1){
if(a.update) break;
}
return 0;
}
886名前は開発中のものです。:2012/09/28(金) 19:51:31.04 ID:hBbbuXvm
クラスAの内部クラスB,クラスC
クラスBのメンバFlagがtrueになるとbreakします。
クラスBのメンバFlagをクラスC内で操作(true)する場合
参照渡し?やポインタで引数で渡す以外方法はないのでしょうか?
要点は内部クラスBからCのメンバを呼んだりCからBを呼んだりなどはできないのでしょうか?
設計自体がおかしいというのもあるかもしれませんが
お願いします
887名前は開発中のものです。:2012/09/28(金) 20:21:58.79 ID:97Pt3+NL
>>886
それは内部クラスとはいわない。適当にpublicなメソッドはやすか、friendクラスにすればいいんじゃね
888名前は開発中のものです。:2012/09/29(土) 07:25:45.84 ID:sJJgoYEA
#include <iostream>
class B;
class C{
int m_d;
public:
C():m_d(0){}
void set(B& b);
};
class B{
bool m_f;
public:
B():m_f(false){}
void set(bool f){ m_f = f; }
bool get(C& c){
c.set(*this);
return m_f;
}
};
void C::set(B& b){ b.set(m_d > 10); ++m_d; }
class A{
B b; C c;
public:
bool update(){ return b.get(c); }
};
int main() {
A a;
for(;;){
if (a.update()) break;
std::cout << "run\n";
}
}
889886:2012/09/30(日) 21:41:02.90 ID:8YJ8oAKd
なるほど色々調べてみます
ありがとうございました
890名前は開発中のものです。:2012/10/05(金) 23:29:32.39 ID:/P4DXadn
#include <map>
#include <string>


class Base{
};

int main(){
std::map<int, Base> Map;
Map.insert( std::map<int, Base>::value_type( 10, Base ) );

//std::map<int, std::string> Map;
//Map.insert( std::map<int, std::string>::value_type( 10, "aaa" ) );

std::cout << Map[10] << std::endl;


return 0;
}

キーがint,値が独自クラスのmapを作成したいのですがこれだとコンパイルが
insertでエラーになってしまいます。
値を独自クラスにする場合どうすればいいのでしょうか?
891名前は開発中のものです。:2012/10/06(土) 01:31:04.39 ID:BPauwatj
Baseの値は?
892名前は開発中のものです。:2012/10/06(土) 03:15:31.71 ID:8aC6cfG0
Map.insert( std::map<int, Base>::value_type( 10, Base ) );

Baseのところコンストラクタ呼んでやらんとだめだよ
それと、std::map<int, Base>::value_type()のかわりに
std::make_pair();を使ってやるといい
そうすっと
Map.insert( std::make_pair( 10, Base( ) ) );
こんな感じになる。

Map[10] = Base( );
これでも要素の挿入が可能。
893890:2012/10/06(土) 21:27:09.32 ID:f2F52Ryh
上記の記述でうまく走りました
ありがとうございました
894名前は開発中のものです。:2012/10/09(火) 23:44:44.58 ID:Gx7Ti8c3
class Base{
public:
int x;
};
class A : public Base{
};
class B : public Base{
};
class Scene{
public:
std::vector<Base*> Data;
};
895名前は開発中のものです。:2012/10/09(火) 23:45:47.68 ID:Gx7Ti8c3
int main(){
Scene scene;
A a;
B b;
A c;
B d;
a.x = 2;
b.x = 0;
c.x = 7;
d.x = 4;
scene.Data.push_back(&a);
scene.Data.push_back(&b);
scene.Data.push_back(&c);
scene.Data.push_back(&d);
std::sort(scene.Data.begin(), scene.Data.end());
for(unsigned int i = 0; i<scene.Data.size(); i++){
std::cout << scene.Data[i] << " " << scene.Data[i]->x << std::endl;
}
return 0;
}


Base型ポインタのvector Data内の要素を基底クラスxの値でソートしたいのですが
Data内のアドレスでソートされてしまいます。Data内の要素はアドレスを格納しているのでそうなるようですが
xの値でソートするにはどう記述すればいいのでしょうか?
比較関数とかoperatorとかでしょうか?
896名前は開発中のものです。:2012/10/10(水) 00:31:18.18 ID:Kb2uqcho
std::sortの三番目の引数について調べるんだ!
897名前は開発中のものです。:2012/10/10(水) 00:45:29.09 ID:ce5t8/XF
>>895
そこまでわかってるならあと少しだろう

struct Compare { bool operator()(const Base *a, const Base *b){rerurn a->x < b->x; }};
std::sort(scene.Data.begin(), scene.Data.end(),Compare());
とか比較用の関数オブジェクトを使えばいい

Baseに対してoperator<とかを定義して std::lessやstd::greaterを使う書き方も出来る
898894:2012/10/11(木) 00:45:51.50 ID:PmqcuLt2
うまくいきました
ありがとうございました
899名前は開発中のものです。:2012/10/11(木) 15:09:03.07 ID:oRyXTYyF
今までXY座標・角度・距離などで接触判定を行なっていたのですが、ベクトルというもののほうが接触判定の公式がいっぱいあるので乗り換えたいです。
そう思っていた時に過去ログに
http://dixq.net/forum/index.php
というページが貼られていたので「これを機に全部ベクトルで判定するか」と思っていたのですが
案の定コード内容ですら意味不明です。
わかりやすいベクトルの使い方の解説サイトなどないでしょうか
900名前は開発中のものです。:2012/10/11(木) 15:10:39.54 ID:oRyXTYyF
http://www.dango-itimi.com/blog/archives/2006/000858.html
URLミスりました。こっちです。
901名前は開発中のものです。:2012/10/11(木) 15:35:13.98 ID:ftFNt1Ys
XY座標・角度・距離からベクトルに乗り換えるって、意味が分からん。
902名前は開発中のものです。:2012/10/11(木) 16:48:18.02 ID:6KTw2vbl
移動を考慮するってことだろうな。
903名前は開発中のものです。:2012/10/11(木) 19:22:06.59 ID:zQk05huP
function checkcirclclsの説明ならできるけども。
最初のifはv・cの内積がマイナスか? つまりcosがマイナス、90<θ<270
始点から終点へのベクトルが円の方向とは逆向き 始点が円の中にあるかを判定してる

2つ目のif n2はvの二乗 n1=v・c=V*C*cosθ が、v・v=V^2よりもでかいってことは
cosθ>V/C ここで0<cosθ<1だから(上のifより)
V/C<1つまりV<C 2つのベクトルは同じ方向だけど、始点から終点への距離のほうが短い
よって終点が円の中にあるか確認

3つ目のifは終点が、始点と円の中心より遠くにある場合で
円の中心から線分に下ろした垂線の長さと円の半径比べてるって感じだと思う たぶん・・・
違ってたら申し訳ない。
小文字がベクトルで大文字が絶対値ね。

高校数学の類推で書いたけど、ゲーム数学でのtipっぽいサイト・本は知らないなあ。
904名前は開発中のものです。:2012/10/12(金) 01:34:50.66 ID:DAtskPpl
ググったら普通に本もサイトもあるし
905名前は開発中のものです。:2012/10/12(金) 20:59:11.47 ID:e5RAe9Bd
906名前は開発中のものです。:2012/10/14(日) 16:35:43.94 ID:l6oxbFUg
他スレの話しなんだが、なんか説得するのが面倒になったので
こっちに吐き出させてくれ…



処理系依存と未定義動作は完全に別物。

前者は、言語仕様で動作が規定されない代わりに
処理系(コンパイラ、リンカとかと、実行時のOSとか)側で
動作が規定されている。
どこかしらに「こういう動きになるよ」と書いてある事が大半(VCならMSDNにあるはず)

対して後者は、言語仕様側でも処理系側でも動作は規定されない。
誰も動作を保証しない。トラブルが有った時のクレーム先はどこにもない。
「今までこういう動きだったし」とかいう何の根拠にもならない理由は通用しない。
なぜなら、「今後もその動きをする」と保証してくれる所はどこにも無いから。

ゲ製では設計に迷っている人に対して「動きゃいいんだよ!!」と言う事がままあるが
こっちに関しては「今動いている事が奇跡」と考えるべきで、全然別物。



…と、この辺りまで考えて「何やってるんだろう俺」と感じて、書き込むのをやめた。
スレ汚しごめんよ、誰かに見てもらいたかっただけなんだ。

スレ汚しついでに、上の文で認識が間違ってるところがあったら教えてほしい。
907名前は開発中のものです。:2012/10/14(日) 16:57:13.70 ID:bShDUbm6
あー、あのスレかw
あっこはstd::mapだから重い的な書き込みとか
自身の思い込みをそのまま書いて
それが真実であるようにして自分は間違ってない!って感じになることがあるなw
908名前は開発中のものです。:2012/10/14(日) 16:58:15.31 ID:kWeeP/mI
そもそもどんなことにも保証など存在しない。
909名前は開発中のものです。:2012/10/14(日) 17:03:43.83 ID:Zc+A2Cv+
他のスレで揉めたことを他に持ち込むな。
910名前は開発中のものです。:2012/10/14(日) 17:09:56.24 ID:lnOWihll
2chで誰かを言い負かしても何の得にもならんのに何やってんだお前ら
ゲーム作れゲーム
911名前は開発中のものです。:2012/10/14(日) 17:35:43.94 ID:o2nl6icf
嘘知識で汚染されて(現場に)派遣されてくることがあるから
2chなんかと笑ってられなかったり

現場から極端に近い人と極端に遠い人ほどムキになる
912名前は開発中のものです。:2012/10/14(日) 18:20:58.32 ID:IqvNp+Kh
>>906
あちらでもチラッと言ったけど、似たような概念は他に「不定」があるな
913名前は開発中のものです。:2012/10/14(日) 20:07:42.62 ID:qN9GuzC+
つーか「処理系定義」のことか?
914Perl忍者 ◆M5ZWRnXOj6 :2012/10/14(日) 20:29:56.71 ID:sRKUA4E1
お前らウイルスとか荒らしスクリプト作れないだろ?
雑魚そうだもんな
915名前は開発中のものです。:2012/10/14(日) 20:30:49.91 ID:HptHh87R
くっせーコテだなぁ
規制依頼すんぞ?
916名前は開発中のものです。:2012/10/14(日) 20:45:44.68 ID:IqvNp+Kh
>>913
そういえばそうね。
文章的に正しいのは、処理系定義の挙動を前提としたプログラムは処理系依存、ってところか。
917名前は開発中のものです。:2012/10/14(日) 21:26:37.24 ID:aM02E44v
ここ見てる人たちは仕事でゲーム作ってる人たち?
918名前は開発中のものです。:2012/10/14(日) 21:35:38.76 ID:IqvNp+Kh
本職のゲームプログラマも、
仕事でゲーム作ってるけどPGじゃない人も、
プログラマだけどゲーム作りは単なる趣味だって人もいるよ。
919Perl忍者 ◆M5ZWRnXOj6 :2012/10/14(日) 22:50:40.55 ID:sRKUA4E1
日本の低脳ゲームプログラマはカードゲーム、ボードゲームばっかりだなあおいおい!!
一人でMMORPGとか変わった対戦ゲームとかつくれねーのか!ヘイヘイヘイ!
本当にしょーもねーなシュシュ
全くグズばっかりだぜ
920名前は開発中のものです。:2012/10/15(月) 00:15:23.38 ID:zkA4YGgF
あぼーんw
921名前は開発中のものです。:2012/10/15(月) 12:35:20.53 ID:0j03j1xC
他のスレの話なら他のスレでやればいいのに
味方作って慰めてもらおうとしてるだけにしか見えないから
922名前は開発中のものです。:2012/10/15(月) 13:28:26.77 ID:MkQLZqZt
>>921
他のスレで荒れてたのを持ってきたというより、
C言語の仕様に関する話題になったので、こっちに持ってきたというのが正しいんじゃないかな
923名前は開発中のものです。:2012/10/16(火) 22:35:57.67 ID:aSCmSzAL
http://marupeke296.com/DXCLS_AutomationOfSaveLoad.html
このサイトでデータのセーブとロードについて解説されているのですが、
これにvectorなどの可変長配列を利用することは可能でしょうか?(例えばゲーム内で手に入れたアイテムデータリストのセーブなど)
可変長配列のサイズを取得してセーブデータ自体のサイズ自体も可変長にすればできたり・・?
924名前は開発中のものです。:2012/10/16(火) 22:54:11.21 ID:F/EzBMte
やる方法はあるみたいだけど、しないほうが無難じゃないかなあ
925名前は開発中のものです。:2012/10/16(火) 23:11:40.34 ID:jr04aFOT
ロックマンみたいな横アクション作ってる人に聞きたいんだけど、カメラってどういう風に動かしてる?
縦にもスムーズに追跡したいんだけどキャラ中心にするとジャンプしただけでカメラが上下…
かといってジャンプ時に縦に動かないようにすると下に落下してもカメラが追跡しない
926名前は開発中のものです。:2012/10/16(火) 23:15:45.55 ID:F/EzBMte
画面中央を基準として遊びの領域を設定しておき、キャラがそこから出たら追従
927名前は開発中のものです。:2012/10/16(火) 23:23:33.78 ID:3tkTJIke
落下して端に到達したら暗転して次のマップ
928名前は開発中のものです。:2012/10/16(火) 23:31:40.52 ID:Xisk+kv3
カメラなんて概念捨ててフレームバッファだけで考えた方が簡単だと思うよ
929名前は開発中のものです。:2012/10/16(火) 23:47:14.62 ID:aSCmSzAL
でも今の横スクロールアクションって進行方向にカメラが予め設置されてるよね
930名前は開発中のものです。:2012/10/17(水) 02:18:31.53 ID:yEvPWQ+n
レースゲームとかソニックのカメラってどうなってるの?
入力方向じゃないし、慣性方向でもなさそうだし、
かといって別にゴールの方向に常にカメラが向いてるわけでもないし
931名前は開発中のものです。:2012/10/17(水) 02:34:39.42 ID:4eV5S9Vt
真似することを考えずにまずは自分なりの方法でやってみろ
932名前は開発中のものです。:2012/10/17(水) 03:05:58.87 ID:zWpchkd8
>>928
ええと、どういうこと?
933名前は開発中のものです。:2012/10/17(水) 08:13:27.75 ID:rnolp/E3
>>932
全部cpuのピクセル処理で頑張ってるんじゃね
934名前は開発中のものです。:2012/10/17(水) 13:01:49.16 ID:yEvPWQ+n
昔はマリオとかのゲームってキー入力のチェックと現在の位置から、場面場面で全部のパターン予め決めておいて分岐させてるだけかと思ってた。
つまり1フレーム目で上下左右のどのキーが押されたかチェックして4パターン作っといて、さらにそこから分岐して次の2フレーム目は16パターン3フレーム目は64パターン
935名前は開発中のものです。:2012/10/17(水) 14:08:13.50 ID:WIAhzCZQ
>>934
1面だけで天文学的数字になるなw
936名前は開発中のものです。:2012/10/17(水) 14:11:30.40 ID:zWpchkd8
>>933
どういうことだろう?と考えてみたが、みんな想定してる「カメラ」の定義がバラバラなのかもしれないと思った。
たぶん928が言ってる「カメラ」は3Dにおけるカメラなのかな。

>>934
想像したくねぇw
937名前は開発中のものです。:2012/10/17(水) 20:40:55.96 ID:mciJv64M
まあ、子供の頃は無茶な事を平気で考えるからな

俺の場合は、図形の組み合わせでプログラムが作れると本気で思ってた。
まあ最近、仕事でそれが出来るようなツールを知ったわけだが……UMLモデリングツールなんだけどな
オブジェクト指向言語なら組み合わせて使えるから、欲しいんだけどな……ち〜と手が届かない
938名前は開発中のものです。:2012/10/17(水) 20:44:02.80 ID:8GMmWMMd
俺はバイファムに出てきた戦闘シミュレータみたいなのは
俺が生きてる間には実現しないだろうなと思ってたよ……。
939名前は開発中のものです。:2012/10/18(木) 05:50:40.05 ID:H0txiXiD
まさか家庭用ゲーム機がアーケードゲームの性能を超えるなんて
夢にも思わなかった。
940名前は開発中のものです。:2012/10/18(木) 08:09:54.05 ID:4FpajfD4
お前は何を言っているんだ
941名前は開発中のものです。:2012/10/19(金) 21:15:01.53 ID:ySWLrrZA
>>923 で紹介されてる
http://marupeke296.com/DXCLS_AutomationOfSaveLoad.html
ですが、ここで使われているDATA_LOCALマクロは、offsetofマクロと同じく
非POD型に対しては未定義のように思えます。
これをCSaveObjBase(仮想関数を持ってるので当然非POD型)や、その派生クラス
(非POD型の派生は当然非POD型)に対して用いるのは、やっぱりいけてないと思われるのですが
どうなんでしょうか

942名前は開発中のものです。:2012/10/19(金) 22:49:35.05 ID:M4c+0Lno
セーブするのはどうせプリミティブな型だけだからいいんでないの?
943名前は開発中のものです。:2012/10/20(土) 02:53:53.20 ID:V8nr5/sM
ちょっと調べてきた
オフセットの取得部分がoffsetofの一般的な実装と同じなんだな

offsetofに関するトピックはあったけど、いまいちわからん
多重継承するといかんのか?
http://stackoverflow.com/questions/1129894/why-cant-you-use-offsetof-on-non-pod-strucutures-in-c

オブジェクト内のメモリ配置がコンパイル時に決まるなら大して問題にならない気がするんだがどうなんだろ
944名前は開発中のものです。:2012/10/20(土) 06:41:01.04 ID:s/RZO/oy
>>943
Cならば->は単純なポインタの足し算だからコンパイル時に決定されるけど、
C++だと->はそうではないことがあるってことかね?

典型的な offsetof の記述はこうなので
#define offsetof(type, mem) ((size_t) \
((char *)&((type *)0)->mem - (char *)(type *)0))

VCで仮想継承 を持つときには、アロー演算子が仮想関数テーブルを見にいくけど、
この時 Windowsのユーザモードの場合は(ほとんどの場合)読み込み禁止ページを見にいって、
Access violationを発生させる。保護機構が無い環境だと、アドレス 0に仮想関数テーブル分
のオフセットを足したアドレスを仮想関数テーブルだとおもって、多分でたらめな値を返す。
945名前は開発中のものです。:2012/10/20(土) 10:04:42.33 ID:W2X4ug0e
>(このアイデアはGame Programing Gems 3に記載されています。すばらしいですよね(^-^))

出展が書かれてるから本屋が近くにあるなら
載ってる部分立ち読みしてきたらどうだろう。
てかおれもGems3みかけたら読んでみよっと
946名前は開発中のものです。:2012/10/20(土) 14:58:04.14 ID:kepwCMlF
C++は酷い言語だ。標準以下のプログラマの多くが使い、
はっきり言えば完全完璧な戯言を作ることが非常に簡単だという事実によって、
ますます酷くなっている。率直に言えば、たとえCの選択がただC++プログラマを立入らさせないためであるとしても、
それはそれでCを使う大いなる理由となろう。
http://slashdot.jp/journal/501622/C%2B%2B%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6Linus-Torvalds%E3%81%B8%E3%81%AE%E5%8F%8D%E8%AB%96

947名前は開発中のものです。:2012/10/20(土) 16:45:25.36 ID:qfzdsTSz
>>946
日本語でおk
948名前は開発中のものです。:2012/10/20(土) 19:32:10.35 ID:CKi8uHGH
2010年3月のネタを全く臆することなくドヤ顔で貼れる>>946さんチョーカッコイイ
949名前は開発中のものです。:2012/10/20(土) 20:08:16.01 ID:sAj3jZd1
真のC++プログラマはdeleteを書かない
950名前は開発中のものです。:2012/10/20(土) 22:06:28.72 ID:cYGMs3W8
パフォーマンスのため、未だにメンバ変数にアクセスするときは、いちいちローカル変数に置き換えていたり、
明らかに多態させた方がいいのに、仮想化を避けたり・・・

確かに俺の場合、ゲームで使うときはなんかC++の爽快感がないなぁ
後者は今時のコンパイラなら上手いこと最適化してくれるんだっけ?
951名前は開発中のものです。:2012/10/21(日) 05:42:47.55 ID:8o2Qx0nE
最適化もだが、そもそも今時のマシンはそのくらい気にする必要がないくらい速いだろ
952名前は開発中のものです。:2012/10/21(日) 11:05:03.38 ID:2HisPjSj
マシン性能におんぶにだっこで、できる改善をやらないのは、プログラマの行動じゃないと思う。
953名前は開発中のものです。:2012/10/21(日) 11:12:14.23 ID:VgVyyYQT
じゃあ全部ハードウェアで実装しろ
954名前は開発中のものです。:2012/10/21(日) 11:26:14.12 ID:utAVkLK4
改善というのは、できうる限りマシン性能におんぶにだっこさせることなんだが、
それがプログラマの行動じゃ無いというのは、いったいどれだけ愚か者なんだろう?
955名前は開発中のものです。:2012/10/21(日) 11:29:52.39 ID:uEOq6DXM
ハードに頼れない馬鹿なプログラマはクビだ
956名前は開発中のものです。:2012/10/21(日) 11:40:08.93 ID:fWFEJkHx
こいつらってハッカソンとか勉強会に参加してない低能なんだろ?
957名前は開発中のものです。:2012/10/21(日) 12:06:12.30 ID:un2TMSqt
できる改善というやつも
結局コーディングの手間と実行速度やリソース消費とのバランスだよな。
一概に言えるもんじゃない。
958名前は開発中のものです。:2012/10/21(日) 12:15:36.14 ID:/1IdSLkb
あーよくいるよね、知識だけ溜めこんで実装できない奴
959名前は開発中のものです。:2012/10/21(日) 12:15:54.46 ID:uEOq6DXM
わかる
俺も中二の頃はハッカソンとか勉強会に参加するだけでカッコいいと思ってたよ
960名前は開発中のものです。:2012/10/21(日) 12:29:22.29 ID:PTum4Ngu
C++を知らないゲームプログラマ達
http://d.hatena.ne.jp/alwei/20111008/1318090538
961名前は開発中のものです。:2012/10/21(日) 13:13:31.85 ID:smvmEgiA
だれこいつ
962名前は開発中のものです。:2012/10/21(日) 14:29:14.20 ID:2HisPjSj
例えば「この処理はハードがやってくれるからそっちに投げよう」というのはアリだろう。
けど「最近のPC処理能力ならできるだろうからやる必要はない」は相手の状況次第だろう。
相手が対象としてるPCが「最近の」だとは限らないし、作るゲームの規模も不明。

少なくともプログラム技術について語るスレで言うようなことじゃない。
963名前は開発中のものです。:2012/10/21(日) 15:22:10.49 ID:8o2Qx0nE
950からの流れでプログラム技術とか言っちゃう人って……
964名前は開発中のものです。:2012/10/21(日) 15:36:19.33 ID:VBPhaVkU
手を抜くための理由以上のモノではないしな
965名前は開発中のものです。:2012/10/21(日) 18:48:08.69 ID:fR9B1EWl
>>925が救われたのかが気になる
スレチだろうけどな
966名前は開発中のものです。:2012/10/21(日) 19:16:33.45 ID:9rCgavl9
>>950は素直にC使った方がいいんじゃないだろうか
そんなところに拘っても可読性落ちるだけで
プレイヤーには誤差にも感じない程度の差しかでないでしょ
967956:2012/10/21(日) 21:43:51.38 ID:fWFEJkHx
>>959
かっこいいって何?
ハッカソンとかGame Jamにも足運んでるし
CEDECとかにも毎年参加してるし
いろいろな勉強会開いたりしてるよ?
バンナム社員の人と会話とかしてTwitterでも話してるし

ちなみに愛機はMBP(MacBook Pro)使ってるかな
UDKで作ったゲームは東方風のシューティング
あとはUnityとかもやってるしね

あとこう見えてゲームは全くやらないかな(笑)
「ゲーム好き、ゲームヲタク」っていうのはゲーム開発に不要って言われてるからね
普段全くゲームをしない、所詮人が作ったゲーム、自分で作ってやるほうがおもしろいかな
好きなゲームは地球防衛軍、ストリートファイター4
ネトゲは韓国の利益になるからやらないかな
968956:2012/10/21(日) 21:52:32.03 ID:fWFEJkHx
一応できる言語書くね

C,C#,C++,Javascrip(Node.js),Coffeescript,Haskell,Eralng,Go,Scala,Python,Objective-C,OCaml,Scheme,LISP
とか使えるね

あとUnityの本とか全部そろえてるし
今はアンドロイドアプリ作ってるかな
じゃんけんゲームみたいなやつ
969名前は開発中のものです。:2012/10/21(日) 21:58:35.68 ID:70260In1
ここってプロフェッショナルレベルの人たちが集っていたのか
970名前は開発中のものです。:2012/10/21(日) 22:02:03.60 ID:EmtRs25+
>>968
「使える」のレベルが低いことが用意に窺い知れる書き込みだな
971名前は開発中のものです。:2012/10/21(日) 22:07:31.63 ID:9rCgavl9
>>968
はじめて見るのがいくつかあるな
俺もgimpのスクリプト書くのにschemeちょっとやったけど
lisp系の言語ってどういう場面で必要になんの?
やっぱりスクリプト?
972名前は開発中のものです。:2012/10/21(日) 22:22:53.59 ID:koRq+7Oz
lispはemacsの設定で使う場面しか思いつかないな
973名前は開発中のものです。:2012/10/21(日) 22:42:29.46 ID:63szXM1n
>>966
可読性が落ちるのは間違いないが、効果は誤差どころじゃないな・・・。
俺が950で挙げた前者は、みんなもやってるよね。

今時のコンパイラなら後者もOKなら、そろそろ観念してVS2012Pro買うかなぁと思ってさ。
974名前は開発中のものです。:2012/10/21(日) 23:43:39.06 ID:un2TMSqt
プログラミングのスキルは手段であって目的じゃないからな。
自分の作りたいゲームが作れなければ全ては無意味だ。
975名前は開発中のものです。:2012/10/21(日) 23:51:38.77 ID:9rCgavl9
>>973
すいません、やってないっす…

関数細かく作るから同じメンバに何度もアクセスする箇所があんまりない
ループする箇所はSTLにまとめてイテレーターでやっちゃってるな…

もしかして、俺のコード超遅い?
976名前は開発中のものです。:2012/10/22(月) 00:56:42.06 ID:z1W7+ZfO
>>975
いやフレーム毎に収まれば正義ですし、可読性重視でいんでないですかね。

考えてみればExpressならすぐ使えたなと言うわけで、VS2012で試してみました。
うちの環境だと、基底から仮想関数で呼び出した場合に比べ、直で呼び出した場合は、
大体23%くらいの速度で行けるみたい。

最適化オプション色々変えてもあまり変わらず。
最新のコンパイラでも、やっぱり遅いみたいね・・・。

どうでもいいけど2012のUIかっこいいな。メトロというよりレトロだけど。
977名前は開発中のものです。:2012/10/22(月) 02:16:07.30 ID:bfhvnErC
クラスインスタンスのdelete時に、Pure virtual function callのエラーが出て悩まされた。
純粋仮想関数持ってる親クラスのデストラクタに入ってから、その仮想関数を呼んでいることが原因だった。
978名前は開発中のものです。:2012/10/22(月) 02:24:37.14 ID:GibO9cqH
deleteなんて自分で書くものじゃないし
デストラクタもなるべく書かないほうが良い
979名前は開発中のものです。:2012/10/22(月) 02:27:36.24 ID:F1nyTPCI
2012ってXPには未対応なんね
980名前は開発中のものです。:2012/10/22(月) 04:33:45.61 ID:bfhvnErC
>>978
そうなのか?
俺はdeleteもデストラクタも使い放題だぜ。
981名前は開発中のものです。:2012/10/22(月) 06:01:48.56 ID:87TUN/xt
>>978
気になる。理由は?
982名前は開発中のものです。:2012/10/22(月) 08:33:50.88 ID:19qPn/dP
boostの参照カウンタ使えばdelete書かなくてもなんとかなる…かも?
983名前は開発中のものです。:2012/10/22(月) 09:11:31.91 ID:wKQ4qRL6
>>982
移植の際にコンパイルエラー出たときの対応コストがboostは大きくつく。
ジャンルによってはカウンタ同期のコストが馬鹿にできないこともあるだろうし。

minmalなオレオレsmartptrを作っておくのが一番苦労しない気がする。
984名前は開発中のものです。:2012/10/22(月) 15:22:28.62 ID:buj+NpWL
#include <iostream>
#include <vector>
#include <string>


int main(){
std::vector<std::string> Strings;
std::vector<int> Vector;
Strings.push_back("1-2-3-4-5");
Strings.push_back("9-7-8");
Strings.push_back("6");

for(unsigned int i = 0; i<Strings.size(); i++){
//VectorにStringsの文字列を正規表現等で格納したい
}


return 0;
}

Stringsに格納した文字列を正規表現で数字だけ取り出してVectorに格納したいのですが
正規表現はどうかけばいいのでしょうか?
Vectorを[1,2,3,4,5,9,7,8,6]といった具合です。
よろしくお願いします。
985名前は開発中のものです。:2012/10/22(月) 18:04:08.05 ID:bfhvnErC
誰が調べてあげてたもれ
986名前は開発中のものです。:2012/10/22(月) 18:38:31.04 ID:yaXLi6zV
試してないけどboost::regex_grepに\\d+を突っ込むんじゃダメかな
987名前は開発中のものです。:2012/10/22(月) 19:30:48.30 ID:GibO9cqH
deleteを自分で書くな

std::unique_ptrを使え
ノーコストのスマートポインタだ
スコープから抜けるときに自動的にdeleterを実行してくれる

std::unique_ptrが使えない場面では仕方ないのでstd::shared_ptrを使え
多態が必要なときはstd::shared_ptrじゃないとダメだった気がする

デストラクタを書くのはスマートポインタで自動的に解放できないリソースを扱うクラスのときだけだ
例えば、OpenGLのテクスチャオブジェクトとかな
だがFILEオブジェクトなんかはdeleterにfcloseを指定すればスマートポインタで自動解放可能だ

メンバ変数の解放はメンバ変数のデストラクタに任せて自分で解放しようとするな
抱合した子オブジェクトは親が死んだときに勝手に死ぬし
newしたオブジェクトはスマートポインタに入れとけば勝手に死ぬ

自分でdeleteする必要がある場面なんてまずないだろう
988名前は開発中のものです。:2012/10/22(月) 20:05:28.33 ID:YuwwqXlf
>>984
strtokでググれ

989名前は開発中のものです。:2012/10/22(月) 20:11:20.29 ID:bfhvnErC
でもさ、
あるクラスをアプリ実行期間中、存続させつつづけて、
ゲーム・ステージの切り替わりのタイミングで、
それが持つ配列型メンバをリサイズする場合なんかには
deleteを使わざるを得ないんじゃないか?
こういうケースは頻繁にあるんだが。
全ステージ配列のサイズは固定とか縛り持たせるわけでもあるまい。
990名前は開発中のものです。:2012/10/22(月) 20:20:24.89 ID:GibO9cqH
スマートポインタのvectorを使いなさい

あと、いまどき生配列はないな
固定長配列ならstd::array、可変長ならstd::vectorを使いなさい
Visual C++でデバッグモードでコンパイルすれば、範囲外アクセスしたときに例外投げてくれるはずだ
991名前は開発中のものです。:2012/10/22(月) 20:56:00.85 ID:bfhvnErC
相互に関連していて、deleteでトリガーされるデストラクタの実行順を気にしなきゃいけない時もあるよ。
またブラックボックスな配列ってのは、リサイズ後のメモリアクセス効率性への影響が不安じゃない。
992名前は開発中のものです。:2012/10/22(月) 21:12:58.91 ID:yaXLi6zV
それなりに寿命が短くて、確実に管理できるなら
new/deleteの方が楽よね
993名前は開発中のものです。:2012/10/22(月) 21:21:39.03 ID:oFyoxOqU
>>991 例えばこういう循環参照を持つやつだよね。
struct B;
struct A{ B* b;};
struct B{ A* a;};

こういうときは、生存期間の管理用に一つ使い捨てのクラスを用意して、
struct C{
A a; B b;
C():a(),b(){ a.b = &b; b.a = &a; }; // 循環してるポインタをセット
~C(){} // デストラクタで a と b が 同時に破棄されるようにする。
}; // struct C自体はスタックか std::unique_ptr<C> にまかす。

デストラクタが走るときはコンストラクタと逆の順番だから、循環参照してて
デストラクタの実行順番を気にしないといけないような状態の場合はそれ自体を
struct Cのデストラクタに封じ込めるのはどうだろう。
994名前は開発中のものです。:2012/10/22(月) 23:30:02.44 ID:GibO9cqH
オブジェクトへの参照を保持していることとオブジェクトを所有していることは別だと思うんだ

例えば木構造でなるべくメモリを局所化したい場合だとこういう感じになると思う

class Node { Node* firstChild; Node* sibling; Node* parent; };
std::vector<Node> vNode;

この場合、Nodeは他のNodeへの参照を持ってるけど、所有しているわけじゃない
所有しているのはvNodeを持つオブジェクトだ

あれこれって>993と同じことじゃね
995名前は開発中のものです。:2012/10/23(火) 00:04:00.65 ID:jziPb4Rf
weak_ptrを使うのだてめえら
996名前は開発中のものです。:2012/10/23(火) 01:15:06.83 ID:lf4QviES
class Task {
Task* m_pNext;
Task* m_pPrev;
bool m_Head; //デク先頭フラッグ
bool m_ToBeDeleted; //削除フラッグ
virtual void Exec()=0; //
};

class Filament : public Task { //m_EntryPointにTaskクラスをつなげる。
Task m_EntryPoint; //デク先頭
~Filament() { //親delete時に、連鎖的にdeleteする子の削除フラッグを立てる。
Task* child = m_EntryPoint.m_pNext;
while (!child->m_Head) {
child->m_ToBeDeleted=true;
child = child->m_pNext;
}
};
};

class Fiber : public Filament {...}; //m_EntryPointにFilamentクラスをつなげる。

class Synthesis { Fiber* fibers_active[4]; }; //1次元配列。参照のみ。

class Repository { //シーンの切り替わりで動的に生成・破棄し、インスタンスを必要分だけ保持する。
Task* tasks[1024]; //1次元配列。インスタンスを注入。
Filament* filaments[256]; //1次元配列。インスタンスを注入。
Fiber* fibers[64]; //1次元配列。インスタンスを注入。
};
997名前は開発中のものです。:2012/10/23(火) 01:16:10.47 ID:lf4QviES
↑極端な例だが、
Repositoryクラス内で、シーン中、必要なインスタンスしか確保しないという条件の場合、
 まずSynthesisクラス内の要らないfibers_active要素だけ削除フラッグを立てて、
 次にRepositoryクラス内のフラッグが立ったfibers要素をdeleteして、
 次にRepositoryクラス内のフラッグが立ったfilaments要素をdeleteして、
 最後にRepositoryクラス内のフラッグが立ったtasks要素をdeleteする、
っていうのが効率的なんじゃないか?

要は、麗しのタスクシステムなんだが(笑)
998名前は開発中のものです。:2012/10/23(火) 02:02:33.12 ID:7yJptL6x
>>992
「確実に管理しなければならない」ポイントを減らすためにライブラリ使うんでしょ
999名前は開発中のものです。:2012/10/23(火) 10:35:59.82 ID:8kXxMAJY
お疲れ
1000名前は開発中のものです。:2012/10/23(火) 10:41:49.45 ID:5T7QFGuf
そしてさようなら(#゚Д゚)/~~
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。