2013年3月31日日曜日

RPG作成中・戦闘AI処理

状態管理(魔法や状態異常などの効果と持続時間の管理)をだいたい作成したので、いよいよ戦闘のAIに取り掛かっています。概ね半分程度は書けたのではないかと思います。

放置型RPGでは操作ができないので、当然すべて自動戦闘になります。戦闘時の行動があまりに間抜けだと興醒めなので、AIは重要になります(前作は単純でしたが)。戦闘のアルゴリズムはいろいろとあるようですが、今回は、戦闘やスキルなどの行動ごとに評価関数を実行して重みを計算することにしました。可能な行動の中で、もっとも価値の高いものを取ることになります。計算パラメータを変えることで、戦術での指定も反映できると考えています。

現在危惧しているのは、戦闘処理があまりに重くなって、スマホで現実的な時間で処理できない可能性です。こればかりは動かしてみないとわかりませんが……。

2013年3月17日日曜日

RPG作成中・少しずつ開発中

他のアプリ開発と平行して、少しずつですが開発を進めています。スキル選択などいくつか画面を追加し、探索処理などもブラッシュアップしています。カタログ系の付属画面を除いて、基本機能の画面は一通り揃った感じです(アイコンや画像、デザインは手付かずですが)。

スキル・呪文回りは、クラス制を生かすためにも必須機能だと思っていますが、この後で探索処理/戦闘処理に、AIと状態管理を組み込むのはなかなか面倒です。処理自体はおそらく時間さえ掛ければ作れそうなのですが。

地道に進めていますが、進捗が悪くて、パートタイム開発者の限界を感じます。機能をある程度大きく削って、完成を早めるのもひとつの方法かとも考えています……。

2013年3月3日日曜日

壁紙ぴったんバージョンアップ(1.6.3/1.6.4)

v1.6.3で、保存先(SDカード等)にwallpaperディレクトリがないと保存に失敗するバグがありましたので、v1.6.4で修正しました。連続の更新で申し訳ありません。

v1.6.3では、拡張モードのカスタム配置で、横(左右)のみ、縦(上下)のみに移動できる機能を追加しました。高さや幅にリサイズした場合に、合わせた方向についても動いてしまうと使いにくいためです。

また、JPEG形式での保存、保存方式の変更の設定を追加しました。保存方式を変更すると、ContentResolverを使わずに保存します。一部の機種では、ContentResolverを使うとエラーにある場合があるようです。

内部的に、メモリ使用量を多めに確保するようにしました。具体的には、AndroidManifest.xmlにandroid:largeHeap="true"を追加しています。Android 3.0以降では、メモリ不足エラーが出にくくなると思います。

バグ修正では、Jelly Beanで(ICSでも起きるかもしれません)、PCから端末をUSB接続したとき、保存したファイルが0kbに見えるという現象に対処しました。ファイルそのものは正しく保存されていますが、PCから見たときだけ、0kbになります。
原因ですが、こちらの「旧ドキュメント」にある、「ContentResolverにinsertしてから、openOutputStreamでstreamを取得し、ファイル出力する」という方法を使うと、サイズが0kbになるようでした。あらかじめファイルに出力してから、ContentResolverにinsertする(そのときにSIZEも指定する)という方法で、正しく保存されるようになりました。
もともとGoogleのサイトに書いてあった方法を使っていたのに、OSバージョンアップで正しく動かなくなるというのは、勘弁してほしいです……。