投稿記事

2018年 06月の記事 (4)

sol-fa-soft 2018/06/30 23:07

(ツクールMV)とりあえず作ってみた銭湯マップ最新版

ところでCi-enって、このように多くの方にとって無意味な記事を毎日のように追加していいものなのでしょうか…。こうして自分の言葉で自由に文章を書くのが久々に楽しく感じているのでできれば続けたかったのですが、おそらく他の、もっと目立って支援を受けたい方の迷惑になっていると思いますし、Ci-enというサービスの利益に全く貢献していないので自重しなければなりません。

 私の個人的な利益や精神的な快楽のための活動が、他の方の害になってはいけないのです。例えばノウハウの公開などはそれを公共の利益と考える方はいらっしゃると思いますが、それを誰でも使えるようになることによって自分の利益が毀損されると考える方もいらっしゃいます。もちろん私個人としては全面的に前者側の考えです。しかし一般的な行動規範としてどちらを優先するべきなのか、私は判断することができません。

 とりあえず、今日の分まではせっかく書いたものですので、本当に申し訳ないのですができればご容赦いただきたいと思います。何とぞ。


 この調子でやれるのが最後だと思うととても悲しいですが、気を取り直して……

前回掲載した銭湯の最新版動画

(音量注意)

 ストーリー的なものは全く実装しておらず、ただマップを作ってみただけという状態です。トイレがこの位置にあるのは三久ら木商会さんリスペクト、男湯と女湯があそこで繋がってるのはあぶらそば日和さんリスペクトということで。w

使用しているマップチップについて

 横方向の収納やテレビ&テレビ台、それからマッサージ機のマップチップはSAKANに付属の素材を使っています。

 標準素材を独自に加工した素材についてはファイルを2点置いときますので、RPGツクールMVの正規ユーザであり、このCi-enをフォローあるいは無料プラン以上のご支援をされている方は、RPGツクールMVのユーザーゲーム内に限りご自由にお使いください。クレジット等は不要です。


solfa_noren.png (21.83kB)

ダウンロード

 左から、男&女ののれん、めっちゃ細かいんですけど引き戸を滑らせるレールみたいな部分、そしてさらに細かいんですけど、番台の上面に使っているのが標準タイルセットの SF_Inside_A4.png に含まれているチップで、その暗い部分にキャラクターが入っている表現として足の部分を隠すための横棒を設置しています。その横棒チップです。w 


!SF_Door3.png (30.95kB)

ダウンロード

 こちらは引き戸。ついでに、標準ドア素材である !SF_Door1.png に片側しか入っていない扉を適当に左右反転したものも入れておきます。ご査収ください。

ドアのイベントについて

 話が横道に逸れますが、同人RPGを買いあさっていると、このような「同じマップの中で開いたり閉じたりスルーしたりするドア」がうまく実装できていないものがたまに見受けられます。そのような作品でも本当はうまくやりたかったんだろうと推測されるので、該当する作者の方に見ていただく機会があるかどうかはわかりませんが、イベントコマンドの例を貼っておきます。


 ウェイトのフレーム数や、「移動ルートの設定」コマンドにある「完了までウェイト」にチェックを入れるかどうか等はお好みで。この例では、極力プレイヤーを待たせたくない(自分が遊ぶとき待ちたくない)ので2フレームとかそういう小さな数にしており、閉じるときの完了ウェイトは適用していません。(扉が完全に閉じる前に、プレイヤーは動き出すことができます)

 なお引き戸のSEは、ぜんぜん別の目的で作られたと思われる標準SEを流用しています。ここで活躍しているのが「ピッチ」という設定です。この数値が簡単にいじれるインターフェースと、それからSE演奏自体が「移動ルートの設定」の中の項目として存在するのは本当に素晴らしい。よく練られた設計だと感じます。

ぶるぶる震えるマッサージ機について

 で、やっと今回の本題でござる。このマッサージ機に飛び乗ってぶるぶる震えたらくだらねえな、と思って勢いで作ってみたのですが、この処理がなかなかめんどくさい。

 まず、左右にぶるぶる震えるのは「移動ルートの設定」のスクリプトでキャラクターの今いるマスを表す this._x という変数に、ごく小さな数(0.02とか)を足したり引いたりすることで実現しています。しかしそうすると終了時のキー入力の受付がうまくいかない(おそらくプレイヤーのいる位置が整数でないため、整数の位置にある終了イベントにキー入力が渡されない)。なので、プレイヤーはいったん透明化して、同じ姿をした別のイベントに震えてもらっています。w

 キャラクターの画像ってぜったいどこかでオフセット的に、基準点から(x,y)に何ピクセルかズレたところに表示してると思うんですよね。しかしコアスクリプトをしばらく眺めてもその計算式がどこに書かれているかわかりませんでした。それがわかればもっと簡単にやれるはずなんですが…。「キャラクターは通常、上方向に6ピクセルだけズレて表示される」というのを最初の手がかりとして追ったのがいけなかったのかも。

 ビリビリSEは標準の「Paralyze1」(90, 70, 0)です。ここでもピッチ(今回は70)が大活躍しつつ、麻痺の音を使っているのが自分的にツボです。

 で、肝心の「マッサージ機の上にいる、プレイヤーと同じ姿をしたイベント」も震えていてxの値が整数でないので、透明化したプレイヤーはさっきとは逆の理由でこのイベントにキー入力を渡すことができません。同じ場所に複数のイベントを設置(何かのタイミングで別の場所で作ったイベントをこの場所に移動)すればうまくいくかもしれませんが、それはそれでまた別のめんどくささがあるので、透明化したプレイヤーは1マス上にずれてもらい、そこでイベント終了のトリガーを引こうと考えました。

 しかしそうすると、見た目のキャラクターが動いていないにも関わらず、マップが1マス分上にスクロールしてしまいます。それを防止するために、マンカインド様制作のマップスクロールを固定するプラグインを入れており……

 ……うん。根本的に、もっと簡単に実現する方法を考えるべきです。この機構はボツにして、何か思いついたらまた作りましょう。ぱっと思い至るところでは、震えるアニメをドア画像みたいに歩行キャラクターの向いている方向で表現する、あるいは足踏みアニメとして作って足踏み頻度を変える、あたりが現実的じゃないかな?

こういう試行錯誤も楽しいです

 露李鈴氏がsol-fa-softの作品として「ぼくらの露出ゲーム2」を作っているとき、彼はRPGツクールMVでの制作を「毎日遊んでるみたいで楽しい」と表現していました。そのときの私は「まさか、ものを作るという作業が苦しくないわけがない」と思って全く信じていなかったのですが、その後ツクールの仕組みや制作理念を理解し、極端にオープンなコミュニティ、プラグイン作家さんやドット絵職人さんたちの温厚さw などを目にして、それから自分で実際にツールを触ってみると確かに、レゴで遊んだり、電子回路で遊んだり、プログラミングで遊んだりするのと似た感覚があるのがわかります。

 特にこういう「マッサージ機に乗るとぶるぶる震える」みたいな無意味でばかばかしくてくだらない仕組みの実装がうまくいくとひとりでひたすらニヤニヤしてしまうんですよね。実際にこれが作品に組み込まれたときに喜んでくれるユーザがいったい何人いるのか(それともひとりもいないのか)はわかりませんが、この自己満足感が作品の完成に少しでも寄与することがあるのならば、価値はものすごく大きいということになります。何せ、作品が完成することが何よりも優先されるべき一番大事なことですから。

 今回の試行錯誤も、次の「楽しい実装」の糧になることでしょう。また、こうやって回り道するのも楽しいことだし、もっと簡単な解決方法を思いついてその効率化を誇らしく思うのも嬉しいことです。RPGツクールは、少しの創作意欲と好奇心さえあればこれを比較的簡単に味わえるようにできていると思います。

 ……と、こんなことを書いている間にも、新しいプラグインのアイデアが。まず同じ機能のプラグインが既に公開されていないか探して、コアスクリプトを読まなきゃ。

sol-fa-soft 2018/06/29 00:30

新作「アイドルDVDのつくりかた2」本日発売です

本日は、sol-fa-softの新作ゲーム「アイドルDVDの作り方2」の発売日です。
(RPGではありません。従来型のアドベンチャーゲームです)
原画・CGはKIYOSE氏。よろしくお願いします。


http://www.dlsite.com/maniax/work/=/product_id/RJ228183.html

サークルによる紹介ページはこちらです。

こういう意見をこんなところに書くなよっていうあれですけど、
Ci-enに、DLsite販売作品へのリンクを簡単にぽちっと張る機能がなさそうなのが
気がかりです。私が見逃してるだけだろうか…。

ツクールMV制作途中動画もひとつ貼っておきます。
こちらの世界ではTVCMも打たれているようです。
(音楽はありませんが効果音が出ます。音量注意)

なんとなく思いつきと勢いで作ってみたマッサージ機、
これがなかなかめんどくさい処理をしています。
そのへんの解説はまた次回!

sol-fa-soft 2018/06/28 11:42

(ツクールMV)フキダシアイコンをスキップ可能にするプラグイン

「ウェイト処理」は辛抱ならん

 ゲーム中のウェイト(何もしない何もさせない待ち時間)ってどう思います?

 プレイヤーとしての私は、基本的に辛抱ならんのです。セリフ表示が流れていく中で「話しているリズム」を演出するために1秒に満たないウェイトがちょいちょい入ってるだけでもすんごいイライラするし、そもそもゲーム中のテキストが「1文字ずつ表示される」という仕組みにも疑問を感じます。自分が読むスピードより表示の方が遅いとそれだけで発狂ものです。あれはおそらく堀井雄二氏が始めたシステムで、当時は漢字が表示できなかったからあの速度でもやれるのですが(と、このへんの話はすごく長くなるので省略。機会があったらまたいずれ…)

「フキダシアイコン」も時間がかかりすぎでは?

 で、今回の本題。

 他の部分はまあいいのです。「ウェイト」というイベントコマンドや \.(1/4秒待つ) \|(1秒待つ) といった制御文字はそもそも作者として入れなければいいし、文字の表示速度に関しては偉大な先人達が作られた優れたプラグインがありますし。

 問題はフキダシアイコンです。

 これ自体は、文章なしで登場キャラクターのおおまかな感情を知ることができ、作者も省力できるし、ユーザーもキャラクターの仕草まで想像できて楽しく遊べるスグレモノだと思います。

 ただね、このフキダシがぴょこぴょこしてる間、1秒くらい待たされるんですよ。もうそのシーンが表現していることはわかってるのに、その余分な1秒があればどれだけ文章が読めるんだっていうこの感じ、わかりますかね…? わからないかもしれません。すみません。

というわけでスキップするプラグインを探しましたが……

 きっと、この鬱陶しいフキダシアイコンをスキップしてくれるプラグインを誰かが既に作っているに違いない。そう思って探しました。

 フキダシアイコンを表示するだけは表示して、キー入力があったらスキップする。ただそれだけでいいのですがなかなか見当たらない。

見当たらないので、自分で書きました。

 機能は以下の通りです。

  • フキダシアイコンを表示している間、okキーあるいはctrlキーが押されたら(押されていたら)それを終了します。
  • okキーが既に押しっぱなしだった場合は、フキダシアイコンが一瞬だけ見えます。

BalloonSkip.js (1.30kB)

ダウンロード

 MITライセンスで公開しますので自由に使ってください。


(以下は読まなくていいと思います)

ソースの解説など……

 仕組みは驚くほど簡単です。せっかくなのでソースを具体的に解説してみましょう。

 まずは、プログラムの学習でよく出てくるあれ。そう、おまじないです。意味わからなくてもこう書いときゃいいです。

(function () {
    'use strict';
    	// ここにプラグインの内容を書く
})();

 プラグインの内容としては、最初にこのプラグインの名前を書きます。このプラグインの名前はシンプルに BalloonSkip に決めました。pluginNameという変数を作って文字列を入れれば自動的に「プラグイン管理」で表示される名前になります。型はvarというキーワードが勝手に決めてくれるので気にする必要はありません。

※訂正:
「プラグイン管理」で表示される名前はファイル名から取っているようです。pluginNameというのはここでは全く意味のない変数で、参考にしたプラグイン(具体的にはトリアコンタン様のソース)で、プラグインパラメータを取得する際にPluginManagerに渡すために変数を作っているようです。
なのでこの段落の解説は間違いです。失礼しました。

    var pluginName = 'BalloonSkip';

 次にプラグインの処理として、まず _update という名前の変数を作り、そこに Sprite_Balloon.prototype.update というフキダシアイコンを監視して書き換える(=アニメーションを実現したり、終了のタイミングで消したりする)関数をそっくりそのまま代入します。なんか変数と呼ぶのはおかしい感じが若干しますが、そういうものみたいです。

    var _update = Sprite_Balloon.prototype.update;

それから Sprite_Balloon.prototype.update をまっさらな状態に再定義。

    Sprite_Balloon.prototype.update = function() {
    	// ここにやりたい処理を書く    
    }

 やりたい処理というのは以下の通りです。

  • okキーが押された、つまり input.isTriggered('ok') が true  あるいは
  • ctrlキーが押しっぱなしである、つまり input.isPressed('control') が true

 のとき、フキダシアイコンの残り表示期間(おそらくフレーム数)を表し、この値がゼロ以下になるとフキダシアイコンが終了となる変数 this._duration にゼロを代入します。この thisSprite_Balloon.prototype.update を指す、そのまんま代名詞のような役割をするキーワードです。

    if(Input.isTriggered('ok') || Input.isPressed('control')){
            this._duration = 0;
    }

 それから、

  • okキーが押しっぱなしである、つまり input.isPressed('ok') が true

 のときは、this._duration を 5 だけ減らします。this._duration は放っておいてもフレームごとにデクリメント(1だけ減らす)されるので、つまり終了までの期間が大幅に短くなるということです。これにより即時終了するのではなく、ある程度の時間(と言っても一瞬ですが)をかけて終了させることになります。

        if(Input.isPressed('ok')){
            this._duration -= 5;
        }

 最後に、元々の Sprite_Balloon.prototype.update に入っていたオブジェクトの機能をぜんぶくっつけます。これは最初に _update という名前の変数に入れましたよね。

        _update.apply(this);

 apply(this) の概念はなかなか面白いのですが説明すると長くなるので割愛します。興味のある方は適当にぐぐって調べてください。
 以上がこのプラグインの内容です。ご清聴ありがとうございました。

 この処理は間違ってる、この変数は触るべきではない、この関数の返り値は保証されていない、みたいなご意見があったらコメントで教えてください。偉そうな解説ぶっこいてるけど何せJavaScriptに関してはほぼ素人、一夜漬けでコアスクリプトを読みながら文法を推理し、有名なプラグイン大家の書いたソースを参考にして作った、というものです。実装にはいくつかの方法があるように見えましたが、ちゃんと正解を選択している自信はありません。特に「5減らす」のあたり超てきとーだし。理由はよくわかんないけど5減らしたらちょうどいい感じになっただけなので。

プログラムは楽しいよ!

 ところで、RPGツクールMVのプラグインの仕組みってGUIでいじれるパラメータとかプラグインコマンドとかあって便利だけど、それに頼ってるとプログラムそのものや、プラグイン制作の楽しさに触れることができずちょっともったいない気がするのですがいかがでしょうか。

 例えばこのプラグインの ok という部分を tab に変えると、okキーではなくtabキーでフキダシアイコンが終了します。 isTriggeredisReleased に変えると、押した瞬間ではなく離した瞬間が検知されます。こういうのを試してみて、

「おっ、ほんとだ。ふふっ」

 ってなる方はプログラムを楽しむ素地があると思います。プログラム快楽回路(今作った言葉)はこういう、ソースのちょっとした改造から育まれるとマイコンBASICマガジンで育った私なんかは思うわけです。

 ぜひ一緒に、コアスクリプトを読むだけで性的絶頂を覚えるような体質を目指しましょう! この方みたいにね。

sol-fa-soft 2018/06/27 22:45

(ツクールMV)自作の遊具

近頃は、いくつかの勝手なプロジェクトを食い散らかしながら楽しそうな部分だけを作ったり作らなかったりしています。

 この前まで「水浴び王女の休日(仮)」という姫がお城を抜け出して湖で水浴びして襲われたり服を盗まれたりするようなものを手がけていました。しかしそれはいったん脇に置いといて、今は「かえりみちの露出RPG(仮)」というのを進めています。水泳授業の間に下着が盗まれてノーパンで帰るような話です。

 とにかく中が空洞になっていて複数の人が入って遊べる(意味深)ような公園の遊具が欲しかったので自作しました。「赤富士」と命名。頂上の穴から出入りするためのハシゴは、最初は縄だったのですが中を見るとなんか絞首台みたいになっちゃったのでやめました。

(↓音楽はありませんが効果音が出るので一応音量注意)

akafuji.png (36.83kB)

ダウンロード

 画像素材も置いときます。これと、SF_Outside_C.pngの下の方にある赤い屋根とかを組み合わせて作ります。滑る方法とかは、ツクラーだったら見ればわかりますよね?(わからない場合はコメントでもくだされば説明する努力をしてみます)

 ついでに左右方向に置くための平らなタイプのベンチと、上方向に伸びた緑のフェンスが壁に突き当たったときに自然に見えるような接合部の画像も一緒に入れておきましょう。大盤振る舞いだな。

 いずれも標準のタイルセットの画像を独自に加工したものです。RPGツクールMVの正規ユーザで、このCi-enをフォロー、あるいは無料プラン以上のご支援をいただいている方は、RPGツクールMVのユーザーゲーム内での利用に限り、ご自由にお使いください。ゲーム種別(エロとかホラーとか?)の制限等はありませんし、クレジット等も不要です。

 以上、今日はこんな感じで。このCi-enでの情報公開が、何より、私の創作モチベーション維持に繋がればいいなと思います。誠に身勝手で恐縮ですが。

月別アーカイブ

記事のタグから探す

限定特典から探す

記事を検索