Help us understand the problem. What is going on with this article?

詳解「StateGoの"ティラノスクリプト"サンプル動作と変更事例」

More than 1 year has passed since last update.

はじめに

 ティラノスクリプトは、ノベルゲーム用で主に非プログラマ(シナリオライター・グラフィッカー等)を対象としたスクリプト言語のことです。

この言語は近年急速に広まりつつあるようで、おかげでコンシューマ系プログラマである私でも存在に気づくことが出来ました。

ティラノスクリプトは、普通のプログラム言語とは大きくかけ離れています。

例えば…

  • 表示テキストをママ書ける・・・ 出力命令とダブルクォーテーションで囲む必要なし。実行するとそのまま表示される。
  • 表示テキストの間にタグで命令を書く・・・[button ]・[jump ]・[if ] …
  • クラスの概念なし (注:Javascriptインラインで可)
  • スコープ概念なし (注:Javascriptインラインで可)
  • 変数はグローバルのみ (注:Javascriptインラインで可)
  • ラベルジャンプでどこでも行ける
  • クリックのイベントはラベルで受ける
  • スタッククリアできる
  • etc.

注釈で述べたとおり、仕様の足りない部分はJavaScriptをインラインで補完して利用します。

つまり、プログラマにとっては…

『構造化やオブジェクト指向といったプログラミング技法を使うことができない』

かつ

『インラインのJavaScriptを使う際はティラノスクリプトの仕様と同期させなくてはならない』

もしもシナリオや演出等で複雑な要求があれば…

延々と続く泥臭い作業…

致命的なミスの発症率が上がる…

デバッグで莫大な時間がかかる…

これで身震いしないプログラマはいないと思います。

この危険な言語を如何にして楽に扱うか?

これこそが、StateGoの出番なのです。

説明はサンプル動作&簡単な変更事例

 動作の解説まで説明すべきなのですが、自分のペースを考えていくと少しずつでも公開していく方が良いと考えました。

本投稿では、『Githubの"ティラノスクリプト"サンプルが動作するまでの詳細』と『変更を追加した事例』を解説します。

環境準備

C:\ts上にサンプルとTyranoscript環境を配置

説明における便宜のため、C:\ts上に以下の環境を作成します。

結果、フォルダは次のように構成されます。

C:\ts\psgg-tyranoscript-sample-master   --- Github psgg-tyranoscript-sample
C:\ts\tyranoscript_v475                 --- Tyranoscript
C:\ts\TyranoRider_win_v220              --- TyranoRider

環境変数

 システム環境変数を以下の通りに設定する。

変数
TYRANOSCRIPT C:\ts\tyranoscript_v475\data\scenario
TYRANORIDEREXE C:\ts\TyranoRider_win_v220\tyranorider.exe

環境の確認

設定した環境変数を確認します。

1) 環境変数 "TYRANOSCRIPT" の確認

C:\ts\psgg-tyranoscript-sample-master\sample にて
open_senaiofolder.bat を実行

結果:c:\ts\tyranoscript_v475\data\scenarioフォルダが開く

2) 環境変数 "TYRANORIDEREXE" の確認

C:\ts\psgg-tyranoscript-sample-master\sample にて
tyranorider.bat を実行

結果:TyranoRiderが起動 ※少々起動まで時間がかかる場合あり。

first.ksの修正

サンプルのStateGoは TestControl.ksファイルを生成します。
そのTestControl.ksを起動後に呼び出す修正を加える。

  • オリジナル

  • 以下の様に修正

    ;タイトル画面へ移動
    @jump storage="TestControl.ks"
    

StateGoファイルのオープン

C:\ts\psgg-tyranoscript-sample-master\sample\doc にて
TestControl.psgg をダブルクリック

StateGoについての簡単な見方

サンプルの内容について

Tyranoscriptのインストーラに付属するサンプルを StateGoにて書き直したものです。

STARTから矢印を追うことで、遷移状態を把握することが出来ます。

オレンジのグループ内へは、グループ上でのクリックメニューにてグループ内に入ることが出来ます。

各ステートはソースコードがテーブルにて指定されています。ステート上のクリックメニューの"アイテム編集"にて内容を確認できます。

Tyranoscript特有のボタン指定、エリア指定等々は、マクロ化されていて、データ指定するだけでコードおよびラベルが生成されます。

生成されたコードは、左パネルにて確認が出来ます。

ティラノスクリプトへコンバート

"保存→変換"ボタンを押すとソース(TestControl.ks)に変換、ティラノスクリプト環境にコピーされる。

動画

実行

TyranoRider起動

C:\ts\psgg-tyranoscript-sample-master\sampleの
tyrabirider.batでTyranoRiderを起動

プロジェクトを設定

TyranoRiderの[プロジェクトを選択]ボタンを押して、以下の内容を設定します。

C:\ts\tyranoscript_v475\index.html

ゲーム開始

[ゲーム開始]ボタンを押下します。
(クリックでアニメーションGIF再生)


ちょっと使ってみる…

イントロを少しだけ変えてみましょう。

1. Introductionグループへ入る

オレンジのIntroductionを選択しクリックして、"グループへ入る"を選択。

結果: Introductionグループ内を表示

2. SERIF01をコピーしたものをSERIF01の前に挿入

① ステート上でクリックしてメニューを表示し、コピーを選択

② 空き空間でクリックしてメニューを表示し、ペーストを選択

③ ペースト結果

④ SETUP_TAMATOステートの赤点をドラッグして、流れを変更

⑤ 挿入ステート(SERIF04)の赤点をドラッグして、SERIF01へ

3. 挿入ステート(SERIF04)のセリフ変更

① ステート上でクリックしてメニューを表示し、アイテム編集を選択

② initの項目を選択して、ダブルクリック

③ セリフを変更

セリフ

#
キミハシラナイ・・・[p]
StateGoガアレバ、モットカンタンニナルコトヲ・・・[p]
・・・[p]
・・・[p]

コンバート&ゲーム実行

(クリックでアニメーションGIF再生)

最後に

ティラノスクリプトを楽に扱うため、StateGoの評価付きテンプレート行マクロが総動員で使用されています。これらについては、機会を改めて説明できればと考えています。

tohmas
シニア価格がうれしいゲームプログラマ
https://statego.programanic.com/index-j.html
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした