Wineで吉里吉里を動かしてみようという実験です。Wineはx86ベースのUnix系OS(Linuxとか)でWindowsプログラムを動かせるようにするものです。
KNOPPIX3.4日本語版で割と手間をかけずにWineが動きそうなのでお手軽に実験してみました。
KNOPPIX installer to Windows2000,XPを使ってとりあえずWinXPのNTFS上にインストール。
起動するとNTFSはリードオンリーでマウントされるので、とりあえずおもむろに吉里吉里の実行可能ファイルを指定して実行。初回の起動だと~/.wineが無いからだと思いますが、設定プログラムが起動するので何も考えずにボタンを押して設定完了。
で、なんとなく動くんですが、「マウスカーソルが画面の中央に固定される」「Layer.drawTextで日本語が化ける」という問題が出てきました。
「マウスカーソルが画面の中央に固定される」はDirectInputがらみだとおもいますが、これは吉里吉里側に-wheel=messageを指定して回避。
「Layer.drawTextで日本語が化ける」のはよく理由がわからんのですが、~/.wine/config で [version] セクションで "Windows" = "win2k" として win2k として振る舞わせるようにしたうえ、-aamethod=res4 (あるいはres8) のオプションを吉里吉里側につけて回避できました。
スクリーンショットでは -dibtype=dibsect を指定してありますがこれはあんまり効果がありませんでした。
ちなみに文字描画が異様に遅いです。あとトランジションが異様に重いときがあります。
終了時にフリーズしたりサウンドがならないなど、まだまだ安定性では問題がありますが、とりあえずこんなもんでも動きましたということで。まだ「吉里吉里はx86系CPUのUNIX系OSでも動くんです!」と豪語するには至れません。
それにしても、数年前にもWineで試した事があったのですが、そのときは起動すらしませんでした。今回はFate/stay nightの体験版も動きました。感激モノですね。
2004年5月13日の日記にも書きましたが、ブラーなどを実装するに先駆けて新しいブレンドモードを作り込んでいますが、ブレンド関数だけを数えたら、このモードの追加だけでざっと50個ぐらいあるのでなかなか大変です。新しいブレンドモードは従来のpixel alphaと区別する為にadditive alphaと呼んでいます。レイヤタイプは従来のltTransparentに対してたぶんltAdditiveAlphaになると思います。
画像演算用の低レベルな関数群は内部でtvpglと呼んでいるのですが、このモードの追加で約180個の関数群になりました。いつのまにやらこんなに。といってもほとんどはC言語で記述されていて、そのうちのよく使う物だけがMMXなどを使ったアセンブラでも記述され、CPUの種類によって使い分けられるようになります。
あとはこれを吉里吉里上で使えるようにします。
たぶん二つのα合成モードがあることは混乱を招くので、ちゃんとドキュメンテーションをしないとなりません。とにかく大変なのでbeta2が出るのは相当先のような気がします。
まあ、いたちごっこであることは分かっていますが、技術的には面白いところが多々ありますね。
前にも述べましたが、XP3暗号化の需要があることは認識しています。
吉里吉里SDKはそれ自体はXP3の暗号化・復号化機能を持ってませんが、外部のDLLを使用することにより暗号化することができるようになっています。サンプルはソースの/base/win32/plugin_kit/xp3filterにあります。
あ、前述の通り2.23 beta 1でインターフェースが変わりますのでご注意ください。サンプルは非常に単純な物です。耐クラック性はほとんどありません。技術的興味により作った、もうちょっと耐性があるのは手元にあります。興味のある方はご一報ください。ただ、これはこれでキワモノなので、すべての方に公開という訳ではありません。
xp3は展開ソフト(Susieプラグインなど)が広く出回るようになってしまいました。xp3のフォーマットを変えたり暗号化機能を追加したとしても、一時的に「展開可能なソフトが無い状態」ができるだけであって、いずれは展開ソフトは出回ってしまいます。吉里吉里はソースが公開されているのでなおさらです。
一応xp3には「プロテクト」フラグというのがあって、「展開しないでくれ」という意志を示すことができるのですが、意志を示すことができるだけで実質は暗号化するわけでもありません。ただそこで展開しようとすることは著作者の意図と反しているわけですから、展開の行為自体は立場的に弱いはずです。
それ以上の保護を望めば外部DLLでの暗号化ということになります。暗号化の方法は自由に変えられる機構になっているのでオリジナルの形式のxp3を作れます。展開しようとする側は、著作者が意図して暗号化したものを無理矢理展開するわけですから、いっそう立場的に弱くなります。まあ、これも気休め程度にしかならないですけどね。
暗号化による保護はかなり難しいということを、制作者側としては認識しておく必要があります。そもそも無法者の世界では法が通りませんので、法的に有効だと思われる手段でも意味が無いことが多いです。有償であれ無償であれ「公開する」ってことは公開することのリスクも当然背負うってことですね。あらかじめそのリスクまでを計算に入れて制作をしなければなりません。吉里吉里みたいに公開をリスクと思わないような方向性もありますけど。
もうそろそろ、出そうかなと思ってます。
変更点はXP3(吉里吉里ネイティブのアーカイブ形式)暗号化インターフェースが変わったぐらいです。