WANGF(Web Autumn's Novel Game Framework)の公開テスト(Aplha版)を開始しています。
WANGFはANGF(Autumn's Novel Game Framework)系列のソフトの最新版です。
現在、以下のゲームが動作可能です。
- はじめてのお使い
- お姉ちゃんのお使い
- 1980おたくのヒデオ
- 淫欲少女抄エターナル (18禁同人ソフト)
- 淫欲王女抄 (18禁同人ソフト)
WANGFの特徴は以下の通りです。
- ほとんどの主要なWebブラウザでプレイ可能
- Blazorを使用したWASM用 (WASM非対応のブラウザでは動作しない)
- 完全ローカル動作。18禁ゲームを遊んだ事実は一切外部に送信されません
- セーブデータもローカルに保存。クラウドに送信されて誰かに見られる恐れはありません
- バックアップ機能でデータを保存しておけば、他の環境での継続プレイも可能
- デスクトップ版にあった利用者サイドでゲームを拡張する拡張性は今のところありません (Webブラウザのセキュリティ制約でこれはとてもやりにくい)
設計思想 §
これまで公開されていたANGFWebPlayer4の反省点を反映したものがWANGFと言える。ANGFWebPlayer4はクラウドのサーバ側Webアプリとして構築されたが、以下の欠点があった。
- 反応が遅い
- 全てのユーザーが一つのサーバ側プロセスを使うので、アプリケーションドメインでユーザーごとに環境を分けていたが、これはサーバへの負荷が過大である。しかも、アプリケーションドメインは.NET Frameworkにはあるが.NETにはないのでフレームワークを更新できない
- プレイヤーのプレイの終了を確実に知る方法がなく、アプリケーションドメインの回収はタイムアウトに依存していた。つまり、時間を置くとプレイを継続できない
- 様々なSNSのアカウントで認証できたが仕様変更でいつどれが使えなくなったのか良く分からなかった。更新方法もはっきりしなかった。
これらの問題を踏まえて以下のポリシーを立てた。
- 全ての利用者がすぐ遊べるWebアプリという形式は望ましいので継続したい
- 全てローカルで実行させることで、サーバの負荷を軽減したい (今どきスマホだってCPUパワーは大きい)
- ローカルで動作すれば認証は要らなくなる
- ローカルで動作すればアプリケーションドメインもタイムアウトも不要となる
ソースコードの書き換えを最小にしながらこのような課題に対応する技術として、Blazorが登場したので採用した。
しかし、Blazorにはマルチスレッド非対応という問題があった。ANGFはシナリオスレッドとUIスレッドが2本同時に走るアーキテクチャだったのでこれは困った。当初はマルチスレッド対応を待ったが、対応してくれないので見切り発車した。
構造的には、非同期の機能を使用することで、2つのコンテキストが独立して実行できる構造になっているが、これに対応するにはソースをいちいち非同期対応に書き換える手間が発生してしまうことになる。手間は掛かるが順次ANGF対応ゲームはWANGF対応する予定である。
同人ソフトに同梱して販売する場合はどうするのか、と言う問題もある。
この場合は、簡易HTTPサーバの機能を持ち、子プロセスとしてWebブラウザを起動してゲームを実行する技術を既に開発済みである。これを使えば、初期段階でのファイルの読み込みにも外部との通信が発生しない完全なローカルのみでのプレイが可能になる。