diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..7d01cb2e --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @astrabit-st/luminol \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index f2a550a0..4af7ad7a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,7 +3,7 @@ name: Bug report about: Create a report to help us improve title: "[BUG]" labels: bug -assignees: somedevfox, Speak2Erase +assignees: '' --- diff --git a/.github/ISSUE_TEMPLATE/compiler-error.md b/.github/ISSUE_TEMPLATE/compiler_error.md similarity index 93% rename from .github/ISSUE_TEMPLATE/compiler-error.md rename to .github/ISSUE_TEMPLATE/compiler_error.md index 8707a8a9..9b88dc8f 100644 --- a/.github/ISSUE_TEMPLATE/compiler-error.md +++ b/.github/ISSUE_TEMPLATE/compiler_error.md @@ -3,7 +3,7 @@ name: Compiler error about: Create a report of why luminol will not compile on a platform title: "[COMPILER]" labels: compiler -assignees: somedevfox, Speak2Erase +assignees: '' --- diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..2bc1b101 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,23 @@ +**Connections** +_Link to the issues addressed by this PR, or dependent PRs in other repositories_ + +**Description** +_Describe what problem this is solving, and how it's solved._ + +**Testing** +_Explain how this change is tested._ + + + +**Checklist** + +- [ ] Run `cargo fmt`. +- [ ] Run `cargo clippy`. If applicable, add: + - [ ] `--target wasm32-unknown-unknown` +- [ ] Run `cargo build --release` +- [ ] If applicable, run `trunk build --release` \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..cddfd6da --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +. Translations are available at +. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..4e57c957 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,37 @@ +## How to contribute to Luminol + +#### **Find a bug?** + +* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/Astrabit-ST/Luminol/issues). + +* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/Astrabit-ST/Luminol/issues/new). Be sure to include a **title and clear description** and a **test case** demonstrating the expected behavior that is not occurring. + +* If possible, use the relevant bug report templates to create the issue. + * Try and provide a backtrace if possible. + * You can do this by piping Luminol's output into a file and causing the crash. + +#### **Did you write a patch that fixes a bug?** + +* Open a new GitHub pull request with the patch. + +* Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable. + +#### **Did you fix whitespace, format code, or make a purely cosmetic patch?** + +We do not generally accept these sorts of changes unless they substantially fix readability. + +#### **Do you intend to add a new feature or change an existing one?** + +* If you are adding a feature, check that it has not been suggested by searching on GitHub under [Issues](https://github.com/Astrabit-ST/Luminol/issues). If it hasn't, please open an issue for proper discussion. + +* After there is a consensus on the new feature, you are free to make a pull request. + +#### **Did you make a commit to the repository?** + +As a general rule of thumb we use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) for commit messages. It's okay if you miss it occasionally though! + +You can use the [Conventional Commits](https://marketplace.visualstudio.com/items?itemName=vivaxy.vscode-conventional-commits) Visual Studio Code extension to automatically write conventional commit messages for you. + +#### **Do you have questions about the source code?** + +* Ask any question about code design in the [discord server](https://discord.gg/8jZKmesKJy). diff --git a/FUNCTIONALITY.md b/FUNCTIONALITY.md new file mode 100644 index 00000000..d8a00ceb --- /dev/null +++ b/FUNCTIONALITY.md @@ -0,0 +1,108 @@ +## Functionality + +### Common funtionality + +- [x] Common event editor +- [x] Script editor +- [x] Sound test +- [x] Properly render blend modes and opacity + +### RPG Maker XP + +- [x] Load from rxdata +- [x] Load projects +- [x] Make new projects +- [ ] Create new maps +- [ ] Reorder maps +- [ ] Resize maps +- [x] Open events +- [ ] Edit event commands +- [x] View event commands +- [x] Change tiles on map +- [x] Multiple brush types +- [x] Change autotiles on map +- [x] Hardware accelerated tilemap +- [ ] Actor editor +- [ ] Class editor +- [ ] Skill editor +- [x] Item editor +- [ ] Weapon editor +- [ ] Armor editor +- [ ] Enemy editor +- [ ] Troop editor +- [ ] State editor +- [ ] Animation editor +- [ ] Tileset editor + +### RPG Maker VX + +- [ ] Load from rvdata +- [ ] Load projects +- [ ] Make new projects +- [ ] Create new maps +- [ ] Reorder maps +- [ ] Resize maps +- [ ] Open events +- [ ] Edit event commands +- [ ] View event commands +- [ ] Change tiles on map +- [ ] Multiple brush types +- [ ] Hardware accelerated tilemap +- [ ] Actor editor +- [ ] Class editor +- [ ] Skill editor +- [ ] Item editor +- [ ] Weapon editor +- [ ] Armor editor +- [ ] Enemy editor +- [ ] Troop editor +- [ ] State editor +- [ ] Animation editor +- [ ] Tileset editor +- [ ] System editor + +### RPG Maker VX Ace + +- [ ] Load from rvdata +- [ ] Load projects +- [ ] Make new projects +- [ ] Create new maps +- [ ] Reorder maps +- [ ] Resize maps +- [ ] Open events +- [ ] Edit event commands +- [ ] View event commands +- [ ] Change tiles on map +- [ ] Multiple brush types +- [ ] Hardware accelerated tilemap +- [ ] Actor editor +- [ ] Class editor +- [ ] Skill editor +- [ ] Item editor +- [ ] Weapon editor +- [ ] Armor editor +- [ ] Enemy editor +- [ ] Troop editor +- [ ] State editor +- [ ] Animation editor +- [ ] Tileset editor +- [ ] System editor + +### Extra functionality + +- [x] Edit multiple maps at the same time +- [x] Edit multiple events at the same time +- [x] Edit multiple scripts +- [ ] Language server support for script editor? +- [x] Custom event commands +- [x] Procedural event commands +- [ ] Debugger support? +- [ ] Custom data formats +- [ ] Extra layers +- [x] Move route previews +- [ ] r48 style raw manipulation of values +- [ ] Custom themes (sorta implemented) +- [ ] Styling different from egui's +- [ ] Lua plugin API? +- [ ] Text based event editor [based on keke](https://github.com/Astrabit-ST/keke) +- [ ] Extra properties \ No newline at end of file diff --git a/README.md b/README.md index a074bc9a..d7967545 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,20 @@ # Luminol -## LUMINOL IS LOOKING FOR CONTRIBUTORS! PLEASE CONTACT leelee.rs ON DISCORD OR EMAIL IF YOU WANT TO HELP - -![Crates.io](https://img.shields.io/crates/v/luminol)![Crates.io](https://img.shields.io/crates/l/luminol)![Crates.io](https://img.shields.io/crates/d/luminol)[![wakatime](https://wakatime.com/badge/user/5cff5352-cb55-44dc-819e-b47f231dcfa2/project/edee199a-95c3-4206-b23e-eb6f0a7e06ba.svg)](https://wakatime.com/badge/user/5cff5352-cb55-44dc-819e-b47f231dcfa2/project/edee199a-95c3-4206-b23e-eb6f0a7e06ba)![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/Astrabit-ST/Luminol)[![CI](https://github.com/Astrabit-ST/Luminol/actions/workflows/rust.yml/badge.svg)](https://github.com/Astrabit-ST/Luminol/actions/workflows/rust.yml)![GitHub issues](https://img.shields.io/github/issues/Astrabit-ST/Luminol) +[![wakatime](https://wakatime.com/badge/user/5cff5352-cb55-44dc-819e-b47f231dcfa2/project/edee199a-95c3-4206-b23e-eb6f0a7e06ba.svg)](https://wakatime.com/badge/user/5cff5352-cb55-44dc-819e-b47f231dcfa2/project/edee199a-95c3-4206-b23e-eb6f0a7e06ba)![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/Astrabit-ST/Luminol)[![Build status](https://img.shields.io/github/actions/workflow/status/Astrabit-ST/Luminol/build.yml)](https://github.com/Astrabit-ST/Luminol/actions/workflows/rust.yml)![GitHub issues](https://img.shields.io/github/issues/Astrabit-ST/Luminol)![v1.0](https://img.shields.io/github/milestones/progress/Astrabit-ST/Luminol/1?logo=steam&label=Steam%20release%20progress) Luminol is an experimental remake of the RGSS RPG Maker editors in Rust with love ❤️. +### Join [our discord](https://discord.gg/8jZKmesKJy) if you're interested in the project! + Luminol targets native builds with eframe. Luminol currently reads *only* rxdata (not rvdata or rvdata2, sorry VX and VX Ace users). In the past, Luminol used to exclusively read rusty object notation (ron) files made from [rmxp_extractor](https://github.com/Speak2Erase/rmxp-extractor). Now, it uses [alox-48](https://github.com/Speak2Erase/alox-48) to deserialize rxdata. It is not 100% perfect, if it does not open your project properly, [please file an issue](https://github.com/Astrabit-ST/Luminol/issues). -In the future a custom .lumina format is planned, as well as ron, rvdata 1 & 2, and json. +In the future a custom `.lumina` format is planned, as well as [ron](https://github.com/ron-rs/ron), `rvdata1` & `rvdata1`, and `json`. Luminol *may* use `Lua` for plugins in the future. It is something I am actively looking into. -## Credits - -- [@Speak2Erase](https://github.com/Speak2Erase): Luminol's main contributor -- [@somedevfox](https://github.com/somedevfox): Occasional contributor and creator of rsgss (a sister project of Luminol) -- [@white-axe](https://github.com/white-axe): New contributor -- [@Lionmeow](https://github.com/Lionmeow): Designer of Luminol's icon and Lumi - ## RGSS version support -Luminol is compatible only with **RGSS1** for now. RGSS2 & 3 use different tileset formats which Luminol does not support. +Luminol is compatible only with **RGSS1** for now. RGSS2 & 3 use different tileset formats which Luminol does not support (yet). There are plans to support them in the future, though. ~~Lily (Luminol's main contributor) does not have a copy of VX or VX Ace yet, so until then Luminol is focused on RGSS1. If you want, [you can buy her a copy](https://steamcommunity.com/id/lily-panpan/).~~ @@ -29,80 +22,58 @@ There are plans to support them in the future, though. Scratch that, thank you to [bobhostern?](https://steamcommunity.com/id/bobhostern/) for buying Lily VX Ace. Luminol, however will have compatibility modes for various RGSS1 compatible runtimes, usually enabling extra features. -Compatibility: -- RGSS1: Equivalent to RPG Maker XP -- mkxp/mkxp-freebird: Has extra layers -- mkxp-z: Has extra layers, support for playing movies, etc -- ModShot: (Luminol's target) extra layers, OpenAL effects, ruby gem support? -- rsgss: Likely the same as ModShot +## Browser support + +For the foreseeable future, Luminol can't support Firefox due to [Mozilla's stance on the Filesystem Access API](https://mozilla.github.io/standards-positions/). +Aside from Firefox, any recent chromium based browser should support Luminol! + +This includes Chrome (obviously) as well as Opera and Edge. +If you're on Linux at the moment for best performance you'll need Chrome canary as Google hasn't stabilized Linux WebGPU support yet. ## Running luminol Native builds are the main focus at the moment, but no official releases will be made until Luminol is stable. -Instead, you will have to compile luminol yourself, by grabbing your favorite nightly rust toolchain from [rustup](https://rustup.rs) and running `cargo build`. +If you want to test out Luminol anyway, you can grab a build from [our build workflow](https://github.com/Astrabit-ST/Luminol/actions/workflows/build.yml). +We're working on a website where you'll eventually be able to use the latest development build of Luminol! + +If you'd like to compile luminol yourself, you can by grabbing your favorite nightly rust toolchain from [rustup](https://rustup.rs) and running `cargo build`. +Additionally, to enable steamworks support pass `--features steamworks` to `cargo build`. -If you are on Linux, you will also need to grab clang and mold from your package manager. +Once cargo is finished compiling, the Luminol binary should be located at `target/release/luminol`. + +If you enabled steamworks support you'll also need to place the steamworks redistributable from `steamworks/redistributable_bin/` alongside your Luminol binary. + +If you are on Linux, you will also need to grab `clang` and `mold` from your package manager. +If your particular distro doesn't have those (or you can't use them) you can comment out these lines in [.cargo/config.toml](/.cargo/config.toml): +```toml +[target.x86_64-unknown-linux-gnu] +rustflags = [ + "-C", + "linker=clang", + "-C", + "link-arg=-fuse-ld=mold", + "-Z", + "threads=8", +] +``` + +We've also turned on the unstable `-Z threads=8` compiler flag to speed up build times. + +This is a pretty unstable feature at the moment and may cause compiler deadlocks. +Luckily cargo will detect when that happens and halt your build. Re-running `cargo build` continue your build without issue, though. Luminol has like a bajillion dependencies right now so it may take upwards of 15 minutes to compile. **You can not use one of the stable release channels.** +## Credits + +- [@Speak2Erase](https://github.com/Speak2Erase): Luminol's creator +- [@somedevfox](https://github.com/somedevfox): Occasional contributor and creator of rsgss (a sister project of Luminol) +- [@white-axe](https://github.com/white-axe): Brought back Luminol's Web build +- [@Lionmeow](https://github.com/Lionmeow): Designer of Luminol's icon and Lumi + ## Functionality -### RPG Maker XP - -Basic functionality: - -- [x] Load from rxdata -- [x] Load projects -- [x] Make new projects -- [ ] Create new maps -- [ ] Reorder maps -- [ ] Resize maps -- [x] Open events -- [ ] Edit event commands -- [x] View event commands -- [x] Change tiles on map -- [x] Multiple brush types -- [x] Change autotiles on map -- [x] Hardware accelerated tilemap -- [x] Properly render blend modes and opacity -- [x] Sound test -- [ ] Actor editor -- [ ] Class editor -- [ ] Skill editor -- [x] Item editor -- [ ] Weapon editor -- [ ] Armor editor -- [ ] Enemy editor -- [ ] Troop editor -- [ ] State editor -- [ ] Animation editor -- [ ] Tileset editor -- [x] Common event editor -- [ ] System editor -- [x] Script editor - -Extra functionality: - -- [x] Edit multiple maps at the same time -- [x] Edit multiple events at the same time -- [x] Edit multiple scripts -- [ ] Language server support for script editor? -- [x] Custom event commands -- [x] Procedural event commands -- [ ] Debugger support? -- [ ] Custom data formats -- [ ] Extra layers -- [x] Move route previews -- [ ] r48 style raw manipulation of values -- [ ] Custom themes (sorta implemented) -- [ ] Styling different from egui's -- [ ] Lua plugin API? -- [ ] Text based event editor [based on keke](https://github.com/Astrabit-ST/keke) -- [ ] Extra properties - -## Star History - -[![Star History Chart](https://api.star-history.com/svg?repos=Astrabit-ST/Luminol&type=Date)](https://star-history.com/#Astrabit-ST/Luminol&Date) +Please see [FUNCTIONALITY.md](/FUNCTIONALITY.md) \ No newline at end of file