やってるゲームとかの雑記
ここ最近はくらいスプライトをちみちみ作っています。
くらいスプライトは必須スプライトとも呼ばれていて、MUGENキャラを作る上で
避けては通れない+一般的にモチベが起きづらいとされている部分ですね。

まあ大体くらいモーションに関してはやってはいけないこととかを基準に考えていくと
大体モーションもテンプレートなので何も考えずにやるには楽な部類かなーという感もあり。
作業できる日で1日1枚ぐらいという非常にスローペースですがぼちぼち進めて
上段くらい/下段くらい/しゃがみくらい/ふっとびモーション開始~たたきつけられまで進んで
残りはダウン(KO)/ダウン中くらい/起き上がり/気絶/投げられ/垂直やられとかその辺。

a_201404302041061c8.png
a_201404302041116a8.jpg
くらいスプライトのSSなのに見切れてる!
スポンサーサイト
きのうちらっと書いた「Googleアドセンスがポリシー違反で停止されてるのに気づいた件」の続き。

・もともとこのブログではページ左の最下部にAdsと表示した欄を作り、アドセンスの広告を出してた
・2013年8月に突然MUGENキャラ製作のエントリに対して警告が出ており、ポリシー違反として停止。
・ポリシー違反の内容は「ユーザーにこのページのコンテンツと誤認されると判断」

…んで、とりあえず「Ads」と書いてあった欄に「スポンサーリンク」と表示し、停止したというメッセージにあった
「停止への申し立て」の欄から

・Ads→スポンサーリンクの書き換えを行った事
・そもそも違反例として挙げられたエントリでは違反行為を行っておらず
 (記事の本文には広告を入れていないので違反するわけがない)、他に違反する心当りがない

という旨のメッセージを作成・再審査を要求したところ先ほどメールが届いており、

>お客様
>プログラム ポリシーに準拠していただくために、サイトに変更を加えていただき、ありがとうございます。
>midorinobiotop.blog.fc2.com を慎重に確認させていただいた結果、このサイトへの広告配信を再度有効にいたしました。

・・・^^;
対応が非常に速いのは助かるんですが、そもそもの問題として
「ページ下部左隅に表示されている広告をコンテンツだと思うやつがいるのか?」っていう点と、
「その上にある文言を修正しただけでOKされるようなものなのか?」っていう点がすごい疑問です。
まあ広告配信を再度有効にしてくれるだけでもとてもありがたいことではあるのですが…。

「これは広告です」という表示なしにアドセンス広告を貼ってるページを見ることがあるのですが、
そもそもなぜ今回停止されたのか、そしてOKだったのかというのはわからずじまい。
閲覧数はそれほど多くないにしろ、4年間で広告収入として1万円もらえる程度に
運用してたGoogleアドセンス(ページ左部分の広告)。

また現金化できるのは4年後ぐらいだろうな~と思ってしばらく放置していたら、
去年の8月ごろにそもそも広告配信が停止されているという案件に先ほど気付き。

その広告配信停止の理由が

「Google 広告を紛らわしい方法で掲載することは禁止されています。
 最適なユーザーの利便性を保つため、Google 広告とサイトのコンテンツは明確に区別する必要があります。
 これにはたとえば、スクロールしなければ見えない位置にコンテンツが押しやられ、
 コンテンツと Google 広告が区別しにくくなるレイアウトなどが含まれます。」

・・・え?
そもそも、本文に広告とか入れてないし、左側の広告欄だけだし…。何が?

添えられていた実際に違反があったページの一例はこのページ
・・・いや、ますます意味不明ですが。

とりあえずページ左部分の広告タイトルを変更して再審査を要求したけど、
「ある日いきなりブログのエントリにおいて『違反』がありましたので停止します」とか言われても
意味不明かつこっちがわとしては何の対策も打てないし…なにこれ。
MUGENキャラクター用のエフェクト作成の話。

キャラクターのスプライトを作るのも大変ではあるけど、それ以上に困るエフェクトの作成方法。
昔のドット絵しかスプライトがなかった時代は一つ一つ手書きしてたらしいですけど、
昨今の事情を考えるとエフェクト素材を作るのも大変(というか無理に近い…)という感じで。
もちろん、工夫すれば手書きを元にスプライトが作れたりはするんですが。

んだもんでちょこちょことエフェクトが作りたい時の話とか。
まず大前提として、「とにかく金を掛けたくない!」というところを諦めてしまえば
ParticleIllusionを買うなりAEを買うなりして一発で作れるようになるんですが、
他にもどうにかする手段があったりなかったりするのでちょこっとメモ書き。

フリーのツールだと『Prominence』がとてもエフェクト製作に便利です。
このツールはパーティクル(粒子)を生成してエフェクトを作れるというもので、
今風(やや語弊のある言い方ですが)のエフェクトを簡単に作れるツール。

ゲーム制作者のための講座と素材とツールのサイト-藤宮翔流のひきだし-


見たまま、エフェクトを任意のパーティクル出力で作れますので、欲しい素材に合わせて
パーティクルの形を選んで出力するだけ~…なんですが、デフォルトの画像だけだとちょっと物足りないので
フォトショップのブラシを引っ張ってきて画像を作り、パーティクルとして設定することで
簡単にちょっと豪華なエフェクトを作ることができます。

「ちょっと待って!?結局フォトショいるやん!?」と思いがちですが、
重要なのはGIMP(フリーの画像エディタ)はフォトショのブラシがインポートできるという点。
コンバートの手間はありますが、フォトショブラシ→GIMPにインポート→Prominenceで出力…というふうにすれば
ちょっとヒットスパークが作りたい、属性っぽいエフェクトが作りたい程度の需要は充分満たせる事と思います。


他には、Aviutlの拡張編集機能を使う事でエフェクトを作るという手段もあります。
Aviutlはご存知の通り元々は動画編集ツールですので、元となる画像が一枚あれば
大変動的なエフェクトを製作・出力することができます。
ココらへんの話は詳しく書くとまた長くなりそうなので需要があるなら別の機会に~。
基本システム周りとかちょろちょろとメモ


[基本操作]
使うボタンは2つ
DiveボタンとKickボタンのみ(レバーも使用しない)

02.png

・DIVE(ダイブボタン)
空中に飛び上がる(ダイブ)。
キックは空中からしか繰り出すことが出来ないため、敵の攻撃を避けると同時に攻めにも必要な動作。
キャラクターによって性能が異なっており、高度・スピードなどに違いがある。

・KICK(空中でキックボタン)
空中からキック攻撃を仕掛ける。
キックが命中するとそのラウンドを取得可能(ガードなどは存在しない)。
キャラクターによって性能が異なっており、様々なモーション・特性のキックがある。

・KICKBACK(地上でキックボタン)
後ろに飛び退いて相手のキックを避ける。
キックバックで敵のキックを避けられたら大きな反撃のチャンス。

[基本システム]
01.png

・キックメーター
攻撃を仕掛けると上昇していくゲージ

・キックファクター
画面下に表示されている足ゲージがMAXになると自動的に発動するパワーアップ。Xファクター。
発動中はキャラクターが赤黒く光り、性能がアップする。Xファクター。

・テクニック(空中/地上)
全てのキャラクターには2種類のテクニック(特殊技)が設定されていて、
空中はAの青いゲージ、地上はGの緑のゲージを消費して使うことができる。

3.png

・ヘッドショット
頭(キャラクターによりくらい判定は異なる)にキックを受けると発生。
次のラウンド開始時~、キックメーターが黄色くなり暫くの間キックが遅くなる。
不利な状態でラウンドが始まるため、連続してヘッドショットを取られないように気合の入れどころ。
(連続ヘッドショットは「ダブルキル」・「マルチキル」になるが特に意味は無い)

・ドロー
タイムアップ寸前になると画面上に赤いラインが表示され、タイムアップの瞬間に
赤いラインにより近かった方のラウンド取得となる。
完全にドローの場合はジャッジメントにより勝敗が決定される。

・ラウンド
1ラウンド20秒、5本先取。
5連勝すると"八百長検知機能"が表示されるが特に意味は無い。
(元ネタはとある大会での八百長関連なので特に知らなくても問題なし)


[キャラクター]
※キャラクタープロフィールはDiveKickのwikiより引用・和訳。


■Dive
Dive.png
西フィラデルフィア育ち、Kickの双子の弟。
問題を起こし、母親にUncle-Senseiのもとに送られ、ダイブキックを始めた。
勝利の為の完璧な角度の研究に余念がなく、彼の熱心な修行は着実に成果につながっている。

見た目の通り、元ネタはあのキャラ。キックの角度も標準的(あの技)。
(A)TerMinal Velocity :落下速度を早め、DIVEから早く着地することができる
(G)Parabolic:前方向にDIVEすることができる


■Kick
Kick.png
西フィラデルフィア育ち、Diveの双子の兄。
問題を起こし、母親にUncle-Senseiのもとに送られ、ダイブキックを始めた。
芸術的なキックのワザマエをもち、ダイブキック経験を音楽キャリアにつなげようと考えている。
地元の女の子の方に興味があり、隙があればSenseiの訓練をサボる方法を考えている。

Diveと同じくオーソドックスな性能のYN兄弟が元ネタのキャラ。
(A)NewAngle:相手に奇襲をかけられる通常よりもはるかに速いDiveKick。
(G)PartyStarter:近くの敵を数秒間麻痺させる


■Kung Pao
Kung Pao
DiveKickの存在はDownWorldと呼ばれる異界にも知られている。
Kung Paoはその王国の代表者で、彼女の強さ・忠誠心・指導力に比類するものはなかったが
彼女の邪悪な父『TheodorKhan』と彼のカラフルなニンジャ軍隊によって収奪された。
反体制勢力として戦っていたが、その最中異次元の穴に落ちてしまう。
彼女が着地した先はこの次元であった。仲間たちと自分の世界を救う方法を探すため戦う。

設定・見た目ともモータルコンバットが元ネタ。嬉しくないパンチラ。キックは横方向に強い。
(A)DimensionBreak:ClackKickで発生させた次元の裂け目に瞬間移動することができる。
(G)ClackKick:DimensionBreakに使用する次元の裂け目を設置する。

■Mr N
mrn.png
Uncle-Senseiは彼を敗者復活戦に送っていただろうが、Mr.Nは自分に有利な判定を出すように
膨大な賄賂を贈り、Senseiのキャリアを終わらせた。
審判団がこの不正に気づくのは遅すぎ、大会自体はノーコンテストとなる大混乱を起こした。
Senseiは翌年の参加費を払うことが出来ず、強制的に引退せざるを得なかったのである。
Mr.Nは彼の親友であるDiveKickのスーパースターDustinWeinburgerの尻馬に乗り、
しばしばトーナメントにおいて不正行為を行うために多額の賄賂を贈っている。

元ネタはスト4のルーファス+実在のGUILTY GEARプレイヤー。
彼のバックストーリーは実在プレイヤーに浮上した疑惑を元にしている。
(A)Marneto:空中でボタンを押しっぱなしにすることで短時間浮遊することができる。
(G)GTFO:後ろに向かって走り、敵の攻撃を回避する。

[特殊]
・SecretDoubleJump:
Marnetoを出した時、キックボタンを押しっぱなしにしダイブボタンを押し直すと二段ジャンプができる

・NeckPillow
最初に受けたヘッドショットを無効化し、通常ヒット扱いにする。
一度使うと外れる。

BkM4wyXCAAABBTO.png 
BkOUpxiCYAEdH3v.png 
前、後ろステップとジャンプ周りの実装。

前ステップは単に前方向へのステップ、特に無敵とかなしなので細かい話はなし。
バックステップは後ろ方向に無敵8Fとかなり強い気がしますが、まあ事前の設計通りなのでとりあえずこれで…。

BkSMs9SCcAAf-2y.png 
BkROuuKCUAAi7rw.png 
ジャンプ関連は二段ジャンプなしの普通のジャンプ。
エフェクトも全部自前で実装したんですが、
「MUGENデフォルトの状態だとジャンプからの着地時に出る埃(砂煙)」の消し方がわからず、
教えてもらいました。

以下、教えていただいた内容の覚書。



MUGENデフォルト状態で勝手に発生する埃には
・MakeDustステコンを使っている(State 106、バックステップの着地ステートなど)
・physicsがAで、MUGEN側で自動着地をさせている場合

の2種類が使われており、これに対処しないと消すことができない。

1,MakeDustステートを使わないようにする
MakeDustによって発生させられているホコリエフェクトに関しては単に消せば良いだけなので簡単な話。
ただし、キャラのcnsの中に書いていなくても「バックステップからの着地」などを自前のcnsに
一切書いてないと勝手にcommon側のが読まれ、ホコリが出てしまうので
自分のキャラ側に106ステートを作ってMakeDustを消したものにするかnullステコンにしてしまう。

2,physics=Aを全部消して全部physics=Nにする
デフォルトでphysics = Aになっているステートをphysics = Nに書き換える。
この状態だとPhysics = Aの自動重力や自動着地が働かなくなるので、自前でステコンを追加して
重力と着地処理を行わせる。

[Statedef 50]
type = A ;こっちはtypeなのでAのまま
physics = N ;←ここをAからNにかえる

[State 50, 重力]
type = Gravity ;AからNに変えた事で自動計算されなくなった重力計算
trigger1 = 1


[State 50, 変数設定]
type = VarSet
trigger1 = Time = 0
sysvar(1) = 0 ;ジャンプの方向判断、吹き飛び時の速度保存にSysVar(1)が使われている

[State 50, アニメ変更]
type = ChangeAnim
trigger1 = Time = 0
value = ifelse((vel x)=0, 41, ifelse((vel x)>0, 42, 43)) ;ココらへんはcommonと一緒。速度でアニメ変更

[State 50, アニメ変更]
type = ChangeAnim
trigger1 = Vel y > Const720p(-8)
trigger1 = SelfAnimExist(anim + 3)
trigger1 = anim >= 41 && anim <= 43
persistent = 0
value = Anim + 3 ;ココらへんもcommonと一緒でアニメを方向に合わせて切り替える用の記述。

[state 50,着地ステート変更]
type = Changestate
trigger1 = Vel Y>0 && Pos Y>=-Vel Y ;地面に接触した判定
value = 52 ;ステート52(着地用ステート)へ飛ばす。着地ステートはcommonと一緒(必要に応じて変更)


他の方の書いたCNSとかチラチラカンニングしてとりあえずこんな感じ。

a_201404011848516b5.png

旧verと同じ移動速度0.9で作ってるんですが、スプライトがでかい影響か前よりも速く感じます。
それはそうと、地味ながら足の動きに追従した効果音がなるようになってたり、
2F以上の入力をしないと歩き始めないしきい値を設ける等の試みをしています。

しきい値は一見操作性が低下するように感じていましたが、
コマンド入力(特に回転系とか)の時に立ち状態からコマ投げが出しやすくなるのに有用かな?みたいな。
しきい値自体はジャンプにも実装するつもりです。ジャンプの場合は4Fか5Fぐらいが妥当かな?
製作エントリなのに疑問形ばっかりだけどそんな幹事です。