Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SPAで作るゲーム制作と技術選定(とこれからのWEB体験の話)
Search
fumi-sagawa
April 20, 2022
Programming
2.3k
1
Share
SPAで作るゲーム制作と技術選定(とこれからのWEB体験の話)
PWA Night vol.38 ~ブラウザゲームの世界〜の発表資料です
https://pwanight.connpass.com/event/242560/
fumi-sagawa
April 20, 2022
More Decks by fumi-sagawa
See All by fumi-sagawa
ChatGPTの使い方と業務に組み込む心構え
sagawa23
0
130
固定されたHowからの脱却 What起点のTransformation
sagawa23
0
250
LLMアプリケーションとアフォーダンス
sagawa23
0
890
ChatGPTとうまくやる方法
sagawa23
1
340
結局のところ いつ、どのAIツールを、 どのように使えば良いのか
sagawa23
5
780
ChatGPTを使う上で注意したい バイアスとフィルタリング
sagawa23
1
730
ざっくりつかむLangChainのメンタルモデル [説明欄にソースあり]
sagawa23
6
1.2k
プロンプトもくもく会ガイダンス.pdf
sagawa23
0
260
Other Decks in Programming
See All in Programming
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
460
Talking to terminals (and how they talk back) (KotlinConf 2026)
jakewharton
PRO
1
160
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1k
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.1k
分析エージェント精度向上における データアナリストの役割
oura_shoya
0
140
さぁV100、メモリをお食べ・・・
nilpe
0
110
Claspは野良GASの夢をみるか
takter00
0
140
Oxcを導入して開発体験が向上した話
yug1224
4
250
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
290
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
220
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.2k
Moments When Things Go Wrong
aurimas
3
120
Featured
See All Featured
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
The browser strikes back
jonoalderson
0
1.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
GraphQLとの向き合い方2022年版
quramy
50
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
250
Music & Morning Musume
bryan
47
7.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Evolving SEO for Evolving Search Engines
ryanjones
0
210
The Spectacular Lies of Maps
axbom
PRO
1
770
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Transcript
SPA で作る とこれからのWEB体験の話 2021/04/20 Wed. @TAMTO ゲーム制作と技術選定 サガワフミヤ
サガワフミヤ/佐川史弥 @fumi_sagawa フロントエンドエンジニア Occupation Company 🏢TAM東京 ゲーム好きです🎮 最近エルデンリングをクリアしました ⼀⽅で積もるBacklogのToDoチケット 僕にゴールデンウィークは訪れるのか
アトリエシリーズはいいぞ。
ある⽇…
👨 TAM⾓⾕さん なんかノベルゲーム作るらしい! ミーティング参加してみて! すごい頼れる
🤔 サガワ 診断コンテンツ的なやつか?
TAM村松さん 99部屋 ⾃由に⾃由に⾏き来する ノベルゲームをやります! ⾳声付き を すごい良いデザインする
None
『HOTELブルーローズ99の部屋』とは 仕様と技術選定 使⽤ライブラリと実装 振り返りとこれからのWeb表現について 1 2 3 4 ⽬次
⽬次 『HOTELブルーローズ99の部屋』とは 仕様と技術選定 使⽤ライブラリと実装 振り返りとこれからのWeb表現について 1 2 3 4
『HOTELブルーローズ99の部屋』とは ブラウザでプレイできる サスペンスノベルゲーム
『HOTELブルーローズ99の部屋』とは ブラウザでプレイできる サスペンスノベルゲーム リアル脱出ゲームで有名な SCRAPさん作
None
企画 デザイン 実装 本⽇の内容
企画 デザイン 実装 尺がないので 今⽇はこちらだけ 本⽇の内容
None
None
⽬次 『HOTELブルーローズ99の部屋』とは 仕様と技術選定 使⽤ライブラリと実装 振り返りとこれからのWeb表現について 1 2 3 4
TAM村松さん 99部屋 ⾃由に⾃由に⾏き来する ノベルゲームをやります! ⾳声付き を すごい良いデザインする
いただいた仕様 ブラウザで動作する プレイ判定API連携がある SNSシェアがある オートセーブ機能がある BGMを常時再⽣する ストーリー分岐がある ギミックがある(パスワードなど) SE(効果⾳)がなる
UI(3種類) 基本画⾯
結論
SPA Local Storage で⾏こう!! 技術選定
で解決できる仕様 SPA ブラウザで動作する プレイ判定API連携がある SNSシェアがある オートセーブ機能がある BGMを常時再⽣する ストーリー分岐がある ギミックがある(パスワードなど) SE(効果⾳)がなる
で解決できる仕様 Local Storage ブラウザで動作する プレイ判定API連携がある SNSシェアがある オートセーブ機能がある BGMを常時再⽣する ストーリー分岐がある ギミックがある(パスワードなど)
SE(効果⾳)がなる
BGMを常時再⽣する SE(効果⾳)がなる WEB上における メディア取り扱いは難しい…
で解決 SPA ブラウザで動作する プレイ判定API連携がある SNSシェアがある オートセーブ機能がある BGMを常時再⽣する ストーリー分岐がある ギミックがある(パスワードなど) SE(効果⾳)がなる
⽬次 『HOTELブルーローズ99の部屋』とは 仕様と技術選定 使⽤ライブラリと実装 振り返りとこれからのWeb表現について 1 2 3 4
主要ライブラリ Vue 3 Pinia VueUse
None
script setup構⽂ composition関数(ほぼHooks) CSSそのまま書ける Vue3の紹介
None
script setup構⽂ composition関数(ほぼHooks) CSSそのまま書ける Vue3の良いところ シンプル…
script setup構⽂ composition関数(ほぼHooks) CSSそのまま書ける Vue3の良いところ 責務の分離、 再利⽤性の向上
script setup構⽂ composition関数(ほぼHooks) CSSそのまま書ける Vue3の良いところ Web系コーダーとの 分担がしやすい
None
ただのグローバルなState Piniaの紹介 Reactだと Recoilが近い
None
呼び出したら ただのState
None
ユーティリティ関数のパッケージ VueUse 今回はlocalstorage連携 で使いました
refの代わりに 呼ぶだけ
呼び出したら ただのState
で解決 SPA ブラウザで動作する プレイ判定API連携がある SNSシェアがある オートセーブ機能がある BGMを常時再⽣する ストーリー分岐がある ギミックがある(パスワードなど) SE(効果⾳)がなる
Room302 Room301 App
Room302 Room301 App Navigation いつものアプリのように UIを載せる
Room302 Room301 App Navigation 再描画されない 部分にaudioタグを追加 Audio
SPAは⾳声コンテンツとの 相性が良い グローバルなStateと Hooks(Composable)で再⽣/停⽌が可能 副作⽤(useEffect/watchEffect)を利⽤して メディアの操作が可能 「許可した⾳声エレメント」を保持可能 Room301 App Navigation
Audio SPAは⾳声コンテンツとの 相性が良い
Room301 App Navigation プレイ開始API Audio プレイAPIと繋いで ゲーム完成 チケットを買ったらtoken付きURLを発⾏ 初期描画時にプレイ可能かを判定
⽬次 『HOTELブルーローズ99の部屋』とは 仕様と技術選定 使⽤ライブラリと実装 振り返りとこれからのWeb表現について 1 2 3 4
振り返り 無数に現れるバグ ゲームづくりってたいへん!
振り返り 無数に現れるバグ 無数に現れるバグ ゲームづくりってたいへん!
振り返り 無数に現れるバグ 無数に現れるバグ ゲームづくりってたいへん! E2Eテストが 書きにくい うおォン 俺はまるで⼈間バグ⽣成所だ
Web表現を考え直すきっかけをもらった
None
コスト 納期 品質
アクセシビリティ・より良い体験のために SPA(SSR含む)はもっと活⽤できるのではないか? PWAと合わせて 低コストに⾼クオリティ なプロダクトを!
TAMに興味が湧いた⽅はぜひお気軽にご連絡ください! メッセージ待ってまーす!!