フワフワソが「ソラとピヨちゃん」や「宮本県」を作るブログ(フワフワソ・ラウンジnew!)

ラノベとテクノを愛するふわふわがノベルゲームを作っています。あと日常のことやイベントの告知なども。スクリプト関連の記事は自分用の備忘録です

ゲームのレベルデザインを学びたい

ゲームを面白くするにはどうしたらいいのか?

ということを悩みました。

ゲームの面白さ=難易度=レベルデザインかな?

と思いまして、そういったジャンルと思われる本をいろいろ読んでみました。

 

「レベルアップ」のゲームデザイン ―実戦で使えるゲーム作りのテクニック

「レベルアップ」のゲームデザイン ―実戦で使えるゲーム作りのテクニック

 

ゲーマーなら何となく知ってるかなということを、幅広く文字で起こして整理したような本。

レベルデザインについてはあまり書いていません

アクションやFPSのマップの作り方、ディズニーランドから学ぶステージの作り方などはなるほどという部分がありました。

 

ゲームデザイン脳 ―桝田省治の発想とワザ― (ThinkMap)

ゲームデザイン脳 ―桝田省治の発想とワザ― (ThinkMap)

 

 とてもおもしろかったです。

万人向けに自分の創作ノウハウを体系づけて語るのは無理なので、編集者個人に向けて書いた~というスタンスで書かれています。

そのせいかとても濃いです。

「レベルアップのゲームデザイン」の正反対に、狭くて深い個人的なノウハウが書かれています。

レベルデザインについては俺屍の記述がおもしろかったです。

 

組み立て×分解! ゲームデザイン ――ゲームが変わる「ルール」のパワー
 

とてもおもしろかったです。

レベルデザインについては扱っていません。

しかし、自分の知りたかったのはレベルデザインではなく、それ以前の「ゲームデザイン」だったのでは!? と気づきました。

既存にないジャンルとかゲームシステムを作るときや、既存のジャンルとかシステムを改造してオリジナルのものをつくるときに、どうやったらおもしろくなるのか? ということが書かれています。

最初に読むべき一冊と思いました。

 

遠藤雅伸のゲームデザイン講義実況中継

遠藤雅伸のゲームデザイン講義実況中継

 

 読んでる途中ですが、これは完全に買ってよかったと思った本です。

表紙の見た目で新書かと思ったんですが、全然違ってボリュームたっぷりです。

 レベルデザインについても章がありますが、マップ配置とかそういうアプローチではなく、時間とか確率からの解説がされています

電書が9/6まで999円になっているので、買うなら今という感じです。

kindleにはセール期間書いてないですが、たぶん他サイトと同じはず・・。

 

ゲームメカニクス おもしろくするためのゲームデザイン (Professional Game Developerシリーズ)

ゲームメカニクス おもしろくするためのゲームデザイン (Professional Game Developerシリーズ)

 

これは買ってもいないし読んでもいないのですが、すごく面白そうなのでいずれ読みたい本です。

 

 

 

 

義援金募金のご報告

義援金募金のご報告

c94の「宮本県」の売り上げの半分を、西日本豪雨災害への義援金として寄付させていただきました。お買い上げくださった皆様ありがとうございます。

こういうとき、募金先によって手数料とか経費を引かれたりするので、どこがいいのかと調べました。

日赤は全額を被災地に送ると言うことなので、募金先は日赤にしました。

「平成30年7月豪雨災害義援金」を受け付けます ~日本赤十字社は義援金“全額”を被災地にお届けします~|2018年度|プレスリリース|日本赤十字社

 

また、自分は支援金と義援金の違いが分かっていなかったのですが、義援金の場合は被災者に全額届くと言うことで、義援金として送りました。(支援金は受付終わっているというのもありますが)

www.nippon-foundation.or.jp

今回、災害テーマの作品を作ることでいろいろと勉強したり考えたりするきっかけになりました。7年前は自分が支援される側だったのもありまして、こういった募金などは今後も続けていきたいなと思います。

 

「宮本県」の今後について

ゲームエンジンを最新の物に変更して、移植&続編制作中です。

ゲームシステムもゲーム性を高めた物に変更いたします。

c94版の宮本県は、選択肢の結果が「死に覚えゲー」的な不透明さがあったのですが、推理要素を強くしたシステムにします。

(day1も最初から作り直す感じになります。その上で宮本県day1-2としてc95にリリースできればと思っています)

「エクストリーム取り調べソラとピヨちゃん!」の今後について

「推理」と「推理をピヨちゃんが引っかき回す」という相反する方向性の対立で問題を抱えて、制作が停滞していましたが、解決が見えてきた気がします。

宮本県の制作を通じて、技術力が上がったのもありまして、いい感じの新しいシステムが見えてきました。

リリースはもう少し後になりますが、いましばらくお待ちいただければと思います!

 

 

 

 

 

 

 

(ティラノスクリプト)タグの要素でtimeとwait入れるときの注意と、時間制限付き選択肢の作り方、[glink]が不安定になるトラブル

timeとwait入れるときの注意

ティラノでは画像や文字表示関連のタグで、表示にかける時間が入れられるようになってます。time=500 とかにしておくと、画像がふんわり表示されていい感じです。

しかしここで、同時にwait=false にしておかないと、他の表示関連のwaitとぶつかったときにバグります。

たとえば常駐ボタンをおいて、その表示関連でwait=trueにしたままだと、

ボタンを連打したときなど、[time=500 wait=true]の処理が終わらないうちにまたあらたな[time=500 wait=true]が発生するのでおかしなことになります。

ボタン関連は必ずwait=false

連打に備えて、timeもなるべく0に近くしたほうがいいと感じました。

 
時間制限付き選択肢の作り方

wikiを拝見したところ、[glink]のあとに[s]の代わりに[wait=10000] などを入れればいいと分かりました。

そこで、カウントダウンの表示ができるように作ってみました。

[glink]のあとに、[jump target=*timer]を置きます。

メッセージレイヤ1で、"f.timer = 15"の秒数をカウントダウンします。

*timer
[eval exp="f.timer = 15"]

[position layer="message1" opacity=0]
[layopt layer=message1 visible="true"]
*timer2
[ptext layer=message1 text=&f.timer x=100 y=400 size=40 name="timer" time=0]
[anim name="timer" opacity=0 time=0]

[anim name="timer" opacity=255 top=400 time=1000]
[eval exp="f.timer = f.timer - 1"]
[wait time=1000]
[freeimage layer=message1]
[if eval exp="f.timer > 0"]
[jump target=*timer2]
[endif]
[jump target=*jikangire]

 

*jikangire

;タイマー消す
[freeimage layer=message1]

;タイマーのスタック消す

[wait_cancel]

時間切れ

[anim]タグはwaitを入れる必要がない(アニメの完了を待たない命令)ので、入っていません。

以下の部分は[glink]をクリックして飛んだ先でも必要です

;タイマー消す
[freeimage layer=message1]

;タイマーのスタック消す

[wait_cancel]

タイマーのスタック消す[wait_cancel]というタグがあったので、一応入れました。必要なのかどうかはよく分からないのですが。タグリファレンス読むとタイマーの途中でジャンプしたら入れた方がいいような気がしました

 

 この記事をなぜ書いたかというと、時間制限の表示を作っていたときに、waitのある常駐ボタン表示とぶつかってめちゃくちゃになったためです。

こうして原因が分かってしまえば簡単なのですが・・・><

ーーと、ここまで書いてから新たな問題が発生しました。[glink]が妙に不安定になってしまいました。

 

 [glink]が不安定になるトラブル

上記のスクリプトで、

1)[glink]で時間制限付き選択肢を表示させる

2)選択肢クリックでジャンプした先で、ちょっとしたメッセージを表示させて、1)のラベルに戻る

というテストをやっていました。

とろこが、[glink]の選択肢をクリックした後の動きが妙に不安定になりました。

[glink]を連打してると、2)のメッセージ表示の途中でフリーズしてしまう事態が発生。

毎回ではないのですが20回に1回くらい起きます。

発生条件を調べたのですが。選択肢外の場所を何回かクリックした後に、選択肢と選択肢外の境目の微妙なところをクリックするとフリーズするような感じがしました。

どうもはっきりとは分かりません。スクリプトの書き方が悪いのかもしれないですが、[glink]の代わりに[button]でやると問題なく動きます。

自分では解決できないので、[glink]を使うのはやめて[button]にすることにしました・・・。