paddle

Crates.iopaddle
lib.rspaddle
version0.1.0-beta.1
sourcesrc
created_at2021-01-01 13:56:42.850563
updated_at2021-02-28 12:24:52.47526
description2D Game Engine for Rust on the Web
homepage
repositoryhttps://github.com/jakmeier/paddle
max_upload_size
id330081
size227,743
Jakob Meier (jakmeier)

documentation

README

Paddle - Easy 2D browser games in Rust

Image: Paddle logo

0.1.0 Beta now published but API highly unstable. This is only released to crates.io for Paddlers, which uses this in the live-demo.

Goals Statement

  • For the web only
  • Allow using browser capabilities like HTML + CSS user interfaces, native SVG rendering, and more to come in the future
  • Compatibility with as many browser versions and devices as possible (Only WebGL 1 + WASM required, touch and mouse support for all browsers, etc.)
  • 2D graphics only for now, 3D unlikely to be included any time soon
  • Simple programming interfaces over maximum efficiency when there is a conflict.
  • The library should eventually be beginner-friendly enough that it can be recommended for people learning Rust, gamedev, or even programming in general.

Technical Overview

Implemented in Paddle

  • Cross-browser input
  • Screen resizing
  • Custom WebGL layer
  • Support for basic geometries and image drawing (Originally taken from quicksilver and adapted)
  • Support for text placement on the screen
  • Activity (frame) management

External Dependencies

  • wasm-bindgen / web-sys / wasm-pack for deployment on the web
  • div-rs for integration of HTML components
  • nuts for activity management and (seemingly stateless) point-to-point messages and broadcasts

Core Principles

Frames Everything lives in so-called frames. These are activities that also occupy a space on the screen, where they can draw and receive user input. Multiple frames can be used to create UIs or to switch between scenes easily.

Work in progress, documentation will be added as the project matures...

Commit count: 106

cargo fmt