『汝は人狼なりや?』をティラノスクリプト製のノベルゲームとして制作・プレイするためのプラグインやマクロ集、
およびその実装例としてのサンプルゲームです。
※まだ製作中なので利用はお控えください。
完成の暁にはティラノスクリプト用プラグイン、マクロとして利用いただけるようにいたします。
- Windows10
- ティラノスクリプト v525b(ver.0.12.0から)
- ティラノスタジオ v120(ver.0.4から)
- tyranoフォルダとindex.htmlを(古いバージョンをバックアップしてから)新しいバージョンのものに上書きする
- tyrano/css/font.cssに使用するフォントの設定を追記する
- ver.0.12.0(20240921)
- ティラノスクリプトをver525bにアップデート。
- ファイル名を英数字のみに統一。
- プレイ履歴(役職ごとの勝利回数、連勝記録)を記録できるように。
- glinkボタンの色について、「何もしない」「戻る」系のボタンも、「選択済み」と同じ色をつけるように修正。
- 人狼ゲーム関連
- カウンターアクションのシステムを実装
- 「喋りすぎ」のカウンターアクションを実装。各キャラにフラストレーション値を実装。
- [j_doAction]を全面刷新
- カウンターアクションのシステムを実装
- キャラ立ち絵関連
- 立ち絵のfaceを日本語に統一
- [m_enterCharacter]の立ち絵反転ロジックにキャラのreflect属性を反映できるようにバグ修正。
- [m_exitCharacter]にside属性を追加
- キャラ立ち絵の登録処理をexecuteCharaNewFaceShowサブルーチン化して共通化。
- バグ修正
- mac版で一部の音声が再生されないバグを修正
- 人狼ゲーム終了後にタイトルに戻るとver表示が消えるバグを修正
- 人狼ゲーム終了後にシアターに戻るとエピソードウィンドウが消えるバグを修正
- ゲーム起動後にはじめてメッセージ枠を出すとき一瞬黒い枠が出ていたバグを修正
- メッセージ枠をvisible="false"するときにf.currentFrameを初期化しておらず、次に枠を表示したときに意図しない方向にフキダシが出てしまうことがあるバグを修正
- 一部のシアターでクリック連打すると[chara_mod]実行時にフリーズすることがあるバグが、ティラノのアップデートにより修正
- 人狼ゲーム終了後次のゲームを開始すると、初日朝までの間役職が見えてしまうバグを修正
- 開発者用設定の独裁者モードONのとき、シアターでも前の役職名が表示されていたバグを修正
- 各種リファクタリング
- ver.0.11.0(20240812)
- チュートリアル実装。初回プレイ時に強制で、シアターから任意で視聴できるように。
- タイトル画面のボタン位置と名称を修正。シアター進捗に合わせて表示するボタンを変更できるように。
- 人狼ゲーム関連
- 人狼メニュー画面実装
- ゲーム中は開けるが、ステータスからは開けないように変更。
- 立ち絵表示タイミングの調整。
- 各種メッセージの整理。無駄なメッセージを省くように。
- 人狼ゲーム中のセリフごとに立ち絵の位置を設定できるように。襲撃時用の表情を追加。
- プレイヤーが議論でアクション選択するとアクション予告が更新されるように修正。
- 1期生2期生の性格を作成
- 性格調整用オブジェクトadjustParametersで、Participant生成時の引数で性格を調整できるようにした
- アクションによる信頼度増減処理を調整
- 人狼メニュー画面実装
- シアター関連
- ポーズメニュー画面実装
- チャプター視聴終了時に条件を満たしていたら進捗オブジェクトを解放できるように。
- エピソード選択用画像を、進捗に合わせて金枠銀枠を表示しわけるように。
- シアターのエピソードから人狼を始めたとき、終了時はエピソードに戻れるように修正
- キャラ立ち絵関連
- 3,4期生のcharaサブルーチン、キャラ定数を作成
- キャラの立ち絵の位置指定用の変数を変更。キャラ登場退場マクロの内部処理をそれに合わせて修正。
- キャラごとのデフォルトのサイドではなく引数で選択できるようにした。
- キャラクター登録サブルーチン修正。人狼ゲームに登場するキャラを登録する以外に、追加で登録できるサブルーチンを作成。
- バグ修正
- 起動時、システム変数のボイス音量が適用されないバグを修正
- 騙り占いCO時の進行不能バグを修正
- PCが騙り占いCOをしたあと、議論のラウンド1でPCがアクションしなかった場合に騙り占いが再実行されてしまうバグを修正
- cond属性の中で==={}でオブジェクトの要素数が0かを判定することはできない。そのように判定してしまったせいで騙り占いCOを「一つ前で戻る」でキャンセルできなくなっていたバグを修正
- デバッグモードでないなら、NPCの投票タイミングをプレイヤーがカンニングできない位置に修正
- 各種リファクタリング
- ver.0.10.0(20240430)
- アチーブメント機能作成。
- コンフィグ画面作成。
- BGM、ボイス、SEの音量調整、ミュート機能
- テキスト速度調整機能
- キャラ名マーカーの太さ選択機能
- PCの騙り占い結果選択時の画面構成を変更。
- 「一つ前に戻る」ボタンを追加。
- 「人狼だった/ではなかった」とキャラクター選択ボタンを一画面内に表示するように変更。
- ver.0.9.0(20230813)
- シアター画面実装。
- 人狼ゲームの初期化処理を汎用化。
- ボイスを人狼ゲーム開始時にプリロードするように修正。
- キャラクターの立ち絵、セリフの表示用マクロを改善。
- ボイス再生のためには[playselist]プラグインが必須となる。
- 以下のバグを修正。
- メニュー画面を開いてからステータス画面に戻ると、開票時などにバックログボタンが消えないバグ
- 追放時のセリフ表示時にステータス画面を開くと追放結果が格納されないバグ
- ver.0.8.0(20230528)
- ステータス画面実装。
- バックログボタンを常時表示するように。
- メニューボタンをステータス画面でのみ表示するように。
- 占いCOメッセージ表示中にステータス画面を開くと、COしたことにならなくなるバグを修正。
- プレイヤーが退場済みでも議論フェイズにアクションボタンが表示されているバグを修正。
- ver.0.7.2(20230501)
- 「タイトルに戻る」後に再度プレイすると、メニューボタン等がクリックできなくなる問題を修正。
- ティラノスクリプトのデフォルトのバックログ機能を、プレイヤーに使われる前提で修正。
- ステータス画面内に、バックログ画面を表示するためのボタンを実装(ゲーム中にマウスのホイールを上に回すことでも表示可能)。
- バックログに記録不要なメッセージは記録しないように。
- 投票結果をバックログに記録するように。
- メッセージ内でキャラ名を呼称するたびにログが切れて次の行に移っていた問題を修正。
- バックログ保存行数をデフォルトの50から200に(修正した
data/system/Config.tjs
はgit push対象外)。 - タイトル画面でバックログをリセットするように。
- ver.0.7.1(20230422)
- 開発者用設定画面作成(独裁者モード、役職シャッフル、ラウンド設定、NPCの思考方針)
- 現在の変数をファイル出力する機能を追加。
- 資料置き場(docsディレクトリ)を作成。
- 不要なボタンを削除。
- 2日目以降のCO確率の調整。
- BGM,SEの演出強化。
- ステータス画面で現在のCO状況を表示できるように(アクションオブジェクトに適応)
- ver.0.7(20230326)
- ティラノスクリプトのバージョンをv521fに。
- ボイス実装。
- 議論フェイズでNPCがアクション対象を選択する際、同陣営割合が同値なら仲間度で決めるように修正。
- 表示キャラオブジェクトで、登場中のキャラクターの表示状態を管理するように修正。
- 昼開始時や夜開始時に必要な処理や演出をまとめてマクロ化。
- 初日にキャラ紹介画面を表示するように。
- 横並びでキャラクター画像を表示するサブルーチンは、ステータス画面にも使える想定。
- 初日にキャラ紹介画面を表示するように。
- 視点整理(破綻)や情報公開などをするタイミングの変更。
- 夜に占った場合の視点整理タイミングを、実際に占いCOしたタイミングに変更。
- 騙り占いの結果は、夜ではなく昼に占いCOするタイミングで選択するよう変更。
- 各キャラ視点で、昼の処刑対象者が人狼の最後の生存者だったのに夜時間を迎えた場合は破綻するように修正。
- 昼時間開始の演出中に、昨夜の襲撃結果が判明し、視点整理するよう修正。
- 以下のバグを修正。
- PCの占い対象のキャラクターが翌朝最初に発言する場合、更に左へ移動してしまうことがあるバグ
- PCが騙り占いで破綻すると例外エラーで止まるバグ
- ボタン表示時にカーソルが初めからボタンの位置にあると、hoverイベントが発生しないのでクラス名を取得できないバグ
- メッセージ表示よりも早く
[playse]
(ボイス)の再生が完了すると、[p]
で止まらず次のセリフに進んでしまうバグ
- ver.0.6(20230212)
- 投票結果画面をHTMLを利用した立ち絵で一覧表示できるように。
- 投票結果や占いCO結果で信頼度を増減するように。
- 内部的には、投票や占いもアクションオブジェクトに集約し、信頼度増減処理に渡すようにした。
- アクション実行者の主張力を下げて、同日中は再発言しにくくなるように。
- ボタンのテーマを統一し、選択中やその他の理由で色を変えられるように。
- 内部的には、ボタンオブジェクトを作成してボタン表示するように処理を統一した。
- ボタンを押されたくないタイミングでは消去するように。
- ver.0.5(20230116)
- 投票フェイズで同票だった場合に再投票できるように。上限を越えたら引き分けにするように。
- 議論フェイズ作成。
- 議論によって信頼度が増減するように。
- NPCが他キャラへの信頼度や同陣営可能性によって議論時のターゲットを選ぶように。
- アクションボタン実装。
- ロード後または
[awakegame]
を通るとゲーム変数tyrano.plugin.kag.stat.f
が参照できなくなる仕様への対応のため、参照と書き込みは全てTYRANO.kag.stat.f
を使うよう修正。
- ロード後または
- ボイボ人狼用glinkボタンのCSS作成。
- ボタンオブジェクトおよびボタンオブジェクトからglinkを生成するサブルーチン作成。
- 他のボタンも順次デフォルトのglinkから切り替えたい。
- ver.0.4(20221016)
- サンプルゲームの方向性を決定。
- キャラクター、メッセージマクロ、タイトル画面、フレームやボタン表示、フォント表示など実装(画像やフォントは非同梱)
- キャラクターの入退場マクロを作成。
- キャラクター選択ボタンへのマウスホバーでも入退場マクロを実行するようにした。
- サンプルゲームの方向性を決定。
- ver.0.3(20220820)
- 議論フェイズ用アクションボタンの仮実装。呼び出し箇所は未作成。
- 視点の破綻後は、破綻したキャラの視点は共通視点オブジェクトで上書き、その他の視点は破綻したキャラを人狼陣営で更新するようにした。
- プレイヤーの占い騙りによる破綻は未ブロック。扱いは同様でいいと思う。
- 人狼メニュー画面を作成。占いCO結果を一覧表示できるように。
- 人狼メニュー画面から戻ってからゲームを進行するとエラーになるバグあり。
- 「ステータス画面」に改称予定。
- 各キャラクターに信頼度オブジェクトを実装。
- 投票ロジック実装。
- ver.0.2(20210704)
- messageマクロとmessageサブルーチンにセリフやシステムメッセージを集約
- playJinro.ks(scene1.ksから名称変更)をリファクタリング。キャラクターIDに依存していた処理をほぼ脱却
- PCの役職を選択できる画面を追加(将来のステージ選択機能の仮実装)
- ver.0.1(20210627)
- ある程度動いたところで初版公開
★:次にやるタスク ☆:やらないとアプデできないタスク ◎:やらないとリリースできないタスク ○:できればやりたいタスク △:リリース後でいいタスク
- COフェイズ
- 【○】現在のCO状況によって、未CO者のCOしたい度を変動させる(j_decideCOCandidateId)
- 【△】CO時のセリフパターンの追加
- 役職COと結果COで差分を付けられるようにする。(「自分が占い師だ」「昨日の占い結果は~」)
- 役職COのとき、自分の前にCO済みの占い師がいる場合「自分こそが占い師だ」と主張することができるようにする
- 結果COのとき、自分の前のCO結果によって反応を変えられるようにする(同じ相手を占った、違う相手を占った)
- 占い師の行動
- 【○】ランダムではなく、一定の基準で占い先(騙りなら結果も)を決められるようにする(considerFortuneTellingTarget)
- 【△】もし占い候補がいなければ(全員占い済みなら)占わないことができるようにする(determineFortuneTellingTargetId)
- NPCの思考と行動の雛形制作
- 【○】自分や仲間が破綻する騙りCOはしない
- 【○】自分や仲間が破綻する襲撃はしない
- 議論フェイズの制作
- アクションオブジェクトや定数をリファクタする
- 【○】「聞き出す」アクションの作成
- 【△】アクションボタンの横に実行予定のアクションを表示する。「発言しない」や「Xを疑う」とフキダシ表示するイメージ
- 投票フェイズの制作
- 【○】各役職ごとの投票ロジックを作成する(decideVote)
- 【○】追放後の反応セリフ作成、誰が言うかを決めるマクロを作成
- 【◎】開発者設定画面作成
- 論理力(0/デフォ/1)
- 【☆】最終的には、性格オブジェクトを入れ分けたい
- 【☆】シアター関連のシステム変数の全開放、全リセット機能
- 論理力(0/デフォ/1)
- 【◎】ステータス画面作成
- 【★】表示する立ち絵にふさわしい差分を準備する(わかりやすく喜んでいる、悲しんでいる)
- 【○】ステータス画面のキャラクターフキダシに、テーマカラーをグラデーションする
- 【○】ステータス画面の投票履歴で被投票数を表示したり、最多得票者がわかるようにする(★をつけるか背景色を変えるか)
- 【△】キャラクターBoxを順に表示しているが、最後まで生成しきってから揃って表示できるようにする
- 【△】一括表示すると重くなるなら、投票履歴や占い履歴はボタンを押してから読み込むようにする
- 【△】夜時間に表示するときは夜用のオブジェクトの方がよいか検討する
- 【★】ゲーム終了時の役職紹介画面作成
- [x]【★】表示する立ち絵にふさわしい差分を準備する(わかりやすく喜んでいる、悲しんでいる)
- 【◎】朝、襲撃されたキャラが出てくるときの立ち絵をlose(退場時の立ち絵)に変更する
- 【☆】キャラクターの性格を作る
- 【△】システムメッセージにもボイスを入れる→いらないと思う
- 【☆】BGM、演出を入れる
- 【○】バックログ画面の作成
- 【◎】バックログ画面に表示すべき(でない)メッセージを精査する
- 【○】公式テンプレートからの脱却
- 【○】投票画面の表示を初見でもわかりやすくする(→名前が投票先であること、背景色、★の意味)
- [x]【★】シアターのエピソードから人狼ゲームを始めた場合は、ゲーム終了時はタイトルではなくエピソード画面に戻す
- バグ修正
- 【○】アクションの第二階層ボタンにマウスをホバーさせるたびに、ボタンが増殖することがある(シナリオを進めずにアクションボタンを繰り返し押すとなる?)
- ボタン生成時のループ処理で、カウンターが勢い余ることがあるらしい。無限ループしないように
tf.cnt >= (tf.buttonCount - 1)
には修正したが根本原因の修正は未着手- おそらく、「ボタン表示時にカーソルが初めからボタンの位置にあると、hoverイベントが発生しないのでクラス名を取得できない」バグが第一階層のボタンで起きていたのではないか?そうなら上記のバグと同時に解消したと思われる。TODOはしばらく残しておく。
- ボタン生成時のループ処理で、カウンターが勢い余ることがあるらしい。無限ループしないように
- アクションの第二階層を開いたとき、黒いglinkボタンが表示されることがある(エラー文失念)
- ひとつ上と同件?→これは今でもたまーに起きる
- COフェイズ中にメニュー画面やステータス画面を開いて戻ると、同じキャラが再度COする
- 少し試したが再現性なし?↓の修正をしたことで解消された?
- mac版で.ogg,.m4aの音声が一部聞こえなくなる
- ファイル名に日本語を利用していたことが原因。英数字に統一したことで解決した。なお正常に再生できた音声と再生できなかった音声の法則は不明。
- 稀に変数格納が間に合わずundefinedと表示される(ティラノの仕様?)
- 議論フェイズの発言候補者選択時、getCharacterIdByReliability()で発生するundefinedは実装バグだった。しばらくテストして再発しなければ解消とする。
- キャラがスライドインしてくる選択肢が出ている最中にステータス画面を開いて閉じると、スライドインや効果音が出なくなる
- マウスオーバーメソッドの定義が、sleepgameを挟んだことで消えてしまった?
- 【◎】ゲームを終えてタイトルに戻ってくると、タイトル画面のバージョン表記が(一瞬出るが)消えてしまう
- 人狼ゲーム終了時に
[freeimage layer="1" time="700" wait="false"]
を実行していた。タイトルに戻った後にこのタグの実行が完了していたことで、文字も一緒に消えてしまっていた。時間を短縮しつつwait=trueをつけることで解決。
- 人狼ゲーム終了時に
- 【★】ゲームを終えてタイトルに戻ってきて再度プレイを始めたとき、プレイヤーの役職紹介タイミング~一日目朝までの間、ステータス画面で全員の役職が見えてしまう
- winnerFactionの初期化タイミングミスの可能性大
- 上記で正解。昼と夜の初期化メソッドで初期化していたが、それらではなく人狼ゲーム自体の準備メソッド
initializeTyranoValiableForJinro()
で初期化するのが正しかった。
- 上記で正解。昼と夜の初期化メソッドで初期化していたが、それらではなく人狼ゲーム自体の準備メソッド
- winnerFactionの初期化タイミングミスの可能性大
- 【◎】チャプター再生中にメニューからコンフィグを開いて閉じ、そのまま「スキップして終了」する。続けてチャプターを再生すると、最初のセリフ枠が話者名のない枠になる。
- f.currentFrameの初期化漏れ。最後に表示していた枠と同じ枠からチャプターが始まる場合、m_changeFrameWithIdでは枠の画像を更新しない判定があるのでそれに引っかかった。ゲーム終了時やチャプター終了時はf.currentFrameにnullを入れるよう修正した。
- シアターのエピソードウィンドウを開いてプレイしたあと、タイトル画面のプレイからアチーブメントして「解決編を見る」する。その後シアター画面に戻ってくるが、アチーブメントしたエピソードではなく、最初に開いたエピソードのウィンドウが開いた状態になる。
- 変数の初期化不足。チャプター再生を終了するときに必ず、今再生していたエピソードのウィンドウを開くように変数に格納するように修正した。
- キャラクター立ち絵の位置が想定よりもずれることがある。leftOnDefautLeft,leftOnDefautRightの指定や使い方が間違っているかもしれない。
- わりと高頻度でずんだもんが想定より左にずれて登場する。誰かが登場したあととか、発生条件は?→めたんが右に出た直後が怪しい
- m_enterCharacterマクロで表示時に利用する変数が一部、mpではなくtfになっていたせいで、前の処理で格納されたキャラの位置を参照してしまっていた
- 【○】アクションの第二階層ボタンにマウスをホバーさせるたびに、ボタンが増殖することがある(シナリオを進めずにアクションボタンを繰り返し押すとなる?)
- 【◎】ゲームシナリオ作る
- 【☆】立ち位置左右を入れ分ける
- 【☆】立ち絵を入れる
- 【◎】ボイスを入れる
- 【◎】SE、BGM入れる
- 【◎】エンドロール作る
- 【◎】遊びの部分を作る
- 【★】アチーブメント
- 解放時にSEを入れる
- ゲーム初回起動時にオープニングしか表示しないようにする
- 【○】カスタムプレイ画面作る
- 【☆】コンフィグ画面作成
- 【○】キャラ名の呼称テキストに、キャラのイメージカラーの下線を入れる(可能な限り全部入れる)
- キャラ名の判別のため。このまま何も対策をしないと、No.7と春歌ナナを実装したときに判別がつかなくなる
- 【○】キャラ名の呼称テキストに、キャラのイメージカラーの下線を入れる(可能な限り全部入れる)
- 【△】霊能者の実装(できれば)
- 【△】狩人の実装(できれば)
- NPCの思考の強化学習(マジで言ってんの?)
- ファイル構成の再検討
- マクロ.ksに記載するのはどうしてもティラノで書かないといけない内容だけにし、ロジックは可能な限りjs内に移植する
- docsやコメントの補完
- リファクタリング
- 【○】メソッド、マクロ、サブルーチン、クラスを適切なファイルに移動する
- 【△】iscript内のコメントを//にする
- アクションオブジェクトに関して
- 占い師のCO済み判定に使っているフラグisPublic(doneCOをアクションオブジェクト内に格納し名称変更)を、全てのアクションのオブジェクトに適用していく(公開情報ならtrueを入れるなど。議論履歴の表示可否判定にも使えるかもしれない)
- エラー調査用の実装
- エラー発生時に全変数をファイル出力したい(ティラノ内にcatchしてる箇所がないか探す)
- 人狼プラグインからボイボ人狼依存のコードをなくす(サンプルになるコードが残るのは許容)
and more....
香取犬
Twitter:@catoriinu8190
ブログ:ハイグレ郵便局 香取犬支店
ニコニコ動画:香取犬
https://github.com/ShikemokuMK/tyranoscript
https://webkatu.com/201407132011-clone-function-to-deepcopy-object/
https://ameblo.jp/personwritep/entry-12495099049.html
https://note.com/skt_order/n/n92e622d1809a