2020年12月2日水曜日

ver 0.3 進捗

それなりに完成してきたので進捗報告します。


完了したもの

  • マップ作成
  • 装備品作成
  • 技作成
  • 敵と敵パーティの作成、およびエンカウントシンボルの配置
  • シンボル敵の再配置スクリプト実装、およびアイテム採取の再配置との統合


途中のもの

  • オープニングイベント作成
  • チュートリアルイベント作成
  • その他細かいイベント作成


未着手のもの

  • ラスボスおよびエンディングまわりのイベント作成
  • バトル後に尿意が増加する処理
  • テストプレイと最終バランス調整
  • 新規イラスト描き下ろし


公開予定は12月中旬です。

なお、ゲームの内容ですが、前回よりもピーキーなバランスになりそうです。
具体的には敵味方共にバッステを入れ合うゲームで、普通にやりあうとシビアだけれども刺さる戦法が複数あるという風になりそうです。
戦闘は少なめで、その分一回ごと難易度と経験値を大きくしてあります。
良くも悪くも前回のように退屈にはならないと思います。

基本的に今回のバージョンはゲームとしてイマイチだった部分の改善ですが。
それだけではおしっこ我慢ゲーとして需要が無さ過ぎるので、先述の通りイラストも新規で描いたものに差し替えます。
当時よりは多少は絵が上手くなっているはずです。

では、もう少々お待ちください。

2020年11月5日木曜日

Ver 0.3公開に向けて

Ver 0.3の公開に向けて開発を開始しました。

Ver 0.3は、Ver 0.2から主にレベルデザインを一新し、ゲームプレイの冗長で退屈だった部分を改善する予定です。

マップ、アイテム、イベントなども殆ど新規で作り直すので、Ver 0.2を遊んで頂いた方にも楽しんで頂ける内容になります。

システムまわりの変更は、ランダムエンカウントを廃止し、シンボルエンカウントを導入する変更だけになります。


それでは、もう少しかかると思いますがよろしくお願いします。

2020年3月30日月曜日

ver0.2体験版完成

長らくお待たせしてしまいました。
Ver 0.2の体験版が完成しましたので、公開します。

制作のモチベが上がらずに3年近くご無沙汰してしまいましたが、ここ半年ほどポチポチ作っていました。

久しぶりになってしまったこともあるので、改めてキャラと操作方法を説明します。


ぬいちゃん
このゲームの操作キャラ。しっこたれ。
冒険者ライクなサムシングの初心者。
依頼を受けてモンスター退治とかをする人。



教授
ぬいの保護者兼上司。
上級のプリースト。昔はそれなりの地位にいたらしい。


操作方法
Z : 決定
X : キャンセル メニューを開く
A : 前押さえ
S : HP回復ポーション
D : SP回復ポーション
Shift : ダッシュ(前押さえ中は不可)

ポーションには利尿作用があり、この効果はHP回復ポーションのほうがより高い。

経験値は戦闘終了時に入らず、拠点のベッドで寝た際に一括で入るが、おもらしをしていた場合マイナス補正がかかる。


ダウンロードは以下リンクから
https://drive.google.com/open?id=1f7DHLVr61FaxvI4kMkSO6xMHx1IEHJ0u

なお、ツクールの機能で圧縮したところ、自己解凍形式EXE形式のファイルになったのですが、EXE形式で上げるのも嫌だったので、zipで固めています。
なので、お手数ですが2回展開して下さい。

また、プレイするにはツクールの実行環境が必要ですので、お持ちでない方はこちらから「RPGツクールVX Ace RTP」をダウンロードして下さい。
https://tkool.jp/products/rtp.html

【2020/04/01 追記】
リンクが誤ってVer 0.1のものになっていたので、修正しました。

2017年5月28日日曜日

ver0.2体験版公開に向けて

次の体験版を早いところ公開したいです。
実のところ、既にゲームとして一通り遊べるくらいにはなっていると思います。
思い付く機能をどんどん実装していってもキリが無いので、どこまでやるか決めて残タスクをまとめます。


グラフィック関連

  • ぬい立ち絵(おしっこ我慢)
  • ぬい立ち絵(おもらし)
  • ぬい顔グラ絵
  • 教授顔グラ絵


スクリプト関連

  • おもらし時の絵の表示制御
  • 戦闘中のポーション使用回数制限


イベント関連

  • 台詞回しの再考
  • チュートリアルの改善


テストプレイ関連

  • バグフィックス(何かあれば)
  • バランス調整


ポーション使用回数制限は、現状では一回の戦闘に勝つことだけを目指すのであればデメリットを無視して何回も強力な回復アイテムが使えてしまうので、必要だと判断しました。
台詞回しは、現状では仮置きのデフォルトイラストにキャライメージが引っ張られていると感じるので、後でまとめて再考しようと思っています。
チュートリアルは、現状スタート地点の貼り紙に全部突っ込んでしまっているため、これを改善し、プレイヤーが一つずつ機能を使って自然に遊び方を覚えられるようにする予定です。
こんなもんですかね。コミケ原稿が忙しくなる前に公開したいな。

2017年5月27日土曜日

開発再開とバグフィックス

しばらく開発がストップしていましたね。
RPGによくある、ラスボス直前でやる気無くなるアレと大体同じ現象です。
ちょっとしたきっかけで、いいかげん完成させたくなったので、久しぶりにコードを描きました。

本当は久しぶりに弄ってみるくらいのつもりだったのですが、バグを発見してしまったので勢いで直しました。


バグの詳細は以下の通り。

  • セーブしようとすると、「ブブー」と言われてセーブできない。



過去記事に書いたことがあったか覚えていませんが、このゲームでは、独自実装している機能に関連するプロパティを保存するため、セーブデータ作成およびデータロード処理の一部を上書きして処理を追加しています。以下がその部分をまとめた処理です。なお、以前は各機能にばらけていましたが、今回の修正を受けてコードの見通しと保守性に問題があると考え、まとめました。

以下のような処理をしているだけの簡単な処理です。

  • セーブ時、"contents"というハッシュに、保存対象のオブジェクトを詰める
  • ロード時、同じく"contents"というハッシュから、復元されたオブジェクトを取り出す


この部分をコメントアウトすると正常にセーブできるようになったので、やはりセーブデータ作成処理を拡張した部分に問題があるようです。
調査のため、まず最初に、そもそものセーブ・ロード時の処理を追いかけてみようと思います。

上記スクショの処理は、オーバーライド対象のツクールの既存モジュール、DataManagerのmake_save_contentsとextract_save_contentsの処理に倣っています。
元の処理は以下の通り。

さらにコードを溯ると、ハッシュはMarshal.dumpされ、例外は呼び出し元でまとめてrescueされていることが分かります。

確認したところ、やはり「ブブー」と鳴るエラーが発生した場合は、このrescue内の処理に入っていることが分かりました。発生していた例外はTypeErrorでした。

Marshal.dumpの公式ドキュメントを当たってみましょう。
https://docs.ruby-lang.org/ja/latest/method/Marshal/m/dump.html

>再帰的に出力します。
>ファイルに書き出せないオブジェクトをファイルに書き出そうとすると 例外 TypeError が発生します。

…とあるので、ハッシュに突っ込んだオブジェクトのフィールドを辿った先のどこかに書き出せないものがあったのでしょう。

怪しい箇所をコメントアウトしながら二分探索したところ、$todays_resultが持っているSpriteのオブジェクトが原因であることが分かりました。
$todays_resultは、直前の記事で実装していた宿屋成長システムのクラスで、スプライトは宿泊時に敵キャラのグラフィックおよび撃破数・経験値の文字を表示するためのものです。
表示位置が固定なので、空のスプライトをあらかじめ作成した上で、表示時のみ中のビットマップを設定する方式にしています。

Spriteクラスの実装のどの部分が原因でエラーになったかは、予想はつきますが必要無いので調べていません。スプライトのオブジェクトはグラフィック表示時以外は不変であり、そもそもセーブする必要が無いからです。
そういうわけで、セーブ時にオブジェクトを破棄し、ロード時に再作成するように処理を修正しました。

これで直ったはずです、動かしてみましょう。

戦闘して

セーブして

ロードして

寝るとちゃんと本日の首級が表示されます。


以上、久しぶりのコード修正作業でした。

2016年10月15日土曜日

宿泊コモンイベント

前の記事で宿屋成長システムが完成しましたし、今度は宿泊のコモンイベント側を実装しました。
宿泊は、採取場のリセットなど、他の機能とも絡んでくるので、かなり処理量が多くなます。


結局こんな感じになりました。

キルスコアや経験値の表示は、かなり飛び道具として直書きスクリプトを使っています。


さて、完成形の宿泊イベント画面を紹介します。
前提として宿泊前に敵を倒していて、なおかつおもらししています。
おもらしぱんつを穿いたまま寝ることも現状可能なのですが、可哀想なので脱がしてあります。ノーパンです。おしっこでじんわり湿った下半身を露わにしたままベッドに入ります。

敵を倒している場合、暗転後にキルスコア表示イベントが始まります。

倒した敵の一覧が出ます。

合計経験値が表示されますが

おもらしをしている場合、おもらしによるマイナス補正値が表示され

得られる経験値は少なくなります。


以上です。
さあ、あとはイラストを描いて、イラスト表示を制御するスクリプトとイベントを作ったら、遂に次バージョンが公開できます。



あ、さっきのおもらししたまま布団に入れるの、積み残しだな…

グラフィックサイズの調整

前回記事の最後で、キルスコア表示画面で敵グラフィックを表示する際、大きいグラフィックの敵がいるとはみ出してしまうという積み残し問題を紹介しました。
今回は、それを解決します。

ビットマップの縮小自体はこの機能だけで必要になるとも限らない汎用的な用件なので、Utilsを作り、そこにメソッドを定義しました。
特に拡縮用のメソッドなどは見当たらなかったのですが、ピクセルに色を直接セットできるので、手書きすることにしました。
以下のような仕様にしました。

  • 引数はビットマップオブジェクトと幅・高さの整数値
  • 1/nに縮小した時に、幅・高さともに引数値以下に収まる最小のnを求め、縮小率とする
  • 縮小後の新しいビットマップオブジェクトを返却する

ソースはこんな感じになりました。

縮小率が整数限定だったり、色々雑な処理ですが、プレイヤーが見て最低限「ああ、あいつな」って分かればいいんです。0.5刻みにするとか、0.25刻みにするとか、ましてやアンチエイリアスだのフーリエ変換だの、やるつもりは毛頭ありません。


さて、テストです。
テスト用の見掛け倒し雑魚軍団を編成しました。

こいつらが、こんな感じの表示になります。 
はい、完璧ですね。
縦幅の狭い表示領域にしているので、縦に長い敵グラがすごく小さくなってしましますが、その辺は可能な範囲で調整すれば良いでしょう。


さて、宿屋成長システムのコア部分はこんなもんでしょう。
おもらし回数の表示とかも必要ですが、それはまあ出来たらまた記事書きます。