投稿記事

2019年 08月の記事 (6)

ブラウンチップ☆ 2019/08/31 10:09

プラグイン改変入門~おおまかな流れ編~

はいどーもこんにちは、ツミオです。
本日はプラグイン制作者らしく、プラグイン改変の方法を書いていこうと思いますよ。
目次をドン。

  • 改変するプラグインの選定
  • プラグインの各部解説
  • 改変箇所の選定
  • 改変してみる
  • 改変後の問題点
  • 改造後のプラグインのDL

ちなみに数回にわけて書く予定です。

改変するプラグインの選定

プラグインを改造するには、改造するプラグインを選定しなければなりません。
本当は僕以外が作ったプラグインを改変するのが一番よいと思うのですが、規約とか確認するのが面倒なので自分が作ったものにします。
というわけで今回はコチラ。

SimpleMenuLayout

このプラグインを導入すると、メニュー画面がシンプルになります。
DQ風だったりポケモン風だったり、まあそんな感じです。
作ったのが2017年でかなーり古いので、若干気恥ずかしいですね(笑)

今回の記事はJavaScriptの知識は不要

さてプラグインを改変するにはJavaScriptの知識が必要です。
ですが、英語がちょっとでもできるなら、軽い改変くらいならばJavaScriptの知識なしでもなんとなーく想像がつくようになっています。
というわけで、今回の記事ではJavaScriptの知識云々は無視し、プラグインの各部がどうなっているのかをざっと眺め、それから実際に改変してみたいと思います。

フォロワー以上限定無料

特典はほとんどありませんが、入ってくださる方が増えれば増えるほど僕が喜ぶプランです(笑)

無料

【 プラグイン制作応援プラン 】プラン以上限定 支援額:300円

このバックナンバーを購入すると、このプランの2019/08に投稿された限定特典を閲覧できます。 バックナンバーとは?

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

ブラウンチップ☆ 2019/08/28 17:46

チート対策について考えてみる

はいどーもこんにちは、ツミオです。
本日はチート対策について書いていきたいと思います(RPGツクールMVとUnity)。
目次はこんな感じ。

  • チート対策は必要か
  • セーブデータの改ざん手法
  • セーブデータの改ざん対策
  • メモリ改ざん手法
  • メモリ改ざん対策
  • コード改ざん手法
  • コード改ざん対策
  • まとめ

なお具体的なチートのやり方やツールについては一切触れません(悪用されたら困るので)。
チートの概要を紹介し、それに対して取れる対策方法を考えてみよう、という感じです。

チート対策は必要か

最初からこの記事の存在意義が揺らぐ問いかけですが、そもそもチート対策って必要なのでしょうか?
例えばスマホゲーム(オンラインゲーム)なら必須でしょう。
チートで不正にキャラクターを強くされると、ゲームが崩壊します。
「なんだこいつずっと無敵状態じゃないか」とかですね。
それはユーザーの不満に繋がり、ひいては売上の減少にもつながるでしょう(知らんけど)。

ですがここで僕が対象として考えているのはエロゲです。
僕のスタンスとしてはチートしたいならすればいいんじゃない? というものです。
というのも、オンライン機能を実装しているエロゲはともかくとして)、ふつーのエロゲはチートをされても別に誰も困らないんですよね(笑)
作者として「ちゃんと遊んで欲しい!」というのはあるかもですが、そこまで致命的に困ることはなく、ユーザーが単にゲームを楽にクリアできるくらいです。

そこを踏まえた上で、どのようなチートがあり、対策として取れることは何があるのかを考えていきたいと思います。

セーブデータの改ざん

真っ先に思いつくのはセーブデータの改ざんでしょう。
RPGツクールMVとUnityそれぞれの改ざん手法を見ていきます。

RPGツクールMVでのセーブデータ改ざん

RPGツクールMVではセーブに使うスクリプトはほぼほぼ固定でしょう。
セーブデータはJSON形式で保存されているため、ユーザーはそのデータを簡単に書き換えることができます。
ただし後述するように、若干の対策が取られてはいます(セーブデータの圧縮が目的なのだとは思いますが……)。

Unityでのセーブデータ改ざん

Unityでセーブデータを保存する際に使われる手法の一つはPlayerPrefsでしょう。
入門記事とかでデータの保存によく使われているかと思います。
こちらはWindowsの場合だとレジストリにデータを保存するため、ユーザーが簡単に値を改変することができます。

他の方法としては例えばJSON形式でセーブデータを保存する方法があります(RPGツクールMVと同じですね)。
こちらも生のデータを保存してしまっていると、ユーザーはそのデータを簡単に書き換えることができます。

フォロワー以上限定無料

続きが読めます

無料

【 プラグイン制作応援プラン 】プラン以上限定 支援額:300円

続きが読めます

このバックナンバーを購入すると、このプランの2019/08に投稿された限定特典を閲覧できます。 バックナンバーとは?

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

ブラウンチップ☆ 2019/08/26 09:13

ツクールで使える計算式について

はいどーもこんにちは、本日はコマンドバトル(仮)からちょっと離れて、RPGツクールMVの話題に行ってみたいと思いますよ。
本日はこんな感じ。

  • 計算式とは
  • 三項演算子
  • 短絡評価
  • おまけ

なお、この記事は完全に制作者サイドに向けたものです。

計算式とは

ここで言う計算式とは、戦闘等で使うスキルの計算式のことです。
詳しくはRPGツクールに付属しているヘルプを見ていただきたいのですが、例えば以下のような計算式が使われています。

a.atk * 4 - b.def * 2

aはスキルの使用者側で、bはスキルの対象者です。
例えば2回攻撃を「ハロルド」が「こうもり」に使った場合、aは「ハロルド」で、bが「こうもり」ですね。
atkというのは攻撃力で、defは防御力のことです。

この辺までは普通に開発している方ならごく日常的に使用しているところかなと思います。

三項演算子

さて先日ツクマテさんでツクールの計算式に出てくる記号についてという質問がありました。
こちらで使われている計算式をそのまま引用すると以下の通りです。

a.atk * 4 *(a.hp <= a.mhp / 5 ? 2 : 1) - b.def * 2

確かに先ほどよりも複雑ですね。
具体的には、最初の式の

a.atk * 4 - b.def * 2

*(a.hp <= a.mhp / 5 ? 2 : 1)

が組み合わさった形となります。
そして恐らく多くの方が疑問に思うのもこの組み合わされた中で使われている「?」や「:」という記号でしょう。

謎の記号の正体

こちらは三項演算子と呼ばれる記述で使われている記号です。
ツクマテさんの方でも回答しますが改めてまとめると、以下の形式になります。

(条件式) ? (条件式がtrueのとき実行) : (条件式がfalseのとき実行)

もう一度あの謎の記号が混じった部分を見てみましょう(最初の*は掛け算の意味です。説明に不要なのでここでは省きます)。

(a.hp <= a.mhp / 5 ? 2 : 1)

上記の式の意味は 「使用者の現在HP」が「使用者の最大HP÷5」以下ならば「2」を返す。そうでなければ「1」を返すとなります。
最初の

a.hp <= a.mhp / 5

をわかりやすく記述すると

a.hp <= (a.mhp / 5)

ということですね。

なんでこんなややこしい記述を使うのか

三項演算子は、ある程度プログラミングに慣れていても、パッと見ただけではどういう計算式になっているのかわかりにくいです(特に1行で複数の三項演算子が使われていると最悪です)。
それでもなぜこんなものを使うのかと言うと、記述が簡単になるからです(「記述が簡単」とは「タイプ数が少ない」の意味であり、「読みやすい」と同義ではありません)。
具体的には、ツクマテの方でWTRさんが回答しているように、if文を使うと複数行になるものが、なんと1行で書けてしまうのですね。
if文を使うほど複雑でない場合は僕もよく三項演算子を使っています。

また、RPGツクールMVのスキル計算式の欄は1行に制限されています。
それならば、通常は複数行で書くスタイルであるif文よりも、三項演算子の方がまだ読みやすいだろうな、という感じです。

短絡評価

最後は短絡評価です。
計算式として使われる短絡評価の形式は

値1 || 値2

が多いかなと思います。
意味としては値1が空に相当する値ならば、値2を返すということになります。
例えば

undefined || a.atk * 4 - b.def * 2

ならば結果として使われる式は

a.atk * 4 - b.def * 2

の方になりますね。

使いどころ

例えばプラグインでエネミーやアクターに機能を追加していて、以下のような記述が可能だとします。

a.superPower()

このsuperPowerメソッドは空に相当する値もしくは超強い値をランダムで返すとします。
で、空の値が返ってきたとき、あるスキルでは

a.atk * 4 - b.def * 2

を適用し、あるスキルでは

a.atk * 1 - b.def * 2

を適用するとします。

このとき、各スキルは以下のように記述することができます。

a.superPower() || a.atk * 4 - b.def * 2
a.superPower() || a.atk * 1 - b.def * 2

まあこんな使い方をする人がいるのかどうかはかなり怪しいですが……(僕ならsuperPowerを呼ぶだけできちんと区別して使えるようにします)。

フォロワー以上限定無料

次回以降の記事の予定など

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

ブラウンチップ☆ 2019/08/24 11:28

各パートのイメージを公開

はいどーもこんにちは、ツミオです。
本日は各パートのイメージ画像を貼って解説していこうと思います。
流れとしてはこんな感じ。

  • 草案その1
  • 草案その2
  • 会話シーン
  • おまけ

なお、ここで使っている画像はふうりんさんが試しに作成したもので、キャラを含め実際のゲームで使用するわけではありません。

草案その1

なるべくシンプルなものを作ろう、ということで合意していたので、最初はこんな感じの画面になりました。


画面の左側に操作キャラクターの立ち絵が表示されています。
画面の右側は各種コマンドがいくつか並び、画面上部は「現在位置」に合わせて変化する感じです。
めっちゃシンプルですね。

草案その2

さてコマンドは先ほどのような感じでよいのですが、ゲームを遊ぶにあたって最低限必要なものは「対戦のためのミニストーリーを起動するための機能」 です。
というわけで、それを余っている部分に表示する感じにしました。


ミニストーリーが色々と表示されていていますね。これをクリックすると、各種ストーリーが始まるイメージです。
左側は仮に「どんなコマンド必要だろう?」と相談して適当に当てはめたものです。これは多分変わりますね(オプションとかないですし)。

会話シーン

会話シーンについても色々と話した結果、別の会話シーンを1から作るのではなく、今まで挙げてきた草案に会話機能を追加する感じがよいのではないか? ということになりました。
具体的にはこんな感じですね。


ツクールでよくある立ち絵プラグインみたいな感じで会話していけたらなーという感じです。

フォロワー以上限定無料

若干のおまけ画像と技術的な話。

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

ブラウンチップ☆ 2019/08/21 10:20

コマンドバトル(仮)のα版0.01公開

はいどーもこんにちは、ツミオです。
本日は作成中のゲームのα0.01版を公開したいと思います。
が、まずは目次を。

  • コマンドバトル(仮)ってどんなゲーム
  • α版と正式版の違い
  • 操作方法
  • α版のダウンロード

コマンドバトル(仮)ってどんなゲーム

このゲームはバトルパートとADVパートにわかれています。
現在作業中のものは主にバトルパートなため、こちらについて今回は詳しくご紹介します。

バトルパート

1on1の対戦となります。
もしもあなたがスパロボリンクバトラーをご存知なら、それに近いと思っていただければ(笑)
共同制作者さんたちに売り込む際に作ったのは、以下のような画面です(注* 正式版はこれとは全く画面が異なる予定です)。

非常に貧素な画面ですね……。
これはあくまでも機能説明のために作成したもので、機能的に何が足りて何が足りないのかを把握するための試作品です。
とどのつまり破棄することが前提のものです。

詳しく見ていきましょう。
画面に女の子が2体表示されています。
左側がプレイヤーで、右側が敵となります。

画面下部の「スキル名ボタン」を押すと、「登録スキル名」の欄にスキルが登録されていきます。
こんな感じですね(画面はヒットアンドアウェイにカーソルを合わせたところ)。

全てのコマンドを登録し終えると、ターン開始ボタンを押すことができるようになります。
ターン開始ボタンを押したあとは自動で戦闘が開始していく……予定なのですが、α版ではプレイヤーがポチポチとマウスをクリックしないとダメです(笑)

登録したコマンドが全て終了すると(当たり前ですがエネミーも行動します)、1ターン終了というわけで、次のコマンドをまたポチポチと登録し、相手のHPを0にすれば勝利です。

以上が簡単なゲームの流れです。
なおプレイヤーとエネミーは交互にコマンドを実行しますが、いわゆる「電光石火」のような早業もあります。

成長システム

システム的にはプレイヤー側は以下の強化が可能です。

  • 新たなスキル獲得
  • 能力値の強化
  • パッシブスキル(あるいは装備)

ストーリーと絡める関係で実際にどこまでをユーザーに見せるかは不明ですが、一応こんなことができますよーということで。

ADVパート

本筋が一つあり、ミニストーリーをクリアしていくことで本筋が進むタイプの話を予定しています。
ミニストーリーをクリアするたびにプレイヤーが強化されたら面白いかなー? と思っています。
ただADVパートは現在まだ全くシステムを組んでいません(笑)
Unityをご存知の方向けの情報になりますが、Fungusを使って会話を組み込もうかなーとか、そんな感じの思案を進めている最中です。

α版と正式版の違い

今回のα版は、最初にも書いたとおり共同制作者さんたち向けに作った機能紹介用のゲームです。
したがって、深いゲーム性を期待しないでください。
あくまでも「こんなゲームを作ろうと思っているんだ!」とアピールするために作った試作品です。
画面デザインは適当ですし、操作性も難しかありません(笑)
それでもよければ……ということになります(ちゃんとした戦闘画面も完成次第挙げますので、そちらはご心配なく)。

また、今回のα版は3Dモデルを使用していますが、実際には2Dゲームの予定です。
こちらもご留意ください。

再掲ですが予定のバトル画面の画像もペタリ。

操作方法

基本はマウスクリックオンリーで大丈夫です。

  1. 全てのコマンドを埋める
  2. ターン開始を押す
  3. クリックでゲームを進める

クリックするたびにバトルログウィンドウに情報がどんどん追加されていきますので、ちょっと面倒ですがマウスホイールで追って行ってください。
内部で戦闘がどのようにおこなわれているのかわかると思います。

ゲームを終了したい場合はAlt+F4で閉じてください。
また、画面サイズは1920×1080のフルスクリーンでしか動作確認していません。

この辺りの不備もろもろ大丈夫だという方のみDLへお進みください。


この作品はユニティちゃんライセンス条項の元に提供されています

【 コマンドバトル(仮)応援プラン 】プラン以上限定 支援額:500円

このバックナンバーを購入すると、このプランの2019/08に投稿された限定特典を閲覧できます。 バックナンバーとは?

【 とにかく応援プラン 】プラン以上限定 支援額:700円

このバックナンバーを購入すると、このプランの2019/08に投稿された限定特典を閲覧できます。 バックナンバーとは?

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

« 1 2

月別アーカイブ

記事のタグから探す

記事を検索