Pluglog

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

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Comments (-) Trackbacks (-) スポンサー広告

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

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

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

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

バケットモンタージュ #27 Vit&Manaゲージ

そういえば日記にしようと思っていたあったネタがあったので投稿。
システム自体は前からあったものだけどまさかほぼ一年越しの日記になるとは・・
ようやく制作復帰できそうになってきたこの約一年、思えば長くも早かった・・矢のごとし光陰ですわ

20140829214206_.png

さてこの新たなシステムVit&Manaゲージですが、これはモンスターではなくプレイヤーに付随するステータス値。
いつしかの記事で、時間経過に対するデメリットを持たせたいみたいな話の、一つの結論としてこれになった。
VitはVital・・つまりはプレイヤーの体力ゲージ。時間経過と同時に減っていく。0になるとしぬ。
活動限界みたいなもので、まあたまには町とか村に帰れよ、みたいな要素としての位置づけ。
一部無茶な行動をするとイベントでも減る。

Manaはそのまま・・プレイヤーの魔力ゲージ。時間経過と共にわずかに回復。
これは特殊な、少しありがたい恩恵にあずかれるためのボーナス点のようなもの。
使い道としては魔物の捕獲時に消費、仲間のモンスター死亡時に何ターン後かに自動で復活させる、
あとは妄想段階だけどフィールドで魔力の注入を行うとパーティ全回復、ダンジョンで邪魔な障害物の破壊などなど・・

パーティメンバーが死亡して、復活させるのってRPGではお決まりだけど、決まりきった手間でもあるんだよね。
いっそのこと自動で復活させるくらいのが遊びやすいんじゃない?ということからそういう方針に。
基本的にこのゲームは黒魔術で魔物を操ってる設定なので、死んでも生き返せてなにもおかしいことはないな。
即時蘇生だと死亡リスクがなさすぎるので、数ターンのタイムラグ(ATBなので数秒だが)+Manaという有限リソース消費でバランスをとる。
リスポンキルされてもつまらないので、ターンをかけた分だけ回復量も増し増しということで良いではないか。
強敵に挑む際にManaがあれば多少の無茶できるけど、Manaが減ってきたらそろそろ引き上げた方が良さそうだなという判断の余地が残せる。
一度の戦いで勝負が決するよりも、数十戦の戦いの中でじりじりと削られていくような、長い目での戦略が重要になるゲーム性を目指したい。

あとフィールドで全回復!は、これもまた従来のRPGだと戦闘後にアイテム使って回復させるという常套手段があるけども、
やること決まってるのでだいたいこれも手間になりがち。
フュヴァ(Fuhrung Weiss)ではこれを嫌ってフィールドで使えるアイテムを制限したりしてみたのだけども、
戦闘時に回復アイテム使えるのに、フィールドで回復できないってちょっと筋が通らないんじゃないみたいな節もあった。

今回も、Manaで蘇生ができんなら回復くらいできんだろというのが真っ当な論理のようでもある。そこで魔力注入。
ドラクエでいう「まんたん」みたいなコマンドで、回復の手間を省く工夫があったりするけど、まあそれに位置するものがコレ。
減少体力に合わせた消費量にすれば、無駄のない感じで気分もいい。
でも個人的にはフィールドでモンスターの体力は自然回復させるのが好みなので、このシステム入れると衝突してしまうのが微妙なところ。
やっぱこれはいれないかも。

這い出るちゃん

しばらくぶりに土の中から這い出てきました。
色々重なって、なんだかナイーブな記事が多かったですが、だいぶ心が落ち着けるようになってきた感じであります。
やっぱり一番響いたのは心弱ってるときに追い打ちてきにきたPC不調だったような・・典型的なネット依存症ですわ・・

居らぬ間に拍手コメントくださった方ありがとうございました。
内臓弱まってたのとワーキングメモリオーバーしてたというのはあるかもしれんです。

ゲーム作りたいという思いと、頭疲れちゃって集中する気力が湧かない状態の板挟みだったので、
これはもう充電期間と割り切って消費趣味に明け暮れていました。
アニメみたり将棋動画見たりアクションゲーム的なのやったり・・癒しの時・・。

しかしなーこうしているうちに>突然の死<を迎えないとも限らないからなあ・・
制作途上でこれ終わったら心残りになるなあー 没頭して作りたい・・
さらにこれ完成させてから不思議なダンジョンっぽいゲームやらカードゲーやらACTやら別ジャンルにも手をだしてみたいしいい
まだ15本以上はゲーム作りたい ・・という欲求が最近はふつふつと湧いてきて、これはまあ良い調子だと思いますわ。
このまま生活も心穏やかにいきたいですわ。そしたらいいものが生み出せるはず!これがわいの・・心念・・



wmap.png
下手くそですが今作の世界地図のイメージ。

これクオリティ上げられたら加工でごまかしてゲーム中で使おうかなーなんて思ってたけど、中途半端すぎたのでイメージでおわた。
地図にするならセピア色とかにしたらそれっぽくなりそうだけど、
イメージとしてはこのカラーリングも結構重要で、色相環的に各地にエレメントが割り振られている感じ。
東部に緑の森があって、南部に青い海があって、西部には暗黒の地があり、北部は溶岩地帯と山脈があります。
(どうせなら赤い海に青い山、紫の森とか緑の異界とかにした方がエキセントリックで良かったろうか?)
中央に人々の中心となる街や城があって、まあそこで物資を整えながら各地へ冒険するって感じですな。
ぷらげーではランプラといい、LMP(構想)といい、FuhrungWeissといい、よくあるパターン。
なんでかこの方式結構好きなんですが、何に影響されたんだろうか。
ポケモンで各地を冒険するってタイプのゲームをやってから、テリワンやったときに、
一つの場所を拠点としてゲームを進行させられる発想に衝撃を受けた覚えがあるので、それかもしれない。
でも今作はどっちかといえば、ポケモン的に各地を回らせるタイプの予定だけども。

まあこういう全体イメージがあるとゲームの幅も決まるし、ビジョンは定まってるんだけどなあ。
実際のマップ作るのはまた大変ですわ・・
~~~
そういえばサイトの掲示板が1年書き込みがなかったら跡形もなく消えてしまってましたわ・・
うーんせっかくいいとこ見つけたと思ったのになーfc2の掲示板使えばいいんかな。

進捗

すっごい久々にツクール触ったった。
正直ここ一月くらいは暇ではあったのだけど、comicoという漫画サイトやらエルソードというアクションゲームに再熱するやら、遊戯王が再ブームしたり将棋にハマったりして充実の日々を過ごしてしまっていた。
しかし久々にやったエルソードからはかなり良いインスピレーションをもらえた気がする。

まぁ本題の今回の地味な進捗はというと、時計の針の表示が戦闘とマップ表示とかで切り替わったときに消えたりする問題の解決・・
針の部分だけ自分で勝手にスプライト作成して表示させていたのだけど、
マップ移動後にF12押すと動作が停止するという面倒くさい状態になっていた。
エラーすら表示されないので、適当にスクリプトいじっててこの状態になっていたら原因不明になってそうだった。
たぶんこの手のバグはスプライトの解放処理がちゃんとできてないと起きる問題っぽい。

まぁやっぱりあまり適当にスクリプト処理加えるとよくないなと思った。
ということで針の部分もピクチャ処理にして事なきを得た・・のであった。

地味ながらけっこうこれは大きな進捗だと思っている・・

あけまー

あけおめすー
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。