突然Sims3解析日記:作成Lotの使用パッケージ確認ツールの作成

Author:試作E型

唐突ですが、Sims3のLot建築の関連で、

・今、自分で作成したLotで、どのEPを使ったのかいまいち覚えていない
・人が作ったLotなどで、何のEPが使われているかが分からない

と言うことが発生したりしています。
手前は確認をすれば良いだけなのですが…

MTSなどにアップする場合、自分で「使用しているEP/SP」にチェックを入れないといけないため、
特に使用しているEP/SPが増えると、確認が大変になります。
目視で確認するにも、見えづらい位置に置いてしまっていて確認がしづらい、と言うことも発生し得るわけで。

しかし、それをチェックするツールは、現時点(2014/07/16)では存在せず、
1. ゲーム内での目視確認(建築途中であれば、パッケージごとのフィルタ機能で絞りこみは可能)
※「うっかりフィルタの初期化を忘れていたりして、別なものを入れている可能性」はある。
2. .sims3pack形式のファイル(テキストとバイナリのコンポジット)をUTF-8対応エディタで開き、直接文字列を読んで確認する
※エディタによっては、.sims3packの先頭17バイトがバイナリデータのため、うまく読みこめない可能性がある
の二つの方法しかありません。

前者1.の方法で確認を取っている人は多いと思いますが、これだと「他人の作ったものを確認する」ことができません。
(うっかりミスなどのチェックが不能)

そこで、2.の方法を自動で行なえるツールとして、Sims3 Dependency Checker(s3dc)を作ることになりました。
まぁ、JavaとEclipseの使い方のお勉強も兼ねて、と言うのが副次的な目的なのですが(何

さて、ツールとしての説明を以下に記載しておきます。
以下からダウンロードできます。
Sims3 Dependency Checker(s3dc) == Download(Dropbox)

・システム要件
JRE(Java Runtime Edition) 1.7以降がインストールされているシステム。OSについては不問(のはず)です。
レジストリや一時ファイルなどは一切使用しません。

・使い方
1. s3dc.jarファイルを起動。(大抵はファイルをダブルクリックでOKのはず)
2. 左上のボタンをクリックするとファイル選択ダイアログが開くので、調べたい.sims3packファイルを選択する
3. ファイルが無事開けたら、.sims3pack形式のXMLデータ、及び依存関係を表示します
4. 終了したい時は右下のQuitボタンから。

S3DC_Sample.jpg
SSです。使い方の参考としてどうぞ。

・アンインストール方法
s3dc.jarを削除するだけです。

色々と機能は少なかったり足りなかったりしますが、「テスト版」として使える段階にはなっています。
(今後実装したいが、現在のところ制限されている機能)
・CC/Storeコンテンツ有無の確認
・ファイルのドラッグ&ドロップへの対応
・大量のCC(おおよそ100種類程度が目安)が使われているファイルに対する問題への対応

とりあえず使い方の解説はここまで、以降は内部についてのお話です。


以下、プログラムの中のお話です。

■ファイル仕様について
ファイル仕様はここ(SimsWiki)
で公開されているものを参考にしています。
先頭17バイト分がバイナリ、後にXML形式のデータ、さらに後ろにバイナリデータと言う構成になっています。
今回はXML形式の部分だけ欲しいので、先頭のバイナリ部分に記述されている、XML部分のサイズを取得してから読み込んでいます。
なお、バイナリ部分は8ビット送りのリトルエンディアンで格納されている様子です。

■依存関係について
依存関係のあるパッケージなどは、
エレメント配下のエレメントにリスト化されています。
…参考URLではUnknownとなっている要素なのですが(汗

<Dependencies>
 <Dependency>依存しているパッケージ等のGUID</Depenedency>
 …
</Dependencies>

依存関係として記載されるものは、大別すると以下の種類があります。
1. EP
2. SP

3. Storeコンテンツ
4. CC

1.と2.については、GUIDが判明しており、かつパッチバージョンによらず固定のため、チェックは楽です。
各種値は以下の通り。(2014/07/16調べ)

#EP


0x050cffe800000000050cffe800000000 BaseGame
0x062d99d500000000062d99d500000000 WorldAdventure
0x062d99de00000000062d99de00000000 Ambition
0x062d99ed00000000062d99ed00000000 LateNight
0x062d9a0200000000062d9a0200000000 Generation
0x062d9a0300000000062d9a0300000000 Pets
0x062d9a0400000000062d9a0400000000 ShowTime
0x062d9a0500000000062d9a0500000000 SuperNatural
0x062d9a0600000000062d9a0600000000 Seasons
0x062d9a0700000000062d9a0700000000 University
0x062d9a0800000000062d9a0800000000 IslandParadise
0x062d9a0900000000062d9a0900000000 IntotheFuture

#SP

0x062d9b0f00000001062d9b0f00000001 HighEndLoft
0x062d9b1000000001062d9b1000000001 FastLane
0x062d9b1100000001062d9b1100000001 OutdoorLiving
0x062d9b1200000001062d9b1200000001 TownLife
0x062d9b1300000001062d9b1300000001 MasterSuite
0x062d9b1400000001062d9b1400000001 KatyPerry
0x062d9b1500000001062d9b1500000001 Diesel
0x062d9b1600000001062d9b1600000001 70’s80’s90’s
0x062d9b1700000001062d9b1700000001 Movie

(s3dc betaで実装しているのはこれのチェックまでです)

特徴としては、
a. 上位16バイトと下位16バイトが同一
b. EPならば末尾が”0″、SPならば末尾が”1″
が挙げられます。

3.と4.については、それぞれ固有のGUIDを持っているため、簡単にはチェックできません。
ただし、EP/SPの特徴から、逆に
c. 上位16バイトと下位16バイトが異なる(同一になる確率は1/(2^64)程度。(!))
となり、上位16バイトと下位16バイトを比較して、同じでなければStoreコンテンツかCCと言うことになります。

さらに、別要素のチェックも入るのですが、
d. CCならば、エレメントの欄に、エレメントと同じ値が存在する
e. Storeコンテンツならば、同じ値は存在しない
と言うことも調査できています。

※実験に使ったもの
・Priusパック(Exchangeにフリーで公開されている)
・無料で入手できたころのストアオブジェクト数点
・TSRにて配布されている、適当なCCの窓

以上により、とりあえず使用されているEP/SPの一覧を抽出することができるようになりました。
また、本来はLot用を考慮していたのですが、実際は.sims3pack形式であればどのカテゴリでも調査可能です。
(XML部分のフォーマットが一緒なので)

一応もうちょっと作り込みたいとは思うのですが、どうしようかと言う所。

試作E型

試作E型 について

名前:イナムラ試作E型:通称エイ
製造年:MCMLXXXIって覚えてる
誕生日:D型とおんなじ。だって双子だもん。
性別:やや中性的な♂
主な特徴:D型と対を成す、一卵性双生児として誕生した半生ギツネ
。 特技はお絵描きと猫の物まね。のどを鳴らす音には定評アリ。
ボディを付け足す際に頭をぶつけたのか、何故か乱視になってしまった。
他にも夏風邪を引いて体重が6kg落ちて戻るのに10年以上かかったり、口の中とか耳とか瞼とかにメスを入れられたり、ボディの悩みがやたらと多い。

現在はD型と共に生活をしながら、特技のお絵描きをどう伸ばすか、あと体力をつけて人との交流を取り戻したいと画策中。

“突然Sims3解析日記:作成Lotの使用パッケージ確認ツールの作成” への1件の返信

  1. アバター試作D型(ダイ)

    記事投稿お疲れ様です。

    また朝早く起きるようになっちゃったため、こんな時間にコメントを。

    プログラム的には実行形式ファイルへラッピングをかけておけば、もうちょっと体感的な使い勝手が向上するのかな?と思ったり。
    素の.jarファイルだと、何も知らない人だと「実行形式ファイルかどうか判別できない」という問題を抱えそうなので・・・
    (今回のバージョンでそこまで気にするかどうかは別として。)

    とりあえずデータ内に入っているパッケージの種類が性格に特定できるようになるのは、パッケージ制限を日常的にかけている我々にとっては結構有効に機能するんじゃないかと期待しております。

    現在のExchangeの体たらくを見ている限り、出来ればこういうツールを使うか、自力で確認する感覚を身につけてくれる人が少しでも増えてくれればよいなぁ~と思わずにはいられません。

    返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

three × 3 =

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)