hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
横スクロール型ゲーム/マップフォーマット - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

横スクロール型ゲーム

マップのデータフォーマットや、使用するチップの性質などをまとめみましょう。

マップのデータフォーマット

マップのデータはスクリプト中に直接埋め込む方式ではなく、データを別のファイルに用意する方式を採用します。
ファイル形式:テキスト
ファイル形式は実際に使用する時だけバイナリに変換して使用するという方法も考えられるが、作成中はテキストのほうが作業効率が良い。

データファイルの読み込み・書き込み

チップやステージのデータの保存、読み込みについてです。
読み込みのみ

  • CSVファイルを使用しただけのサンプルです。とりあえず今回は拡張性などは考えずに作っています。あとで修正しときます。 --GENKI?
    基礎フォルダ20060222.lzhで解凍したファイルに上書きして使用してください。(stage00.hspとstage01.hspを上書きします。)
  • ファイルの読み込みはモジュール化してやれば、ゲーム本体やマップエディタ本体を作るときには特に気にする必要はないでしょう。
    少々パラメータが増減したり変更になっても大丈夫なように組んでおいたほうがよさそうです。 -- GENKI?
  • とりあえずできました。基礎フォルダ20060222.lzhで解凍したファイルに上書きして使用してください。 -- GENKI? 2006-03-04 (土) 00:10:00
    「ステージごとの要素」は今回は時間の都合上保留してあります。またこんど付け足します。

読み込み・書き込み
基礎フォルダ20060222.lzhで解凍したファイルに上書きして使用してください。

  • 基本的に案2です。stage00_3.zipのスクリプトを整理して保存機能がついたぐらいの感じです。map blockは機能を凍結しています。(ある意味バージョンダウン?(笑)) -- GENKI? 2006-03-12 (日) 23:00:00
  • 案2ベースの#ref(stage00_5.zip)のバージョンアップ版です。
    ステージファイルが強化され、map blockの復活やコメントが付けられるようになっています。ブロック区切り文字列を大文字小文字で 区別しないようにしました。stage00_5.zipは消したほうがいいかな…。 -- GENKI? 2006-03-18 (土) 20:46:00

データ書式

※未決定事項です。案があれば提示してください。
CSV形式(カンマ区切り) 基本案

  • 案1 …ボツ案。1つのファイルにチップの定義とステージの定義を保存する。メンテナンス性やデバッグの面からみても案2のほうがよいため没。
    +  案1のフォーマット
  • 案2 … チップの定義とフィールド(←MAPの情報を含んでいる)の定義を別々のファイルに分ける。各チップの情報は全ステージで共通の場合がほとんどのため。
    チップ情報定義Fileは全ステージで共用(ステージによっては未使用になるチップも全部登録する)、基本的に1つあれば十分。ステージ定義ファイルはステージ1つにつき1つ作成する。
    たとえば100ステージのゲームを作ったとすると、ステージ定義ファイルは100個、チップ定義ファイルは1個、合計101個となる。
    +  案2:チップ情報定義File
    +  案2:ステージ定義File
  • 案3 …プログラム中で使用している配列変数のまま、そのままの形で保存。そのまんまなので入出力部分の作成が楽。
    ステージエディタ必須。
    +  案3のフォーマット


  • 現在(2006/3/1現在)は案2の読み取りモジュールを作成中。
    単なる保存形式だけの話なのでゲームスクリプトの本体部分には影響ないと思います。こちらのことは一切気にせずに作っててください。
    保存フォーマットはゲーム本体の仕様にあわせてあとから変更すればすむことなので。 -- GENKI?
  • 言い忘れがひとつ。「各チップの初期位置」をマップの形状そのままに記述できる形にしていますが、モジュールを仲介してファイルを読み込んだ後は(x,y)座標に換算して変数に出力する予定。
    縦何個目の横何個目だからx,y座標に換算すると…という計算は気にしなくていいです。…そういう予定。今作ってます。-- GENKI?
  • ファイルの読み込みサンプル(stage00_3.zip)できました。細部が異なりますが大筋は案2のままです。x,y座標への換算も自動で行うので、ほぼ今までどおりの感覚で使用できると思います。 -- GENKI? 2006-03-04 (土) 00:15:32


案2
 せっかく案2でモジュール作ったのでもう少し掘り下げてみます。
 ステージ定義ファイルのフォーマットは基本的にブロックで分けていくつかの書式を使い分ける構造になっています。
「pos block」とか「map block」ですね。ブロックの終わりは別のブロックの始まりかファイルの終わりです。
 ちなみに「pos block」と「map block」の使い分けはというと、結局は内部で同じ書式(xy座標)に変換されて返されるので同じこと。 なので、どっちでも使いやすい方を使ってok。ちゃんとブロックで区切ればまぜて使ってもok。マップだからといってmap blockを使う必要はない。

このブロックについてもうちょっと機能強化したほうがよさそうなので考察を記述。

ブロック名省略形機能説明
pos blockPOS BK一番細かく指定できる書式。
xy座標を直接入力する。
map blockMAP BK手書き向きの書式。
見た目と同じ配置で記述する。手作業での手軽な変更と確認が出来る。
マップの配置には向くが細かい座標指定が出来ない。
comment blockCMT BKコメント。
コメントの記述が出来る。
mapediter block(仮)未実装。
マップエディタ向きの書式。
何マス目にあるかで指定する。細かい座標指定が出来ない。保存が容易?
タイル上に並べるのはマップエディタ上で管理すべきかな?チップサイズで割れば何マス目に位置するかはわかるし。ということでこの機能は搭載見送り。
stage prm(仮)未実装。
ステージ独自のパラメータ。
重力の大きさや摩擦などを指定したり、ステージクリアのボーナス得点を記述するなどが考えられる。文字列も扱えるようにすべきかな?

さて、どこまで実装できるのか。というかドコまで実装する意味があるのかないのか…。

マップチップの種類と性質

  • 地面:地面として使用。
  • ブロック:壁や床として使用。
  • アイテムブロック:アイテム出現。

マップデータ作成ソフト

スクリプトのページにnaznyarkさんが作った物があります。
また、基礎フォルダにもステージエディタがupされています。

コメント

  • 定義ファイルの作成をミスっているのか、ブロックの動きがオリジナル状態と一致しません。うーんなんでだろう…。 -- GENKI? 2006-03-04 (土) 12:24:26
  • またまたプチお久しぶり&こんにちは。ブロックの動きということはzokuseiですね。ところでstage00_2.zipに付いているcsv形式の方が良いと思うのです。案2のステージ定義ファイルはよく使うチップを書いておく感じですが、それはステージエディタでした方が良いと思います。位置しか違わないチップデータがたくさんあってファイルサイズが大きくなっても気にしなくて良いと思います。stage00_2.zipに付いているcsv形式にステージの要素(重力やステージの長さなど)を付け加えたものが良いと思います。 -- パタパタ大王 2006-03-04 (土) 13:15:08
  • ファイルサイズは大した問題ではありません。stage00_2.zipに付いているようなごっちゃにした構造はバグの原因になりますよ。同じデータを再利用することでバグの個所の特定も容易になりますし、またステージエディタ開発時のデバッグにも有効です。 -- GENKI? 2006-03-04 (土) 15:47:20
  • 基礎フォルダ20060222.lzhって配列変数に登録されている順番に依存するプログラムになっていませんか?#ref(../マップフォーマット/stage00_3.zip)を上書きした後に#ref(../マップフォーマット/stage00_3_1.zip)を上書きしてみてください。ステージ定義ファイルを調整して配列に登録される順番がオリジナルとほぼ同じになるようにしてあります。 -- GENKI? 2006-03-04 (土) 16:07:39
  • 左のブロックに当たってもブロックが動きませんね。他のキャラクターも一人分ならめり込まないですし。配列変数に登録されている順番に依存していないってことですか?素晴らしいですね。仕組みがわからなかったので解説してもらえると助かります。
    map block欄ですが、それだと32*32単位でしか位置を決められないですよね。自由に配置できた方が良いと思います。マップだけが数字でマップの形を表している利点が見出せません。pos block欄にマップチップの位置も一緒にした方が良いと思います。あと引っかかるのはひとつのステージにファイルがふたつということです。是非ひとつにして欲しいです。 -- パタパタ大王 2006-03-04 (土) 17:34:25
  • それとステージデータをセーブする場合に案2だと大変そうなんですがどうなのでしょうか? -- パタパタ大王 2006-03-04 (土) 17:40:04
  • 一日旅してきました…疲れた。(雑談さておき)stage00_3_1.zipの上書きでオリジナルのものと同じ動きになってると思います。ブロックも動かせるし…。最初はcsvファイル作ったときにミスったのかな?と思ったのですが、この現象を確認してもしやと思い聞いてみました。パタパタ大王さんのスクリプト見て行ってるわけじゃないので確信はないです。(^ ^;)あとで自分のモジュールも含めて問題個所探してみます。 -- GENKI? 2006-03-05 (日) 21:31:27
    • ギブです。分かりませんでした。オリジナルのstage00.hspでも、人物のパラメータ入力(配列変数prmへの入力)をマップチップより前に持ってくればブロックが動かせない現象は一応確認できるんですが…(×_×;)難しいです。個人的に執着しすぎて前に進めなくなってきたのでここら辺で諦め。 -- GENKI? 2006-03-09 (木) 23:13:41
    • むしろ案3をバイナリで(テキストでもどっちでもいいけど)保存したほうがいいのかも、とか思いはじめる今日この頃です。 -- GENKI? 2006-03-09 (木) 23:19:41
  • 32*32でしか位置を決められないのはそういう仕様です。naznyarkさんのマップエディタのような使い方をするイメージでデータ構造を決めています。作ったイメージをそのままファイルにするのでマップエディタ等の作成時のデバックには向いています。目で直接見て分かりにくいものはミスが発見しにくいものです。またpos blockにマップ全部を指定しても問題なし…あ、モジュール内で確保してる配列の数をもう少し大きくしなきゃいけないか。適当に指定したからなぁ…その他の問題はないですよ。 -- GENKI? 2006-03-05 (日) 21:32:27
  • 1ステージにファイル2つと言われると100ステージにファイル200コと誤解されそうなので言っておきますと、実際は100ステージにファイル101コって感じになります。チップデータファイルは全ステージで共通して使用します。あるステージでは登場しない場合のあるチップもチップデータファイルに登録することになります。チップとステージの定義を分割することでエラー個所の発見のしやすさ、メンテナンスのしやすさを考慮してみました。また、全ステージを1個のファイルにまとめるって事も出来ないことはないんですが、同じくエラー個所の発見のしやすさ、メンテナンスのしやすさで1ステージずつの分割を考えています。ファイルが増えてもpackfileで実行形式ファイルにパックすれば見た目もokかなと。 -- GENKI? 2006-03-05 (日) 21:36:13
  • 難しいってmap blockの形式への変換でしょうか?32で割って何マス目かって調べるだけじゃダメ…なのかな?(←実際にはやってないので分からない。) -- GENKI? 2006-03-05 (日) 21:40:01
  • うん、長くなってしまいました…すみませぬ。それでも使いにくいのなら却下してもokですよ。どの方法がベストかは私には分かりませんから。それに私自身何かを見落としているのかもしれないので、他にももっと意見がほしいのですが。(-_-; -- GENKI? 2006-03-05 (日) 21:49:07
  • あ、でもモジュールはcsvファイルからの読み取り部分ぐらいには多少参考になる…かな。たぶん。 -- GENKI? 2006-03-05 (日) 21:49:49
  • プチお久しぶりです。100ステージにファイル101コなんですね。誤解していました。良いですね。ステージエディタのtemplateとしても使いましょう。
    セーブする場合に大変そうと思ったのはステージファイルではなかったです。チップ情報定義Fileでした。わたくしも実際に作っていないので良くはわかりませんが、定義Fileに載っていないチップ型なら新たに定義Fileを更新すると思いますが、その新しいチップ型を探すことと定義Fileを更新するタイミングをどうするかが大変そうだなと思いました。
    左のブロックが動かない、または動く問題はよくわからないので流そうかな。因みに最新の基礎フォルダでは動くしバウンドし続けています、よね?(stage1.csv)
    最後にですが、作ったイメージをそのままファイルにするマップの部分ですが、わたくしはやはり1ピクセル単位で配置できる自由さが欲しいと思っているので、その形の他にpos block欄だけで指定できるようにもしてくれると嬉しいです。 -- パタパタ大王 2006-03-11 (土) 02:40:53
  • 今ステージエディタに使えそうな入出力用モジュール作ってます。ほぼ出来たけどもう少し整理してからupします。 -- GENKI? 2006-03-12 (日) 04:44:46
  • マップのデータを記述する際は必ずmap blockを使用しなければならないというわけではありません。pos blockは座標を直接入力するのに対して、map blockは見た目と同じ配置でデータを入力してモジュール内部で座標へと変換します。単に書き方の問題だけで、最終的には同じxy座標のデータで返されます。つまりどっちでも好きなほうを使っていいということです。ただし、map blockはpos blockで代用できるが、map blockは細かい値が指定できないのでpos blockの代わりにはできない点に注意。 -- GENKI? 2006-03-12 (日) 23:14:49
  • 入出力用モジュールのサンプルできました。stage00_5.zipです。しまったもう20060222.lzhは公開してないんですね…。(^_^; -- GENKI? 2006-03-12 (日) 23:23:28
  • 1週間ぶりです。ここまで作りこんでしまうともっと機能強化したくなってしまいますが…、暴走しすぎると自分の首をしめることに。(笑)最低限の機能はこれだけあればたぶん足りると思うので、別のことに取り掛かったほうがいいかなと考え中。ステージ独自のパラメータとかもあるし、今後は必要に応じてバージョンアップかな。 -- GENKI? 2006-03-18 (土) 21:36:21
  • [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] [a2] -- 2011-01-20 (木) 18:51:10

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル:
filestage00_6.zip
409件 [詳細]
filestage00_5.zip
351件 [詳細]
filestage00_3_1.zip
246件 [詳細]
filestage00_3.zip
419件 [詳細]
filestage00_2.zip
528件 [詳細]
filestage00.zip
236件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2011-01-20 (木) 18:51:11 (1052d)