ひよっこ blog

ゲーム制作について、作ったものや思ったことをつらつら書いていく予定

キーフレームアニメーション byティラノスクリプト

キーフレームアニメーションとは

任意のキーに、座標やスケールなどの指定をすれば、
指定していない部分は勝手に補完してくれるいい感じのアニメ―ジョン。

10秒で2倍に拡大するだけなら、
0秒に1倍、1秒に2倍を指定してあげるだけで、
0.1秒、0.2秒などの間の部分が保管されます。

ティラノスクリプトでは

個人的には3ステップに分けて考えています。

①キーフレーム設定
②再生設定
③実際の要素をアニメーション

私の場合は、①と②はアニメーション用の.ksに記載し、
③だけ、シナリオ部分の.ksに書いてます。

f:id:hiyohiyokko:20160228014751g:plain

今回は↑のアニメーションの例です。

①キーフレーム設定

keyframeの名称はp_animにしておりますが、
ここは任意で好きな名前にしてください。

;▼左右揺れ
[keyframe name="p_anim"]
[frame p=10% x="0" scale=1 rotate="-20deg"]
[frame p=15% x="0" scale=0.9]
[frame p=20% x="0" scale=1 rotate="10deg"]
[frame p=25% x="0" scale=0.9]
[frame p=30% x="0" scale=1 rotate="-20deg"]
[frame p=35% x="0" scale=0.9]
[frame p=40% x="0" scale=1 rotate="10deg"]
[frame p=50% x="0" scale=1 rotate="0deg"]
[frame p=80% x="0" scale=1.1]
[frame p=100% x="0" scale=1 rotate="0deg"]
[endkeyframe]

左右上下の移動がないのですが、
x="0"の部分をx="10"みたいにすれば、移動もつけられます。
縦方向の場合は、y="10"みたいにします。

p=●%の部分が、キーの場所となります。

②再生設定

①キーフレーム設定したものを、
「何秒」で「どのように」再生するかを設定します。

kanimの名称もp_animにしておりますが、
keyframeの名称とバラバラでもOKです。
個人的には間違えにくくなるよう同じにしております。

;音符揺れ_1回
[macro name="p_anim"]
[kanim name="p_anim" keyframe="p_anim" time=2000]
[wa]
[endmacro]

;音符揺れ_繰り返し
[macro name="p_anim"]
[kanim name="p_anim" keyframe="p_anim" time=2000 count="infinite"]
[endmacro]

便宜上[macro name="p_anim"]のように、マクロでくくっていますが、
べつにマクロ化する必要はないです。

count="infinite"を付ければ、繰り返して再生され
付けないと1回きりの再生となります。
1回だけの場合は、[wa]を記載して、再生待ちをしても良いかもです。

③実際の要素をアニメーション

今回は画像ボタンをアニメーションさせます。

button name="p_anim"のp_animは
kanim name="p_anim"のp_animを呼んでいるので、
別の名前にする際は、両方同じ名前にしてください。

;音符の画像ボタン
[locate x=0 y=475]
[button name="p_anim" graphic="frame_note.png" target=*sound01] 
[p_anim]
[s]
*sound01
[cm]
シナリオへ続く。[l][r]
[cm]

まとめ

ちょっとアニメーションするだけで、
結構いい感じになりますね!

既読スキップ機能 byティラノスクリプト

今回はコンフィグのスキップボタン機能を、
既読スキップ機能に変更します。

デフォルトでは、未読も既読も関係なくスキップしますが、
少しの変更で、既読スキップ機能に変えられます。


※コンフィグカスタマイズの記事はコチラ
コンフィグカスタマイズ byティラノスクリプト - ひよっこ blog


下記のURLに既読スキップの方法が書かれていたので、
バージョンによってはそちらを見てください。

システム関係(4ページ目) - ティラノスクリプト 製作テクニックwiki


Config.tjsの中に、;autoRecordPageShowingという記述がなかったので、
;autoRecordLabelを編集しました。

その他は↓の既読スキップ部分に記載されている方法で大丈夫です。
ティラノスクリプトV4.00 をリリースしました。 - シケモクテクノロジー


data\system\Config.tjsの編集

// ◆ ラベル記録 の下にある
;autoRecordLabel = false;を
;autoRecordLabel = true;に変更

data\scenario\first.ksの編集

first.ksじゃなくても、ゲームが始まる前に読み込める場所なら
どこでもいいですが、下記を記述することで、
コンフィグのスキップ機能が既読スキップ機能になります。

;未読スキップオフ
[config_record_label skip=false]

;既読文字カラー
;color部分を任意の色に変更します。今回は限りなく白い灰色
[config_record_label color="0xcccccc" ]


思ったより簡単だったので、記事にするまでもないかと思ったのですが折角なので。
私には難しいだろうなぁと思っていただけに、驚きの簡単さにビビりました。

セーブ&ロードUIの調整 byティラノスクリプト

f:id:hiyohiyokko:20160213002925j:plain

今回は、上の画像のようにセーブとロード画面のUI調整を行います。

デフォルトをどう変更するか

f:id:hiyohiyokko:20160213003058j:plain

何も変更しないとこんな感じなのですが、
個人的に気になったポイントは下の4点です。

・線は白なのに文字は黒なので統一したい
・文字のサイズが小さい
・白い線に対して、文字が中央に来てない感がある
・横長感があるので左右を開けたい

修正するファイル

tyrano\tyrano.css
今回の場合は、cssの変更だけで済みました。

tyrano\html\save.html
tyrano\html\load.html
もっと大きく変えたい場合は、htmlも合わせて修正すると良いです。

htmlのタグの中に、{{:save_date}}
があったので、CSSからsave_list_item_dateを検索します。

とりあえず、下記のように設定すれば、一番上の画像のように表示されます。

/* セーブ時の画面の設定
--------------------------*/
/* セーブデータリスト全体の設定 */
.save_list {
  background-color: rgba( 0, 0, 0, 0.65 );
  display: table;
  table-layout: fixed;
  width: 80%;
  border-top: 1px solid #ccc;
  font-size: 14px;
  font-weight: normal;
}
/* セーブデータの設定 */
.save_list_item {
  display: table-row;
  cursor: pointer;
}
/* セーブデータのサムネイル部分の設定 */
.save_list_item_thumb {
  display: table-cell;
  vertical-align: middle;
  width: 96px;
  border-bottom: 1px solid #ccc;
}
.save_list_item_thumb img {
  width: 100px;
  height: 80px;
}
/* セーブデータのテキスト部文の設定 */
.save_list_item_area {
  display: table-cell;
  vertical-align: middle;
  padding: 0 10px;
  border-bottom: 1px solid #ccc;
}
/* セーブデータの日付の設定 */
.save_list_item_date {
  font-size: 15px;
  color: #ddd;
  display: block;
  padding: 5px 0;
  line-height: 1;
  text-shadow:
		-1px -1px #000,
		1px -1px #000,
		-1px 1px #000,
		1px 1px #000;
}
/* セーブデータのテキストの設定 */
.save_list_item_text {
  padding: 7px 0 0 0;
  font-size: 20px;
  color: #ddd;
  display: block;
  line-height: 1.3;
  height: 40px;
  overflow: hidden;
  text-shadow:
		-1px -1px #000,
		1px -1px #000,
		-1px 1px #000,
		1px 1px #000;
}

もうちょい詳細

background-color: rgba( 0, 0, 0, 0.65 );

背景に0.65(35%透明)の半透明黒色を置きます。
これによって、白い文字を見えやすくします。

  width: 100px;
  height: 80px;

サムネイルのサイズ設定ですが、
画面サイズに合わせ、微調整をかけています。

width: 80%;

.save_listはwidth: 100%;で設定されていますが、
これでは左右に余白ができないため、80%に設定。

font-size: 15px;
font-size: 20px;
color: #ddd;

text-shadow:
	-1px -1px #000,
	1px -1px #000,
	-1px 1px #000,
	1px 1px #000;

文字サイズはfont-size
文字色はcolor: #ddd;(ほとんど白色)
文字の縁はtext-shadow:で上下左右に影をつけることで表現しています。

padding: 7px 0 0 0;

CSSの場合、上下の中央寄せはちょっとややこしそうだったので、
paddingで上の部分に余白を作って対応しました。


こんな感じで、ちょっとひと手間加えるだけで、
ゲームにあった色合いとか、雰囲気になるので手軽ですね!

コンフィグカスタマイズ byティラノスクリプト

今回は画面のイメージに合わせて、
ティラノスクリプトでコンフィグの調整を行います。

f:id:hiyohiyokko:20160212002441j:plain

何度か自分でもやってるのですが、何をどこの場所で変更するのか、
毎回忘れて調べているので、基本的な部分をまとめた備忘録的なものです。

コンフィグの表示非表示

コンフィグは.ksにタグを書くだけで、
簡単に表示非表示が切り替えられる。

;コンフィグボタン表示
[showmenubutton]

;コンフィグボタン非表示
[hidemenubutton]

コンフィグの座標を設定

コンフィグへ遷移するボタンの座標も設定できる。

data\system\Config.tjs
Config.tjsファイルにある、下記の部分を修正します。
※今回は左上に設定したいため、どちらも7にしております。

// ◆ コンフィグ(メニュー)機能表示
// セーブ・ロードやタイトルに戻るといった一連の機能を表示するかを指定します
;configVisible = true;  //コンフィグアイコンを表示
;configLeft    = 7     //コンフィグアイコンの左位置を指定できます。-1の場合は画面右下
;configTop     = 7     //コンフィグアイコンの上位置を指定できます。-1の場合は画面右下

コンフィグ関連の画像

tyrano\images\kag

画像の指定を変えたい場合は下記の.jsを修正する。
作った画像を『menu_button_save.png』のように指定すればOK!

tyrano\lang.js

    novel : {
        "file_menu_button_save":"menu_button_save.png",
        "file_menu_button_load":"menu_button_load.png",
        "file_menu_button_message_close":"menu_message_close.gif",
        "file_menu_button_skip":"menu_button_skip.png",
        "file_menu_button_title":"menu_button_title.png",
        "file_menu_button_close":"menu_button_close.png",
        "file_menu_bg":"menu_bg.jpg",
        "file_save_bg":"menu_save_bg.jpg",
        "file_load_bg":"menu_load_bg.jpg",
        "file_button_menu":"button_menu.png"
        
    }

htmlの修正

コンフィグに遷移した際のUIを変えたい場合は、HTMLを変更する。
HTMLとCSSが少しわかれば、簡単な変更はできると思います。

tyrano\html

次の課題

1.セーブとロードのUIが合わないので、ちょっと調整する。→解決
セーブ&ロードUIの調整 byティラノスクリプト - ひよっこ blog


2.既読スキップボタンが、既読も未読もスキップするので、
 既読だけスキップできるように調整。→解決
既読スキップ機能 byティラノスクリプト - ひよっこ blog

モンストのKPI勝手に考察

ミクシィの2015年4~6月期の連結決算は、売上高が500億円、純利益が159億円でしたね。
とても今さらですが、だいたいモンストの数字だとわかるので、勝手にKPIを考察しました。
(KPIとは重要業績評価指標、簡単に言えないけど、売上想定立てたり、想定通り言ってるかチェックするときに重要になるポイントだよ!)

※分かる数字は少ないので、結構あてずっぽです


1日の売り上げ5億!!

3ヶ月(90日)で500億なので、1日5.5億…だけど、さすがに500億すべてがモンストではないとして、
5億にしておきます。これだと3ヶ月で450億となり、9割を占めることになります!

売上高は正式なものなので、ここはだいたい合っているはずです。

MAUは300万くらい?

ひとまず先にちゃんとわかるDL数を。
下記を見ると2週間に1回くらいで100万DLずつ増えてます。
広告費かけてますねっ!1日5億の割にはかけてないかもしれませんが。

【3000万DL】 モンスターストライク ダウンロード数の推移をグラフ化 -

3000万DL全員がMAU(1ヶ月に1回以上ログインするユーザー)とは思えないので、
なんとなく1/10して300万くらいにします。
もう少し高いかなーとも思ったのですが、厳しめにしておきます。

課金率1%とすると、ARPPUは16,000円?

とりあえずMAUにした300万の中で、何名が課金しているでしょうか?

モンストは、あんまりARPPU(課金者の平均化金額)を重視していないみたいだという事と、
ユーザー数がやはり多いという事で1%にしておきましょうか。

1%という数字は、萌え系だったりキャラゲーだったり、
ユーザー層にお金を払いやすい人が多いと低いかなぁという感じですが、
子供や、お年寄りや、ゲームにお金を払う文化がない人がMAUに多いと、
そこまで低くはない数字かなと勝手に思ってます。

では、300万の1%、3000人で1ヶ月5億稼ごうと思えば、
5億÷3000で、約16,000円ですね。

うーん、16,000円はARPPUとしては結構高いです。

とはいえ、払う人は、突き抜けて、それこそ50万100万の世界で払っていると思うので、
月3000円くらいの課金者と平均すると違和感ないかもなーな感じです。

ARPPUって運営が安定しちゃうと大きく変えられないし、
もうちょい低いとしたら、MAUの見込みが低すぎるのかもというくらいです。

所詮は数字遊びさ

MAUも課金率もARPPUも答えは分からないので(分かる立場だったらそもそも言えないので!)所詮は数字遊びでしかないのですが、たまには答えの分からないものを考えて頭浸かってみよう感がありました。

KPI見てないっすよーそれでも売れたんですよーみたいに言う方も居ますが、
個人的には真に受けるのはいかがかなと思っています。
開発時にKPI気にしてない人は多く、タイミングとかもろもろの関係で売れたり売れなかったりという結果があるだけなのではないでしょうか。

逆に、開発時にKPIをかなり気にしている人は、手堅くミドルな売り上げを確保したい印象があります。
大きくチャレンジしない代わりに、しっかり利益を出していくというスタイルも目立たないかもしれませんが、確かに感じられます。

チャレンジも手堅さもどっちも大切だよね!

glinkを変更して画像ボタンに

glinkとは?

ティラノスクリプトで使える、簡単にちょっと飾られたボタンを使用するためのタグです。
選択肢を作る際、いちいち画像に文字を埋め込むと大量の画像が必要になってくるし、
かといって文字だけだと飾り気がなさすぎるため、使って損はないでしょう。

[glink target="j01" text="窓から出る" size=36 width="349" y=116]
[glink target="j02" text="出ない" size=36 width="349" y=219]
のようにすると、下の画像のような表示になります。

f:id:hiyohiyokko:20160129114122j:plain

これはこれでいいのですが、ゲームの雰囲気に合わせたいので、
cssで作られているであろう下の部分を、画像に差し替えたいと思います。

glinkの定義はどこだ!

と思い、glinkでgrep検索しました。

色々引っかかるとは思いますが、kag.tag.jsが怪しいので中を見てみると、

の記述が近くにあります。

次は、buttonでgrep検索です。
大量に色々引っかかるのですが、cssに絞るとそこまででもありません。
tyrano.cssを見ると、.button .black という物があり、試しに消してみたりすると、
連動していることが分かりました。

.buttonで変更する点

元々は下のようになっていると思います。
淵の処理とか(丸くしたり)、文字とボタンの余白を調整しているのが分かりますね。

.button {
	display: inline-block;
	zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */
	*display: inline;
	vertical-align: baseline;
	margin: 0 2px;
	outline: none;
	cursor: pointer;
	text-align: center;
	text-decoration: none;
	font: 14px/100% Arial, Helvetica, sans-serif;
	padding: .5em 2em .55em;
	text-shadow: 0 1px 1px rgba(0,0,0,.3);
	-webkit-border-radius: .5em; 
	-moz-border-radius: .5em;
	border-radius: .5em;
	-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);
	-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);
	box-shadow: 0 1px 2px rgba(0,0,0,.2);
}

なので、バッサリと淵の処理はカットし、
paddingが画像と文字の大きさに合うように調整しました。

.button {
	display: inline-block;
	zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */
	*display: inline;
	margin: 0 2px;
	outline: none;
	cursor: pointer;
	text-align: center;
	text-decoration: none;
	font: 14px/100% Arial, Helvetica, sans-serif;
	padding: 22px 0px;
	text-shadow: 0 1px 1px rgba(0,0,0,.3);
	-webkit-border-radius: .5em; 
	-moz-border-radius: .5em;
	border-radius: .5em;
	-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);
	-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);
	box-shadow: 0 1px 2px rgba(0,0,0,.2);

}

.blackで変更する点

元々は下のようになっていると思います。
文字色だったりグラデーションを変更しているのが分かりますね。

.black {
	color: #d7d7d7;
	border: solid 1px #333;
	background: #333;
	background: -webkit-gradient(linear, left top, left bottom, from(#666), to(#000));
	background: -moz-linear-gradient(top,  #666,  #000);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#666666', endColorstr='#000000');
}

.black:hover {
	background: #000;
	background: -webkit-gradient(linear, left top, left bottom, from(#444), to(#000));
	background: -moz-linear-gradient(top,  #444,  #000);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#444444', endColorstr='#000000');
}
.black:active {
	color: #666;
	background: -webkit-gradient(linear, left top, left bottom, from(#000), to(#444));
	background: -moz-linear-gradient(top,  #000,  #444);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#000000', endColorstr='#666666');
}


なので、ここに用意した画像を入れればいいという訳です。
画像は面倒だったのでtyrano.cssと同じフォルダに入れてあります。

.black {
	color: #d7d7d7;
	background:url(btn_frame.png) no-repeat left top;
}

.black:hover {
	background:url(btn_framer.png) no-repeat left top;
}
.black:active {
	background:url(btn_frame.png) no-repeat left top;
}

結果!

f:id:hiyohiyokko:20160129114044j:plain

想定通りの結果になりました!

実際は画像の置き場所ちゃんとしたり、
そもそもcssの定義も上書きしないほうが良いとは思いますが、
とりあえず良しとしましょう。

夢日記をつけるとこうなる

夢日記は危ない?

夢日記を調べてみると、危ないやら気が狂うなどが出てきますが、
本当にそうでしょうか?

勿論、気が狂いたかったわけじゃないのですが、
高校生の頃美術の課題が多かったため、夢がネタにならないかな。と、
3ヶ月ほど夢日記をつけたことがあります。

睡眠不足に陥る!

枕元にノートとシャーペンを置いて、夢を見たら書くという風にしていたのですが、
最初の方は書く前に忘れてしまうし、頑張って書こうとすると眠りが浅い……

分かったことは、『夢を見よう!』と意識すれば、1日に2、3個は見られるので、
気持ちの問題で覚えていようと思えば覚えていられます。
(3時間毎にアラームとかかけてたので、気持ちというより力技ですが。)

3カ月の睡眠不足は何を生むかといえば、授業中の睡眠と、
なんとなくずっとフワフワする感じと食欲不振ですね。

あと体育で体が動かない動かない。

これだけで、十分に夢日記をつけないほうが良い気がしますね。

夢の質が悪くなっていく!

だんだん、嫌な夢を見ることが多くなりました。
私の夢は色があったり、味があったり、感覚が豊富なのですが、
嫌な夢に定義しているのは、『感覚にリアリティがある』物です。

良く見るもの(見すぎてもう嫌じゃなくなってきましたが)の例では、
何かを吐き続け、喉いっぱいのタオルのような筒を吐くのですが、
シチュエーションより、喉に引っかかる感覚と引っ張ってでも取りたい気持ち悪さが凄いです。

夢日記を書いていた時の方が、嫌な夢の種類が多かったように思います。
単純に寝不足が祟ってそもそも疲れているのと、メモっているので忘れないからでしょうね。

嫌な夢が見たかったわけではないので、これでは本末転倒です。

現実と夢との境が分からなくなる?

期間が短かったからか、私はこの状態を体験しませんでした。

想定できる原因としては、寝不足が悪いのではないかと思います。
1日ふわふわした状態だと、現実のときも意識がはっきりしていないので、
境が分かりにくくなるんじゃないかなぁと思います。

夢日記をつけていようとつけていまいと、あまりに日常に近い夢だと、
本当に起こったことと混同したりしてしまうので、
夢のリアリティ度合によるような気がします。

じゃあどうすればいいのか!

夢日記をつけると、書くのが目的になってしまって睡眠不足に陥る。
睡眠不足に陥ると嫌な夢を見やすいし、体調も悪くなる……

日記をつけなきゃいい!!

すぐメモらないと忘れるような夢はもう忘れてしまって良いと割り切り、
目覚めてふわふわしている状態で、夢で見たことを脳内で反芻します。

このとき、一番記憶に残っていることを軸に反芻しておくと、
記憶にしっかり残り、芋ずる式に他の部分も蘇るので、全てを思いだそうとしなくても良いです。

そして、電車に乗ってるときとか、隙間時間にメモにでもすればいいんですが、
私はもうメモを取らず、たまーに思いだしている程度です。

夢日記をつける際は、自分の体調に気を付けて、
楽しくつけていくのが良いと思います。