petitcom at michelan-gelo.
プチ講座#1「セーブデータを作ろう」
<<BACK


■ごあいさつ

どうも。
プチコンでゲームを作ってて

「ランキングを作って保存したい」

「RPGなどのセーブデータが作りたい」

「けど、どうやればいいの?」

と悩む方の為に、セーブデータの作り方をレクチャーしたいと思います。

 

■01 まずはどうやってセーブデータが作られているのかを知ろう

※今回は「ランキングデータ」の解析という事で私の作品「Six Rock chain!」を基に説明します。

プチコンを立ち上げて、サンプルとして「MEM:66C_HS」をロードして、?MEM$と打ち込んでみます。

何やら文字が羅列しています。

 

これだけでは分かりづらいので、とあるプログラムを立ち上げて「14文字づつで改行」してみます。

何となく整列しているようにも見えます。

 

ちょっとこのデータを扱うプログラムを立ち上げて、ハイスコアのデータを見ますと

ハイスコアですが、よーく見ると「あれ?」と思いません?

 

並べてみました。

こうして比べてみると、何となくですけど「セーブデータってこうなってるんだ」ってのが見えてきません?

 

次に「じゃあどうやってMEM$を作るのか」を説明します。

 

■02 実際にMEM$を作ろう

ではプログラムを見てみましょう。

「0」がいっぱい並んでますが・・・

 

説明

1160行            まずはMEM$の中身をクリアして保存用データの準備をします
1161-1162行    今回は「3つのモード、6位までのランク」なのでFOR-NEXTを0から2、0から5としています
1163行            名前データを投入。このプログラムは予めセットした名前を番号で呼び出していますのでアルファベット1文字で表現とします
1164-1168行    スコア投入。100000に満ち足りない場合「0」を追加、以下1桁づつ減らして0を追加しています
                      
(MEM$は基本的に「文字のみ受け付けて数字は受け付けません」+「桁を揃えないと読み込み時にデータがおかしくなります」。なので「0」を噛ませて6桁になるように調整しています)
1169行            0で桁を埋めた後にスコアを入れます
1170-1172行    マックスチェイン投入。1164-1169行と同様に足りない桁を0で埋めて調整しています
1173行            日付投入。予め4桁の数字を文字データとして入れてありますので割愛します
1174行            出来上がった1つ分のデータをMEM$に追加
1178-1180行    ピーガー音を抜いて保存。直後にピーガー音を復帰させています

 

こんな具合でデータは作られています。

読み込み時は同じように1つ1つデータを展開して入れるべき変数に納めています。

 

■03 おさらい

以上でセーブデータ(今回はランキング)の作り方を終了します。

2つ注意する点は「MEM$に入れるデータは文字(列)のみ」「MEM$は最大256文字までしか入らない」という事です。

今回は予め「14文字*18種=252文字」と計算していたのでギリギリまでデータを入れることが出来ました。

ので「実際に作る前に紙などに何文字必要なのか書いて、それが256文字までに収まるのか計算」しておく事が必要です。

 

データが入りきらない場合の圧縮方法はまた機会がありましたら。

それでは・・・

 

<<BACK