• ツクールのプラグイン制作依頼等についてのRPGツクールMZ関連のお話

    2020-06-16 20:39
    2020/6/16投稿

    (2020/09/01追記分)

    先の記事RPGツクールMZ対応編集(10/15~受付開始しております。)
    (概要など詳しくは先の記事をご覧ください。)

    (2020/09/01追記分)

    (2020/8/19追記分)

    RPGツクールMZのプラグイン制作依頼については
    9月以降にまたお知らせしたいと思います。
    また、RPGツクールMV用プラグインを
    RPGツクールMZで使えるようにすることは十分可能である見込みですが
    あくまで元のRPGツクールMV用プラグインによるため
    要相談とさせていただく予定です。

    (2020/8/19追記分終了)
    

    こんにちは。ご覧いただきありがとうございます。
    リベリオンれいの媚びを売る売れないゲーム作家まっつUPです。
    先の記事についても、いつも多くのご依頼をいただきありがとうございます。


    この記事では
    RPGツクールMZについてとRPGツクールVXACEのご依頼について
    私が、先の記事で書いている制作依頼等について書きます。
    ただし、この内容は暫定ですので、
    予告なく変更させていただく場合がございます。

    (この記事で言う先の記事)
    ツクールのプラグイン制作依頼等について
    https://ch.nicovideo.jp/mattuup/blomaga/ar1368849


    まず、RPGツクールVXACEのご依頼について。
    これはサポートを切ります。
    もっとも、前述の記事を立ち上げてから一度もVXACE関連は
    その話すら来ませんでしたので問題も需要もないと判断し、
    この記事の投稿時点でサポート、
    というより依頼受付を打ち切ります。

    なお、RPGツクールMVの依頼受付とサポートについては
    引き続き行います。


    さて、本題ともいえるRPGツクールMZのことですが
    RPGツクールMVの後継であることを除いては
    この記事の投稿時点では何らかの判断に有力な情報を
    手に入れることができませんでした。
    したがって、RPGツクールMZ発売後に
    RPGツクールMZ用のプラグイン制作依頼受付を始めるかどうかは未定です。

    また、まっつUPは、
    拙作のRPGツクールMV用のプラグインに関して、
    有償無償に関わらず、RPGツクールMZとの互換性を保証せず、
    またRPGツクールMZ用への移植サポートとその時期を保証することはできません。
    ご了承ください。

    (MVからMZへの移行のサポートを一切しない、というわけではなく、
     現段階の情報の上では諸々の適切な判断が不可能なためです。)

    なお、ご依頼いただいたRPGツクールMV用のプラグインを
    RPGツクールMV上で使うためのサポートは引き続き行います。


    以上です。

  • 広告
  • ツクールのプラグイン制作依頼等について

    2019-04-03 19:21

    2020/09/01 RPGツクールMZ対応編集
    2020/10/12
    RPGツクールMZ関連のご依頼は2020/10/15から受付開始します。
    また、9月中旬からお休みしていたご依頼の受付も同日から再開します。

    2020/09/18
    誠に勝手ながら機材トラブルにつき、全ての依頼をしばらくお休みさせていただきます。
    都合がつき次第また再開について追記します。
    大変申し訳ございません。



    ご覧いただきありがとうございます。
    リベリオンれいの媚びを売る売れないゲーム作家まっつUPです。

    普段はRPGツクールMVまたは
    RPGツクールMZで専用のプラグインやRPGを作っています。
    プラグインで自作戦闘を作ったこともあります。
    既にgithubでいくつかのプラグインを配布しております。
    これらはご依頼で制作したものではありません。
    (許可を得ない限りはご依頼で制作したものをgithubで公開することはありません。)
    https://github.com/mattuup

    今までにツクマテ内でのリクエストや
    ゲーム制作で培ったプラグイン制作技術をツクール界隈の繁栄に
    生かしたいと思い、プラグイン制作依頼受付を開始しました。
    なお、プラグインやスクリプト関連のご依頼に関しては
    RPGツクールMVと
    RPGツクールMZの内容のみ受け付けております。

    以下は私のツイッターです。
    主に依頼自体はDMで承ります。(DMにはフォローが必要です。)
    もしもフォローが返されない場合は差し支えなければツイート等でご一報ください。
    可能な限り早く返信をしたいと思いますが、日や時間帯等によります。
    ご了承ください。

    https://twitter.com/mattuup

    ※途中からメールによるやりとりを行うことも可能です。


    現在受け付けている依頼の種類
    基本的に有償です。

    ・単体のプラグイン制作または技術提供
    もし性質の違う複数のシステムをご検討の場合はそれもご相談ください。

    ・既存プラグインの改変・拡張/MV用プラグイン改変によるMZ用プラグインの制作
    これは、関係する全てのプラグインの利用規約から
    明らかに改変可能と認められる場合に限ります。
    MITライセンスが適用されているプラグインであれば
    権利表記を削除しなければ自由に再配布することができます。
    例えば以前に、ひきも記様のプラグインを改変させていただきました。
    MV用プラグイン改変によるMZ用プラグインの制作に関しても
    あくまで元のMV用プラグインによるため要相談です。

    ・複数プラグイン間の競合修正
    これは、関係する全てのプラグインの利用規約から
    明らかに改変可能と認められる場合に限ります。

    ・ツクールの使い方やシステムの実現方法等のご相談
    あなたのツクール上でのお悩みの解決方法を一緒に考えます。
    内容が簡単であるものは無償で対応する場合があります。
    ただし、上記のようなプラグイン制作等が必要な場合有償になる場合もあります。
    その時は、こちらからの提案になりますので後から料金を請求することはありません。
    なお、プラグイン制作依頼ではない、RPGツクールMVからRPGツクールMZへの
    移行(コンバート)に関するご相談は一切受け付けておりません。

    ・その他
    ツクールシリーズのユーザーゲームのテストプレイ等(公開前のテストプレイ等)。
    ただし、動作テストを複数あるいはご希望の端末や条件で行えるわけではありません。


    ご依頼の際に用意していただきたいもの
    ものというより、データや情報ですが…。

    ・ご依頼内容またはご相談内容、その具体的な仕様

    ・エラーや競合の原因が不明瞭な場合、エラーや競合が発生しているプロジェクト

    ・予算(金額)

    ・納期(仕様のご相談のお時間があることもご留意ください。)

    ・その他、プラグイン制作実績の公開が可能かどうかなど、制作に関する条件

    ・ご連絡先(DM以外でのご連絡が必要な場合のメールアドレス等)

    ・ご住所や郵便番号、お名前(領収証が必要な場合)


    ご依頼に関する画像やシステムの処理の流れも用意していただけると助かります。
    もし、仕様をどのようにすればゲームに使いやすくなるのか不明瞭な場合は
    こちらから提案できる場合がありますのでご相談ください。
    なお、既存の市販ゲームの○○っぽくしたいというイメージもないよりはよいです。


    注意事項

    ・DMでのご相談内容に関して総合的に判断して
    当方では力になれないと判断した場合にはご依頼をお断りさせていただくことがあります。

    ・主にwindows上で動作する前提のプラグインを作成いたします。
     環境ごとに別の動作をするプラグインのご依頼はお断りさせていただくことがあります。

    ・プラグインの改変により元プラグインの機能が大幅に失われてしまうことが
     事前に分かっている場合はご依頼をお断りさせていただきます。

    ・対象のエディタまたはコアスクリプトの、
     全てのバージョンでの動作を保証するわけではありません。
     場合によっては、バージョンの変更で適切に動作しなくなる可能性があります。
     なお、お使いのRPGツクールMVのエディタまたはコアスクリプトがver1.6.2に
     満たない場合はアップデートをお願いする場合があります。
     アップデートが不可能な場合、ご依頼をお断りさせていただくことがあります。
     (当記事の編集時点で一番安定性の高いバージョンです。)

    ・リテイクについてはご相談がない場合は追加料金なしは1回までとさせていただきます。
     ただし、当方のプラグインによるバグや仕様の実装漏れの場合は追加料金なしです。
     また、追加料金なしのリテイクは完成後3か月以内のものに限ります。

    ・リテイクについて、明らかに大規模な仕様追加であった場合には
     追加の料金を請求させていただきます。
     なお、ご希望の仕様を制作開始後から変更された場合も同様に
     請求させていただくことがあります。

    ・元の仕様に明らかな問題(矛盾等)がある場合や、疑問点があった場合には
     仕様の修正を提案することがあります。

    ・拙作のRPGツクールMV用のプラグインに関して、
     有償無償に関わらず、RPGツクールMZとの互換性を保証せず、
     またRPGツクールMZへの移植サポートとその時期を保証することはできません。

    ・基本的に、拙作のRPGツクールMZ用のプラグインの動作には
     トリアコンタン様のPluginCommonBase.jsが必要です。


    ご依頼により制作したプラグインの利用規約について

    ・RPGツクールMVのプラグインはRPGツクールMV上
     あるいはそのユーザーゲームのいずれかのみで利用できます。

    ・RPGツクールMZのプラグインはRPGツクールMZ上
     あるいはそのユーザーゲームのいずれかのみで利用できます。

    ・アダルト、非アダルトにかかわらず利用することができます。
     ただし、提供すること自体が違法行為に加担することにならない場合に限ります。

    ・プラグインのみでの販売を禁止します。
     また、配布と共有も基本的に禁止しますが、
     ご依頼人が制作上その必要がある場合はその必要がある方への共有は可能とします。
     (共同制作で共有するなど)
     もちろん、ユーザーゲームを販売または配布する際に同梱するのは大丈夫です。

    ・他作者様のプラグインに関係しない場合(改変したプラグインでない場合)、
     作成したプラグインの著作権はまっつUP側に帰属します。
     ただし、readmeへの記述や完成時の利用報告は必須ではありません。

    ・改変に関しての制限は特にありませんが、サポートの保証はできません。

    ・上記の規約に反する場合やその他悪質な利用が認められた場合は
     プラグインの利用を禁止します。


    免責事項

    本ご依頼や、プラグインを利用したことによるいかなる損害もまっつUPは一切の責任を負いません。


    料金について

    料金についてはもちろん条件とともに要相談です。
    なお、一部の、仕様や処理手順の把握に労力を要する他作者様のプラグインを
    対象に含む場合にはそうでない場合と比べて料金が少し高くなることがあります。

    お支払方法は原則口座振込としますが
    Amazonギフトによる代用が流行っているようですね。
    ご希望であれば必ずご相談ください。
    (ただし、Amazonギフトの場合は多額のご依頼はご遠慮ください。)

    なお、料金を受け取った際に領収証は発行しますが
    請求書等が必要な場合と領収証が必要ない場合は必ずお声掛けください。
    また、納品は現在Dropboxから落としていただく方法をお願いしておりますが
    これで問題がある場合は必ずお声掛けください。

    以下、金額の目安です。
    (必ず目安通りの金額になるわけではございません。)

    ・一件当たりの最低額 3,000円
     小規模なプラグインや改変はこの辺りだと思います。

    ・既存プラグインにオリジナル要素を追加(実際にあった案件) 4,000円

    ・原因が不明瞭なエラーの修正 5,000円~6,000円

    ・制作に約一日分かかる場合 10,000円~12,000円

    ・戦闘中の表現の大きい拡張とスキルの拡張同時(実際にあった案件) 20,000円

    ・大規模なプラグインでリテイクが多くなる場合 40,000円~
     仕様の複雑さや規模の大きさでかなり振れ幅があると思います。

    なお、1件が10,000円以上の制作実績の公開を禁じる場合には
    料金が少し高くなることがあります。

    ※金額の目安は予告なく変更する場合があります。


    以上です。
    ご依頼をご検討している方は、ご連絡いただければと思います。


  • プラグイン作成で気をつけたいところや自作プラグインの解説

    2017-12-06 00:04


    こんにちは、まっつUPです。
    初めましての方も多分いると思いますが
    ぼくはRPGツクールMVでゲームを作成するついでにプラグインを作っています。

    プロフィールのところにゲームの公開先リンクがあります→
    ふりーむのコンテストにも参加していますので是非プレイを→

    今回は、今ここを閲覧している皆さんがもっとプラグインに
    触れやすくなるように解説をしていくつもりです。
    もう止まるんじゃねえぞ・・・と祈るだけのプラグイン導入生活に終止符をうちましょう。

    まだブログに慣れていないので拙い部分が多いと思いますが
    温かい目で見ていただければ幸いです。
    なお、このページで得た内容で何か不利益があっても
    まっつUPは責任を取ることはできないのでご了承ください。

    しかし、解説者が信用できないのに話は聞けないという方がいると思います。
    そこで、ツイッターでぼくが信用できるか聞いてみました。
    エロゲヒロインの話は102票もらえたのに(半ギレ)
    このように他の選択肢と拮抗していることが分かりますが、結果は明らかです。
    つまりまっつUPはストーンエッジと同じくらい信用できるということです!
    さて、ぼくを信じてもらえたところで記事の内容に入っていきたいと思います。

    RPGツクールMVのコアスクリプトは軒並み優秀なので
    RPGに必要なプラグインは既存処理の拡張が主になります。
    まだプラグインを作ったことない方は
    既存のプラグインの構成を参考にするとよいと思います。

    例えば、ぼくが作っているプラグインは
    開発者YojiOjimaさんの公式プラグインや
    キノコ王国の古文書を参考にして、構成しています。
    トリアコンタンさんありがとう!

    まずこちらのツクマテのプラグインを落としてください。(行をクリックしてね!)

    BattlebustPict.jsは拙作のプラグインで、
    新規の関数も必要であったためいくらか定義しているものの
    コアスクリプトの機能や拡張を多めに使っているため
    保守性に優れます。これを解説に使おうと思います。
    (全てのコードを解説するわけではありません。)

    ちなみに、プラグインを組むのに使ったエディタはVSCです。

    最初にプラグインのユーザーが見る部分から解説します。
    皆さんが毎日のように動かしている
    ツクールMVのエディタを起ち上げておいた方がいいでしょう。



    見やすさを考慮してパラメータ等のコメントの一部を削除しました。

    最初のファイル名ですが単にコメント(コードとして実行しない)
    としているだけなので、何らかの形で表示していればいいと思います。
    なお、ファイル名は半角英数字で構成してください。

    /*:jaと*/で囲われた部分が日本語ヘルプの記入部分です。

    @plugindescの内容は
    エディタのプラグイン管理画面の「説明」で表示されます。

    @authorには
    作者名を記入してください。


    @param,@desc,@default
    はプラグインパラメータの内容です
    それぞれ「パラメータの一意の名称(半角英数字)」、「パラメータの説明」、
    「プラグイン導入時点での初期値」を記入してください。

    @type numberとありますが
    これはパラメータの入力方法を少し変更することができます。
    値に数値を取りたいパラメータの場合は@type numberがよいでしょう。
    値に真偽値を取りたいパラメータの場合は@type booleanがよいでしょう。

    パラメータのtypeの指定方法に関してはツクマテの記事が参考になります。

    (行をクリックしてね!)

    @help
    プラグインを選択した時に見ることのできる
    「ヘルプ」の内容を記入してください。
    ファイルの利用規約はここに記入することが多いです。

    なお、以上の内容はプラグイン管理画面で合っているか確認できます。

    実際のコード部分の説明に入ります。

    今回のプラグインではプラグインパラメータがあるので
    扱いやすいように変数に代入しておきます。
    varから始まっているのでローカル変数への代入だと分かりますね。
    これは拙作だけでなく、多くの方がコードの最初の方でやっています。

    var parameters = PluginManager.parameters('BattlebustPict');
    var BPstartId = Number(parameters['startId'] || 50);
    一行目は導入されているこのプラグインのパラメータを取得します。
    とりあえず入れておきましょう。引数に入れるファイル名を間違えないように。
    2行目以降には同じような表現が並んでいます。
    Numberとある通りパラメータを数値型で取得しています。
    この場合、パラメータの入力がない時には50を取得します。
    他にもStringなどがありますがNumberだけ覚えていれば困りません。

    さて、BattlebustPict.jsで行う大まかな処理は以下の2つです。

    ・バトル開始直後にパーティメンバーの立ち絵を更新する。
    (バトル開始時のフェードインまでに更新は終わります。)

    ・パーティメンバーのステータスに変化があった時に立ち絵を更新する。


    開始時



    ダメージを受ける



    この「立ち絵を更新する」の処理は全く同じ処理を使っています。



    Game_Party.prototype.TimingUpdateBPのことですね。
    このthisはGame_Partyを意味するので
    内容を見るとパーティメンバーに何らかの処理をしていることが分かります。
    forEach文は主体の配列の項目数だけ、内容を繰り返し処理するので
    パーティメンバー全員(一人ずつ)に同じ処理を行うことができます。
    (ここでのactorはパーティメンバーの一要素、
     すなわちアクターを示しています。
     Game_Actorから始まる関数を呼び出すことができます。)

    このように共通の処理を使えるようにスクリプトを組んでいきましょう。

    次にGame_Party.prototype.onBattleStartを見ましょう。
    先に説明したバトル開始直後にパーティメンバーの立ち絵を更新する。
    を実行している部分です。

    ここでは
    ・オーバーライド
    ・フック
    という
    ツクールのプラグインを組む上で
    避けては通れない二つの技術が使われています。


    オーバーライドというのは
    親クラスで定義されている関数と
    同名の関数を子クラスで定義することです。

    処理を上書きしたいなら単純に新しい関数作ればよくね?
    と言う方がいると思います。
    おっしゃる通りです。
    しかしながら、これはツクール用のプラグイン。
    後述のフックと合わせて考えた場合オーバーライドの方が優れていると思います。

    <なぜそう思うのか>
    Game_PartyとGame_Troopは親クラスにGame_Unitを持ちます。
    Game_Unit.prototype.onBattleStartという関数がGame_Unitで定義されています。

    プラグイン未導入の状態では
    Game_PartyとGame_Troopは両方ともonBattleStartとつく関数は定義されていません。

    この時、Game_Partyを主体とする場合にonBattleStartが正しく呼び出された時
    Game_Unit.prototype.onBattleStartが実行されます。
    Game_Troopを主体とする場合も同様です。

    それぞれの共通の処理としてGame_Unit.prototype.onBattleStartが
    定義されていると考えられます。

    しかし、別名の新規の関数を作った場合は
    呼び出し元の記述をonBattleStartから直接変えなければいけません。
    オーバーライドならば子クラスに関数がある時はそれを優先して実行するので
    変える必要がありません.
    これらのことを考えるとオーバーライドした方がよいと思います。


    次にフックについて説明します。

    var _Game_Unit_onBattleStart = Game_Unit.prototype.onBattleStart; と
    _Game_Unit_onBattleStart.call(this); でフックしています。

    こうするとGame_Unit.prototype.onBattleStartの内容を
    call関数により実行することができます。
    引数には内容を実行する主体を指定することができますが
    今回のフックの役割としてはthis(Game_Partyを意味する)が適切です。
    第二引数以降には実行する関数の引数を入れますが(this, a, bみたいな感じで)
    Game_Unit.prototype.onBattleStartは引数を指定する必要がないので入れていません。

    なお、applyという機能が似た関数がありますがタケノコ王国ではcallのみ使っています。
    applyを使いたい方は各自調べてください。

    これらから既存の関数の内容を実行できることが分かると思いますが
    画像のコードを見るとフック以外の処理の記述があります。
    そういうことです。
    このフックの目的は既存の処理を実行しながら、追加の処理も実行することです。
    フックなしとの違いはフックで実行する関数の内容がデフォルトと違う場合でも
    変更後のものを呼び出せるので競合の回避が期待できます。

    <何が言いたいのか>
    つまり、Game_Party.prototype.onBattleStartは
    Game_Unit.prototype.onBattleStartの処理を実行しながら
    Game_Partyが主体の時のみ実行される処理を追加した関数です。

    <プラグイン内でのノートタグの扱い>
    2つ解説します。



    まずreturn data.meta[text];
    引数のtextの値と同じ名前のノートタグの値を返します。
    同じく引数であるdataの値がthis.actor()
    textの値が'BPnormal'の場合は
    return this.actor().meta['BPnormal'];
    を実行しているのと実質同じになります。
    これは関数を実行している主体のアクターのメモのノートタグを参照します。

    次にif(this.actor().note.match(/<BPnoequip>/i)) return;
    条件式は関数を実行している主体のアクターのメモに
    <BPnoequip>と入っていればtrueを返します。
    1行ifなのでtrueのときのみreturn;を実行します。
    ノートタグが入っている時は同関数内のその後の処理を実行しないので
    呼び出す前の関数に戻って次の処理に移ります。

    <最後に>
    以上がプラグインをつくるときに使う技術の例です。
    やや冗長な説明でしたがオーバーライドなんかはコアスクリプトでも
    Window_なんちゃらで多用されているので、ぜひ利用していきたいですね。
    皆さんのオリジナルのプラグインで動くゲームが
    公開されるのを楽しみにしております。

    TimingUpdateBPで検索すればステータス変化時の更新箇所も見つかると思います。
     上述の通り共通の処理が実行されています。興味がある方はご覧ください。
    ※うまくいかなかった場合は記述にミスがある場合が多いです。
     落ち着いて手を付けた場所を見直してみてください。
    ※フックした関数が元々returnなど戻り値に使用することを期待している関数の場合
    return _Game_Unit_kinokocrash.call(this);
    みたいな感じで組むとうまくいくかもしれません。
    ※関数をフックせずに上書きすることで動作するのが正常なプラグインもあるので
    なんでもフックすればいいというわけではありません。