Setup and host an AP world with a Crystalis slot for Dyna
Enter the host, port, and slot name into the fields above, then click "Connect"
If Dyna connects successfully, you'll see some messages announcing it, and will be able to click "Start Autorun"
Otherwise, look for messages explaning what went wrong, and see if you can resolve those issues.
Once you are ready to start, either click "Start Autorun" or start a !countdown in your own connected AP client. Dyna will begin performing logical checks to send items.
Dyna will continue performing checks until you click the option to "Allow Dyna to complete the game when possible"; when you are sure Dyna can stop doing checks (like if all other slots are in Go Mode, or your world is setup to release all items on goal completion),
you can check that box, and Dyna will complete the game once it is in Go Mode.
What is Dyna?
Dyna is a training companion that can run Crystalis slots in an Archipelago multiworld. You can setup a world like usual, host it on archipelago.gg (or anywhere you'd like), and have Dyna connect to an open Crystalis slot as a
player. You can play in another slot in the same multiworld, and Dyna will perform logical checks for its slot at a reasonable* pace, letting you practice a real-time multiworld whenever you'd like.
How much setup does Dyna need?
None! Dyna gets all the information it needs to run a game when it connects to the Archipelago multiworld; as long as Dyna can handle the flags for the game (sorry, no Wh yet!), Dyna will be good to go immediately. Dyna is run completely
in-browser with no additional software or connections required.
How does Dyna work? What is it "doing"?
Dyna "pretends" to run the game by identifying which checks are currently available in logic, estimating how long it would take to reach those, and picking the "best/fastest" one. It then waits for about* the time it would take a
live player to reach that check, and then it reports that check to the AP server, just like what happens when a live player picks up an item. Dyna repeats this loop until it is BK'd (no checks are available for it), or until the game is
completed. In this sense, it works exactly like a tracker, just one that performs AP checks in regular intervals.
Dyna follows the logical requirements for checks, so it's not just picking
up random items: it's sending items in an order that could be sent by a live player running a real rom. Dyna will report in the AP chat if it has no logical checks left, and is waiting on you to find its progression items; likewise, if your
slot has no checks left, you will need to wait on Dyna to find your progression - it does not know which items are at which locations, and can last-location things just like a human!
What is Dyna's algorithm for determing where to go, and how long it takes?
This version of Dyna runs a very simple greedyDijkstra's algorithm on a graph of the whole Crystalis world;
basically, it just grabs the closest available check, even if that orphans checks that a human would make (it loves to orphan the Fog Lamp check). The time it takes to reach a check is pulled out of my estimated based on
real-life travel time between various points in the game, and these times are adjusted to account for items like Flight or Teleport that make travel faster.
Dyna always follows game logic, and will never perform any checks that are not guaranteed to be accessible (i.e., "break logic"). This can make the seed slower overall (especially when Nw is off, and Dyna requires bracelets before fighting the Tetrarchs),
but usually leads to a better experience for the human partner.
Dyna's times are still very likely to be somewhat inaccurate: Dyna does not slow down for difficult enemy sets; does not heal, take damage, spend MP, or buy items; Dyna does not level or grind; and Dyna currently beats all bosses in a
constant, preset time, guaranteed. Improving accuracy is certainly possible, but is not a high priority right now, since Dyna is intended for training practice and the difference between a 30-second Sabera2 fight and a 120-second Sabera2
fight is overall insignificant in a 60+ minute game.
I found a bug/broken seed.
I don't have Bug Reporting yet, ping in the Crystalis Randomizer Discord if you'd like. I will do my best to address critical issues as I can.