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
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
390
Oxlintのカスタムルールの現況
syumai
5
890
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
170
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
460
誰も頼んでない機能を出荷した話
zekutax
0
150
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
390
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.3k
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.3k
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
670
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
410
Moments When Things Go Wrong
aurimas
3
120
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
170
Featured
See All Featured
Designing for Performance
lara
611
70k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
800
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
30 Presentation Tips
portentint
PRO
1
310
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
280
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
380
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
BBQ
matthewcrist
89
10k
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に興味が湧いた⽅はぜひお気軽にご連絡ください! メッセージ待ってまーす!!