読者です 読者をやめる 読者になる 読者になる

気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【ツクールMV】自作ゲーム「Birth World」アップロード報告及びヒント(「ぼっち」からリア充になれるか?)

RPGツクールMV ツクールMV ヒント ゲーム完成報告 RPGアツマール

久々のブログ更新となります。 3日前、ツクールMV初作品となる「Birth World」を完成させ、 RPGアツマールというWebサービスにアップロードしました。

http://game.nicovideo.jp/atsumaru/games/gm957

興味がありましたら、ぜひプレイしてみてください。

感想・バグ報告等ありましたら、コメントいただけると幸いです。

※ヒントは、下の方に載せます。

ストーリー

「ぼっち」の社会人ショウゴは落ち込んでいた。 誕生日当日というのに、誰からもお祝いの言葉をもらえない。 ましてや、SNSミニブログで誕生日設定をしているのに、全く「お祝いメッセージ」がもらえなかった。

突き付けられた現実に絶望していたそんなとき、 (自称)神様から、不思議な世界へと導かれてしまう。 「望むならば、その状況を変えることができる」らしい。

その世界では、みんなが自分のことを祝福してくれるというのだ。 様々な人・魔物から祝福の言葉をもらいながら、 自分の欲しいモノを作るという「試練」を受ければ良いということだが・・・。

特徴

基本的に、世界中の人々が主人公をお祝いしてくれる

f:id:rinne_grid2_1:20161225000708p:plain

「痩せたんじゃない?」とか言ってくる。

お祝いしてもらうと、変なアイテム(祝福)をくれる

f:id:rinne_grid2_1:20161225000830p:plain

変なアイテム(もうれつな祝福)

f:id:rinne_grid2_1:20161225000959p:plain

ほとんどの人々に、HPゲージがある(緑枠のオレンジ色のゲージ)

f:id:rinne_grid2_1:20161225002853p:plain

話しかけすぎると、命が尽きてしまう

f:id:rinne_grid2_1:20161225003153p:plain

最初に自分が欲しいものを「4つ」手入力して、アイテムを合成する

f:id:rinne_grid2_1:20161225001325p:plain

この時のテストプレイでは以下のように入力した様子

1番目に欲しいもの:年金
2番目に欲しいもの:日常生活
3番目に欲しいもの:オライリー本
4番目に欲しいもの:そこそこほしいモノ

_人人人人_  
> 年金 <
 ̄Y^Y^Y ̄  

もちろん魔物もお祝いしてくれる

f:id:rinne_grid2_1:20161225002031p:plain

f:id:rinne_grid2_1:20161225003830p:plain

女性しか入れない町に入るため、変な薬で異性に変身

f:id:rinne_grid2_1:20161225002238p:plain

いわゆるTSF要素?誰かが得する?

男バージョンEND、女バージョンENDがあったりする。

イケメンしか入れない町に入るため、変な薬でイケメンにも?

f:id:rinne_grid2_1:20161225002558p:plain

イケメンの基準がいまいちわからない

ヒント

(もしヒントをみたくない場合は、このページを閉じることをお勧めいたします。)

本ゲームのエンディングは、合計10コあります。

エンディング1:

ある一定数、人を倒す

エンディング2

「誰かを倒す」もしくは、「どこかに捕まっている人々を解放する」依頼を受けた時に、依頼主を倒す

エンディング3

「誰かを倒す」イベントを「男」状態で終える

エンディング4

「誰かを倒す」イベントを「女」状態で終える

エンディング5

「どこかに捕まっている人々を解放する」イベントを「男」状態で終える

エンディング6

「どこかに捕まっている人々を解放する」イベントを「女」状態で終える

エンディング7

「女性しか入れない村」のイベントを終える

エンディング8

自分が欲しいものを2種類作った状態で、試練を終了する

エンディング9

自分が欲しいものを3種類作った状態で、試練を終える

エンディング10

自分が欲しいもの4種類と、「怪しい薬」を作った状態で、試練を終える

「試練を終える」で閲覧できるエンディングについて

エンディング8 → エンディング9 → エンディング10の順番に見ると 流れがわかりやすいかと思います。

落ち着くまでブログの更新をやめる

最近、朝の時間が忙しく、ブログを書いている暇がない。

また、毎日の更新となると、内容が一定化し、書く内容も薄くなってしまっている。

ひとまず落ち着くまでの間は、ブログの更新を停止することを決めた。

ただ、読書メモや技術系記事のメモは、アウトプットとして記載する可能性はある。

【雑記】朝起きれない?

雑記

睡眠不足なのかよくわからないが、体がだるく、朝起きれない。

どのようにして改善していくべきだろうか。

ひとまず今晩は早めに寝てみることにする。

【雑記】読書に関する回答に救われた気がする

雑記

読書内容を覚えておくことができず、「自分はなんてダメなんだ」と考えることがよくある。

読書から何を得るべきなのかがわからなくなっていた。

そんなとき、以下のページを見つけた。

oshiete.goo.ne.jp

質問内容としては、

「読書をしてもすぐに忘れてしまう、みんなはどうか?」というもの。

ベストアンサーにすごく励まされた。

引用(Y-N-Sさん)

特に読んだ本の内容は憶えようと意識はしていません。
それに本に書いてあることすべてが重要なことじゃありませんし。
自分がいいと思ったフレーズや文章をたまにメモったりする程度です。
読書はなにかを得るためのものじゃなくて娯楽や生活の一部ですから
無駄という感覚があまりありません。
無駄になったら無駄でいいし、もう一回よむ楽しみができます。
それに完璧に無駄にはならないと思います。
思い出せなくても無意識下で脳に残って力になるかもしれません。

  • 記述内容がすべて重要なわけではない
  • 読書は「娯楽や生活の一部」
    • なので、無駄という感覚はない
  • 良いと思った文章や気になるフレーズはメモをとる。

教科書的なものを読む場合は、内容を理解しながら読み進めていく必要があるが、 それ以外(小説や新書等)は自分を基準にして、良いと思った部分をメモに残す。

これだけでいい。

今までの読書で、確かに気になる部分をメモしてはいたが、 それは「ブログに書くため」であり、あれもこれもと欲張り、情報過多になりがちであった。 (本の内容を理解するという目的を実は持てていなかった?)

本当に心に残った・・・というか、気になるものを抽出する。

この作業について、なんとなく、PC等を使わず、 手帳やノートに手書きでメモに残すという作業を行ってみようと考えている。

【雑記】体調不良

雑記
頭が痛い。
体調を崩してしまったらしい。

気温の変化が激しかったせいかもしれない。


【ツクールMV】マップ上に表示するウィンドウに関するコードリードメモ

ツクールMV

マップ表示名を表示するウィンドウのように、 マップ移動ごとに、フェードイン・フェードアウトしながら表示・削除されるウィンドウを作成する際に どのようにすれば良いか学んだのでメモ。

参考とする関数オブジェクト

ざっくりとした流れ

  • マップオブジェクトの作成
  • マップ準備完了
  • マップロードイベント発火
    • これらは近いうちに詳細を確認する

マップに必要なウィンドウの準備(Scene_Map.prototype.createDisplayObjects)

Scene_Map.prototype.createDisplayObjects = function() {
    this.createSpriteset();
    this.createMapNameWindow();
    this.createWindowLayer();
    this.createAllWindows();
};

マップ表示名のウィンドウ作成(Scene_Map.prototype.createMapNameWindow)

  • this._mapNameWindowで参照できるようになる
Scene_Map.prototype.createMapNameWindow = function() {
    this._mapNameWindow = new Window_MapName();
    this.addChild(this._mapNameWindow);
};

マップ名を表示するウィンドウの初期化(Window_MapName.prototype.initialize)

Window_MapName.prototype.initialize = function() {
    var width = this.windowWidth();
    var height = this.windowHeight();
    Window_Base.prototype.initialize.call(this, 0, 0, width, height);
    this.opacity = 0;
    this.contentsOpacity = 0;
    this._showCount = 0;
    this.refresh();
};
  • width, heightの設定
  • ウィンドウ自体の透明度の設定
  • コンテンツの透明度の設定
  • フェードインにかける時間の指定
  • ウィンドウ内容のリフレッシュ

マップ名を表示するウィンドウ内容の表示(Window_MapName.prototype.refresh)

Window_MapName.prototype.refresh = function() {
    this.contents.clear();
    if ($gameMap.displayName()) {
        var width = this.contentsWidth();
        this.drawBackground(0, 0, width, this.lineHeight());
        this.drawText($gameMap.displayName(), 0, 0, width, 'center');
    }
};

ウィンドウの背景を設定(Window_MapName.prototype.drawBackground)

Window_MapName.prototype.drawBackground = function(x, y, width, height) {
    var color1 = this.dimColor1();
    var color2 = this.dimColor2();
    this.contents.gradientFillRect(x, y, width / 2, height, color2, color1);
    this.contents.gradientFillRect(x + width / 2, y, width / 2, height, color1, color2);
};

マップ名表示ウィンドウをオープン(Scene_Map.prototype.start)

Scene_Map.prototype.start = function() {
    Scene_Base.prototype.start.call(this);
    SceneManager.clearStack();
    if (this._transfer) {
        this.fadeInForTransfer();
        this._mapNameWindow.open();
        $gameMap.autoplay();
    } else if (this.needsFadeIn()) {
        this.startFadeIn(this.fadeSpeed(), false);
    }
    this.menuCalling = false;
};

ウィンドウオープンをフェードインで表現するための準備(Window_MapName.prototype.open)

Window_MapName.prototype.open = function() {
    this.refresh();
    this._showCount = 150;
};

共通のupdateイベントによる、Windowのアップデート

* 1ミリ秒で、不透明度16プラス?

Window_MapName.prototype.update = function() {
    Window_Base.prototype.update.call(this);
    if (this._showCount > 0 && $gameMap.isNameDisplayEnabled()) {
        this.updateFadeIn();
        this._showCount--;
    } else {
        this.updateFadeOut();
    }
};

【雑記】今日の予定

雑記

もう色々と疲れたので何もしたくない

というのは半分冗談で、スポーツジムに行く。

あと、ツクールMVゲームの方針が決まりつつあるので、実装を進めるつもり。 また、何かめぼしいゲームがあれば、そちらもプレイする。