「シナリオ製作講座」の編集履歴(バックアップ)一覧に戻る

シナリオ製作講座 - (2023/12/03 (日) 15:18:40) のソース

**&color(green){概要}
-&bold(){[[シナリオのファイル構成>カテゴリ別諸構成]]}(シナリオは&bold(){script}フォルダがあれば取り合えず動きます)
-ドット絵データ(image.dat、image2.dat)と戦場マップ(xxx.map)は&bold(){シナリオ製作ツール}で作成します。
-&bold(){シナリオ製作ツール}は大物入れにある&bold(){Vahren.zip}に同梱されてます。
-スクリプトはメモ帳などのテキストエディタで記述します。
-画像素材(地図、顔絵、立ち絵、旗、アイコン)と音楽素材(BGM、効果音)は作者様の方で御用意ください。
#region
-シナリオフォルダに存在しないファイルは自動的に標準フォルダ&color(blue){a_default}から読みに行きます。
-スクリプトについては本体の&color(blue){a_default/script/main}フォルダの各スクリプトを御参考ください。(ふりーむ版は暗号化されてるので大物入れにある方を見てください)
-顔絵のサイズは100×100(多少縦横増減あってもOK)pixelで、透過色は何色でもOKです。旗はアニメーションするので32×(32+32)pixelで黒が透過色です。カーソルはアニメーションカーソルか通常カーソル(.cur)で32×32pixelです。BGMはmp3かmid(最新版付近で非対応の現象あり注意)です。
#endregion(クリックで表示)

**&color(green){シナリオ作品公開に際しての注意事項}
#region
-作者様の公開サイトにアフィリエイト広告を掲載なされても構いません。
-ただし他サイト様の素材を使用している場合にはそちらの規約も御確認ください。
-公開作品および実行ファイル(Vahren.exe)に対する一切の責任を当方ななあしは負わないものとします。それを御承諾された上で公開してください。
-御制作して頂いたシナリオ作品は「Vahren.exe+a_system+シナリオフォルダ」で構成されるソフトとして独自に単独公開して頂いても構いません。任意のジャンル、任意のスタイルで公開してください。
#endregion

**&color(green){シナリオ作成の大まかな流れ}
#region
1、クラス(class構造体)、種族(race構造体)、スキル(skill構造体)を作る。
2、上記を組み合わせてユニット(unit構造体)を作る。
3、領地(spot構造体)を作り、&color(blue){member}に所属ユニットを列挙する。
4、勢力(power構造体)を作り、&color(blue){member}に所属領地を列挙する。
5、シナリオ(scenario構造体)を作り、
  &color(blue){power}に登場勢力を列挙。&color(blue){spot}に登場領地を列挙。&color(blue){roam}に放浪人材を列挙。
6、scenario構造体に領地の表示と連結を書く。&color(blue){showSpot}で領地を表示し&color(blue){linkSpot}で領地を連結する。
#endregion(クリックで表示)

**&color(green){スクリプト言語仕様}
scriptフォルダ内の全datファイルがスクリプトと見なされます。名前は自由です。
#region
> { } ( ) , ; : = ! < > & | * / + - %
-これらの記号は演算子として使われます。識別子やデータ文字列に含める事は出来ません。
-&color(blue){@}を記述すると空文字列となります。継承データを空欄に戻す時に使ってください。
-&color(blue){name = @}とすると空文字列となります。&color(blue){member = @}とすると要素ゼロの空データとなります。
-構造体の名前とデータ文字列には、英数字と_(アンダーライン)のみ用いてください。
-負の値を記す際は、マイナス符号(-)と数値を必ずくっつけて記述してください。
-&color(blue){//}を行頭に書くとその行はコメントアウトされます。
-&color(blue){/+}は&color(blue){//}と同じですが、batファイルで &color(blue){switch} を付けて起動すると無効になります。
-&color(blue){/*}と&color(blue){*/}は行頭に書いてください。この間を全部コメントアウトします。
-拡張子無しで各画像ファイル名を記すと、png → jpg → bmp の順で検索されます。
-拡張子無しでBGMファイル名を記すと、mid → mp3 → ogg の順で検索されます。
-スクリプトに書くファイル名と実際のファイル名が厳密に一致している必要はありません。大文字小文字の差異は無視されます。
#endregion
[[スクリプトの概要と要点]]

[[scenario 構造体(シナリオの設定)]]
[[power 構造体(勢力の設定)]]
[[spot 構造体(領地の設定)]]
[[unit 構造体(ユニットの設定)]]
[[class 構造体(クラスの設定)]]
[[race 構造体(種族の設定)]]
[[skillset 構造体(スキルグループの設定)]]
[[attribute 構造体(ユーザー属性の設定)]]

skill構造体に&color(blue){func=文字列}でスキルタイプを指定する。能力低下スキルは遠距離/攻撃魔法からのnextスキルでのみ有効。
|&color(blue){missile}|遠距離攻撃/mp≠0で攻撃魔法|
|&color(blue){sword}|接近攻撃/mp≠0で魔法剣|
|&color(blue){heal}|回復強化技/mp≠0で回復強化魔法/str=マイナス値にすると能力低下スキル|
|&color(blue){summon}|召集技/mp≠0で召喚魔法|
|&color(blue){charge}|突撃|
|&color(blue){status}|リーダースキル/アシストスキル|
&bold(){スキルの共通基本データ}
#region
:name = (文字列)|
スキルの名称
:icon = (ファイル, ファイル, ‥)|
:icon = (ファイル*α値, ファイル*α値, ‥)|
アイコン。iconフォルダにある画像ファイルを指定する。左側を一番上にして重ねる事が出来る。
α値(1~255)とすると半透明で合成できる。
:fkey = (文字列*数値)|
スキルをグループ化します。上位スキルによる上書き判定に使えます。
同名文字列なら同系統のスキルと見なされ、大きい数値のスキルが低い数値を上書きします。
:sortkey = (数値)|
省略時は0。ユニットのスキルの並び順を決めます。小さい数値ほど前になります。
:color = (数値), (数値), (数値), (数値)|
スキルの色合いを設定します。
:special = (on/off)|
:special = (数値)|
「必殺技」にする。数値は使用可回数。100以上にすると無限になります。
:delay = (数値)|
発射後に数値分の攻撃間隔だけ全スキル発射不可となります。
speed=60のユニットでdelay=1とすると約二秒間攻撃不能となります。
:gun_delay = (数値)|
:gun_delay = (文字列*数値)|
gun_delayの同名文字列のスキルのみ発射不可となります。
:quickreload = (on/off)|
発射後(厳密にはスライドが完了した後)にユニットが即再行動可能になります。この記述のみだと際限なく同じスキルを撃ち続けてしまうものの、gun_delay等を併せて記述し同じスキルの連続発射を抑えることで他のスキルと連続発動できるスキルになります。(例:ダッシュや相殺バリアのような非攻撃スキルを発動しながら別のスキルで攻撃するなど)
:help = (文字列)|
説明文
:hide_help = (on/off)|
onにするとシステムによる自動説明文が表示されません。
:sound = (ファイル, ファイル, ‥)|
効果音。soundフォルダのwavファイルを拡張子無しで指定。複数列挙するとランダムでどれかが再生される。
:msg = (文章)|
スキル発動時の台詞。人材ユニットが必殺技を使った時のみ出る。
:msg@(ユニット) = (文章)|
特定ユニット専用の台詞。これは通常技でも出ます。
:picture@(ユニット) = (文字列)|
pictureフォルダの画像を指定する。指定ユニットの発射時その画像がカットインされる。
:cutin = (on)|
術者の立ち絵画像をカットインする。
:cutin = (文字列*数値, 文字列*数値, ‥)|
カットイン画像表示のカスタマイズ指定。
#region
|type|0=ズーム型(デフォルト)。1=スライド型|
|top|カットイン画像のy座標が画面底辺-(画像縦サイズ×top×0.01)になる|
|y|カットイン画像のy座標を画像比率の百分率で指定。0=画面上辺、50=画面中央、100=画面底辺|
|y2|設定すると y~y2 の間でランダムとなる|
|stop|数値は不要。カットイン時に一時停止する|
|wake_time|カットイン画像が術者から画面端に移動するまでのフレーム数。少ないほど高速。デフォルト=15|
|flash|任意の色でフラッシュする。数値はRGBの色成分。0=黒,900=赤,90=緑,9=青,999=白,444=灰色,404=暗紫,44=暗水色|
|phantom|カットイン発動時に出る残像数。デフォルト=6|
|alpha|表示画像のα値(1~255)デフォルト=255|
|zoom|百分率で指定。画像の表示拡大率|
|inflate|ズーム型の時の拡大率。デフォルト=5(1フレームに5%拡大)|
|slide|スライド型の移動速度。デフォルト=60(1フレームに60ドット)|
|trans|1フレーム毎のα値の減少値。デフォルトはズーム型=8、スライド型=16|
#endregion(クリックで表示)
:value =  (数値)|
このスキルの所持者に加算される戦闘力。
実際には(lv*0.1 + 1.0) * valueだけ戦闘力が増える
:talent = (on/off)|
:talent = (文字列)|
省略時はoff。offだと全ユニットが習得可能。onだと人材ユニットのみ習得。
on以外の文字列を指定すると非人材ユニットは当スキルの代わりに文字列名のスキルを習得します。
:exp_per = (百分数値/on/off)|
このスキルの獲得経験値を変更します。
50だと通常算出の50%となり、200だと200%になります。省略時は0です。0は100%と同義と見なされます。
なお必殺技の経験値は入らない仕様となってますが(必殺技の時は0はそのまま0と見なす)
exp_per=100とすれば普通に入るようになります。
※exp_per=offで経験値が全く入らないスキルとなり、exp_per=onだと100と同じ扱い。
#endregion
[[skill 構造体(スキルの設定)]]
[[skill 構造体(遠距離攻撃/攻撃魔法)>skill 構造体:missile(遠距離・魔法攻撃の設定)]]
[[skill 構造体(それ以外)>skill 構造体:その他(接近・回復・召喚・突撃の設定)]]

[[context 構造体(記述推奨の基幹データ)]]
[[context 構造体(省略可能な基幹データ)]]
[[context構造体データ総覧]]

[[field 構造体(地形チップの設定)]]
[[object 構造体(建造物チップの設定)]]
[[movetype 構造体(移動タイプの設定)]]
[[dungeon 構造体(ダンジョンの設定)>dungeon 構造体]]

[[voice 構造体(戦闘ボイスの設定)]]
[[detail 構造体(人物詳細の設定)]]
[[sound 構造体(効果音音量の設定)]]

[[debug_paper.txtについて]]
[[外交について]]
[[内政について]]
[[ストーリーイベント>戦闘イベントの作成]]
[[戦闘中のイベント発生>戦闘中イベントの発生]]
[[event 構造体]]
[[story構造体(イベントシーンの追加)]]
[[スタッフロール]]
[[曲輪仕様について]]

&color(gray){関数名の記述は全部小文字でもOKです(storePlayerUnitをstoreplayerunitでも可)}
[[条件分岐構文(if~else、while)>if~elseと条件式関数(イベントの発生と条件分岐)]]
[[関数(ワールドマップの構築)]]
[[関数(変数への代入)>関数(文字変数への代入)]]
[[関数(イベントの設定)]]
[[関数(イベントの設定2)]]
[[関数(戦闘シーン)]]

[[トラブルシューティング(製作用)]]

**&color(green){デバッグモード}
&color(blue){Vahren.exe}はデバッグモードで実行できます。デバッグモードだと構文チェックも出来ます。
#region

Vahren.exeのあるフォルダに&color(blue){debug_paper.txt}を置きます。
&color(blue){debug_paper.txt}の先頭行にシナリオフォルダ名を記述すると
起動時オリシナ選択を飛ばしてデバッグモードでスタートします。
&color(blue){debug_paper.txt}の行の末尾は必ず改行してください。

デバッグモードではスクリプトの再解析ができます。
ゲーム中に「Vキー」を押すと指定された構造体の再解析を行います。  
&color(blue){debug_paper.txt}を
>test2
>skill
>spot
とするとオリシナtest2をデバッグモードで起動し、
ゲーム中に「Vキー」を押すとskill構造体とspot構造体の再解析を行います。
戦闘シーンでスキルの挙動を確認しながらその場で修正できます。
ワールドマップの領地の座標修正にも使えます。
この場合は選択画面に戻りVキーを押した後に再開してください。

&color(blue){musicoff}とするとBGMは無効となりますが、起動時間が大幅に短縮されます。
>test2
>musicoff
#endregion(クリックで表示)

**&color(green){簡易版シナリオの製作について}
#region

シナリオフォルダに&color(blue){script2}フォルダがあるとそちらが優先されます。
&color(blue){script2}では全てのスクリプトを書く必要はなく、追加および変更したい部分だけを記述出来ます。
簡単に作ってみたい方はこちらをご利用ください。
Vahren.exeは&color(blue){オリシナのscript2フォルダ}→&color(blue){a_defaultのscriptフォルダ}の順にスクリプトを読み込み
同名の構造体がある場合はオリシナ側が優先されます。
故にオリシナのスクリプトで標準シナリオのスクリプトを上書きする形になります。
#endregion(クリックで表示)

**&color(green){スクリプトの暗号化について}
一般公開の際はスクリプトの不正な編集を回避する為に暗号化する事をお薦めします。
#region

debug_paper.txt に「encode」を記述してVahren.exeを実行するとスクリプトファイルが暗号化されます。
例:debug_paper.txtに
>test2
>encode
と記述すると、test2のscriptフォルダ内の全datファイルが暗号化されます。
すでに暗号化されてるファイルはスルーされます。
&color(blue){debug_paper.txt}の行の末尾は必ず改行してください。
#endregion(クリックで表示)

.
- 
- 暗号化されてるとちょっと悲しいよね  -- 名無しさん  (2023-07-05 09:57:40)
- 暗号化は相当すごい作品になってシェアウェアとかになって模倣作を防ぐという段階になったら納得できるかも。 &br()製作途中を見てもらいながら、このwikiで応援されている作品は、スクリプトは見てもらったほうがいい。  -- 名無しさん  (2023-09-19 22:43:40)
- いや作者さんの自由でしょ  -- 名無しさん  (2023-09-20 01:04:04)
- いや、作者さんの自由でしょうそれは  -- mititdoll  (2023-09-20 01:04:34)
- 自由、その通り。アドバイス受けられるから推奨というだけで自由。  -- 名無しさん  (2023-09-21 00:51:05)
- 自由とは素晴らしいものだ &br()すぐアドバイザーや助言者になりたがる、俗に言う「教え魔おじさん」はすばらしくないが  -- 名無しさん  (2023-10-30 08:54:50)
- 作品作りには試行錯誤がつきもので、完璧を求めるあまりドロップアウトしてしまうケースもある。共感と理解を示し合い、お互い高め合えるコミュニティこそが望ましい。  -- 名無しさん  (2023-12-03 15:18:40)
#comment(size=60,vsize=2)