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
HTML5 Canvasによる2Dウェブゲーム開発
Search
Sora Arakawa
August 08, 2021
Programming
0
120
HTML5 Canvasによる2Dウェブゲーム開発
静大情報LT大会 -2021年8月-
Sora Arakawa
August 08, 2021
Tweet
Share
More Decks by Sora Arakawa
See All by Sora Arakawa
arkw vs. サーバ移転 -2024年1月版-
arkw
0
34
なれる! 村上さん Misskeyサーバ構築入門
arkw
0
190
Cloudflare Tunnelで自宅サーバを公開してみた
arkw
0
700
5分でわかる!? 7セグメントLED制御
arkw
0
41
ヤフオクで原付買った話
arkw
0
160
パソコンの消費電力と省エネ化のおはなし
arkw
0
240
"成果物"を作ろう(提案)
arkw
0
210
Python(+α)でスマートプラグを制御してみた
arkw
0
1k
学情絶叫ウェブシステムGX
arkw
0
120
Other Decks in Programming
See All in Programming
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.1k
本格ローグライク制作にEbitengineを選んでみた
nagainaganawa
0
290
Java 22 Overview
kishida
1
170
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
110
HUIT新歓2024「競技プログラミング、やってみませんか?」
slephy2784
1
250
SwiftUI Performance 不要なViewの再描画と更新を抑える
bigamitiongit
1
150
pixivアプリでマルチモジュールを実現するまで
gatosyocora
1
130
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
480
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
430
What We Can Learn From OSS
inouehi
0
400
OpenTelemetry のサービスという概念について
azukiazusa1
2
1.1k
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.6k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
For a Future-Friendly Web
brad_frost
171
8.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
36
2.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
15
1.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
Design by the Numbers
sachag
274
18k
No one is an island. Learnings from fostering a developers community.
thoeni
14
2.1k
Thoughts on Productivity
jonyablonski
57
3.8k
Unsuck your backbone
ammeep
662
57k
Transcript
HTML5 Canvasによる 2Dウェブゲーム開発 Sora Arakawa (arkw) 2021/08/08 静大情報LT大会@オンライン 「#静大情報LT」でツイートすると 画面上部に表示されます!
自己紹介 Sora Arakawa(arkw) • 静岡大学 情報学部 行動情報学科 B2 • 所属:某室(長)、xRサークルはまりあ、ICON
• 浜松でAlexaスキル開発のバイトをしています (時給900円) • 愛知県岡崎市在住 • https://arkw.net/
自己紹介 浜キャン近辺で安いアパート(~1.5万)を探しています。 情報ください。
プロ生早押しクイズ • 2021年1月2日公開 • 最新バージョンは1.5.0 (2021年7月31日)
① 画面設計 • HTMLでCanvasを置く サイズは適当に(プロ生早押しクイズは640x480) • 必要に応じて操作説明やリンクなどを書く • CSSでデザインを調整する
② 操作方法 • Canvasにマウス/タッチイベントを追加する • CSSでCanvasを拡大縮小すると座標がずれるので、画面サイズ を基に計算して修正する • 「プロ生早押しクイズ」では上記処理がめんどいのでHTML側に ボタンを設置した
• キーボード入力も拾えるが、モバイル端末への配慮が必要
None
③ メインループの生成 • メインループはゲームに不可欠 • setIntervalでは予め待ち時間を設定する • requestAnimationFrameはモニタの周波数に依存 • requestAnimationFrameの方が安定している?
③ メインループの生成 • requestAnimationFrameは基本的に60fps • ゲーミングモニタ対応するなら、早送り対策が必要
④ グラフィック • メインループ内で適当に文字や画像を出す • 画像はクソデカ1枚絵にするとファイル読み込みが楽 • WebフォントならOSに関係無く同じ書体が出せます
None
⑤ ロード画面 • インターネット上からデータを取得するため、ロードに若干の 時間が掛かる(感覚としてはPSのCD-ROMに近い?) • リソースの読み込みが終わる前にプログラムを進めると画面表 示がバグる • 「プロ生早押しクイズ」では、最も大きな画像の読み込み終了
後60フレーム程度待つように実装
⑥ 音楽 • HTMLファイルに<audio loop>タグで指定 • Chromeでは無限ループ時に一瞬音が止まる • 参照するファイルはJavaScriptから変更できるのでHTMLに書く のは最初の1曲だけでOK
⑦ 効果音 • HTMLファイルに<audio>タグで指定 • 頻繁に鳴らす音は全部HTMLに書く • 鳴らし終わったら一時停止→再生位置を0に戻す • 使用頻度の低い音はJavaScriptで切り替えてもOK
• 素材を使用する際は無音部分のカットを忘れずに!!
音声ファイルの形式について • MP3、OGGあたりがオススメ?
まとめ • メインループはrequestAnimationFrame • 細かい画像はクソデカ1枚絵から切り出す • ロード画面を実装する • 音はMP3かOGG •
具体的なコードの書き方はググって、どうぞ
ご清聴ありがとうございました