[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 12/24 03:50 / Filesize : 178 KB / Number-of Response : 777
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名前は開発中のものです。 mailto:sage [2012/10/24(水) 03:01:09.64 ID:oI68Vzqz]
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その12
toro.2ch.net/test/read.cgi/gamedev/1330000532/
C/C++ゲーム製作総合スレッド Part1
toro.2ch.net/test/read.cgi/gamedev/1337516528/

249 名前:名前は開発中のものです。 [2012/11/15(木) 22:06:00.91 ID:AHySL0i4]
内部のことなんて知らなくていいんだよ
使い方を知ってれば、低能でも使えるのがSTL
だからこそ意味がある

250 名前:名前は開発中のものです。 mailto:sage [2012/11/15(木) 22:11:50.11 ID:AKJanR6y]
>>249
それでバグ出したらデバッグで死ねるな

251 名前:名前は開発中のものです。 mailto:sage [2012/11/15(木) 22:14:31.65 ID:JeS5pTB2]
コード書き間違えるとたまにSTL内部のコードに誘導される時があるよな
記述ミスったところでエラー検知してくれよと言いたくなる

あと気になるのはゲームだからだろうな
静的プログラムなら負荷が発生するパターンなんてどうでもいいけど、
動的プログラムだとそこら辺完全に把握してないと非常に気になる

252 名前:名前は開発中のものです。 mailto:sage [2012/11/15(木) 22:18:29.51 ID:CCQxRnc8]
>>247
>むしろクラスのメンバ変数にこそ使ってほしい
なぜ自動変数ではダメなん?

253 名前:名前は開発中のものです。 mailto:sage [2012/11/15(木) 22:25:11.84 ID:JDzb/9N7]
STLだとメモリを自分で管理できないとか言ってる奴はいないか
ttp://www.slideshare.net/alwei/ss-11521742

>>252
スタックオーバーフローしないならnewする必要はないな

254 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 07:35:50.58 ID:wj9cLs/W]
www22.atpages.jp/otsr/cgi-bin/src/otsr8520.jpg

www22.atpages.jp/otsr/cgi-bin/src/otsr8521.jpg

255 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 13:39:30.43 ID:BTfLhLXO]
絵柄と相まって小学生が好きそうなノリだなw

256 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 16:46:04.64 ID:N1OcN+jA]
vector配列のvector配列をvector配列で管理する三次元配列って開放する時大本だけ開放しておけばおk?

257 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 17:19:36.14 ID:BTfLhLXO]
vector<vector<vector<int> > > か?
実体さえ行方不明にならなければどうとでもなるが
newしたものを格納してるならshared_ptrじゃないと危ないかもな



258 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 18:07:16.53 ID:sOBt52RE]
typedef shared_ptr<MapData> MapTip
typedef vector<MapTip> Map1D
typedef vector<Map1D> Map2D
typedef vector<Map2D> Map3D

259 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 19:28:23.88 ID:N1OcN+jA]
ポインタじゃなくて実体を格納するなら大丈夫なのか
クラスのメンバとしてコンテナ使ってると混乱してくる

260 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 21:05:15.58 ID:JKxfRh2i]
別にポインタを格納しても何の問題もねえよ混乱しすぎ
Actor* actor = MapTip[0][4][6];
a->Draw();
みたいなアホな事してないなら何の問題もない

261 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 21:08:12.91 ID:N1OcN+jA]
混乱してるのはそこじゃねーよ!

262 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 21:16:48.82 ID:JKxfRh2i]
>>261
悪い、ちょっと想定がアレな上にアホな事コード(vectorのアドレス保存して云々が正しくアホなコード)も間違ってるというアレっぷり

実体なら問題はないが、個人的にはコピーコストが馬鹿みたいにかさむからshared_ptr推奨したいな
メンバのメンバのメンバの...みたいに順々にデストラクタは働くので、実際にユーザーが使用した型であるvector<vector<vector<T>>>をclearすれば、Tのデストラクタがちゃんとしてるならば処理される

263 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 21:28:55.22 ID:bHfLv1nY]
所有権を共有する必要はないのでunique_ptrを使いたいけど
ポリモーフィズムに対応してないという弱点のせいでshared_ptrにせざるをえない

264 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 21:37:31.95 ID:BTWHJeh/]
ていうかunique_ptrってコピーしても大丈夫なん?

265 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 21:56:59.63 ID:Tl4n6tnv]
なんのゲーム作ってるのか誰も書かないではないか。

266 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 21:59:18.17 ID:JKxfRh2i]
>>264
unique_ptrはコピー不可能だよ moveは可

>>263
ポリモーフィズムに対応していない、とは……??
ideone.com/oD6tgf

267 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 22:12:13.09 ID:bHfLv1nY]
あれ、できるようになってる・・・?
前はva[1] = std::move(b);で怒られてた気がしたんだけど

#include <memory>
#include <vector>

struct A {
int val;
A(int i):val(i){}
};

struct B : public A {
B(int i):A(i){}
};

int main()
{
std::vector<std::unique_ptr<A>> va(2);
std::unique_ptr<A> a(new A(1));
std::unique_ptr<B> b(new B(2));
va[0] = std::move(a);
va[1] = std::move(b);
for(auto& i : va) {
printf("%d\n", i->val);
}
}



268 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 22:48:49.93 ID:EdJd2yN1]
すみません
質問です

1次元配列で使用可能な要素を前に詰める関数を書きたいのですがどういう方針で行ったら良いでしょうか?
例えば
TestArray[8]があって、その関数実行後に
|○|○|×|×|○|×|○|×|

|○|○|○|○|×|×|×|×|
のようにしたいのです
どなたか良いアイデアをお持ちの方よろしくお願いします。

269 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 22:51:01.79 ID:b7Jxtx/j]
普通にソートじゃだめなん?

270 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 22:57:44.20 ID:bHfLv1nY]
安定じゃなくても良いなら
for(;;) {
前から×を探す
後から○を探す
swap
前と後ろが逆転したらbreak
}

271 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 22:58:20.10 ID:EdJd2yN1]
>>269
1フレームで10以上呼ぶつもりなので出来るだけ高速な処理をしたいんです。
値の大小が無いだけで、ソートのようなプログラムになることは理解できるんですが・・・。

272 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 22:58:32.75 ID:BTWHJeh/]
間つめたいだけじゃないの
普通に先頭から見てってつめればいんじゃない

273 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 22:59:05.57 ID:JKxfRh2i]
>>268
std::sort使って、比較関数だけ自前で書く

>>270
std::sortを薦めろや…

274 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 23:01:41.02 ID:BTWHJeh/]
ソートだとO(nlogn)になるじゃん
間つめるだけならO(n)ですむ

275 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 23:03:52.15 ID:N1OcN+jA]
今時ゲームにその程度の高速化必要か?

276 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 23:07:21.91 ID:bHfLv1nY]
そもそもなんでそんなことになるかな
途中の要素を削除するときは末尾の要素とswapしてから削除すれば良いだけだろ

277 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 23:16:25.42 ID:JKxfRh2i]
出てるのに加えて使用可能と不可能で別のスタックでも使えばいいとか、色んな方法が考えられるな

>>274
汎用のブツを使うべきだろ、高速化が必要な風にも見えんし
必要ならその時点で書きなおせばいい



278 名前:名前は開発中のものです。 mailto:sage [2012/11/16(金) 23:19:43.28 ID:EdJd2yN1]
>>272さんの言う通り普通に前から詰めます。ありがとうございました。

279 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 04:14:11.89 ID:Yvb5b4+U]
パフォーマンスを気にしたら、その分ゲームが完成から遠ざかる気がする

「できるだけ速く」ではなく、
「aaの環境でbbくらい時間がかかるが、ccくらいの時間にしたい」
が明確になるまでは、パフォーマンス気にしないほうがいんじゃね

もちろん遅すぎて論外なことをやらない、って前提ありきだけど

280 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 11:37:53.11 ID:aR98lbIK]
昔はSLGを遊ぶ場合、敵の思考モードに入るとそれだけで数分かかったものだよ

281 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 16:54:20.20 ID:WXt99mEx]
数分?

282 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 17:03:31.27 ID:N5wMv0H7]
・・・思考中デス・・・

今じゃパターン総当りでもまったく気にならないからなー
いい時代になったもんだ

283 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 21:31:41.79 ID:lAYofdVH]
処理ごとの時間を測れるライブラリみたいのつくっておけばいいのに。
そうすれば、
遅くなりそうなところが、実際は、別のところがネックだったってのが
わかるし、変に悩まなくてすむ。

284 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 21:33:12.27 ID:N5wMv0H7]
普通に計測プログラム用意したり、処理の途中に時間計測して個別に比較したりするんじゃダメなん

285 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 21:36:26.15 ID:wjcsv03f]
プロファイラぐらい使えよ

286 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 22:50:47.28 ID:4SSSv3ja]
俺のプロファイリングによるとこのスレの住人は10代から20代、もしくは30代から40代、50以上の年齢の男性あるいは女性
プログラミング自体には精通しておらず、文法を覚えている程度の初心者と思われるが、必ずしもそうとは言えない

287 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 22:53:57.31 ID:FLG+6H3e]
最近は「素人が○○することは考えにくい」って言うんじゃないのか



288 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 23:00:28.20 ID:4SSSv3ja]
これか
www.jiji.com/jc/zc?k=201210/2012101800773

バイナリからソースが外付けストレージにあったとか判るもんなのか

289 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 23:09:23.72 ID:vLrNZqQF]
何らかの形でディレクトリのパスが入ることはあるだろうけど
ストレージの種類までは記録されたりせんよ
CやDじゃないから、ぐらいの根拠だろう

290 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 23:15:36.55 ID:wjcsv03f]
>>288
自分でコンパイル後のバイナリ確認してみ?
パスは入ることもあるよ。

気になるならバイナリエディタ辺りで消せばいい。
動作に問題はない。

291 名前:名前は開発中のものです。 mailto:sage [2012/11/17(土) 23:45:04.79 ID:N5wMv0H7]
龍神録の館ですら説明してるし

292 名前:名前は開発中のものです。 mailto:sage [2012/11/18(日) 02:01:16.37 ID:a/mIzCX9]
ボタンのクラス作ったんだけど
class ButtonにDraw()関数にboolの戻り値つけて押されているか押されてないか判定するのってあり?

293 名前:名前は開発中のものです。 mailto:sage [2012/11/18(日) 03:37:14.26 ID:G8vKCtAR]
混乱するのでナシ
自分でちゃんと把握できるのなら挙動がすべてなのでどう書いてもいいが

294 名前:名前は開発中のものです。 mailto:sage [2012/11/18(日) 04:23:18.47 ID:OtH/PY93]
ありがとう。ボタンクラスが、出来た!

class Button{
POINT CoordUL,CoordDR;//右上、左上座標。
int m_nONButtonTexture;//押された時のテクスチャ番号
int m_nOFFButtonTexture;//押されてない時のテクスチャ番号
XMMATRIX m_Transform;//変形行列
public:
void Draw();//画面上に描画。
//コンストラクタ。
Button::Button(int ulX,int ulY,int drX,int drY,
int nONButtonTexture,int nOFFButtonTexture);
//押されているかどうか。
bool PushCheck(int nMousePosX,int nMouseY);
};

295 名前:名前は開発中のものです。 mailto:sage [2012/11/18(日) 04:33:06.01 ID:JhTLY1BD]
C++では多少の粗は速度でカバーする!

296 名前:名前は開発中のものです。 mailto:sage [2012/11/18(日) 09:28:38.84 ID:1KRliL9g]
まあ適当に作ってもそれなりに速度でるもんな
コードに時間かけるよりバグ出さないような
設計、書き方に気を付けた方が幸せになれる

jsでブラウザゲームとか作ってみたら遅すぎて泣けてくる

297 名前:名前は開発中のものです。 mailto:sage [2012/11/18(日) 09:42:02.13 ID:t3/vK/l2]
最近の女子小学生はブラウザゲームとか作るのか



298 名前:名前は開発中のものです。 mailto:sage [2012/11/19(月) 00:02:52.78 ID:xStQIj1y]
遅すぎると逆に萌えるなそれは。

299 名前:名前は開発中のものです。 mailto:sage [2012/11/19(月) 08:00:26.59 ID:Z7RVi5qW]
ふええ、こんなにいっぱいしょりできないよお

300 名前:名前は開発中のものです。 mailto:sage [2012/11/20(火) 05:52:27.33 ID:JIlX6vOn]
>>267
これ見てて思ったんだけど、
struct A と struct Bはそれぞれ非仮想の暗黙のデストラクタを持つじゃない。
すると std::vector<std::unique_ptr<A>> va(2) が破棄されるときには Aのデストラクタが呼ばれるよね。

#include <iostream>
#include <memory>
#include <utility>

struct A{
int val;
A(int i):val(i){};
};
struct C{ int dummy; };
struct B : private C,public A { // 多重継承を用いて vtbl の計算を複雑にする。
B(int i):A(i),C(){};
};

int main(int,char*[]){
std::unique_ptr<B> b( new B(10) );
std::cout << "\(^-^)/" << b->val << std::endl;
std::unique_ptr<A> a(nullptr);
a = std::move( b );
return 0;
}

(これは、わざと落ちるようstruct Cを入れて多重継承してみたんだけど、
問題はBのデストラクタは走らないよの部分)
暗黙のデストラクタって気にする?

301 名前:名前は開発中のものです。 mailto:sage [2012/11/20(火) 07:24:43.57 ID:JIlX6vOn]
暗黙のデストラクタって気にする?じゃ意味がつたわんないな。
多分 struct Aの定義は、割と普通にやるとおもう。
じゃあ Bを書いた時点でAを public 継承してるけどAには仮想のデストラクタが用意してないから、
B*をA*にキャストして、それをdelete したらこけるじゃん Aに仮想デストラクタを用意するように
お願いするかAの継承をあきらめてメンバで持つようにするか B*を A* にキャストして、delete
するのはだめよとココロの中でお願いするか選択肢が出てくると思うんだ。
main 書いてる最中も std::move の時点で、struct Aのデストラクタは、非仮想だから、
unique_ptr<A> の破棄時にstruct Bのデストラクタが呼ばれないなと気がつかないといけない
と思うんだけど、正直最初、自分は全部スルーしてた。
暗黙のデストラクタは非仮想であることにみんなどのあたりで気がつくように訓練してる?

302 名前:名前は開発中のものです。 mailto:sage [2012/11/20(火) 11:56:10.65 ID:Hewg6tab]
継承元になるクラスにはvirtualなデストラクタを付ける、を習慣にするしか…

303 名前:名前は開発中のものです。 mailto:sage [2012/11/20(火) 12:42:09.27 ID:/LQmBJc6]
C++ではAが継承を想定しないなら
Aを継承しないのがふつうじゃん?
トラブルを避けるためにメンバに持つ。
暗黙のデストラクタが非仮想なのはあたりまえじゃん?
訓練してるってたんに知識の問題のような。

304 名前:名前は開発中のものです。 mailto:sage [2012/11/20(火) 18:03:15.21 ID:YMT95jvg]
常に全てにvirtual付けてりゃいいんじゃね
最適化の段階で外していけばいいよ

305 名前:名前は開発中のものです。 [2012/11/21(水) 02:32:47.54 ID:O0QHrPFm]
javaかよw

306 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 08:07:42.08 ID:Sa/LjIte]
javaみたいにクラスの継承禁止って出来ないの?
と思って調べたらc++11からfinal追加されたのね

307 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 19:50:13.57 ID:i5WslLE/]
小学生の息子にアクションゲームを作ってる所だけど、背景とか音楽が難しいー。誰かファミコンぽいやつ作れる人いないかな。



308 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 20:13:31.23 ID:RN32Cd3P]
とりあえずプログラムでウィンドウを画面に出す

画像を読み込んでウィンドウに表示させる

キー入力を受け付ける処理を作る

キー入力で画像の表示位置を変えたりアニメーションさせたりする

画像表示のパターンを増やす

完成

309 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 20:56:45.03 ID:i5WslLE/]
>308
ありがとう。
一応、横スクロール、プレイヤー移動、弾発射まではできてて、今から敵とかダメージ判定とかやるつもり。音楽ないとさみしいなーとか、背景もっと森とかしたいなーとかおもってるけど、雲とかがせいぜいで、、、

310 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 21:03:39.96 ID:1xP0Jxk2]
ファミコン風背景なんざペイントでグリグリでいいんじゃないの?

311 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 21:17:48.26 ID:e4cilLWo]
>>310
素人が知ったかすんなよw

312 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 21:19:49.30 ID:1xP0Jxk2]
何が知ったかなんだよw

313 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 21:23:14.86 ID:4ruuHy6d]
>>307
えーと、質問の意味が分らないんだが。
絵や音楽を作るのが難しいと言ってるのか。
プログラムの話しどっちだ?

文体から前者にとれるんだが。前者ならスレ違い。

314 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 21:25:40.22 ID:1xP0Jxk2]
「風」って言ってるから俺は素材だと理解したわ
風でいいならスプライトや和音の仕様をプログラムで再現する意味はないし

315 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 21:25:58.45 ID:hLXHgUEm]
ファミコンはドット絵だからペイントで描くようなもんじゃないだろう

316 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 21:29:25.50 ID:4ruuHy6d]
>>315
ルーペで拡大して描くんだろwしらんけどw

317 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 21:34:52.78 ID:1xP0Jxk2]
ペイントでドット絵描いてる人は今も多いぞ
ドット絵なんてアンチエイリアス掛からないツールなら問題ないしな
それほどクオリティを求めないファミコン風なら、アンチエイリアスもかけないしペイントで十分



318 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 21:53:06.25 ID:i5WslLE/]
>313
前者です。スレ違いみたいでした。すみません。
背景が難しいていったのはマップチップ作ってそれをループで並べてるんですけど、樹木とか遺跡っぽいのが作るの難しくて。
子供が寝たから今からまた作ります。

319 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 22:32:54.29 ID:Ar9mPays]
実際にどういう絵にすればファミコンっぽくなるかが気になるなら
CG板にあるドット絵スレで質問するといいよ。
toro.2ch.net/test/read.cgi/cg/1347980328/

一応この板にもドット絵スレは幾つかあるけど、あんまり動いてない。
あと音楽は分からん。たぶん2chのどこかにチップチューンスレとかあると思う。

320 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 22:38:13.26 ID:i5WslLE/]
>319
ありがとうございます!
曲のほうはこの板の別スレで、リクエストできるスレがあったので、そちらにレスしてみました。
ドット絵は後で調べてみます。
今は、穴に落ちた時やライフゼロのときのゲームオーバーの判定実装してます。

321 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 22:41:06.45 ID:vU7vV5c8]
ファミコンっぽくしたいなら、解像度を荒くする、色数を8色以下にする、マップチップのサイズを8*8にする、くらいじゃないのかな。

322 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 22:47:05.46 ID:4ruuHy6d]
>>320
ドット絵なら素材じゃだめなんか?
素材サイト回れば一通りそろいそうだが。

323 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 23:05:03.40 ID:i5WslLE/]
>322
前にマップチップで探してみたんですけどRPG 用ぽいのが多くて、とりあえず探すのやめてました。

324 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 23:05:22.18 ID:BpQGjbQp]
マウス押された時呼ばれるコールバック関数があるのだけど、
メインループの関数内の処理によってコールバックの内容も変えたい。
どういう設計すればいいの?

325 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 23:09:17.43 ID:GbUHGBi8]
コールバック関数を設定しなおすとかすればいいんじゃね?

326 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 23:11:57.28 ID:hLXHgUEm]
int f;
main()
{
f=0;

f=1;

f=2;
}

コールバック(int f)

switch(f)


こんなんでいいんじゃないの

327 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 23:31:26.12 ID:BpQGjbQp]
>>326
やっぱりそうかー。
fに当たる変数はグローバル変数で取ってるから受け渡しは必要ないんだけどやっぱりそうなるか。
main()で配列に関数ポインタ設定して、コールバックのほうで設定されている関数ポインタ配列から自動的に呼び出しとか面倒なこと考えてた。
ありがとう。



328 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 00:45:52.42 ID:Y6G4CBGg]
敵がマップスクロールに引っ張られてくる、、
実装の仕方がまずいのかなー。プレイヤーはマップの真ん中の座標にきたらマップの描画位置をずらすようにしてる所が悪いんだろうか。

329 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 01:20:33.58 ID:ds3F2YzA]
言ってる意味がわからない。

330 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 01:45:38.18 ID:Y6G4CBGg]
画面が右にスクロールすると、左に進んでた敵の速度が遅くなってしまう。

331 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 02:56:28.36 ID:3oA0zPbz]
大きく分けて、2つの実装方法があると思う。
例えば毎フレーム5ドットずつマップスクロールすると仮定した場合、


(1)スクリーン座標
プレイヤーキャラや敵キャラの位置を、画面上の座標として保持する方式。
「カメラ」は固定のまま、「舞台」が移り変わるイメージ。演劇みたいな。

背景はスクロールするが、実質的に固定画面ゲーと同じようなデザインなゲーム向きだろうか。例えばシューティングゲーム等。

 プレイヤーキャラ: プレイヤーが操作しなければ座標は変更されない。
 敵キャラ:      通常の動作(前進や停止など)に加えて、毎フレーム5ドットずつ加算される。
 背景:         毎フレーム5ドットずつ加算される。
 カメラ:        動かさない。


(2)ワールド座標
プレイヤーキャラや敵キャラの位置を、マップ全体から見た座標として保持する方式。
「カメラ」が移動して、マップ上の各オブジェクトを映しだす。TVのマラソン中継や競馬中継みたいな。
よって、自動スクロールの場合、プレイヤーが操作しなければプレイヤーキャラも画面外に消えてしまう。
画面上に表示される位置は、(マップ上の座標)-(カメラ座標)で求められる。

広いマップを探索するようなゲーム、スクロールのタイミングや速度がプレイヤーの操作で変わるゲーム向きか。マリオ等。

 プレイヤーキャラ: プレイヤーが操作しなければ座標は変更されない。
 敵キャラ:      通常の動作(前進や停止など)による変更。
 背景:         動かさない。
 カメラ:        毎フレーム5ドットずつ加算される。


……みたいな感じ。

332 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 08:50:06.52 ID:Y6G4CBGg]
やりたいのは(2)のほうで、マリオとかみたいにプレイヤーが画面中央より左右に進もうとしたら、画面スクロールしようとしてます。
>331の内容見て、また考えてみます。

333 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 09:18:15.26 ID:3oA0zPbz]
なら、次の順番で試してみるといいかもしれない。
各オブジェクトを表示するときは、(マップ上の座標)-(カメラ座標)に表示すること。

 i.  カメラを固定してキャラを動かす。
 ii. プレイヤーの操作とは関係なく、カメラが自動的に右方向へスクロールするようにする。
 iii. プレイヤーキャラが常に画面の中央に表示されるようにカメラを動かす。
 iv. プレイヤーキャラがマップの端に居るときは、カメラが動かないようにする。

334 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 11:19:22.25 ID:RlzqnUp+]
>>328
どんなのが作りたいのかそれだけじゃわからないけど
マリオっぽのならこれが参考になるじゃねーの?

ソースも入ってるよ?ライブラリはSDLだけど
www.vector.co.jp/soft/winnt/game/se347402.html

335 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 11:50:57.17 ID:eFQjOjmf]
スクロールしたら敵ずれるって、スクロールした分敵の座標移動するの忘れてるだけじゃないのか
そんな単純な話ではないのか?

336 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 12:26:19.16 ID:3oA0zPbz]
>>334
懐かしい! この板が発祥のゲームなんだよな。

337 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 13:14:20.80 ID:YppVmW6v]
>>335
敵を移動するんじゃなくて、カメラを移動するのが王道。
ゲーム内のキャラクターはすべてワールド座標で処理すべし。



338 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 13:25:14.45 ID:eFQjOjmf]
>>337
どっちにしろ描画するときに座標変換は必要だし
カメラ移動分の座標さっぴいてやらないとずれるし
パラメータをどう持つかはともかく、処理は必要だし

339 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 14:44:38.27 ID:XkqVanxt]
>>338
カメラ座標変換マトリックスに任せておけ

340 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 15:46:56.07 ID:XgY5u7US]
>>338
描画モジュールとそれ以外のモジュールがゴチャッてなければそこで不整合は起きないだろ

341 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 18:47:04.04 ID:BilY3FWQ]
このスレってこういう初心者っぽい質問があるかと思えばたまに異次元みたいなワケわからない話が始まるし
距離感が掴みにくいな

342 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 19:35:19.32 ID:giYr9TgY]
STLのアルゴリズムを使え使えって本に書いてあったから使って見てるけどコンパイルエラーを変なところに飛ばしやがってむかつく

343 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 20:31:45.22 ID:IVKuNp4c]
STLのコンパイルエラーメッセージって分かり肉いよね

344 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 22:06:07.74 ID:44UwHnvI]
>>342
中身完全把握しとけって事だよ
言わせんな恥ずかしい

まあ現実的に考えても最低限使い方だけでも完全把握してないとデバッグすら出来ない
なんとなくで使ってるといつか痛い目を見る…っていうか今見てるのか

345 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 22:28:38.51 ID:tBmxJtaY]
初心者こそSTL使えという奴もいればこういう奴も居る
困ったもんだな

346 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 22:35:28.92 ID:44UwHnvI]
配列の代わりに使うくらいなら問題ないんだろうけどな

347 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 22:36:52.36 ID:Gl1QEKN/]
>>344
いや。
実際、STLの配列絡みのエラーの場合、エラーメッセージでなく、
むしろ自分の作業過程を思い出して、
配列やメモリを扱うロジックに思慮不足が無かったかを見直さないと、
訂正すべき個所をなかなか特定できない場合が多いぞ。

他人のコードをハックするには、当然センスが必要になってくるってことさ。
俺は、なるべく難しい問題を、なるべく自分でフルスクラッチすることが上達の早道だと思うね。
勿論、チーム制作で、未熟者にフルスクラッチされたら、たまったもんじゃないがな。



348 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 22:41:09.07 ID:F4NAJzUg]
>>337
それは状況によるんじゃないの?
俺は固定マップの時はそうやったけど、
ループマップで、自機周辺でしか当たり判定等の処理をしない、という時は敵を移動させるようにしたぞ。

349 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 22:46:01.23 ID:Y6G4CBGg]
>>333
今の処理の順序見直してみます。
今日とりあえずそこをなんとかして、形にしようと思ってます。

>>334
後でやってみます。ありがとうございます。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<178KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef