QuestNotes開発ブログQuestNotes開発ブログMMOTRPG「QuestNotes(クエストノーツ)」を開発しています。不具合や要望があればぜひご一報ください。地域によっては夏休みも今日で終わりのはずですが、いかがお過ごしでしょうか!・・・自分は夏っぽいこと全然していない気がするのですが、とりあえず今月の更新です。スキル取得エフェクトによって習得したスキル(一時取得スキル)も固有化をできるようにしました。2特殊スキルもユニーク化できるようにしてほしいキャラクターの設定に合うように設定したい為、ユニーク化したいです。questnotes.uservoice.com今後の固有化周りの仕様調整予定について今回固有化まわりの仕様をいじっていて、いくつか気になっている点があったので、本日の更新には間に合わなかったのですが固有化まわりの仕様調整や作業を検討しています。(全部実施するかは未定)画像のアップロード固有化の画像がアップロードのUI位置やタイミングがまちまちになっているのをまとめようと思っています。(一時取得のスキルは固有化するまではサーバー側にデータを持っていないので画像をアップロード先がないのが起因してたりします。)固有化の最大数サーバー側でデータを持つものは最大数を設定しないと諸々厳しいので、固有化も最大数を50辺りにしようと考えています。(あわせてパトロンチケットで最大数の増加もできるようにしようと思っています)ユニーククリスタルをなくすユニーククリスタルを経由して所持スキルなどから選択して固有化するのは、すこし不都合があるので、詳細カードやリストを右クリックやメニューから設定できるようにしたいと考えています。攻撃など基本アクションもイラストや説明文を変更できるようにする基本アクションも画像や説明文を変えれるようにしようかと思っています。(名前を変えるとわかりにくさのデメリットのほうが大きくなりそうなので、基本アクションは名前はそのままにする)データベース整理(ユーザー側へは影響しないのですが、データベース内の要素を少し調整が必要そうでした。今回の修整は新クラスに向けてでもあったのですが、引き続き新クラスに向けてエフェクト追加もしたいと思っています。23:26もっと読むコメントを書く2023-07-31クエストログのファイル分割の対応8月も始まろうとしており、うだるような暑さですがいかがお過ごしでしょうか?冷房のある空間から出たくないです。といわけで今月の更新です。クエストログのファイル分割の対応まず、今までログの保存の不具合がありました。forum.questnotes.netこの原因の背景に、「ひとつのファイルにログを書き込んでいくと長時間クエストに滞在していた時などに大きなログファイルになってしまう」というのが原因な気がするので、ある程度のサイズで分割するようにしました。(1つの大きなファイルでやりとりするのは、読み書き双方の負担が大きくなるのであんまり良いことがない)また、ページの区切りを1ファイルごととし個別に保存・読み込むようにしました。これによってログサイズの総量が変わるわけではないので、すごい数のページを保存されてもサーバー側が困るは困るので、今回の変更にあわせてユーザーごとのクエストログの保存容量はクエストログ数ではなくページ数にしました。先月に引き続きリトライ周りをいじっており、パーティーで遊んでいるときのリトライにも対応しました。(パブリックもリトライできればと思ったのですが、ボードの出入りがあったりした場合の考慮ができなく、仕組み的に難しいのでいったんここまでとします。0特殊スキルもユニーク化できるようにしてほしいキャラクターの設定に合うように設定したい為、ユニーク化したいです。01:23もっと読むコメントを書く2023-06-30ゼルダTotKからの学び2023年も早くも半分が終わりました。6月は無事ハイラルを救ってきて、ゼルダ新作からたくさんの大切なことを教えてもらいました。失敗を恐れず一歩踏み出す勇気、発想の転換と柔軟な思考の大切さ、そして、時にはごり押しが問題を解決すること。アクティブシーンのリトライともあれ、一歩踏み出して挑戦するためには「失敗してもやり直せる」という後ろ盾があってこそだとも思うので、QuestNotesにも「リトライ」がやはりほしいなーと思いました。いうわけで、今回は「アクティブシーンのリトライ」の実装の再挑戦をしてみました。以前も一度挑戦して挫折したのですが、方針を少し変えて改めて取り組んでみました。(クエストキャンセルのデータリセットもサーバー側で処理していたので、それの延長で実装しようとしてたのですが、前回それは実装コストもサーバーの負担も大きすぎるのであきらめてました。)今回はクライアント側とサーバー側で半々で処理をする形ならばいくつかの懸念点が緩和するので、後はごり押しで実現できればと思いました。試しにシングルプレイだけで実装になります。(依然サーバー負担はあるので一旦様子見を兼ねて回数制限はつけました。)あと、パブリックは構造上難しいのですが、パーティー組んで普通のクエスト遊ぶときにはできるようにできればと思ってます。その他、以下の制限があります。・グローバル変数は巻き戻りません。・コントロールは消えます(ボード再参加と同じ)この辺の兼ね合いだったりでリトライしてほしくない場合や自前の救済の仕組みだけを使ってほしい場合は、シナリオ設定でリトライ禁止に設定してもらえればと思います。以上!失敗しても前に進んでいければと思っています!色々踏み出していければと思うので、引き続きよろしくお願いします。いえば、最近Diablo4のハードコア(死んだらコンティニューなしのキャラロスト)を見てて、あれはあれで緊張感あってよいなーとも思いました。今月はウェブサイトまわりをちらほらといじっています。新しくログインができるようになりました!(ウェブサイトの左下にログイン表示がされるようになっています)これに合わせて、認証が必要な処理をウェブ側にも持たせられるので色々と実現できる機能が増えそうです。とりいそぎクエストログの認証と公開範囲の設定をできるようにしました。クエストログはQuestNotesにおいて大切な役割を持っていると思っているので、もう少し手厚くしていければと思っています!遊んだ本人の思い出になるのはもちろんのこと、マスター側にとっても、(楽しんでもらっているのを見ることは創作のモチベーションになると思うので)自分の作品を遊んでもらった軌跡を見れるのは良い創作のサイクルにつながるかもと思っています。ログをいきなり誰でも見れる状態に公開するようにするのは少し抵抗がある人も多いと思うので、公開範囲にて「マスターには可」をできる設定を用意したので、ぜひ遊んだログをマスターへ公開してもらえればと思っています!(ついでに、一緒に遊んだ友人との思い出にもなればと思っているので、相互フォローの身内公開もできるようにしました)また、クエストログはゲームを遊んでない人にも楽しんでもらえる思っており、(QuestNotesは戦闘が少し複雑だったりで)自分で遊ぶのは抵抗がある、、、という人や、そもそもまだQuestNotes知らない人がQuestNotesを知ってもらう機会にもなればと思っています。強調表示したい場所や、冗長になって省きたい部分、誤字脱字など見栄えを良くできるようにしたいコメントやいいね「ログを創る」ということも一つの創作だと思うので、それに対してのリアクションがもらえるようにしたい露出場所を増やすおもしろいログを見つけやすくなるような仕組みを用意したいサーバー側事情の課題解決ログを1ファイルで読み書きしている仕組みは、サーバー費用的にも(ユーザー体験的にも)よくないので分割できるようにしたい。あと、コスト緩和のため広告掲載とか試してみたい。以上、予定は未定ですが引き続きよろしくお願いします!あと現在進行形でAndroid版がうまくビルドできなくて困っているのでタッチ版はお待ちください。何もしてないのに壊れた。23:54もっと読むコメントを書く2023-04-30続・ウェブサイトの移行はい、4月も終わりということで。いろいろな災厄を引きを起こしつつもひとまずウェブサイトの移行が概ね完了しました!ご協力ありがとうございました!(微妙に作業は残っているのですが、それはまたメンテナンス時に少しずつ後始末を進めていければと思っています。)タッチ版ついでに勢いにのってタッチ版の.NET6+MAUI対応を進めていました。(現状のタッチ版のフレームワークは2024年5月にサポート終了。)dotnet.microsoft.comが、何やら動かない。調べたところ、一部まだ互換性が不十分なところがあるようなので一旦断念しました。github.com(修正予定が「Future(未来)」になっていて2023年中の.NET8には含まれてなさそうなので、少し心配しています。直近、メールまわりを少しいじろうと思っています!運営からの連絡用途でもう少し使いやすくできればと思っています。(サポート作業などで運営から連絡・問い合わせる用途が時々必要になるので。)まずはプレイヤー間のコミュニケーションのための改善というよりは、運営からの連絡用途の改善を目的としています!(プレイヤー間では、メールよりトークの改善をして、トークでアイテムを渡せたりなどしたほうがよいのではという心持ちもあってあんまり触れていませんでしたが、ついでに改善できそうな部分があれば着手できればと思っています!・・・)(あと、古い仕様(キャラクター名が重複不可だった時の仕様)の整理もしたい)TwitterそういえばTwitterさんの仕様変更でTwitterへの公開通知などがうまくうごかなくなっているかもしれません。問い合わせ中なのでしばしお待ちください。18:06もっと読むコメントを書く2023-03-31ウェブサイトの移行(失敗)ウェブサイトの移行で問題があって巻き戻したんですが、一応今月書こうとしてたブログです!!(エイプリルフールではありません!!!)(不具合修正は適用しています)ウェブサイトを.NET6にアップデートしました!(フォーラムやUserVoiceは独立しているので更新なしです)(参考ページ)これから少しずつウェブサイトの役割も広げていければと思っていたのですが、それをするにあたって10年前の技術スタックの上に積み上げていくのは負債の側面が強くなってしまうので、それを避けたいと思いました。(それから、いつかちゃんとエンジニアさんとチームを組めればと思っているのですが、その時に「QuestNotesは10年前の技術を使っているので、ここで経験した技術は他の開発現場ではあまり役に立ちません。」とならないように少しでもしておきたいと思っています。)これまでクライアントやゲームサーバーもフレームワーク移行してきましたが、また違った大変さがありました。動作やデザインはかわらないように努めましたが、一部デザインが変わったり、挙動が変わったりもありますが、あんまり影響はないと信じてます。RazorPagesにしました。(ReactあるいはBlazorなども考えたのですが、作業量やアプリ側の事情を鑑みて判断しました)今回に限りませんが、今見えてる範囲で何かを選択することが「10年後にそれが正しい選択」になっているかを見極めて物事を選ぶのは常々難しいですが、、、意思を持って選択することが大切だと信じて割り切っています(たとえ良くない面が表れても、責任や結果を人に押し付けず、次の機会の学びになったと努めます!。23:59もっと読むコメントを書く2023-02-28一時取得やリトライについて2月は短い!・・・というわけで今月の更新です。リトライは一旦延期アクティブシーンのリトライ機能を作ろうと思っていたのですが、実装の大変さもそうなのですがサーバー側負担が思ったよりも悩ましかったので一旦諦めました。一時的に保存しておきリセットするのはクエスト中の一時取得とかと似たようなものなのでさくっとできないかなーと思っていたのですが、一時取得よりもややこしい(キャラクター、スキル、アイテム、変数、ボードの状況と巻き戻すものの種類が多かった)。クエスト中の一時取得さて、(少し関連して?)クエスト中の一時取得について仕様がややこしい&少し修正したので共有させてください!現在、クエスト中に取得したりするアイテム、スキルは一時取得と呼んでおり、最大個数が50に設定されています。(若干少なめに設定していますが、制限は後から緩くするのは簡単だけども厳しくするのは難しい場合があるのでまずは控えめな値を設定するのを心がけています)(あ、そもそもなんで物事に最大数が設定されているかは保存や通信にはコストがかかってしまうからです。サーバー費を眺めては辛い気持ちになりがち。)また、少しややこしいのですが、スキルは所持数(取得後に削除した場合は個数を数えない)、アイテムは累計所持数(取得後に削除した場合も個数を数える)になっています。(この仕様の違いはスキルとアイテムのデータ構造の違いが起因しています。)最大個数を超えると取得できない&エラー通知などがないので、「よくわからないけど取得できない」というやさしくない挙動になってしまっていたので、なんとかできないかと思っていましたので、少し作業をしていました。今回、その現状が少し起こりにくくするために、消耗品アイテムを使用したアイテムはデータベース上からも削除して、所持数判定に数えないようにしました。コマンドで失わせたりやショップで売却した場合は、その後に改めてIDを使った操作をする場合があるので、データベース上から削除はされていません。このあたり、データとして残す必要がない場合が大半なはずなので、コマンドや売却でデータベース自体から消せるようなオプションをつけたり、あとは最大個数を超えていた時はアラートを表示するようにしたり、もう少しわかりやすくできればと思っています。関連ローカルアイテム(シナリオ内で定義したアイテム)というよりは、一次取得アイテム(ローカルアイテムも基本アイテムも含めてシナリオ中に取得したアイテム)の最大値が50になっています。はてなブログProMMOTRPG「QuestNotes(クエストノーツ)」を開発しています。不具合や要望があればぜひご一報ください。2引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。