QuestNotes開発ブログ

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

結果表示を作成

リアクションに続いて行動の結果も表示するようにしました。
f:id:questnotes:20140430015356p:plain
今までのように行動時に「アイコンがでる&ログ表示」だけでは、
判定の結果などがわかりにくそうだったので、
タクティクスウィンドウにリザルト(結果)タブを追加して、
そこに結果を表示するようにしました。

できることなら、スキルなどは迫力あるエフェクトを用意できればよいのですが、
グラフィック面は作ることが難しいので、今回の形にしてみました。。

イラストのアップロード位置を変更とその他

f:id:questnotes:20140430015426p:plain
詳細にはイラストが表示できるのですが、その画像のアップロードを
詳細表示したところからするようにしました。
現在は自分のキャラクターの画像のみを設定が可能です。

今後、自分のキャラクター以外にもスキルやモンスターなどのイラストを
投稿できるようにしようかと検討中です。
こちらも本当は開発側でイラストを用意できればよかったのですが、
色々と難しそうなため、いっそ開放して手伝ってもらえないかと少し考えています。

しかし、そうするとした場合、カードイラストの自由な設定をできるようにするには、
投稿だけでなく削除や差し替えを可能にしたり、
不適切な画像が投稿されたときに対応できるようなシステムを
用意する必要がありそうなので、少し準備が必要そうかなーと。

また、誰かが既に投稿しているものに他の人も投稿したいときのことを考えると
複数の画像が設定できるようにし、ランダム表示や評価機能もほしくなってくるので、
満足に実装するのはひと手間かかりそうです。

戦闘と変数設定のインターフェース修正

HearthStoneに影響を受けて
戦闘のインターフェースを修正しました。
他のキャラクターが行う行動について
「誰」が「何」を「どこ」にするのかがわかりやすくなっていれば幸いです。
f:id:questnotes:20140404013625p:plain
また、合わせて結果の表示についても
もう少しわかりやすくしようと現在修正中です。

変数選択ウィンドウ

f:id:questnotes:20140404013636p:plain
また、マスター向けのインターフェースの改修として、
変数の選択と利用を行いやすくするために
値をキーボードで入力をしなくとも、ウィンドウから選択できるようにしてみました。

変数の扱いはすこし難しいですが
理解すれば表現の幅が大きく広がるので
少しでもわかりやすくなればと思います。

ボードデータの分離

前回検討していたボードデータの分離機能の実装を行いました。
これでマスターがボード内のイベントの一部を変更しただけで、
シナリオ全体を保存し直す、ということがなくなり、
大きなシナリオも作りやすくなったかと思います。
(変更のあったボードのみを個別に保存するようになりました。)

プレイヤーも開始時にシナリオ全体を読み込まなくなったので、
シナリオ開始までの読み込み時間の短縮につながるかと思います。
f:id:questnotes:20140314025044p:plain
シナリオ編集中は読み込まれていないボードは編集できないので、
読み込みボタンが表示されます。

尚、シナリオのエクスポート時は
今までどおり一つのファイルにすべてのボードを保存します。

パッケージング機能を消す

ボードデータの分離などにあたり諸々の兼ね合いのため、
シナリオのパッケージング機能(シナリオをローカルから読んで遊ぶ機能)は
一旦はずしました。

この機能があることによって
データの整合性(サーバーにあるデータとローカルにあるデータの違い)
をとるのが複雑になってしまっていたのと、
マルチデバイスで遊ぶときにも不都合がありそうだったので今回の判断となりました。。。

読み取り専用素材

f:id:questnotes:20140314025100p:plain
初めから用意されている素材・フォルダは変更ができないので、
ロックしているアイコンを追加してみました。

近況報告

バグ修正やパフォーマンス向上など地味な作業が続いてしまうと
ブログなどの更新が開いてしまっていけないな・・・、
と思い、ひとまず近況の報告というわけでブログの更新をば。

現在、バグ修正などの作業に合わせて、
ちまちまとCardWirth対応機能を進めているのですが、
シナリオのデータ(ボードやアイテム、キャラクターなど)を
すべて一つのファイルで管理している今のQuestNotesの方式だと
ファイルサイズが大きくなりすぎる問題が生じてきました。

そこで先人の知恵を見習って、
1ボード1ファイルで保存できるように修正しないとなーと考えています。
(ネットワークのトラフィック的にも優しくなりそうです)

カジュアルゲーム

そういえば最近HearthStoneというカードゲームを始めました。
http://us.battle.net/hearthstone/en/
もともとMtGが好きだったので、こういうカードゲームはいいですね。
それから興味深いのが、このゲームはもともと他の同社のゲームタイトルである
Warcraft」のキャラクターが登場されているようです。

この「ボリュームのある本編から派生して同じ世界観の
カジュアルゲームを作成する」というアプローチはいいですね。
QuestNotesも本編が整ったらカジュアルゲームとして、
同じ世界観で気軽に遊べるカードゲーム版も作成してみたいです。

所持アイテム・スキルの分岐(トリガー)の実装

年末から行っていたコードの整理が一段落つきました。
通信の無駄を省いたり、不具合も潰せたと思うので安定性も少しは向上できたかと思います。

コード整理はきりがないので、一旦見切りをつけて再び前進するための機能追加を・・・、
ということでキャラクターが所持しているアイテム・スキルでの分岐を実装しました。
特定のアイテムを持っている時に処理したい」というものに対応できるかと思います。
f:id:questnotes:20140127003202p:plain

しかし、実装するにあたって
QuestNotesではログイン時に他のプレイヤーキャラクターの
所持アイテムの情報は送信していなかったので、
「パーティー内でだれかが指定のアイテムを持っているか?」
を判断する術がなかったので、
対応方法は少し悩ましい感じになってしまいました。

対応方法としては
1・他PCの所持アイテム情報も送る
2・サーバーサイドで判定して結果を返す
3・他プレイヤー自身に判定結果を返してもらう
というのを検討してみました。

どれも一長一短がありそうなので、
今回はサーバー・通信量の負荷が高くなさそうな3番の
他のプレイヤーに「持っているか」のメッセージを送信し、
「持っているか」のメッセージを受信したプレイヤーは、
その条件を調べて、結果を元のプレイヤーに戻すようにしました。
(複雑性と通信回数は増えてしまいましたが・・・。)

というわけで、通信が発生するので多用は避けるために
現在はイベント時のみ使えるトリガー(作戦や効果のトリガーとしては利用できない)
となりましたが、シナリオ作成の役にたてばと思います。


更新履歴 0.7.2.*
http://www.questnotes.net/Content/history.aspx

明けましておめでとうございます

今年もよろしくお願いします。

去年のQuestNotesの開発は
「1歩下がってちょっと方向修正して2歩進む」
というような感じでしたので、
今年はもっと速度を上げて進んでいければと思います。

さてさて、今年の目標は以下の三点になります


・安定化
年末から始めたコードの大掃除(リファクタリング)を開始したのですが、
改めて今まで作ってきたものを眺めるとマルチスレッドの処理がガバガバでして、
あくせくコードを整えています。。

また、ちょうどこちらの本の第四版が出たとのことで基礎から
もう一度しっかり勉強しています。

プログラミング.NET Framework 第4版 (プログラミングシリーズ)

プログラミング.NET Framework 第4版 (プログラミングシリーズ)

この本はしっかりとしたボトムアップの情報が書いてあり、
もっと早めに読んでおくべきだったかなーと思いながらページをめくっています。


HTML5
不具合&要望対応を優先してなかなか進められなかったのですが、
今年こそリリースに向けて足を進めようと思います。

開発当初はJavascriptで書き始めていましたが、
去年の途中からTypeScriptを導入してみていい感じなので、
もっとがんばりたいところです。


・コンテンツの拡充
土台がしっかりして遊べる環境が増えたら、
もっとコンテンツを上に載せたいなと思っています。
個人的にも去年は全然クエストを作れなかったのでもっと作りたいところです。
それから、去年はちまちまと作っていたCardWirth変換機あたりも試してみたいですね。


なにやら去年の目標と基本的に変わってないような気もしますが、
今年も開発を続けていければと思いますので、
暖かく見守っていただければ幸いです。

更新履歴 0.7.1.*

http://www.questnotes.net/Content/history.aspx
2014年ということで、マイナーバージョンを上げてみました。

通信処理の修正


表側には違いがあまりでないのですが、裏方の修正として、
読み込み処理を修正しました。
QuestNotesでは、データ構造を基本データ+実態データの2つで構成されています。
(例・スキルの場合には、
 基本的なスキルの効果など情報+キャラクターが持つスキルの成長情報の
2つにわかれています。)

今までキャラクターAがヒールLV1、
キャラクターBがヒールLV2を所持していた場合には、
二回ヒールの基本データを受信していたのですが、
今回、初回のみ基本データを読み込むようにしました。

通信の効率化

データをやりとりの効率化の方法として、
基本的には以下の手段があると思います。
・データの量を減らす
・データの読み込み回数を減らす

今回は、読み込み回数を減らすということで
同じデータの読み込みを減らしてみました。


まだ改善できそうな点として、
基本データはローカルに保存するという手段、
(現在はアプリ起動度一回は基本の読み込みをしています)
あるいは、データ量を減らすというアプローチで
データの送信時の直列化の手段の変更も検討中です。
現在は、XMLという形式になっているのですがJsonあたりが良さそうです。
(サイズや速度だけみると、
MessagePackやProtocolBuffersというのが良さそうなのですが、
携帯デバイスで同等に動かせるかの検証が必要なので少し億劫に。。)
ともあれ、まだまだ通信周りは改良の余地がありますね。。