simulationcraft / simc

Simulationcraft engine/GUI
GNU General Public License v3.0
1.41k stars 697 forks source link

Suggestion: Groups #416

Closed navv1234 closed 9 years ago

navv1234 commented 9 years ago

Originally reported on Google Code with ID 417

MMO Champ has had a slick Raid Comp tool on their website for quite some time:

http://raidcomp.mmo-champion.com/

The idea I have is to get Simulationcraft to look at extending this kind of thing,
but with DPS, Healing and tanking capability for each raid encounter.

What I'd like to see is a way to save profiles of players to Simulationcraft so they
could stack in a raid, and only provide the buffs that the players in that raid provide,
and run a DPS output, plus the time to kill.

We could probably include dropdown menus that would tweak and modify each player's
skill level. It would be very humourous to see wipes simulated if every player was
set to "Noob" skill level. Plus it would be nice to see how a "Pro" skill level group
would probably handle each encounter.

Ideally I'd like to see movement, and positioning of fights simulated.

I'd like to include some kind of theory for accidents where adds would get out of control
(for example if you didn't bring enough ranged or slows to BwD Nefarian)...

I'm pretty sure this could be accomplished by allowing each player profile to be saved
and then hot-linked to a raid UI. Then by selecting the fight from a dropdown menu,
you could click GO and Simulationcraft would crunch the numbers on that fight.

I'd like to see how each phase of the fight breaks down also.

I'm sure this would be a considerable amount of work, but it's possible that current
parses could help to model this kind of feature.

I have some video game design experience from previous modding and such and I would
be willing to donate my time to help bring this about.

Ideally it could be possible to create a UI where players could even add abilities
to fake bosses, timed events, cooldown events and such -- just like the game. So maybe
we could do some theorycrafting inside Simulationcraft that renders some kind of benefit
outside of simply what kind of DPS we'd see in a parse, and more so the kinds of true
numbers to expect out of each possible encounter.

This is a tall order, but... I think it's possible and it would really help raiders
and raid leaders to understand fight mechanics and I think it could lower all of our
repair bills.

Reported by geekster on 2011-01-12 16:30:29

navv1234 commented 9 years ago
We already have some of these features in place:
-Ability to only use buffs/debuffs from the players in the sim
-Ability to save profiles
-Set individual player skill
-Add raid events with stuns, in-vulnerabilities, etc.
-Set target's health
-Add incoming damage raid events
-Add "adds"
-Add players to groups

We don't support true adds, they're more ghosts that last for X and then disappear,
with their damage being attributed to overall damage, not broken down by target. Because
of that we don't have proper dot support on adds, which limits anything but "cleave"
like abilities (cleave, chain lightning, etc). This was being worked on, but with the
expansion release, work has slowed to a stop.

All of that allows you to closely mimic the dps aspect of raid encounters, sans true
add support.

What we do not have is true encounters programmed, nor an ability to simulate poor
add control or something of that sort. Also healing support is basically non-existent,
with only a "rotation" mindset currently allowed.

Another hurdle is the UI, we don't have a UI developer, other than what Nate does :D,
which is why we don't have a paper doll frame setup yet and instead have support for
chardev profiles, as well as armory and wowhead.

Phase breakdowns would again require telling when phases are broken up and adding support
for what determines the transition between them, etc. Again, dependent on getting a
real raid simulated, which depends on a lot of back end changes.

Considerable amount of work doesn't quite begin to describe it, but if you're sincere
in your need to help, talk to Nate and you can begin on it setting up the background
work to move forward with the rest.

Reported by swbusche on 2011-01-12 16:57:45

navv1234 commented 9 years ago
SimC currently supports multiple actors in the raid.  You can turn off the buff overrides
and then you only get buffs from those present in the sim.

While we do support a variety of raid events, our lack of real support for multi-target
makes modeling actual encounters impossible.  

I do not want to be a wet blanket, but this is so far outside our reach that it renders
planning almost fruitless.  The first step is multi-target support.  The second step
is moving from a 1D model to a 2D model.  I cannot begin to tell you how huge both
of those steps are for our player AI.

And that is not even talking about healing/tanking......

TC tools primarily provide the fine-tuning after a human has established the general
strategy.  I fear it will remain that way for a long time.

All that being said........  Things happen in SimC because somebody is excited about
implementing it.  If you have the excitement and the endurance, then Welcome Aboard!
 Email me a google-ID you would like to have commit access and an email-ID (perhaps
the same) that I can send an invite to the developers mailing list.  After that jump
on irc.stratics.com (#simulationcraft) and start getting your hands dirty.

Reported by natehieter on 2011-01-12 16:59:22

navv1234 commented 9 years ago
Thanks guys! I'm interested.

Let me start by doing a logic map of what I'm talking about so that it flows a little
better.

You'll find that my strengths are in design, and strategy. I will try to pseudo-code
this out a bit and give it a skeleton before trying to implement it.

I'm sure if you think the logic works, we could get there. Plus if moving from a 1d
to 2d model and gaining multi-target support is going to be difficult, perhaps having
a good reason to get there will help? :)

Reported by geekster on 2011-01-12 17:04:02

navv1234 commented 9 years ago
Still interested in better describing this for you and I've been exploring ideas about
how best to apply Simulationcraft's current approach with one that breaks each fight
into known mechanics, using a group dynamic approach.

The main reason for this would be to test theory on how best to defeat new boss encounters
by coming up with boss kill strategies in this proposed simulationcraft raid encounter
editor.

So we would need to be able to do things like create a boss, create different phases
with the fight, and describe what is happening to all the actors in the fight. We would
need to be able to quickly come up with fight scenarios to try new and different things
to see how they play out.

Therefore I see a kind of modularized simc output. The rotation or priority casting
sequences and such will be best-case, but will need to be able to be diminished by
movement, by interrupts, by timed events.

So I think what I'm talking about here is a master raid design program that lets any
user create a boss encounter, and also share the encounter with other users.

So if Tankspot, for example, wanted to show a video on how to Kill hardmode Nef, then
they could include a link to the simc raid editor they designed that shows the fight
in detail, linking to boss abilities, linking to players and their abilities for each
sequence of the fight.

I'm in the process of creating a logic-map of this for you but wanted to bring you
up to date on what I was really suggesting.

I'm not suggesting merely a DPS simulation that says with optimal conditions, you get
a fixed number as your probable DPS -- but an overall raid strategy that could show
where things are going wrong or going right.

Like what about if you had a mod for the game that recorded necessary detail of the
fight that could be imported into SIMC and then used to map out the encounter?

Long term, this could provide beneficial information or it could be a colossal waste
of time if it wasn't implemented correctly.

As of right now, SIMC is very useful as a way of gearing and itemizing for DPS, but
it doesn't contribute to boss mechanic understanding, fight preparation or even tank
and healer itemization and I think it should do that stuff because then it would be
a complete solution.

Perhaps the raid planner could be like a charting program first and then gets upgraded
over time to where this could essentially take any fight, and tell you the most optimal
method for a 10 or 25 player team to get an easier kill.

I wonder if that's even possible but I am suspecting that it definitely COULD be.

Reported by geekster on 2011-01-17 21:30:24

navv1234 commented 9 years ago
Anything can be done, but like you said, SimC simulates DPS, you want to make it simulate
raids. That doesn't just require a few lines of codes, it requires LARGE framework
changes including, but not limited to:
-True Multitarget Suppor
-Healing Support
-True Tank Support
-Extending the current Raid Events module
-Adding Boss abilities
-Extending movement

That's just a start and isn't even close to simulating user reactions beyond simple
things like move X and maybe dps Y if it's alive. The big thing is, this all REQUIRES
someone to do this. The majority of us do what we can to the dps modules as it's an
easy framework to work with. The hard part is not only setting up the framework for
all of those things, plus more, but then getting them correct for 10 classes and 30
specs.

In a nutshell, you want an entirely new program, that uses our dps engine for that
part.

But again, as Nate said, you're more than welcome to start on the changes, adding in
functionality where it's needed, as there are many places that can be improved, it
simply takes someone with the time and know-how to do it.

Reported by swbusche on 2011-01-17 22:20:24

navv1234 commented 9 years ago
You're right. SIMC is 1d, but what I'm asking for is going to be too tall of an order
to be managed any time soon. Unless I port the SIMC engine to a game like Quake3 and
run numbers that way. That could be really interesting!

Reported by geekster on 2011-01-17 22:41:54

navv1234 commented 9 years ago
The more I think about it, this is exactly what this project needs. Quake 3 source is
GPL and writing a mod even to do what is expected here probably wouldn't be that hard.
Going to see what I can drum up over at IOQuake3's website, since they appear to be
active.

Reported by geekster on 2011-01-18 17:26:53

navv1234 commented 9 years ago
If you go straight to 3D space, we'd end up with DPS in 3D space, which since we really
only simulate tank and spank and ghost adds, would be the exact same as what we have
now.

Reported by swbusche on 2011-01-18 17:44:01

navv1234 commented 9 years ago
@8

You're right. A direct port of SIMC in its current form would result in little benefit
because it would be doing the same thing as the current iteration of SIMC. But if the
SIMC source was used as a base, it could be extended to suit the needs of something
like this at least in part. No healing, no tanking... that would have to get added
before this would be of any use.

I think the real argument for 3d space is movement and how that affects the numbers,
and how that turns a raid leaders dreams of how strategies should happen from being
real or a fantasy. You can't get that information from SIMC right now and you could
get it from a raid simulator. But SIMC is wonderful for getting a sense of how to spec
for raw dps. Plus a lot of spells and abilities I'm not sure if they are modeled in
SIMC or not. Like for example, is there a model for the Warlock netherprotection? Currently
it's not indicated I should have this in my rotation, but I try to keep 100% uptime
so it helps conserve healer mana.

Every feasible spell and ability would have to be modeled if this project was to be
viable... both from players, bosses and adds. Now that requires further research before
I could begin because I would have to be certain that whatever engine I started this
on was going to be able to accommodate that level of detail in a way that wouldn't
cripple output or cause buffer overflows. Q3 suffered from buffer overflow problems
when too many abilities were available in a given mod, so that may have changed between
that other open source versions of the game, or maybe Q4... but it would be a deal-breaker.

Like regarding DPS simulation... you can't tell mathematically how fast someone is
going to be able to get out of the way of some random thing happening to them. Guesswork
could be involved in that, but it's still guesswork unless you are really simulating
it in 3d space.

3d scripts that were created to simulate how WoW conducts raids would help us to see
a wide variety of numbers instead of the same numbers every time, also. So good clean
fights we see certain classes pulling ahead of others. Each iteration of the fight
would be different and therefore averages wouldn't play out the same. Lucky RNG again,
different numbers would result.

Plus we could playback the fight in realtime, and show the actors moving in the fight,
DPSing the boss, as the environs were changing, and the fight was moving phase-to-phase.
How great would that be in teaching people to raid and saving some gold on repair bills?

A strategy interface would be a required constraint, to allow raid leaders to create
raid strategies for the fight, and then test them out. You could see how if you didn't
position the raid properly, it would cause a wipe because your tank might outrange
healers on his kite path, or the DPS isn't able to get in casting range on the boss
because of something happening that is pushing them too far away.

The end result we could see the fastest possible kill methods without paying for it
in repair bills.

It's a good idea to model after the game in a way that would benefit a lot of different
players. I think the goal should be that it would help every class improve their game
and prepare for harder challenges.

A side effect -- it's also possible to create an arena, and have an arena comp testing
feature to it, I mean after the pve stuff is done. Once the base code is ready there
are a lot of possibilities for using this.

Fights could be analyzed based on a real-3d fight script, with mobs at the health they
have, doing the spells and abilities they do to try and wipe the raid... Mechanics,
environs (debuff zones, buff zones... etc), spawns, raid movement, raid grouping, multitargeting,
group tasks... all could be scripted for each fight and raid comp and the numbers would
model better, considering it would be put to the engine to calculate how everything
plays out.

It might be too tall an order... but it's certainly worth my time to dig deeper here
and see if it could be done. That would be a hell of a lot of fun to create I think.
:)

Reported by geekster on 2011-01-18 18:52:39

navv1234 commented 9 years ago
The biggest problem is you're trying to decide what color to paint the car, when the
car doesn't even have doors yet.

For instance start with: "Every feasible spell and ability would have to be modeled",
this is doable now. Work in steps towards the goal, not starting with the final product.

Reported by swbusche on 2011-01-18 19:12:44

navv1234 commented 9 years ago
>The biggest problem is you're trying to decide what color to paint the car, when the
car doesn't even have doors yet.

How so? Suggesting a 3d engine port of SIMC in order to depict realistic raid simulation
model certainly couldn't be considered a cosmetic change. Are you saying that the SIMC
code isn't ready to be put into a third dimension but that it would be faster/better/easier
to code it for a single dimension first? If so...

Consider the idea that a real physics engine could lend you the needed base for interpreting
time and space during the raid... and that rather than reinvent the wheel, this is
a good direction... and certainly not a cosmetic direction.

Here let's consider the Nefarian fight in BWD.

The following certainly could be described in a 1d way, and iterations could be applied
so that SIMC could calculate DPS numbers, but overall differences in strategy would
be difficult to interpret without having that 3d context, IMHO.

Phase 1 (events to be described):

Off-tank pulls Ony, by running and dropping down into the pit, the raid drops down
after.

OT pulls Ony to a fixed point on the map.

DPS starts on ony after everyone drops down and some players are able to cast in the
air during the fall. Certain spells won't start until players are in position.

Main DPS group is in beside Ony, who faces now towards the direction of the elevator,
but in the pit.

Adds start to pop up at what seems like random spots in the pit.

Certain players must now stop DPS and CC adds.

Nef drops down and must get picked up. Nefs wings obscure visibility from players.
Less experienced players won't be able to target adds for cc and some cc will break,
causing damage to the raid that must be healed through. Okay maybe it's minor.

Ony must now be turned because she's about to release static. Does the OT turn her
the right way? Are some players standing where her sparks will go?

Melee DPS begins on Nef as Nef is now in position.

Nef crackles through phase 1 every 10%, rinse/repeat until Ony dies.

Phase 2:
Dots left on Nef might cause another crackle and gib players who aren't topped off.

Everyone runs to their pedestals. (are they good enough to be spaced out so they don't
chain AOE damage to one another?)

Lava starts to rise, players must spam jump now (not DPS), until the lava is at the
level and everyone can climb onto the pedestals. Debuff from lava stacks ever tick
on every player touching lava and will increase damage to the player.

Adds spawn on pedestals just before most people are able to climb up, and the adds
begin to cast some spell that must be interrupted.

Adds are DPS'd down, except one add that is DPS'd to low health so DPS can bring Nef
to the appropriate health level before rolling into Phase 3.

Nef reaches the appropriate level, the group kills the add, and lava begins to lower.

Ranged can DPS Nef during this period but if he's close to a factor of 10%, you want
to call STOP on him until he can be positioned for P3.

Phase 3:
Lava is now gone, drop down and get the raid topped up.

Nef is pulled to the far side of the room and DPS starts on him when he's in position.

Try to get him to breath on the adds at once, which should be in a pile so they all
come up at once to be off tanked.

OT kites adds away from fire on the ground by watching Nef for the shadow-crash like
environs he spits out.

DPS stays on Nef, moving away from fire.

Tank/spank to a kill.

Now that said... there are any number of errors in the above strategy, but that's one
possible way of doing it. There are other ways that won't work and they will become
obvious. Like if you apply fears or slows in P3, that will ensure your adds stand in
fire and have their energy stacks replenished.

Follow up...

You're right that SIMC could totally describe the above fight and it could handle it.
But you wouldn't have a visual description of the fight that could enable some tweaking
of the strategy very well. I don't think that would translate very well for a bigger
audience. I think that you'd definitely have some folks who would be all over it for
a 1d output of raid strategies, but some players wouldn't get it.

I also doubt that just anyone would download a big game just to see how raids work.
Many wouldn't bother, but it would still be fun to build something like that and watch
it do its thing.

The goal is the final product, and the steps there are measured from the expected result,
in best case scenarios. Start at the end, and you will get to where you want to be.

What I see for a 3d description of the Nefarian fight is the actual map, created to
scale. It certainly doesn't need to look the same but it should have the same shape.

The bosses should be placed in the map in their starting positions with Nef circling
the group, and Ony facing the elevator in the bottom of the pit.

Then you drop raid actors in to the starting spot, clumped up.

I can imagine a raid movement line extending from the first spot, down to Ony.

OT's movement line then moves Ony into position.

A DPS zone could be placed then that lasts for Phase 1, in the middle of the room but
off to the right a bit.

Etc, etc...

Does this make any sense?

Reported by geekster on 2011-01-18 21:08:52

navv1234 commented 9 years ago
Maybe I should have said you want to install door locks on a car without doors.

Lets say we're currently here at point "A"
If our project progresses  something like this:
A - Current State
B - True Multi-Target Support
C - Heal Support
D - etc
A.B.C.D...->>..............................Z.

Z would be the 3D simulation with everything you just said.

For example, from your implementation of adding in 3D alone, we somewhere picked up
support for true adds, tank pickups, cc, phases of a fight, boss abilities, and more.

I understand what you want, but not the way you want to go about it. If we're at A,
the next logical step is somewhere between A and Z, not straight to Z.

If the ultimate goal is what you just said, awesome. But we have to be able to get
there and it's easier to progress one piece at a time, then to try and work on the
entire end goal at once.

Reported by swbusche on 2011-01-18 21:23:41

navv1234 commented 9 years ago
I hope you don't think I'm trying to rush you. Not the case. In fact, the opposite.

I'm trying to help you.

A physics engine is going to handle the movement part of a raid, the positioning part,
and the entity part -- the spacial placement at any given time. Ideally you could fast-forward
and rewind a raid by recording to a demo file. This is supported already by Quake 3.

That's where you get a huge time savings, trying to code a physics engine yourself.

Like look at how hard you're saying multi-targeting support is going to be. That's
because you'd have to think of the physics involved in a mathematical way, the timing
involved between targeting one mob and another, accounting for possible movement of
the add, possible other factors like what it's doing.

I'd say you probably can't do that effectively at all in a single dimension, can you?

If it was easy, you'd have done it by now, right? This stuff is already supported in
a 3d engine, like Quake.

Reported by geekster on 2011-01-18 22:02:10

navv1234 commented 9 years ago
Okay so just to bring you up to date, I've researched this a bit and long-story short,
there is too much of a risk that Blizzard would C&D the project, so that makes it not
worth pursuing.

Once you take simulation of World of Warcraft raiding to the third dimension, it would
probably strike too close to home for Blizzard's attorneys, even if it was only meant
to be a simulator and nothing more. Some folks would download it just to play with
it, perhaps not even having active World of Warcraft subscriptions... so Blizzard would
definitely shut it down, wasting all that time and effort on the part of the design
team involved.

Plus if it was GPL it wouldn't be too long before somebody modded it so it could serve
as an alternative to raiding in World of Warcraft. The infrastructure needed to create
a viable World of Warcraft 3d simulator, could easily be used to create a clone of
the game itself, or at least the raiding part of the game.

Blizzard's lawyers would have no choice but to shut it down.

But it was a neat idea. You guys are safe as long as your program remains the way it
is because it would only be used by people who play the game, as it stands, and not
other people looking to amuse themselves.

I think if you decided to venture into 3d sim, you'd be crossing a boundary.

Reported by geekster on 2011-01-25 01:46:36

navv1234 commented 9 years ago
There are zero plans for a 3D sim, looks like we're safe.

Reported by swbusche on 2011-01-25 01:51:40

navv1234 commented 9 years ago

Reported by natehieter on 2013-03-27 00:54:56

navv1234 commented 9 years ago
I just could not help myself.....

Reported by natehieter on 2013-03-27 01:44:38