alostsock / craftingway

A ffxiv crafting tool

Home Page:https://craftingway.app/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

craftingway

Craftingway is a website that simulates the crafting system in FFXIV, similar to tools like Teamcraft. It also has a crafting solver built in that is able to simulate thousands or millions of possible crafting actions in just a few seconds, generating a crafting rotation based on the player's stats. The goal of this site is to provide an accessible way of creating improvised, ad hoc rotations quickly, without needing to follow a guide or tinker with a rotation for longer than necessary.

If you have questions, suggestions, or would like to contribute, please join the Discord server!

Demo

demo.webm

FAQ

Isn't this site kinda useless since Teamcraft exists?

  • Maybe. The first few iterations of this app were made just as an experiment that happened to work relatively well, so I figured I'd make a website out of it. I have received feedback from folks saying they enjoy the "no-frills" aspect of it, though.

There are some actions that don't exist in the app, like Hasty Touch and Rapid Synthesis. Will you be supporting these?

  • While possible, this is unlikely due to the amount of effort and complexity it would add. I intend to keep gameplay elements that involve RNG out of scope for as long as possible, since it is not necessary to rely on it for normal crafting (yet -- we'll see what the future holds). Keeping rotations deterministic also improves the performance of the solver in two ways: 1) it limits the number of available moves, and 2) it reduces the amount of branching possibilities to consider.

Will you be supporting expert crafts?

  • Probably not, for the reasons above.

How does the solver work?

Development

The site itself is a relatively straightforward React app. However, it heavily relies on the simulator/solver, which is a library written in Rust and compiled to WASM with Javascript bindings. The simulator package is included as a git submodule. If you haven't interacted with submodules before, you'll need to run this after cloning the repo:

git submodule update --init

From here, there are two ways to develop: either with or without a container.

Using the dev container

If you use VS Code, the editor should automatically detect the dev container and prompt you to use it when you open the project. After the container starts, it will start building the submodule.

Afterwards, run the following inside the container:

yarn run build-submodule # optional, if you want to rebuild the submodule
yarn install
yarn run dev

Podman

If you are on podman 4.4.x, downgrade to 4.3.x: containers/podman#17313 (comment)

Using a manually built container

You can build and run the container yourself with either podman or docker:

docker build -f Containerfile . -t craftingway
docker run --rm -it -v `pwd`:/usr/src craftingway bash

Then, run the yarn commands in the section above.

Without a container

Running the app requires Node.js, the yarn package manager, the Rust toolchain, and wasm-pack for compilation. All of these should be installed. A couple scripts also kinda assume a Linux system -- if you're on Windows, I strongly recommend just using WSL.

After everything is installed, you should be able to build the submodule and run the app using the same yarn commands above.

arm64 (including Apple silicon Macs)

wasm-pack 0.11.x supports arm64, but you will get "Error: no prebuilt wasm-opt binaries are available for this platform". Modify crafty/web/Cargo.toml as the error message suggests.

About

A ffxiv crafting tool

https://craftingway.app/

License:MIT License


Languages

Language:TypeScript 73.4%Language:SCSS 12.6%Language:Rust 9.6%Language:Shell 1.5%Language:CSS 0.9%Language:Dockerfile 0.8%Language:JavaScript 0.7%Language:HTML 0.4%