Skip to content

Commit

Permalink
Finish up readme
Browse files Browse the repository at this point in the history
  • Loading branch information
thecodewarrior committed Nov 29, 2020
1 parent b5c9da9 commit 5c0c528
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 19 deletions.
Binary file added Logo/Icon_512x512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
71 changes: 52 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,64 @@
# Using
<h1 align="center">
<br>
<img src="https://raw.github.com/thecodewarrior/SwiftSplit/master/Logo/Icon_512x512.png" title="SwiftSplit Icon"
width="256" height="256" alt="SwiftSplit Icon">
<br>
SwiftSplit
</h1>

- Open SwiftSplit
- Enter your admin password (SwiftSplit needs the admin password to read Celeste's game memory
- Go to [LiveSplit One](https://one.livesplit.org/)
- Open Celeste *after* SwiftSplit
SwiftSplit is a macOS autosplitter for Celeste, though given the time and motivation I hope to extend it to more than
just Celeste. It works by acting as a split server for [LiveSplit One](https://one.livesplit.org/), reading Celeste's
memory and translating that into split commands that LiveSplit understands.

## Using SwiftSplit

# Splits JSON
Launching and using SwiftSplit is fairly simple, with only three broad steps.
- Launching SwiftSplit and connecting it to Celeste
- Connecting LiveSplit One to the SwiftSplit server
- Loading your splits and route

Splits are configured using a JSON file and use "events" generated by SwiftSplit. They consist of a reset event and a
list of route events. Unlike the route, which listens for events in a specific order, the reset event can trigger at
any point during the route. Here's an example for Old Site:
### Connecting to Celeste
1. Open SwiftSplit
2. Open Celeste *after* SwiftSplit
- If you are using Everest, you're free to restart into `orig/Celeste.exe` as normal
3. SwiftSplit should automatically detect Celeste launching and report the "Connection status" as "Connecting…". During
this time *do not load any maps.* Stay on the main menu until the connection has been made. This may take up to 30
seconds after Celeste fully loads in extreme cases.

### Connecting to [LiveSplit One](https://one.livesplit.org/)
4. Copy the LiveSplit server URL displayed in SwiftSplit
5. Click "Connect to Server" in LiveSplit One and paste that URL
- Note: navigating away from the timer screen may make the server button say it isn't connected any more. This is a
bug. You can check that it's still connected with the "LiveSplit clients" field in SwiftSplit, which should read
"1". If that field reads "0", you need to connect. If it reads "2" or higher then you've connected multiple times
and will need to save your splits and reload LiveSplit One, otherwise each split will count multiple times.

### Loading the Run
6. Load up your splits in LiveSplit One
7. Load the corresponding route JSON in SwiftSplit by either clicking "Load Route" or dragging the `.json` file onto the
"Route" box in SwiftSplit.

## Pre-made splits
Pre-made splits and route JSON files for Any% can be found [here](https://github.com/thecodewarrior/SwiftSplit/tree/master/example).
The listed `.lss` files can be imported directly into LiveSplit One and the corresponding `.json` files can be loaded
into SwiftSplit.

# Route JSON
Routes are configured using a JSON file and use "events" generated by SwiftSplit. They consist of a reset event and a
list of route events. SwiftSplit expects route events in a specific order and triggers splits on those events. The reset
event can trigger at any point during the route and will reset the run.

Here's an example for Old Site Any%:
```json
{
"useFileTime": false,
"reset": "reset chapter",
"route": [
"start chapter 2",
"d8 > d3",
"3x > 3",
"8 > 9",
"10 > 2",
"12 > 13",
"start chapter 2 ## Start",
"d8 > d3 ## - Mirror",
"3x > 3 ## Intervention",
"10 > 2 ## - Escape",
"13 > end_0 ## Awake",
"complete chapter 2"
]
}
Expand All @@ -36,11 +72,8 @@ The currently defined events are (`<...>` indicates a fill-in parameter):
looking at the `Level: Name:` when connected to Celeste, or by enabling debug and hovering over the screen in the map
editor.

Note that the *exact* text is important. Spaces and capitalization have to match.

Note that the *exact* text is important. Spaces and capitalization have to match, with a couple additions:
- Inserting an exclamation point (`!`) at the beginning of an event will cause that event to not trigger a split. This
can be useful when your route passes between two screens multiple times but you only want one split.
- Anything after a ` ##` (*exactly* one space and two pound signs) will be trimmed off. This can be useful for
explaining events.


0 comments on commit 5c0c528

Please sign in to comment.