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
1
1.9k
SPAで作るゲーム制作と技術選定(とこれからのWEB体験の話)
PWA Night vol.38 ~ブラウザゲームの世界〜の発表資料です
https://pwanight.connpass.com/event/242560/
fumi-sagawa
April 20, 2022
Tweet
Share
More Decks by fumi-sagawa
See All by fumi-sagawa
ChatGPTの使い方と業務に組み込む心構え
sagawa23
0
75
固定されたHowからの脱却 What起点のTransformation
sagawa23
0
140
LLMアプリケーションとアフォーダンス
sagawa23
0
710
ChatGPTとうまくやる方法
sagawa23
1
310
結局のところ いつ、どのAIツールを、 どのように使えば良いのか
sagawa23
5
740
ChatGPTを使う上で注意したい バイアスとフィルタリング
sagawa23
1
560
ざっくりつかむLangChainのメンタルモデル [説明欄にソースあり]
sagawa23
6
1.2k
プロンプトもくもく会ガイダンス.pdf
sagawa23
0
220
Other Decks in Programming
See All in Programming
DevFest - Serverless 101 with Google Cloud Functions
tunmise
0
140
Fixstars高速化コンテスト2024準優勝解法
eijirou
0
190
php-conference-japan-2024
tasuku43
0
430
Fibonacci Function Gallery - Part 2
philipschwarz
PRO
0
210
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
9
2.4k
ISUCON14感想戦で85万点まで頑張ってみた
ponyo877
1
590
最近のVS Codeで気になるニュース 2025/01
74th
1
100
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
180
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
940
歴史と現在から考えるスケーラブルなソフトウェア開発のプラクティス
i10416
0
300
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
300
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
1.9k
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
The Invisible Side of Design
smashingmag
299
50k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Faster Mobile Websites
deanohume
305
30k
Designing for humans not robots
tammielis
250
25k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
4 Signs Your Business is Dying
shpigford
182
22k
Site-Speed That Sticks
csswizardry
3
270
Git: the NoSQL Database
bkeepers
PRO
427
64k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Six Lessons from altMBA
skipperchong
27
3.6k
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に興味が湧いた⽅はぜひお気軽にご連絡ください! メッセージ待ってまーす!!