続き:《同じアニメーション、3つの技術スタックで実装したらどう違うの?》

WebGL による二次元じゃんけんゲーム。

ルールは普通:

でも面白いのはここ:

負けると服を脱ぐ。

ええ、それだけです。単純かつストレート。


きっかけは「スプライトシートを研究したかった」

最初はゲームを作るつもりなんてなかった。
ただ研究したかっただけ:

こんな技術要素。
それで考えたんです:「実際に使える場面がないと?」

そして思い付き:

じゃあ、二次元脱衣じゃんけんにすればいいと。

そしたらプロジェクトが暴走し始めた。


このプロジェクトで一番大変だったのはゲームロジックじゃない

じゃんけんのルールはシンプルすぎる。
本当に大変だったのは:服のレイヤー管理
キャラクターは「1枚の完成した画像」ではなく:

重ね続ける。


「脱衣」の正体はレイヤー管理

プレイヤーが勝った:

コンピュータが勝った:

聞こえるのは簡単。
実際は山のような問題にぶつかる:


例えば「ベース画像が一瞬見えてはいけない」

これは特に重要。
もしこうすると:

古い服を先に消す
新しい服を後で追加する

その一瞬ベース画像がチラ見えする。
見た目がすごく変になる。
なので後で:reveal カバーロジックを使うことにした。

新しいレイヤーが即座に上に被さる。
極力避けたい:

「裸が1フレーム映り込む」

プロジェクト自体は不真面目に見えるけど
少なくとも技術的には美しくありたい。


WebGL はここで本当に心地いい

このプロジェクトは最終的に WebGL で実装した。
理由はシンプル:レイヤーが多すぎる。

しかも:

GPU が得意なことと完璧に合致。
DOM でやってたら、要素検査で服を剥がれる可能性もある🥵


Atlas は本当に良い文明

プロジェクトの大部分は atlas で構成。
つまり:大きな画像を小さく切り分ける。

メリットはいくつか:

  1. ロードが少ない:PNG を何十枚もリクエストしない。
  2. 管理しやすい:全素材が一箇所にまとまっている。
  3. WebGL が大好き、GPU はまさに「1枚のテクスチャを繰り返しサンプルする」のが得意。

デバッグツールまで作った

これは後から一番便利だったと思った部分。
なぜなら:スプライトの位置調整が本当に地獄。

特に:

x
y
w
h
z-index

全部手入力だと発狂する。


なので devtools を直接作った

できること:

一気に快適になった。


このプロジェクトで「フロントエンドゲーム」を再定義した

ブラウザは今や信じられないほど強力。
Canvas2D、WebGL、requestAnimationFrame の組み合わせで。

十分に作れる:

軽量なギャルゲーもいける。


おわりに

このプロジェクトの本質は技術実験、ただ実験の方向性がちょっと不真面目なだけ。

でも確実に:

を徹底的に練習できた。

しかも:

「ネタプロジェクト」で技術を学ぶのは、TodoListを書くより圧倒的に楽しい。

オンラインで遊ぶ:https://iajue.github.io/CanvasGame/undressing/index.html

もし彼女を覚えていたら:《ネットの速さの違いについて》
もう一度彼女にネタをやらせた。(ps:赤井心、ニックネームはハッチャマ、YouTubeで活動する日本のバーチャルYouTuber、所属事務所はhololive)

图 92

著作権表示

著者: MoeJue

リンク: https://ja.moejue.cn/posts/332/

ライセンス: クリエイティブ・コモンズ表示-非営利-継承4.0国際ライセンス

この作品は、クリエイティブ・コモンズ表示-非営利-継承4.0国際ライセンスに基づいてライセンスされています。

検索を開始

キーワードを入力して記事を検索

↑↓
ESC
⌘K ショートカット