fc2ブログ

自己流プラグインルール

プラグインを作る際のルールは人それぞれあると思います。
今回は私のプラグインルールみたいなのを紹介します。

一部、好きか嫌いかといった内容にもなりますが、他のプラグイン製作者のやり方を批判する意図はありません。
私は他の人がどういうやり方をしていようと気にしません。
そもそも私のルールも結構適当です。

プラグイン制作をする方(されている方)はいろんな方のルールを見て、気に入ったものだけを取り入れていけばよいと思います。

RPGツクールとその素材の役目

ルールを書く前に、まずツクールやプラグインに対する私の考え方について書きます。

ゲーム制作の目的というと、だいたい「完成させて公開する」ことかと思います。
なので「完成させられなければ意味がない」と言われることもありますが、私はそうは思いません。

私にとってツクールというものは「ゲーム制作を楽しむためのもの」です。

出来れば完成させてほしいけど、それが難しいこともわかっています。
ゲームを完成させるためには、地味で苦手な作業も行わないといけないという大きな壁があります。
大抵の人はそれを超えるまでモチベーションが持ちません。

それでも、せめて挫折するまでは楽しんでほしいです。
どうでもいいような無駄に細かいところにばかりこだわり、そこに満足して終わるのもツクールの楽しみ方の一つです。
そして、プラグインのような素材もその延長線上にあるものだと思っています。

なので私はけっこう機能追加の要望は受けます。(簡単に追加できるもののみですが)
ゲームの面白さにも、プレイヤーのためにもならないような機能を実装することもよくあります。
それがプラグインの役目だと思っているからです。

とはいっても、結局は適当です。
矛盾したことも書くと思いますが、その間のバランスにいるんだと思ってください。

コアエンジン系は使わない

いきなり批判になってしまいますが、私はCoreEngine系のプラグインが好きではないです。
CoreEngineとは
ざっくりいうと、
「このプラグインを使うには、【○○CoreEngine.js】というプラグインを上に導入する必要があります。」
みたいなやつですね。
ちょっと使ってみるだけでも2つのプラグイン導入するのがめんどくさい派です。
なので、自分のプラグインにも使いません。

私がコアエンジン系を好まないのは偏見もあります。
というのも、コアエンジン系には大きく分けて2種類あり、大半が私が好まない方だからです。
なので、良いと思えるコアエンジンもあります。

で、その2種類というのは以下のような感じ。
  1. よく使う機能(関数)をまとめたもの
  2. 自身が製作したプラグイン同士で競合が起こらないようにするためのもの

1. よく使う機能(関数)をまとめたもの

こちらは私もありだと思います。
複数のプラグインで共通で使う関数はひとまとめにしておいた方がメインのプラグインのコードが減らせます。

ただまあ、そんなに量はないと思うのでそれだけのために分けるのも微妙な気がします。
なので私は、使い回せそうな関数もそれぞれのプラグインで定義しています。

2. 自身が製作したプラグイン同士で競合が起こらないようにするためのもの

こっちがほとんどで、そして厄介。
自身が製作したプラグイン同士で競合が起きて、その解消が難しいことはあります。
ただ、そのためにコアエンジンを使うということは、「かなり強引に解消している」ということであり、そしてそれは「自身が製作したプラグイン以外との競合は度外視」している可能性が高いです。

具体的には、「いろんなプラグインで再定義してそうな関数を上書きしてしまっている」ことが多いってことです。

上書きは大なり小なり私もやっていることなので、これがダメってことではありません。
「厄介な上書きをひとまとめにしたもの」というイメージが強いので好きになれないです。

オプションプラグインを使う

私はコアエンジンは使っていませんが、オプションとしてプラグインを複数に分けています。
オプションとして分けると以下のようなメリットがあります。
  1. 不要な機能をオミットできる
  2. 不具合を特定しやすい
  3. プラグインパラメータを分割できる
  4. 有料化しやすい

1. 不要な機能をオミットできる

プラグインによって機能を追加すれば追加するほど処理が増え、ゲームが重くなります。
使わない機能を追加しないことで、それを回避することができます。

ついでにオプションで競合が起こった際に、そのオプションを外すという選択肢が生まれます。
(とはいっても、このケースは滅多にないですけどね)

2. 不具合を特定しやすい

エラーが発生した際にどのプラグインで発生したかがわかれば、原因の特定が早くなります。
これは不具合や競合の報告をもらった際にも役に立ちます。

3. プラグインパラメータを分割できる

地味にこれが大きい。
私はプラグインパラメータを多く付ける方なので、オプションで分割したりします。
プラグインパラメータが多い方がいいのか少ない方がいいのかに関しては、また後で書こうと思います。

4. 有料化しやすい

プラグインというのは有料化が難しい素材です。
イラストや音楽であれば、サンプルを見たり聞いたりすることで製作しているゲームに必要かどうかがわかります。

しかし、プラグインは導入して使ってみないとわかりません。
「説明だけ見て、使ってみたら思ってたのと違った」みたいなことが発生すると、製作者も利用者もどちらも良い思いをしません。

そこで私は、プラグインを有料化するなら最低限の基本的な機能が使える本体プラグインを無料にし、細かなパラメータを変更できたり機能を追加できるオプションを有料化するのが良いのではないかと思ってます。

そして、この有料化にはさらにメリットが二つあります。

一つは、機能の追加の要望を受けたとき
「その機能は有料プラグイン側に付けることになりますがよろしいですか?」
と返答できることです。

要望を受けたとき、「その機能ってゲームの面白さと関係あるのかな?」と思うことがよくあります。
こだわりたい部分は人それぞれでよいのですが、余計なとこにこだわってばかりいてゲームが完成しないのも考えものです。

なので、一度本当にその機能が必要なのか考えてもらうのは大切なことです。
それでも追加してほしいと言われたら、有料プラグインを買ってもらえるということでWINWINとなります。

二つ目は(メリットと言っていいのかどうかわかりませんが)、競合が起こった際に修正の要望が自分の方に来ることです。
競合が起きた際、その修正依頼がどちらの製作者に行くかわかりません。
基本的には連絡取りやすい方なのでしょうか?

ですが、有料プラグインとの競合となれば、競合相手側からの修正は難しいです。
買ってもらうわけにはいきませんからね。
自分側の手間が増えることにはなりますが、相手側に迷惑かけることが減るのはメリットかなと思います。

プラグインパラメータは多め

プラグインパラメータは多い方がいいのか? 少ない方がいいのか?
メリットデメリットを私の思いつく範囲で並べてみます。
メリット
  • 似たようなプラグインの中で個性が出せる
  • ユーザーが細かいところまでカスタマイズできる
デメリット
  • 初心者がとっつきにくい
  • コードが複雑化する

: 似たようなプラグインの中で個性が出せる

正直、プラグインなんて似たような機能のものは探せばだいたい見つかります。
その中で選んでもらうには、自分のプラグインでなければできない機能というものが必要です。
(もしくは今からでは難しいですが、誰よりも早く公開するかです)

機能が多いというのはわかりやすい個性になります。

: ユーザーが細かいところまでカスタマイズできる

ツクラーというのは細かいところにこだわりたがります。
それこそ、ゲームの面白さに関係なければ、プレイヤーのためにもならないような部分も含めてです。

ユーザーの満足度を高める手段として、プラグインパラメータを多くするのは有効です。

×: 初心者がとっつきにくい

プラグインを使ってみようと思って導入してみたら、パラメータが多くて自分には扱いきれないと思ってしまうのはあるかと思います。
それなら「パラメータが少なくて扱いやすそうなプラグインにしよう」となってしまいます。

パラメータなんて大抵初期値で十分なのですが、使う人がそう思ってくれるかどうかは別です。

このデメリットは、オプション化してパラメータを分けることで解決できます。

×: コードが複雑化する

パラメータが多いと、当然コードが複雑化します。
複雑化すれば処理が重くなり、競合も起こりやすくなります。

これに関してもオプション化である程度解消できます。

複雑な処理をオプション化することで、本体のコードはシンプルにできます。
さらには、オプションという外部からカスタマイズできるように本体のコードを書く必要があるため、自然と拡張しやすいコードにもなります。

プラグインコマンドは少なめ

プラグインパラメータは多めですが、逆にプラグインコマンドは最小限にしています。
この理由としては、作業量が増えることでゲーム完成が遠のきやすいと考えているからです。
プラグインパラメータは一度設定して終わりですが、プラグインコマンドは必要となるたびに呼び出す必要があります。

例えば、私は【文章の表示拡張】プラグインを公開していますが、文章の表示に関する機能で頑なに実装しない機能があります。
それはメッセージのポップアップ機能です。
わかりやすく言うなら、キャラクターの近くに小さなメッセージウィンドウを開いて、誰のセリフかわかりやすくする機能ですね。

これを実装すると、「イベントシーンでの[文章の表示]すべてにプラグインコマンドを実行する必要」が出てきます。

これはあまりにも作業量が多いです。
いくら「完成より楽しむことが大事」と言っても、さすがに完成が大きく遠のきそうな機能の実装には抵抗があります。

とかいいつつ、メッセージウィンドウをポップアップさせるプラグインとの競合対策はしてたりするので、自分が実装しなけりゃそれでいいやって感じです。

プラグインコマンドはまとめる

これは現在進行中のルールで、まだ適用していないプラグインがいくつかあります。

オプションごとにプラグインコマンドを付けていくと、どのコマンドがどのオプションにあるのかわからなくなってきます。
そういったことに対処するため、プラグインコマンドは本体にすべて実装し、「オプションを導入しないと機能しないよ」と分かるように書いておくという手法を取っています。

プラグイン名にMZといったツクール名を付けない

これは正直微妙です。
付けてもいいです。

MVとMZでプラグインが別々の場合、多くのプラグイン製作者さんがMZ用プラグインの名前にMZという文字を付けています。
ただ、私はこのやり方には一つデメリットがあると感じているので、それについて書きたいと思います。

: ツクール名を付けるメリット

一つは別々のファイルとして持っておくことができるからです。
ツクールの仕様上、大半のプラグインは名前を変更できません。
同じ名前だと上書きすることになってしまいます。

さらに、どのプラグインがどのツクールに対応しているのかすぐにわかります
ツクール名を付けるのが普通なので、メリットについては大半の方がわかると思います。

×: ツクール名を付けるデメリット

ツクール名を付けるデメリットは、「今後出てくるツクールとMZに互換性があった場合にMZと名前がついていると困る」ことです。
ツクール名をつけた方々はこのデメリットに気づいてないように思います。

例えば、もし次に出てくるツクールが【RPGツクールRX】という名前の場合。
MZのプラグインがそのまま使えるのであれば、RXという文字を入れたプラグインを新しく出す理由がありません。
かといってMZという文字の入ったプラグインがRXにも使えたり使えなかったりといった中途半端なことになるのもよくないです。
これの回避策は私にはわかりません。

あとメリットに書いたもののうち、「別々のファイルとして持っておくことができる」というのは、ユーザーからすればあまり関係ないように思います。
ユーザーが複数のツクールを使うことは稀なので、上書きすることになっても問題ないでしょう。

ただ、MVとMZに互換がなければ新しいツクールも大抵互換ないです。
あと今となっては次のツクールが発表されてるし、この問題がまた出てくるのは何年も先になりそうです。

例外中の例外

こんな感じのルールでやってますが、実はこれらのルールを適用していない例外プラグインなんてものもあります。

それは【疑似3Dバトル】プラグインです。

このプラグインだけはプラグインパラメータを最小限に減らし、要望もほぼ受け付けてません。

主な理由としては、
  • 似たようなプラグインがないため、プラグインパラメータによる個性が必要ない
  • 使う人が多いため、機能を減らしてでも競合の起こりにくさを最優先したい
といったところです。

私がこのプラグインに手を加えるたびに、競合対策してくれている人たちに手間をかけさせてしまいます。
なのでこのプラグインに限り、私が作るのは基礎的な部分だけにして余計な機能は一切つけいないことに徹しています。

代わりに拡張できるようには作ったつもりですし、公開する際に「改変して使ってくれて構わない」と言っています。
なので拡張に関しては他の方に任せます。



書き終わってみれば結構長い記事になりました。
参考になるものがあったら嬉しいです。
スポンサーサイト



2022-05-29 : スクリプト日記 : コメント : 4 : トラックバック : 0 :
コメントの投稿
非公開コメント

No title
お世話になっております。
MPP_TpbTimeline.jsについて、version 1.3.2からアップデートしようとしたんですが動かなくなってしまいました。逃走の際にアクターアイコンがゲージ外に飛び出してしまう不具合だけ直したいのですが、どこをいじればいいとかご教授願えますでしょうか
2022-06-01 18:12 : URL : 編集
Re: No title
こんばんは、いらっしゃいませ。

逃走時のアイコンの不具合だけを治すなら、おそらくバージョン1.3.2の1137行目当たりにある battler.tpbChargeTime();Math.max(battler.tpbChargeTime(), 0); に変更したら良いと思います。
テストはしてないです。
2022-06-01 18:55 : 木星ペンギン URL : 編集
No title
MZのコアスクリプトを1.5.0に変更したところ
MPP_MapLight.js
MPP_MapLight_Op2.js
が動かなくなりました
2022-06-02 14:52 : URL : 編集
Re: No title
ご報告助かります。
バージョン1.5.0での変更点を確認してから、順次対応します。
しばらくお待ちください。
2022-06-02 20:15 : 木星ペンギン URL : 編集
« next  ホーム  prev »

プロフィール

木星ペンギン

Author:木星ペンギン
ほぼツクールのことばかり書いてます。
名前は↑から取りました。
木製ですが木星です。
トカゲは関係ありません。

ゲーム

  • 箱庭の勇者たち(体験版)
  • ぼくらの大革命!

メールフォーム

wood_penguin@yahoo.co.jp

名前:
メール:
件名:
本文:

月別アーカイブ

広告

寄付(Donate)