ゲーム「リトルセイバー」デモ版 Ver 0.70 を公開しました

前回 Ver 0.60 を公開してから半年ぶりですが、ゲームタイトルも決まりようやく Ver 0.70 を公開できました。ちなみにデモ版を Silverlight で公開するのは今回で最後になります。

2018-10-20 22_44_25-スタート

ゲーム自体は Ver 0.40 あたりから大きく変わっているところはありません。戦闘以外の部分やプログラムの最適化、ゲームレベルの調整などを行っているので、デモ版としての違いはあまりわからないと思います。

一応 Ver 0.60 からの変更点は以下の通りになります。時間が空きすぎて書き忘れているところがあるかもしれませんが…。

  • プレイヤーユニットの名前を入れました。
  • プレイヤーユニットの顔画像(仮)を入れました。
  • プレイヤーユニットのキャラチップを変更しました。
  • デモ用のステージを3ステージにしました。
  • ランダムマップの種類を変更し増やしました。
  • 効果音を増やしました。
  • 敵の種類を増やしました。
  • プレイヤーユニット以外の状態異常表示を小さくしました。
  • ステージ2、ステージ3のマップチップを平原以外にしました。
  • 全体的に動作パフォーマンスを改善しました。
  • いくつか特殊技を追加しました。
  • チームコマンドによる各チームの動きを少し明確にしました。(特にプレイヤーユニット)
  • 経路探索をより短縮できるようにしました。

目立つところとしては遊べるステージが3つになったところです。内容としては「序盤」「序盤→中盤」「中盤」ぐらいのレベルで見てください。各ステージはそれぞれ難易度を選択できますが、難易度によって敵のレベルと数が変わります。特にステージ3は素の難易度が高く、「難しい」を選択した場合はゲームに慣れていないとクリアするのがかなり困難だと思います。私がプレイしても結構きつかったです。

ちなみにデモ版ではあらかじめ設定したレベルでしかプレイできないのですが、正式版ではきちんとレベリングできる仕組みになっていますので、そもそもアクションが苦手という方でも、レベル上げすればクリアはできるようになっていますので安心してください。もちろんレベル上げ禁止の縛りプレイをするのも自由です。

ゲーム公開ページは以下の URL になります。初めてプレイする方は設定が必要なので、リンク先のページを参照してください。また現在 Internet Explorer のみの動作となります。

正式版のリリース環境について

さて、ここからは正式版についての話です。

正式版については UWP による開発を行っているので Microsoft ストアでの公開になります。ですのでプレイできる環境としては「Windows 10」「Windows 10 Mobile」となります。Windows 10 Mobile についてはテストプレイはしているので動作は可能です。ただ、NuANS NEO スペックレベルでの動作確認なので、これよりスペックが低いと動作がもたつく可能性があります。

UWP なので Xbox One でも動作すると思うのですがこちらはまだ確認はしていません。MonoGame で開発しているので普通は問題なく動くのですが、一部 C++ ライブラリを作って読み込んでいるので、その部分が Xbox One で動くかどうかがわかっていません。なのでいったん保留とさせていただきます。余裕があれば中古で買って試してみようかな。

それともともと UWP 版のみのリリースを考えていたのですが、訳あってデスクトップ版(Windows)のテストも行っています。UWP ではないので Windows 7 以降であれば動くとは思います。Silverlight 版はもう公開しないので、Silverlight 版の代わりに体験版とかをデスクトップ版でリリースしてみようかと思ってます。こっちで正式版を出さないのかという話になるかもしれませんが、ネイティブコンパイルができないのでこれも保留中です。ただ UWP 版公開後にリリースについては考慮するかもしれません。

他のプラットフォームでの公開は今のところ考えていないのですが、可能性があるとすれば Android 版です。ただ、リトルセイバーではプラットフォームごとにライブラリを作る必要があるので、上記のプラットフォームに比べると優先度が低くなっています。こちらも UWP 版公開後に考慮するかもしれません。

macOS, iOS, Linux については現在リリースは考えておりません。そもそも環境がないので…。

正式版のリリース時期について

ゲームプレイ動画(ニコニコ動画)のページではリリース予定時期を2018年冬としていましたが、イベントの関係上 2019年1月に変更になりそうです。まあ2018年にリリースしてすぐに2019年になるよりは「2019年にリリースされたゲーム」とした方が見た目も良さそうなので…。

ゲームの操作について

どこに書いたか忘れてしまったのでここに再度書いておきますが、リトルセイバーは「キーボード」「マウス」「ゲームパッド(XInput)」「タッチ」いずれでも操作可能です。ただし、ショートカットの利便性から言うとキーボードやゲームパッドでの操作をお勧めします。マウスでできる操作が少ないので、マウスはレベル差がある状態でのながらプレイに向いています。

タブレットやスマフォの場合タッチ操作しかできませんが、十分にゲームが可能なように作られていますので安心してください。

価格について

今まで触れていなかったのですが、リトルセイバーの正式版は有料での公開を予定しています。私が制作したゲームの中で初めての有料版となります(ツールではありますが)。それなりの時間とお金を使って開発してきたので、一度は有料版で公開してみたいなと思っていました。

価格についてはまだ決めていませんが、3桁ぐらいを想定しています。買い切り型でゲーム内課金とかそういうものはありません(普通に市販ゲームを買うような感じ)。今のところ Microsoft ストアでの公開を予定していますので、Microsoft ストアで購入すれば同一アカウントであるかぎり、一度購入することによって複数の PC, Windows 10, Windows 10 Mobile などの別々なプラットフォームで遊ぶことができます。

他のストアでの公開や同人販売サイト、同人即売会などでの販売は思案中です。

Silverlight 版の終了について

ここからは完全に余談の域なのですが、Silverlight 版の公開を終了する理由についてはいくつかあります。

  1. Silverlight のランタイムサポートが 2021 年までとなっている
  2. Silverlight が動く環境が現時点で Internet Explorer ぐらいしかない (他のブラウザでも動くものもあるかもしれないが)
  3. Silverlight の開発サポートが終わっている
  4. Silverlight の開発ができる環境が Visual Studio 2015 まで
  5. Silverlight のデバッグがめんどくさい
  6. Silverlight 版でのゲームの動作が重い

終了する理由として大きいのが 3, 4, 5 ですね。デバッグ実行がいまいちなので不具合調査がしにくいのと、ほかのプロジェクトとのコードの共有がめんどくさいです。.NET Standard など異なるフレームワーク間での共有化が進んでいる中で Silverlight は完全にはぶられているのでシンボリックリンクフォルダとか使って適当にごまかしている状態です。

「ダウンロードしなくてもゲームやアプリが動かせる」「.NET のコードを共通で使える」などのメリットはありますが、まあもともとデモ版ぐらいでしか使うつもりがなかったのでとりあえず今回で区切りでもいいかなあと思いました。

同人誌、同人ゲーム、同人ソフトのダウンロードショップ - DLsite
Share this...

ゲームデモ版 Ver 0.40 公開予定について

最近は制作動画のほうの更新もなかなかできずにいたので情報公開がしばらくできていなかったのですが、一応プログラムのほうはちまちまと作っていました。Ver 0.40 は「この機能を入れる!」っていうような新機能はなかったのでどのあたりまで作りこむか迷っていたのですが、とりあえず各機能が問題ないレベルまで動くようになったのでそろそろ Ver 0.40 を公開しようかと思います。

現在のゲームイメージは下のようになります。

2017-04-21 22_17_57-ゲームデモ Ver 0.40 - β版開発室 - ソーサリーフォース - Internet Explorer

ゲームの操作方法や各説明についてはゲーム公開ページに載せる予定なのでここでは記載しません。

Ver 0.30 では2ステージから選択できていましたが、今回は1ステージのみとなっています。その代わり、ゲーム開始時に難易度を3種類から選択できるようになっています。ちなみに Ver 0.40 の難易度は過去3バージョンに比べるとかなり難しくなっていると思います。

難易度で「普通」を選択した場合でも、立ち回りをうまくしないとクリアが困難になる可能性があります。「簡単」を選択すれば相変わらず仲間が勝手にどんどん敵を倒してくれます。「難しい」を選択するとジリ貧状態まで追い込まれるので、作者自身がプレイしてもなかなか難しかったです。

ちなみに私が各難易度をクリアした結果は下のようになりました。神プレイを狙ったわけではなくとりあえず1回クリアしてみたものです。

2017-04-22 19_09_10-OneNote

2017-04-22 19_02_53-OneNote

2017-04-22 18_50_07-OneNote

「易しい」「普通」はそれなりの結果でクリアできたと思いますが、「難しい」はクリアに27分もかかってしまいました。敵の数に対して仲間が圧倒的に少ないので余計に時間がかかります。

今回のデモ版のクリア条件はすべての敵を倒すことです。ボスはいません。しかも敵は赤色と黄色がいるので、片方だけ攻めているともう一方に攻撃される可能性もありますので、マップを見て現在の状況を把握する必要があります。

ゲームのパフォーマンスについてですが、60FPS を出すのが結構難しい状態になっています。私の環境でゲームの設定を変えずにプレイした場合、敵の数が画面内に多くなったりすると40FPS ぐらいまで落ちてしまいました。試しに GPD WIN でプレイした場合は 20FPS でした。

一応負荷軽減対策としてゲーム開始前のオプションでユニットの配置数を変えることができるようになっています。もしまともにプレイできないようであればユニットの配置数を減らしてプレイしてみてください。逆にもっとユニットを出したい場合は増やしてみるのもいいかもしれません。

2017-04-22 21_15_23-OneNote[3]

ちなみにパフォーマンスがでない理由についてはよくわかっておりません。おそらくですが、ゲームプログラムが Internet Explorer を介して動いているため、その分余計なオーバーヘッドがかかっているのではないかと思っています。ちなみに UWP でも同じプログラムを使って動かしていますが、こちらの方は2倍程度高速に動いている感じです。

一応パフォーマンスを改善できる点はまだあるのですが、今後もまだ機能を追加するものがあるので、そちらの負荷が上がったときに改善しようと思っております。今回も開発版なのでそこまで最適化を行っているわけではありません。

今後の予定について

プログラムのほうは動作確認を残しているだけなので、早いうちに公開できると思います。その前に今回のバージョンに向けての制作動画を2本撮ったので、先にそちらの方の編集を行って公開した後にゲームを公開しようと思っております。

ちなみに Ver 0.40 になってもいまだに Game Demo  というタイトルなのですが、今はシステム構築がメインなので、Ver 0.50 公開あたりまではたぶんこのままだと思います。コンテンツなどは後半に行う予定です。

Share this...

ゲームデモ版 Ver 0.20 について

結構時間がかかってしまいましたが、ようやく公開できそうな段階まで出来上がってきました。都合がつけば今週中ぐらいにはアップできると思いますが、仕事がやたら忙しいため、下手すると次の週末になりそうな予感もしています(実際その確率のほうが高い)。

変更内容とかは公開したときに書きたいと思いますが、Ver 0.20 からは GPU 処理に代わりますので、ゲームを始める前に1回 Silverlight の設定を変更する必要があります。変更方法については公開後に、該当ページに説明を入れておきます。1回設定すれば、ほかのバージョンを公開した場合でも再設定の必要はありません(同一ドメインならそうだった気がします)。

パフォーマンスは想定していたよりはいい感じです。まあ結構アルゴリズムの最適化を行ってきたのでそうでないと割と困るのですが(^^;)。一応持っているデスクトップPCとノートで動かしてみましたがほぼ問題ありません。どちらも割と高スペックなのであまり参考にはならないのですが…。試しに DELL の Venue Pro 8 のタブレット PC でも動かしてみたのですが、たぶん 30FPS ぐらいでスムーズに動いている感じでした。ただ Ver 0.20 はまだキーボードしか対応していないので、ちーたんタッチボードを起動して無理やり操作したのですが。

続きは時間が取れた時に。下に載せたイメージは開発中の画面です。

2

Share this...

ゲーム開発進捗 2016/02/12 またまたGCとパフォーマンス

どういった場合に GC の対象となるか調べてコードをいくつか改善してみました。おおざっぱなキャプチャしかとってなかったのであんまり参考にならないですが、改善前はこんな感じ。

2016-02-07 11_11_05-CpuGameDanke1UAP - Microsoft Visual Studio

10秒の間に2~4回ぐらい GC が発生していました。

改善した結果がこちら。

2016-02-11 20_12_39-CpuGameDanke1UAP - Microsoft Visual Studio - コピー

10秒に1~2回ぐらいまで抑えられました。まだ改善できそうな箇所があるのでもう少し頑張ってみます。

まあ GC の発生を改善すれば処理速度向上するかなーと思ってたんですが、気持ち程度でしたね。ただ、確実によくはなっていると思います。

とりあえず現状のパフォーマンスでユニットをたくさん出してみました。

2016-02-11 23_57_23-CpuGameDanke1UAP.Windows - コピー

ユニットがどれだけいるかわからないのですが、一応開発マシンでは FPS が 50~60 でている感じです。ただ、開発マシンはスペックが高く、ノートでやると明らかに落ちているのでまだまだ改善しないといけないですね。というかそもそもこんなにユニット出すのかっていう前提もあるんですが (^^;)

ロジックを最適化する場合、たいていは無駄な判定とか減らすのですが、それをやると正常に動かなくなることが割と多いです。これを直すのに意外と時間かかったりしますね。

Share this...

ゲーム開発進捗 2016/02/07 GC とパフォーマンス

来週艦これのイベントが始まるということで、イベントが始まる前にマンスリー任務やEOステージのクリアをやってたのでゲーム開発のほうはあまりはかどりませんでした。それよりもどんどんたまっていくアニメの録画の消化をどうにかしたい…。

さてゲーム開発のほうですが、現在は Ver 0.20 の公開に向けて作っています。ですが、ちょっとパフォーマンスに難ありな状態なので、機能の作りはおいておいてメモリ管理のほうを少しやってました。

Visual Studio 2015 には診断ツールがあり、メモリの使用状況や CG の発生タイミング、メモリのスナップショットなどを見ることができます。

2016-02-07 11_11_05-CpuGameDanke1UAP - Microsoft Visual Studio

ゲームの場合ツール系とは違い、常に処理が回っているのでメモリ(インスタンス)の確保が常に発生します。C言語のような完全なネイティブプログラムの場合、自身でメモリの破棄タイミングを指定しなければならないので、メモリリークさえ気を付ければ GC なんて考えなくてもいいのですが、今回 C# でゲームを作っており、確保したメモリの破棄はほぼすべて GC に任せることになります。

ゲームループ中に GC の発生を抑えることはほぼ不可能です。事前に必要なメモリを確保しておき、その中でやりくりするという方法がゲームでは主流ですが、マネージドなプログラムだと、文字列処理を行うだけで GC 対象になるので相当気を使います。

とは言ってもあまり余計なインスタンスを作成さえしなければ、GC が発生してもゲームに影響することはそんなにありません。上の図で何回か GC が発生していますが、メモリが平行に進んでいる部分のGCは大体ジェネレーション1のものです。1回当たりにかかる時間はミリ秒単位。うまく作ってればコンマミリ秒まで落とせるので支障はあまりないと思います。

ただ、別のシーンに切り替えたときなどに例えば大きな規模の初期化処理などを行うとジェネレーション2が使用されます。これを放置しておくとゲームの最中で突然一気に解放されたりします。これにかかる時間が100ミリ秒単位だったりするので、その間完全にゲームが停止します。リアルタイム性が求められるゲームの場合致命的です。上の図でも途中で一気にメモリが解放されていることが分かります。

変なタイミングで発生されても困るので、初期化処理が終わったらとっとと GC.Collect を呼んで解放してしまうのがいいと思います。

2016-02-07 22_38_37-CpuGameDanke1UAP - Microsoft Visual Studio

プレイヤーが操作中に止まるよりは、次のシーンが始まる前の真っ暗な画面なんかで実行したほうがいいですね。操作中に0.5秒止まるよりは真っ暗な画面で0.5秒止まってたほうが、ユーザーは全然気にならないと思います。

Share this...