wotuu / keystone.guru Goto Github PK
View Code? Open in Web Editor NEWA website where users can build and find their favorite routes for completing in Mythic Plus dungeons in World of Warcraft®
Home Page: https://keystone.guru/
A website where users can build and find their favorite routes for completing in Mythic Plus dungeons in World of Warcraft®
Home Page: https://keystone.guru/
It's starting to become a massive list of options. Add some tabs or something to make it better.
It is currently not possible to delete your routes. This should be easily done by adding a delete button to your profile's "my dungeon routes". Also add a confirmation so people don't accidentally delete routes. Soft delete things though, if someone visits a deleted route, a message should show that the author has deleted said route.
The site could use proper versioning (it's stuck in 1.0 now), there's no way to see from the version number what version the site is in or when the last change was done. I don't want to manually have to adjust a version somewhere, there needs to be some sort of tool to fix this for me, somehow.
I also want to make changelogs dynamic the way Factorio did it. If you didn't see the changelog for the last two releases, they automatically get put together and you can easily search through existing changelogs for a specific change. And/or couple any change to either a new feature, bug fix or performance increase (or more) so people can filter based on their interests.
We need to be able to convert all keystone.guru data to a MDT import string. This includes enemies, free drawing, etc.
There needs to be a clone button, if the weekly affixes change, I suspect people will rather adjust their existing routes than make new ones. To keep a healthy amount of routes for each affix, a clone button would be nice so that people can easily make a copy and adjust that one instead.
For now I've been thinking about a list of items you can select which characterize your run, such as:
Shroud required
Invis pot required
Run contains Death skip
Run contains Warlock skip
Run contains Mage skip (slow fall skip in Shrine ot Storm?)
List goes on; basically anything that falls in the category of "my group can't do these things because of composition or skill, I don't want to see these hard routes".
It's default Leaflet.draw functionality, but it doesn't work. The label should be changed to not say that. It'd be better if it actually worked but that's a bunch more work for now.
For some reason, ad blockers may or may not hide all orange buttons on the website. Figure out why they do this and fix it.
Currently you can only see enemies as a form of their aggressiveness (red, green and yellow dots). There needs to be more data on type of enemy (Undead, Humanoid etc.), perhaps some others, and you need the ability to switch around between various display layers. Proposed layers:
There should be a dropdown towards the top right where you can select what type of metric you want to display for all enemies on the map.
A bit of an ongoing issues for known mapping issues. I'll close and create new issues but for now this is a gathering point for issues that have been reported.
"packs were missing from the atal map, just one skyscreamer and another pack with a skyscreamer/toxic saurids"
This is probably a duplicate of the above, but putting it in here anyways:
"There seems to be a pack of Saurids missing in Atal on the priestess side of the bridge. The pack closest to the center is a pack of Saurids, and the one closer to the gate is Saurids + Skyscreamer."
"there seems to be a few missing packs in underrot after the first boss. There is a patting pack of plants and a pack with 2 bloodswarmers i believe]"
Add support for hotkeys, there's already a Hotkeys class since it works for the admin side. Just needs to be ported to the client side.
When adding a new route, the moment you hit the submit button it's immediately published and can be found in the search etc. At this point you want to edit the route and fill it up to your liking in peace, not have a half-ready route clogging up the search table.
So make a flag to mark routes as draft, then add a publish button to get them out of draft state. Adjust search to no longer search for those routes that are in draft. Also convert all existing routes to draft state so people have to be explicit about publishing.
I used the automatic placement of Google Ads on the website to save me having to do it myself. The results looked alright in the beginning, but in the end it placed them on strange positions all across the page. Not to mention the new UI layout completely broke with it enabled at all.
Time to put in some more effort for a tailored experience that won't annoy as much people as they would with the automatic placement.
For quick reference:
Maybe increase buttons size of main tools a little bit so they are more easier to spot. Or at least give some kind of color for main features (path and kill zones). Hotkeys for those features would be nice as well. I think left click for path, and right click for adding kill zone could work. Move map with middle mouse. It would give some smoothness for using this website. Now I feel like I end up searching correct tool.
Also definitely make map to be size of actual screen! Nothing is more horrible than have two moving components (map move, page scroll) in the same page. Makes things really messy! Now that I scroll things just go kinda ape sh*t because it can both zoom map and scroll page.
The delete button is a bit clunky to change over to. I'd prefer a right click option, which seems to already have the plumbing in place.
I think the right click option is a good idea. I'll have to think about it some more if this is a good addition moving forward. It may get a bit too easy to delete things. But then again it's quite easy to replace that which you just accidentally deleted.
Scrolling is perhaps another issue of its own, but the hotkeys + increase button size should be easily done.
Being able to export from Keystone.guru to MDT would be great. Do some research about how to generate a working string to import in MDT. Also perhaps contact the author(s) of MDT and see if there's some option for collaboration?
Deleting killzones is a bit iffy:
Hermit: Just had a strange issue where clicking on the killzone wouldn't let me link packs to it, refreshing the page fixed the issue.
Currently all enemies, packs, comments, killzones etc. are all loaded separately from each other. This works, but it unnecessarily causes the page to load slower than could be the case. Ideally, there should be one endpoint called mapdata
or something, which fetches all of these things at once and returns them.
Server-side this is not much of a problem, client-side this will require some rewrites to the way MapObjectGroups receive their data. They currently fetch their own data, this should probably be handled by the map instead, which then delegates the returned data to the MapObjectGroups instead. But that's still open for interpretation.
There's a couple of notes on the map that should pop up on every route, but they currently don't. Something broke but not sure what.
From a string encoded by MDT, we need to decode it so we can properly parse it and know what to import. For how MDT does it, to quote /u/BlackFayah: In case they don't want to collaborate, this is where the magic happens: https://github.com/nnogga/MethodDungeonTools/blob/master/Transmission.lua. They serialize > compress > encode.
Based on your group composition, you should be able to get a list of tips for a specific dungeon. Such as, as a DK you can enslave XYZ mob for added benefits, as a Warlock you can use XYZ skip etc. Apparently wowhead class guides has a list of class based tips for each dungeon. This could be a starting point for implementation.
Question is how we're going to implement this for the end user, I was thinking perhaps a pulldown you can summon inside the map. If I'm going to implement a full-screen map the information is still got to be accessible. Some food for thought.
To answer some, you know, FAQ. I also noticed the Infested functionality is not being used, I can imagine this is because people don't know how to use it since it's kinda not explained anywhere.
Using some real-time technologies, it would be great to collaborate with multiple people on creating one route. There's multiple technologies that could possibly be used for this, such as Signalr and likewise (Forced). I'm thinking of Vue since that's work relevant, but I gotta read up on that first.
Once I got the real-time bit going of the frameworks I actually do not think it'll be that much work. The JS back-end is quite OK done and I think it can be expanded easily.
Ticket for the future; it's a nice to have but low priority for now.
I did enter them manually in the live site, but they were overwritten by a new import of dungeon data. Enemy forces should be places inside the dungeon data.
A bunch of enemies have dangerous abilities, such as stuns, silences, magic shields (Kings' Rest/Tol Dagor) etc etc. It'd be great if these abilities could be mapped and displayed on the map itself.
First would be to gather relevant info about stuns etc., then to devise a system on mapping them and displaying them on the map in an intuitive way.
See title. Think it has something to do with the hidden teeming field I removed the other day.
This should not be possible, it causes all sorts of weird issues with mob counts etc. You cannot kill an enemy twice.
Also, deleting a kill mark does not remove the trash attached from the % counter
If requests to the web server fail for some reason, there is no feedback to the user that things are broken and/or not syncing properly. There should be a feedback mechanism that displays any issues to the user so they know something's up.
This ticket depends on #97 being finished. When it is, it needs to be able to import MDT free drawing to our own free drawing tool.
Currently publishing a route does not really reward the author in a meaningful way. There should be some metrics so authors are more incentivised to publish more routes. Some ideas include:
Above list can be expanded as I think of things.
A new feature that I'm eager to work on is something called teams. Or something close to it. The idea is that everyone can make a squad, invite people to join said team, and the team serves as a hub for the routes you use as a group. You can view your team's "home page" and see your routes there, see what routes your team members are working on etc.
There's probably more to think of but this one helps you organize routes for your team and keep them together.
Terminology is getting a bit confusing internally. Outward facing, a DungeonRoute is a Route, it should just be called that internally as well. An internal Route is also called a Route, it should just be a Path (or similar), it's less confusing.
Bit of an oversight, this should not be possible :)
Make something to put markers at places where you resurrect in the dungeon.
Some people like the feature, some don't. Simple way; introduce a toggle to enable/disable the behaviour of the map.
The possibilities for these skips should be shown on the map. Certain skips could be displayed in grayscale, with colors the moment the user mouses over/activates them. There needs to be a system for these kind of skips, preferably some generalized system that can be used for more things, like an A to B skip system, since that is technically what a skip is.
In the same vein, there's some skips in dungeons that you can do if you die. For example going left right after the first boss in the Underrot after you killed the third boss, or the Brazier skip in Shrine of the Storm right after the first boss once you killed the 2nd boss. They should always be marked.
The killzone currently just draws lines to all enemies that are in the killzone. This visualization is a bit poor, it looks bad and doesn't really make for a good overview. It looks bad on the preview as well. Implementing this visualization using alpha shapes would be a good start in trying to improve this system.
What should the default sorting be? It's by alphabet now, but that doesn't look too great. Weighted ratings? Sort by routes with full enemy forces?
There has been a request for a cookie opt-out. I did some research a while ago and I thought I was OK with having just a notification banner, but perhaps that's not enough.
Do some more research and figure out what exactly is required by law.
MDT uses a different format for presenting enemies/NPCs than Keystone.guru. MDT has a list of NPCs, and each NPC contains a list of 'clones' which equal the enemies in keystone.guru.
The problem is that these 'clones' only consist of an X, Y, sublevel (floor) and a group number. Possibly the array index can be used as well. In order to map the clones to the enemies, we're going to have to map it based on these variables. I propose the following:
This way, if a string is imported, we can match the user's selected enemies in MDT to keystone.guru enemies and save them appropriately.
There's been a call for anonymous route creation; ie without registering. See discussion here: https://www.reddit.com/r/CompetitiveWoW/comments/9meu1c/introducing_keystoneguru_plan_your_m_routes_online/e7ebr65
There is an idea to use separate viewing/editing links which allow viewing and, well, editing. I don't see a problem with this approach, in the world of spying and data abuse I can understand user's need for privacy.
Make it so that a user profile is coupled to a region. A region is used for determining when M+ dungeons reset and their affixes change, same can be said for timezone but then with more accuracy. As part of this, make a set of classes which make it easy to query what the current affixes are for this week, when the next week starts etc.
There needs to be an interface to start importing your route from a MDT string. The database needs to save your original import string used to generate the route. If there's any errors that'd allow for easier debugging. Also, if I decide to release with only a partial import (not wise imho, but still) I can do a partial re-import later when I've added the missing features.
If you fail the validation for creating a dungeon route, your race/class/spec selection is completely cleared.
If you select a 5th race but not a 1st, 2nd, 3rd, 4th race, the 5th race will apply to the first race instead.
I wanted to include this for launch, until I saw that the Infested mobs change every week and thus cannot be mapped traditionally.
I was thinking about adding a voting system where people can vote a mob yes/no as being Infested this week. Min amount of votes something like 2-3, if there's that amount of votes the mob is marked as Infested. No votes to allow incorrectly marked mobs as Infested as non-infested again if the amount of No votes is higher than the amount of Yes votes.
Any other ideas perhaps? This is something I want to work on sooner rather than later.
Since this is sort of required, add a checkbox when registering so that people have to agree to all legal documents. Also, prompt any already registered users to accept the policy. If they don't, they shouldn't be able to use the website (modal popup on most pages is enough).
It's one of these things I'd rather not do but it's gotta be done.
Was sort of a known issue; Patreon did not allow me to mock a Patron to see what their API sends me. Now that I have 2 patrons (wohoo!) I can fix this.
This is a high priority issue.
In order to be compatible with MDT free drawing, we're going to need to be able to do the same on the keystone.guru map. There's libraries for this, investigate which library would be of use. There needs to be support for map zooming as well.
This was removed because it was non-functional. It's a problem because the Datatables library does not play nice with nested relationships and then possibly sorting by them. Two options:
a) Fix the Datatables library and get rid of the custom code that's currently doing the actual work. I replied to/opened an issue in the Datatables repository and that contained a link which may be of use for this.
b) Get rid of Datatables and go full custom (and thus also possibly revert the custom change to Tracker to make that one work)
Labelled as a bug as this was broken but just got removed to not mislead people. Still a bug.
This is most probably due to it thinking we're one cycle ahead of where we actually are.
Currently the site assumes M+ level 10 at least (since 4 affixes). However, this is not the case for all runs. You should be able to select a M+ level (or range) and get the appropriate amount of affixes for that run.
Also, an option to somehow select a specific M+ level and have all health of enemies on the map be displayed the correct amount of health points.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.