Game development with Rust and WebAssembly learn how to run Rust on the web while building a game
The Rust programming language has held the most-loved technology ranking on Stack Overflow for 6 years running, while JavaScript has been the most-used programming language for 9 years straight as it runs on every web browser. Now, thanks to WebAssembly (or Wasm), you can use the language you love o...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Birmingham :
Packt Publishing
2022.
|
Edición: | 1st ed |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009660437306719 |
Tabla de Contenidos:
- Cover
- Title Page
- Copyright and Credits
- Dedication
- Contributors
- Table of Contents
- Preface
- Part 1: Getting Started with Rust, WebAssembly, and Game Development
- Chapter 1: Hello WebAssembly
- Technical requirements
- What is WebAssembly?
- A Rust project skeleton
- Drawing to the canvas
- The current code
- Drawing a triangle
- A Sierpińksi triangle
- Summary
- Chapter 2: Drawing Sprites
- Technical requirements
- A quick game design session
- Rendering a sprite
- Loading images
- Canvas coordinates
- Drawing images
- JavaScript callbacks
- Async Rust
- Sprite sheets
- Loading JSON
- Parsing JSON
- Drawing with our "cookie cutter
- Adding animation
- Summary
- Part 2: Writing Your Endless Runner
- Chapter 3: Creating a Game Loop
- Technical requirements
- Minimal architecture
- Good? Bad? I'm the guy with code
- Layered architecture
- Creating the browser module
- Loading an image
- Creating a game loop
- RequestAnimationFrame
- A game trait
- Fixing our time step
- Loading assets
- Cleaner drawing
- Integrating the game loop
- Adding keyboard input
- Moving Red Hat Boy
- Summary
- Chapter 4: Managing Animations with State Machines
- Technical requirements
- Introducing state machines
- Defining a state machine
- Implementing with types
- Managing animation
- Transitioning between states
- Managing the state machine
- Using Into for clean code
- Integrating the state machine
- Drawing RedHatBoy
- Updating RHB
- Adding the Running state
- Transitioning to sliding
- Transitioning to sliding and back again
- Every little thing I think I see
- Transitioning to jumping
- Summary
- Chapter 5: Collision Detection
- Technical requirements
- Creating a real scene
- Adding the background
- Adding an obstacle
- Axis-aligned bounding boxes
- Collision.
- Trimming the sprite sheet
- Adding the trimmed sheet
- Colliding with an obstacle
- A bounding box for a stone
- A bounding box for RedHatBoy
- Crashing on the collision
- Jumping onto a platform
- Adding a platform
- Collision from below
- Transparency in bounding boxes
- Summary
- Chapter 6: Creating an Endless Runner
- Technical requirements
- Scrolling the background
- Fixing RHB in x
- An infinite background
- Refactoring for endless running
- f32 versus i16
- A more useful Rect
- Obstacle traits
- Removing obstacles as they go off screen
- Sharing a sprite sheet
- Many different platforms
- Creating a dynamic level
- Creating one segment
- Adding a timeline
- Creating segments
- Summary
- Chapter 7: Sound Effects and Music
- Technical requirements
- Adding the Web Audio API to the engine
- Playing a sound in Rust
- Loading the sound
- Adding audio to the engine
- Playing sound effects
- Refactoring RedHatBoyContext and RedHatBoy
- Adding a sound effect
- Playing long music
- Summary
- Chapter 8: Adding a UI
- Technical requirements
- Design a new game button
- Preparing a UI
- Showing the button with Rust
- Show the button on game over
- A state machine review
- Redesigning to a state machine
- Start a new Game
- Pre-loading
- Summary
- Part 3: Testing and Advanced Tricks
- Chapter 9: Testing, Debugging, and Performance
- Technical requirements
- Creating automated tests
- Test-driven development
- Getting started
- Pure functions
- Hiding the Browser module
- Browser tests
- Async tests
- Debugging the game
- Log versus error versus panic
- Linting and Clippy
- Measuring performance with a browser
- Frame rate counter
- Browser debugger
- Checking memory
- Summary
- Chapter 10: Continuous Deployment
- Technical requirements
- Creating a CI/CD pipeline
- GitHub Actions.
- Node.js and webpack
- Deploying test and production builds
- Summary
- Chapter 11: Further Resources and What's Next?
- Technical requirements
- A challenging review
- What happened to the dog?
- Further resources
- Using JavaScript libraries
- Summary
- Index
- About Packt
- Other Books You May Enjoy.