Monthly Archives: 1月 2016

[Ice Breaker] ゲームオーバー画面など

制作中の氷割りゲームIce Breakerの進捗日誌です。

今日実装した機能は以下の通り。

  • 最大ダメージ越えでプレイヤーが砕け散る表現の実装
  • ゲームオーバー画面の実装
  • ステージ名表示画面の実装
  • ステージ中盤部分の建物配置

プレイヤーがダメージを受けるとプレイヤーの色が紫→青→水色→緑→黄→橙→赤と変化していきます。
ダメージが最大値を超えると以下のように砕け散り、ゲームオーバーとなります。

icebreaker-clash

ステージ名表示画面は以下のようになりました。

icebreaker-stagename

uGUIのデフォルトフォントで表示しただけなので、あまり見栄えがしないかもしれません。
余力が出来たら改良したいです。

ステージ中盤部分の建物配置はまだ途中です。
ある程度綺麗に配置できたらスクリーンショットとして公開したいと思います。

[Ice Breaker] ステージ1の開始部分だけ実装

今日もIce Breakerの制作をずっと行っていました。

進捗は以下の通り。

  • プレイヤーの操作バグ修正
  • ダメージエフェクト実装
  • 障害物・氷のオブジェ配置


やっとまともにプレイできるようになったため、開発途中の動画をアップロードしました。

完成時には動画とは全く異なる様相になる可能性があります。
ステージ1は氷の城にする予定です。
配置物はすべて氷で出来ています。

透明なオブジェクトを重ね重ねに配置しているため、一部描画順序がおかしくなっているものがあります。
ここら辺についてはどこかで時間を取って見直しする必要があります。
具体的には場面場面で描画の優先度を調整する作業です。
かなり地道な作業になりそうです。

氷の向こうに透けて見えるオブジェクトが屈折する様子などは綺麗に描画できています。
これは有料アセットのお陰です。

まだまだクオリティに難ありな状態ですが、どこかで妥協してVer1.0として早めにリリースできたらと考えています。
Ver1.0では2ステージ構成にする予定です。

[Ice Breaker] ステージ1実装中

Ice Breakerの開発はプロトタイプ実装から本実装に移りました。
現在はステージ1を実装しています。

icebreaker-stage1

ステージの全オブジェクトを氷にしました。
体当たりで壊れるブロックや回転する障害物なども実装しました。
フレームレートを変更しながらのテストプレイも行っています。
現在は高フレームレートになるとプレイヤーの動きがカクカクになる謎のバグが発生しているため、まともなプレイができる状態ではありません。

プレイができるようになったら動画をアップする予定です。
連休中にはアップできると思います。

のんびりなペースでゲーム制作を進めていますが、完成系には着実に近づいているので、この調子進めていきたいです。

[Ice Breaker] Perfect Iceを適用

制作中ゲームIce Breakerの進捗です。

今日はUnityのPerfect Iceというアセットを10$で購入し、マテリアルとして適用してみました。

icebreaker-fall

地獄絵図ですね・・・(笑)

なかなかリアルに氷を再現できていて気に入っています。
氷による背景の屈折もきちんと表現できています。

シェーダーを自作することも考えましたが、時間の無いときは有料のシェーダーを購入して適用していくのが手っ取り早いですね。
お金は掛かりますが、開発時間を買えることを考えると妥当なのかもしれない・・・とさえ考えてしまいます。

ゲームシステムの構想は固まったため、明日より本格的にステージの制作に入ろうと思います。
開発中の動画も公開できればと思ってます。

[Cursattle] ゲームシステム試作中

今日は構想中のゲーム「Cursattle」のプロトタイプを試作しておりました。
ゲームシステムの概要はこちらに記してあります。

今回実装したのは以下の通り。

  • 自機の操作部分
  • 自機からショットを撃つ

以下、プロトタイプの成果物です。

cursattle-prot

グラフィックがとてつもなくショボいですね(笑)

マウスを動かすと自機が動きます。
右ボタンでドラッグすると自機が進行方向に向きながら移動します。
左クリックでショット発射です。

今日の成果物は以上です。
上記プロトタイプの制作時間は約30分程度です。

操作性については満足いくものとなりました。
このまま本番の実装に使いまわせそうです。
操作の細かいチューニングはこれから行っていきたいと思います。

本番の実装はIce Breakerをリリースしてからになる予定です。

[Unity] バウンディングボックス(AABB)について調べてみた

ゲームにおいて衝突判定を行う際、AABB(軸平行境界ボックス)を定義して無駄な計算を削減するアルゴリズムがよく用いられます。
AABBはxyzの各軸に平行な直方体です。
軸に平行であるため、当たり判定の計算が非常に軽くなります。

aabb-area

複雑なメッシュ形状に対する衝突判定を行う際、メッシュ形状を包含するAABBを事前に定義し、まずAABBとの衝突判定(軽い計算)を行います。
AABBと衝突している場合のみ、メッシュ形状に対する衝突判定(重たい計算)を行います。
こうすることで、AABBに衝突しなかった場合は重たい計算は行わずに済みます。

このアルゴリズムはUnityのColliderでも使用されています。
Collider.boundsがワールド座標のAABBを表しています。

このAABBを次のスクリプトを用いて表示してみました。

実行結果は以下の通り。

uniaabb1

オブジェクトを回転すると、リアルタイムにバウンディングボックスが更新されます。

uniaabb2

内部処理の詳細は不明ですが、回転するたびにバウンディングボックスの再計算が行われていると思われるため、パフォーマンスへの影響は確実に出るでしょう。
拡大縮小時も同様です。
実際にどれくらい影響が出るかについては後日調査しようと思います。

[Ice Breaker] 効果音実装中

ゲーム「Ice Breaker」の制作状況の日記です。
前回の記事の続きとなります。
進捗はあまり芳しくありませんが、僅かながら進んだため記録に残します。

昨日今日行った作業は以下の通り。

  • 自機が障害物に衝突したときの効果音を鳴らすようにする
  • BGMを鳴らす
  • 氷が砕け散った後消えるようにするエフェクト実装

作業時間はトータルして1時間程度です。
平日は作業時間が限られるので、いかに考えた結果を素早く実装に落とし込めるかが勝負になりそうです。

今週中にはゲームシステムの仕様をある程度固めてステージ制作に突入する予定です。
制作時間に余裕があればクオリティの向上にも力を入れたいですが、今回は諦めます・・・
まずは最低限の完成系に持っていき、余力があればバージョンアップの都度グラフィックや操作性など改善していきたいと思います。

[Cursattle] 構想中のゲームの紹介

今日はゲーム制作の進捗が上がらなかったため、構想中のゲームについて紹介しておきたいと思います。

ゲームのタイトルは「Cursattle」です。
PCのカーソル同士が戦う全方位シューティングゲームです。

タイトルはCursorとBattleを組み合わせた造語です。
カーソルの戦いという意味になります。

以下、ゲームのイメージ図です。

curesattle-plan

図は自機(カーソル)が敵に向かってショットを発射している様子を表しています。
完成後のグラフィックは図とは全くの別物になる予定です。

このゲームのウリは、マウスやタッチパッドのみの入力装置でプレイできるところです。
キーボードは一切必要ありません。
同時に、初心者でもすぐに馴染める様な操作性を目指しています。

実装に入るまでもう少々時間を要しますが、現状のアイデアとしてここにアウトプットしておきます。

[Ice Breaker] 操作性のチューニング中

少しずつでも良いので、ゲーム制作の進捗を書いていこうと思います。
今年から制作開始したゲームIce Breakerですが、まだプロトタイプの制作であれこれしている状況です。

ice-breaker-control

今日はプレイヤーの操作性についてあれこれ試行錯誤していました。
今まではキーボードの十字キーで移動させることを考えていました。
しかし、この方法だとどうしても操作がディジタル的になってしまうのが欠点です。

そこで、マウスの移動による操作に切り替えました。
すると、プレイヤーの移動量を微調整できるので、操作性がだいぶ向上したような気がします。
文面だけでは伝わりにくいのが難点ですね・・・

今日は用意できませんでしたが、後日制作途中の動画をアップロードできればと考えています。
まだ制作開始したばかりで完成まで時間がかかるかもしれませんが、少しずつ頑張っていこうと思います。

[Ice Breaker] 新ゲームの制作開始

今年も2日目を迎えました。
元旦より、気晴らしに新作ゲームのプロトタイプを試作しておりました。

ice-breaker-prot

プレイヤー(スクリーンショットの球体)が氷塊に体当たりで破壊しながらステージを進んでいくゲームです。
ゲームシステムの詳細はまだ模索中ですが、体当たりするとプレイヤーと氷塊両方がダメージを受け、プレイヤーのみ徐々にダメージが回復する方向で考えています。
プレイヤーが飛び道具で氷塊を壊すのも考えましたがありきたりになってしまうため、体当たりのみでいこうというのが現時点での最善策です。

ゲーム名は「Ice Breaker」としました。
直訳すると氷を壊す物・人という意味になります。
転じて緊張した雰囲気を和らげる人という意味も含みます。

本ゲームでは氷を壊すのはもちろん、体当たりで緊張感・ストレスを発散できるような仕上がりにしようと考えています。

まとまりがなくなってしまいましたが、定期的に制作状況について報告していけたらなと思います。