こんにちは。前回の記事の予告通り、自作を作る間のことについて書いていきたいと思います。
作品はすでにノベコレで公開されているのでまだの方はぜひ一度プレイしていただけると嬉しいです。1プレイ1分以内なのでお気軽にどうぞ。

私の経歴ですが、フリーゲームは完全にプレイ専門でやってきてレビューを書いていたので、タイトルにある通りティラノスクリプトは全く触ったこともありませんでした。内部的にはHTML/CSS/JavaScriptで動いているらしいと噂に聞いたことがある、というくらいです。
プログラミングに関しては仕事でC#とかSwiftとかPythonとかを扱うのでその点に関しての素養はある方だったかなとは思います。ただJavaScriptは初心者です。昔図書館にあった、サンプルコードコピペOKの作ってみよう系入門書を1冊やってみたくらいです。
長いので以下適宜折りたたみながら書きます。

勝敗の判定やCOMの思考ルーチンを実装するのは楽勝だったのですが、HTMLの知識が不足していたりwebについても勉強したことがなかったりでそこは少し苦労しました。普通スクリプト部分は独立したファイルに分けるだろうなと思って最初はそうしていたのですが、livedoorブログの制限なのかMIMEタイプがtext/javascriptにならずスクリプトを読み込めないという問題が発生していたので、記事と同じファイルに直接JavaScriptを記載しています。
4月にはこれにスコアを付け加えた、先日公開したものと同じルールのものを作り公開しています。ゲームのロジック部分はここからほぼ変わっていません。
大きな出来事があったのは5月でした。DREAMSCAPE#3という同人ノベルゲームの展示イベントに行ったところ、きつねのてぶくろ図書館さんのブースで紫靂せちるさんとmadocaさんにお会いしました。知ってるサークルさんだし回っておきたいなと思いながらちらちら様子をうかがっていたのですがお二人でお話が盛り上がっているようで行きにくいな…とコミュ障を発動せずこちらから出向けたのは我ながら頑張ったのではないでしょうか(笑)
ティラノ製のゲームもよくやりますよ~みたいなお話をしていた中でちらっと「ありすすとーりー」をやり込み過ぎて作者のねこのさんに怖がられたことをお話ししたら大層ウケまして、「明日ティラノオフ会やるんだけど来ない?」と誘われました。
行くと返事をしてしまったので帰ってからとりあえずティラノスタジオをDLしてサンプルゲームを動かすのだけやって翌日のイベントに臨みました。全部で20名ほどいらっしゃったように記憶していて、皆さん創作への熱意をお持ちですごかったですね。ゲームつくったこととかないんだけど…という私も迎え入れてくれてありがたかったです。ノベコレでよくお見掛けする富井サカナさんのパワフルな日常を聞けたり、ありすすとーりーの戦闘に関わるソースコードを生で見せていただけたりとなかなか体験できない日だったなと思います。名刺も何枚もいただいたのですが自分が渡せるものを用意できなくてそこは若干肩身が狭かったですね。
↑当時のツイート
タグ解説によると任意のHTMLをそのまま埋め込めるとのことだったので、最初はブログに置いたやつをそのまま埋め込む方法を試してみたのですが、こうするとHTML表示中はゲームが止まる仕様上JavaScriptからティラノのタグを実行させる仕組みが必要になり、これが分からなかったので結局この方針での実装はあきらめています。
ではどのように実装しているかというと、9つあるボタンをHTMLの<input>からティラノスクリプトの[glink]に置き換え、ゲームの内部状態やコンピュータの思考についてはJS、進行状況やUI表示についてはティラノと役割分担させています。これをやる中でも色々と壁にぶち当たったことはあるのですが、分かんねーとなったことをTwitterに投げてみたらオフ会でお会いした板久咲絢芽さんにめちゃくちゃアドバイスを頂けて助かりました。公式のタグ解説とサンプルゲーム解説は読みつくしていたと思うのですが、それだけでは全然カバーできない経験値があるなあと感じました。
大体動くようになったらユーザビリティの向上に向けた調整をやっていました。初期のバージョンだと○と×の大きさが少し違って見えたりマスに対して大きすぎたりといった状態だったので元画像を修正。ゲーム決着時には何の要因で決着がついたか分かるように、1列並んでいるときはその列のマスを光らせ、数字の大小で決着がついた時は勝った方の数字を動かすようにしています。最初は[kanim]タグを使って動かそうとしていたのですがなぜか動かず、[xanim]にしたら動いたとかいう謎の挙動を踏んでいました。未だになんでか分かってません。最終的に採用したのは、CSSファイルにキーフレームアニメーションをべた書きしてしまって、ティラノ側でのアニメーションはしない方法です。CSSは他の個所でも用いているのでここにまとめちゃうのが一番楽でした。
次に戦績統計を実装します。表の部分はHTML埋め込みで実装しており、下のボタンやバッジ画像はティラノのタグで実装しています。難易度は初期状態では3段階なのですが隠しモード解禁で増えたりするので、列の数が変わってもレイアウトが崩れないようにするのに苦労しました。ChatGPTに相談しながら、特定の条件で列を非表示にしたり文字のサイズをセルのサイズに合わせて変更するJSを作成してます。
バッジ画像については未取得のものはグレーアウトするように、シークレットのものは全く見えないようにCSSを設定しています。また、ボタンの上にポインタを置いておくとツールチップで達成条件が表示されるようになっています。
この依頼をしている間に夏コミに向けた「第2回同人縁日通り」のためのゲームプレイやレビュー執筆をしていました(該当記事)。最終的に5本のレビューを寄稿したのでこれも結構頑張ったと思います。詳細についてはコミケ&真田まこと展報告記事へ。
イベントが終わったら自作のリリースに向けた作業に取り掛かろうと思っていたわけなのですが、ちょうどこの時期から仕事が忙しくなってきていて作業が進みませんでした。9月には落ち着いたのであと1か月の間に公開できる状態までもっていきます。
依頼していたイラストについては差分とか含めて相談し、.psdファイルでいただきました。絵を描いたことのない私は見たことのない拡張子だったので、対応しているソフトの使い方を調べるところからのスタートでした。深嶺さんのおすすめもあってFireAlpacaを採用したのですが、私が使ったことのあるMSペイントなどとは次元の違う機能の豊富さに最初困惑してました。今でも全く使いこなせていないと思いますが、オブジェクトごとに変形させたり色味を変更したりレイヤーごとに出力したりと大活躍です。
BGMについてはゲーム内あとがきで触れたように私が演奏したピアノの録音を使っています。曲はシューマンの「子供の情景」という組曲から取っており、決して難曲ではありませんが久々だったのもあり練習に1か月要しました。タイトル画面で使われているのは1曲目の「見知らぬ国と人々について」(原題:Von fremden Ländern und Menschen)で、あとがきには終曲(13曲目)の「詩人は語る」(原題:Der Dichter spricht)を採用しました。2曲とも子供のころに弾いたことがあったのと、対比構造にできるのもあって丁度良かったです。
咲希ちゃんと対決するときの曲は一番有名なトロイメライ(Träumerei)です。
他にも4曲使っていますが練習不足なものもあり、あ~ピアノつよつよの人から苦情が来たら怖いな~と思っていたのですが今のところ来ていません。
タイトル画面はいただいた立ち絵を使って頑張って作りました。背景に小さい○や×が無限スクロールしてるのはなんかそれっぽいだろと思って頑張ってCSSを調整した結果です。ボタンについてはFigmaで作りました。ホバーしたとき、クリックしたときの挙動はこれもCSSで書いています。サンプルゲームではティラノの機能で別画像に差し替えていたのでそれに倣うかと最初は思っていたのですが、CSSで書いた方が明らかに楽でした。
ヒントについては、当初は主人公役の子と咲希ちゃんの対話形式にするという案がありました。ゲームの進行具合に応じて見られる会話が増えていって、その中にちらっと攻略情報が入ってくるという想定だったのですが、私があまりに会話シーンを書けなさ過ぎてお蔵入りとなりました。やっぱり絵とか物語を創作するセンスないんですよね…。見たことあるシーンのコピペにしかならない感じです…。なので物語を生み出せる人はすごいな~と思ってます。
とはいえヒント無しはきついだろうという難易度感なので、シンプルに攻略情報だけ教えてくれるような形になりました。
難易度調整は悩んだポイントでした。素直な実装だと隠しモードが超鬼畜難易度(コンピュータでシミュレーションにかけて勝率が0.2~0.3%程度)でさすがにこれは無茶だと思ったので、初期盤面に偏りが発生しやすくなるような方法を採用することで少し実績を取りやすくしています。
とはいえ平均して30回くらいはプレイしないと取れない難易度のはずなので、公開1日で実績コンプリートされた方が現れたのは正直驚きました。今のところコンプリート者は3人のようです。無理ゲーではないことが証明されたので、高難易度に興味をお持ちの方はぜひ実績コンプリートまで頑張ってみてください。
審査をどういう風にやっているのかは知りませんが、結局申請から1日で公開されていたので想定以上の速さに驚きました。早速プレイしてくださる方もいて嬉しいです。
また、高難易度においてコンピュータが無駄に決着を先延ばししてくる現象(舐めプバグ)について報告があったのでそちらの修正も昨日行ったのですが、先ほど確認したらアップデートが承認されていて相変わらず速いな~と思ってます。
他にもプレイ報告してくださった方も何人もいらっしゃって、本当にありがとうございます。
「最強」に3連勝すると「最強(裏)」モードが解放されます。
「かんたん」に3連敗すると「負けるが勝ち」モードが解放されます。
ヒント1は初期状態でオープンです。
ヒント2は「むずかしい」に負けると解放されます。
ヒント3は「最強」に3敗すると解放されます。
ヒント4は「最強(裏)」に5敗すると解放されます。
ヒント0は「負けるが勝ち」に5敗すると解放されます。
他にも何か思い出したら追記するかもしれません。
ノベルゲーム制作ツール(しかも完全初見)でボードゲームを作るなんて変態だよ! という気もしますが手ごたえは得られたので、アイデアと時間があったら他にも何か作ってみようかなと思います。
それでは。
作品はすでにノベコレで公開されているのでまだの方はぜひ一度プレイしていただけると嬉しいです。1プレイ1分以内なのでお気軽にどうぞ。

私の経歴ですが、フリーゲームは完全にプレイ専門でやってきてレビューを書いていたので、タイトルにある通りティラノスクリプトは全く触ったこともありませんでした。内部的にはHTML/CSS/JavaScriptで動いているらしいと噂に聞いたことがある、というくらいです。
プログラミングに関しては仕事でC#とかSwiftとかPythonとかを扱うのでその点に関しての素養はある方だったかなとは思います。ただJavaScriptは初心者です。昔図書館にあった、サンプルコードコピペOKの作ってみよう系入門書を1冊やってみたくらいです。
長いので以下適宜折りたたみながら書きます。
ゲームを作ることになるまで
今年の2月頃にふと思い立ってJavaScriptで簡単なゲーム作れるんじゃない?という発想のもと今回のゲームの原型となる3目並べを手元で作っていました。それをブログにアップロードして動く形にしたのがこちらの記事です。見た目に何の装飾もなく寂しいですがとりあえず遊べるものができた点では満足でした。
勝敗の判定やCOMの思考ルーチンを実装するのは楽勝だったのですが、HTMLの知識が不足していたりwebについても勉強したことがなかったりでそこは少し苦労しました。普通スクリプト部分は独立したファイルに分けるだろうなと思って最初はそうしていたのですが、livedoorブログの制限なのかMIMEタイプがtext/javascriptにならずスクリプトを読み込めないという問題が発生していたので、記事と同じファイルに直接JavaScriptを記載しています。
4月にはこれにスコアを付け加えた、先日公開したものと同じルールのものを作り公開しています。ゲームのロジック部分はここからほぼ変わっていません。
大きな出来事があったのは5月でした。DREAMSCAPE#3という同人ノベルゲームの展示イベントに行ったところ、きつねのてぶくろ図書館さんのブースで紫靂せちるさんとmadocaさんにお会いしました。知ってるサークルさんだし回っておきたいなと思いながらちらちら様子をうかがっていたのですがお二人でお話が盛り上がっているようで行きにくいな…とコミュ障を発動せずこちらから出向けたのは我ながら頑張ったのではないでしょうか(笑)
ティラノ製のゲームもよくやりますよ~みたいなお話をしていた中でちらっと「ありすすとーりー」をやり込み過ぎて作者のねこのさんに怖がられたことをお話ししたら大層ウケまして、「明日ティラノオフ会やるんだけど来ない?」と誘われました。
行くと返事をしてしまったので帰ってからとりあえずティラノスタジオをDLしてサンプルゲームを動かすのだけやって翌日のイベントに臨みました。全部で20名ほどいらっしゃったように記憶していて、皆さん創作への熱意をお持ちですごかったですね。ゲームつくったこととかないんだけど…という私も迎え入れてくれてありがたかったです。ノベコレでよくお見掛けする富井サカナさんのパワフルな日常を聞けたり、ありすすとーりーの戦闘に関わるソースコードを生で見せていただけたりとなかなか体験できない日だったなと思います。名刺も何枚もいただいたのですが自分が渡せるものを用意できなくてそこは若干肩身が狭かったですね。
開発の技術的な問題
そんな感じで熱を受けて、自分がティラノでゲーム作るとしたらブログに置いたやつのティラノ移植だろうと思ったので、その日から2週間ほどは余暇時間のほとんどを生のJavaScriptからティラノへの移植に費やしたと思います。初めてティラノスクリプト触って2週間でここまで来たの結構頑張ってるのでは? pic.twitter.com/6ms3M6MUjp
— 冬瓜 (@tohganfrige) June 10, 2025
↑当時のツイート
タグ解説によると任意のHTMLをそのまま埋め込めるとのことだったので、最初はブログに置いたやつをそのまま埋め込む方法を試してみたのですが、こうするとHTML表示中はゲームが止まる仕様上JavaScriptからティラノのタグを実行させる仕組みが必要になり、これが分からなかったので結局この方針での実装はあきらめています。
ではどのように実装しているかというと、9つあるボタンをHTMLの<input>からティラノスクリプトの[glink]に置き換え、ゲームの内部状態やコンピュータの思考についてはJS、進行状況やUI表示についてはティラノと役割分担させています。これをやる中でも色々と壁にぶち当たったことはあるのですが、分かんねーとなったことをTwitterに投げてみたらオフ会でお会いした板久咲絢芽さんにめちゃくちゃアドバイスを頂けて助かりました。公式のタグ解説とサンプルゲーム解説は読みつくしていたと思うのですが、それだけでは全然カバーできない経験値があるなあと感じました。
大体動くようになったらユーザビリティの向上に向けた調整をやっていました。初期のバージョンだと○と×の大きさが少し違って見えたりマスに対して大きすぎたりといった状態だったので元画像を修正。ゲーム決着時には何の要因で決着がついたか分かるように、1列並んでいるときはその列のマスを光らせ、数字の大小で決着がついた時は勝った方の数字を動かすようにしています。最初は[kanim]タグを使って動かそうとしていたのですがなぜか動かず、[xanim]にしたら動いたとかいう謎の挙動を踏んでいました。未だになんでか分かってません。最終的に採用したのは、CSSファイルにキーフレームアニメーションをべた書きしてしまって、ティラノ側でのアニメーションはしない方法です。CSSは他の個所でも用いているのでここにまとめちゃうのが一番楽でした。
次に戦績統計を実装します。表の部分はHTML埋め込みで実装しており、下のボタンやバッジ画像はティラノのタグで実装しています。難易度は初期状態では3段階なのですが隠しモード解禁で増えたりするので、列の数が変わってもレイアウトが崩れないようにするのに苦労しました。ChatGPTに相談しながら、特定の条件で列を非表示にしたり文字のサイズをセルのサイズに合わせて変更するJSを作成してます。
バッジ画像については未取得のものはグレーアウトするように、シークレットのものは全く見えないようにCSSを設定しています。また、ボタンの上にポインタを置いておくとツールチップで達成条件が表示されるようになっています。
見た目の調整やユーザビリティ向上に向けたあれこれ
この辺まで作り込んだ段階で深嶺ユミアさんに立ち絵の依頼を出しました。依頼を出すのは初めてで緊張したというのもありますし、描かせておいてゲームの方がお蔵入りしたら申し訳ないので、ある程度リリースの目途が立ってから依頼した形になります。この依頼をしている間に夏コミに向けた「第2回同人縁日通り」のためのゲームプレイやレビュー執筆をしていました(該当記事)。最終的に5本のレビューを寄稿したのでこれも結構頑張ったと思います。詳細についてはコミケ&真田まこと展報告記事へ。
イベントが終わったら自作のリリースに向けた作業に取り掛かろうと思っていたわけなのですが、ちょうどこの時期から仕事が忙しくなってきていて作業が進みませんでした。9月には落ち着いたのであと1か月の間に公開できる状態までもっていきます。
依頼していたイラストについては差分とか含めて相談し、.psdファイルでいただきました。絵を描いたことのない私は見たことのない拡張子だったので、対応しているソフトの使い方を調べるところからのスタートでした。深嶺さんのおすすめもあってFireAlpacaを採用したのですが、私が使ったことのあるMSペイントなどとは次元の違う機能の豊富さに最初困惑してました。今でも全く使いこなせていないと思いますが、オブジェクトごとに変形させたり色味を変更したりレイヤーごとに出力したりと大活躍です。
BGMについてはゲーム内あとがきで触れたように私が演奏したピアノの録音を使っています。曲はシューマンの「子供の情景」という組曲から取っており、決して難曲ではありませんが久々だったのもあり練習に1か月要しました。タイトル画面で使われているのは1曲目の「見知らぬ国と人々について」(原題:Von fremden Ländern und Menschen)で、あとがきには終曲(13曲目)の「詩人は語る」(原題:Der Dichter spricht)を採用しました。2曲とも子供のころに弾いたことがあったのと、対比構造にできるのもあって丁度良かったです。
咲希ちゃんと対決するときの曲は一番有名なトロイメライ(Träumerei)です。
他にも4曲使っていますが練習不足なものもあり、あ~ピアノつよつよの人から苦情が来たら怖いな~と思っていたのですが今のところ来ていません。
タイトル画面はいただいた立ち絵を使って頑張って作りました。背景に小さい○や×が無限スクロールしてるのはなんかそれっぽいだろと思って頑張ってCSSを調整した結果です。ボタンについてはFigmaで作りました。ホバーしたとき、クリックしたときの挙動はこれもCSSで書いています。サンプルゲームではティラノの機能で別画像に差し替えていたのでそれに倣うかと最初は思っていたのですが、CSSで書いた方が明らかに楽でした。
ヒントについては、当初は主人公役の子と咲希ちゃんの対話形式にするという案がありました。ゲームの進行具合に応じて見られる会話が増えていって、その中にちらっと攻略情報が入ってくるという想定だったのですが、私があまりに会話シーンを書けなさ過ぎてお蔵入りとなりました。やっぱり絵とか物語を創作するセンスないんですよね…。見たことあるシーンのコピペにしかならない感じです…。なので物語を生み出せる人はすごいな~と思ってます。
とはいえヒント無しはきついだろうという難易度感なので、シンプルに攻略情報だけ教えてくれるような形になりました。
難易度調整は悩んだポイントでした。素直な実装だと隠しモードが超鬼畜難易度(コンピュータでシミュレーションにかけて勝率が0.2~0.3%程度)でさすがにこれは無茶だと思ったので、初期盤面に偏りが発生しやすくなるような方法を採用することで少し実績を取りやすくしています。
とはいえ平均して30回くらいはプレイしないと取れない難易度のはずなので、公開1日で実績コンプリートされた方が現れたのは正直驚きました。今のところコンプリート者は3人のようです。無理ゲーではないことが証明されたので、高難易度に興味をお持ちの方はぜひ実績コンプリートまで頑張ってみてください。
リリース作業とその後
こうしてひとまず公開できそうなバージョンができたのが9月の29日ごろでした。リリース前にバッジの組み込みだけやっておくつもりだったのですがここに意外と手間取ってしまいました。ノベコレのヘルプ通りにプラグインを読み込んで該当箇所にタグを打つと実装完了…のはずだったのですが、そのままやると戦績表の表示が崩れることが判明。理由は結局よくわかっていないのですが、いったんメッセージレイヤのクリアと短時間のwaitを入れることで回避できることがわかり、なんとか実装を終えてパッケージングに移ります。ここでもノベコレの提出用ファイルはブラウザ版としてエクスポートしたファイル群というのをあまり理解しておらず、見た目がほぼ変わらなかったので一度生のソースファイルを提出しちゃってました。その後すぐ再パッケージングして申請し直したので審査は一発で通っているのですがちょっと肝を冷やしましたね…。審査をどういう風にやっているのかは知りませんが、結局申請から1日で公開されていたので想定以上の速さに驚きました。早速プレイしてくださる方もいて嬉しいです。
また、高難易度においてコンピュータが無駄に決着を先延ばししてくる現象(舐めプバグ)について報告があったのでそちらの修正も昨日行ったのですが、先ほど確認したらアップデートが承認されていて相変わらず速いな~と思ってます。
他にもプレイ報告してくださった方も何人もいらっしゃって、本当にありがとうございます。
ヒントと隠しモード解放の条件について(※ネタバレあり)
「むずかしい」に3連勝すると「最強」モードが解放されます。「最強」に3連勝すると「最強(裏)」モードが解放されます。
「かんたん」に3連敗すると「負けるが勝ち」モードが解放されます。
ヒント1は初期状態でオープンです。
ヒント2は「むずかしい」に負けると解放されます。
ヒント3は「最強」に3敗すると解放されます。
ヒント4は「最強(裏)」に5敗すると解放されます。
ヒント0は「負けるが勝ち」に5敗すると解放されます。
直面した技術的な問題たち(※ティラノ経験者じゃないと分からない話になると思います)
上記ですでに触れたものも含みます- HTMLを埋め込んでしまうとゲームの進行が止まる
ティラノスクリプトの仕様。ゲーム本体についてはHTML埋め込みではなくティラノの機能を使って再現することで回避。 - ボタン設置時にJS式を評価させてその結果をクリック時に用いたいが、クリック時まで式が評価されない
これも仕様。当初は実行したい式を文字列として実現して渡すという黒魔術を発明して使っていたが、タグリファレンスを見るとpreexpというパラメータを用いることで実現可能と分かったのでそちらを採用 - タグのパラメータに渡す%とか&の記号の意味
結局未だによくわかっていない。&変数名とすると変数の値をパラメータに埋め込んでくれる機能だというのが現在の理解。値を使って演算することも可。例えば以下はi行目j列目に○を表示させる処理。[image layer="2" x=&mp.j*150+110 y=&mp.i*150+210 storage="o.png" width="130" height="130"]
四則演算以外の演算もできる。以下は実績がロックされている場合はHTMLのクラス属性にlockedを加えてCSSで表示をモノクロにする例。3項演算子を利用している。//シナリオファイル側
&変数名は先頭に来なくてはならない?のか、以下のような形では期待通りの動作をしなかった。
[button layer="1" x="535" y="550" width="180" graphic="../fgimage/badge11.png" name="&sf.achieve1 ? 'achievement' : 'achievement locked'" hint="いずれかの難易度で勝利" target="*badge1"]
//CSS側
img.achievement{
box-shadow: 2px 4px 4px black;
}
img.locked{
filter: grayscale(100%);
}
[button layer="1" x="535" y="550" width="180" graphic="../fgimage/badge11.png" name="'achievement' + &sf.achieve1 ? '' : ' locked'" hint="いずれかの難易度で勝利" target="*badge1"]
(※追記:JavaScriptの3項演算子と文字列連結の優先順位による問題でした。
[button layer="1" x="535" y="550" width="180" graphic="../fgimage/badge11.png" name="&'achievement' + sf.achieve1 ? '' : ' locked'" hint="いずれかの難易度で勝利" target="*badge1"]name="&'achievement' + (sf.achieve1 ? '' : ' locked')"
で期待通り動作しました。stringからboolへの暗黙的型変換と動的型付けというJavaScriptの仕様により気付きにくいバグでした…)
また、タグのcondパラメータにbool値を持つ変数を指定するときに&を使う必要はない。おそらく無条件で設定した文字列がそのままJS式として解釈される。(これで1時間溶かした) - glinkのheightとwidthを設定してもぴったりのサイズにならない
デフォルトでpaddingが存在しているため。nameを設定したうえでCSSからpaddingを0にしてやると良い。表示した画像とピッタリ同じサイズの透明なglinkを使用してゲームを進行しているので重大な問題だった。 - ゲームの対戦中にセーブして、そのデータをロードするとバグる
恐らくJS側の書き方の問題。JS初学者のためクラスを用いた書き方をしておらず、セーブするときにゲームの内部状態まで保存されないせい。テクニックサンプル集2のオセロゲームはセーブデータをロードしても正しく動いており、コードを見るとボードゲーム部分はクラスとして書かれていて、それをティラノ側の変数に保存しているのでこれと同じことをすれば直せそう?
ただ修正がかなり重くなりそうだったのでセーブ&ロードをさせないようにして蓋をした。対戦途中でセーブして負けたらやり直すのはずるいのでまあありな対処なんじゃないでしょうか。ヒントの会話中はセーブ可能です。 - kanimが動かない
まだ原因が分かっていない。他のglinkなどを表示したうえで[s]している状態だと起きる? あるいは環境依存か。

ゲーム内ヘルプで矢印を動かしたり(上図の中央)、本編決着後にマスを光らせたり数字を動かしたりするために[keyframe]を事前に定義しておいたが動かず。なぜか[xanim]にすると動いた。なんで?
ちょっと気持ち悪かったので、CSS側で直接アニメーションを適用してやる方法で実装した。 - 高難易度でガチ最善手を計算しようとするとパフォーマンス上の問題がある
上述の舐めプバグを修正するにあたり、決着までの手数を評価関数に含めるよう修正したところ、初手の着手に3秒程度かかるようになってしまった。開発環境はおそらく平均的なプレイヤーよりはハイスペックなはずなので、スペックが足りないパソコンやスマホでこのまま動作させると地獄が発生する可能性あり。再帰実行している評価関数へ渡している引数を参照渡しにするとかの対処は思いつくがJavaScriptの仕様に詳しくないため手間がかかりそうと判断。ガチ最善手はあきらめ、1手読みで勝てる場合のみ別枠で判断し、それ以外の場合決着までの手数を評価に含めない&勝ちが決まったら枝刈りする探索手法でパフォーマンス改善している。 - chara_configのpos_modeがtrueだと手動でのアニメーションに違和感が出る場合がある
キャラクター画像を2枚用意し、難易度によって前面に表示するキャラクターを入れ替える処理を行っている。その際[chara_hide][chara_move]を行っているが、pos_modeがtrueだと2段階でアニメーションするように見えて不自然だった。当初原因が分からず困惑していたが、なんとか怪しい個所を見つけ出し対処できた。 - HTMLで埋め込んだ文字のフォントサイズを修正しようとしてもうまく行かなかった
戦績画面で、難易度の解放状況に応じて列数が変わり、それに合うフォントサイズを計算する処理を行っているが動作しなかった(常に最小になってしまった)。原因はおそらくHTML埋め込みに多少の時間を要するから。表示完了前に枠のサイズとフォントサイズの計算を行ってしまって正しい結果にならなかったのではと考えている。サイズ調整前の表示を先に行い、[wait time="1"]してから再度サイズ調整を行うと期待通りの動作をした。
ノベルゲーム制作ツール(しかも完全初見)でボードゲームを作るなんて変態だよ! という気もしますが手ごたえは得られたので、アイデアと時間があったら他にも何か作ってみようかなと思います。
それでは。
コメント