SitePoint
Blog
Forum
Library
Login
Join Premium
Toggle sidebar
HTML5 Games: Novice to Ninja
Toggle community discussions
Close
Content
Files
Bookmarks
Preface
HTML5 Games: Novice to Ninja
Notice of Rights
Notice of Liability
Trademark Notice
About Earle Castledine
About SitePoint
Who Should Read This Book?
Acknowledgments
Conventions Used
Supplementary Materials
1
Press Space to Start
Game Design
A Brief History
Games and JavaScript
Enough Talk; Let’s Make Games
Get Ready!
Drawing Things
DOM vs Canvas vs WebGL
Plain Ol’ DOM
Canvas API
Game Engines vs Reinventing the Wheel
Quick, Draw
Game Loops & User Input
The Loop
User Input
Creating Your Game Library
A Space Shoot-’em-up
Game Over
Animation, Levels, Maps, Cameras…
An Unexpected Proposition
De-boilerplating Our Prototypes
Sprites with Zing !
An Unexpected Assignment
Sprite Sheets & Animation
The Animation Manager
Tile Maps
Scrolling Maps with a Camera
Screens & Game Life Cycle
Leveled Up
Collision Detection & AI
Colliding with Things
Procedural Level Generation
Colliding with Maps
AI: The Bots Strike Back
Pathfinding
Enemies alive
Mathematics & Physics
Jump Everybody, Jump
Fixing Our Time Step
Triangles and Vectors
Building a Vector Library
The Need for Speed (and Direction)
Billiard Ball Physics
Polar Coordinates
Physics Libraries
Audio
Old-school Techniques
Audio on the Web
An Asset Manager
Sound Production
The Web Audio API
Post Production: Mixing and Mastering
Fade to Silence
Bringing a Game to Life with “Juice”
Screen Effects
Animations, Tweens, and Easing
Particle Effects
Camera Tricks
Platformer Tricks
More Tiles
Dialogs and Screen Transitions
Designing Levels with a Level Editor
Got Game
Optimizing & Packaging
Debugging
Profiling
Speeding Up Your Code
Speeding Up Rendering
Getting on Devices
Getting on the Stores
Releasing to the World
Bonus Round: The Epilogue
Appendix A: List of Games Mentioned
Open text modal
Community Questions
Close