検索
ハートフルRPG「地図の時間」

地図の時間スピンオフRPG「影泥棒と魔法の手記」

リソース管理ダンジョンRPG「琥珀の道具士」

現代SFRPG「重力ルーペ/探求リバーブ」

ドラマティックRPG「バンドワゴン」

ビジュアルノベル「日向と香水」

ノベル×ADV「ストーリーテラー」 title1_2.png
カテゴリ
リンク集
【スポンサードリンク】

【ゲーム】




【創作】






シナリオ制作


設定作り


最近読んでよかった本五選





創作意欲を掻き立てる本


自己管理術


クリエイター向けノウハウ

2020年02月02日

【ツクールMV】アイテム上限数を変数で制御

【ツクールMV】アイテム上限数を変数で制御

プラグイン「TMMaxItems.js」を改変することで実装しました。
その備忘録です。

プラグインダウンロード先:
https://hikimoki.sakura.ne.jp/index.php?article=plugin_item
制作者:tomoaky様
※MITライセンス

200202_10.jpg

var _Game_Party_maxItems = Game_Party.prototype.maxItems;
Game_Party.prototype.maxItems = function(item) {
if (item.meta.maxItems) return Math.max(+item.meta.maxItems, 1);//オリジナル
if (item.meta.maxItemsVV) return $gameVariables.value(item.meta.maxItemsVV);//追加行。
<maxItemsVV:変数番号>に対応
return _Game_Party_maxItems.call(this, item);
};

アイテムのメモ欄に<maxItemsVV:変数番号>を書くと、変数番号の中身の値が上限数になりました。
200202_11.jpg

これでゲーム中に上限数を変えることが可能になりました。
従来の<maxItems:数>も使えます。

◆◇
直感的ではない実装なので不満はあります。
本当は<maxItems:数>で\v[変数番号]を自動で区別できれば良かったのですが、今は技量不足でした。

.replace(/\\/g)とか使われている例があるので、Javascript全体を勉強して未来の宿題とします。

スペシャルサンクス:tomoaky様
プラグインの公開、ありがとうございます

◆◇追記

maxItemsVVとmaxItemsの位置を入れ替えることでmaxItemsVVが記述されている場合は優先される判定にできました。
if (item.meta.maxItemsVV) return $gameVariables.value(item.meta.maxItemsVV);//追加行。
if (item.meta.maxItems) return Math.max(+item.meta.maxItems, 1);//オリジナル

ご情報、ありがとうございます。

【ツクールMV】ショップコマンドを変数で変更

【ツクールMV】ショップコマンドを変数で変更

rpg_windows.jsにある以下を改変します。
200202_2.jpg

Window_ShopCommand.prototype.makeCommandList = function() {
this.addCommand(TextManager.buy, 'buy');
this.addCommand(TextManager.sell, 'sell', !this._purchaseOnly);
this.addCommand(TextManager.cancel, 'cancel');
};

--
これで買う=変数100、売る=変数101、終了=変数102となりました。

Window_ShopCommand.prototype.makeCommandList = function() {
this.addCommand($gameVariables.value(100), 'buy');
this.addCommand($gameVariables.value(101), 'sell', !this._purchaseOnly);
this.addCommand($gameVariables.value(102), 'cancel');
};

変数に文字列を格納するには「変数の処理」→「スクリプト」→「"表示させたい文字"」とすれば解決します。
200202_4.jpg

実装例
200202_1.jpg

ご参考まで。

2020年02月01日

Steam展開時の言語切り替え方法について知見まとめ

Steam展開時の言語切り替え方法について知見まとめ

多言語で作品をSteamに出したいのですが、その方法について考えをまとめました。
Steam展開に関連する話題は「Steam展開ノウハウ」カテゴリで管理します。

言語データの持ち方について


@言語の数×ゲームデータを作成
・メリット:データすくなめ
・デメリット:Steamのプロパティで切り替える必要あり

Aゲーム内で言語分データを持つ
・メリット:ゲーム内オプションで切り替えられる
・デメリット:データ容量増

個人の場合は@が現実的と考えます。
ゲーム内で言語が少ない場合は、条件分岐-文章の表示で分ければ良いと思います。

参考:yamachan様のプラグイン
https://tm.lucky-duet.com/viewtopic.php?t=1527

翻訳作業について


@作品の独自言語を区別したうえで、翻訳ソフトをかける
A@に対して母国語の方にチェックして頂く
(言語が入る画像素材は言語分用意することに留意)

英語→日本語ローカライズされた作品の場合、改行が悪いものもお見かけします。逆パターンをやらないように注意ですよね。

@については機械翻訳を使えば大幅に工数は減らせそうです。

トリアコンタンさんの自動翻訳プラグインで翻訳データを作る
https://triacontane.blogspot.com/2017/04/blog-post_16.html

ですが大切な作品に対して、機械翻訳任せで良いのか、ここは無思考ではならぬと思ってます。
言葉が伝わらなければ、文字の型をあわせてるだけ。言語対応と言えません。

SteamWorksで設定できること


SteamWorksはゲーム公開作業の設定を行う画面。

■「@言語の数×ゲームデータを作成」の場合
$100で1タイトルの出品権利を買えば、1タイトルにデポという概念で言語、OS、32/64bitごとのタイトルデータを分けて管理することが可能。
つまり

日本語-Winodws-32bit
日本語-Mac-64bit
英語-Winodws-32bit
英語-Mac-64bit

ごとにexeファイルを配布することができます。
この方法で@は実装できます。

200201_1.jpg

■「Aゲーム内で言語分データを持つ」の場合
SteamのAPIを使い切り替えが可能です。
コードはこちら
const char * GetCurrentGameLanguage();

詳細:
https://partner.steamgames.com/doc/api/ISteamApps#GetCurrentGameLanguage

※ご指摘頂きました
・「言語の取得のみ」かつ「DLLが必要(基本はC++から使うことを想定)」と思われる
・通常のJavaScriptではDLLは使えないのでツクールMVでは使えたとしても特殊な手順が必要になる

以下のプラグインを使うことで、言語切り替えはわかりませんが、実績設定の連携ができそうです。

Steamworks for RPG Maker MV 1.6.1+
https://archeia.itch.io/steamworks-for-rpg-maker-mv-161

◆◇◆◇
私がSteamで作品展開を目指しているのは多くの方に届けたいから。
その方たちが使う言語で作品を表現し、結果、楽しんで貰いたいから。

次の記事で毎日制作状況を発信していますので、ご興味を持ってくださった方はよろしくお願いいたします。

Ci-en
https://ci-en.net/creator/4244
posted by tabirpglab at 13:09 | Steam展開ノウハウ

2020年01月29日

【ツクールMV】【プラグインカスタマイズ】 スイッチX番がONの時に機能を無効化

【ツクールMV】【プラグインカスタマイズ】スイッチX番がONの時に機能を無効化

目的

・スイッチでプラグインの機能を制御する
・スイッチX番がON時にプラグインの一部機能を無効化
・スイッチX番がOFF時にプラグインの一部機能を有効化

ifでスイッチを条件にする方法は次の通り。
returnは関数単位で処理を終了できるので、今回の目的に沿っている。

if($gameSwitches.value(x)){//スイッチx番がONのときに処理を抜ける
return;
}


実装

GetInformation.jsでポップアップを無効化したい
該当関数を見つけて、次の処理を入れる
-----
if($gameSwitches.value(x)){//スイッチx番がONのときに処理を抜ける
return;
}
-----

430行目
CommonPopupManager.popEnable = function() {
if($gameSwitches.value(x)){//スイッチx番がONのときにポップアップ非表示
return;
}
var useBattle = $gameParty.inBattle() ? useBattleInfo : true;
return !$gameSwitches.value(infoDisableSwitchId) && useBattle;
};

補足

・「CommonPopupManager.popEnable 」の名前から、アタリをつけた
・コメントアウト/* */で括ると無効化されるか試すことで作業が早くなった
・コンソール(F12)でエラーが出ないことを確認した
 ここでエラーが出るということはJavaScript的に正しくないため

幅広く応用が利くテクニックだと思います。
以上、参考になれば幸いです。



私の場合、上記を読み、paizaラーニングの有料プランでコードを書くことを繰り返し、if文、for文を手に覚えさせました。

2020年01月24日

Wonderdraft素材追加方法

Wonderdraft素材追加方法


・Wonderdraftとは
https://www.wonderdraft.net/
$29.99の地図制作ソフト
買い切りなのが嬉しい

参考:wonderdraftの使い方
http://fanblogs.jp/tabirpglab/archive/1285/0

素材投稿/配布サイト「cartographyassets」を活用する方法を紹介します
https://www.cartographyassets.com/

素材選定の注意事項


商用想定のゲームの場合「商用不可」、「継承」があると使えないので注意
CC BY 4.0で探すと良いです
https://www.cartographyassets.com/assets/km-alexander-mega-pack.294/

導入手順

シンボルファイルを追加するまでの具体手順

1.例として以下から「Download」→「Symbols With Background.zip」をダウンロード
https://www.cartographyassets.com/assets/km-alexander-mega-pack.294/

2-1.1を解凍し、フォルダ名を変更

変更前:
Symbols With Background
変更後:
KMAlexanderMegaPack

2-2.2-1の中にspriteフォルダを作り全部入れる
次のようにする
KMAlexanderMegaPack\sprite\全部

2-3.使いたいファイル以外は移動する
※ファイルが多いほど読み込みに時間がかかるため

3.Wonderdraftを起動し、Menu→Open User Folder

4.assetsフォルダを開く
例.
C:\Users\ユーザー名\AppData\Roaming\Wonderdraft\assets

5.2で作成したKMAlexanderMegaPackを入れる

6.WonderdraftでMenu→Reload Assetsを実行
その後、Symbols→お城マークを押下すればシンボルが反映される

シンボルファイルにマウスを置くと、ポップアップでファイル名が表示される
最初は全部入れておき(ロードに時間かかるけど)上記を元に不要ファイルを判別しても良さそうです

シンボル以外の追加方法はExample_Custom_Assets_Pack_v2の構造を読めばわかります
ご覧になっている方の健闘を祈ります