投稿記事

2022年 03月の記事 (4)

Master.typeX 2022/03/31 18:40

GMS2:技術的備忘録・バッファセーブその後

どうも、Master.typeXです。
バッファセーブのその後に教わった情報をば
忘れないうちにメモしておこうと思います。

一応前回からの続きなので
軽く目を通して頂けるとわかり・・・
いや、わからん部分が多すぎるがな。

一応前回はこちら

さて、今回はbuffer_seekについてです。

//バッファの読み込み開始
buffer_seek(buff,buffer_seek_start, 0);

これの3つ目の部分をある方から教えてもらったのですが
ここはバッファの読み込み開始位置
らしいでございます。

しかしここからが重要ポイント。
最初てっきりfor文みたいに0から始まる
いわゆるインデックス・・・通し番号と
思っていたのですが全く違いますた。

ここは開始バイト数が入ります。
なんのこっちゃかと最初思いましたが
例えば前回にも書いたこの文。

//バッファ書き込み
buffer_write(buff,buffer_s16,data);

これだと2バイトとして扱われます。
いや、余計なんのこっちゃ
安心しろ、俺も最初わからなかった。

真ん中のバッファの型「buffer_s16」が
16ビット整数という扱いのため
バイトに変換すると2バイトになるということです。
わかんない時はそこはグーグル先生に
「16ビット バイト 変換」と入れると
すぐ答えが帰ってきます。
というかバイト変換まで出来るとかグーグル先生すげぇ。

このバッファの型には色々と種類がありますが
そこはGMS2のマニュアルのバッファの部分を参照のこと。

で、この開始バイト数を入れると
そのバイト数データをずらした状態で
読み込みを開始するようになります。

例えば下記のように保存して

//player id
buffer_write(buff,buffer_s16,global.Ply_ID);

//lastplaystage
global.Ply_Lastplay = _Stage;
buffer_write(buff,buffer_s16,global.Ply_Lastplay);

//Scene
buffer_write(buff,buffer_s16,global.Ply_Scene);

Sceneの部分だけ取り出すには
4バイト分ずらせばいいので

buffer_seek(buff,buffer_seek_start, 4);
global.Ply_Scene = buffer_reed(buff,buffer_s16);

という記述になります。

・・・自分で書いていて
非常に分かりづらいなこれ・・・

ともあれ、こうすればずらせるので
なんとかバッファセーブの実装に
こぎつけそうになりましたと、そういうことで!
(無理矢理)

とりあえず今回はこのへんで!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Master.typeX 2022/03/29 20:07

その他:完全にスランプモード

どうも、Master.typeXです。

・・・タイトルの通り
現在どうやらスランプというか
燃え尽き症候群的な感じかもしれない。

DTMやUnityも一時的にモチベは
高くあっても、翌日になると
一気にモチベが爆下がりして
何もやる気が起きない状況です。

フォースギア3の素材も作る気がほとんど
失われており、散々悩んでたプチプロジェクトも
モチベが上がらず全く進んでおりません。

このままズルズルと4月を迎えてしまうのですが
本当に創作関連のやる気が起きなくて
どうしようもない状況です。

本当に期待してる人とかには申し訳ねぇ。

ということで
来月も更新頻度が非常に少なくなると思います。

この状況から早く脱したいとは思ってますが
焦れば焦るほどドツボにハマる気しかしないので
生暖かい目で見守ってくだせぇ・・・

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Master.typeX 2022/03/22 20:35

GMS2:技術的備忘録・バッファファイル編

どうも、Master.typeXです。
久しぶりの備忘録ですが何があったかというと
GMS2のDiscord鯖で
セーブファイルの保存方法が云々書かれてて
チートされるのは困るなと思い
最初はini→jsonへ変えようかなと思ったら

いつの間にかバッファーに手を出していた。

バッファーは曰く、処理が早いらしく
チートもされにくいっぽい。
が、jsonもだがコレまた未知の技術。
なのでこうして備忘録をつけることに。

まだまだ未開の技術なので間違ってたらゴメンナサイ。

buffer_create

たぶん最初にバッファーを設定するものだと思う。
使い方はこんな感じ。

buff = buffer_create(16384,buffer_fixed,2);

最初の数字の部分はバッファサイズ。
サイズ感はよくわからんが
ここに記述したサイズより大きいものは
保存できないらしい。
やっぱりわからん。

buffer_fixedはバッファの型らしい。
とりあえずわからんがここではbuffer_fixedにしとく。

最後の数値はバッファアライメントなるものだが
これもよくわからん。

というか最初の時点でわからんばかりでこの先大丈夫なのか。

バッファの保存

書き方としては

buffer_seek(buff,buffer_seek_start, 0);
buffer_write(buff,buffer_s16,data);
buffer_save(buff,"buffersave.sav");

と言った感じで書くらしい。

buffer_seekはバッファの読み込み開始だと思う。
1つめの部分はbuffer_createで作ったバッファ。
2つ目はよくわからんが読み込み方だと思う。
3つ目はこれまたよくわからん。

buffer_writeはバッファへの書き込み命令。
1つめの部分は先程と同じbuffer_createで作ったバッファ。
2つ目はバッファの型だがbuffer_createとは違う様子。
3つ目は保存したい数値。

buffer_saveはバッファファイルそのものの保存。
1つめの部分はbuffer_createで作ったバッファ。
2つめの部分はファイル名。ここがポイント。
iniと違って独自の拡張子で
保存が可能というところが大きく違う。

これがバッファの利点でもあり欠点。
ちゃんと保存できてるのかテキストエディタとかで
確認ができないのが難点。

バッファの読み込み

バッファの読み込みは

buff = buffer_load("buffersave.sav");
data = buffer_read(buff,buffer_s16);
buffer_delete(buff);
buff = -1;

といった感じらしい。
buffer_loadはその名の通りバッファファイルの読み込み。

buffer_readはバッファファイル内の
おそらく同名変数の読み込み。
カッコ内は型だが、注意点として
保存時と同じ型を指定しないと
正しく読み込めないらしい。

そして不要なバッファはbuffer_deleteで削除する。
という形らしい。-1はなんか公式マニュアルで
そうしてくれみたいな書き方があったので。


とまあ、こんな感じで。
前述の通りまだ未開の技術なので
ほんと間違えていたらスマンとです。

ルールがよくわかってないので
なかなか難しいぞこれ・・・
でも習得しとかないとマズイ案件なので
ちゃんと覚えるぞ・・・

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Master.typeX 2022/03/08 19:26

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索