不撓不屈

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

備忘録になります。

以前サンプルシナリオ改造掲示板の方で、CPUの思考時間の話題がありました。

毎ターンサクサク動く方が望ましく、大名家・城・武将の中で、
一番影響が出るのは「城」であることから、これ以上城を増やすのはよくない。

といったものです。

その後、大名家? 武将? と色々な説が出てもいました。

これについて、戦国史作者のasakaさんにお尋ねしたところ、
その中であれば、確かに「城」が一番処理時間に影響させてしまう、とのことでした。


城以外の要素は単純に比例した時間が増えるようですが、
城だけは経路で接する城を一つ一つ思考するため指数関数的に時間が増えるようです。

当時は、プレーに支障が出る、ストレスを感じる、という意見も出ていました。


マシンパワーも向上し、今ではそこまで考慮しなくても良いのかもしれませんが、一つの視点として大事なことだと思います。

これらの要素以外にも、条件イベントにより複雑なシステムに組むことができるようになっていますが、
ループ等について、より処理時間が少ない方法で実装するように検討されるのも良いかもしれません。

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

備忘のため、改めて投稿します。
戦国史シナリオで使用可能な関数一覧表。

関数名 用途
#Random 実数で0~1.0の間の乱数を返す
#Year 現在の年を返す
#Month 現在の月を返す
#Edition 戦国史FEなら0、戦国史SEなら1を返す
#生存大名家数 生存している大名家数を返す
#生存独立大名家数 生存している独立大名家数を返す
#石高順大名(順位) 臣従込み石高が指定の順位(1番から指定)の大名家番号を返す
(注:指定の順位の大名がいない場合はエラーになる)
#石高順独立大名(順位) 臣従込み石高が指定の順位(1番から指定)の独立大名家番号を返す
(注:指定の順位の大名がいない場合はエラーになる)
#直轄石高順位大名(順位) 直轄石高が指定の順位(1番から指定)の大名家番号を返す
(注:指定の順位の大名がいない場合はエラーになる)
#ランダム大名 生存する大名家番号をランダムに返す
#ランダム独立大名 生存する独立大名家番号をランダムに返す
#ランダム上位大名(順位) 臣従込み石高が指定の順位以内の大名家番号をランダムに返す
#ランダム上位独立大名(順位) 臣従込み石高が指定の順位以内の独立大名家番号をランダムに返す
#プレイヤー大名 プレイヤー大名の大名家番号を返す
#大名番号(大名家ID) 指定した大名家IDの大名家番号を返す
#城番号(城ID) 指定した城IDの城番号を返す
#城支配大名(城IDor番号) 城を支配する大名家番号を返す
#城包囲大名(城IDor番号) 城を包囲する大名家番号を返す(非包囲なら0を返す)
#城武将数(城IDor番号) 城内に居る武将数を返す
#城包囲武将数(城IDpr番号) 城を包囲する武将数を返す
#主家大名(大名家IDor番号) 主家(独立大名なら自分自身)の大名家を返す
#大名家武将数(大名家IDor番号) 大名家(臣従大名含む)の武将数を返す
(捕虜は含まない)
※人質も含まない(2021/1/22 弩爐豚さん感謝)
#大名家直属武将数(大名家IDor番号) 大名家(臣従大名含まない)の武将数を返す
(捕虜は含まない)
※人質も含まない(2021/1/22 弩爐豚さん感謝)
#城数(大名家IDor番号) 大名家(臣従大名含む)の城数を返す
#直轄城数(大名家IDor番号) 大名家(臣従大名含まない)の城数を返す
#石高(大名家IDor番号) 大名家(臣従大名含む)の石高を返す
#直轄石高(大名家IDor番号) 大名家(臣従大名含まない)の石高を返す
#経済(大名家IDor番号) 大名家(臣従大名含む)の経済を返す
#直轄経済(大名家IDor番号) 大名家(臣従大名含まない)の経済を返す
#足軽兵数(大名家IDor番号) 大名家(臣従大名含む)の足軽兵数を返す
#直轄足軽兵数(大名家IDor番号) 大名家(臣従大名含まない)の足軽兵数を返す
#騎馬兵数(大名家IDor番号) 大名家(臣従大名含む)の騎馬兵数を返す
#直轄騎馬兵数(大名家IDor番号) 大名家(臣従大名含まない)の騎馬兵数を返す
#鉄砲数(大名家IDor番号) 大名家(臣従大名含む)の鉄砲数を返す
#直轄鉄砲数(大名家IDor番号) 大名家(臣従大名含まない)の鉄砲数を返す
#従属大名家数(大名家IDor番号) 大名家の従属大名家数を返す
#臣従大名家数(大名家IDor番号) 大名家の臣従大名家数を返す
#資金(大名家IDor番号) 大名家の資金を返す
#航海技術(大名家IDor番号) 大名家の航海技術を返す
#鉱山技術(大名家IDor番号) 大名家の鉱山技術を返す
#城(武将IDor番号) 武将の居る(または包囲している)城番号を返す
(注:死亡している場合は最後に居た城番号を返す)
#包囲中(武将IDor番号) 武将が包囲中なら1を、それ以外なら0を返す
#所属大名(武将IDor番号) 武将の所属大名家番号を返す
(注:死亡している場合は0を返す。)
#当主城(大名家IDor番号) 大名家の当主の居る(または包囲している)城番号を返す
#捕虜大名(武将IDor番号) 武将が捕虜ならば拘束している大名家番号を返す(捕虜でなければ0を返す)
#人質大名(武将IDor番号) 武将が人質ならば拘束している大名家番号を返す(捕虜でなければ0を返す)
#武将足軽兵数(武将IDor番号) 武将の足軽兵数を返す
#武将騎馬兵数(武将IDor番号) 武将の騎馬兵数を返す
#武将鉄砲兵数(武将IDor番号) 武将の鉄砲数を返す
#統一成立 統一が成立したら1を、それ以外なら0を返す
#Round(数値) 小数点以下を四捨五入
#Floor(数値) 小数点以下を切捨て
#Ceil(数値) 小数点以下を切り上げ
このエントリーをはてなブックマークに追加 mixiチェック

戦国史シナリオの備忘録です。
サンプルシナリオ改造プロジェクト内でも話題に挙がっていましたが、
戦死や謀殺された武将の没年をどのように設定するか。

病死はその没年設定が妥当かと思いますが、戦死等は何もなければ生き永らえそう。
サンプルシナリオにはそういった意図を汲んで、史実より長めに設定している武将もいるようです。

公式マニュアルをもう一度読んでみます。

---ここから---

■生年
 生年を設定します。 

■生年タイプ
 生年タイプを、「確実」・「不詳」・「非表示」の中から選択します。
 「不詳」に設定すると、ゲーム中では年齢に?が付きます。
 「非表示」に設定すると、ゲーム中では年齢は表示されません。 

■没年
 没年を設定します。 

■没年タイプ
 没年タイプを、史実に沿って「病死」・「戦死」・「処刑」・「不詳」の中から選択します。
 ゲーム中では、以下のような扱いになります。

①病死
 没年設定の±1年の範囲で武将は病死します。 

②戦死
 没年の年齢が標準寿命以下ならば標準寿命の±1年の範囲で病死しますが、没年設定の年齢が標準寿命以上ならば没年設定のの±1年の範囲で病死します。 

③処刑
 「戦死」と同じ扱いです。 

④不詳
 没年設定は無視され、標準寿命の±1年の範囲で病死します。 

標準寿命の設定は、「各種パラメータ設定」の項目を参照してください。
なお、どの設定にした場合でも、ゲーム中で武将は合戦時に戦死する可能性があります。 

---ここまで---

病死以外で設定すれば、ちゃんと考慮されて退場するようですね。

例:標準寿命を60歳とした場合

「70歳で病死と設定した武将」→「69~71歳で病死する」
「50歳で病死と設定した武将」→「49~51歳で病死する」

「70歳で戦死と設定した武将」→「69~71歳で病死する」
「50歳で戦死と設定した武将」→「59~61歳で病死する」(没年設定無関係)

「70歳で処刑と設定した武将」→「69~71歳で病死する」
「50歳で処刑と設定した武将」→「59~61歳で病死する」(没年設定無関係)

「70歳で不詳と設定した武将」→「59~61歳で病死する」(没年設定無関係)
「50歳で不詳と設定した武将」→「59~61歳で病死する」(没年設定無関係)

戦死は合戦時のパラメータによるもので、年齢とは関係しない。

つまり冒頭の「史実では早くに謀殺されたけど、生き永らえたら…」みたいな武将も、
没年をいじらず、史実どおりに設定していても、タイプを処刑や不詳にしていれば良さそうです。

サンプルシナリオを改めて見る機会があれば、その点も訂正できればと思います。

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

戦国史同盟の(形だけの)トップページを整理しました。
(デザインそのまま)



①メニューにレーダー(アンテナ)を追加。
②下方にあったTweet最新情報を削除(レーダーに統合)
③cssを微修正。

時間を見つけて、デザイン含めてもっと洗練したいですけどね。
とりあえずは。

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

アトラシアンSourceTreeGitlab連携の備忘録です。
ファイル配布及びバージョン管理のためにGitlabを活用し始めているのですが、
毎回適当に調べながらやっており、まあまあ時間がかかっているので方法をまとめます。

①ログイン
 Gitlabにログインします。
 Twitterアカウントでもログインできるので簡単です。

②プロジェクト作成
 左上の「プロジェクト」からプロジェクト一覧のページを開き、
 右上の「新規プロジェクト」のボタンをクリックします。
01_プロジェクト作成

③「Create blank project」
02_プロジェクト作成

④プロジェクト情報入力
 「プロジェクト名」は適当に。
 「プロジェクトのURL」は個人管理かグループ管理かで変更してください。
 「プロジェクトの説明(オプション)」も簡潔に記載します。
 「可視レベル」はとりあえずは「プライベート」にして、良い感じになってから公開します。
 「リポジトリを初期化して…」は自動でREADME.mdを作成してくれます。どちらでも。
03_プロジェクト作成

⑤(任意)アイコン画像の変更
 左のメニューの「設定」→「一般」からプロジェクトアバターを変更すると反映されます。
 (タグもここで追加できます。例:「戦国史」「Sengokushi」等)
04_Init

⑥(任意)公開設定の変更
 ⑤の続きで、ちょっと下の「可視性、プロジェクトの機能、権限」を「展開」し、
 「プロジェクトの可視性」を「公開」にすると一般公開されます。
 その下をイシュー以外を「アクセスできる人すべて」としています。
04-2_Init

⑦SSHクローン用の文字列取得
 「プロジェクトの概要」→「詳細」→「クローン」→「SSHでクローン」の文字列をコピー
05_Clone

⑧SourceTree連携
 SourceTreeを起動し、右上の「+」→「Remote」→Gitlabのアカウントを選択し、
 対象のプロジェクトを選択して「Clone」をクリック。
06_SourceTree設定

⑨登録
 一番上段のフォームに⑦の文字列を入れ、二段目にGit作業場所のフォルダを選択します。
 (作業場所フォルダの中身は空である必要があります。)
07_SourceTree設定

⑩完了
 あとはSourceTreeの操作感覚でOKです。
08_画面



■参考
セキュリティ対策としては、SSHやアクセストークンを施しています。



毎日毎月は触ってないので、まあ…忘れちゃいますね…

何かの参考になれば…。


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

↑このページのトップヘ