#screensaver #pipe #3d #cross-platform #remake #web

bin+lib rust-pipes

A remake of the 3D Pipes Screensaver from Windows 98 in Rust

2 unstable releases

0.2.0 Jun 2, 2024
0.1.0 Jan 5, 2024

#380 in WebAssembly

Apache-2.0

185KB
1.5K SLoC

rust-pipes 🦀💻

A remake of the classic Windows 98 Screensaver in Rust. Built to be resilient, configurable, and cross-platform (including for Web targets)

This project is still in development.

Web Development: https://pipes.faceftw.dev

Building/Testing

This project uses cargo for the standard Rust project build cycle. You can do the following tasks with cargo as follows:

Step Command
Building cargo build
Running (No Args) cargo run
Running (w/ Args) cargo run -- <args>
Testing cargo test

The wasm Target

This project also has a WASM target that is used for the web version, and is compiled differently from the standard version (i.e. lack of argument parsing).

cd ./web
npm install		# If cloning for the first time
npx wasm-pack build ".." --target web --out-name web --out-dir web/pkg
npm run serve

Source/Reference Materials

I've used these resources to help build the project. Without them, this project would likely take forever to figure out how to complete.

  • A lot of the original logic/design comes from the original source code for the screensaver in the Microsoft Windows NT 4.0 SDK found under MSTOOLS\SAMPLES\OPENGL\SCRSAVE
  • 1j01's JS implementation has also been instrumental to help with the translation of the original code written in "Microsoft C++ Dialect"

I'd also like to give a shoutout to these crates that I used that sped up the development of the project:

  • asny/three-d is an excellent crate for doing Graphics/OpenGL programming in Rust. It provides a great foundation for development regardless of the abstraction level you want to work at with great documentation and examples to accompany it. The developer is also very responsive and even fixed a bug that affected this project!

Dependencies

~7–22MB
~279K SLoC