2019-06-27 01:14:52 +00:00
< p align = "center" >
2021-09-14 13:13:33 +00:00
< a href = "https://ruffle.rs" > < img src = "https://ruffle.rs/assets/logo.svg" alt = "Ruffle" > < / a >
2019-06-27 01:14:52 +00:00
< / p >
< p align = "center" >
2020-09-04 15:52:37 +00:00
< a href = "https://github.com/ruffle-rs/ruffle/actions" >
2020-10-14 00:45:57 +00:00
< img src = "https://img.shields.io/github/workflow/status/ruffle-rs/ruffle/Test%20Rust?label=rust%20build" alt = "Rust Build Status" / >
< img src = "https://img.shields.io/github/workflow/status/ruffle-rs/ruffle/Test%20Web?label=web%20build" alt = "Web Build Status" / >
2019-08-15 12:57:26 +00:00
< / a >
2021-03-20 08:29:43 +00:00
< a href = "https://discord.gg/ruffle" >
2019-08-15 12:57:26 +00:00
< img src = "https://img.shields.io/discord/610531541889581066" alt = "Ruffle Discord" >
< / a >
< br >
2020-10-10 06:29:29 +00:00
< strong > < a href = "https://ruffle.rs" > website< / a > | < a href = "https://ruffle.rs/demo" > demo< / a > | < a href = "https://github.com/ruffle-rs/ruffle/releases" > nightly builds< / a > | < a href = "https://github.com/ruffle-rs/ruffle/wiki" > wiki< / a > < / strong >
2019-06-27 01:14:52 +00:00
< / p >
2019-04-25 17:52:22 +00:00
2019-08-15 12:57:26 +00:00
# Ruffle
Ruffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both the desktop and the web using WebAssembly.
## Project status
2020-02-20 07:15:41 +00:00
Ruffle is in the proof-of-concept stage and can currently run early Flash animations and games. Basic ActionScript 1.0/2.0 support is in place and improving; ActionScript 3.0 support is forthcoming. For more info, read the [project roadmap ](https://github.com/ruffle-rs/ruffle/wiki/Roadmap ).
2019-04-25 17:52:22 +00:00
2020-12-29 11:10:12 +00:00
## Using Ruffle
2020-02-17 23:34:46 +00:00
2021-01-15 15:39:13 +00:00
The easiest way to try out Ruffle is to visit the [web demo page ](https://ruffle.rs/demo/ ), then click the "Browse..." button to load an SWF file of your choice.
2020-12-29 11:10:12 +00:00
[Nightly builds ](https://ruffle.rs/#releases ) of Ruffle are available for desktop and web platforms including the browser extension.
2020-02-17 23:34:46 +00:00
2020-12-29 11:10:12 +00:00
For more detailed instructions, see our [wiki page ](https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle ).
2019-09-14 08:13:18 +00:00
## Building from source
2020-02-17 23:10:31 +00:00
2019-05-16 17:10:32 +00:00
[Follow the official guide ](https://www.rust-lang.org/tools/install ) to install Rust for your platform.
### Desktop
2020-07-18 03:34:44 +00:00
- `cargo run --package=ruffle_desktop -- test.swf`
2019-05-16 17:10:32 +00:00
2020-05-26 13:57:28 +00:00
### Web or Extension
2020-07-18 03:34:44 +00:00
2020-05-26 13:57:28 +00:00
Follow [the instructions in the web directory ](web/README.md#building-from-source ) for building
either the web or browser extension version of Ruffle.
2020-05-10 10:29:05 +00:00
2019-10-11 14:19:18 +00:00
### Scanner
If you have a collection of "real world" SWFs to test against, the scanner may be used to benchmark
ruffle's parsing capabilities. Provided with a folder and an output filename, it will attempt to read
all of the flash files and report on the success of such a task.
2020-07-18 03:34:44 +00:00
- `cargo run --package=ruffle_scanner -- folder/with/swfs/ results.csv`
2019-10-11 14:19:18 +00:00
2020-05-05 13:27:10 +00:00
### Exporter
If you have a swf and would like to capture an image of it, you may use the exporter tool.
This currently requires hardware acceleration, but can be run headless (with no window).
2020-07-18 03:34:44 +00:00
- `cargo run --package=exporter -- path/to/file.swf`
- `cargo run --package=exporter -- path/to/file.swf path/to/screenshots --frames 5`
2020-05-05 13:27:10 +00:00
2019-04-28 06:26:04 +00:00
## Structure
2019-04-25 17:52:22 +00:00
2019-04-28 06:26:04 +00:00
- `core` contains the core emulator and common code
2020-04-27 16:15:29 +00:00
- `desktop` contains the desktop client (uses `wgpu-rs` )
2020-05-26 13:57:28 +00:00
- [`web` ](web ) contains the web client and browser extension (uses `wasm-bindgen` )
2019-10-11 14:19:18 +00:00
- `scanner` contains a utility to bulk parse swf files
2020-05-05 13:27:10 +00:00
- `exporter` contains a utility to generate PNG screenshots of a swf file
2019-04-25 17:52:22 +00:00
2019-12-11 01:59:15 +00:00
## Sponsors
2020-11-22 00:57:56 +00:00
You can support the development of Ruffle via [GitHub Sponsors ](https://github.com/sponsors/ruffle-rs ). Your sponsorship will help to ensure the accessibility of Flash content for the future. Thank you!
2019-12-11 01:59:15 +00:00
Sincere thanks to the diamond level sponsors of Ruffle:
< p align = "center" >
2020-02-17 23:21:18 +00:00
< a href = "https://www.newgrounds.com" >
2020-07-18 03:34:44 +00:00
< img src = "https://ruffle.rs/assets/sponsors/newgrounds.png" alt = "Newgrounds.com" >
2020-02-17 23:21:18 +00:00
< / a >
< a href = "https://www.cpmstar.com" >
2020-07-18 03:34:44 +00:00
< img src = "https://ruffle.rs/assets/sponsors/cpmstar.png" alt = "CPMStar" >
2020-02-17 23:21:18 +00:00
< / a >
< a href = "https://deepnight.net" >
2020-07-18 03:34:44 +00:00
< img src = "https://ruffle.rs/assets/sponsors/deepnight.png" alt = "Sébastien Bénard" >
2020-02-17 23:21:18 +00:00
< / a >
2020-02-20 07:15:41 +00:00
< a href = "https://www.crazygames.com" >
2020-07-18 03:34:44 +00:00
< img src = "https://ruffle.rs/assets/sponsors/crazygames.png" alt = "Crazy Games" >
< / a >
< a href = "https://www.coolmathgames.com" >
< img src = "https://ruffle.rs/assets/sponsors/coolmathgames.png" alt = "Cool Math Games" >
2020-02-20 07:15:41 +00:00
< / a >
2020-11-22 00:57:56 +00:00
< a href = "https://www.nytimes.com/" >
< img src = "https://ruffle.rs/assets/sponsors/nyt.png" alt = "The New York Times" >
< / a >
2020-12-14 11:12:58 +00:00
< a href = "https://www.armorgames.com/" >
< img src = "https://ruffle.rs/assets/sponsors/armorgames.png" alt = "Armor Games" >
< / a >
2021-02-18 08:37:42 +00:00
< a href = "https://www.ondaeduca.com/" >
< img src = "https://ruffle.rs/assets/sponsors/ondaeduca.png" alt = "Onda Educa" >
< / a >
< a href = "https://www.twoplayergames.org/" >
< img src = "https://ruffle.rs/assets/sponsors/twoplayergames.png" alt = "TwoPlayerGames.org" >
< / a >
2021-03-03 12:46:53 +00:00
< a href = "https://www.wowgame.jp/" >
< img src = "https://ruffle.rs/assets/sponsors/wowgame.png" alt = "wowgame.jp" >
< / a >
2021-03-20 08:29:43 +00:00
< a href = "http://kupogames.com/" >
< img src = "https://ruffle.rs/assets/sponsors/mattroszak.png" alt = "Matt Roszak" >
< / a >
2021-10-01 21:56:00 +00:00
< a href = "https://www.dolldivine.com/" >
< img src = "https://ruffle.rs/assets/sponsors/dolldivine.png" alt = "Doll Divine" >
< / a >
2021-12-15 02:17:47 +00:00
< a href = "https://movavi.com/" >
2021-12-15 02:21:35 +00:00
< img src = "https://ruffle.rs/assets/sponsors/movavi.svg" alt = "Movavi" >
2021-12-15 02:17:47 +00:00
< / a >
2020-05-26 13:57:28 +00:00
< / p >
2019-12-11 01:59:15 +00:00
2019-04-28 06:26:04 +00:00
## License
2019-04-25 17:52:22 +00:00
2021-02-07 01:31:06 +00:00
Ruffle is licensed under either of
2020-07-18 03:34:44 +00:00
2021-02-07 01:31:06 +00:00
- Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
- MIT License (http://opensource.org/licenses/MIT)
2021-01-04 20:25:20 +00:00
at your option.
2019-04-25 17:52:22 +00:00
2021-02-07 01:31:06 +00:00
Ruffle depends on third-party libraries under compatible licenses. See [LICENSE.md ](LICENSE.md ) for full information.
2019-04-28 06:26:04 +00:00
### Contribution
2019-04-25 17:52:22 +00:00
2021-02-07 01:31:06 +00:00
Ruffle welcomes contribution from everyone. See [CONTRIBUTING.md ](CONTRIBUTING.md ) for help getting started.
2020-07-18 03:43:22 +00:00
2019-04-28 06:26:04 +00:00
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you shall be dual licensed as above, without any
2019-05-01 16:36:43 +00:00
additional terms or conditions.
2020-07-18 03:43:22 +00:00
The entire Ruffle community, including the chat room and GitHub project, is expected to abide by the [Code of Conduct ](https://www.rust-lang.org/policies/code-of-conduct ) that the Rust project itself follows.