Project Anthem(TCストライカーズ)

ぷろじぇくとあんせむ公式サイトであり雑記ブログ。当サイトはリンクフリーです。

ゲーム開発

 さて、開発はとろとろと進んでおります。前回も前々回もそうでしたが、全体に影響のある演出をつくるのにもっとも時間がかかります。ステージ1ができると2〜5は案外早いんですけどね。

 今作は機能限定版をフリー、完全版をsteamで出したいと考えています。Steamの審査期間と難易度について知りたいところですね。以前よりは審査も楽になったそうですが、その分群雄割拠というところでしょうか。

 
 まだ動画公開するほどはできていませんので限定公開です。自分の考えを整理するためにUPしています。アドバイスもらっても多分実装しない。


 

 今回はパワーショットというハイパーのようなシステムを導入しています。ショットレベル最大のときにコマンド入力で発動します。コマンド(上60フレームため、下、ボム)。発動すると180フレームの間強力なショットが出ます(パワー180消費)。180フレーム経過時にショットレベル最大かつボムおしっぱでパワーショットを継続することができます。ミスるとボムが出てしまいます。格ゲーっぽくなりました。

 昔の格ゲーは超必殺コマンド難しかったですよね。だけどそれをだせるようになると俺すげええとなって気持ちいいものです。昔友人と餓狼をしていた際にブレイクスパイラルを決めた時は相手も”おおー!”と盛り上がってました。


 なんのためにこれつけたかというと、退屈な前半ステージをさっさと終わらせるためです。慣れてくると前半ステージはただの作業になってしまいます。リスクを負いつつも速攻して後半に気力を残すという戦略性を広げるための手法です。


 まあそんな感じで作っています。今回は加算ブレンドを覚えたので派手になると思います。

 

 念願の画面揺れを実装した。以下の記事を参考にしている

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12104674977

 この記事ではプレイヤー(ゲーム画面)も揺れるようにしている。そこはおいおい判断いていきたい。


 




UIクラス
 
 public void VIBRATION()
        {
            count++;
            var yureX = rn.Next(-3, 3);
            var yureY = rn2.Next(-3, 3);
            if (count % 4 < 2)
                Position = Position + new Vector2DF(yureX, yureY);
            else Position = new Vector2DF(0, 0);
        }


ステージシーンにて
 

 if(count<300)
            ui.VIBRATION();

 
 のようにしてuiをゆらす。
  



しかし、このままでは画面揺れ終了時にUIがズレたままになっている。

そこで、位置を戻す関数を作り画面揺れ終了時に実行することにした。



UIクラス
 public void VIBRATION_RESET()
        {
           Position = new Vector2DF(0, 0);
        }


ステージシーン
 if (count == 300)
                ui.VIBRATION_RESET();



 

 これでOK。



メモ:エフェクトランダム。パワーショット。自機モーション



素材提供:ピエールさん(Effekseer)

STGではおなじみのボス撃破時スローになる仕様を実装しようと思う。

爆発開始後このように記述

if (count ==  2) G.slow = true;
if (count == 50) Engine.TargetFPS = 30;
if (count == 80) Engine.TargetFPS = 15;
if (count == 95) G.slow = false;



G.slowて何?
→メインメソッドにおいてこのように処理落ち処理をしているのだが、その処理をするかしないかのグローバル変数


  while (Engine.DoEvents())
            {
                if (!G.slow)
                {
                    if (Engine.CurrentFPS >= 45) Engine.TargetFPS = 60;
                    else if (Engine.CurrentFPS >= 30) Engine.TargetFPS = 45;
                    else if (Engine.CurrentFPS >= 20) Engine.TargetFPS = 30;
                    else if (Engine.CurrentFPS >= 10) Engine.TargetFPS = 20;
                    else Engine.TargetFPS = 10;
                }



処理落ち処理をオフにすることで強制的にスローモーションにすることができた。

しかし、メインメソッドの分岐が増えてしまったのが懸念である。


メモ
画面揺れ;インターフェイス;判定点;

 こうやってタイトル画面(仮置き)を作成した。あとでテキストのフォントも変えようとした所、テキストが表示されなくなった。


1



 あちゃー


2


 素材提供 瀝青炭さん



 どうやらフォントを変更する際に初期化していたのが問題だったようだ。


  for (int i = 0; i < 7; i++)
            {
text[i] = new TextObject2D();
                text[i].Font = Font2.difficulty;
                text[i].Position = new Vector2DF(textXpos - 20 * i, textYpos + 50 * i);
            }


 初期化でオブジェクトの登録情報も初期化されるというのは言われてみれば当たり前だが、そこは初期化されないと思い込んでいた。
 初期化部分を消した所、想定通りの表示になった。



先日あるメールを頂きまして。Steam運営なのかどうなのかはわからないのですが、Steamでの販売を勧めるとともにSteamでの販売方法等丁寧に書いてありました。

 
 とても光栄なことですし、いずれは、という思いもあります。

 しかしながら販売となると結構問題があるわけですね。

 
  1. 手続きの煩雑さ
  2. ゲーム外に関する設定
  3. 権利関係

 1.手続きの煩雑さ

 海外サイトなので英語がネック。英語で色々やりとりするのはトラブルのもと。代行会社もありますがそこの審査に通るにはまたハードルがあがります。自力で登録できれば販売開始自体は早いでしょう。


 2.ゲーム外に関する設定

 実績やらムービーやら。Steamの既定でムービーを用意しなくていけないっぽい。マニュアルもtxtファイルではなくなんらかの方法でゲーム内に埋め込まなければならない。


 3.権利関係

 もっとも厄介なのがこれ。フリー素材は個人利用可能・商用相談というのも多い。相談、となると面倒だなーと思いますね。はっきりと価格を提示してくれたほうが払ってスッキリだけど、素材作成者さんも趣味でやってる方が殆どで売るほうが面倒って場合も多いしね。


 
 以前から興味はあったのでTCストライカーズ3はSteam頒布という方向で作成しよう。素材を使う都度、権利関係を明確にすればあとで困らないだろうし。全部の素材を自製ってのはこういうところで楽。
 



  
 メール抜粋
 Also are other japanese hentai game sold on steam in a censored version but with the option to restore the content with a patch. 

 

↑このページのトップヘ