2010年12月26日日曜日

SilverSprite + UROBOROS Patch

先日、2Dアニメーションの機能を追加しました。
せっかく2Dアニメーションを実装したので、少し気になっていたSilverSpriteを少し触ってみました。(SilverSpriteは、XNAインターフェースでSilverlightのゲームアプリケーションを作成するライブラリです。)
この動画と同じ動作実験は、ここをクリックするか、上の[SilverSprite実験ページ]をクリックしてください。
[SilverSprite] + UROBOROS Patch バージョンによる動作テスト
今後使っていけそうかという面から調査、試してみました。結果から言いますと、
Slverlightの[GPUアクセラレーション]を有効にすることで、2Dゲームに十分使っていけそう。というか使って行きたいと思えました。

ただし、[GPUアクセラレーション]を無効にした場合の動作環境は正直ゲームで使うには、かなり無理があるといってもよいほど遅すぎます。[GPUアクセラレーション]を使わない場合は、ブロック崩しあたりが限界かもしれません。SilverArcadeにリリースするゲームなどは万人PC向けに[GPUアクセラレータ]はオフされた状態で考えるほうが無難かもしれませんね。

Core 2 Duo P9500(2.53GHz)、GeForce 9600M GT(512MB)環境で、[GPUアクセラレーション]を有効にした場合には、上記ビデオのテストが60フレームを維持できています。上記テストから予想しますには、弾幕系とか言われてるシューティングゲームぐらいは十分動作させられるレベルだと思います。(なお上記ビデオは、録画の関係上フレームレートが落ちてることに注意)

注意
今回の評価には正式リリース版( SilverSprite 3.0 Alpha 2 )は使っておらず、最新ソースをダウンロードして、独自パッチを当てて使用しています。なので、[SilverSprite 3.0 Alpha 2] をそのまま使用しようする場合と、内容は一致しない可能性があるため十分注意してください。
[SilverSprite 3.0 Alpha 2] をそのまま使用しなかったのにはいくつか理由があります。
  • 不具合が出たときに、ライブラリが悪いのか、こちらが悪いのかさっぱり分からない。
  • 不具合が出たときに、ライブラリが悪いのか、ただの未実装機能なのか判断ができない。
  • Silverlight4とリンクできない。
  • マイクロソフト情報によると、「Silverlight 4 は、起動時間 30% 向上、実行速度 200% 向上のパフォーマンス改善がなされています。
などがあります。なお、最新ソースは、Silverlight4へ移行途中段階であり、いずれ正式にSilverlight4に対応されることと思います。ということで、最新ソースは移行途中であり、テクスチャすら表示できなかったり、なぜかテクスチャの色が変になったりと、色々自分でパッチを当てないと動かないので、最新ソースを使用する方は十分に注意が必要です。が、SilverSpriteライブラリ側の問題もソースレベルデバッグできるので、一度やり始めるとこちらのほうが対処が早いという大きな利点があります。どちらを選ぶかは利用者次第と言う感じだと思います。
ただし、その一方で SilverArcade でゲームをリリースしたい場合は、独自パッチを当てたSilverSpriteを使用してもよいか不明な点は気になります。こちらは追って確認していきたいと思います。

話を戻しまして、今回の一番の収穫としては、テクスチャ・フォント以外の独自アセット(.xnb)を使用できることを確認できたことです。個人的には、正直これができないと、SilverSpriteを使う意味はまったく無いと思ってましたので..。
一応SilverSpriteを使って判明したことを列挙しておきます。これをヒントにして頂いて、後は必要にあわせて対応してください。
  • 独自のアセット(.xnb)を Content.Load<>()で読み込むことができます。
  • SilverligitアプケーションはSilverlightライブラリしかリンクできません。
    SilverSpriteProject

  • 自動シリアライズに対応していない?ので、必ず自分でコンテンツリーダ、コンテンツライタを書いてください。(これも、非常に×2重要です)
  • コンテナ系(Array,Dictionary<>,List<>)などの自動シリアライズには対応していない?ようなので、自前で展開するようなコンテンツリーダ・コンテンツライタを書いてください。(これも、非常に×5重要です)
  • 独自アセット(.xnb)を作成するには、あらかじめ WindowsかXBOX用のXNAプロジェクトでビルドしておく必要があります。それをSilverSprite側のアプリケーションに取り込む必要があります。
  • SilverSpriteアプリケーションに(.xnb)を組み込む時には、プロパティ[ビルドアクション]を[コンテンツ]にしておく必要があります。
    SilverSpriteProjectProp

余談ですが、 個人のホームページやブログに、Silverlightで作成したプログラムを配置するのは、結構敷居が高そうな感じです。たぶんですが、それが原因で、Silverlightで作成したゲームやアプリケーションが個人のページに配置されていないのだろうと思います。
簡単に言いますと、SilverlightをサポートするWEBサーバーが無いと、Silverlightで作成したゲームはホームページやブログに配置できませんよ!。という制限があり、サポートしているサーバーが少ないということが原因になっているのでしょう。
このブログでは、Google App Engine を使って、SilverSpriteで作成したアプリケーションを無料でホスティングしています。また機会があれば、このあたりのやりかたを書くか、そのあたりをご紹介するかもしれません。

2 件のコメント:

  1. SilverSpriteに興味がある個人開発者です。
    もの凄く参考になる記事でした。
    SilverlightとSilverSpriteの現状の情報が少なくて困り果てていましたので、大変助かりました。

    >このブログでは、Google App Engine を使って、SilverSpriteで作成したアプリケーションを無料でホスティングしています。また機会があれば、このあたりのやりかたを書くか、そのあたりをご紹介するかもしれません。

    勝手ながら期待しております。

    返信削除
  2. はじめまして。管理人です。
    コメントを頂けるとは思っておらず、お返事が遅くなり失礼致しました。
    つたない文章になるかと思いますが、ご要望頂きました内容や新たに分かりました内容などもありますので、今後追記していきたいと思っております。
    これからも宜しくお願い致します。

    返信削除