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...

Descripción completa

Detalles Bibliográficos
Otros Autores: Smith, Eric, author (author)
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.