■装備画面のレイアウト修正
使用プラグイン
・スマホ向けUI(UR65_SmartPhoneUI.js)
制作者:うろろこ様
http://tm.lucky-duet.com/viewtopic.php?t=153
・装備&ショップステータス改造 ver1.061
制作者:yana様
https://www6.atwiki.jp/pokotan/pages/3.html
□問題1
装備変更操作でタッチ/マウス操作が強制となる場合がある
Before(V1.0.8)
画像の場合だと「武器」カテゴリから「カード」カテゴリへ→キーで移動しようとしても、情報ページめくりに割り当てられているため移動ができないことが分かりました。
タッチ操作なら問題ありませんが、コントローラーだけで「カード」「アクセサリ」「チャーム」が変更できないのは不便です。
原因:
これはv1.0.8で導入した「ショップ/装備画面」を変更するプラグインの機能の仕様です。
プラグインのパラメーター調整でページ送り機能を無効にできないかとも考えましたが、他問題が発生するリスクを考え、今回は同プラグインの使用を見送ることにしました。
※誤解して頂きたくないのですが、このプラグインは多機能でとても良いものです。
例えば1列で装備が並ぶインターフェースなら、同仕様は問題になりません。
要は作品の仕様とプラグインの仕様、この組み合わせで起こっている悩みなのです。
そして、プラグイン導入以前の状態に戻した装備画面がこちらです。
UI的にもこちらの方が本作にはマッチしました。
After(v1.0.7)
□問題2
代わりにショップ画面がプラグイン導入前に比べてレベルダウンしてしまいました。
Before(v1.0.8)
After(v1.0.7)
これではせっかくv1.0.8で良い部分が損なわれてしまうので、代案を探しました。
見つけたのが次のプラグインです。
ショップウィンドウ改変
http://tm.lucky-duet.com/viewtopic.php?t=1063
作者:シトラス様
ただプラグインを導入したところ異なる問題が発生しました。
□問題3
1)プラグイン名が日本語名(アツマールではNG)
2)表示行のズレ、表示欠けが発生
おそらく、UIを変更している私の作品との相性によるもので発生しています。
After(v1.0.9)
1)は簡単に解決できました。
ファイル名とjavascript内の名称を同じもの、かつ英数字に直すだけです。
形式もUTF-8形式であることを確認しました。
2)プラグインファイルを参照したところ、全部で52のシンプルな内容であることが分かりました。
まず表示欠けの問題を解決するために調整したのが次の箇所です。
//ステータスの名前を表示
for(var i = 0;i < 8;i++){
this.drawParamName(x,132 + i*35,i)
「i*35」のiはパラメーター(攻撃力、防御力)の箇所で、35はフォントサイズと考えて
//ステータスの名前を表示
for(var i = 0;i < 8;i++){
this.drawParamName(x,132 + i*28,i)
「28」に変更してみました。
見事「表示欠け」が解消されました。
次は「表示行のズレ」に取り組みます。
行のズレなので「y軸の数値を調整」と、「フォントサイズを28に揃える」作業だと見当をつけました。
最終行付近にあった次の場所を見て
this.changeTextColor(this.paramchangeTextColor(changeParams[i] ) );
this.drawText( (changeParams[i] > 0 ? '+' : '') + changeParams[i], x, 60 + y + i*35, width, 'right');
次の通りに変更しました。
this.changeTextColor(this.paramchangeTextColor(changeParams[i] ) );
this.drawText( (changeParams[i] > 0 ? '+' : '') + changeParams[i], x, 60 + y + i*28 + 20, width, 'right');
「y軸の数値を調整」は+20
「フォントサイズを28に揃える」はi*28
画面を確認したところ意図した通りに調整できていることが確認できました。
今回はフォントサイズとy軸の調整箇所だけに限定できたので、簡単な部類の作業だったのだと思います。
こういう作業にも慣れて、自分の幅を広げていきたいものです。
こんな内容ですが、自己解決の考え方とかフローが参考になれば幸いです。
2017年01月06日
レイアウトの競合(Iconの位置ずれ)を直した手順
■レイアウトの競合(Iconの位置ずれ)を直した手順
私自身の備忘録的な意味を兼ねて。
問題点:
次のプラグインを同時に導入したところ、競合によりアイコンの位置ズレが発生
・スマホ向けUI(UR65_SmartPhoneUI.js)
http://tm.lucky-duet.com/viewtopic.php?t=153
・cellicom's Rarity Item Color System(cellicom_RarityItemColor.js)
http://forums.rpgmakerweb.com/index.php?/topic/49515-cellicoms-rarity-item-color-system/
装備アイコンが種別名に重なってます。
切り分け:
□cellicom_RarityItemColor.js
★「icon」で検索すると「this.drawIcon」以降で座標を決めている模様
★xとyを弄れば良さそうと推測して弄るも……上手くいかず
Window_Base.prototype.drawItemName = function(item, x, y, width) {
width = width || 312;
if (item) {
var iconBoxWidth = Window_Base._iconWidth + 4;
this.resetTextColor();
this.drawIcon(item.iconIndex, x + 2, y + 2);★
□rpg_windows.js(コアスクリプト)
★コアスクリプト側を見てもほぼ同じ
★つまりcellicom_RarityItemColor.jsはコアスクリプトの表示をほぼ継承しているから、ここじゃない
Window_Base.prototype.processDrawIcon = function(iconIndex, textState) {
this.drawIcon(iconIndex, textState.x + 2, textState.y + 2);★
textState.x += Window_Base._iconWidth + 4;
};
□UR65_SmartPhoneUI.js
★親切な記述付きでありました
//=====================================================
// アイコン位置修正
//=====================================================
if (using_iconposition) {
Window_Base.prototype.drawItemName = function(item, x, y, width) {
width = width || 312;
if (item) {
var iconBoxWidth = Window_Base._iconWidth + 4;
this.resetTextColor();
this.drawIcon(item.iconIndex, x + 8, y + this.lineHeight() / 2 - Window_Base._iconHeight / 2);★
this.drawText(item.name, x + iconBoxWidth + 14, y, width - iconBoxWidth);
★ここの「this.drawIcon」は前者2つと比較して、記述内容が異なることに注目
★つまり「UR65_SmartPhoneUI.js」プラグインに最適化された記述
★だったら「this.drawIcon」の記述に寄せれば、大丈夫なはず?と推測
対処1:プラグイン管理画面で並びを変更
これで「cellicom_RarityItemColor.js」よりも「UR65_SmartPhoneUI.js」が先に読み込まれるから「this.drawIcon」の記述も「UR65_SmartPhoneUI.js」が優先されるはず?と期待。
[期待したイメージ]
UR65_SmartPhoneUI.js>cellicom_RarityItemColor.js>rpg_windows.js
ダメでした。
対処2:cellicom_RarityItemColor.jsの記述をUR65_SmartPhoneUI.jsと同じように書き換え
★cellicom_RarityItemColor.jsのthis.drawIconが優先して読み込まれているのは分かったので、なら参照先を書き換えることに。
変更前
this.drawIcon(item.iconIndex, x + 2, y + 2);★
変更後
this.drawIcon(item.iconIndex, x + 8, y + this.lineHeight() / 2 - Window_Base._iconHeight / 2);★
成功しました。
□まとめ
・プラグインが競合している場合、どのプラグインが参照されているか突き止める
・参照されているプラグインの記述を、正常に動作したプラグインの記述で上書きする
少なくともレイアウト関係は、この方法が通じるかもしれません。
作品はこちらです。
よろしければ触ってみてくださいませ。
「地図の時間」
http://game.nicovideo.jp/atsumaru/games/gm868
私自身の備忘録的な意味を兼ねて。
問題点:
次のプラグインを同時に導入したところ、競合によりアイコンの位置ズレが発生
・スマホ向けUI(UR65_SmartPhoneUI.js)
http://tm.lucky-duet.com/viewtopic.php?t=153
・cellicom's Rarity Item Color System(cellicom_RarityItemColor.js)
http://forums.rpgmakerweb.com/index.php?/topic/49515-cellicoms-rarity-item-color-system/
装備アイコンが種別名に重なってます。
切り分け:
□cellicom_RarityItemColor.js
★「icon」で検索すると「this.drawIcon」以降で座標を決めている模様
★xとyを弄れば良さそうと推測して弄るも……上手くいかず
Window_Base.prototype.drawItemName = function(item, x, y, width) {
width = width || 312;
if (item) {
var iconBoxWidth = Window_Base._iconWidth + 4;
this.resetTextColor();
this.drawIcon(item.iconIndex, x + 2, y + 2);★
□rpg_windows.js(コアスクリプト)
★コアスクリプト側を見てもほぼ同じ
★つまりcellicom_RarityItemColor.jsはコアスクリプトの表示をほぼ継承しているから、ここじゃない
Window_Base.prototype.processDrawIcon = function(iconIndex, textState) {
this.drawIcon(iconIndex, textState.x + 2, textState.y + 2);★
textState.x += Window_Base._iconWidth + 4;
};
□UR65_SmartPhoneUI.js
★親切な記述付きでありました
//=====================================================
// アイコン位置修正
//=====================================================
if (using_iconposition) {
Window_Base.prototype.drawItemName = function(item, x, y, width) {
width = width || 312;
if (item) {
var iconBoxWidth = Window_Base._iconWidth + 4;
this.resetTextColor();
this.drawIcon(item.iconIndex, x + 8, y + this.lineHeight() / 2 - Window_Base._iconHeight / 2);★
this.drawText(item.name, x + iconBoxWidth + 14, y, width - iconBoxWidth);
★ここの「this.drawIcon」は前者2つと比較して、記述内容が異なることに注目
★つまり「UR65_SmartPhoneUI.js」プラグインに最適化された記述
★だったら「this.drawIcon」の記述に寄せれば、大丈夫なはず?と推測
対処1:プラグイン管理画面で並びを変更
これで「cellicom_RarityItemColor.js」よりも「UR65_SmartPhoneUI.js」が先に読み込まれるから「this.drawIcon」の記述も「UR65_SmartPhoneUI.js」が優先されるはず?と期待。
[期待したイメージ]
UR65_SmartPhoneUI.js>cellicom_RarityItemColor.js>rpg_windows.js
ダメでした。
対処2:cellicom_RarityItemColor.jsの記述をUR65_SmartPhoneUI.jsと同じように書き換え
★cellicom_RarityItemColor.jsのthis.drawIconが優先して読み込まれているのは分かったので、なら参照先を書き換えることに。
変更前
this.drawIcon(item.iconIndex, x + 2, y + 2);★
変更後
this.drawIcon(item.iconIndex, x + 8, y + this.lineHeight() / 2 - Window_Base._iconHeight / 2);★
成功しました。
□まとめ
・プラグインが競合している場合、どのプラグインが参照されているか突き止める
・参照されているプラグインの記述を、正常に動作したプラグインの記述で上書きする
少なくともレイアウト関係は、この方法が通じるかもしれません。
作品はこちらです。
よろしければ触ってみてくださいませ。
「地図の時間」
http://game.nicovideo.jp/atsumaru/games/gm868
2016年12月17日
RPGアツマール/タイムアウトについての備忘録
RPGアツマールにてゲーム投稿時に「タイムアウトしました:」が発生するため、試したことを記載します。
※2016/12/17現在、私の環境では解決していないため、参考にならない可能性はご承知おきください
■事象
・RPGアツマールからゲームを投稿すると、転送開始から10分後に「タイムアウトしました:」メッセージで失敗する
■環境
・通信速度
下り
推定転送速度: 743.23Kbps (92.37KB/sec)
上り
データ転送速度 310.18kbps (38.77kB/sec)
・ファイルサイズ(「www」ファイル):119MB
■実施したこと
・RPGツクールMVの「ゲームをシェア(アツマール)」機能を利用
→転送開始から一定時間後に失敗のメッセージが表示される
・ブラウザはアクティブな状態を維持
→スタンバイやサスペンドに突入していない
・投稿時間帯の変更
→複数時間帯で試すも、状況変わらず
・ブラウザの変更
→Google Crhome、Internet Exploler、FireFoxいずれも失敗
[各ブラウザのバージョン]
Google Chrome: 55.0.2883.87 m
Internet Explorer:11.576.14393.0
FireFox: 50.1.0
・端末の変更
→Windows10端末2台で同じ事象を確認
・お寄せ頂いた情報
(情報提供者:terunonさん)
ファイル内に初版のノベルプラグインでプレイした際に発生する.bakのようなファイルが含まれていると、エラーが発生するとのこと
僕の妹はバケモノです
http://game.nicovideo.jp/atsumaru/games/gm573
/*
おそらくこの作品に取り組まれた際の経験かと思います
情報、ありがとうございます
今回のタイムアウトとはメッセージ上、関係なさそうに思えますが、なにかのファイルが転送を妨げていて、結果タイムアウトになっていることも考えられるので、こういう視点は大切ですね
このこともあって、ファイルを変更しての切り分けをしてみました
*/
・ファイルの変更
ファイルサイズ(「www」ファイル):119MBを新規プロジェクトベースの49MBに変更したところ、成功
このことから考えられるのは次の2点
-プロジェクトファイルの違い(この場合「タイムアウト」ではなく、転送を妨げるファイルが含まれていることが問題)
-ファイルサイズ軽減による転送時間の短縮が有効だった
・タイムアウトに対するネットワーク設定の見直し
USBタイプの無線LANモジュールを介して通信をしているため、Selective Suspend(セレクティブサスペンド)を無効にしてみました。
Selective Suspend(セレクティブサスペンド)とは:
-Windows7からOSに搭載されたUSBデバイスに対する省電力機能
-まれにUSBの認識が解除され、結果としてUSBデバイスが機能できなくなるような事象の原因になることもある
設定値をみたら5分で有効化されるようになっており、タイムアウトの一因になっているかもと思ったのです
方法:
1.デバイスマネージャー→ネットワークアダプタの配下にある無線LANモジュール(無線USBアダプタの名前や社名を冠したものが多い)のプロパティを起動
2.「Selective Suspend(セレクティブサスペンド)」または類似する名称の項目を編集してウィンドウをOKで終了
デバイス名や項目の表記は環境によるので、参考程度にとどめておいてください
結果は今検証中ですが、とりあえず10分の壁は超えました
がんばれ!私の環境\.\.
■(試せば解決しそうだけど)試せないこと
・通信回線の変更、できない
・テザリング通信の利用、できない
■推定原因
・回線の問題
10分以上アップロードに時間がかかるため、サービス側でセッション切れが発生している?
※RPGアツマールサイトを利用した場合、「保存」ボタンを押下してから10分のタイミングで発生したことから
※ツクールMVの機能を利用した場合、一時キャッシュ的に「アップロード中」インジゲーターは完了しているように見えるが、結局失敗しているのでタイムアウトでセッション切れを起こして同期がとれていないようにも見える
■回避策(案)
A.通信回線の速度を変える
ex)
-スマートフォンとのテザリング
-無線→有線LAN接続
-ネットカフェ利用のように環境そのものを変更する
B.ファイルサイズの軽量化
軽量にすることで通信時間そのものをスリム化する(けど現実的ではない)
※2016/12/17現在、私の環境では解決していないため、参考にならない可能性はご承知おきください
■事象
・RPGアツマールからゲームを投稿すると、転送開始から10分後に「タイムアウトしました:」メッセージで失敗する
■環境
・通信速度
下り
推定転送速度: 743.23Kbps (92.37KB/sec)
上り
データ転送速度 310.18kbps (38.77kB/sec)
・ファイルサイズ(「www」ファイル):119MB
■実施したこと
・RPGツクールMVの「ゲームをシェア(アツマール)」機能を利用
→転送開始から一定時間後に失敗のメッセージが表示される
・ブラウザはアクティブな状態を維持
→スタンバイやサスペンドに突入していない
・投稿時間帯の変更
→複数時間帯で試すも、状況変わらず
・ブラウザの変更
→Google Crhome、Internet Exploler、FireFoxいずれも失敗
[各ブラウザのバージョン]
Google Chrome: 55.0.2883.87 m
Internet Explorer:11.576.14393.0
FireFox: 50.1.0
・端末の変更
→Windows10端末2台で同じ事象を確認
・お寄せ頂いた情報
(情報提供者:terunonさん)
ファイル内に初版のノベルプラグインでプレイした際に発生する.bakのようなファイルが含まれていると、エラーが発生するとのこと
僕の妹はバケモノです
http://game.nicovideo.jp/atsumaru/games/gm573
/*
おそらくこの作品に取り組まれた際の経験かと思います
情報、ありがとうございます
今回のタイムアウトとはメッセージ上、関係なさそうに思えますが、なにかのファイルが転送を妨げていて、結果タイムアウトになっていることも考えられるので、こういう視点は大切ですね
このこともあって、ファイルを変更しての切り分けをしてみました
*/
・ファイルの変更
ファイルサイズ(「www」ファイル):119MBを新規プロジェクトベースの49MBに変更したところ、成功
このことから考えられるのは次の2点
-プロジェクトファイルの違い(この場合「タイムアウト」ではなく、転送を妨げるファイルが含まれていることが問題)
-ファイルサイズ軽減による転送時間の短縮が有効だった
・タイムアウトに対するネットワーク設定の見直し
USBタイプの無線LANモジュールを介して通信をしているため、Selective Suspend(セレクティブサスペンド)を無効にしてみました。
Selective Suspend(セレクティブサスペンド)とは:
-Windows7からOSに搭載されたUSBデバイスに対する省電力機能
-まれにUSBの認識が解除され、結果としてUSBデバイスが機能できなくなるような事象の原因になることもある
設定値をみたら5分で有効化されるようになっており、タイムアウトの一因になっているかもと思ったのです
方法:
1.デバイスマネージャー→ネットワークアダプタの配下にある無線LANモジュール(無線USBアダプタの名前や社名を冠したものが多い)のプロパティを起動
2.「Selective Suspend(セレクティブサスペンド)」または類似する名称の項目を編集してウィンドウをOKで終了
デバイス名や項目の表記は環境によるので、参考程度にとどめておいてください
結果は今検証中ですが、とりあえず10分の壁は超えました
がんばれ!私の環境\.\.
■(試せば解決しそうだけど)試せないこと
・通信回線の変更、できない
・テザリング通信の利用、できない
■推定原因
・回線の問題
10分以上アップロードに時間がかかるため、サービス側でセッション切れが発生している?
※RPGアツマールサイトを利用した場合、「保存」ボタンを押下してから10分のタイミングで発生したことから
※ツクールMVの機能を利用した場合、一時キャッシュ的に「アップロード中」インジゲーターは完了しているように見えるが、結局失敗しているのでタイムアウトでセッション切れを起こして同期がとれていないようにも見える
■回避策(案)
A.通信回線の速度を変える
ex)
-スマートフォンとのテザリング
-無線→有線LAN接続
-ネットカフェ利用のように環境そのものを変更する
B.ファイルサイズの軽量化
軽量にすることで通信時間そのものをスリム化する(けど現実的ではない)
2016年11月24日
「liply_GC.js」と「Oggy_1_3_1_MemoryLeakPatch.js」の使い分けについて
◆「liply_GC.js」と「Oggy_1_3_1_MemoryLeakPatch.js」の使い分けについて
私の環境で確認している情報をご参考までに書き留めておきます。
■「liply_GC.js」と「Oggy_1_3_1_MemoryLeakPatch.js」について
・両方ともコアスクリプトバージョン1.3系かつメモリキャッシュを管理するためのプラグインです
・用途としてはスマートフォンでのブラウザプレイかつ大量のメモリを消費する作品(ピクチャ多用)に適しています
「liply_GC.js」
メモリリーク対策パッチ+@(1.3.0/1.3.1/1.3.2/1.3.3向け)
・Pixi4(1.3.X系)で新規発生したメモリ管理問題を解決
・Android環境で特に効果が高い
・内容は「Oggy_1_3_1_MemoryLeakPatch.js」に+@しており、同プラグインよりも推奨とのこと(作者:おっぎー様談)
制作者∶liply様
説明:
http://ch.nicovideo.jp/liply/blomaga/ar1124914
ダウンロード先:
https://gist.github.com/liply/bd129549659c1133c0b9db79bd0dc159/archive/0d1d414a296df0d7acc6276bf45af92fc41798c3.zip
「Oggy_1_3_1_MemoryLeakPatch.js」
・メモリ管理周りの処理を調整
・発生する可能性がある環境/操作
-WebGLモード環境
-バージョン1.3.0、1.3.1、1.3.2、1.3.3
-頻繁な画面更新
制作者∶おっぎー様
ダウンロード先:
https://gist.github.com/oggy83/08851bce158191450c42535cdb0e9746
■私にて確認したこと
消費を抑えるうえでは「liply_GC.js」がより効果が高いのですが、そのためかピクチャの表示反応が遅れる、またはメニュー画面開閉などで再表示しないとピクチャが反映されないといった問題を確認しました。
SRD_AltMenuScreen_Phantasia.js /SumRndmDde様
メニュー画面の変更プラグイン
メニュー画面で歩行グラフィックのキャラクターが点滅の後に表示される問題が発生しました。
※現在公開中の「バンドワゴン」で確認可能です
「Oggy_1_3_1_MemoryLeakPatch.js」の場合だとこの問題は発生しません。
また他の例では……
TMMapHpGauge.js /tomoaky様
HP/MP/TP/変数をフィールド画面で表示するプラグイン
この場合に値(画像左上)がリアルタイムに反映されないことがありました。
同じく「Oggy_1_3_1_MemoryLeakPatch.js」の場合だとこの問題は発生しません。
■補足
ここでお伝えしたいのは「liply_GC.js」と「Oggy_1_3_1_MemoryLeakPatch.js」の優劣ではなく、作品によって使い分けをする必要があるということです。
技術的には「liply_GC.js」を始めに適用し、作品内で問題になるようであれば「Oggy_1_3_1_MemoryLeakPatch.js」を利用していかがかなと思います。
以上、お二人のプラグイン作者に感謝しつつ、ご参考になれば幸いです。
【12/1追記】
サンシロさんが「liply_GC.js」を参考にメモリ管理プラグインを公開されました。私の環境では「Oggy_1_3_1_MemoryLeakPatch」同様の挙動を確認しており、オススメのプラグインです。
併せてご検討されると良いと思います。
■ガベージコレクター
・メモリ管理の最適化
・プラグインのパラメータでキャッシュメモリの最大値を管理
制作者∶サンシロ様
ダウンロード先∶
https://drive.google.com/drive/u/0/mobile/folders/0B9n88HOweCWsLWYzeHJBZmxFQ1k?usp=drive_web
私の環境で確認している情報をご参考までに書き留めておきます。
■「liply_GC.js」と「Oggy_1_3_1_MemoryLeakPatch.js」について
・両方ともコアスクリプトバージョン1.3系かつメモリキャッシュを管理するためのプラグインです
・用途としてはスマートフォンでのブラウザプレイかつ大量のメモリを消費する作品(ピクチャ多用)に適しています
「liply_GC.js」
メモリリーク対策パッチ+@(1.3.0/1.3.1/1.3.2/1.3.3向け)
・Pixi4(1.3.X系)で新規発生したメモリ管理問題を解決
・Android環境で特に効果が高い
・内容は「Oggy_1_3_1_MemoryLeakPatch.js」に+@しており、同プラグインよりも推奨とのこと(作者:おっぎー様談)
制作者∶liply様
説明:
http://ch.nicovideo.jp/liply/blomaga/ar1124914
ダウンロード先:
https://gist.github.com/liply/bd129549659c1133c0b9db79bd0dc159/archive/0d1d414a296df0d7acc6276bf45af92fc41798c3.zip
「Oggy_1_3_1_MemoryLeakPatch.js」
・メモリ管理周りの処理を調整
・発生する可能性がある環境/操作
-WebGLモード環境
-バージョン1.3.0、1.3.1、1.3.2、1.3.3
-頻繁な画面更新
制作者∶おっぎー様
ダウンロード先:
https://gist.github.com/oggy83/08851bce158191450c42535cdb0e9746
■私にて確認したこと
消費を抑えるうえでは「liply_GC.js」がより効果が高いのですが、そのためかピクチャの表示反応が遅れる、またはメニュー画面開閉などで再表示しないとピクチャが反映されないといった問題を確認しました。
SRD_AltMenuScreen_Phantasia.js /SumRndmDde様
メニュー画面の変更プラグイン
メニュー画面で歩行グラフィックのキャラクターが点滅の後に表示される問題が発生しました。
※現在公開中の「バンドワゴン」で確認可能です
「Oggy_1_3_1_MemoryLeakPatch.js」の場合だとこの問題は発生しません。
また他の例では……
TMMapHpGauge.js /tomoaky様
HP/MP/TP/変数をフィールド画面で表示するプラグイン
この場合に値(画像左上)がリアルタイムに反映されないことがありました。
同じく「Oggy_1_3_1_MemoryLeakPatch.js」の場合だとこの問題は発生しません。
■補足
ここでお伝えしたいのは「liply_GC.js」と「Oggy_1_3_1_MemoryLeakPatch.js」の優劣ではなく、作品によって使い分けをする必要があるということです。
技術的には「liply_GC.js」を始めに適用し、作品内で問題になるようであれば「Oggy_1_3_1_MemoryLeakPatch.js」を利用していかがかなと思います。
以上、お二人のプラグイン作者に感謝しつつ、ご参考になれば幸いです。
【12/1追記】
サンシロさんが「liply_GC.js」を参考にメモリ管理プラグインを公開されました。私の環境では「Oggy_1_3_1_MemoryLeakPatch」同様の挙動を確認しており、オススメのプラグインです。
併せてご検討されると良いと思います。
■ガベージコレクター
・メモリ管理の最適化
・プラグインのパラメータでキャッシュメモリの最大値を管理
制作者∶サンシロ様
ダウンロード先∶
https://drive.google.com/drive/u/0/mobile/folders/0B9n88HOweCWsLWYzeHJBZmxFQ1k?usp=drive_web
2016年07月24日
Androidアプリ出力時のUnicodeDecodeError: 'utf-8'の場合の対処
◆Androidアプリ出力時のUnicodeDecodeError: 'utf-8'の場合の対処
参考:
ツクールMVで作成したプロジェクトをAndroid用apkファイルに出力する手順
https://fanblogs.jp/tabirpglab/archive/155/0
■切り分け1
Androidアプリ出力時に次のエラーが発生した場合、ファイル名にマルチバイト文字(空白、スペース、全角文字)が含まれていることが原因の1つとしてあるようです。
■エラーメッセージ
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8e in position 0: invalid
start byte
■対処
該当のファイル名を探すツールとして、こちらが大変役立ちました。
[ツール]
マルチバイト文字を含むファイル・フォルダ名を検出
作者:よたろー 様
ダウンロード先:
http://www.vector.co.jp/soft/winnt/util/se499525.html
■切り分け2
私の場合、切り分け1でも解決しませんでした。
その他確認したのは
新規プロジェクトを作成、Androidアプリとしてデプロイメントしたファイルで試す
→全く同じエラーが再現
つまりWindowsおよびインストールしている環境にエラー原因があるようです。
これを読む限り、エラーを返しているのはcrosswalkフォルダ内のutil.pyの47行目。
■切り分け3
crosswalkの別バージョンをインストールすることにしました。
ツクールMVのヘルプには次のような記述があります。
****************************************************
2-5 Crosswalk ProjectのAndroidアプリテンプレートをダウンロード
Crosswalk Projectはインストールを必要としません。ダウンロードしたZIPファイルを好きな場所に展開します。ダウンロードしたファイルの中にはブラウザエンジンや、パッケージングスクリプトが含まれます。
https://download.01.org/crosswalk/releases/crosswalk/android/stable/より、Androidアプリテンプレートのstable(安定)版をダウンロードします。バージョンが14までありますが、10.39.235.16が安定しています。
****************************************************
よって「10.39.235.16」をダウンロードして、出力実行時のコマンドも「10.39.235.16」のmake_apk.pyを参照するようにしました。
しかし結果は全く同じ文面のエラーが発生しました。
つまりcrosswalkを扱うpython側、もしくはwindows側のコンポーネントに問題があるのかもしれません。
■考察
私の環境は次の通りです。
・デスクトップPC
OS:Windows8.1 Professional(64bit)
CPU:AMD A8-5600K 3.6G
メモリ:8GB DDR3-1600 DIMM(4GB×2)
HDD:500GB HDD(SATA/7200rpm)
グラフィック:NVIDIA GeForce GTX750Ti 2GB
同じ環境でも2016/2時点では成功して、2016/5時点で失敗するようになった差分はOS構成の変化なのでしょう。
ちなみに2016/6/21現在ではOSはWindows10Home(64bit)に変更しました。
この件、気になるので、時間がある時に海外情報なども含めて調べてみます。
【2016/6/25追記】
■切り分け4
2016/2時点でApp出力が行えたデプロイメントファイル(GooglePlayで公開中のブックモービルというアプリ)でも全く同エラーが再現しました。
[試したこと]
UTF-8で読み込まれていない問題と思い、次のサイト様を参考にsite-packagesディレクトリへsitecustomize.pyを作成し、UTF-8を指定しました。
http://d.hatena.ne.jp/shu223/20111201/1328334689
http://yukihir0.hatenablog.jp/entry/20110131/1296478348
[私の場合のディレクトリ]
C:\Python35\Lib\site-packages
インタラクティブシェル?でもutf-8を確認
しかしエラーは回避しませんでした。
【2016/7/24追記】
■切り分け5
他のクリエイター様の成功環境を元に環境に変化をつけてみました。
参考:Androidアプリの生成について(ツクマテ様)
http://tm.lucky-duet.com/viewtopic.php?t=1522
[成功した環境]
Windows 10 64bit
Python34
jdk180_92
apache-ant-1.9.7
Android SDK manager 25.1.7
crosswalk-10.39.235.16
[失敗している環境(私)]
Windows 10 64bit
Python35(3.5.1)★成功例はPython34、2016/7/24現在の最新バージョンはPython35(3.5.2)
jdk180_101★成功例より新しいバージョン
apache-ant-1.9.6★成功例より古いバージョン
Android SDK manager 24.4.1★成功例より古いバージョン
crosswalk-10.39.235.16★同じ(ヘルプでも推奨されている)
[考え]
・動作実績のある成功例と同じバージョンにすることで解決に近づく可能性が上がる
不具合修正の観点で考えると、最新バージョンで回避できるならそれが一番いい
・Pythonとcrosswalkを活用した処理でErrorが発生している?
[試したこと]
1.Pythonのバージョンアップ
Python35の最新版3.5.2がリリースされていたのでアップデートしてみました。
結果:エラー内容変わらず。
2.Android SDKのバージョンアップ(24.4.1→25.1.7)
Android SDK Toolsを 24.4.1から25.1.7にバージョンアップしてみました
Android SDK Managerを起動
Android SDK ManagerからUpdate対象のファイルを選択(今回はAndroid SDK Tools)、「Install[インストール数]packages」をクリック
結果:エラー内容変わらず。
3.Pythonのバージョンダウン(35系→34系)
成功例で動作確認のとれているPython34へバージョンダウンしてみました。
Windows版Python3.4.4
https://www.python.org/downloads/release/python-344/
以前はPython35系だったので新たにPython34というフォルダが生成されていました。
そのため、システム環境変数を追加しておきます。
また念のため、Python35のシステム環境変数を削除しておきました。
※追加方法は公式ヘルプ2-1-2 パスの設定・確認の項を参照
結果:エラー内容変わらず。
4.apache-antのバージョンアップ(1.9.6→1.9.7)
成功例で動作確認のとれている1.9.7へバージョンアップしてみました。
ダウンロード先:
http://ant.apache.org/bindownload.cgi
また1.9.6から1.9.7へとシステム環境変数を修正しておきます。
結果:エラー内容変わらず。
5.site-packagesディレクトリへsitecustomize.pyを作成し、UTF-8を指定
http://d.hatena.ne.jp/shu223/20111201/1328334689
http://yukihir0.hatenablog.jp/entry/20110131/1296478348
[私の場合のディレクトリ]
C:\Python34\Lib\site-packages
結果:エラー内容変わらず。
[切り分け案]
1.Windowsを再インストールして最小限のアプリケーションだけをインストールした状態でどうか
※すぐに制作環境を崩すことは難しいのでそれならばPC1台用意したいところ
2.別ツールのCordovaでapkファイル化
参考:
PRESENT CALL様
RPGツクールMV作品をスマホアプリにする方法-1
http://presentcall.com/rpg%E3%83%84%E3%82%AF%E3%83%BC%E3%83%ABmv%E4%BD%9C%E5%93%81%E3%82%92%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-1/
今後は2のCordovaを使う方法で進めてみます。
まとまった時間が取れ次第確認して記事にする予定です。
【2016/7/25追記】
Cordovaを使う方法でapkファイルの出力に成功しました。
参考:
RPGツクールMV向けCordovaを使ったApkファイル出力
https://fanblogs.jp/tabirpglab/archive/540/0
参考:
ツクールMVで作成したプロジェクトをAndroid用apkファイルに出力する手順
https://fanblogs.jp/tabirpglab/archive/155/0
■切り分け1
Androidアプリ出力時に次のエラーが発生した場合、ファイル名にマルチバイト文字(空白、スペース、全角文字)が含まれていることが原因の1つとしてあるようです。
■エラーメッセージ
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8e in position 0: invalid
start byte
■対処
該当のファイル名を探すツールとして、こちらが大変役立ちました。
[ツール]
マルチバイト文字を含むファイル・フォルダ名を検出
作者:よたろー 様
ダウンロード先:
http://www.vector.co.jp/soft/winnt/util/se499525.html
■切り分け2
私の場合、切り分け1でも解決しませんでした。
その他確認したのは
新規プロジェクトを作成、Androidアプリとしてデプロイメントしたファイルで試す
→全く同じエラーが再現
つまりWindowsおよびインストールしている環境にエラー原因があるようです。
これを読む限り、エラーを返しているのはcrosswalkフォルダ内のutil.pyの47行目。
■切り分け3
crosswalkの別バージョンをインストールすることにしました。
ツクールMVのヘルプには次のような記述があります。
****************************************************
2-5 Crosswalk ProjectのAndroidアプリテンプレートをダウンロード
Crosswalk Projectはインストールを必要としません。ダウンロードしたZIPファイルを好きな場所に展開します。ダウンロードしたファイルの中にはブラウザエンジンや、パッケージングスクリプトが含まれます。
https://download.01.org/crosswalk/releases/crosswalk/android/stable/より、Androidアプリテンプレートのstable(安定)版をダウンロードします。バージョンが14までありますが、10.39.235.16が安定しています。
****************************************************
よって「10.39.235.16」をダウンロードして、出力実行時のコマンドも「10.39.235.16」のmake_apk.pyを参照するようにしました。
しかし結果は全く同じ文面のエラーが発生しました。
つまりcrosswalkを扱うpython側、もしくはwindows側のコンポーネントに問題があるのかもしれません。
■考察
私の環境は次の通りです。
・デスクトップPC
OS:Windows8.1 Professional(64bit)
CPU:AMD A8-5600K 3.6G
メモリ:8GB DDR3-1600 DIMM(4GB×2)
HDD:500GB HDD(SATA/7200rpm)
グラフィック:NVIDIA GeForce GTX750Ti 2GB
同じ環境でも2016/2時点では成功して、2016/5時点で失敗するようになった差分はOS構成の変化なのでしょう。
ちなみに2016/6/21現在ではOSはWindows10Home(64bit)に変更しました。
この件、気になるので、時間がある時に海外情報なども含めて調べてみます。
【2016/6/25追記】
■切り分け4
2016/2時点でApp出力が行えたデプロイメントファイル(GooglePlayで公開中のブックモービルというアプリ)でも全く同エラーが再現しました。
[試したこと]
UTF-8で読み込まれていない問題と思い、次のサイト様を参考にsite-packagesディレクトリへsitecustomize.pyを作成し、UTF-8を指定しました。
http://d.hatena.ne.jp/shu223/20111201/1328334689
http://yukihir0.hatenablog.jp/entry/20110131/1296478348
[私の場合のディレクトリ]
C:\Python35\Lib\site-packages
インタラクティブシェル?でもutf-8を確認
しかしエラーは回避しませんでした。
【2016/7/24追記】
■切り分け5
他のクリエイター様の成功環境を元に環境に変化をつけてみました。
参考:Androidアプリの生成について(ツクマテ様)
http://tm.lucky-duet.com/viewtopic.php?t=1522
[成功した環境]
Windows 10 64bit
Python34
jdk180_92
apache-ant-1.9.7
Android SDK manager 25.1.7
crosswalk-10.39.235.16
[失敗している環境(私)]
Windows 10 64bit
Python35(3.5.1)★成功例はPython34、2016/7/24現在の最新バージョンはPython35(3.5.2)
jdk180_101★成功例より新しいバージョン
apache-ant-1.9.6★成功例より古いバージョン
Android SDK manager 24.4.1★成功例より古いバージョン
crosswalk-10.39.235.16★同じ(ヘルプでも推奨されている)
[考え]
・動作実績のある成功例と同じバージョンにすることで解決に近づく可能性が上がる
不具合修正の観点で考えると、最新バージョンで回避できるならそれが一番いい
・Pythonとcrosswalkを活用した処理でErrorが発生している?
[試したこと]
1.Pythonのバージョンアップ
Python35の最新版3.5.2がリリースされていたのでアップデートしてみました。
結果:エラー内容変わらず。
2.Android SDKのバージョンアップ(24.4.1→25.1.7)
Android SDK Toolsを 24.4.1から25.1.7にバージョンアップしてみました
Android SDK Managerを起動
Android SDK ManagerからUpdate対象のファイルを選択(今回はAndroid SDK Tools)、「Install[インストール数]packages」をクリック
結果:エラー内容変わらず。
3.Pythonのバージョンダウン(35系→34系)
成功例で動作確認のとれているPython34へバージョンダウンしてみました。
Windows版Python3.4.4
https://www.python.org/downloads/release/python-344/
以前はPython35系だったので新たにPython34というフォルダが生成されていました。
そのため、システム環境変数を追加しておきます。
また念のため、Python35のシステム環境変数を削除しておきました。
※追加方法は公式ヘルプ2-1-2 パスの設定・確認の項を参照
結果:エラー内容変わらず。
4.apache-antのバージョンアップ(1.9.6→1.9.7)
成功例で動作確認のとれている1.9.7へバージョンアップしてみました。
ダウンロード先:
http://ant.apache.org/bindownload.cgi
また1.9.6から1.9.7へとシステム環境変数を修正しておきます。
結果:エラー内容変わらず。
5.site-packagesディレクトリへsitecustomize.pyを作成し、UTF-8を指定
http://d.hatena.ne.jp/shu223/20111201/1328334689
http://yukihir0.hatenablog.jp/entry/20110131/1296478348
[私の場合のディレクトリ]
C:\Python34\Lib\site-packages
結果:エラー内容変わらず。
[切り分け案]
1.Windowsを再インストールして最小限のアプリケーションだけをインストールした状態でどうか
※すぐに制作環境を崩すことは難しいのでそれならばPC1台用意したいところ
2.別ツールのCordovaでapkファイル化
参考:
PRESENT CALL様
RPGツクールMV作品をスマホアプリにする方法-1
http://presentcall.com/rpg%E3%83%84%E3%82%AF%E3%83%BC%E3%83%ABmv%E4%BD%9C%E5%93%81%E3%82%92%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-1/
今後は2のCordovaを使う方法で進めてみます。
まとまった時間が取れ次第確認して記事にする予定です。
【2016/7/25追記】
Cordovaを使う方法でapkファイルの出力に成功しました。
参考:
RPGツクールMV向けCordovaを使ったApkファイル出力
https://fanblogs.jp/tabirpglab/archive/540/0