Code Monkey home page Code Monkey logo

Comments (8)

awgil avatar awgil commented on August 19, 2024

I definitely need to add some pictures and details, that's true.

So far this plugin contains two major parts - "boss modules" (currently provides hints and "radar" for endwalker ex trials and savages, plus very simple hints for endwalker a-ranks), and "auto rotation" (an extension of ideas from xivcombo and moaction plugins, this is very experimental, currently there is some support for WAR and WHM).

from ffxiv_bossmod.

trini0n avatar trini0n commented on August 19, 2024

Commenting on this as it seems relevant - I'd be interested in helping out in creating auto rotations for different classes I play. I think an interesting one could be PLD since all rotations are more or less mapped out per fight by theorycrafters in the Balance.

If you have anything you'd like help with in terms of contributing towards rotations / skills / boss fights lmk!

from ffxiv_bossmod.

Moonlight-Everlit avatar Moonlight-Everlit commented on August 19, 2024

As I mainly play DRK and SAM/RPR, I sadly can't contribute much to PLD rotations yet - but when it comes to testing, I can totally help and it would give me a reason to play other classes some more ;)

from ffxiv_bossmod.

trini0n avatar trini0n commented on August 19, 2024

Oh, yeah I main PLD and I just meant to comment here to ask @awgil if there's any documentation on how to set the project up in the best way to contribute!

from ffxiv_bossmod.

awgil avatar awgil commented on August 19, 2024

There is no documentation currently. If you want to try writing your rotation module, it goes roughly like this:

  1. Set up the dev environment - should be really simple, just clone repo, open solution in VS and build. There are two projects - actual plugin and UIDev - latter is used to quickly iterate on things without running the game. To test that everything works correctly, you can remove the installed version of the plugin, then build from your clone - it should automatically be picked up by dalamud, and then hot reload will work etc.
  2. Look how existing rotations are made. Currently there is a fully-developed WAR module (that's my main, and it's quite solid I think, I've made orange logs with it) and WHM module (this is much less developed, I didn't play whm much yet and I don't have a clear vision of how good healer autorotation would look). I would assume all tanks and probably all dps would be quite similar to WAR, however. Specifically, look into source files in Autorotation directory.
  3. Class rotation module is typically made of two layers - "rotation" and "actions". Former contains rotation logic itself (list of actions, definition of state and strategy, and functions for selecting next-best action), latter contains logic to inspect game state, build state structures, and then execute appropriate actions. The main reason for that split is to be able to debug rotation logic out of game in UIDev project - it obviously doesn't have access to game state. For WAR, UIDev contains "simulator" which allows configuring initial state and then performs simulation. I found it very useful for debugging rotation logic.
  4. State/strategy split is a bit subjective, I might revise it in future. Also simulator will probably be at some point moved from UIDev to main plugin, since I plan to integrate it with cooldown planner module eventually.

from ffxiv_bossmod.

awgil avatar awgil commented on August 19, 2024

Also, few extra notes:

  1. This is alpha, I don't consider things like internal autorotation API or general module structur as 'stable', I might find reasons to revamp things in future. For example, I'd like to better support openers in rotation, and I probably want to improve integration with cooldown planner (so that you could do things like delay offensive cds until add phases).
  2. Adapting rotation from balance discord to autorotation module is not as straightforward as it might seem, since approaches are different. Autorotation module has to inspect state at any given moment and determine next-best action, it doesn't have any high-level context or plan of what it's trying to do that it can remember over course of multiple frames. One good example would be WAR's decision whether to spend gauge asap or preserve it until next buff window. Another example would be lack of a concept of "opener". I don't have a good idea of how to implement that in a robust way yet (you have to consider that in real fight unexpected things happen - people die, raidbuffs drift, bosses have downtime, etc. - and autorotation should handle all that gracefully and not degrade into doing stupid things).

from ffxiv_bossmod.

trini0n avatar trini0n commented on August 19, 2024

Gotcha, thanks I'll give it a shot. Do you use Discord / would you mind if I sent some questions through there? Running into some issues with building the project (namely The type or namespace name 'Replay' could not be found) and also have some general questions about C# since I'm not the most familiar with it.

Feel free to add me Brandon#6248 if you're open to it!

from ffxiv_bossmod.

awgil avatar awgil commented on August 19, 2024

Sure, you can write any questions to veyn#7947.

I'll be back at home in the evening, for now I'm not near my pc and have no idea what this error means :)

from ffxiv_bossmod.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.