Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ゼロからはじめるゲームプログラミング
Search
kaidouji85
June 16, 2018
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ゼロからはじめるゲームプログラミング
kaidouji85
June 16, 2018
More Decks by kaidouji85
See All by kaidouji85
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
190
AbortControllerでPromiseをキャンセルする
kaidouji85
0
55
一発芸!!なんちゃってローカライズ
kaidouji85
0
120
AWSだけでネット対戦できるブラウザゲームを作った話
kaidouji85
0
97
GitHub CopilotでJavaScript開発効率を爆上げする
kaidouji85
0
130
Serverless + Fargate構成で継続的デリバリーの速度を劇的に改善した話
kaidouji85
0
1.1k
サーバーレスアーキテクチャこそ"ヘキサゴナルアーキテクチャ"
kaidouji85
0
130
サーバーレスでターンベース制のネット対戦ゲームを作った話
kaidouji85
0
680
CDKで構築したFargateのデプロイ時間を改善した話
kaidouji85
2
600
Featured
See All Featured
Fireside Chat
paigeccino
43
4k
We Are The Robots
honzajavorek
0
380
Ruling the World: When Life Gets Gamed
codingconduct
0
340
Optimizing for Happiness
mojombo
378
71k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
How to Ace a Technical Interview
jacobian
281
24k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
400
エンジニアに許された特別な時間の終わり
watany
109
250k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Transcript
θϩ͔Β͡ΊΔ ήʔϜϓϩάϥϛϯά ϓϩάϥϛϯάੜ์ૹษڧձୈճˏαΠϘζגࣜձ ࣾদࢁΦϑΟε։࠵ ɹ༎հ
ࣗݾհ ɹ༎հ ϓϩάϥϚʔ +4େ͖ ϓϩੜͪΌΜେ͖
Ѫඤݝͱ͍͑ ԿΛࢥ͍ු͔·͔͢ʁ
ͺͬΓϙϯδϡʔεͰ͢ΑͶʂ
Ͱɺϙϯͱ͍͑ɺ ԿΛࢥ͍ු͔·͔͢ʁ
ήʔϜͷ10/(Ͱ͢ΑͶʂ
Ѫඤ ˣ ϙϯδϡʔε ˣ 10/( ˣ ήʔϜ
ͱ͍͏༁Ͱ ήʔϜϓϩάϥϛϯά ͷΛ͠·͢
ࠓͷΰʔϧ
αϯϓϧίʔυ ࠓղઆ͢Δαϯϓϧίʔυ͜͜Ͱ͢ IUUQTHJUIVCDPNLBJEPVKJCFHJOHBNF
ΞδΣϯμ Ξχϝʔγϣϯ͢Δ ΩϟϥΫλʔΛૢ࡞͢Δ ఢͱͨΓఆΛ࡞Δ ఢΛྔ࢈͢Δ
ΞδΣϯμ Ξχϝʔγϣϯ͢Δ ΩϟϥΫλʔΛૢ࡞͢Δ ఢͱͨΓఆΛ࡞Δ ఢΛྔ࢈͢Δ
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ΩϟϥΫλʔ͕ӈʹಈ͚ͩ͘ )5.-ʹը૾ɺ+4ϑΝΠϧ͕ஔ͞Ε͍ͯΔ +4Ͱը૾ΛΞχϝʔγϣϯ͍ͤͯ͞Δ
Ξχϝͷجຊ ύϥύϥອըͰ͢
ͦͷୈҰา ੩ࢭըΛඳ͘͜ͱͰ͢
ղઆ Ξχϝʔγϣϯ͞ΕΔʹɺ ੩ࢭը͕ඳ͚ͳ͍ͱʹͳΒͳ͍ ͜ͷ߹ϓϨΠϠʔΛ͖ͳҐஔʹදࣔ͢Δ ͜ͱ͕Ͱ͖ͳ͍ͱବ Ͳ͏͢Εɺ)5.-ը૾Λ͖ͳҐஔʹ දࣔͰ͖Δͷ͔
USBOTGPSNUSBOTMBUF ը૾Λ͖ͳҐஔʹදࣔͰ͖ΔελΠϧ \USBOTGPSNUSBOTMBUF Y࠲ඪ Z࠲ඪ ^ IUUQTEFWFMPQFSNP[JMMBPSHKBEPDT8FC $44USBOTGPSN
)5.-ͷ࠲ඪܥ 9 :
ήʔϜϧʔϓ ήʔϜϓϩάϥϜͰɺύϥύϥອըͷཁྖͰ ΞχϝʔγϣϯΛ࣮ݱ͍ͯ͠Δ ύϥύϥອըΛϓϩάϥϜͰ࠶ݱ͢Δͱɺ ແݶϧʔϓʹͳΔ ͜ͷΑ͏ͳϧʔϓΛɺήʔϜϧʔϓͱ͍͏ αϯϓϧͰɺҰఆִؒͰϓϨΠϠʔ9࠲ඪ ʹ ͍ͯ͠Δ
SFRVFTU"OJNBUJPO'SBNF )5.-ͰήʔϜϧʔϓΛ࣮ݱ͢ΔͨΊͷͷ Ҿʹࢦఆͨؔ͠Λɺ͍͍ײ͡ͷλΠϛϯά Ͱݺͼग़ͯ͘͠ΕΔ '14͘Β͍ʹͳΔ IUUQTEFWFMPQFSNP[JMMBPSHKBEPDT8FC "1*8JOEPXSFRVFTU"OJNBUJPO'SBNF
SFRVFTU"OJNBUJPO'SBNFྫ function gameLoop(time) { requestAnimationFrame(gameLoop); playerPos.x += 4; } requestAnimationFrame(gameLoop);
ΞδΣϯμ Ξχϝʔγϣϯ͢Δ ΩϟϥΫλʔΛૢ࡞͢Δ ఢͱͨΓఆΛ࡞Δ ఢΛྔ࢈͢Δ
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ϚεΛԡ͍ͯ͠Δ͚࣌ͩɺΩϟϥ͕ӈʹਐΉ
ϚεΠϕϯτͰ ૢ࡞ঢ়ଶΛͱΖ͏
ղઆ JG ϘλϯΛԡͨ͠ Y ͱ͍ͨ͠ )5.-ʹNPVTFEPXOɺNPVTFVQͱ͍͏ Πϕϯτ͕༻ҙ͞Ε͍ͯΔ Πϕϯτى͖ͨॠؒʹ໋ྩ͕࣮ߦ͞ΕΔͷ ͳͷͰɺήʔϜϧʔϓͰ͑ͳ͍ ͔ͩΒɺมʹ݁ՌΛอ͓࣋ͯ͘͠
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ϚεΛԡ͍ͯ͠ΔؒɺϓϨΠϠʔ͕Ϛεϙ Πϯλʹ͔ͬͯҠಈ͢Δ ϓϨΠϠʔ͕Ϛεʹۙͮ͘ͱɺ Կނ͔ϒϨΔ ݁ߏͳසͰɺϓϨΠϠʔ͕બঢ়ଶʹͳΔ
ϕΫτϧԋࢉͰ ΩϟϥͷڍಈΛ࣮ݱ
ϚεΛԡͨ࣌͠ͷڍಈ Ϛεͷํʹ ϐΫηϧҠಈ
1 QY QZ ϓϨΠϠʔ࠲ඪ . UY UZ Ϛε࠲ඪ
Ҡಈྔ1.c1.cY c.1c 1. WY WZ
1 QY QZ ϓϨΠϠʔ࠲ඪ . UY UZ Ϛε࠲ඪ
1. WY WZ UYQY UZQZ c1.c 1. WY WZ
1 ϓϨΠϠʔ࠲ඪ . Ϛε࠲ඪ 1. WY WZ c1.c㲋 WY? WZ?
c1.c
1 QY QZ ϓϨΠϠʔ࠲ඪ . UY UZ Ϛε࠲ඪ
Ҡಈྔ WYc1.cY WZc1.cY c1.c 1. WY WZ
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ϓϨΠϠʔ͕બঢ়ଶʹͳΔόά͕࣏͍ͬͯΔ ϓϨΠϠʔ͕Ϛεʹۙͮ͘ͱϒϨΔόά͕ ࣏͍ͬͯΔ
*.(ΛΊΑ͏
ͳͥબͰ͖Δͷ͔ ը૾λάͳͷͰɺ ϚεΫϦοΫͰબͰ͖ͯ͠·͏ ͔ͩΒɺը૾λάͰͳ͘͢ EJWλάʹͯ͠ɺഎܠը૾ͱͯ͠ ݩʑͷը૾Λઃఆ͢Δ
ڑʹԠͯ͡ ҠಈྔΛௐ͠Α͏
ղઆ ϓϨΠϠʔɺϚεͷڑ͕ҠಈྔΑΓখ͍͞ ߹ɺϓϨΠϠʔ͕ϚεΛಥ͖ൈ͚ͯ͠·͏ ۩ମྫ࣍Ͱղઆ
ϒϨΔݪҼ ϐΫηϧ ϐΫηϧ ϓϨΠϠʔ Ϛε
ϒϨΔݪҼ ϐΫηϧ ϐΫηϧ ϓϨΠϠʔ Ϛε
ϒϨΔݪҼ ϐΫηϧ ϐΫηϧ ϓϨΠϠʔ Ϛε ϐΫηϧ
ϒϨΔݪҼ ϐΫηϧ ϓϨΠϠʔ Ϛε ϐΫηϧ
ϒϨΔݪҼ ϐΫηϧ ϓϨΠϠʔ Ϛε ϐΫηϧ
ղܾࡦ Ҡಈྔڑ Ҡಈྔͷ͚ͩਐΉ Ҡಈྔڑ ڑͷ͚ͩਐΉ
ϓϨΠϠʔ Ϛε ϓϨΠϠʔ Ϛε ϐΫηϧ ϐΫηϧ ϐΫηϧ ϐΫηϧ Ҡಈྔڑ Ҡಈྔڑ
ΞδΣϯμ Ξχϝʔγϣϯ͢Δ ΩϟϥΫλʔΛૢ࡞͢Δ ఢͱͨΓఆΛ࡞Δ ఢΛྔ࢈͢Δ
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ࠨʹҠಈ͢Δ͚ͩͷఢΛՃͨ͠ )5.-ϑΝΠϧʹఢը૾ΛՃ ͦΕҎ֎ɺࠓ·Ͱͬͨ͜ͱͷΈ߹Θͤ
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ఢͱͷͨΓఆΛ࣮ͨ͠ ήʔϜΦʔόʔ͕ग़ଓ͚Δόά͕͋Δ
ͨΓఆ ؒͷڑΛݟΑ͏
ͨΓఆ ͨΓఆͷํ๏৭ʑ͋Δ͕ɺ ؒͷڑͰఆ͢Δํ๏ָ͕Ͱ͢ ϓϨΠϠʔɺఢͷڑ͕ҰఆҎԼͳΒ ͍ͨͬͯΔͱఆ͠·͢
1 QY QZ ϓϨΠϠʔ࠲ඪ & FY FZ ఢ࠲ඪ
ؒͷڑ 㲋 FYQY ? FZQZ ? ڑ
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ήʔϜΦʔόʔ͕ճ͚ͩग़ΔΑ͏ʹͳͬͨ ήʔϜΦʔόʔͨ͠Βɺ ϓϨΠϠʔ͕ফ͑ΔΑ͏ʹͳͬͨ
ऴΘΒͳ͍(BNF0WFSͷݪҼ ήʔϜΦʔόʔఆϩδοΫ͕ɺ ϓϨΠϠʔͱఢͷ৮͚͔ͩͩΒ Ϛ˓ΦͰɺνϏʹͳͬͨ࣌ͷແఢ͕࣌ؒ ͳ͍ͱͲ͏ͳΔͰ͠ΐ͏ ˢσΧΠঢ়ଶͰɺҰॠͰࢮʹ·͢ ࠓճͦΕͱಉ͡ݪҼͰ͢
ࢮϑϥάΛ Ճ͠·͠ΐ͏
ղઆ ϓϨΠϠʔ͕ੜ͖͍ͯΔ͔ɺࢮΜͰ͍Δ͔Λ දݱ͢ΔมΛՃ͠·͠ΐ͏ ϓϨΠϠʔ͕ੜ͖͍ͯΔ߹ͷΈɺ(BNF0WFS Λදࣔ͠·͢ ˢಉ͡λΠϛϯάͰɺϓϨΠϠʔΛࢮঢ়ଶʹ ͠·͠ΐ͏
ΞδΣϯμ Ξχϝʔγϣϯ͢Δ ΩϟϥΫλʔΛૢ࡞͢Δ ఢͱͨΓఆΛ࡞Δ ఢΛྔ࢈͢Δ
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ڍಈԿมΘ͍ͬͯ·ͤΜ ίʔυͷߦ͕૿͑ͨͷͰɺϑΝΠϧׂͨ͠
ΫϥεԽ͢Ε ྔ࢈Ͱ͖Δ
ͳͷͰɺطଘϑΝΠϧΛ Ϋϥεׂ͠·͠ΐ͏
Ϋϥεͱ σʔλͱͦΕʹؔ͢Δૢ࡞ΛɺҰͭͷ෦ ʹ·ͱΊΔ ˢͷ͜ͱΛΫϥεͱ͍͏ ΫϥεΛ࡞Δج४ɺ͍ํͳͲ ΦϒδΣΫτࢦΛษڧ͢Δͱ͍͍
σʔλ ૢ࡞ ࢀর ϓϩάϥϜͷجຊߏ
σʔλ ૢ࡞ ࢀর ϓϩάϥϜͷجຊߏ ϞδϡʔϧͰ·ͱΊΔ
σʔλ ૢ࡞ ࢀর ϓϩάϥϜͷجຊߏ Ϋϥε ϝϯόม ϝιου
ࠓճͷΫϥε͚ ϓϨΠϠʔ ఢ λονؔ࿈ ͨΓఆ ϕΫτϧεΧϥྔܭࢉ
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ࢁͷఢ͕ग़ΔΑ͏ʹͳͬͨ ιʔεͷ)5.-ϑΝΠϧ͔ΒΩϟϥΫλʔ %*7͕ফ͑ͨ ͰΠϯεϖΫλͰݟΔͱɺ%*7ͪΌΜͱ ͋Δ
ఢ͕ྔ࢈Ͱ͖ͳ͍ʁ ΦϒδΣΫτࢦతʹɺఢΛྔ࢈͚ͨ͠Ε ͦͷ͚ͩఢΫϥεΛOFX͢Ε͍͍ ͦΕͰΖ͏ͱͨ͠Βɺఢ͕ମ͔͠ දࣔ͞Εͳ͔ͬͨ ˢఢΫϥε)5.-্ͷ%*7Λࢀর͍ͯ͠Δ ͷͰɺఢͷ͚ͩಉλά͕ඞཁʹͳΔ
ίϯετϥΫλͰ EJWΛੜ͍ͯ͠Δ
ղઆ ఢΫϥεͷίϯετϥΫλͰ%*7λάΛੜ ˢͷ%*7λάΛɺ+BWB4DSJQUͰ)5.-ʹՃ ͜ΕͰɺ%*7λά͕ಈతʹՃ͞ΕΔΈ͕ ͬͨ
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ڍಈมߋͳ͠ ݟ௨͠Λྑ͘͢ΔͨΊɺఢͷੜॲཧɺ ήʔϜϧʔϓॲཧΛ·ͱΊͨΫϥεΛՃ ·ͱΊΔ࣌ʹίπ͕͋ΔɺͦΕʜʜ
ྻʹಥͬࠐΜͰ ϧʔϓͰҰׅॲཧ͢Δ
#&'03& const enemy1 = new Enemy(); const enemy2 = new
Enemy(); const enemy3 = new Enemy(); enemy1.gameLoop(); enemy2.gameLoop(); enemy3.gameLoop();
"'5&3 this._enemyList = [ new Enemy(), new Enemy(), new Enemy()
]; this._enemyList.forEach(enemy => { enemy.gameLoop(); });
ղઆ ఢΛྔ࢈ͯ͠ɺݺͼग़͢ϝιουશͯಉ͡ ಉ͡ͷΛఢͷ͚ͩίϐϖ͢Δͷ͠ΜͲ͍ ͔ͩΒɺఢΛྻมʹηοτͯ͠ϧʔϓͰ ճͯ͠ಉ͡ॲཧΛͤ͞Δ
͓ർΕ༷Ͱͨ͠ ղઆҎ্Ͱ͢
·ͱΊ ήʔϜͷجຊύϥύϥອըͷݪཧͰ͋Δ ҠಈɺͨΓఆͷ࣮ݱํ๏ΛΔʹɺ ֶɾཧΛษڧ͠Α͏ ΫϥεԽ ྻϧʔϓͰΩϟϥΛྔ࢈͠Α͏
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠
͓·͚5XFFO
αϯϓϧͷσϞ
αϯϓϧ֓ཁ ϓϨΠϠʔɺఢͷಈ͖Λ5XFFOʹஔ͖͑ͨ ఢͷಈ͖͕खʹͳͬͨ (BNF0WFS͕ঃʑʹු͖ग़ΔΑ͏ʹͳͬͨ
5XFFOΛ͍·͠ΐ͏
5XFFOͱ 5XFFOͱಈ͖Λొͯ͠ɺܦա࣌ؒʹԠͨ͡ ʹࣗಈతʹηοτͯ͘͠ΕΔͷͰ͋Δ ʮ44ඵ͔͚ͯɺม9Λʹมߋ͢Δʯ ͱ͍͏ײ͡ʹࢦఆ͢Δ 5XFFOΛ͑ɺෳࡶͳಈ͖Ͱ؆୯ʹ ࣮ݱͰ͖Δ
5XFFOͷྫ ඵޙͳΒ ʮඵޙʹʯͷ5XFFO 9
+4ͷ5XFFOϥΠϒϥϦ UXFFOKT IUUQTHJUIVCDPNUXFFOKTUXFFOKT 5XFFO.BY IUUQTHSFFOTPDLDPNUXFFONBY 7FMPDJUZKT IUUQWFMPDJUZKTPSH
·ͨɺ ࠓ·Ͱͷαϯϓϧʹ க໋తͳ͕͋Γ·͢
ͦΕ '14ͷมߋʹऑ͍͜ͱ
'14ͱ 'SBNF1FS4FDPOEͷུ ඵؒʹԿճը໘͕ߋ৽͞ΕΔ͔ͱ͍͏͜ͱ SFRVFTU"OJNBUJPO'SBNF'14ʹͳΔΑ͏ Α͠ͳʹͬͯ͘ΕΔ
ࠓ·Ͱͷαϯϓϧͷ ήʔϜϧʔϓ͕'14લఏͰॻ͔Ε͍ͯΔ '14͕ഒʹͳͬͨΒɺΩϟϥͷҠಈഒ SFRVFTU"OJNBUJPO'SBNFόοςϦʔɺ ϒϥβͷΞΫςΟϒঢ়ଶͳͲͰ'14ҎԼʹ ͳΔ͜ͱ͕͋Δ
ͳͥ5XFFOͰղܾ͢Δͷ͔ 5XFFO։͔࢝Βͷܦա࣌ؒʹͷΈґଘ͔Β ؒʹԿճߋ৽Λڬ͏͕ɺ։͔࢝ΒඵޙͳΒ ৗʹಉ͡ʹͳΔ ࣍Ͱ۩ମྫΛղઆ
ඵ ඵ ̎ඵ ̍ϑϨʔϜ͝ͱʹ ͢Δ 9 9
࣌ؒ ࣌ؒ 9 9 9
ඵ ඵ ̎ඵ ʮඵͰʯͷ5XFFOΛ͏ 9 9 ࣌ؒ
࣌ؒ 9 9 9