林檎の芯を見るな
https://scrapbox.io/files/69069b4e0df4b187b66773ad.png
開発メンバー
プログラム・イラスト・サウンド: HIKKY1317HIKKY1317.icon
1. プレイ動画・スクリーンショット
https://scrapbox.io/files/6906c6c2593d42c164524c8c.mp4
妖精ちゃんカワ(・∀・)イイ!!HIKKY1317.icon
開発ほぼ一人でしんどかったHIKKY1317.icon
2. ゲームについて
林檎🍎を守る
林檎🍎の「芯」が食べられたらゲームオーバー!
↓zipファイル
↓Github
3. プレイ方法
ゲーム概要
プレイヤー(妖精)を操作して、上空からくる敵(鳥)🐓を魔法陣ではじきながら、草むらの中にある林檎🍎を守るゲームです。
ゲームの目的
草むらの中の林檎🍎が完全に食べられないように守る(「芯」が食べられるとゲームオーバー。)
できるだけ長く生き延びる。
操作方法
操作 説明
Wキー/↑キー 上に移動
Aキー/←キー 左に移動
Sキー/↓キー 下に移動
Dキー/→キー 右に移動
Spaceキー 魔法陣展開
Escキー ゲーム終了
敵(鳥)🐓について
敵(鳥)🐓は、一定間隔で上から出現します。
敵(鳥)🐓は、30秒に1回金色になります。
敵(鳥)🐓はプレイヤー(妖精)の出した魔法陣に当たると跳ね返って逃げます。
敵(鳥)🐓に林檎🍎が食べられていきます!(透明化して食べられたように見える、リアルな破壊表現があります。)
https://scrapbox.io/files/6906d155ae6738e6ebb281f4.pnghttps://scrapbox.io/files/6906d15e1a22ae7c34c7847e.png
プレイヤー(妖精)について
プレイヤー(妖精)は、WASDキー/↑←↓→キーで移動できます。
プレイヤー(妖精)は、Spaceキーで魔法陣を展開できます。
プレイヤー(妖精)は、金色の鳥を跳ね返すと覚醒します!(゚∀゚)キタコレ!!
プレイヤー(妖精)は、覚醒すると波動砲を出します!
プレイヤー(妖精)は、覚醒すると輝き、スピードが速くなります!やったね!
https://scrapbox.io/files/6906d17763cb6da5032113c8.png
草と林檎🍎
草は10段階の奥行きを持つ層構造で、風に合わせてゆらゆら動きます。
中央の位置に林檎🍎が配置されています。
林檎🍎がすべて食べられると、スコアやゲームオーバー画面が表示されてタイトルに戻ります。
https://scrapbox.io/files/6906d1ed586db290fe0b3a18.pnghttps://scrapbox.io/files/6906d193875a1062baa44e7c.png
ゲーム終了
Escキーでウィンドウを閉じて終了します。
4. プレイのコツ
敵(鳥)🐓は、林檎🍎を狙うため、林檎🍎の周りを守るように動くと効果的です。
覚醒した妖精はかなり強いです。積極的に金の鳥🐓を跳ね返しましょう!
林檎🍎が食べられると、だんだん形が崩れていくので、見た目でも状況がわかります。
林檎🍎の「芯」を守るように動きましょう。
5. 開発上の工夫
プレイヤー(妖精)のアニメーション表現
傾きと向きのスムーズな補間
移動速度に応じたテクスチャ選択
https://scrapbox.io/files/6906db0fca0309feb3e22df4.pnghttps://scrapbox.io/files/6906d17763cb6da5032113c8.pnghttps://scrapbox.io/files/6906db1de84839b10607f602.pnghttps://scrapbox.io/files/6906db28c42a4b89a6f8b11b.pnghttps://scrapbox.io/files/6906db2e4ecd7bd1d31096e8.png
プレイヤー(妖精)の位置のキラキラ✨エフェクト
構造体と配列による管理
ランダムな動きとライフ設定
ゲームオーバー演出の綿密なアニメーション
多段階のフェーズ管理
物理的な動きのシミュレーション
BGM・SEの活用
状況に応じたサウンド制御
ループ再生の適切な設定
カスミソウ
https://scrapbox.io/files/6906db65de68d9258b01a35d.mp3
Poisson Disk シェーダによる柔らかい草の質感
背景の草の配置
深度による表現
林檎🍎のダメージ処理
複数テクスチャとシェーダによる多層表現
林檎🍎を5層のテクスチャとして管理
https://scrapbox.io/files/6906dab23353e9404da3acdd.pnghttps://scrapbox.io/files/6906dacb875a1062baa46f47.pnghttps://scrapbox.io/files/6906dad5441dc7efc090dde0.pnghttps://scrapbox.io/files/6906daddc96062839417cbb5.pnghttps://scrapbox.io/files/6906dae63f128c5992c4b452.png
林檎🍎の芯に向かって深く食べ進められていく様子の表現
ピクセル単位の当たり判定と破壊
敵(鳥)🐓がターゲットに到達した際、PerlinNoiseを用いた多角形領域を生成し、現在の層のImageデータを直接透明化
敵(鳥)🐓の賢いターゲット選択
左右端のピクセル優先
林檎の中心からの水平距離が遠いピクセルを優先してターゲットに選ぶ
左右交互・ランダムな選択
鳥が林檎の外側からまんべんなく啄む自然行動のシミュレーション
リソース管理
初期ファイル存在チェック
ゲーム状態の明確な管理
Enumによるシーン管理
コードの可読性の向上
敵の出現頻度と速度の動的な調整
時間経過による難易度の上昇
スポーン感覚
速度
金の鳥🐓によるゲームプレイへの変化
スコアが一定値を超えるたびに金の鳥が出現
金の鳥を魔法陣で撃退するとプレイヤー(妖精)が覚醒状態に!
敵の行動に置けるカーブ飛行の導入
単調な直線移動ではない
ターゲットへの移動方向にサイン波を用いたカーブを加えている
リソースの事前読み込みと最適化
アセットの一括読み込み
テクスチャのミップマップ設定
ダイナミックテクスチャの使用
プレイヤー操作性のきめ細かな調整
水平移動とホバリングの分離
プレイヤーの移動と、上下方向のサインカーブによるホバリングアニメーションを分離して計算している
移動操作とは独立してプレイヤーがふわふわと浮遊する。
境界条件処理の徹底
画面外と地面の制限
敵の自動削除
敵が溜まりすぎたら自動で消す
画面外の敵も自動で消す
定数定義によるコードの読みやすさと調整のしやすさ
マジックナンバーの回避
林檎🍎の層数など
敵(鳥)🐓の残像表現
過去位置の記録と描画
操作説明画面によるプレイへの配慮
動的な風による草のゆらぎ
実際の林檎🍎を取り込んだリアルなグラフィック表現
ウィンドウタイトルを設定して、ゲームの内容や雰囲気が分かるようにした。
複数の操作方法に対応し、キーボードやゲームパッドなど、どの入力デバイスでも遊べるようにした。
斜め方向の移動量を調整して、全方向の移動速度が均等になるようにした。
重ならないようにランダム配置することで、草の自然な分布を実現した。
マウスを使わないゲームではカーソルを非表示にして、没入感を高めた。
6. 課題・未完成の部分
7. 発表会以降の更新
その他任意の項目1
その他任意の項目2
コメント・質問欄(自由に記入)
草がちゃんと動いているところが細かい! Reputeless.icon
どんなふうに削れるんだろうvoidProc.icon
もしりんごがリアルに削れて言ったらすっごい見た目良さそうめんつゆ.icon
シェーダーすごいですね!楽しみですnasatame.icon
↑ 草やりんごがリアルな分、削れる演出への期待が高まっている Reputeless.icon
↑それな。リアル路線は高コストですぞBNS山口.icon
絵がリアルだと、音もリアルを求められるし…BNS山口.icon
りんごのディティールすごいkurehajime.icon
妖精カワイイ!めんつゆ.icon
りんごが削れていく感がすごいですね!
林檎🍎の食べられ方をこだわりました!HIKKY1317.icon
妖精の傾き方とががとても自然だったりグラフィックにこだわりを感じました!面白いですhaito.icon
動画の23万点を目指しましたが目前で全部齧られたー! リンゴ自体が障害物になっていて良い味付けになっていると思いました!ニシャス.icon