HeartofPhos / exile-leveling

Path of Exile Leveling Guide

Home Page:https://HeartofPhos.github.io/exile-leveling/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add new "step" types, allow creating custom steps, tasks and notes.

Meigs2 opened this issue · comments

I can see build creators finding this tool extremely useful when creating builds and content, especially geared around new players. The gem system is neat, however it seems to just tell you to get everything at the soonest possible time.

Suggestions

  1. Enable build creators to add additional information to the existing step system
  2. Enable build creators to add additional custom "Tasks" to the system

My suggestion is to change the current text system and create a "Exile Leveling" text format/standard that is directly importable and exportable, and could be embedded in the notes section of a PoB to allow build creators to easily add custom steps, notes, and tasks in-between existing steps, notes within a step, and even custom tasks.

I think this would requires some fundamental changes to how the routes are stored, but because all the "steps" currently are static, generating this format once should be trivial.

Looking over the routes right now, they're simple ordered lists without transitions or directions, however a simple change could enable this behavior.

Notes and steps

I'm proposing some changes to how steps are stored to enable additional functionality. First up, notes and additional custom steps. Example:

... CURRENT Act1.txt route
{step-EjdHtt} {waypoint|1_1_4_1} #The Submerged Passage // use bracket notation to denote this is a step.
{step-IZuPsm} Find bridge, place {portal|set}
{info-IZuPsm} To make our lives easier, we place a portal here to come back to later. // "info" step, contained within above step.
{step-RztGQB} ➞ {enter|1_1_5} #The Ledge

All steps are now prefixed with a {} modifier which "types" the current step. All current "steps" would be converted to this system, with a random 6 character identifier.

the {info} type specifies that information can be attached to a specific step. This "info" would appear within the "IZuPsm" step as a dropdown that can be expanded when clicked. A step can have multiple notes, they would appear as multiple items. This would enable the ability to add things like explanations for new players as to why things are done, and as you'll see below, for build creators to add custom steps and information to those steps, or even existing ones.

Custom Steps/Notes/Tasks imported from PoB

Exile-leveling currently parses out gems from a PoB, so I suggest the utilization of the "notes" section of a PoB to add additional custom steps, info and tasks to the "base" website.

Build creators would have an "edit" mode to make all this, but more on that later. A creator would create their custom steps, and export them as text to paste into the notes section of PoB. Example:

... Creator makes build notes up here like normal then pastes this at the bottom:

{exile-leveling-begin}

{step-oZiREG|follows-IZuPsm} Custom step // follows the "Find bridge, place {portal|set}" step from above. 
    Would appear above RztGQB inherently.
{info-oZiREG} This note is info for the custom note above.
{info-IZuPsm|order-2} Remember to do xyz! // when parsed, adds this as the _2nd_ note in the list. If "|order-2" is omitted, it would appear first. 
![Support for markdown-style image embeds?](https://myoctocat.com/assets/images/base-octocat.svg)

{exile-leveling-end}

Updates to Tasks

I'd also like to suggest a sort of conditional "Task List" that could be added now or later that contains things that need to get done, but you haven't quite gotten around to, but need to eventually. First use case I thought of is tracking what skills you actually need before you transition away from a very early leveling skill like fireball to something else. You may need a minimum of 4-5 skills. The current system works, but there's no reminder, you have to scroll back up to see if you've completed the item. The current gem purchasing would move to this system.

{task-nJuTRN|trigger-IZuPsm} Do xyz. // This "Task" activates/becomes visible when the clicks the "Find bridge, place portal" step
    from earlier.
    This task could appear either in a menu on the right side of the screen, as a part of the task like the info
    notes, or both. This way, if a user needs to, say, buy a skill but does NOT have the currency right now, there's 
    a visible reminder for them.

{setting} create-gem-tasks False // maybe have build specific settings? Instead of exile-leveling determining when to buy skills, 
    have the build creator specify when a user is to buy what skills and when.

A PoB build creator could then add tasks to appear at specific steps:

... build notes

{exile-leveling-begin}

{task-vjrwxK} Consider x // Has no trigger, is just a plain task.
{task-rmoPUA|trigger-vjrwxK} This tasks appears when the above is completed.
... other notes/tasks

Having items tagged like this could also allow creators to create their notes in the browser and import/export the custom steps/notes/tasks as plaintext to paste into their PoB to be parsed.

Creator Mode

To create these notes, the app could have a "creator mode" that is toggled, and that adds extra buttons and things to the steps, like "Add Note", "Add step underneath", "Create Task", etc. This way users do not have to create the steps manually, and the app can store the notes in whatever format it needs to internally, then parse/export directly.

Thoughts on any of this? If approved I wouldn't mind poking around and trying to get some of this functionality to work sometime in the next few weeks.

Thanks for the detailed write up.

For notes & steps, I like the idea, a big concern on many steps is overloading it with information, some option to add a more detailed explanation has merit on it's own, and using unique identifiers to allow POB "metadata" to add to specific steps is a reasonable solution, I'm unsure about the explicit ordering, would rather keep it MVP and then adapt it based on user feedback

I have some concerns about tasks, from a functionality perspective I like the idea, having to scroll for gems is definitely not ideal, however from a UX perspective we would need some clear indication that someone must mark a given step as completed before their gems will get added as Task, a user might miss out on crucial information because they just decided to not mark a step as completed. an alternative might be have task steps appear as they currently do, but also append them to a task list for quick reference (and have their completed states linked obviously)

Regarding the unique identifiers for steps, a concern is identifiers used in a POB becoming incompatible with updated/custom routes, I don't foresee it being a major issue as people who make custom routes generally have their own goals anyway, and the default route(s) can be sanity checked to minimize damage if changes do need to happen.

I think it would be best to split this issue into 4 parts

  • updating the existing routes/steps to have unique identifiers (I can likely handle this as I need to rework some route processing logic to enable custom routes in the future anyway)
  • adding the info functionality, probably worth looking formalizing the POB notes data format while we're at it
  • creator mode
  • tasks

It's worth noting that I've reached out to several content creators and most have not been interested in the project or giving feedback about features they might like, I can attempt to reach out again and see if there's anyone who's willing to give some more feedback, until then it's probably safer to put off creator mode/tasks rather than building it and hoping they will come

I've merged #29 which adds a command to the seeding project to prefix ids to all routes, though opted to not commit the ids until things are a bit more fleshed out here.
Also added a way to have route parsing errors/warnings to be collected and displayed at a later time

After having implemented route editing I've realized that adding step ids would result in the editor becoming unpleasantly verbose, there are some other alternatives such as implicit ids but they suffer from either ambiguity or being very vulnerable to changes(hashes) else where in the route(index).

I think a better solution may be for POB notes to optionally specify a route override such as a pastebin link and extending the route editor with export functionality.

There are some issues with this solution too, it's vulnerable to format changes and future changes to the default route will not be reflected in the POB route

Open to other solutions/suggestions

I've opted to instead handle this with editing and custom routes.