--
--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
01
2016

ティラノスクリプトで作成したゲームをWEBで公開したら重すぎる件についての対策 その2

Category技術
(記事:じゅんくん)

その2です。
実際にBuddy Collectionでどういった不具合が起きたのかということと、
不具合の原因を詳しく書いていきます。

ちょっと長いので、読むのがめんどくさい方は最後のまとめの部分だけ読んでも大丈夫です。



その1でも書きましたが、Buddy Collectionで起きた不具合は大きなもので二つありました。
(ほかにも細かい不具合がいくつかあった気がしましたが忘れてしまいました・・・)



1.NEWGAMEをクリック後、ストーリーが始まるまでが異様に長い
2.選択肢でセーブしたデータをロードして選択肢をクリックするとエラーが起きる



まず1の「NEWGAMEをクリック後、ストーリーが始まるまでが異様に長い」という不具合についてですが、調査したところこの待ち時間は「目パチ」の準備処理で発生していることがわかりました。

どういうことなのか解説していきます。

Buddy Collectionではキャラクターに瞬きをさせることが出来る「目パチプラグイン」を独自に開発し導入しています。
目パチプラグインではマクロを使用し、普通にタグを書くように目パチの処理を書くことができるようになっています。

[chara_blink]タグで目パチの準備処理
[chara_blink_start]タグで目パチの開始処理
[chara_blink_end]タグで目パチの停止処理

といった感じですね。

このマクロという機能、複数行にわたる処理を一行で記述できるようになり便利だなぁと思っていたのですが思わぬ落とし穴がありました。

それは「シナリオファイルが変わる場合はその都度サーバーからシナリオファイルを取得しに行く」というものです。

どういうことかというと、
例えばA.ksというファイルからB.ksというファイルに記述してある[test]というマクロを呼び出すとします。
すると以下のような動きになります。

1.[test]を実行するためサーバーからB.ksを取得する
2.[test]終了後、A.ksに戻るためサーバーからA.ksを取得する

わかりますでしょうか?
マクロを一回使うと往復で合計2回の通信が走るわけです。
これが「シナリオファイルが変わる場合はその都度サーバーからシナリオファイルを取得しに行く」ということなんですね。

ちなみにこれはマクロに限ったことではなく、[call]でも[jump]でもシナリオファイルが変わる場合はサーバーにアクセスし、シナリオファイルを取得しに行きます。

マクロを一回や二回実行する程度なら影響は少ないですが、回数が増えると影響はどんどん大きくなってきます。

前述した目パチの準備のために行う[chara_blink]タグ。
これはそれぞれのキャラクターのそれぞれの表情に対して記述する必要があるタグです。

バディコレの立ち絵があるキャラクターは信吾、悠、翔太、佐伯の4人。
それぞれのキャラクターの目パチが必要な表情の数を合計すると全部で28ありました。
すると[chara_blink]を28回実行する必要があるので、サーバーアクセスは全部で56回になります。
某無料ゲーム配信サイトで計測すると、自分の環境では大体一回のサーバーアクセスに0.2秒かかっていました。(プレイヤーのネット環境によってもっと早かったり遅かったりします)

0.2秒×56 = 11.2

目パチ準備の処理だけで11.2秒もかかっている計算になります。
これがNEWGAMEクリック後に異様に時間がかかっていた原因なんですね。



二つ目の不具合の「選択肢でセーブしたデータをロードして選択肢をクリックするとエラーが起きるも本質的には同じ事象です。

バディコレではセーブデータのロード時に読み込まれるmake.ksに、シナリオファイルの移動を伴う[call]やマクロ実行などを記述していたので、make.ksが終わるまでそこそこ時間がかかっていました。
すると、make.ks内での処理が終わるよりも早くゲーム画面の復帰が完了し選択肢をクリックすることができる状態になってしまいます。
その状態で選択肢をクリックするとエラー発生・・・となるんですね。
make.ksにいろいろ処理を書いている人には「あるある」なことだと思います。



【まとめ】
長々と書いてしまいましたが、重要なポイントは
「シナリオファイルが変わる場合はその都度サーバーからシナリオファイルを取得しに行く」
「シナリオファイルの取得に時間がかかると不具合の原因になる」
ということです。

続きます。
次回は具体的な対策について書いていきます。
スポンサーサイト

0 Comments

Leave a comment

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