LoginSignup
0
0

More than 5 years have passed since last update.

Altseed 製ゲームに修正パッチを当てる

Posted at

Altseed はいいぞ

この記事は AmusementCreators AdventCalendar 2016 通称ACACの2日目の記事です。
言いたいことは「Altseed はいいぞ」。たぶんしばらく引っ張ります。

今回はチュートリアルではあまり扱わないような、でも実際ゲームを作るうえで気になるところを少し説明していこうと思います。

Altseed とは

AmusementCreators の OB をはじめとする強い人たちが作っているゲームエンジンです。オブジェクト指向に適した設計になっていて、ゲームを作るうえで毎度おなじみな処理が大抵用意されているので大変便利に使わせていただいております。C#だけでなくC++やJava(いまのところβ版)で同じエンジンで開発することができるというところもウリの一つです。どんなことができるのかは公式サイトを見てもらえるといいかと思います。

FilePackageとは

Altseed 製ゲームに限らず、ゲームソフトにはそこで用いる画像や音声などのリソースを同封します。リソースは、ネタバレやそのほか良からぬことに用いられぬよう、容易には抽出できないよう工夫することが多いと思います。
Altseed にはこのようなリソースを暗号化し1つのパッケージファイルに格納するツールが付いてきます。
公式のドキュメントはコチラ

パッケージからリソースを読み込んで表示するサンプル
namespace PackageSample
{
    class Program
    {
        static void Main(string[] args)
        {
            asd.Engine.Initialize("タイトル", 640, 480, new asd.EngineOption());

            //パスワードを指定する場合
+            asd.Engine.File.AddRootPackageWithPassword("パッケージファイルのパス", "パスワード");
            //パスワードを指定しない場合
+            asd.Engine.File.AddRootPackage("パッケージファイルのパス");

            var obj = new asd.TextureObject2D
            {
                Position = new asd.Vector2DF(100.0f, 100.0f),
                Texture = asd.Engine.Graphics.CreateTexture2D("テクスチャのパス"),
            };
            asd.Engine.AddObject2D(obj);

            while (asd.Engine.DoEvents())
            {
                asd.Engine.Update();
            }

            asd.Engine.Terminate();
        }
    }
}

このツールを使って作成したファイルを使うには + を付した行のどちらか1行を書き足すだけでOKです。
実際にリソースを読み込んだり表示(再生)したりする部分に変更は必要ありません。

修正パッチとは

ゲームソフトに限らずソフトウェアがリリースされた後になって、修正や改良をしたい点が出てくると思います(無いに越したことはないですが)。ユーザも手もとにあるコピーに対してその修正や改良を適用するために配布するものが修正パッチです。ゲームソフトの場合は、プログラムだけでなくリソースの追加や置き換えを伴なうことがあり、かといって上記のようなパッケージファイルを丸ごと置き換えようとすると、今度は配布するパッチのサイズが大きくなってしまいます。

パッケージは複数追加できる

AddRootPackage(やAddRootPackageWithPassword)ではなにも1つのパッケージしか追加できないわけではありません。リソースを修正や追加することを見越してあらかじめ複数のパッケージを読み込んでおくことができます。

パッケージからリソースを複数読み込むサンプル
(省略)
            //もとから同封するパッケージ
            asd.Engine.File.AddRootPackage("パッケージファイル1のパス");
            //あとから追加するパッケージ
            asd.Engine.File.AddRootPackage("パッケージファイル2のパス");
(省略)

無いなら無いで無視されるだけなので、パッケージファイル2を最初から読み込もうとすることに特に問題はありません。
またリソースを修正する場合、パッケージ以下の相対パスが一致していてもあとから追加したパッケージに含まれているほうが優先されるので安心です。

おわりに

Altseed に関する情報を少しでも豊富にしようと思い書かせていただきました。
Altseed を使ってみようという方の一助となれば幸いです。

以上、AmusementCreators Advent Calender 2016 2日目 wisteria の記事でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0