Almightでボタン常時表示したらいいんじゃあ? : ちょっとした雑記
ブログタイトル通り、気が向いた時にしか書かないので更新が滞っていますね。ははは。
今日は気が向いた、というよりは、ふと思ったんですが、
almightの新バージョンがきて、butotnタグも使えるようになって、プラグインとしてhtmlファイルを読み込むこともできるわけじゃないですか。
現状のalmightが、サイドバーを出してスキップやセーブロードを使える仕様になっているのは、
スマートフォンでプレイした時にメッセージレイヤーに表示しておくボタンが小さくなりすぎて、
実用的ではないということがあるのだと思うのです。
でも、それならダブルスタンダードで、メッセージレイヤーにはbottonタグを表示しておいて、
pcでプレイする人用に配置しておいてもよいんでは?
例えば、ロード画面を出すにはalmightのタグで
@showloadwindow と書くことで即時にロード画面が表示されるわけですが、
これをゲーム中に常に表示しているボタンに、
@button graphic="load.png" exp="almight.script.tag.showloadwindow()"
と、このように書いておけばロード画面が表示されるはずです。たぶん。
これで、よくあるノベルゲームのように、メッセージウィンドウの端の方にでもセーブ・ロード・スキップ等のボタンを設置することができるわけです。
それに、almightの良い点は、上記のようにボタンを押して表示されるのが、htmlファイルというところで、
進行中にゲームのレイヤーを変更することがないというところでしょう。
吉里吉里でゲーム中のボタンを押してセーブ画面を表示しようとすると、
セーブ画面用にメッセージレイヤーや前景レイヤーの画像を差し替えたり、laycountタグで数を変更したり、
進行中のゲームになにか影響が出かねない操作を必要とします。
まぁ、進行中のゲームよりも全面にセーブ画面用の前景レイヤーとメッセージレイヤーを表示したらそれで終い、ではあるでしょう。
しかし、そのためにレイヤー数を増やすことになるわけですよ。
レイヤー数を増やしても、PCでゲームをする分にはなにも問題ないんですが、
如何せんスマートフォンでプレイするとめちゃくちゃ重くなります。
下手したらゲームが落ちます。
almightは吉里吉里と同じで、表レイヤーと裏レイヤーがあるので、
何かの機能のために『レイヤーを一枚増やして実現しよう!」とやっても、実際は表裏の二枚を確保しています。
セーブ画面のために前景レイヤーも増やして、もしかしたらメッセージレイヤーは複数枚使うかもしれません。
セーブ画面実現のために、4枚ぐらいのレイヤーを割り当てるだけで、裏と表会わせて8枚増えます。
わかりやすいように、他の機能毎に同様にレイヤーを確保したりすると、半端ない数のレイヤーが増えます。
そうすると、スマートフォンでは確実に落ちちゃいます。
スマートフォンでプレイすることを想定すると、レイヤー数は減らすに越したことはありません。
とすると、常にメッセージレイヤーに表示しておくボタンに関しても、プラグインとしてhtmlを作っておいた方がいいのかもしれませんね。
ただ、プラグインを常に表示してゲームを進行するのは、トランジションの時が難しいんですよねー。
プラグインのhtmlは表レイヤー裏レイヤーというものがないのがいいわけですが、
そのせいでゲーム進行でのトランジションの時にフェードアウトしちゃうんですよねー。
トランジションが終わったらまた表示されるから、まぁいいっちゃいんですけど、ちょっと気になります。
(もしかしたら、私がわかっていないだけで、やりかたがあるのかもしれませんが)
やはりあれですね、レイヤーを少なくすることを考えて、
ボタン用のレイヤーを確保するのではなく、
名前表示のレイヤーか本文を表示するレイヤーのどちらかに、
ボタンも一緒に表示しておくようにするのが、妥当でしょうね。
常に表示しておくボタンを書くととすると、
// セーブボタン @button graphic="save.png" exp="almight.script.tag.showsavewindow()" // ロードボタン @button graphic="load.png" exp="almight.script.tag.showloadwindow()" // メッセージ履歴ボタン @button graphic="history.png" exp="almight.script.tag.showhistorywindow()" // コンフィグボタン @button graphic="config.png" exp="almight.script.tag.showsettingwindow()" // スキップボタン @button graphic="skip.png" exp="almight.stage.toggleSkipmode()" // オートボタン @button graphic="auto.png" exp="almight.stage.toggleAutomode()" //クイックセーブボタン @button graphic="q_save.png" exp="almight.saveBookmark(0)" //クイックロードボタン @button graphic="q_load.png" exp="almight.loadBookmark(0)"
こんな感じですかねー。
(書き方は合ってると思うんですが、いまちょろっと思ったままに書いたので、exp属性のところがどこか間違ってるかもしれませんが)
あ、あとはあれですかねー。
セーブボタンとかなんかは、セーブさせたくない箇所では非表示になるようなマクロにしておかないとマズいことになかもしれませんね。
たぶん、disablesabeタグとか関係なくセーブできちゃったりしそうなんで。