スポンサーサイト

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

CTF News! #38 プレネールさん by Sushi_roll

テーマ情報

制作者
Sushi_roll
トップメニューアイコン系統
立ち絵、メインカテゴリのみ
テーマモデル
日本一ソフトウェアの看板娘(?)のプレネールさん
要求システムソフトウェアバージョン
Custom Firmware [6.39]
公開時期
2011年07月16日
公開場所
PSP Customize Forum • トピック - 【6.39】プレネールさんで、CTF

変更箇所一覧

プレネールさん プレビュー

特徴

プレネールさん トップメニュー

このテーマはツェネダ氏の公開しているCTF制作キット『SimpleBase1.2_type1_638.ctf』をベースに作られいる。このテーマで面白いと思ったのはコンテンツ情報表示画面でのアニメーションと本体情報でのおみくじだ。

コンテンツ情報表示画面

フォトやミュージックコンテンツ等の情報表示画面では非常に手間の掛かったアニメーションが用意されている。18x18計324(px)を一つ一つPlane要素で着色して拡大(約15倍)することでひとつの絵を表している。更にこれはRecolour要素により色を変更して一定時間おきに違う絵に変化する。

欠点としては、既にツェネダ氏が以下のように指摘している。

ドットのアニメーションはとても面白いと思います。リソースも節約できますしね。
ただオブジェクト数がちょっと厳しいかも。その辺りのバランスが難しいところです。

300を超える膨大なオブジェクト要素とそれら全てを制御するアニメーション要素の組み合わせによりCPUの処理速度が追いつかず動作遅延(場合によってはフリーズ)を引き起こす場合がある。VSH MenuでCPU Clockを上げることである程度改善はできるがそれも限度があるので、上手く加減してやる必要があるだろう。

おみくじ

『設定』 → 『本体設定』 → 『本体情報』を開き△ボタンを押すとおみくじが引けるようになっている。用意されているくじの種類は『大吉』、『吉』、『中吉』、『小吉』、『末吉』、『凶』の6種類。これらは△ボタンを押すタイミングによってどれが出現するかが決定される。

この仕組みはButton要素とobject2キーワードを使ったFireEvent要素にある。まず、6種類あるおみくじの一つずつに対応したアニメーションとそれをonContextMenu属性に割り振ったButton要素を用意する。

Page[name="page_psp_config_information"]>
Button[name="button_0"]+
Button[name="button_1" onContextMenu="anim:2omikuji1"]+
Button[name="button_2" onContextMenu="anim:2omikuji2"]+
Button[name="button_3" onContextMenu="anim:2omikuji3"]+
Button[name="button_4" onContextMenu="anim:2omikuji4"]+
Button[name="button_5" onContextMenu="anim:2omikuji5"]+
Button[name="button_6" onContextMenu="anim:2omikuji6"]

同じイベントハンドラを持つ要素が複数ある場合、先に記述された方が優先される。このままでは△ボタンを押しても何も起きない(イベントハンドラを持たないButton[name="button_0"]が有効になっている)ので、これとは別に用意されたButton要素をどれかひとつ選択するための仕組みを用意する。それがAnimation[name="anim_omikuji_shuffle"]だ。

Animation[name="anim_omikuji_shuffle"]>
FireEvent[target="object2:foo"]+
Delay[time="3"]+
FireEvent[target="object2:bar"]+
Delay[time="3"]+
FireEvent[target="object2:baz"]+
Delay[time="3"]+
FireEvent[target="anim:anim_omikuji_shuffle"]

上記はAnimation[name="anim_omikuji_shuffle"]を簡略化した形を示す。このアニメーションはバックグラウンドで常に実行され続けており、3/1000(0.003)sec毎にobject2キーワードを持つFireEvent要素によりfoo, bar, bazが参照されている。このとき参照されているのはonContextMenuイベントハンドラを持つ6種類のButton要素で、つまり有効なButton要素の切り替えを行っているということだ。

ボタンを押すタイミングを無視すればおみくじの確率は、『大吉』、『凶』が10%でそれ以外が20%になるように設定されている。記述順序や数にバラツキを与えればこの確率は容易に変動させることができる。

あと、細かいようだけどメディアプレーヤーヘルプ画面がキットのものから変わってないのが気になった。

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