その他:4月中旬生存報告
フォロワー以上限定無料
無料での支援プランとなります。
無料
クリエイター支援サイト Ci-en
フォローするにはユーザー登録が必要です。
Master.typeX 2022/04/13 18:47
無料での支援プランとなります。
無料
Master.typeX 2022/04/01 17:24
無料での支援プランとなります。
無料
Master.typeX 2022/03/31 18:40
どうも、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
どうも、Master.typeXです。
久しぶりの備忘録ですが何があったかというと
GMS2のDiscord鯖で
セーブファイルの保存方法が云々書かれてて
チートされるのは困るなと思い
最初はini→jsonへ変えようかなと思ったら
いつの間にかバッファーに手を出していた。
バッファーは曰く、処理が早いらしく
チートもされにくいっぽい。
が、jsonもだがコレまた未知の技術。
なのでこうして備忘録をつけることに。
まだまだ未開の技術なので間違ってたらゴメンナサイ。
たぶん最初にバッファーを設定するものだと思う。
使い方はこんな感じ。
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はなんか公式マニュアルで
そうしてくれみたいな書き方があったので。
とまあ、こんな感じで。
前述の通りまだ未開の技術なので
ほんと間違えていたらスマンとです。
ルールがよくわかってないので
なかなか難しいぞこれ・・・
でも習得しとかないとマズイ案件なので
ちゃんと覚えるぞ・・・