フワフワソが「ソラとピヨちゃん」や「宮本県」を作るブログ(フワフワソ・ラウンジnew!)

ラノベとテクノを愛するふわふわがノベルゲームを作っています。あと日常のことやイベントの告知なども。スクリプト関連の記事は自分用の備忘録です

ティラノでゲームを作り続けてるとセーブができなくなる件

ティラノライダーでゲームを作っているうちにトラブル発生。

ゲームのセーブ欄は5つあるのに4つしかセーブできない?

変だな?

などと思ってたらついに一つもセーブできなくなりました。

原因はwikiを拝見して分かりました。webstorageがいっぱいになっていたのです。

https://tyrano.wiki.fc2.com/wiki/%E3%82%BB%E3%83%BC%E3%83%96%E3%83%AD%E3%83%BC%E3%83%89%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E8%B3%AA%E5%95%8F

webstorageをクリアするため、該当の場所を開いてみるとフォルダやファイルがいっぱい・・。wikiに書かれた情報と現在の環境と違うような感じもします。

フォルダごと消しても大丈夫な感じもしますが、なんか不安なので、自分で絞り込んでみました。

場所はここ。

C:\Users\ユーザー名\AppData\Local\TyranoRider\Local Storage

ティラノスクリプトのフォルダもありましたが、ティラノライダーのほうです。(ティラノスクリプトのフォルダは、パッケージングしたゲームのセーブデータでしょうか?)

消すファイルはこれ。

file__0.localstorage

file__0.localstorage-journal

この2つを消すとうまい具合にリセットされるようです。うちの環境ではファイルが10mbほどになって、そこでセーブできなくなっていました。

このブログは個人的備忘録なので、もし参考にするときにはご自身での検証をお願いいたします。

 

追記

以上はconfigsave=webstorageにした場合の話ですが、configsave=fileにした場合は、セーブデータが別な場所にできます。

ゲームをパッケージングした時にはゲーム本体.exeと同じフォルダ内にセーブデータができるのでわかりやすいのですが、ティラノライダーでゲームを製作中には、どこにあるかよくわからず困りました。

結論から言うと、ティラノライダーのフォルダ内(tyranorider.exe があるところ)に「ゲーム名.sav」というファイルができます。これがセーブデータです。(グローバル変数用っぽい sf.sav と data.savの2つ)

 

config.tjsをいじってセーブスロットの数を増やしたときには、すでにあるセーブデータを消去しないとスロット数の変更が反映しないので、このセーブデータを消去する手順が必要になります。

ライダーの「パッケージその他」タブから「セーブデータの全消去」をやってもなぜかセーブデータは消えないので、このsavファイルを直接消しました。

 

↓configsaveとはなんぞや?というときに参考になるかもの記事

fuwafuwaso.hatenablog.com

 

ティラノのセーブ仕様にバグがあるのかも

・セーブの仕様にバグっぽいのを見つけたので書いておきます。(ver472)

  config.tjsでこういった設定が用意されています。

// ◆ セーブの方式を指定
//注意:途中でセーブ方式を変更することはできません。
//webstorage :WebStorage領域に保存します。あらゆる環境で利用できますが、セーブデータが大きくなりすぎた場合に保存できなくなります
//webstorage_compress :圧縮を施したうえで、WebStorage領域に保存します。セーブ・ロードに時間がかかりますが、保存できるデータ量は大きく増加します
//file : セーブデータを sav ファイルとして書き出します。この場合PCゲームにしか利用できません。セーブデータを移動したり、容量制限の心配が不要です。

;configSave = webstorage

説明通り、ティラノライダーでゲーム制作中にセーブ方式を変更すると、セーブデータが消えるのが確認できます。

つまり、ゲームをリリース後にアプデでconfig.tjsを書き換え、セーブ方式を変更したりすると、それまでのセーブデータが使えなくなります。

ということは、ゲームのセーブ方式は、リリース後のアプデで絶対に変えてはダメ・・!と思います。

セーブ方式はデフォルトでwebstorageに設定されてるので、ここをよく見ないでPC用ゲームを作ると後悔します。(ユーザー視点で見ると、セーブデータがどこにあるかよく分からないものになるからです。引っ越しとか大変ですよね)

 

ところがです!

windowsアプリ用としてゲームをパッケージングすると、この ;configSave = webstorage の設定は無視される模様。

;configSave = webstorageにしていても、ゲームフォルダの中にsavファイルが作られています。

ゲーム名_sf.sav

ゲーム名_tyrano_data.sav

という、グローバル変数用と、その他用の2種類のsavファイルです。

 

 やった~!webstorageにしてPC用ゲームリリースしちゃったけど助かった~!

と一瞬思いますが、

さらに、ところがです!

パッチを作ってゲームをアップデートすると、;configSave = webstorageの設定が復活して、(つまり、本来の設定通りに webstorageにセーブデータを読み書きするようになり)、savファイルが使い物にならなくなります!

パッチの中にconfig.tjsが入っているときだけそうなるようですが、じゃあconfig.tjsをパッチから抜けばいいのかというと、config.tjsで ;game_version = というバージョン管理をやっているため、安易に抜くのもよくなさそうです。

 

ここで困ってしまいますが、結論から言うと、

アップデートパッチではconfig.tjsを

;configSave = file

にしておくことで解決できるときがあります

 これによって、すでにゲームフォルダ内に出力されているsavファイルを参照するようになるときがありますなぜ書き方が曖昧かというと、解決できないときもあるからです。原因はよく分かりません・・

 

・まとめ

PC用ゲームを作るときには、config.tjsを ;configSave = file にしておくこと。

うっかり;configSave = webstorage でPC用ゲームをリリースしてしまったら、アップデートパッチをリリースするときに、;configSave = file にしておくと、解決するときもある。(しないときもあるので信用はできない)

なお、このブログは自分用の備忘録なので、参考にするときにはご自身での検証をお願いいたします。筆者の勘違いの場合もありますので・・。

 

 

showmenuが働かない件とティラノのフルスクリーン化について

・[showmenu]タグはバグっていて働かない模様です。

数年前にティラノの公式掲示板で指摘されているのですが、まだそのままのようです。

つまり、デフォルトのメニュー画面を出すには

[showmenubutton]で右下に歯車アイコンを出す。このアイコンをクリック。

もしくは、

[button role=menu]でメニュー用の常駐ボタンを設定し、このボタンをクリック。

もしくは、

マウスのホイールボタンをクリック

この3通りしかありません。

[button role=menu]で直接menuを表示するのではなく、roleを使わない[button]を設定し、menuを表示していいタイミングかどうかの判定を挟んだ上で、それが正なら[showmenu]とやりたかったのですが、無理でした。

menuを表示したくないときには、[hidemenubutton]で、歯車アイコンを消すしかない、ということになりました。

これ何の話かというと、メニュー画面にはセーブ・ロードがあるので、ゲームの進行上セーブ・ロードをさせたくない(=メニュー画面に行かせたくない)ときにはどうするかということです。

結論。セーブ/ロードさせたくないときには[hidemenubutton]しかない!

あと、KeyConfig.jsの

 "center": "menu", //センターボタンをクリック

を消しておくとマウスのホイールボタンが働かなくなります。これも忘れずに。

 

 

・フルスクリーンを簡単に実装する方法

[screen_full]を使えば、PCの場合はフルスクリーンになります。

フルスクリーンのオンオフにボタンを作るのが面倒だ、という場合、キー操作でそれができるショートカットが用意されています。

KeyConfig.js の

//キーボード操作
"key" : {

のところに

"122" : "fullscreen",

を入れておきます。

これでF11キーでフルスクリーンのオンオフができるようになります。

ただこれだけだとゲームスタート後にしか働かないので、

title.ks のなるべく上の方に

[start_keyconfig]

を入れておきます。これでタイトル画面からフルスクリーンのオンオフができます。

(ただし、パッケージング前は、画面を一回クリックしてからじゃないと働きません。なぜかは分かりませんが・・。スマホゲーはそういう仕様だという説明を見かけました。WINDOWS専用にパッケージングした後はクリックなしでも働きます)