Page 1 of 12 1 2 3 11 ... LastLast
Results 1 to 10 of 112

Thread: A DPS Simulator

  1. #1
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90

    A DPS Simulator

    Hello! Due to underwhelming demand for a personalized rotation simulation, currently the code isn't being offered. However, once a GUI and customization has been created, likely downloads will resume. For now, please help make the sim more accurate, and submit your suggestions for improvements or modifications! Thanks.

    Hi all, I was bored (no surprise here!) and so I decided to make a simulator for FF14.

    Now, I think there is an online one...? But I can't remember where I found it, and I don't know what it does exactly, so I decided to make my own.

    Please bear in mind the point of this simulator (at this point) is not to figure out which class is the best dps, what your best gear is, or to figure out your stat weights. The sim now has potency (and will have dps soon) rankings.

    Its just here to simulate rotations atm.

    Here is a sample output for a bard:

    Code:
    Starting Bard Simulation: Trial 0
    # of Targets: 3
    Boss|0	Add 1|0	Add 2|0	
    Base Critical Chance: 15%
    Recast Buffer: 100
    Fight Duration: 12000
    Execute Starts: 9600
    
    [0]	: AA - Autoattack - Boss  (100)
    [0]	: SS - Straight Shot - Boss  (140)
    [125]	: BL - Bloodletter - Boss  (150)
    [250]	: WB - Windbite - Boss  (60)
    [259]	: TICK - Tick - Boss 
    [259]	: WB_DOT - Windbite (DoT) - Boss  (40)
    [300]	: AA - Autoattack - Boss  (100)
    [375]	: HE - Hawk's Eye - Boss 
    [500]	: VB - Venomous Bite - Boss  (115)
    [559]	: TICK - Tick - Boss 
    [559]	: WB_DOT - Windbite (DoT) - Boss  (40)
    [559]	: VB_DOT - Venomous Bite (DoT) - Boss  (40.25)
    [600]	: AA - Autoattack - Boss  (172.5!)
    [625]	: RS - Raging Strikes - Boss 
    [750]	: WB - Windbite - Add 1  (82.8)
    [859]	: TICK - Tick - Boss 
    [859]	: WB_DOT - Windbite (DoT) - Boss  (40)
    [859]	: VB_DOT - Venomous Bite (DoT) - Boss  (40.25)
    [859]	: WB_DOT - Windbite (DoT) - Add 1  (55.2)
    [875]	: BFB - Blood for Blood - Boss 
    [900]	: AA - Autoattack - Boss  (165.6)
    [1000]	: VB - Venomous Bite - Add 1  (248.4!)
    [1125]	: IR - Internal Release - Boss 
    [1159]	: TICK - Tick - Boss 
    [1159]	: WB_DOT - Windbite (DoT) - Boss RoB! (60!)
    [1159]	: VB_DOT - Venomous Bite (DoT) - Boss  (40.25)
    [1159]	: WB_DOT - Windbite (DoT) - Add 1  (55.2)
    [1159]	: VB_DOT - Venomous Bite (DoT) - Add 1  (57.96)
    [1159]	: ROB_PROC - River of Blood - Boss 
    [1200]	: AA - Autoattack - Boss  (165.6)
    [1250]	: WB - Windbite - Add 2  (99.36)
    [1325]	: BL_CD_END - BL CD Ends - Boss 
    [1375]	: BL - Bloodletter - Boss  (248.4)
    [1459]	: TICK - Tick - Boss 
    [1459]	: WB_DOT - Windbite (DoT) - Boss  (40)
    [1459]	: VB_DOT - Venomous Bite (DoT) - Boss  (60.38!)
    [1459]	: WB_DOT - Windbite (DoT) - Add 1  (55.2)
    [1459]	: VB_DOT - Venomous Bite (DoT) - Add 1 RoB! (86.94!)
    [1459]	: WB_DOT - Windbite (DoT) - Add 2 RoB! (99.36!)
    [1459]	: ROB_PROC - River of Blood - Boss 
    [1459]	: ROB_PROC - River of Blood - Boss 
    [1500]	: AA - Autoattack - Boss  (248.4!)
    [1500]	: VB - Venomous Bite - Add 2  (248.4!)
    [1625]	: BL - Bloodletter - Boss  (248.4)
    [1750]	: HS - Heavy Shot - Boss  (372.6!)
    [1750]	: SS_PROC - Straighter Shot - Boss 
    [1759]	: TICK - Tick - Boss 
    [1759]	: WB_DOT - Windbite (DoT) - Boss  (40)
    [1759]	: WB_DOT - Windbite (DoT) - Add 1  (55.2)
    [1759]	: VB_DOT - Venomous Bite (DoT) - Add 1  (57.96)
    [1759]	: WB_DOT - Windbite (DoT) - Add 2  (66.24)
    [1759]	: VB_DOT - Venomous Bite (DoT) - Add 2  (57.96)
    [1759]	: VB_DOT - Venomous Bite (DoT) - Boss  (40.25)
    [1800]	: AA - Autoattack - Boss  (248.4!)
    [1875]	: BARRAGE - Barrage - Boss 
    [1900]	: SS_RECAST - SS Recast Timer - Boss 
    [1950]	: WB_RECAST - WB Recast Timer - Boss 
    [2000]	: SS_END - SS Ends - Boss 
    [2000]	: SS - Straight Shot - Boss Autocrit (347.76!)
    [2050]	: WB_END - WB Ends - Boss 
    [2059]	: TICK - Tick - Boss 
    [2059]	: VB_DOT - Venomous Bite (DoT) - Boss  (40.25)
    [2059]	: VB_DOT - Venomous Bite (DoT) - Add 1  (86.94!)
    [2059]	: WB_DOT - Windbite (DoT) - Add 2  (66.24)
    [2059]	: VB_DOT - Venomous Bite (DoT) - Add 2  (57.96)
    [2059]	: WB_DOT - Windbite (DoT) - Add 1  (55.2)
    [2100]	: AA - Autoattack - Boss x3 (Barrage) (496.8)
    [2125]	: FLAMING - Flaming Arrow - Boss 
    [2200]	: VB_RECAST - VB Recast Timer - Boss 
    [2250]	: WB - Windbite - Boss  (99.36)
    [2300]	: VB_END - VB Ends - Boss 
    [2359]	: TICK - Tick - Boss 
    [2359]	: WB_DOT - Windbite (DoT) - Boss RoB! (99.36!)
    [2359]	: WB_DOT - Windbite (DoT) - Add 1  (55.2)
    [2359]	: VB_DOT - Venomous Bite (DoT) - Add 1  (57.96)
    [2359]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 2  (35)
    [2359]	: WB_DOT - Windbite (DoT) - Add 2  (99.36!)
    [2359]	: VB_DOT - Venomous Bite (DoT) - Add 2 RoB! (86.94!)
    [2359]	: FLAMING_DOT - Flaming Arrow (DoT) - Boss  (35)
    [2359]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 1  (52.5!)
    [2359]	: ROB_PROC - River of Blood - Boss 
    [2359]	: ROB_PROC - River of Blood - Boss 
    [2375]	: HE_END - HE Ends - Boss 
    [2375]	: BL - Bloodletter - Boss  (324!)
    [2400]	: AA - Autoattack - Boss x3 (Barrage) (432)
    [2450]	: WB_RECAST - WB Recast Timer - Add 1 
    [2500]	: VB - Venomous Bite - Boss  (144)
    [2550]	: WB_END - WB Ends - Add 1 
    [2625]	: RS_END - RS Ends - Boss 
    [2625]	: IR_END - IR Ends - Boss 
    [2659]	: TICK - Tick - Boss 
    [2659]	: WB_DOT - Windbite (DoT) - Boss  (66.24)
    [2659]	: VB_DOT - Venomous Bite (DoT) - Add 2  (86.94!)
    [2659]	: FLAMING_DOT - Flaming Arrow (DoT) - Boss  (35)
    [2659]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 1  (35)
    [2659]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 2  (35)
    [2659]	: VB_DOT - Venomous Bite (DoT) - Boss  (50.4)
    [2659]	: VB_DOT - Venomous Bite (DoT) - Add 1  (57.96)
    [2659]	: WB_DOT - Windbite (DoT) - Add 2  (66.24)
    [2700]	: AA - Autoattack - Boss x3 (Barrage) (540!)
    [2700]	: VB_RECAST - VB Recast Timer - Add 1 
    [2750]	: WB - Windbite - Add 1  (108!)
    [2800]	: VB_END - VB Ends - Add 1 
    [2875]	: BARRAGE_END - Barrage Ends - Boss 
    [2875]	: BFB_END - BFB Ends - Boss 
    [2950]	: WB_RECAST - WB Recast Timer - Add 2 
    [2959]	: TICK - Tick - Boss 
    [2959]	: WB_DOT - Windbite (DoT) - Boss RoB! (99.36!)
    [2959]	: VB_DOT - Venomous Bite (DoT) - Boss  (50.4)
    [2959]	: ROB_PROC - River of Blood - Boss 
    [2959]	: WB_DOT - Windbite (DoT) - Add 1  (48)
    [2959]	: WB_DOT - Windbite (DoT) - Add 2  (99.36!)
    [2959]	: VB_DOT - Venomous Bite (DoT) - Add 2  (57.96)
    [2959]	: FLAMING_DOT - Flaming Arrow (DoT) - Boss  (52.5!)
    [2959]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 1  (35)
    [2959]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 2  (52.5!)
    [3000]	: AA - Autoattack - Boss  (100)
    [3000]	: VB - Venomous Bite - Add 1  (150!)
    [3050]	: WB_END - WB Ends - Add 2 
    [3125]	: BL - Bloodletter - Boss  (150)
    [3200]	: VB_RECAST - VB Recast Timer - Add 2 
    [3250]	: WB - Windbite - Add 2  (90!)
    [3259]	: TICK - Tick - Boss 
    [3259]	: WB_DOT - Windbite (DoT) - Boss RoB! (99.36!)
    [3259]	: VB_DOT - Venomous Bite (DoT) - Add 2 RoB! (86.94!)
    [3259]	: FLAMING_DOT - Flaming Arrow (DoT) - Boss  (35)
    [3259]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 1  (52.5!)
    [3259]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 2  (35)
    [3259]	: ROB_PROC - River of Blood - Boss 
    [3259]	: ROB_PROC - River of Blood - Boss 
    [3259]	: VB_DOT - Venomous Bite (DoT) - Boss RoB! (75.6!)
    [3259]	: WB_DOT - Windbite (DoT) - Add 1  (48)
    [3259]	: VB_DOT - Venomous Bite (DoT) - Add 1  (35)
    [3259]	: WB_DOT - Windbite (DoT) - Add 2 RoB! (60!)
    [3259]	: ROB_PROC - River of Blood - Boss 
    [3259]	: ROB_PROC - River of Blood - Boss 
    [3300]	: VB_END - VB Ends - Add 2 
    [3300]	: AA - Autoattack - Boss  (150!)
    [3375]	: BL - Bloodletter - Boss  (150)
    [3500]	: VB - Venomous Bite - Add 2  (100)
    [3559]	: TICK - Tick - Boss 
    [3559]	: WB_DOT - Windbite (DoT) - Boss  (99.36!)
    [3559]	: VB_DOT - Venomous Bite (DoT) - Add 1 RoB! (52.5!)
    [3559]	: WB_DOT - Windbite (DoT) - Add 2  (40)
    [3559]	: ROB_PROC - River of Blood - Boss 
    [3559]	: VB_DOT - Venomous Bite (DoT) - Add 2  (35)
    [3559]	: FLAMING_DOT - Flaming Arrow (DoT) - Boss  (35)
    [3559]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 1  (35)
    [3559]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 2  (35)
    [3559]	: VB_DOT - Venomous Bite (DoT) - Boss  (50.4)
    [3559]	: WB_DOT - Windbite (DoT) - Add 1 RoB! (72!)
    [3559]	: ROB_PROC - River of Blood - Boss 
    [3600]	: AA - Autoattack - Boss  (100)
    [3625]	: BL - Bloodletter - Boss  (150)
    [3750]	: HS - Heavy Shot - Boss  (150)
    [3859]	: TICK - Tick - Boss 
    [3859]	: WB_DOT - Windbite (DoT) - Boss  (99.36!)
    [3859]	: VB_DOT - Venomous Bite (DoT) - Add 1 RoB! (52.5!)
    [3859]	: WB_DOT - Windbite (DoT) - Add 2  (40)
    [3859]	: ROB_PROC - River of Blood - Boss 
    [3859]	: VB_DOT - Venomous Bite (DoT) - Add 2  (35)
    [3859]	: FLAMING_DOT - Flaming Arrow (DoT) - Boss  (52.5!)
    [3859]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 1  (52.5!)
    [3859]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 2  (35)
    [3859]	: VB_DOT - Venomous Bite (DoT) - Boss  (50.4)
    [3859]	: WB_DOT - Windbite (DoT) - Add 1  (72!)
    [3875]	: BL - Bloodletter - Boss  (225!)
    [3900]	: SS_RECAST - SS Recast Timer - Boss 
    [3900]	: AA - Autoattack - Boss  (100)
    [3950]	: WB_RECAST - WB Recast Timer - Boss 
    [4000]	: SS_END - SS Ends - Boss 
    [4000]	: SS - Straight Shot - Boss  (140)
    [4050]	: WB_END - WB Ends - Boss 
    [4125]	: INVIG - Invigorate - Boss 
    [4159]	: TICK - Tick - Boss 
    [4159]	: VB_DOT - Venomous Bite (DoT) - Boss  (50.4)
    [4159]	: VB_DOT - Venomous Bite (DoT) - Add 2  (35)
    [4159]	: FLAMING_DOT - Flaming Arrow (DoT) - Boss  (35)
    [4159]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 1  (35)
    [4159]	: FLAMING_DOT - Flaming Arrow (DoT) - Add 2  (52.5!)
    [4159]	: WB_DOT - Windbite (DoT) - Add 1  (48)
    [4159]	: VB_DOT - Venomous Bite (DoT) - Add 1  (35)
    [4159]	: WB_DOT - Windbite (DoT) - Add 2  (40)
    [4200]	: AA - Autoattack - Boss  (100)
    Here are some notes about the simulation as of right now:
    • All times are in hundredths of a second
    • GCD is currently 250 hundredths of a second
    • For realism, tick timing is randomly generated per simulation (from 0-3 seconds offset).
    • Fitting in 2 oGCD abilities per GCD is not simulated, as it is highly dependent on lag and the attack you're using, and is not consistent.
    • All times are 1 hundredths of a second past GCD, as it helps the program prioritize what to print.
    • Metrics are not in place yet, but will be soon
    • The timings for the program are all Event based in a Priority Queue. This leads to some quirkiness (such as with multiple procs, etc), but I believe I've fixed all the bugs.
    • I don't think its optimized but runs fast enough for my purposes. Can be a memory hog on repeated simulation running though.
    • Its written in Java because it has very nice libraries and its less work for me. Will likely be ported to C#.NET at some point following an overhaul, for ease of creating a GUI

    And here are a list of things to come
    • Metrics for how many attacks used, etc - Completed
    • Cooldowns and their usage - Completed
    • Critical hits being calculated - Completed
    • Executes - Completed
    • Potency listing - Completed
    • Autoattacks - Completed
    • DPS (or at least PPS) graph
    • Other classes - Currently all dps DoW (BRD, MNK, DRG) are simulated.
    • Customizable rotation - Will not be implemented most likely, until a port is made and scripting is enabled. Low on priority (hah!) list.

    Enjoy, and remember, feedback is always appreciated!
    (5)
    Last edited by pandabearcat; 11-01-2013 at 11:49 PM. Reason: Update6, release 1.0!

  2. #2
    Player
    EasymodeX's Avatar
    Join Date
    Sep 2013
    Posts
    900
    Character
    Lunairetic Emx
    World
    Midgardsormr
    Main Class
    Lancer Lv 50
    Chocobro has an online simulator but I didn't find much information on how it's simulating or any way to customize (fix) the decision process / rotation, so I ignored it.
    (0)

  3. #3
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90
    Quote Originally Posted by EasymodeX View Post
    Chocobro has an online simulator but I didn't find much information on how it's simulating or any way to customize (fix) the decision process / rotation, so I ignored it.
    Yea...I didn't use it either, I dunno how its working.

    Also I don't think it really provides information that you require.

    Mine can't on the fly change rotations either, but here's what I'm thinking:
    • The core engine provides/creates all the events, and keeps track of the state of the simulation
    • It will run the simulation and pass the events to the user's code block (or package, or interpreter, or whatever, I haven't thought this through)
    • The user either codes up (this is faster, but harder), or scripts up (slower, as there needs to be an interpreter) their own priority, and tells the engine what it does.

    Of course, first on the list is making sure the engine works XD
    (0)

  4. #4
    Player
    savant07's Avatar
    Join Date
    Sep 2013
    Posts
    165
    Character
    Ashen Valanar
    World
    Lamia
    Main Class
    Archer Lv 50
    Nice!

    With a proper working simulator, we can finally see that bards need a DPS buff and summoners are the best single target and AoE class!
    (0)

  5. #5
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90
    First update, added recast buffering!

    Update 1
    • Added functionality for recast buffering events. This simulates users wanting to refresh DoTs/Buffs prior to them falling off, allowing higher uptime.
    • Began moving code to modularness to allow users to script their own priorities.

    Hopefully this will eventually give us some insight as to when its best to recast things.

    Here are some stuff I need from others though:
    • How autoattacks work, what their potency is, and if/how they are affected by skill speed
    • If someone could test the different delays from when you start an action and when the buff/DoT is actually applied
    (0)

  6. #6
    Player
    EasymodeX's Avatar
    Join Date
    Sep 2013
    Posts
    900
    Character
    Lunairetic Emx
    World
    Midgardsormr
    Main Class
    Lancer Lv 50
    How autoattacks work, what their potency is, and if/how they are affected by skill speed
    That valk website has a formula.

    Essentially it's a "potency"-like coefficient based on the weapon damage, but the formula on the site scales it to a per-hit delay. A per-hit delay probably works better for your simulation though, so.

    Edit: Don't believe they are affected by SS but not 100% sure.

    If someone could test the different delays from when you start an action and when the buff/DoT is actually applied
    That sounds super-obnoxious, time-consuming, and lag-sensitive . In the interim I'd suggest something random like 0.7s or 1.0s (or have the user input their assumption). Stop-watching some video recordings could work as well.
    (0)
    Last edited by EasymodeX; 10-18-2013 at 02:34 AM.

  7. #7
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90
    Ugh I didn't want to get into actual DPS yet, was hoping for a simple potency correction.

    For now I'm going to assume its a 100 potency attack every 3 seconds, on the GCD (cause I'm pretty sure you always autoattack right as you start your first ability).

    Also I'm too lazy to do the lag timings, just going to assume they don't exist for now.

    They're easy enough to add in anyway.

    Big update soon w/ cooldowns, then hopefully I can get some time to put in potencies and metrics this evening.
    (0)

  8. #8
    Player
    EasymodeX's Avatar
    Join Date
    Sep 2013
    Posts
    900
    Character
    Lunairetic Emx
    World
    Midgardsormr
    Main Class
    Lancer Lv 50
    Ugh, you're gonna make me go back and understand the formula. ****

    Cutting out the str/det component (sidenote: AAs have a higher DET contribution than abilities) results in the ability potency coefficent to be "PPS / 100" parallel to the WAA/WD/delay. Replacing the "(WAA/WD)/delay" factor with the actual numbers for a 41 WD weapon results in "0.3333333" "aa_potency" per second.

    So, where you have 100pps calculated, you have a similar 33.33 AA pps. If you pretend the weapon delay is 3.0 seconds, that's 100 potency per AA.

    So, great assumption, although the DET factor is still different between AAs and abilities.
    (0)

  9. #9
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90
    Update 2
    Huge update!
    • Added autoattacks. They are simmed to be 100 potency attacks every 3 seconds.
    • Added cooldowns. Current cooldown usage is not to stack, but to use whenever they're up. I understand this isn't optimal, but there isn't reason for me to optimize it when its the user's job, once I get user made rotations working.
    • Added execute (by default, will start at 20% time remaining).
    • Added potency count. This takes into account simulation state and (supposedly) all variables. HE isn't correctly modeled because I don't know how much of an increase 15% dex is. Currently just modeled as 15% additional damage (which is high, obviously, but this is a proof of concept).
    • Added TP usage count.

    I'm working on adding TP/potency displays at the attack level, for more detailed reporting.
    (0)

  10. #10
    Player
    EasymodeX's Avatar
    Join Date
    Sep 2013
    Posts
    900
    Character
    Lunairetic Emx
    World
    Midgardsormr
    Main Class
    Lancer Lv 50
    Quote Originally Posted by pandabearcat View Post
    HE isn't correctly modeled because I don't know how much of an increase 15% dex is. Currently just modeled as 15% additional damage (which is high, obviously, but this is a proof of concept).
    12.9% is a rough estimate.
    (1)

Page 1 of 12 1 2 3 11 ... LastLast