QuestNotes開発ブログ

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

一時取得スキルの固有化

地域によっては夏休みも今日で終わりのはずですが、いかがお過ごしでしょうか!
・・・自分は夏っぽいこと全然していない気がするのですが、とりあえず今月の更新です。


スキル取得エフェクトによって習得したスキル(一時取得スキル)も固有化をできるようにしました。提案ありがとうございました!

planned
新しい提案
  • 投票数:46
  • コメント数 2

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

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

questnotes.uservoice.com

今後の固有化周りの仕様調整予定について

今回固有化まわりの仕様をいじっていて、いくつか気になっている点があったので、本日の更新には間に合わなかったのですが固有化まわりの仕様調整や作業を検討しています。(全部実施するかは未定)

  • 画像のアップロード

固有化の画像がアップロードのUI位置やタイミングがまちまちになっているのをまとめようと思っています。(一時取得のスキルは固有化するまではサーバー側にデータを持っていないので画像をアップロード先がないのが起因してたりします。。)

  • 固有化の最大数

サーバー側でデータを持つものは最大数を設定しないと諸々厳しいので、固有化も最大数を50辺りにしようと考えています。。。(あわせてパトロンチケットで最大数の増加もできるようにしようと思っています)

  • ユニーククリスタルをなくす

ユニーククリスタルを経由して所持スキルなどから選択して固有化するのは、すこし不都合があるので、詳細カードやリストを右クリックやメニューから設定できるようにしたいと考えています。

  • 攻撃など基本アクションもイラストや説明文を変更できるようにする

基本アクションも画像や説明文を変えれるようにしようかと思っています。
(名前を変えるとわかりにくさのデメリットのほうが大きくなりそうなので、基本アクションは名前はそのままにする)

  • データベース整理

(ユーザー側へは影響しないのですが、データベース内の要素を少し調整が必要そうでした。。。)

今後の予定

今回の修整は新クラスに向けてでもあったのですが、引き続き新クラスに向けてエフェクト追加もしたいと思っています。(「ラウンド開始時に~」みたいなのとか)

以上、それでは、残暑も気を付けてお過ごしください!!

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

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

関連

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