スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
公開: --年--月--日, カテゴリ: スポンサー広告

CTF News! #33 Ika musume theme by ツェネダ

TSENEDA(ツェネダ)氏により制作されたCTFであるIka musume themeがendlessparadigm.comで公開された。相変わらずの飛びぬけた完成度だが今回特筆すべきところは他にある。スレッドに記載されているcontrollable animated objectという内容がそうで、一部の追加オブジェクトをユーザーが動かすことができるようになっている。

テーマ情報

制作者
TSENEDA(ツェネダ)
トップメニューアイコン系統
立ち絵
テーマモデル
侵略!イカ娘
要求システムソフトウェアバージョン
Custom Firmware [5.50],[6.35],[6.37],[6.38]
Homebrew Enabler [6.20]
公開時期
2011年05月16日
公開場所
endlessparadigm.com(英語)の[Release] Ika musume theme

変更箇所一覧

Ika musume theme プレビュー

特徴

前作のGoldenWitchと比べると雰囲気は大きく異なり(作品が違うので当然だが)、とても楽しげで賑やかなものに仕上がっている。テーマとしての完成度は折り紙つきで、毎回何らかの新要素が仕込まれているが今回も非常に面白い仕掛けが用意されていた。

ユーザーが操作できるオブジェクト

別表1: ミュージックカテゴリ内でのコンテンツ情報表示
初期配置操作中
ミュージックカテゴリ内での情報表示 ミュージックカテゴリ内での情報表示

これこそが今回の新要素であり最大の特徴である(と言い切ってもいいだろう)、特定の箇所において追加されたオブジェクトをユーザーが操作することができるようになっている。

別表1で示すのはミュージックカテゴリ内でのコンテンツ情報を表示させたときのスクリーンショットで、左側の画像がコンテンツ情報を表示させたときのもので追加オブジェクトは画面左下で固定されその場で足踏みするようなアニメーション動作をくり返している。

ここで、十字キーの←→または△ボタンを押すことで、この足踏みイカ娘が動き出す。→を押せば右方向に突っ走り、←を押せば左方向に突っ走る。△ボタンは飛び跳ねるような動作でゲソ。

このようなユーザーの操作を引き金としてイベントを設定されている箇所は確認した範囲では以下に示すとおりだ。

  • USBモード
  • 設定カテゴリ内の各種設定メニュー
  • 『設定』→ 『本体設定』内のイカに示す項目
    • 本体情報
    • バッテリー情報
    • PSP™について
  • コンテンツ情報表示画面全般
  • ヘルプ画面全般

それぞれに異なったアニメーションが用意されており楽しませてくれるだろう。実際にどのような内容になっているのかはユーザー自身で確認されたい。

さて。CTF制作者にとって気になるのは仕組みについてだろう。詳しく掘り下げていきたいところではあるが、この記事の本題から逸れてしまうので簡単に書いておく。詳細はいつか別記事にて扱う予定。

情報表示に関連する箇所ではIList(Info List)要素の固有属性であるunknownRef属性により十字キーでの操作を、IList要素の存在しない箇所についてはButton要素を追加してunknownRef属性とunknownEvent属性を利用してアニメーションを実行させている。実際に確認してみるとunknownRef23="anim:aika01_move_right"などという分かりやすい名称を付けてくれているので理解はそう難しくないと思う。

カテゴリアイコンの反転

別表2: カテゴリごとに反転表示されるアイコン
設定カテゴリへフォーカスエクストラカテゴリへフォーカス
設定カテゴリへフォーカス アンフォーカスで反転した設定カテゴリアイコン

カテゴリを適当に移動すればすぐに気付くがフォーカスしたときにアイコンが変化するようになっている。これはLittle Busters!というテーマで使われていたものと同じ仕組みになっている。

設定カテゴリのアイコン

この仕組みはアイコンの全体を見れば何となく解るだろうか。一つの画像の中に上下に分割して2種類のアイコンが描かれている。中心から上側がアンフォーカス、下側がフォーカス状態で表示されるアイコンだ。これは、フォーカス状態の時に反転して表示させるためのもので、アイコンの反転は表示倍率をマイナスにすることで実現している。なお、この表示倍率はpaf.prxファイルで設定されている。

それに加え更に、フォーカス中のY軸線上の座標も変更されている。こちらの値はvshmain.prxファイルで設定できる。

Page[name="main"]を利用した設定カテゴリの軽量化

参考画像: 設定カテゴリのメニューリスト
設定カテゴリ内のメニューリスト背景

sysconf_plugin.rcoファイルのObjectTree要素にはPage[name="main"]という子要素を持たないPage要素が存在する。このPage要素は子要素として存在するオブジェクト要素を一部を除いたほぼ全てのPage要素へ反映(表示)するという特徴がある。これを利用することで約40近いメニューのそれぞれにオブジェクトを追加することなく表示させることができるようになる。

<!-- Page[name="main"]への追加例 -->
<Page name="main" unknownInt0="0x111" onInit="event:native:/OnInitMain" onCancel="nothing" onContextMenu="nothing" onActivate="nothing">
    <!-- イカのPlane要素は全てメニューリスト要素背景用に追加されたもの -->
    <Plane name="ika01_optbg01" posX="156" posY="102" objectScale="0" redScale="0.5" greenScale="0.5" blueScale="0.5" alphaScale="0" width="0" height="0" posUnknown="0" scaleWidth="0.5" scaleHeight="1" elementScale="1" iconOffset="0x2" onLoad="anim:aika01_optbg01" image="image:optbg" unknownInt18="0xffff"></Plane>
    <Plane name="ika01_optbg02" posX="156" posY="102" objectScale="0" redScale="0.5" greenScale="0.5" blueScale="0.5" alphaScale="0" width="0" height="0" posUnknown="0" scaleWidth="0.5" scaleHeight="1" elementScale="1" iconOffset="0x1" onLoad="nothing" image="image:optbg" unknownInt18="0xffff"></Plane>
    <Plane name="ika01_optbg03" posX="156" posY="34" objectScale="0" redScale="0.5" greenScale="0.5" blueScale="0.5" alphaScale="0" width="0" height="0" posUnknown="0" scaleWidth="0.5" scaleHeight="1" elementScale="1" iconOffset="0x2" onLoad="nothing" image="image:optbg" unknownInt18="0xffff"></Plane>
    <Plane name="ika01_optbg04" posX="156" posY="34" objectScale="0" redScale="0.5" greenScale="0.5" blueScale="0.5" alphaScale="0" width="0" height="0" posUnknown="0" scaleWidth="0.5" scaleHeight="1" elementScale="1" iconOffset="0x1" onLoad="nothing" image="image:optbg" unknownInt18="0xffff"></Plane>
    <Plane name="ika01_optbg05" posX="156" posY="-34" objectScale="0" redScale="0.5" greenScale="0.5" blueScale="0.5" alphaScale="0" width="0" height="0" posUnknown="0" scaleWidth="0.5" scaleHeight="1" elementScale="1" iconOffset="0x2" onLoad="nothing" image="image:optbg" unknownInt18="0xffff"></Plane>
    <Plane name="ika01_optbg06" posX="156" posY="-34" objectScale="0" redScale="0.5" greenScale="0.5" blueScale="0.5" alphaScale="0" width="0" height="0" posUnknown="0" scaleWidth="0.5" scaleHeight="1" elementScale="1" iconOffset="0x1" onLoad="nothing" image="image:optbg" unknownInt18="0xffff"></Plane>
    <Plane name="ika01_optbg07" posX="156" posY="-102" objectScale="0" redScale="0.5" greenScale="0.5" blueScale="0.5" alphaScale="0" width="0" height="0" posUnknown="0" scaleWidth="0.5" scaleHeight="1" elementScale="1" iconOffset="0x2" onLoad="nothing" image="image:optbg" unknownInt18="0xffff"></Plane>
    <Plane name="ika01_optbg08" posX="156" posY="-102" objectScale="0" redScale="0.5" greenScale="0.5" blueScale="0.5" alphaScale="0" width="0" height="0" posUnknown="0" scaleWidth="0.5" scaleHeight="1" elementScale="1" iconOffset="0x1" onLoad="nothing" image="image:optbg" unknownInt18="0xffff"></Plane>
</Page>

これはユーザーには関係はないが制作者にとっては非常に参考になるだろう。

なお、実際にはこのまま真似すると幾つか不具合があり、思い通りに扱うには他に条件があるが、それについては別記事にて扱う予定。

また、この設定カテゴリの背景には、恐らくはテーマ制作者でもなかなか気付けないであろう恐るべき仕掛けが仕込まれている。しかし私はこの(SlideOut要素の)仕組みを全く理解できていないので説明は割愛。

感想など

『Littel Busters!』、『Persona3 Theme』、『GoldenWitch』、『Ika musume theme』とツェネダ氏はこれでDynamic CTFを4作公開されたことになるが、毎回他の追随を許さぬ完成度と独創性を兼ね備えた素晴らしい仕上がりとなっている。

たまに目にする意見で「やり過ぎていて使いにくい」というものがあるが、このテーマでは基本的に『やり過ぎ感のあるアニメーション』はユーザーが普段操作しないようなところに限定されており、肝心なところで邪魔をするようなことは無い。もしかしたらそれらに気付くことなく物足りないと感じるユーザーも居るかもしれない。ここまで詰め込んでおいてそう感じさせることの難しさは、一度でもテーマ制作に取組んだことがあるなら想像することができるだろう。

このテーマは一部を除けば前作のGoldenWitchより仕組みは理解しやすいと思うので制作者にとってもとてもいい資料にもなるだろう。

また、賑やかなテーマが好きなら『Littel Busters!』か『Ika musume theme』を、静かなテーマがお好みなら『Persona3 Theme』、『GoldenWitch』が用意されているので、CFWユーザーで、もしツェネダ氏のテーマをこの記事で初めて知ったのなら、ぜひ手にとってみることをお勧めする。きっと新鮮で面白い体験をすることができるだろう。

ツェネダ氏のその他のテーマ紹介記事

公開: 2011年05月18日, カテゴリ: CTF News!