不撓不屈

戦国史同盟管理人・蛛賢(Shuken)のブログです。 サイト運営情報、技術情報、備忘録、作品公開等について投稿しています。

SLG「戦国史」のシナリオ作成を支援するExcelマクロツールをリリースしました。



ある程度の規模のシナリオを作成するためには、膨大なデータ登録・編集が必要になるわけですが、
標準のエディタではExcelのように柔軟にコピペできず、関数等も使えません。

そこでExcelでも編集できるようにツールを作成しようと思い立ったところ、
以前水銀さんが作成されている(Ver.1.01)ことを知り、
許可をいただいた上で追加更新させていただくことにしました。

水銀さんも仰られていますが、当該ツールを更に使い勝手の良いものにできればと思っていますので、
ご意見ご感想、また、地道に更新していく仲間をお待ちしています。

Gitlabも慣れておりませんので、何か間違っていたりしていれば御指摘いただけると幸いです💦
(Twitter、Discord等々)

Gitlabのページを見ていただけると分かるかと思いますが、実は半年以上前に作成したものになります。
ただ、色々と機能追加を目論んでいたら繁忙期に突入してしまい、
いつになっても公開できなさそうでしたので、今回思い切って公開しました。

本当は征西府やら異志倭人伝やら更新完了と併せて公開したかったんですが……

------以下Readmeから------

■ツール概要
 本ツールは、戦国史シナリオ(SNRファイル)をExcelで編集するために入出力するツールです。
 基本的な考え方は、大名家・城・武将といった設定項目が複数あるデータを取り込み、タイトル等、設定項目が固定であるものは標準エディタで編集する想定で取り込み対象を選定しています。
 なお、更に作成効率を上げるための機能追加を検討しています。

■使い方
①「Open SNR File」で編集したいファイルを開きます。
②「国」~「武将」シートに読み込まれますので、各シートを操作して編集します。
③作業が終わったら「Save SNR File」でファイルを出力します。
 なお、ツール起因でシナリオが壊れないように自動で旧ファイルを退避させます。(bakファイル)
 保存後、標準のシナリオエディタや戦国史本体から読み込んでみてください。
※①・③の際、「ディレクトリ指定」セルに入力すると、ファイル選択の初期表示を指定できます。

■留意点
・本ツールで発生した、いかなるトラブル・損失・損害に対しても当方は責任を負いませんので、
 バックアップ等の対応を各自でお願いします。

・膨大なデータだとメモリ不足となり挙動が不安定になることがあります。
 エラーが出る場合は、まずは他のソフトウェア等を閉じる等してから再実行してください。

・以下のシートは本ツールの処理で使用していますので誤って削除しないようにしてください。
 MENU、国、鉄砲生産国、販売地、購入所要月数、大名、同盟、城タイプ、城、経路、交易対象、
 交易国、港、武将、Tmp1、Tmp2、Tmp3、Tmp4

■その他
 本ツールをより良くしていきませんか? カスタマイズ仲間を募集しています。
 なお、バグ報告等ありましたら、蛛賢(Twitter、Discord、ブログ等)によろしくお願いします。
 ※返信・対応が遅いこともありますのでご了承ください。 ※水銀氏には報告しないでください。

■バージョン
 戦国史EditSnrEX
 EditSnrEX.xlsm
 Ver.1.20

 Modified by (c) Shuken 2020
 Created by (c) 水銀氏 2010

------ここまで------

■参考
 ツールの動きとしては、シナリオファイルを頭から読み込んで、各要素(国、鉄砲生産国、販売地、購入所要月数、大名、同盟、城タイプ、城、経路、交易対象、交易国、港、武将)を表形式で取込み、それ以外は出力用としてTmp1~Tmp4のシートに保持しています。
 出力するときは、各要素の内容を再度シナリオと同様の文字列に変換した上で、Tmp1シート+要素+Tmp2シート+要素+Tmp3シート+要素+Tmp4シートとして繋げて出力しています。
 Tmp1~Tmp4の意図を文章にするのは難しいですが、一度動かして中身を見てみると何となく分かります。(説明下手)

 エラーチェッカー機能を盛り込みたかったところですが、とりあえず時間が足りません……


【参考】ベースとした水銀さんのツール配布ページ



以上、よろしくお願いします。

このエントリーをはてなブックマークに追加 mixiチェック

背景2
九州南北朝時代のクイズゲームを制作してみました。
菊池武光公生誕700周年記念の私的なコラボ企画第一弾です。



propsgamesというWebサイト上でゲームが作れるサービスを使わせていただきました。
九州の南北朝時代は諸将の思惑で南朝、北朝どちらに付くのか複雑怪奇な状況でした。
そんな中でも菊池家は一貫して南朝方、ひいては懐良親王と共に九州に覇を唱えました。

もし興味を持たれましたら、クイズを初め、以下の菊池一族プロモーションサイト等をご参照ください。
菊池市菊池一族プロモーションサイト

クイズ内の画像素材は菊池市様から直接御提供いただきました!!
本当にありがとうございます

絵があるだけで全然違いますね。

なお、動きがおかしいといった指摘や、ご意見ご感想等ありましたら、お気兼ねなくお待ちしております。

--------------------

続いて、propsgamesでのクイズゲームの作り方について紹介します。
基本的には管理人さんのQiitaを参照いただければ十分だと思います。

この中でもクイズゲームの制作方法がありましたが、
私は「数あるクイズ集の中からランダムに10問出題する」というのをしたかったので、
以下のように出題を別の機能として呼び出すこととしました。

blog投稿用


あとpropsgamesには配列がありませんので、ダイスとの組合せで擬似的にランダムを実現しています。
イメージとしては、3つのダイスでそれぞれ「最初の数」「正負」「進数」を決めて該当する問題を出題しています。

<ダイス 代入先="int出題ID" 目="1,2,3,4,5,6,7,8,9,10" 速度="30" 遅延="3" 順番="裏実行"/>
<ダイス 代入先="int初期ダイス1_正負" 目="1,-1" 速度="30" 遅延="3" 順番="裏実行"/>
<ダイス 代入先="int初期ダイス2_進数" 目="1,2,3,4" 速度="30" 遅延="3" 順番="裏実行"/>
【例】
最初の数:3、正負:1、係数:2 なら
問題:3、5、7、9、11、13、15、17、19、21
とった感じです。
もちろん、ゼロ以下だったり最大問題番号を超えたらループするように加減します。


【出題に関するところ】
…略…

<ループ 条件="int出題カウント<int出題数+1" タイプ="数値" >
  <待機 時間="1000" />  
  <コード呼出 コード名="function問題" />
  <計算 結果="int出題カウント" 式="int出題カウント+1" />
  <待機 時間="1000" />  
  <画像表示 ID="51" 透明度="100" 時間="0" />
  <画像表示 ID="52" 透明度="0" 時間="0" />
  <画像表示 ID="53" 透明度="0" 時間="0" />
  <画像表示 ID="55" 透明度="0" 時間="0" />
</ループ>

…略…

「コード呼出」で「function問題」を呼出し、出題を行います。
繰り返して出題数が一定数となったら、ループを終了し、エンディングに移ります。
「画面表示」は、問題の正解/不正解表示の切り替えです。


【機能「function問題」の初めから途中までの一部】
//次の問題を選択します
<計算 結果="int出題ID" 式="int出題ID+(int初期ダイス1_正負*int初期ダイス2_進数)" />
<変数変更 変数="int問題ID" 値="1" />

//オーバーフローしたら戻します
<もしも 条件="int出題ID<1" タイプ="数値" >
  <計算 結果="int出題ID" 式="int出題ID+int問題ストック数" />
</もしも>
<もしくは 条件="int出題ID>int問題ストック数" タイプ="数値" >
  <計算 結果="int出題ID" 式="int出題ID-int問題ストック数" />
</もしくは>

<効果音 ファイル="drum-japanese2.mp3" 音量="80" />

//問題IDごとに分岐
//-----------------------------------------------------------------
<もしも 条件="int出題ID=int問題ID" タイプ="数値" >
<選択>
<会話 名前="" 速度="80" >
第<変数表示 変数="int出題カウント" />問!<改行 />
菊池家は北朝方?南朝方?
</会話>
<選択肢 メッセージ="一貫して北朝方" >
<効果音 ファイル="incorrect1.mp3" 音量="80" />
<画像表示 ID="53" 透明度="100" 時間="5" />
</選択肢>
<選択肢 メッセージ="一貫して南朝方" >
<効果音 ファイル="correct1.mp3" 音量="80" />
<画像表示 ID="52" 透明度="100" 時間="5" />
<計算 結果="int正解数" 式="int正解数+1" />
</選択肢>
<選択肢 メッセージ="初め北朝方、後に南朝方" >
<効果音 ファイル="incorrect1.mp3" 音量="80" />
<画像表示 ID="53" 透明度="100" 時間="5" />
</選択肢>
<選択肢 メッセージ="初め南朝方、後に北朝方" >
<効果音 ファイル="incorrect1.mp3" 音量="80" />
<画像表示 ID="53" 透明度="100" 時間="5" />
</選択肢>
</選択>
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="0" >
≪解説≫<改行 />
正解は「一貫して南朝方」<改行 /><クリック />
<改行 />
菊池家は、後醍醐天皇の建武の新政を受け第12代武時が挙兵し、武功として第13代武重が肥後守を任じられて以降、南北朝時代は第17代武朝が北朝方と和睦するまで一貫して南朝方でした。<改行 />
<クリック />
</小説>

</もしも>
<計算 結果="int問題ID" 式="int問題ID+1" />

//-----------------------------------------------------------------
<もしも 条件="int出題ID=int問題ID" タイプ="数値" >
<選択>
<会話 名前="" 速度="80" >
第<変数表示 変数="int出題カウント" />問!<改行 />
観応の擾乱において<改行 />少弐家はどちらについた?
</会話>
<選択肢 メッセージ="探題方(尊氏方)" >
<効果音 ファイル="incorrect1.mp3" 音量="80" />
<画像表示 ID="53" 透明度="100" 時間="5" />
</選択肢>
<選択肢 メッセージ="佐殿方(直冬方)" >
<計算 結果="int正解数" 式="int正解数+1" />
<効果音 ファイル="correct1.mp3" 音量="80" />
<画像表示 ID="52" 透明度="100" 時間="5" />
</選択肢>
<選択肢 メッセージ="宮方(南朝方)" >
<効果音 ファイル="incorrect1.mp3" 音量="80" />
<画像表示 ID="53" 透明度="100" 時間="5" />
</選択肢>
</選択>
<小説 横="中央" 縦="枠中央" 幅="16" 高さ="10" 速度="0" >
≪解説≫<改行 />
正解は「佐殿方(直冬方)」<改行 /><クリック />
<改行 />
少弐家は、足利尊氏の建武の新政からの離反以降、北朝方として行動していましたが、多々良浜の戦い以降一色範氏が九州探題とされると、太宰少弐として面白くない第6代頼尚は九州に逃れてきた足利直冬を擁立し、佐殿方の中心として行動しました。<改行 />
<クリック />
</小説>
</もしも>
<計算 結果="int問題ID" 式="int問題ID+1" />

…以下略

「//」を先頭に付けているのはコメントの明示で、特に意味はありません。
※propsgamesでは、命令タグ外の文字は読み込まれないそうです。(結果的にコメントアウト)

「もしも」を使って、出題IDの値と同じ問題IDのものが出題されます。
問題IDは数値をハードコーディングした方が可読性は高いかと思いますが、並び替えだの差し替えだのが発生しているためこのような記述にしています。

このようにランダム部分だけ抜き出すと色々な場面に応用できると思います。

御参考になれば幸いです。

菊池武光公の盛り立て企画は今後も何かしら進めていきたいと考えています。


このエントリーをはてなブックマークに追加 mixiチェック

livedoorBlogがHTTPSに対応したようです。

ブログの設定→基本設定→HTTPS→利用する→設定する

設定画面の下方に色々と留意点が記載されていましたが、私は特段問題なくスムーズに移行できました。

また、独自ドメイン利用者ですが、今のところ支障ありません。良かったです。




このエントリーをはてなブックマークに追加 mixiチェック

あけましておめでとうございます。 昨年は本業繁忙相まって、下半期活動に時間をさけずにいましたが、
今年は戦国史20周年の節目でもあるため、少しずつ進めていきたいと思います。
コロナ終息を祈願しつつ、本業やら転居(2~3月)やらの目処が立ち次第、また報告したいと思います。

取り急ぎご挨拶、ご報告まで申し上げました。
このエントリーをはてなブックマークに追加 mixiチェック

戦国史Wikiのシナリオ情報復旧記事とは別に、戦国史Wikiに関する謝辞を投稿します。

シナリオ情報の補完は非常に根気と時間を要するものでした。
(多少は分かった気ではいましたが、当初の想定より4倍くらい時間がかかってしまいました。)
工夫しましたが、結果的に殆ど手作業で、日々時間を作っては作業するを繰り返す地道なものでした。

このような経験を踏まえ…

先ずは、2014年のサイト攻撃直前までシナリオ補完作業を進めてくださった 楽俊さん に改めての感謝と、私の対策不備によりサイトが攻撃され、そのデータが消えてしまったことは、本当に申し訳ありませんでした。

T.H.Yさんが整備したシナリオリスト、ファイル等により約4か月で復旧できました。
あれなしではもっとかかっていたと思います。本当にありがとうございました。

また、旧作シナリオ復興委員会の awakさん には、geocities、isweb、yahooブログ…数々のウェブホスティングサービス終了に合わせて失われた多くのシナリオを補完していただきました。
私の突拍子もない提案にご賛同いただき、時間を見つけて作業いただいたこと、本当に感謝しています。

2013年から今まで数多くのシナリオファイルを保守していただいており、
今回、awakさんのサイトがなければ、正直、戦国史同盟は再開できていませんでした。

そして、情報収集する中で、有志の方々によるサイト立ち上げを知りました。
SLG戦国史避難所 @ ウィキ
新戦国史Wiki
「戦国史」の Wiki
戦国史アップローダー

申し訳なさと感謝の気持ちと同時に、私の戦国史Wikiを再開していいものか悩みました。
しかし、一部サイトに「戦国史同盟が復活するまで」と記載があったことと、過去ブログで将来の再開を宣言したことに対するけじめとして、また皆さんと共に盛り上げていきたいと考え直し、作業を進めることにしました。

ここが適当か分かりませんが、この場を借りて、各サイトの管理人様にお礼申し上げます。
微力ながら戦国史界隈に寄与できればと考えていますので、今後ともよろしくお願いします。

また、色々なデバッグに付き合っていただいた宇喜多さん、Discordでメッセージをいただいた方々、ありがとうございました。

これからも戦国史を地道に盛り上げていけたらと思いますのでよろしくお願いします。
先ずはお詫びとお礼まで申し上げました。


このエントリーをはてなブックマークに追加 mixiチェック

↑このページのトップヘ