Pluglog

Tkool Replay コメントは随時受け付けておりますので、古い記事でも遠慮なくお書きくださいませ。
Admin

Elonaに学ぶ、ゲームの意外性


最近ニコニコに上がってたこれをなぜか見て、Elonaの面白さを端的に表現した動画だなあと思った。
予測を裏切ることが次々に襲い掛かってきて、プレイヤーが翻弄されるラッシュ
・チュートリアルで肉をもらったぞ!→人肉やんけ
・腹が減る→食い物探して食ったら呪われてる
・ペットを連れまわしてたら→井戸に落ちて即死
・プチばっかで弱いぞ→こんにちはスライム
・なんか風が吹いてる→ほっといたら凄い勢いで病気が・・

プレイヤーが理解していけば、対処できることなのだけれど初見にとっては理不尽な罠
これは不親切と言い換えることもできるのだけど、こういう要素がプレイヤーの間では苦労談としてあるあるネタになったりする
ゲームは苦労があって、それを乗り越える挑戦があるから輝かしい思い出になるのかもしれない

~~~

自分のゲームを振り返ると、こういう要素がまだ足りてないかなーという気がした。
この手の仕掛けで最もインパクトがあるのは、やっぱり死・ゲームオーバーが絡むこと。
単純なものでは調べると死ぬイベント、いわゆる即死トラップ。これを設置しまくるのが死に覚えゲー。
ただあまりに単純すぎるものは理不尽すぎてくそげーになってしまう・・この感覚の違いはどこからくるのか・・

考えつく一つの要素は、プレイヤーの注意力次第で回避可能かどうか・・
プレイヤーの行動によって引き起こされる結果であるか、ということかもしれない
ようは制作者側からの意図の押し付けでなく、プレイヤーが選択した結果だと認識できるか否か

Elonaの井戸にペットボッシュートなんかはまるで予測不能だけれど、
ペットを井戸に乗せなければ回避できるのだし、情景をイメージすればなるほどそうなるのかと妙な納得感も生まれる
行動回避可能か&納得感 が大事なのかもしれない・・

納得感をもたらすには、ゲーム世界へのシンクロが必要になるのだろう
行動によって引き起こされることに、ゲーム節理としての統一感、そして想像力をもたせねば

常識を少し外れた意外性、そういうのがプレイのスパイスになりそうだ
わりと質素で落ち着いた作品になってきてる気がするので、驚きの要素も少し追加していきたいところ・・

バケットモンタージュ #36 戦闘インフォと状態異常

20161024020533.png

かつてのゲームは状態異常がわかりにくいということに定評があった私のゲームたちでした
これまでは、キャラ名の横とかにつくちっさいアイコンで判断するしかなかった状態異常・・
今作はついに、戦闘画面で敵・味方の状態を見れるコマンドを追加!
とりあえず現在は状態異常の説明だけだけども、他にもステータスや属性も見れてもいいかも
これで心置きなくステートをつけまくるゲームにできるな!

持続と書かれている部分は残りターン数と、解除確率
これはツクールのデフォ仕様で、状態異常それぞれに設定できる
5ターン、20%と設定した場合 5ターン持続したあと、20%確率で毎ターン解除判定が行われる模様
これ5ターン毎に20%で解除判定を行うのかとずっと勘違いしてた・・

■状態異常耐性で思ったこと
RPGの状態異常耐性って大概〇%確率で抵抗 とかなんすよね
でもこれって、90%耐性がある場合でも残り10%を引いてしまうと、実質的に耐性0%と同じ不利益を被ることになっちゃうんですよね
即死とか麻痺みたいな深刻な状態異常だと、そのリスクはけっこう大きい
結局のところ耐性100%にしないかぎり運ゲー要素は残ってしまう

だから今更ながら、状態異常耐性を単なる確率判定じゃなくて、
蓄積値とか持続ターンを減少させる効果みたいにしたら良かったかもなあと思いつつ

・スタンを50%確率で防ぐ
・蓄積値が100になったらスタンするが、その蓄積値を50%低下させる

この二つはたぶん効果の大きさとしては同程度なのだけれど、
前者の場合は、スタンするかしないかは運次第
後者の場合は、いつかスタンはしてしまうが、それを遅らせる
といった意味合いに変わる・・戦術的に思考を組み立てやすいのは後者だし、耐性に着実な効果がある点はよさそう

・毒を50%確率で防ぐ
・毒の持続ターンを50%減らす

とかね

重大な状態異常・・たとえば即死系に関しても、死の宣告みたいな蓄積値が一定に達すると即死する感じで表現できる
まあこれは気が向いたらそういう方向に組み替えていってもいいかなーと思っている
とりあえず戦闘インフォの表示ができるとこまでが重要だったので置いとこう・・

■展望
NPC設定、ダンジョン作成、スキルテスト・・まだまだやることがいっぱい・・
一通りできたら・・そろそろ通しプレイ確認やらないと・・ イベントテストは作ったとこだけやって通しでまったくやってないからなぁ
そこからバランス確認と見つかるであろう大量バグつぶし、各マップのブラッシュアップ、通しOKだったら打ちかけてた小ネタシステムを加えてって・・
本編完成したらEXダンジョンをつくりーの、最終通しプレイして・・ 全部OKになったら身内テストしてもらいーの・・

うーん、絵に例えるとラフが80%できたくらいかな!
これから線画と色塗りという名のゲームバランス取り・バグ修正&要素の追加が待っているう!
ラフに時間かけすぎぃ!下書き壮大にしすぎたな・・ほぼシステム面だけど
もう1年もかけたくはないのでそろそろ完成を見据えたい

バケットモンタージュ #35 さくせんコマンド

さくせんコマンドつくったったー
ドラ〇エでいうところの「ガンガンいこうぜ」とかのやつ
モンスターゲーだし命令だせるコマンドはやっぱりほしかった。

20161014000853.png
作戦はFF12のガンビット風に詳細設定可能に!
作ったルーチンはいくつも登録できて、メンバー毎にどの作戦を使用するかそれぞれ変更できる感じ

命令行は好きなだけ増やせる
変更箇所は「スキル選択」と「発動条件」の2項目、+各数値設定の2項目、合わせて4項目
設定例は・・
「範囲」「広域」 「敵の数」「>3」
とすれば、「敵の数>3」 のとき、 「範囲が広域」のスキルを使用する という感じの命令になる

20161013235653.png
とりあえずの動作確認、全項目試してないけども一応いい感じに動いてるみたいなのでOK!

これ作るのは結構苦労したものの、構造自体はわりと単純だったりする。

for文でコマンド行を回し・・
 コマンドx行目の発動条件チェック、falseなら次へ
  for文で習得済みスキルを回し・・
   コマンドx行目のスキル選択にマッチする場合、候補配列に追加
   ...
候補配列が空でない場合終了

スキル候補が複数ある場合は、ランダム使用
スキル候補が0の場合は、通常攻撃を行う


といった具合で、せいぜい2ループで説明できてしまう程度の内容
どちらかといえばデータの保持のさせ方や、ウィンドウ回りの設定が面倒だった・・

もっと後回しにするつもりだったシステムだけど、なにゆえこれに着手したかというと
戦闘&スキルバランスをそろそろいじれるようにしないとマズイ気がして、戦闘AIはそのバランスに関わってきそうだったため。
これにプリセットいくつか用意して敵にも適用させたり、作戦内容をランダムに設定とかもなんかできそう。

スキルデータはある程度、打ち込まれてるものはあるけれど、
パッシブスキルとかの特殊な設定を完全に放置してるので作業量がまだかなり残ってそうな部分。
どこにどんな敵がでる、どれが何を覚えるとかはぼちぼち設定されてるけども、実戦テストまったくやってないという。
敵の強さはある程度一括設定できるので、バランスは後からいくらか変えられるが・・

~~
スキル周りはあとアニメーション設定もまるで手をつけてない・・
アニメーションって見慣れるとオフでもいいやってなるようなものだけど、やっぱりないとないで味気ないのでほしい
しかし1個1個こだわって作り出すとやたら大変になってしまうというのがアニメーションという課題だったりする
アニメ設定も設定タグから自動生成みたいにしたいワー 
ファイアスラッシュ → 火+剣 → 火のアニメーション+剣のアニメーション くらいなら頑張って調べればできるかも・・

箱庭フロンティア

ScreenShot_2016_0921_19_56_24.png ScreenShot_2016_0916_15_52_28.png ScreenShot_2016_0922_16_58_56.png

息抜きがてら久しぶりにふりーむ!漁って「箱庭フロンティア」で遊んでました。
ウディタ製なのもあってか「片道勇者」風のゲームデザイン。
職業を選んで適度な時間でワンプレイでき、死んで覚える不思議なダンジョン風なゲーム。

結構シビアな難易度で、残り日数が0になると問答無用でゲームオーバー。
大風が起きる前にフロア移動すれば大丈夫とか、闇に呑まれるまで大丈夫とか、そういうのがない。
ラストまである程度計画立てて進む必要があり、基本的に<1行動が回復する手段のないリソースを消費して行う>ことになる。

▽ちょい攻略▽
すごろく風にサイコロを振って出目によって進めるマスが決まるので、運ゲーかと思いきやちょっとしたコツはある。
まず奇数目の場合、奇数マスにしか止まれない、偶数目の場合、偶数マスにしか止まれない法則がある。
けれど開けた地形ならぐるぐる回ったりして、出目よりも少ない距離のマスへ進むことができる。
なので行きたいマス目がある場合は、そこに隣接するようにすれば、1,3,5のどれがでてもいけるので1/2の確率にできる。
例:★現在地、■宝箱とした場合、3がでたとき、5がでたときのパターン
■□□     ■←□     ■←←
★□□     ★↑□     ★→↑
これに偶数マス進む靴があれば100%になるので、そういうことを考えていけば止まりたいマスに止まる確率は高められる。

~ステ振りと戦術~
どのステもけっこう重要。職業によって伸ばしやすさが変わる。
HP:振っても回復はしないので物理耐久面に限っては防御より優先度は劣る。
   回復手段があるなら防御と等しいかそれ以上の価値になる、実質的に魔法ダメージへの耐久も増えるので安定感が高まる。
攻撃:物理特技を使うならこれを振っていないと威力が全然伸びない。
   素早く敵を倒せればその分被弾も防げる、攻撃は最大の防御。
防御:序盤は特に重要、敵の攻撃はやたら痛いので振ってないとすぐ死ぬ、生存に直結するので基本多めに振りたいステ。
精神:序盤はいらないが、魔法を使う敵が出始めたら防御と同じ価値になってくる。
敏捷:敵より早く動く、より多く行動することも生存に大きく関わるので振れるだけ振りたい。効果量は他よりわかりにくいが影響は大きい。

どれも振るのがベストだけれど、戦術によっては振らないで進む方法も考えられる。
①防御魔法型:魔法が攻撃に依存しないことに着目して、攻撃を捨てて魔法や状態異常をメインに戦う戦法 鉄壁の耐久で安定感。
②攻撃特化型:攻撃と敏捷をひたすら振りまくり、相手に行動される前に倒す。攻撃と敏捷が十分にあれば可能。

騎士や魔法使いなら①、格闘家や盗賊なら②が相性の良い戦法になるはずだが、
実際には①は終盤火力不足に悩まされる、②は倒しきれないときに即死するリスクがこわい とか欠点も

ScreenShot_2016_0916_15_23_09.png
特性特化型なんてのも面白い。 これなんかかなり無敵感があった。

~特技について~
-物理
パワーナックル/アイアンフィスト:回数が多いので、攻撃を振ってるならかなり役立つ
居合斬り、鉄槌:両者とも威力は十分だが、回数が少ないのとウェイトが大きいのが欠点
影払い:ウェイトが短く、回数もそこそこで使い勝手がいいイメージ
せっかち斬り:即時発動なので相手の行動の手前で使えば連続攻撃できたりするのが利点
捨て身:威力、ウェイト、使用回数どれも優秀、倒しきれる相手ならばデメリットが気にならない
痺れ刃、パニックハント:単発で強敵を無力化する手段、単体相手にはかなり優秀
なぎ払い:全体攻撃できるのはいいが、攻撃がある程度ないと倒しきれず・・
ダンジョンで手に入る伝説級の特技:だいたいめっちゃ強いが回数が少なめだったりするのが欠点
-魔法
マナ系:使用回数が多い、特技の入れ替え機会が少ない旅のとき重宝する
フレア系:マナ系より威力が高め、使い勝手が良い
ウィンド系:ウェイトが短め、先手を取りやすいのが利点
ダーク系:威力がかなり高い。ある程度の敏捷があればこれでワンパンできることも多いので結構オススメ
フリーズ系:全体攻撃でバランスが良い
セント系:回数は少ないが、全体攻撃で出が早い いざというときあると強い
ライフェル系:HPを減らす戦術の場合は、ダーク系を超えるダメージを望め、出も早いのでかなり強力
フル系:回復できる ただし戦闘中のみなので相手の攻撃が激しい場合は追いつかないことも・・
リフール:持続回復 泥沼戦闘の場合はわりに活躍する
オフハンス/ディフハンス:強化のためにウェイトがかかるので少々扱い辛い
-状態系
スリープ:もっとも素早く無力化できるが、その分効果量が心もとない
サイレンス:魔法や特技を使う相手にはかなり効果的だが、それ以外に微妙なので汎用性で劣る
パニック:かければ1体無力化+運が良ければ倒せるのでかなり頼れる ただし効果時間が短いので過信は禁物
パラライズ:長めの時間無力化できるので、余裕を持ちやすく信頼度は高い
-特殊能力
毒の扱い:毒沼や王城で搦め手を選べば入手しやすい 発動率も高く効果も期待できる
      毒状態は敵が行動する度にダメージを与えるので、自分の防御上昇、回復などと相性がいい
眠れる帝王:たまに眠ってしまうデメリットはこわいものの、結構有用
先手必勝/背水の陣:状況を整えれば、ダメージをかなり伸ばせる
守り固め/警戒:ダメージを減らす手段 消極的な効果なためこれに1枠割くかが悩みどころ

~アイテムについて~
日数消費なしに行動できる点が非常に有用
逆に言えば、アイテムを取るために日数をかけてしまうと本末転倒
○マスの靴系:日数消費せずに確定ダイスをふれるようなもの、しかも安いのでなるべく買い込みたい
         偶数靴は偶数マスにしか止まれないが、奇数靴は偶奇をずらせるのが利点
堅実家の靴:○マス系の上位互換みたいなもの通路系のマップ、ダンジョンでは重宝する 温存しすぎるのが欠点
倍速の靴:使用回数が3でしかもダイスが増えるので、日数短縮+3以上の効果を見込める 場合によっては〇マス靴より有用
イカサマの靴:目押しはかなりゆっくりなので好きなところで止めれる ○マス靴の上位といっていい 
宝探しの翼:これ一つで宝箱2個分&移動短縮になるのでオススメ
寂しがりの翼:街に移動すれば道具屋でまたアイテムを買い込めるチャンス
祈りの翼:クリスタルはちょうどマスに止まる必要がないので、序盤は売ってもいい程度のアイテム
ぶっとびの翼:日数消費なしでランダムイベントを起こしたい用みたいなもの 他に移動系がないならほしい程度
ブックマークの翼:クリスタルのそばで始まった時に登録して戻ってくる用? 使いにくい
           登録した後に、フロア移動してから使うとマスのないところにいけたりする・・(バグ?)
回復薬系:戦闘時にも使えるので、HPを減らした状態をキープしているときなどは1つは持っておきたい
      頑丈や元気は戦闘が多そうなフロアで使い切り、
神頼み、神速の杖:強敵が現れた際の保険になる、戦闘に不安がある場合は持っておきたい
怒りの杖:特技との組み合わせでノーダメ勝利を目指せるが、単体ではそこまで使えない
経験の杖:EXPを増やせるで非常に有用だが、使うのを忘れがち
ギルドの書、VIPチケット:リサイクルが来たときに、特技を全部売り払ってこれを使うとおいしい
浄化の書、創世の書:使いどころが限られているので基本売る

※戦闘アイテム系は使用時にバフのターンも進むっぽいので、使うタイミングに注意 ・・リフールとはコンボできる

~地図の選択について~
個人的に面白いなーと思ったのは「旅商人の地図」。
このゲーム、特技やアイテムの使用回数が減っていても買い取り価格は同じというところがみそで、
強力な特技を使いつつ、使用回数が減ったものを下取りしてもらって新たに買いなおすことで損せず繋いでいくことができる。
HPをわざと減らしたり毒の沼に突っ込んだりして、パッシブ系のスキルを覚えては売ることもでき(買い取り額も高い)、
戦闘をしないでもどんどんEXPを生産できるのがまさに旅商人的で面白かった。
ScreenShot_2016_0918_14_09_42.png
全Sキャラも作れちゃう!

一方で超絶難易度で苦戦しているのが「名もなき物語の地図」。これ頭おかしいくらい難しい。
特技の枠が少ないために稼ぎプレイがし辛く、職ボーナスも地図ボーナスもなくステも伸ばしにくい。
ギリギリやりくりしてなんとか中層までいくも、ニワトリに突かれて何度昇天したことか・・
防御特化にしても耐久が追いつかず、敏捷振っても攻撃力不足。これの攻略が最後の難題になりそう。

▼総括▼
遊びやすくて取捨選択をいい具合に悩める楽しいゲームでした!
ある行動に応じて突然能力を覚えるところ、搦め手で窮地を乗り切ったり、道具をやりくりして状況を良くしていったりが特に面白かったです!
不満要素を挙げるならば・・
・日数不足のゲームオーバーがかなり悔しい点
 ゲーム始めた最初のころはとくに、日数調整の加減がわからずかなり焦らされる感もあり、
 もっと探索したかったのにー、とかあと数歩足りずで・・みたいなことがよくあった。
 まあそういうルールである以上当然なのだけど、戦力的に整えていった面が戦力的に崩される分には納得がいくが
 日数で終了するとなんとなく理不尽に終わらせられてしまうような気分になる。
 最初らへんならEXPを消費して神のご慈悲でエクストラデイを獲得!みたいな救済措置があってもいいかなと思った。
・ラストで全力を投じれない
 最後にする冒険者登録は特技の回数なども記録されるので、
 ラストの方はただただ温存して、クリスタルすぐ移動みたいな感じになる。
 なんとなく踏破した!というより逃げ延びた!みたいなクリアの印象になる・・
 なのでラスト移動時にボスマップでボス戦、ボス戦時使ったスキルは全回復してクリア時登録される みたいなのが良かったかも。
・探索パート作業ゲーすぐる
 初回挑むときは結構やりがいがあるけども、一度クリアできたら二度目以降はほぼ確実にクリアできるので・・
 地図がランダム入手なので何度か行きたくなるけど完全に作業ゲーになってしまう。
 一度クリアしたパーティは参加できない、とかいっそ自動化してほしかった勢い
・慣れてくるとステ振りがちょっと手間
 毎階層じゃなくても良かったんじゃないか、みたいな。
 たとえば5回層毎や、そういう施設のマスに止まった時のみ、とか。
・階層ごとに手に入るアイテムにバリエーションが欲しかったかも
 敵の種類や、地形は変わるけど手に入る特技やアイテムが変わらないのがなんとなく味気ない・・
・道具屋を上に持ってきてほしい
 街に止まった時にだいたい利用するのが道具屋で(宿屋って人もいるかもしれないけど)
 カーソル動かすのにたまに失敗して宿屋選んでしまうことが・・これもうただのワガママだけど
・隠し職みたいなのほしかった
 竜騎士とか・・俺Tueeみたいな職が最後にあっても良かった

こんなところだけど、もちろんゲームにハマったからこそでる要望点みたいなもの。
久々のプレイ感想日記でした。

不確定イベントの出現方法

ツクールでマップ上にキャラやシンボルを出現させるためには、俗にいう「イベント」を設定する。
そのマップで起きるイベントは、あらかじめ設定しておかなければならない。

しかし、ランダムな位置に出現させたり出たり出なかったりの不確定要素も加えたい!
そう思うことはよくあっただろう。
これを擬似的に表現する手段として一つの方法は・・

1.イベントページ1を並列処理にして、マップに入った瞬間に乱数を判定
2.判定OKならランダムな位置に移動させセルフスイッチAをON、NGならイベントの一時消去を行う
3.セルフスイッチAのページに本処理を書く


まずはこれでマップに入った時に、特定の出現率でランダムな位置に現れるような仕組みが作れる。
ただこれだと、次に入った時にセルフスイッチAが入ったままなので、再度現れることがなくなってしまう。

そこで、マップに入ったときにセルフスイッチAをOFFにする仕組みが必要になる。
リフレッシュ判定用のスイッチを一つ用意して、マップ移動時にONにしておき、
そのスイッチが入ってるとき各イベントで並列処理でAオフにさせていく、なんてやり方もある。

for i in 1..$game_map.events.values.size
next if $game_map.events[i] == nil
$game_self_switches[[@map_id, i, "A"]] = false
end


スクリプトでやるなら↑のようなものを実行して、一括でリフレッシュさせることもできる。

これで「マップに入る度に出現するイベント」のギミックができた。
けれど、敵シンボルなどは出入りする度に一定数現れるのでもいいけれど、
宝箱など、プレイヤーメリットになるものは出入りだけで単純に出現してしまうと、
今度は出入り口に陣とって行ったり来たりするのが効率の良い稼ぎ方になってしまう。
探索感が損なわれてしまうので、それは個人的にあまり望ましくない。

なのでさらに、一定ターンの行動数毎にリフレッシュフラグを立てるという仕組みに行き着いた。
これならばフラグが立っていない状態でマップ移動を行うと、宝箱の出現判定で減ることはあっても増えることがない。
ある程度探索してから次に進む方が効率の良い宝箱収集になる、という目論み。

前作はこんな感じの方法を駆使して作られていて、エディタ上では適当に置かれていた模様。
20160920173758.png



さて・・ここまでは、前作までの方法にすぎない。
なんと、イベント自体をスクリプトで追加することができるようになってしまった。

20160920181922.png
部分的にはこんな感じでできた。(もしかしたら何かしらまだ不具合はあるかもだが)
ヘルプのリファレンスを読み込んでいけば、大抵のことは実現可能なようだ。

こうなると何が嬉しいかというと・・
20160920182551.png
もうこのマップにタグ設定するだけで敵が湧く・・
各種設定はスクリプト側で一括修正すればいいので管理も楽!好きなタイミングや間隔も調整しやすくなった。
エンカウント欄をメモ代わりに使うのはちょっとオススメな方法だったりする。

文章自動生成

Elona制作者さまの新作『Elin』開発中だそうで、ひえーそんな大物がくるまえに自作完成させたいですね
グラフィック面めちゃくちゃクオリティあがってますけど、サウンドにElonaの片鱗が見えてニヤリ

今日はちょうどランダムクエストと、文章の自動生成について考えていたのでElonaに学ぶところがありました。
基本的に"ランダムに出現する何か"については、メッセージもランダムで作成したい!と思うところがあります。

ランダムメッセージにハマったきっかけ・・あれはそう・・RPGツクールGB・・(回想モード)
あれにはイベントコマンドにランダムメッセージというコマンドがありまして・・
それを設定しておくと、話しかける度にキャラグラフィックに応じてあらかじめ設定されたメッセージがランダムに変わるという。
なんだかそれにわくわくしたものでした。
いくつか定型文を用意して乱数で分岐すれば可能なので、ツクールとしては初歩的な処理でした。(GB乱数なかったかもしれないけど)

しかしPC版ツクールでは、より高度なことができます。
文字列の配列を用意して、その中からランダムで抜き出したり、文字同士を足したりもできるのです。

a = ["やぁ、","こんにちは、","ハロー"]
b = ["元気?","調子はどう?"]
$game_variables[1] = a[rand(a.size)] + b[rand(b.size)]


てなかんじでスクリプトを組んで、変数1に代入しておいて、文章表示で\v[1]とやれば・・
「やぁ、元気?」「こんにちは、元気?」「ハロー元気?」
「やぁ、調子はどう?」「こんにちは、調子はどう?」「ハロー調子はどう?」
これだけで3×2の6パターンの文章が自動生成できちゃうわけです。

これを利用して、前作FuhrungWeissでは
ライバル「URYEEEEEEEEE!私は魔法少女の下僕だよ。
     パンデモニウムを狩りにきたんだ。
     暇だから、ジハードする?」
みたいな文章を生成していたわけですね。

今作ではさらにこれを体系化して、もっと法則性をつけたり汎用的にできたらいいなと思ってます。
例えばクール属性を持ってるキャラなら、落ち着いた話し方や「……」がでやすかったり、
楽天的なキャラなら元気のいい感じになったり、みたいな。
人物を示すワードや、場所を示すワードなどのリストをあらかじめ作っておいて、使いまわすとか。

Elonaの掲示板依頼なんかは、そのへんスマートにやっているので参考になります・・
dataフォルダの中にboard.txtってのが入ってるんですよね
20160912233347.png
これを見ると、置き換えようのワードがまず最初にいくつか定義してあって、
{ある}はある、ありますのどちらかにランダムに振られるようになっているようです。

20160912233341.png
そして実際の依頼内容はこちら、定型文を主体に依頼対象や語尾などが埋め込みワードで変数化されてるわけですね
これは編集するときにも非常にわかりやすい書き方で、拡張性も高くていいですね!

Rubyでも式展開

x = "変数"
"文章中に#{x}を埋め込める" # => 文章中に変数を埋め込める


ってなことができるので、似たようなことはできます。

{ある}をある、あります に変換するような方法の場合は
a = ["ある","あります"] のような配列を作って、要素をランダムに抜き出すか・・
a = "ある,あります".split(/,/) のように区切り文字を決めてsplitを使って同様に配列化する方法がとりあえずのところ。
後者の方が編集は楽できそうだけれど、結局配列化するならsplitの分処理が増えてしまうので、負荷的には前者の方がいいかも。
splitの方法に気づかず、そもそも前者で作ってたのでまあこのままでいいかなって感じですが、
もっといい方法あれば知りたいなー なんてことを今日は考えていましたとさ。

バケットモンタージュ #34 技能の習得

新システムよー
モンスターゲーを作るにあたって是非にやりたいと思っていた要素
モンスターの能力を借りて、冒険の役に立てる技能を使うことができるシステム『技能習得』!

20160906214954.png
特定のマップにいき、技能を教わることで・・

20160906215000.png
能力を習得できる!
習得できる技能はモンスターによってそれぞれ適性がある。

これはポ〇モンでいうところのひでんマシン的なのがほしかったため
モンスターの特性を戦闘のみでなくマップ上でも反映させると、頼ってる感が増すのでやりたかった。
ただひでんマシンは個人的に嫌いな部分がある。
4枠しかない技のうちの一つを占有した上に、初代は忘れさせることができないところ。
これは習得技の自由度を狭める要素になってしまったと思う。

なので自分の場合は、スキルとは別枠に習得できる技能という扱いにしてある。
ついでにそこまで必須なわけでなく、サブ要素的なものに留めようと思っている。
〇〇の技能が必須 ・・という風になるとメンバー選択の楽しみが損なわれるからだ。

ちなみに現在ある技能ネタは・・
『跳躍』:離れた1マスを飛び越えることができる (魔獣系モンスターが習得可能)
『鍵開け』:施錠された宝箱を開錠する際に、中身が少し良質になる (凶賊系モンスターが習得可能)
『岩持ち』:進路を邪魔する岩をどけることができる (闘士系モンスターが習得可能)
『火付け』:たいまつに火をつけ、暗闇をわずかに照らすことができる (火炎系モンスターが習得可能)
『草刈り』:道端の草を刈れる (剣系モンスターが習得可能)
『土掘り』:その辺の土を掘れる (爪形モンスターが取得可能)
『採集』:その辺に生えてる草を採集できる (植物系モンスターが習得可能)
『噴射』:すごい勢いでダッシュする (機械系モンスターが習得可能)
『感知』:最も近くにいる敵の位置を知る、また敵の位置をミニマップに表示させる (鱗肌系モンスターが習得可能)
『発見』:隠し通路を発見する (精霊系モンスターが習得可能)
『潜伏』:存在感を薄くして、気づかれにくくする (霊気系モンスターが習得可能)
『誘い』:敵を引き寄せる (悪魔系モンスターが習得可能)
こんな感じ
天使系とか物体系、ドラゴン、水棲系、氷系、雷系、飛行系あたりがまだ決まってない まぁ全部に設定する必要はないんだけど
何か面白そうなネタあったらよろしくです

しかしそれでも同種パーティを組もうとすると習得できる技能に偏りが生まれてしまうので・・
不利益にはなってしまうのだが・・ その点は少し悩ましい


バケットモンタージュ #33 記憶の地図

20160829093902.png
そういえばこんなもんツクった

自由なタイミングで現在位置を記録して、そこに行き来できるというもの []内はx座標とy座標
マップがそれなりに色んな地域があるのでルーラ的なものはいずれ必要になるとは思っていたけど位置設定するの面倒だったし、
いっそのこと自分で設定できるようにしたった方が楽なんではないかと・・
テストプレイも捗りそうだったしなかなか良さそう
こういう変なサブアイテム作るのも結構面白いっすね

バケットモンタージュ #32 お金の価値

化け猫屋さんのアイコンだよ
 ゲーム内通貨の金銭バランスというのは結構悩ましい

RPGの楽しさはある種、"買い物をするとき"にその一端がある
お店に売っている欲しいアイテムをお金を溜めて手に入れたり、
冒険に必要な品物を買い揃えたり・・単に、目新しいものが売っているのを探したり・・と
ともかくゲーム内のお金というものは、じゃぶじゃぶ使えて使う目的がある方が楽しいのは確かなんだろう

なのでお金を使う用途はゲーム進行上で常にどの段階でもあってほしいわけだが・・
お金の主な用途といえば、
①、装備品の購入
②、回復アイテム等、消耗品の購入
③、宿屋など、なんらかの施設やサービスを受けるために支払う

・・基本的にはこんなところ
③はいったん置いておくとして、①と②について考える



①、装備品の購入 について
 これは、弱い装備からより強い装備に新調するといった目的で行われる
序盤から終盤にいくにつれて性能は上がるべきだし、その分価値も高くなるだろう
 *今作、装備品に相当するArtifactは、主にダンジョンなどで収集する想定ではあるけれど、お店でも買える予定だ
  ・メリットは、安定した入手手段となるため、最低限必要なものを揃えることができること
  ・デメリットは、エンチャント強度が弱かったり、エンチャントがついていないことが多いこと


②、回復アイテム等、消耗品の購入
 ダンジョン中、戦闘中の回復手段の一つとして用いるために買い揃える
今作の場合、ここで少し問題点が浮上した!
序盤から終盤につれて、モンスターのHPは増えていくため、回復アイテムの性能も追従されるべきだろう
しかし、例えば10レベル相当の回復アイテム、20レベル相当の回復アイテム・・
なんて作り出すと回復アイテムの数がやたら多くなってしまう (まあそれはそれでアリではあるのだけれど)大変そうだ
では割合回復にしてはどうか、これなら序盤から終盤にかけて回復バランスは保たれる
だが今度はアイテムの値段設定が難しい 安いと終盤で買いまくれてしまうし、高いと序盤買えなくなる

~~~

この①と②の両立がちょっとした悩み所 これが決まればお金の価値も決めやすくなる・・

お金の価値のバランスの取り方は二種類ある
一つ目は、アイテムの価値は序盤から終盤に向かって高くなっていく、入手できるお金も同様に増えていく パターン
二つ目は、アイテムの価値は序盤も終盤も一定、入手できるお金も一定 パターン
*前作FuhrungWeissでは、敵のドロップマネーに関しては後者の仕組みだった
 そのため、アイテムの値段の重みの差が序盤から終盤まで埋まりにくく、高いアイテムは高かった
 ただし宝箱等で手に入る装備品は終盤ほど質が良くなり、それを売るとお金が手に入るため
 実質的には終盤ほど入手できるお金は多かった


今作の場合は、装備品が固定ではなくゲーム進行度につれて質は良くなるため、前者を採用した方が良さそうではある
ただ個人的には、前者より後者の方が金銭バランスを取りやすい印象があるため・・なんとなく踏み切れずにいた
ゲーム進行度によって入手できるお金が増えると、その都度アイテムの価値が変動していくからだ


まあなんだかんだ書いてたら結論はでてきたような気がする やっぱり前者パターンかな
すると回復アイテムも固定値で種類出した方がシステムにはあってそうな気がするなぁ

ランダムエンチャント オプション値の振れ幅について考える

脱線ネタなんですけども、ランダムエンチャントでなにか能力値が決定される場合に、
例えば攻撃力+0~100 みたいに振れ幅があるとするじゃないですか

これをプログラム的に単純にrand(101) ってすると、
早い段階で+100のアイテムを拾える可能性も結構高いと思うんですよね
ようは「0」がでる確率も「100」がでる確率も一緒・・
でも、高い数値のアイテムはでにくい!みたいなのを表現したい場合もありますやんね!?

そんなときに使えるテクニック・・

rand(101) ** 2 / 100


乱数を2乗して、最大値が同じになるように割る こんな感じにすると・・
1のときは0で同じ、100のときは100×100=10000 ÷100となって、同じ100になるけれど・・
たとえば50のときは50×50=2500 ÷100 となって25に
つまり高い数値ほど出にくくなるということが実現できるわけです!

実際の計算結果の全パターンは以下の通り(小数は切り捨てになります)
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 3 3 4 4 4 5 5 6 6 7 7 8 9 9 10 10 11 12 12 13 14 15 16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 42 43 44 46 47 49 50 51 53 54 56 57 59 60 62 64 65 67 68 70 72 73 75 77 79 81 82 84 86 88 90 92 94 96 98 100

同じ101通りでも、小さい数がかたまってでやすくなるわけですね

20160814193637.png
グラフにするとこんな感じで、2乗の部分を3乗、4乗・・としていけば
その分カーブがきつくなって、高い数値はでにくくなってゆきます

またrand(101)ならば101通りなのでだいたい1%の確率で最高値がでるわけですが、
これもrand(1000)、rand(10000)・・などとしていけば、最高値がでる確率は絞られていき・・
天文学的な確率の激レア値オプションなんてのも作れて、非常に高いやりこみ度のランダム性が作れそうです

これのいいところはたった一つの式で定義できるというところでもありますね
バランスを変えたくなったときも、これをちょいっと変えればOK!
ちなみにランダムオプション以外にも、ランダムに出現する高レベルの敵なんてのにも使えますね

まあ今作にそれほどシビアな厳選性を組み込む予定はなかったんですが・・
オプション値をランダムにするのは、製造系のシステムを入れるとするとかち合うんすよね まあ製造も未定なんですけど
こういうのも面白そうだなーと思いつつ、余裕ができたら組み込んでみようかなあ

バケットモンタージュ #31 進行状況メモ

現状で出来上がってる部分とこれからの方針などの整理
-今できてる部分
・モンスターデータ周りは完成
・装備生成系も暫定的には完成
・施設系のシステムも粗方完成

-今後の予定
★最重要:メインシナリオのマップとイベント作成
 とにもかくにもこれを形にしないとゲームが完成しない
とりあえずマップだけでも用意しておけばあとで肉付けできるのでマップ作りは優先事項
でもこのマップ作るという部分が特に面倒な部分でもある

20160703211840.png こんなん
デフォチップだと高低差を表現するのが難しく、イメージはあっても上手く表現できない場合も多い
しかしデフォでもマップ表現上手い作者(魔幻想とか)はほんと上手いので、マップ作りは奥深くもある
まあでもマップは移動のしやすさ重視で、なるべく労力をかけず、をモットーに数量産していきたい
いつかマップは全部ランダムで生成する方法でゲーム作りたい…

★最重要:メインダンジョンの作成
 攻略目標としてのメインコンテンツとなる地・森・水・火のダンジョン的なもの
ある程度歯ごたえのあるステージにしたいが、ギミックなんぞ拘りだすと作るのは相当骨折れる
究極的には、マップ作って汎用イベントで敵配置するだけ~にすればポンポンいけるが… 何か工夫はしたいところ
今時パズルとかは面倒感があるので、そこまで凝ったものでなくていいと思うけれど
邪魔になりすぎず、ダンジョンに個性を持たせる程度のギミックなり演出なり、どういうものだろう?

☆重要だけど後回し:スキル周り 
 スキルの割り当て自体は前に作った仕組みでできるし、数値設定だけならわりとサクサクこなせるが
実際のバランスを見たり、デフォの機能にない特殊な効果とかを追加していくことを考えるとまだ残作業は多そう
通しプレイができる段階でないとどっちにしろ具体的な作り込みはできないので、これはどうしても後回しか
戦闘のゲーム性を大きく左右する要素なので方向性はわりと悩みどころ

現状気にしている範囲では…
・習得スキルの中で一番強いスキルを連打すればいいようにはしたくない → クールタイム設定
・習得スキルが増えすぎると雑多になりすぎるので、取捨選択できるようにしたい → スキルセット画面とスキル継承
・モンスターによって何らかの特化した戦術をとれるようにしたい → スキル適性
 でもこれはややこしいだけかもとも思っているので、適解ではないかもしれない…
・数の暴力はある程度の脅威を持たせたい → リンケージのシステムがあるので、範囲スキルに減衰補正を持たせるとか
……こんなところ まだまだ練り不足やも

☆重要だけど後回し:さくせんコマンド
 戦闘コマンドはデフォ同様選択できるつもりではあるけれど、
やはり何十何百もの戦いをする中で雑魚相手にいちいちコマンドを選択したくない…
DQシリーズみたくガンガンいこうぜ的な大雑把に行動を指定できる「さくせん」コマンドを導入したいと思っている
でもこれが後回しな理由は、必須ではないことと作成難度がけっこう高そうなとこにある
理想でいえばFF12のガンビットみたいなの作れたらなーという願望も

☆重要だけど後回し:素材アイテムの使い道
 アイテム設定と敵のドロップ設定だけはしてあるものの、その用途を何も考えていないという…
単に売却アイテムにする手もあるので後回しでもいいかと考えつつも、
アイテムに関しても合成システムみたいなものがあると楽しそうだなぁとは思う
メジャーなシステムのもので考えると装備アイテムの製造などだが、ランダムオプションと製造はオフゲーでは相性があまりよくない
固定能力値のアイテムを製造できることにすると、相当数のアイテムやパラメータを設定する必要がでてきても…
それはそれで大変な手間を増やすだけになりそうだし、なにより今作はもうランダムエンチャントである程度固まっている

☆重要だけど後回し:ワンダリングNPCの設定
 ライバル冒険者的なやつ FuhrungWeissでもなかなか面白く仕上がった要素だったので、よりパワーアップさせて登場させたい
このシステムもある程度は作成できているものの、交流要素みたいなものがまだ手つかず
前作は一期一会でその時ばかりのランダムメッセージを作成すればよかっただけだが、
今回は友好度みたいなので関係を積み重ねることができる要素にしたいという予定
作り込むとすると際限なくなってきそうなのでこれ以上は後回し…

▼ まとめ
まだ実現したいシステムが色々残ってはいるものの、やっぱり主要マップ作りが優先課題かなと思ったので、しばらくはこれに専念か・・
 

バケットモンタージュ #30 敵グループ設定

4月1日にNEETになりましたなどと呟いていたけれど
実は冗談じゃなくニートになってました。
(そもそも正社員が辛くてバイトでやらせてもらっていたという経緯もあるのだけれど)
契約終了通告された後、最後の月の残業デイズでわりと全力使い尽くしてやりきったので、
しばらくはもう創作趣味に没頭するぞという決心がついた。

そんなわけでネガ記事は過去月のアーカイブに吹っ飛ばしてやった。
と、いいつつも4~5月は生活サイクルがあまり変わらず、ソウルワーカーとかいうオンゲして遊んでたり・・
体力不足を改善すべくランニングを日課に加えたり・・というのであまり創作の進みはよくなかったけども
6月からはぼちぼちやりかけてた部分に手を加えはじめて何かと進んできた。

やりかけだったショップシステムを完成させたり、品揃えの更新を実装したり、
シンボルの視界探索を動かしたり・・敵の自動湧きや宝箱のシステムを作ったり・・
そしてツクってる最中に浮上した面倒な問題が、敵の種類が多すぎて敵グループ、エンカウントリストの作成が地味に手間かかるということ
20160701173812.png
いわゆるコレ
コレを地域ごとに設定しだすと、このちっさいウインドウで敵を探すのが大変
愛用してるSupponブログさんのエネミー大量・ランダム出現スクリプトを使ってるので、ID設定はできるものの
IDだけで設定すると、あれここに敵何設定したっけ?と思い出すのが大変になるので、メモのためにエディタ上に敵配置をしてたりしていた。
まあこれが地味にめんどい

20160701180457.png
そこで・・!
名前で設定することにした。

エクセルベースでモンスターデータは管理しているので、フィルタなどで条件をつけて探すのはできる。

20160701180514.png
そうして作ったリストをベースにIDリストをスクリプトで自動生成!
キーになっている"草原"などのワードをマップ名に含むか?でマッチさせて
エンカウントリストを取得できるようになった。
これでいちいちマップやイベントに敵グループのIDを指定する手間も省けた!やったー

敵出現率については一部はレアグループに含まれるIDをレアモンスターとして定義して出現率を下げてみたり、
基本はモンスターランクを使って出現率を一括操作することにして、ランクの低いやつほどでやすく、高いランクほどでにくい感じにした。

敵の湧きっぷりについては、とりあえずマップの広さ(width×height)の0.5%をMAXの出現数として、ちょっとずつ湧かせる感じの設定に。
なるべく大まかに自動的に設定されるようにしておいて、後で調整できるようにしとく方針が良さそうです。

ゴゴゴ・・

ドドドド・・・
NEETになりました。

バケットモンタージュ #29 ランダムダンジョン

※某らんダンのことではない(むしろあれダンジョン自体はランダムじゃないと思う)
兼ねてからやってみたかったランダム生成ダンジョンの仕組みがふと浮かんだので、やってみたらできたった。

不思議なダンジョンみたく部屋と通路を分けたランダム生成のダンジョンっていうのはわりに見かけるけど、
自分としては、よりもっと無造作な配置のランダム生成がしてみたかった。
Fuhrung Weissでも、漆黒の終点地マップはランダムっぽくなっているけれど、あれはマップを複数用意して移動先を変えているだけだった。
ゲーム内で可変的なマップを作るという技術がなかったので、前は工夫で頑張ってた。(XP時代はすごいスクリプトが配布されてたけど)

20151026230103.png
(床のみ)
これの上2マスと下2マスはXのみランダムで、固定で出現するようになっている入口と出口にあたる部分。
それを繋ぐように床配置が理想的なランダム感になっている・・
ただこれだと、壁を配置したときに見栄えが変になってしまうので、壁部分ができた場合は高さ3を確保するように改良が必要になった。

ロジック的にはこんな感じになっている。
20151027013915.png
配列を1個用意して(ここではpos)、ここに追加したマスをいれていく。

まずは入口用の上2マスを用意してから、そこを起点として1マス下に追加する。
追加されたマスを今度は起点として、隣接する、左、右、下、に一定確率(変数prop)で1マス追加する。
追加されるマスがなくなるまでこれを繰り返すだけ、・・と実は結構シンプル。

条件として、すでにマスが配置されているマスや、領域外のマスは除外。壁の高さが確保できない場合も除外判定を加える。
終了条件となるY座標になるまでに、左と右の追加判定後に追加マスがなかった場合は、下マスは確定で追加。
それ以外では下マスは左と右と同様に確率で追加・・ といった具合。

処理的に無駄もそんなにないと思うし、結構これで満足な出来。
迷路とか作るプログラムの方が難しそうだなー。こういうの大学の講義とかでやってたら受けたかったものだ。

ちなみに追加確率変数を変えると・・
20151027013712.png
80%でこんな感じに。ほぼ左右に追加されていくので空きマスがかなり減る。

20151027013740.png
40%にすると、ほぼ一本道に。
左右に追加されない場合、下追加は必ずされるから、確率を下げていくと一本道になりやすいよう。

こういう変動もおこせるとバリエーション豊かになるので、この確率もランダム化させたら面白そう。

あとはこれにちょっと面倒だけどオートタイルの設定をして壁と天井つけていけば本格的なダンジョンに仕上がりそう。
自分としてはもう床だけでも満足な感じだけども。
床や壁タイルのIDも可変にすればさらに見栄えも多様性が増しそう・・
マップオブジェクトもランダム配置で・・これこそ入る度に変わる変幻自在ダンジョンですわ。
そうマップチップという細分化された素材たちはランダム設置のためにあったではないか・・?!(もう自分でマップ打つ必要ないね!)

……と、いっそこれだけでもゲーム一本作れそうな勢いだけど、たぶん挑戦ダンジョンみたいなサブコンテンツ的なものでだす予定。
なんだかんだランダムだけに頼ると、それもまた規則的なものに見えてきちゃうからなぁ……。

バケットモンタージュ #28 善悪度

20151025022101.png
また細かいシステム的な話になっちゃいますが、エシクス(善悪度)について。
道義的に良いことをすると増えて、悪いことをするとマイナスされていくプレイヤー用のパラメータ。
ようはElonaでいうところカルマ(業)のことっすね。そうですElonaのパクリです。
オウガバトルでいうところのアライメントでもあるかな。秩序を好むか、混沌を好むか・・
まあ同じような概念であっても、ネーミングを変えて独自の解釈を盛り込むっていうのはオリジナリティ面で意味あることだと思う。

Ethics は道徳とか倫理観という意味だそうで、プレイヤーキャラの業の深さというよりも、心の傾きを表すイメージ。
いうて結局のところ悪事を働くと下がるんですけどね・・。

これというのは、魔物を使役することで色々無茶なプレイ(器物破損やら)ができるようにしたかったためと、
けれどもそこにリスクを介在させたいという思いの元に生まれたシステム。
正しい道順で普通にプレイすることももちろんできるけど、それに加えて、邪の道・・
ペナルティあるけど本当にこれする?しない?というプレイヤーの選択幅を広げたい目的があるわけです。

そこで、どんなメリット・デメリットを用意するかの構想だけども・・

● エシクス = 善
・祝福の恩恵が大きくなる

● エシクス = 悪
・NPCの態度が悪くなる
・不審人物に襲われる確率が高まる
・死亡時のペナルティリスクが高まる(自分が与えた損害分に応じて)
・死亡時に地獄に落ちる可能性が高まる
・兵士に呼び止められる ⇒ あまりに悪名高いと投獄される危険も
・施設が利用しにくくなる
・指名手配される
・呪いをかけられる
・幽霊に憑りつかれる(幽霊系モンスターをゲットするチャンスだ!)

といった具合で、基本的に善だと特に何かあるわけでもないが、悪だと不利益を被ることが多い。
悪事を働くと、即時的には確実な利益が得られるけど、後々損する可能性が増える、
善行を働くと、巡り巡って後から儲けになることもある、といった感じ。

物資の少ない序盤は悪事プレイも良いかもしれない。そこらへんの勇者だってタンス漁りくらいやってる。
悪プレイができるからこそ、正義の魔物使いというのも逆にひねくれてて反骨精神があっていいかもしれない。

そんなこんなの善悪度システム(作るとなると分岐がめんどくさそうだなと思いつつ)でした。



そいえば今作BGMを伝説の同人音楽家のキノ子さんが作ってくれることになりました。
(あの幻の・・!音楽家・・! ・・幻のマッシュルームなどと書くとどこか危険な香りがしますが)
まだ完成は先になると思いつつも、有り難い申し出だったので、こんな曲がほしい!なんてイメージを色々注文しちゃいました。