11/04/03 21:17:09.28 wtGWHPRo.net
で、マップスクロールについて考えていたんですけど
URLリンク(d.hatena.ne.jp)
上記のサイトのRPGの項目にあるような、マップ全体を裏画面に描画して
そこから表示画面分だけ切り出すという方法が結構検索していると
見つかるのに驚いたわけです
これって結構スタンダードな方法なのかな?
いくらメモリを気にしなくてもいいPC環境とはいえ、マップ全体を描画って
あり得るのだろうか、少なくとも市販作品では無いような気がする
874: ◆MBbNHCnf2M
11/04/03 21:23:57.58 wtGWHPRo.net
昔はマップスクロールというと、RPG作成において一番の難所で
これが出来たらもうRPGは出来たも同然というような感じだった
特に私が使っていたMSXなんかだと、ハードウェアスクロール機能が
縦方向しかなかったので、1ドットスクロールは厳しかった
本当に最初の頃は、レイヤという概念も無くて(知らなかっただけかも)
そもそもレイヤをいくつも重ね合わせられるほどの処理速度もメモリも無かった
875:名前は開発中のものです。
11/04/03 21:27:16.75 /2gPwasz.net
昔とかどうでもいい話してないでDirectX使えよ。
無理ならDXライブラリでも使え
876: ◆MBbNHCnf2M
11/04/03 21:32:21.82 wtGWHPRo.net
そこで、どういう風にマップスクロールを実装していたかと言うと
裏画面に表示画面より、縦・横共にマップチップ1個分大きいマップを描画し
そこから1ドットずつずらしてコピーするという方法だった
ページフリッピングも出来ないわけではなかったけど、VRAM容量を考えると
そんなもったいない方法は許されなかった
今でも縦・横でマップチップ一個分だけの裏画面からコピーするのが
定番だと思っていたけれど、マップ全体からコピーするという方法が
多く見つかるというのは、そっちの方が定番のかな
877:名前は開発中のものです。
11/04/03 21:34:32.01 t0UP3s0y.net
>>873
256*256のマップだけで256MB消費ってのは普通じゃないと思う
878: ◆MBbNHCnf2M
11/04/03 22:04:18.84 wtGWHPRo.net
>>877
そうですか、やはり普通じゃないのか
説明しやすいからそうしているのが多いのかな
今考えている方法は
用意すべき画面
1. 表示画面分の表・裏のサーフェイス(DirectX初期標準)
2. 最終的に合成する画面、ここから1ドットずつすらして裏サーフェイスにコピー
(表示画面より縦・横1チップだけ大きい画面を確保)
3. レイヤを3つ使うとして、各レイヤ分の裏画面(これも表示画面より1チップ分だけ大きい)
4. マップチップ・キャラやNPC等のグラフィック
処理
1. まず、方向キーが押されたら、3の各レイヤ用の画面にマップ描画
2. 最下層のレイヤ分を2に画面にコピー
3. 最下層上にいるキャラクタ・NPCを2に描画
4. 2-3をレイヤ分処理
5. 2の画面から1の裏画面にコピーして裏画面を表に
6. 2-5までを1ドットずらして1チップ分処理
無駄がありそうだけれど、これでいけそうな気がする
でもテクスチャって座標指定でコピーできないから
1ドットずつコピーするのが難しそうな気が
もっとテクスチャについて勉強する必要がありそう
879:名前は開発中のものです。
11/04/03 22:06:51.98 /2gPwasz.net
あのさ?座標にマイナスを指定できるの知ってる?
880: ◆MBbNHCnf2M
11/04/03 22:36:46.84 wtGWHPRo.net
>>879
失礼、連続で5回以上書き込めないようで
テクスチャ座標に負の値が使えるのは知ってます
それをどこに使うんですか?
まだ勉強中なので教えてください
881:名前は開発中のものです。
11/04/03 23:07:20.50 mqRgK4Gz.net
あなたの文章を読んでいて思ったのだが。
まさか、一枚のテクスチャに複数のレイヤーを重ねて最終的に
画面に描画しようとしている?
DirectXのバージョンをいくつ使うか知らないけど
いくらなんでも概念が古すぎるよ。
(DirectDrawとか使おうとしてる?)
WindiwsXPターゲットのDirectX9ならポリゴンまたはスプライト使えば解決できることを
わざわざ難しい方法でやろうとしているように見える。
ここで説明するのは無理があるからいくつかサイトのURL貼っとく
DirectX8の解説サイト
URLリンク(rina.jpn.ph)
Microsoft本家のゲームプログラミング入門資料(数学の知識必須)
URLリンク(msdn.microsoft.com)
まさかとは思うがDirectX7ならこの辺り
URLリンク(rina.jpn.ph)
入門者ならDirectXと言わずDXライブラリを使うのもありだと思う。
DXライブラリを使った解説サイト
URLリンク(dixq.net)
あと、ネットの情報は色々不足な部分や整理されていないから
一冊、入門書を買うことをお勧めする。
882:879
11/04/03 23:08:21.00 mqRgK4Gz.net
あれID変ったw
883: ◆MBbNHCnf2M
11/04/03 23:49:00.27 wtGWHPRo.net
全然連続で書き込めない、この板人が少な過ぎるのか・・・
>>881
DirectX 9.0c でやろうと思ってます
つまり、DirectDrawでなくて、DirectX Graphicsですね
そのサイトも読んだんですけど、多分ポリゴンにテクスチャに貼り付けて
2Dの処理をするのがよく理解できてないんですね
特にテクスチャの扱いが多分よく分かってないので、勉強しときます
ポリゴンに単純にテクスチャ貼るところまでは理解できてる(と思う)んですが
884:名前は開発中のものです。
11/04/04 00:57:26.26 EfnOmkqq.net
だったら素直にD3DXのSprite使えばいいよ
表示範囲内のタイルを毎フレーム全て描画しなおせばいいだけ
一見効率悪そうだけど>>878よりは遥かに効率が良い
885:名前は開発中のものです。
11/04/04 01:16:24.28 EfnOmkqq.net
一つのレイヤ内で使われるタイルを一つの大きなテクスチャにまとめておいて
レイヤ全体を一つの図形とみなしてテクスチャ座標でマッピングするのが
多分一番速くて効率の良い方法
スプライトはそれと同じようなことを自動でやってくれるから
毎フレーム大量の描画を行ってもわりと速い
886:名前は開発中のものです。
11/04/23 16:35:48.28 CvPk8hGJ.net
ゲーム制作メンバーを募集しています。
スレリンク(ff板)l50
URLリンク(www31.atwiki.jp)
・最近のFFが嫌い
・昔のFFが好き
どちらかに当てはまれば誰でも結構です。
昔ながらのFFをみんなで作りましょう。
887:名前は開発中のものです。
11/04/28 16:06:00.10 odTXZLNY.net
募集要項の大雑把さにフイタ
888: 忍法帖【Lv=18,xxxPT】
11/05/05 11:29:11.77 Zs6VE70C.net
うん?
889:名前は開発中のものです。
11/07/08 21:16:59.44 nxuNDnA1.net
マップ画面から事ある事に戦闘画面に行くよくあるRPGを作ろうと思うんだけど、
戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの?
それともデータ保存してマップ画面終了してから戦闘画面に行くもんなの?
作る時は前者が楽だけど、メモリがちょっと心配。
890:名前は開発中のものです。
11/07/08 21:29:25.17 TDxk0CvB.net
メッセージループ内でシーン分岐
891:名前は開発中のものです。
11/07/08 21:34:45.63 nxuNDnA1.net
ああ、やっぱそれか……ありがとう。
892:名前は開発中のものです。
11/07/13 17:30:26.96 7GbeQNs3.net
> それともデータ保存してマップ画面終了してから戦闘画面に行くもんなの?
毎回状態を記憶した一時セーブデータみたいなの書き出して読み込んで、
オブジェクトの生成と破棄とリソースの読み込みと開放してまた再現するって事?
その処理を作ってテストするのが大変そうだなぁ…
所謂普通のセーブデータと共用できればマシそうだけど…
仕様にもよるけど、マップ画面でのbgmを元の位置から再生したい時とかも少し面倒だね。
イベントなんかの途中で戦闘が始まるようなのは復元するの大変そうだなぁ…
どんなゲームなのか判らないから一概には言えないけど、
メモリなんてせいぜい該当マップで利用する敵グラや音のリソースが+されるだけなんだし、
そこまで気にする程でも無いような。
昨今のPC事情で考えたらCPUやメモリの容量は異常だよね。
10万満たない簡素なPCでも凄い積んでる。
ところがHDアクセスはまだまだ遅いんだよね。
だから前者でいいんでね?
> 戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの?
↓
> メッセージループ内でシーン分岐
要するにマップ画面に戦闘画面への遷移を固定化するコードを持たさないで部品化した方がいいよねって話かと。
方法はいろいろあって、FSM(有限オートマトン)やstateパターンでシーン単位で切り替えるのが有名だけど、
遷移を管理する側にごちゃごちゃさせたくないなら、マップと戦闘を保持したクラスを用意してやれば済む話だよね。
つーか別に仕様が完全固定化されてるなら戦闘からマップ直接呼んでもいいと思うよ。
あの手の技法なんて納期とか変更とかに厳しい世界の人たちが使ってる苦肉の策なんだしw
難しい事や汎用的な事は手段であって、それが目的化するよりはゲームが動くほうがいいよね。
それからこれも仕様によるけど、
所謂シーン単位での完全切り替えだとマップの上に戦闘を描くスタイルできないけどいいの?
あとエンカウントのアニメーションなんか必要な場合、マップ画面側にその処理だけが残るとかキモクない?
893:名前は開発中のものです。
11/07/14 16:32:39.19 0xB3ByY3.net
ふぅ…
894:名前は開発中のものです。
11/12/06 13:22:55.40 oDkZLgbY.net
あげ
895:名前は開発中のものです。
12/03/26 23:19:50.12 q+Fv8Yng.net
>>889
グラフィック関連はさすがに解放すると思う
でもドラクエみたいな2Dロープレなら何をどう作ってもメモリ不足なんてありえない
もう1つの質問の意図はマップ画面の下位に戦闘画面が来るか
それともマップ画面と戦闘画面を同じ立場において別途切り替える機構を作るかっていう問題だと思うけど
何らかのイベントやミニゲームなどで戦闘シーンを使う場合に上下関係が密接に関係してると
後で再利用しづらいのにで戦闘画面は独立させておいたほうがいいと思う。
896:名前は開発中のものです。
12/05/10 12:17:40.31 CvbrCj71.net
FFよりダンマスみたいなの作ってよ
いっとくけどMSX版の方じゃないよw
897:名前は開発中のものです。
12/08/23 21:04:32.49 8Fyjiw0F.net
MSXのダンジョンマスターをオンライン対応でリメイクして欲しいけど
スレ違いだし他力本願だねw
898:名前は開発中のものです。
12/09/07 19:10:16.76 M4WerZHY.net
あげ
899:名前は開発中のものです。
12/09/16 21:05:26.04 3z6vfuIt.net
ダンマスならRTC版じゃいかんのか?
900:あずにゃん ◆PaaSYgVvtw
12/11/29 18:47:56.93 T/exNI7l.net
c始めたばかりなのですが質問です。
tp//codepad.org/WsNDfYIs
これをビルドしたら実行結果が
a = 1
&a = 18ff44
*pa = 1
&pa = 18ff3c
b = 1
と表示されたんですが&aと&paが何故こう表示されるのか分かりません
16進数で表示される事は分かるんですが
printf("&pa = %04x\n",&pa);
実行結果が18ff3c
これが特に分かりません^^;
数学的に考えるとpa=&a;でアドレスがaに代入されるからaの16進数表示に
ならないんですか?
仕組みはよく分からなくてどなたか教えて下さい。
まずは基礎から勉強してるので宜しくです。
まずはcからなのでc+はまだ先のことですが^^;
ゲ制作も遠い道のりです。。。
901:名前は開発中のものです。
12/11/29 19:15:49.60 f6gZcj+t.net
paのアドレスじゃん
902:名前は開発中のものです。
12/12/01 19:58:04.77 CrVsmJCK.net
>>900
codepad.org/qZh2vLXf
903:名前は開発中のものです。
12/12/01 20:18:25.61 CrVsmJCK.net
>>900
ごめん、やっぱこっちで
codepad.org/UB5JFPnU
904:名前は開発中のものです。
12/12/28 09:37:26.68 8KDAkRIs.net
ズルするならマップでエンカウント直前のスクリーンを保持しておいて、戦闘画面の背景にあてれば出来るね。
動くマップチップで戦闘中も動かしたいなら見えてる部分をきちんとしたデータで渡して戦闘シーンで再構築しないといけないけどたぶん難しくないか。
やっぱマップと戦闘だと載せるUI違うから分けた方が見やすくなるんじゃないかと思ってる。
背景がマップだと戦闘場面が戦闘UIという意識でマップにのっかってるって感覚が強くなりそうだから一緒に書くのが自然に思えなくもないけど、
ほかのシーンは分けてるのにマップと戦闘はくっついてるというのは汎用的ではないような気がする。
でも面倒になったら分けない。
905:名前は開発中のものです。
15/10/16 10:06:10.59 c5lx3m67.net
>>1は消息不明?
DXライブラリだけど
俺もアクション、シューティングと何作か作って来たので
そろそろRPG作ってみたいんだけど、
膨大になるゲーム中の台詞を合理的に管理する方法が思い付かないんだよね。
それが解決するなら重い腰あげられそうなんだけど。。
906:名前は開発中のものです。
15/10/23 21:15:34.15 yK+GV+yo.net
あえて一度ツクールなりウディタなり触ってみればいい
907:名前は開発中のものです。
17/01/31 20:51:48.28 D6yECHIX.net
age