QuestNotes開発日記

MMOTRPG「QuestNotes(クエストノーツ)」を開発しています。不具合や要望があればぜひご一報ください。 

クエストログのファイル分割の対応

8月も始まろうとしており、うだるような暑さですがいかがお過ごしでしょうか?
冷房のある空間から出たくないです。
といわけで今月の更新です。

クエストログのファイル分割の対応

まず、今までログの保存の不具合がありました。
forum.questnotes.net

この原因の背景に、「ひとつのファイルにログを書き込んでいくと長時間クエストに滞在していた時などに大きなログファイルになってしまう」というのが原因な気がするので、ある程度のサイズで分割するようにしました。(1つの大きなファイルでやりとりするのは、読み書き双方の負担が大きくなるのであんまり良いことがない)

また、ページの区切りを1ファイルごととし個別に保存・読み込むようにしました。

ただ、これによってログサイズの総量が変わるわけではないので、すごい数のページを保存されてもサーバー側が困るは困るので、今回の変更にあわせてユーザーごとのクエストログの保存容量はクエストログ数ではなくページ数にしました。
不都合がありそうな場合は改めてご一報ください!

アクティブシーンのパーティーでのリトライ対応

先月に引き続きリトライ周りをいじっており、パーティーで遊んでいるときのリトライにも対応しました。
(パブリックもリトライできればと思ったのですが、ボードの出入りがあったりした場合の考慮ができなく、仕組み的に難しいのでいったんここまでとします。。)

今後の予定

新クラス追加をそろそろ着手し始めないと年内間に合わないきもしてきたのですが、、、今回クラススキルの中で一時スキル取得があるものを用意したいので、まず先に以下を対応したいと思っています!

新しい提案
  • 投票数:35
  • コメント数 0

特殊スキルもユニーク化できるようにしてほしい

キャラクターの設定に合うように設定したい為、ユニーク化したいです。

questnotes.uservoice.com
(どう実現するかは、これから考えます!・・・)

以上、暑さにお気をつけて皆様もお過ごしください!

ゼルダTotKからの学び

2023年も早くも半分が終わりました。。。
6月は無事ハイラルを救ってきて、ゼルダ新作からたくさんの大切なことを教えてもらいました。
失敗を恐れず一歩踏み出す勇気、発想の転換と柔軟な思考の大切さ、そして、時にはごり押しが問題を解決すること。

アクティブシーンのリトライ

ともあれ、一歩踏み出して挑戦するためには「失敗してもやり直せる」という後ろ盾があってこそだとも思うので、QuestNotesにも「リトライ」がやはりほしいなーと思いました。
というわけで、今回は「アクティブシーンのリトライ」の実装の再挑戦をしてみました。

以前も一度挑戦して挫折したのですが、方針を少し変えて改めて取り組んでみました。
(クエストキャンセルのデータリセットもサーバー側で処理していたので、それの延長で実装しようとしてたのですが、前回それは実装コストもサーバーの負担も大きすぎるのであきらめてました。。。)
今回はクライアント側とサーバー側で半々で処理をする形ならばいくつかの懸念点が緩和するので、後はごり押しで実現できればと思いました。

とりあえず試しにシングルプレイだけで実装になります。
(依然サーバー負担はあるので一旦様子見を兼ねて回数制限はつけました。。。)
あと、パブリックは構造上難しいのですが、パーティー組んで普通のクエスト遊ぶときにはできるようにできればと思ってます。

その他、以下の制限があります。
・グローバル変数は巻き戻りません。
・コントロールは消えます(ボード再参加と同じ)

この辺の兼ね合いだったりでリトライしてほしくない場合や自前の救済の仕組みだけを使ってほしい場合は、シナリオ設定でリトライ禁止に設定してもらえればと思います。

以上!
失敗しても前に進んでいければと思っています!
色々踏み出していければと思うので、引き続きよろしくお願いします。
そういえば、最近Diablo4のハードコア(死んだらコンティニューなしのキャラロスト)を見てて、あれはあれで緊張感あってよいなーとも思いました。

ウェブサイトでログインとクエストログ

ゼルダ遊んでたら5月終わってしまいました!・・・
???「開発したいけど もう疲れちゃって 全然動けなくてェ…」

今月はウェブサイトまわりをちらほらといじっています。

新しくログインができるようになりました!
(ウェブサイトの左下にログイン表示がされるようになっています)

これに合わせて、認証が必要な処理をウェブ側にも持たせられるので色々と実現できる機能が増えそうです。
とりいそぎクエストログの認証と公開範囲の設定をできるようにしました。


クエストログはQuestNotesにおいて大切な役割を持っていると思っているので、もう少し手厚くしていければと思っています!

遊んだ本人の思い出になるのはもちろんのこと、マスター側にとっても、(楽しんでもらっているのを見ることは創作のモチベーションになると思うので)自分の作品を遊んでもらった軌跡を見れるのは良い創作のサイクルにつながるかもと思っています。

ただ、ログをいきなり誰でも見れる状態に公開するようにするのは少し抵抗がある人も多いと思うので、公開範囲にて「マスターには可」をできる設定を用意したので、ぜひ遊んだログをマスターへ公開してもらえればと思っています!
(ついでに、一緒に遊んだ友人との思い出にもなればと思っているので、相互フォローの身内公開もできるようにしました)

また、クエストログはゲームを遊んでない人にも楽しんでもらえる思っており、(QuestNotesは戦闘が少し複雑だったりで)自分で遊ぶのは抵抗がある、、、という人や、そもそもまだQuestNotes知らない人がQuestNotesを知ってもらう機会にもなればと思っています。

今後ログ周りでやりたいこと

スクリーンショット・挿絵(イラスト)の添付

文字だけだと伝わらない情報もあると思っているので、画像を貼り付けできるようにしたい

編集や加工

強調表示したい場所や、冗長になって省きたい部分、誤字脱字など見栄えを良くできるようにしたい

コメントやいいね

「ログを創る」ということも一つの創作だと思うので、それに対してのリアクションがもらえるようにしたい

露出場所を増やす

おもしろいログを見つけやすくなるような仕組みを用意したい

サーバー側事情の課題解決

ログを1ファイルで読み書きしている仕組みは、サーバー費用的にも(ユーザー体験的にも)よくないので分割できるようにしたい。あと、コスト緩和のため広告掲載とか試してみたい。

以上、予定は未定ですが引き続きよろしくお願いします!
あと現在進行形でAndroid版がうまくビルドできなくて困っているのでタッチ版はお待ちください。。。何もしてないのに壊れた。。。

続・ウェブサイトの移行

はい、4月も終わりということで。。。
とりあえずいろいろな災厄を引きを起こしつつもひとまずウェブサイトの移行が概ね完了しました!ご協力ありがとうございました!
(微妙に作業は残っているのですが、それはまたメンテナンス時に少しずつ後始末を進めていければと思っています。。。)

タッチ版

ついでに勢いにのってタッチ版の.NET6+MAUI対応を進めていました。
(現状のタッチ版のフレームワークは2024年5月にサポート終了。。)
dotnet.microsoft.com

が、何やら動かない。。
で調べたところ、一部まだ互換性が不十分なところがあるようなので一旦断念しました。。。
github.com

(修正予定が「Future(未来)」になっていて2023年中の.NET8には含まれてなさそうなので、少し心配しています。。。)

直近の予定

直近、メールまわりを少しいじろうと思っています!
運営からの連絡用途でもう少し使いやすくできればと思っています。
(サポート作業などで運営から連絡・問い合わせる用途が時々必要になるので。。。)

まずはプレイヤー間のコミュニケーションのための改善というよりは、運営からの連絡用途の改善を目的としています!
(プレイヤー間では、メールよりトークの改善をして、トークでアイテムを渡せたりなどしたほうがよいのではという心持ちもあってあんまり触れていませんでしたが、ついでに改善できそうな部分があれば着手できればと思っています!・・・)

(あと、古い仕様(キャラクター名が重複不可だった時の仕様)の整理もしたい)

Twitter

そういえばTwitterさんの仕様変更でTwitterへの公開通知などがうまくうごかなくなっているかもしれません。。。
問い合わせ中なのでしばしお待ちください。


以上、引き続きよろしくお願い致します!

ウェブサイトの移行(失敗)

ウェブサイトの移行で問題があって巻き戻したんですが、一応今月書こうとしてたブログです!!
(エイプリルフールではありません!!!)(不具合修正は適用しています)



ウェブサイトを.NET6にアップデートしました!
(フォーラムやUserVoiceは独立しているので更新なしです)

(参考ページ)
これから少しずつウェブサイトの役割も広げていければと思っていたのですが、それをするにあたって10年前の技術スタックの上に積み上げていくのは負債の側面が強くなってしまうので、それを避けたいと思いました。
(それから、いつかちゃんとエンジニアさんとチームを組めればと思っているのですが、その時に「QuestNotesは10年前の技術を使っているので、ここで経験した技術は他の開発現場ではあまり役に立ちません。。」とならないように少しでもしておきたいと思っています。)

これまでクライアントやゲームサーバーもフレームワーク移行してきましたが、また違った大変さがありました。。。
まずは、あまり動作やデザインはかわらないように努めましたが、一部デザインが変わったり、挙動が変わったりもありますが、あんまり影響はないと信じてます。
(どこか壊れてたらご一報ください!ウェブサイトはゲームアプリ側動作にも一部影響します!)

廃止されるWebFormsからどのフレームワークに移行しようかという点で迷ったのですが、ASP.NET Core RazorPagesにしました。
(ReactあるいはBlazorなども考えたのですが、作業量やアプリ側の事情を鑑みて判断しました)

今回に限りませんが、今見えてる範囲で何かを選択することが「10年後にそれが正しい選択」になっているかを見極めて物事を選ぶのは常々難しいですが、、、意思を持って選択することが大切だと信じて割り切っています(たとえ良くない面が表れても、責任や結果を人に押し付けず、次の機会の学びになったと努めます!。。)

今から10年後にどうなっているかは想像できないのですが、置いていかれない様に(かつ、互換にも目を向けつつ)変わっていければと思うので、引き続きよろしくお願いします!

一時取得やリトライについて

2月は短い!・・・
というわけで今月の更新です。

リトライは一旦延期

アクティブシーンのリトライ機能を作ろうと思っていたのですが、実装の大変さもそうなのですがサーバー側負担が思ったよりも悩ましかったので一旦諦めました。

一時的に保存しておきリセットするのはクエスト中の一時取得とかと似たようなものなのでさくっとできないかなーと思っていたのですが、一時取得よりもややこしい(キャラクター、スキル、アイテム、変数、ボードの状況と巻き戻すものの種類が多かった)。。

クエスト中の一時取得

さて、(少し関連して?)クエスト中の一時取得について仕様がややこしい&少し修正したので共有させてください!

現在、クエスト中に取得したりするアイテム、スキルは一時取得と呼んでおり、最大個数が50に設定されています。

(若干少なめに設定していますが、制限は後から緩くするのは簡単だけども厳しくするのは難しい場合があるのでまずは控えめな値を設定するのを心がけています)
(あ、そもそもなんで物事に最大数が設定されているかは保存や通信にはコストがかかってしまうからです。。サーバー費を眺めては辛い気持ちになりがち。。

また、少しややこしいのですが、スキルは所持数(取得後に削除した場合は個数を数えない)、アイテムは累計所持数(取得後に削除した場合も個数を数える)になっています。(この仕様の違いはスキルとアイテムのデータ構造の違いが起因しています。。)

最大個数を超えると取得できない&エラー通知などがないので、「よくわからないけど取得できない」というやさしくない挙動になってしまっていたので、なんとかできないかと思っていましたので、少し作業をしていました。

今回、その現状が少し起こりにくくするために、消耗品アイテムを使用したアイテムはデータベース上からも削除して、所持数判定に数えないようにしました。

ただ、コマンドで失わせたりやショップで売却した場合は、その後に改めてIDを使った操作をする場合があるので、データベース上から削除はされていません。。
このあたり、データとして残す必要がない場合が大半なはずなので、コマンドや売却でデータベース自体から消せるようなオプションをつけたり、あとは最大個数を超えていた時はアラートを表示するようにしたり、もう少しわかりやすくできればと思っています。。

関連

以上、少し作業を進めていた部分についての共有でした!
また来月!・・・

2023年の予定(仮)

2023年もさっそく1か月が終わりとなりました!

いくつか不具合と要望の対応をしました。
更新内容については以下を参照してください。

Version 0.14.0.0

www.questnotes.net

今年の願望

一応2023年の初めのブログということで、今年やりたい願望を記載しておきます!(確定はしていません)

ゲーム内

クラス

クラス追加は一年に一つぐらいはやりたいと思ってます。
今少し考えているので「アストロロジャー(占星術師)」というのがあるんですが予定は未定です。

スキル例 
未来予知スキル「オラクル」 全ての敵は先に行動を宣言し公開する。1クエスト1回


クラス全般の仕組みとして、各スキルに戦闘用でないスキルをいくつか用意して、判定など探索中でもクラスの個性がでるようにしたい。(あわせてトラップマスタリーは非戦闘用スキル枠に移動する)

応援点

応援まわりはもうちょっと手を入れたいと思ってます。
元々の施策の想定としては「オリジナルアイテム報酬で、次のクエストをつくる・参加するモチベーションになれば」と思っていたのですが、応援されたクエストを掘り下げていく形と相性が悪いので、応援点の扱いなどを再検討中です。
(応援点で使おうと思ってたオリジナルスタンプ報酬を凍結してしまっているので再開したい。)

装備

武器(または武器種)ごとのウェポンスキル(戦技)を検討しています。
(例えば、課題になっていた、現状の両手武器の一律ボーナスはなくして一部の両手武器が「ツーハンデッド」という同等ボーナスのパッシヴスキルを持つように変える、杖や本にはMatk依存のウェポンスキルを付ける、などで調整しつつより戦闘が楽しくできないかなと思ってます)
ついでに、装備スキルも固有化できるようにしたいと思ってます。

アクティブシーンのリトライ機能

最近ファイアーエムブレムエンゲージを遊んでるんですが、ターン戻しや戦闘リトライにはお世話になっているので、せめてQuestNotesにも戦闘リトライを用意したい。。(プライベートボードのみや、グローバル変数は巻き戻せない、みたいな制限は必要になりそうですが。。)

ゲーム外

ウェブサイトの改修

ウェブサイトのフレームワークが結構老朽化しているので、新しくしないとなーと思っています。作り直しになるので、例えば以下の機能とかも見直しできればと思っています。

「フォーラム」
不具合報告などは、解決済み、再現不可(追加の情報がほしい)、みたいな情報が外からわかるようにしたい。
独立して管理しているんですが、適当なSaaSに乗り換えたい。。

「 フォロータイムライン」
気になるキャラクターを見つけたけども、ゲーム内で直接交流するっていうのは結構ハードルが高いと思っているので、推しキャラクターの活動を眺めてるだけでも楽しいと思うので、
タイムラインみたいなのでフォローしている人たちの公開ログとか参加情報とかが追えるようになったらいいなと思ってます。

他環境

タッチ版通常版と完全同等とはいかなくとも、作戦ぐらいは設定できるようにしたいと思ってます。
「Windows持ってません」という方も結構見かけるのでmacOS対応も通常版ベースかタッチ版ベースかはわからないですが、対応したいです。


以上、今年の願望でした。
遅くなりましたが今年も一年よろしくお願いします。
ここに書いていないことや不具合・要望対応も随時行っていきますので、ぜひ気になっている点はご一報ください。
今だ至らない点も多いかと思いますが、引き続きよろしくお願いいたします。


そういえば余談なのですが、やっと「すずめの戸締り」見てきました!
本編も見ていて辛くなるほどとても良かったのですが、未使用曲に「Tamaki」というのがあるので本編視聴済みの方はぜひ聞いてみてください。
youtu.be

劇中とは少しずれると思うのですが、自分の場合は創ることに人生の少なくない時間を割いてきたので、そこに時間を使っていなかったらどんな人生だったかをこの曲を聴いて思いを馳せました。

別に後悔とかはないんですが、他の生き方を羨ましく思うこともあります。
それでも、何かを創って公開することは、つらいことも楽しいこともあって、一言では言い表せない、もはや自分の一部になっています。
制作していられるというのは幸せなことだし、これからも続けていけたらいいなと思っています。

何かの縁があってこの文を読んでる皆様も、いつか振り返った時にも良い時間と思える日々を過ごされるのを願っています。
(その良い時間のひとつにQuestNotesがなっていれば幸いです)