- 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/
- 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 後でやってみます。ありがとうございます。
- 350 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 23:23:16.03 ID:uWBDaITV]
- 音楽はRetro Music Editorでやってみる?
- 351 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 23:38:20.65 ID:Y6G4CBGg]
- >>350
インストールして適当に再生してみました。 ファミコンっぽい音が出るwww ゲームの基本的な流れが出来たら、こっちも触ってみようかな。
- 352 名前:名前は開発中のものです。 mailto:sage [2012/11/22(木) 23:50:53.87 ID:Y6G4CBGg]
- すみません。(マップ上の座標)-(カメラ座標)というのはどんなイメージになるんでしょうか。
今、 // マップを描く for( int i = 0 ; i < MAP_DRAW_HEIGHT ; i ++ ) { for( int j = 0 ; j < MAP_DRAW_WIDTH ; j ++ ) { DrawGraph(j * MAP_SIZE + (mapMoveCnt) , i * MAP_SIZE , map[Map1_Data[i][j]] , true); } } って感じでマップ描画してます(DXライブラリ使ってます) mapMoveCntっていうのがマップの描画位置をずらす為に使ってて、 プレイヤーが画面中央に居る且つ、左右に移動した時にmapMoveCntを加減算してました。 これでスクロールをしてたんですけど、カメラを移動するってことはマップを描画する位置をずらすってことでしょうか??
- 353 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 00:13:57.43 ID:cFXLUjPO]
- うーんと
そもそも、それ2Dのマップ表示のコード(それもチップ?)だよね? となるとカメラなんて使ってないでしょ。 >>331 で言うと(1)スクリーン座標 悪いこと言わないから >>334 のソースDLして研究してみ ライブラリはSDLだけどDXLIBを2Dで使うならやることは同じだから。
- 354 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 00:16:00.60 ID:GjI1Zcmz]
- >>352
だね。カメラが移動するってことは、見た目の位置がずれるってこと。 挙げられたソースだと、その mapMoveCnt がまさにカメラの座標に相当すると思う。 正確にいえば、そこに-1を掛けた値だけど。 まあ、単に減算するか、正負反転したものを加算するかだけの違いなので、やってることは同じ。 で、マップチップ以外のもの、「カメラ」が撮影する「舞台」上もの全てに、そのカメラ座標を減算する。 こうすれば、「カメラ」の位置に関わらず、各オブジェクトが画面上あるいは画面外を自由に動くことになる。 ここまで(>333の2番3番に相当)出来れば、あとはカメラをどう動かすかだけの話なので、 問題点をかなり絞り込めるはず。
- 355 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 00:16:21.06 ID:GZw5dyQ6]
- >>353
あ、カメラって3Dでのことなんですね。すみません。 >>334で書いてたのを今からDLしてソース見てみます。
- 356 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 00:17:01.41 ID:GjI1Zcmz]
- >>353
擬似的な「カメラ」と、3Dにおけるカメラをごっちゃにしてる
- 357 名前:356 mailto:sage [2012/11/23(金) 00:18:57.78 ID:GjI1Zcmz]
- 失敬、擬似的というよりは概念としてのカメラと言ったほうが正しいな
- 358 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 00:28:34.06 ID:cFXLUjPO]
- >>355
まあ、がんばって、昨日のお子さんに作ってる人かね。 >>356 どっちでもいいよ。 カメラ固定なんだからあまりカメラのことは考えなくていいと思う。 DirectXやOpenGL直に打つなら話は違うけど。 DXLIBを2Dで使うんだし。その辺はDXLIBがくるんでるっしょ。
- 359 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 00:42:30.97 ID:GjI1Zcmz]
- いやだから、何故3Dにおけるカメラの話を持ち出すのか
- 360 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 01:09:13.45 ID:yOOti4xC]
- >>359
普通は概念だろうがなんだろうが それをカメラって呼ばないしどうでもいい
- 361 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 01:14:50.46 ID:Tfq3xGkn]
- いやカメラって呼ぶだろ
- 362 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 02:09:55.26 ID:GZw5dyQ6]
- >>358
そうです。今、モナーアクションゲームのソース見てます。 今日はこれ見て理解するだけで終わっちゃいそう、、、。 また明日の夜頑張ります。こうして質問に答えてくれる人がいるだけでも モチベーションが違うきがします。>>354さんもありがとうございます。
- 363 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 05:17:34.40 ID:tAm612YR]
- ワールド座標からスクリーン座標に変換するロジック → カメラ
- 364 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 06:41:13.52 ID:hefSCrq5]
- キャラクターの位置を( X , Y )とする。(ワールド座標)
カメラの位置を( CX , CY )とする。 そうすると表示する位置は( X - CX , Y - CY )となる。(スクリーン座標) カメラの位置が( 0 , 0 )の時はワールド座標どおりの位置に表示されるが、 カメラが右に1ずれる( 1 , 0 ) とキャラクターは1左にずれて表示される。 キャラもマップも同じようにしてあれば、カメラ次第でマップのどこでも自由に表示できるようになる。 って事だよね。
- 365 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 06:57:02.76 ID:74NPTa8/]
- 平行移動だけじゃなくて回転やスケーリングやせん断やもうなんでもできるよ!
- 366 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 09:58:16.44 ID:mO6j71re]
- 移動、回転、拡縮は行列で出きるとして、せん断ってどういうロジックになるんだ?
- 367 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 10:17:08.64 ID:74NPTa8/]
- 普通に行列でできるよ!
基底ベクトルを直交させなければ良いだけだ! 1.0 0.1 0.0 0.0 1.0 0.0 0.0 0.0 1.0
- 368 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 10:25:37.76 ID:mO6j71re]
- >>367
なるほど
- 369 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 11:01:21.96 ID:/1tfeEwj]
- 「せん断」って何?
- 370 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 11:05:08.54 ID:74NPTa8/]
- 長方形が平行四辺形になるような変形のことだよ!
- 371 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 11:10:02.01 ID:6nCMYav3]
- 底の無いダンボールってのはわかりやすい例だよな
- 372 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 11:57:56.24 ID:GjI1Zcmz]
- シアーの方が通じる気がする
- 373 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 13:59:35.40 ID:cFXLUjPO]
- カメラだの行列だの無かったころのゲームだから
その方が理解しやすいよって言ってるだけだよ。 まあ、最初からカメラありきで学んだ人はむしろ理解し辛いのか?
- 374 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 14:06:05.85 ID:cFXLUjPO]
- >>364
ていうかさぁ。 >>352 のソースみてあげなよDXLIBのDrawGraphってそんな概念関係ないよ。 ただのスクリーン座標に絵を置いてるだけ。
- 375 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 14:19:41.95 ID:cFXLUjPO]
- >>360
呼ぶんじゃないの、マの概念なんてみんなバラバラだからね。 そう呼んでる人にはそっちが常識なんだよ。 マ系やプログラム系の板で同じことを言ってるのに 使ってる言葉が違って議論がループなんてザラ この場合も多分、みんな言いたいことは同じなんだよ。 言葉が違うだけだと思うよ。
- 376 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 14:53:44.50 ID:GjI1Zcmz]
- >>373
マリオみたいに広いマップを探索するようなゲームだと スクリーン座標ベースの管理は面倒くさそうだけどなー。 実際、黎明期のPGがどういう考え方で組んでいたかどうかまでは知らないけど。
- 377 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 15:00:51.05 ID:GjI1Zcmz]
- あ、ちなみに自分は
www.tamaweb.or.jp/jinzai/071.html この右側にあるレールカメラ(って言うらしい)のイメージで言ってた。
- 378 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 15:48:41.51 ID:cFXLUjPO]
- >>377
なるほど。理解したわ。ちょっと長文になるが。 俺のような古い頃を知ってるマに言わせると、昔のファミコンやスーパーファミコンの頃の スーパーマリオのようなゲームの、ただのスクロールの実装にカメラとか言いだす方が違和感を感じるんだよ。 すまんな。 あえて、昔の言葉を使えばBG(バックグラウンド)とSpriteが分れば実装できるんだから。 ↓DXLIBのこの例も同じようなもの homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N4 ファミコンなら hp.vector.co.jp/authors/VA042397/nes/ppu.html こんな感じか?ちょっと違うけど。流石にネットにもその辺のテクニックは載ってないわ古過ぎてw (説明し辛いな。文章じゃ無理だわ) 勘違いしないでほしいのは 今のDirectXやOpenGLの世界ではカメラがないと話しにならないのは知ってるよ。 その辺の3D,2Dゲームも作ってるしな。 関係ないが。 VRAMの定義で、それぞれのマが別々のVRAMの概念を言いだして 話がなんだかわからない方向に行ったのを思い出した。 一人は上記のBGやSPRITEのVRAM 一人はPC98やX68Kの頃のパソコンのVRAM 一人はテクスチャやフレームバッファやZバッファ等の載る今のVRAM そりゃ、話がかみ合うわけがないw 何にしても、>352さんのゲームが完成することを祈るよ。お子さんの為にもな。
- 379 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 16:22:34.51 ID:tVuXwvMy]
- スクリーン座標とビュー座標と呼べば良かったのかな?
と混ぜっかえしてみる
- 380 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 16:23:41.72 ID:GjI1Zcmz]
- >>378
なるほど、だから>353の時点でスクリーン座標と言ってたのか。 内部的にはワールド座標ベースで考えて、それを表示用に落とすって考え方自体は 3D以前からあるようには思うけれどね。
- 381 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 16:37:47.36 ID:hefSCrq5]
- スーパーマリオみたいな一方通行で逆進できないシステムならワールド座標はいらないかもね。
- 382 名前:名前は開発中のものです。 [2012/11/23(金) 16:52:57.32 ID:X3Az5vp2]
- 引き算するだけだからPCの性能とか関係ないよw
- 383 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 17:34:11.98 ID:tvkINjeP]
- N88BASICですらビューポートの概念あるよ
floatの場合無茶な拡大させると誤差の蓄積が問題になることがあるからその場合は原点近くで処理したいけど
- 384 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 18:17:22.09 ID:tVuXwvMy]
- >>382
ワールド座標はマッブが広大になるとメモリーを消費するから、昔のマシンだと厳しいだろ メモリー1バイトは血の一滴に比例すると言われていた時代もあるし
- 385 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 18:37:49.31 ID:GjI1Zcmz]
- >>384
ああ。 画面に映ってるかどうか関係なく処理できるメリットを活かしにくいとか、 画面内だけなら符合なし1バイトで座標を保持できるけど、全体を考えると2バイトくらい必要になるとか?
- 386 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 18:57:47.92 ID:tVuXwvMy]
- >>385
ああなるほど。 マッブはタイル表示するものだとばっかり考えていたから、その発想は無かったわ。
- 387 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 19:54:39.19 ID:cFXLUjPO]
- >>383
そんなもんあったっけ?ってぐぐったらあったようだなw 30年近く前でまったく覚えてないわ。 あの頃、アクションゲームっていうと機械語オンリーだったのもあるけど。 BASICねー。なつかしいけど。インタープリタで8,16BITじゃ遅すぎるもんな。 シミュレーションや くそ遅っそいRPGとかかね。 コンパイラもあったみただけど。使ったこともないわ。 あの頃のコンパイラの吐くコードなんて使いものにならなかったしw
- 388 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 19:59:07.69 ID:MSqNZyrV]
- お前らいったいいくつなんだよ…
- 389 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 20:22:07.11 ID:GjI1Zcmz]
- 0xを付けておきたいお年頃かな
- 390 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 20:29:01.83 ID:cFXLUjPO]
- >>389
そうそう、その辺はおさっし。
- 391 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 20:45:11.38 ID:6nCMYav3]
- 現場とか経験したことないとビット積意識する列挙体くらいでしか0x表記したことないな
- 392 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 21:03:14.64 ID:tVuXwvMy]
- フラグ処理で0x表記しまくりですが?
#defineで隠れてはいるケド
- 393 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 21:26:47.76 ID:e2eqPIhq]
- ピチピチの0x20歳です!
- 394 名前:名前は開発中のものです。 mailto:sage [2012/11/23(金) 21:27:22.68 ID:Tfq3xGkn]
- ゲーム作ってるなら色管理で0x表記はたまにやるはず
|

|