rhelmot / CelesteMagicTimer

Autosplitter program for Celeste on Linux
MIT License
11 stars 7 forks source link

add a sides only version of anypercent.route #18

Closed afontenot closed 3 years ago

afontenot commented 3 years ago

For beginning Celeste speedrunners, it's common to only play the A sides in any%. I'm contributing a .route file that allows tracking this route. It uses all the subchapters exactly as they're printed in the game.

Incidentally, creating this file was an enormous pain. I wasn't able to figure out the scripts which seemed to be intended to create them, and so I actually ended up generating it by manipulating the objects directly in an interactive Python shell. I think it would probably be worthwhile to come up with a simple JSON format to allow the creation of routes using plain text.

rhelmot commented 3 years ago

Thanks! For the record, I built the existing anypercent.route file in the python shell as well, but only because it predates the editor scripts :P

Did you try using edit_splits.py? That's supposed to be the most user-friendly and general version of the tools to manipulate splits. If so I could use some pointers on how better to document it.

afontenot commented 3 years ago

Yep, that's what I tried. I couldn't figure out what the commands did. Actually, trying it now, I still can't figure it out even though I already sort of grok the structure of the Route class.

After entering the basic information I see "-> 01." printed. I assume this means I need to specify the first chapter, which is prologue. So I enter "chapter 0". That now says "<Trigger Enter 0>" which I think is what I want. Prologue doesn't have subchapters, so I enter "complete". Then "chapter 1". I guess I probably also need to manually add a named split after each entry? I kind of understand that after having seen the Route implementation, but I would have assumed they got inserted automatically after each trigger.

But now I'm stuck, I have no idea how to add a trigger for a subchapter.

In fact I think this might be impossible? Of the commands I see in edit_splits.py that add triggers, none of them add a asi.chapter_checkpoints trigger, which appears to be the relevant property in AutoSplitterInfo. So even if I could figure out exactly how to use the commands, it seems like you can't add routes that include checkpoint triggers. It's also not clear how you could add other triggers like rooms, or complex triggers depending on a combination of values in AutoSplitterInfo.

rhelmot commented 3 years ago

You're right, that's a missing feature. I'll add room name and checkpoint number triggers.

I can also add an extended discussion of the route format to the readme.

rhelmot commented 3 years ago

What do you think of https://github.com/rhelmot/CelesteMagicTimer/commit/3193a7756548559257ff871b59fc4fd3d706176f?

afontenot commented 3 years ago

What do you think of 3193a77?

Looks like you typoed some parentheses locations:

pieces.insert(cursor, Split([' '.join(args[1:])]), level=0) 

level=0 is supposed to be a keyword argument to Split, not to the list insertion.

The extended help is very useful. Making it obvious that it exists would be helpful, e.g. by edit_splits.py printing "Enter help at the prompt for available commands" and / or putting a note about that in the README.

Some information about how the user can get the chapter numbers would be useful. I think it's probably not obvious to users that Epilogue has a chapter number internally for example. Likewise with room numbers. Probably nothing you can do in the program, but at least some documentation about how this works might be useful.

afontenot commented 3 years ago

Some additional issues:

The real anypercent route file solves this by having a single split working on multiple levels, with two names. I don't think the editor supports this?