読者です 読者をやめる 読者になる 読者になる

鳥小屋.txt

ゲーム作ったり、Web的なことしたり、ぐだぐだしたりしますねヽ(・x・)ノ

【ツクールMV】ブラウザゲームを公開する前に回線速度が遅いとどうなるか確認したい!

この記事は「RPGツクールMV Advent Calendar 2016」の14日目の記事です。

みんなー、ツクツク〜?

昨日は 栗下義孝 さんの『初心者でもできる!なんちゃってドット絵講座』でした。
力作記事すぎる……これを参考にちょっとタイルチップとか作ってみたいです。

お題:ブラウザで動くゲームつくりたいよね

f:id:ru_shalm:20161214004121j:plain

RPGツクールMVはマルチデバイス対応ということでWeb出力に対応しており、
PCやスマートフォンのブラウザでもゲームをプレイすることができます。
ダウンロードしてZIP解凍して……の流れはなかなかハードル高いですが、
アクセスした瞬間にゲームが始まっちゃうブラウザゲームは
気軽にプレイしてもらうことができてとても良いですね!

(僕もDLしたのに解凍してないゲームがいくつも……)

…と言ってみたものの、実際に完成したゲームをWebで公開してみたら、
めっちゃ「Now loading...」言われてる>< なんてことが起きたりします。

今回は「こんなはずじゃ…(◞‸◟)」となる確率をなるべく下げるため、
回線速度が遅い場合どうなるか?を確認する方法を紹介します。

スマホ向け〜という予告でしたが、それはエターなりました…

それって何の役に立つの?

f:id:ru_shalm:20161214005350p:plain

普通のテストプレイだと気づきづらい、
読み込みが重すぎる部分が無いか確認することができます。

  • フォントが大きすぎて「Fail to load GameFont」しやすいかも、とか
  • 最高に盛り上がるイベントなのにピクチャの読み込みが間に合ってない、とか
  • イカす音楽が鳴ってない!とか

などなど。
どこの部分で重そう、みたいなアタリがつけば、
以下のような方法で対策をすることが可能です!

準備その1:まず「ローカルサーバ」を用意しよう

テストプレイボタンを押すと出てくるゲームウィンドウは
ローカルファイル読み込みで動作してしまうので、
あんまりブラウザゲームのデバッグには向いていません……

かといって、テストプレイのたびにサーバにアップロードするのは
面倒すぎて死んでしまうので、自分のPCのなかに
確認用サーバを用意してしまいましょう。

方法はいっぱいあって紹介しきれないのですが、
先日しげまろさんが書かれた以下の記事がとてもわかりやすいので、
参考にしてみることをおすすめします!
(スマホって書いてあるけどPCでも確認できるよ)

準備その2:Chromeで開いて「開発者ツール」を表示する

おそらく「http://数字.数字.数字.数字:8887」みたいなURLで
開発中のゲームが開けるようになったと思います。

このURLを Google Chrome で開いたら、 ゲーム画面外の黒い背景の部分で右クリックし、
出てきたメニューの中の「検証」を押しましょう!

f:id:ru_shalm:20161213235852p:plain

ここを押すと

f:id:ru_shalm:20161214000138p:plain

こんなのが出てくるです。
(ゲームウィンドウで F8 を押したときに出るやつです!)

実践:ネットワークのエミュレートをする

早速ですがゲームの読み込みを低速にしてみたいと思います。

f:id:ru_shalm:20161214000902j:plain

「Network」タブの「No throttling」をクリックすると…

f:id:ru_shalm:20161214001000p:plain

なんかいっぱいでてきます。

この一覧は、どういう回線速度をエミュレートするかの選択肢です。
例えば「Regular 4G」を選ぶと、
フツーのLTEなスマホの回線速度をエミュレートできます。

f:id:ru_shalm:20161214001618j:plain

「Disable cache」にチェックをつけると、
ブラウザのキャッシュ機能を無効にしてくれるのでおすすめです。

選択したらページを再読込してみましょう。

f:id:ru_shalm:20161214001800j:plain

おっせええええええええええ!!!!!!!!

というわけで、スマホくらいの回線速度をPC上で再現できました!

まとめ

この記事ではGoogle Chromeの開発者ツールをつかって、
PC上で回線速度が遅い環境を再現する方法を紹介しました。

ブラウザ向けのゲームをつくるのは正直なかなか難しいです><;
ですが、自分のゲームを遊んでもらえる可能性はとても高くなりますので、
なるべく挑戦してみることをおすすめします!

明日の記事は terunonさん です。おたのしみに!


供養のお知らせ

この記事で使っているスクショに写っている
「百人村の死霊使い」というゲームは
残念ながらエターなったものです▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂

年末なので供養供養……

読み込み失敗時リトライ表示さん for MV

f:id:ru_shalm:20161127222355p:plain

プラグイン概要

主にWebブラウザ用出力の際に発生しやすいファイルの読み込みエラーが起きた際、
自動的に何回かリトライするように設定します。
また、リトライしてもダメだった場合、画面上にリトライボタンを表示し、
プレイヤーがボタンを押したら(または決定キーを押したら)再度読み込みを開始します。

要はスマホで一瞬圏外になったりして読み込み失敗したときに、
死ななくて済むようにするプラグインです。

【注意】暗号化データには対応していません

具体的な仕様

以下のようなルールで動作します。

・JSON(マップデータなど)、画像の読み込み失敗時

指定回数(デフォルト3回)読み込みをリトライします。
リトライしてもダメだった場合、リトライ画面を表示します。

・音声の読み込み失敗時

指定回数(デフォルト3回)読み込みをリトライします。
リトライしてもダメだった場合、音声再生をなかったことにします。

プラグインのダウンロード

Torigoya_RetryLoadPlus.js ダウンロード

右クリック→「名前をつけて保存」したものを plugins フォルダに入れてご利用ください。

利用規約

RPGツクールMV(RPG Maker MV)内での使用の場合は自由に使用できます。
有償、改変配布など、制限項目はありません。


以前、小物プラグイン集で公開していた
「ファイル読み込み自動リトライプラグイン」のリメイク版です。

電車内で某ゲームをプレイしてたら一瞬圏外になった瞬間に通信エラーが起きて
そこまでのプレイが全部パーになる悲劇に出会い、ついカッとなってつくった><;

『魔導箱のグリモワール』をつくった話

f:id:ru_shalm:20161127013423j:plain

ぼく、2年ぶりのゲーム公開なんです……(エターすぎる日々)

というわけで、『魔導箱のグリモワール -Leyak's Cube Grimoire-』というパズルゲームを公開しました。

思ったより遊んでもらえたりコメントしてもらえてて、とてもうれしい…!

で、せっかくとても久しぶりにゲームを公開できたので、ちょっとした雑記みたいなものを書いてみようかなと思います。

RPGジャナーイな話

えっとね、企画当初はRPG要素みたいのも入れようとしてたんですよ…?
赤のブロックを1000個消費して炎の魔法を覚えてダンジョンに〜みたいな。
(なので、内部的にはどの色を何個消したか記録できるようになってたり)

でもね……そんなこと始めたら絶対エターなることに気づいちゃったからやめたんです…ゆるして><;

ちなみにパズル部分以外はフツーのプラグインの形式でつくっているので、
実績機能とかは説明書とか書いて素材として公開するつもりです。

PCでのプレイがなんか不遇な話

ブロックの移動が斜めだからね! PCだと斜め移動難しいもんね!

PCだと難しいのは割とわざとです。
スマホで遊んでもらえるとうれしいな〜という感じなんです。
スマホからじゃないと解除されない実績もあるしね()

上でめっちゃしゃべってる話

f:id:ru_shalm:20161127013609j:plain

スコアアタックしかないパズルでも世界観っぽいことしたい!

というわけで、魔導師のレヤックがめっちゃ喋ってます。
ゲームのヒントになる内容が2%くらいで、98%くらいはどうでもいいこと喋ってます。
(ちなみにセリフは70パターンくらいあるよ)

「ゲームとして面白ければ絵は記号でもいい」みたいな話もありますが、
実際そんなことないし、雰囲気とかも大事だと思うんですよね。
スコアアタック系のパズルは無機質な感じになりがちな気がするので、
セリフ吹き出しでゆるふわした雰囲気でてるといいな。

ちなみにキャラを2人置いて会話させようかとも考えたのですが、
会話だとじっくり見てないといけなくなるのと、
何より絵を2キャラ分描くのは僕が溶けるのでやめました……

ハイスコアの話

f:id:ru_shalm:20161127013917j:plain

僕の最高スコアです。
これ超えたらすごすぎるので自慢しまくってください!(?)

次回作の話

次こそはRPGツクールしたいよね……!

【オートポーション】ダメージ時自動アイテム/スキル使用さん for MV

f:id:ru_shalm:20160619132005j:plain

  • 2016/09/19 かばう時に動作しない問題について対応しました

プラグイン概要

戦闘中に攻撃を受けた際に自動的に使うアイテムやスキルを設定できます。
いわゆる「オートポーション」とか「オートフェニックス」とかそういうやつです。

<注意>
カウンタースキルではないため、攻撃技を設定すると明後日の方向に飛んでいきます><;
回復アイテムとか回復スキルとか設定してね!おやくそくだよ!

使用方法

f:id:ru_shalm:20160619132938p:plain

メモ欄に設定を記述することで有効になります。 アクター / 職業 / 武器 / 防具 / 敵キャラ / ステート のメモ欄で設定できます。

メモ欄での設定項目について

<AutoItemMe/hp[50%]: 1>

■ 誰が攻撃されたときに発動するか?( Me の部分 )

  • Me:自分
  • Friend:味方の誰か

■ 条件を何にするか?( hp の部分 )

  • hp:残りHP
  • mp:残りMP
  • tp:残りTP
  • state:付けられたステート

■ 条件の値( 50% の部分 )

  • 条件が hp / mp / tp のとき
    • xx%: 指定%以下になったとき
  • 条件が state のとき
    • ステートのID(例:戦闘不能の場合は 1

■ 使うアイテムのID( 1 の部分 )

ここで指定したIDのアイテムを使用します。

アイテムではなくスキルにしたい!

<AutoSkill/hp[50%]: ○○>

↑のように AutoItem の部分を AutoSkill と記述することで、スキルを使用させることができます。

設定の例

##
## 基本的な使い方
##

# 自分のHPが50%以下になったらアイテムID: 1を使用する
<AutoItemMe/hp[50%]: 1>

# 仲間の誰かのMPが30%以下になったらアイテムID: 2を使用する
<AutoItemFriend/mp[30%]: 2>

# 仲間の誰かがステートID: 1(戦闘不能)になったら、スキルID: 100を使用する
<AutoItemFriend/state[1]: 100>


##
## 秘密の機能編
##

# 自分のHPが50%以下になったらアイテムID: 1を使用する。
# アイテムID: 1が使えない場合は、アイテムID: 2を使用する。
<AutoItemMe/hp[50%]: 1, 2>

# 自分のHPが50%以下になったらアイテムID: 1を消費せずに使用する。
<AutoItemMe/hp[50%]: 1!>

注意点など

攻撃アイテム・攻撃スキルを設定すると正しく動きません

必ず効果範囲が「味方」または「自分」のアイテム・スキルを設定してください

発動する優先度

同じキャラクターに対して複数のオートアイテムが発動する場合、
以下のルールに従って、どちらを使用するかが決定されます。

【優先度:高】ステート > HP > MP > TP【優先度:低】

【優先度:高】自分スキル > 自分アイテム > 仲間スキル > 仲間アイテム【優先度:低】

あれ?発動しない?

  • 使用条件を満たしていないと発動できません
    • アイテムの場合:アイテムを持っている必要があります
    • スキルの場合:MPなどが足りている かつ そのスキルを覚えている必要があります
    • ただし <AutoItemMe/hp[50%]: 1!> のように IDの後ろに半角の ! が付いている場合は無視して発動します
  • 1人のキャラクターに対して複数人が同時にオートアイテムすることはできません
    • ハロルドが攻撃されたときに、他の3人全員がハロルドにアイテムを使ったりはしません

ちょっと条件がややこしいですね……
無限ループにならないように色々調整しています><

プラグインのダウンロード

Torigoya_AutoItems ダウンロード

右クリック→「名前をつけて保存」したものを plugins フォルダに入れてご利用ください。

利用規約

RPGツクールMV(RPG Maker MV)内での使用の場合は自由に使用できます。
有償、改変配布など、制限項目はありません。


作っているゲームで使いたくなって作りはじめたものです。
最初、他のプラグイン組み合わせてやろうとしたのですが、
すごく複雑になって「うーーーーん…」となり、
自分で必要な分だけプラグイン書くか〜すぐ終わるだろ〜と言って始めたのですが、
完全に見積もり失敗だったよね()

ゴールデンウィーク中につくったものの話

ブログをブログとして使ってない問題に気づいた。
なので、僕を楽しませてくれたのに死んでしまったゴールデンウィークにつくったものについて書きます。

ru-middleman-template

Middlemanでサイトをつくるときに使う、僕専用のテンプレートセットです。
毎回同じような設定をかくのは面倒なので、ここから落としてきてすぐにページを作れるように〜〜というのが狙い。

Middlemanはv4からAssets Pipelineが廃止されて、外部のビルドツールとうまく連携するための仕組みであるExternal Pipelineが導入されました。
これホントに僕が欲しかったもので、むしろRailsにも欲しいくらいだ(どうやって)
結局JS類のビルドはnodeに任せるのが一番で、ヘルパーとか文字列処理とかはRubyで書きたい٩(๑❛ᴗ❛๑)۶

もしかしたら、これ使ってツクールのプラグインとRGSS素材は鳥小屋.txtから切り出すかもしれない。
RGSSのときはあまり数作ってなかったから良かったけど、プラグイン細かくし始めたらキリがない〜。
(公開してるけどまだ紹介記事書いてないプラグインとかあるし。。。)

mihatter gem

見張ったー。Twitterの検索APIを無限ループで叩きまくるgemです。

TwitterにはStreaming APIというツイートを垂れ流しにしてくれるものがあって、
さらにそこに検索フィルタを挟むことができるのですが、残念ながら日本語に対応していません…。
なので検索APIを叩きまくるのは仕方ないね。うん。検索はAPI規制も厳しくないし大丈夫大丈夫、みんなやってる。

require 'mihatter'

Mihatter.configuration do |config|
  config.consumer_key = '.....'
  config.consumer_secret = '.....'
  config.access_token = '.....'
  config.access_token_secret = '.....'

  config.keyword = 'がんばるぞい OR 頑張るぞい'
end

watcher = Mihatter::RestWatcher.new
watcher.run! do |tweet|
  puts tweet.text
end

なんでこんなgemを作ったのかは以下につながります。

Zoint version.2

f:id:ru_shalm:20160510003504p:plain

昔作った同名サービス( http://zoint.rutan.info )のリメイクです。
誰かが「今日も一日がんばるぞい!」などとツイートするとカウンターが1増えて、
その日何回がんばるぞいされたのかを表す「ぞい数」が集計されます。

昔つくった版のほうは実はバグっていて、ときどき数字がおかしくなります。
また、以前は「今日も一日がんばるぞい」にしか反応させていなかったのですが、
制限をゆるめて「がんばるぞい」だけで反応するように変更しました。

トップページにはその日の数値しか出ていませんが、
隠しAPIの https://zoint.arukascloud.io/zoi.json にアクセスすると一週間分の「ぞい数」が取得できるほか、
https://zoint.arukascloud.io/zoi/2016-05-09.json のような日毎の「ぞい数」を返すAPIもあります。
毎日3000回近い「ぞい」が記録されておりますので、我が国はみんな頑張っていることがわかりますね。

また、デプロイ先は今回はHerokuではなく、さくらちゃんのArukasを使用しています。

というわけで、Zointの作り直しをした際に書いたツイートの取得処理部分を切り出したのが mihatter gem になります。

Blinkman::TwitterSearch

f:id:ru_shalm:20160510002802j:plain

さらに mihatter gem を流用して作成したのがこちら。
blink(1) というUSBポートに刺してプログラムから自由にピカピカさせることのできるLEDを買ったのですが、
あまり有効活用できていないので「がんばるぞい」というツイートに合わせて光らせるものをつくりました。

↑の記事で紹介されているBlinkmanというgemのプラグインとしてつくりました。便利〜。

その他

  • RPGツクールMV用のプラグインを作っていた(未完)
    • エターなったゲーム用に書いたものを全部素材化しようと思って…
  • Potmumにリビジョン機能を入れようとしていた(未完)
    • 元々入れるつもりだったのだけど準備があまりにも足りなくてまだ終わってない
  • クラシックダンジョン 戦国 の体験版で遊んでいた
    • ドット絵書くだけで数時間飛ぶ

今年のGWは有意義でしたね!
Ruたんの次回作にご期待ください!