Skip to content

Instantly share code, notes, and snippets.

@jhkrischel
Last active Dec 10, 2015
Embed
What would you like to do?
Perl script for simulating fate core combat

WE HAVE MOVED

You can find the Fate Core Combat Simulator here:

https://stash.krischel.org:444/projects/PUB/repos/fate-rpg/browse

If you want to git clone, you'll have to skip ssl verification:

git -c http.sslVerify=false clone https://stash.krischel.org:444/scm/pub/fate-rpg.git

After you've cloned, you can permanently skip ssl verification for the repo with this command:

git config http.sslVerify false
@jhkrischel

This comment has been minimized.

Copy link
Owner Author

@jhkrischel jhkrischel commented Jan 11, 2013

Interesting results - even a 1 skill difference makes a huge difference in eventual outcome (UPDATED):

Player vs. Player: 
*PvP Gun Skill diff -2:*
    Player 1 dies: 97.82%
    Player 2 dies: 2.18%
    Average # of actions before death: 16.962
*PvP Gun Skill diff -1:*
    Player 1 dies: 81.67%
    Player 2 dies: 18.33%
    Average # of actions before death: 18.9987
*PvP Gun Skill diff 0:*
    Player 1 dies: 46.54%
    Player 2 dies: 53.46%
    Average # of actions before death: 18.291
*PvP Gun Skill diff 1:*
    Player 1 dies: 14.08%
    Player 2 dies: 85.92%
    Average # of actions before death: 14.7396
*PvP Gun Skill diff 2:*
    Player 1 dies: 2.91%
    Player 2 dies: 97.09%
    Average # of actions before death: 11.2609

*By Hand Skill diff -2:*
    Player 1 dies: 99.13%
    Player 2 dies: 0.87%
    Average # of actions before death: 22.2085
*By Hand Skill diff -1:*
    Player 1 dies: 86.9%
    Player 2 dies: 13.1%
    Average # of actions before death: 25.3218
*By Hand Skill diff 0:*
    Player 1 dies: 47.51%
    Player 2 dies: 52.49%
    Average # of actions before death: 24.6035
*By Hand Skill diff 1:*
    Player 1 dies: 12.9%
    Player 2 dies: 87.1%
    Average # of actions before death: 19.6282
*By Hand Skill diff 2:*
    Player 1 dies: 1.84%
    Player 2 dies: 98.16%
    Average # of actions before death: 14.7434
@jhkrischel

This comment has been minimized.

Copy link
Owner Author

@jhkrischel jhkrischel commented Jan 11, 2013

More interesting data (UPDATED):

Player vs. Mook: 
*PvM with Guns:*
    Player 1 dies: 8.5%
    Mook 1 dies: 91.5%
    Average # of actions before death: 4.8392
*MvP with Guns:*
    Player 1 dies: 15.31%
    Mook 1 dies: 84.69%
    Average # of actions before death: 6.6933
*PvM with Guns Skill diff -1:*
    Player 1 dies: 26.02%
    Mook 1 dies: 73.98%
    Average # of actions before death: 7.5724
*MvP with Guns Skill diff -1:*
    Player 1 dies: 34.46%
    Mook 1 dies: 65.54%
    Average # of actions before death: 8.8982

*PvM with Hands:*
    Player 1 dies: 12.89%
    Mook 1 dies: 87.11%
    Average # of actions before death: 9.4109
*MvP with Hands:*
    Player 1 dies: 16.89%
    Mook 1 dies: 83.11%
    Average # of actions before death: 10.5751
*PvM with Hands Skill diff -1:*
    Player 1 dies: 39.5%
    Mook 1 dies: 60.5%
    Average # of actions before death: 14.296
*MvP with Hands Skill diff -1:*
    Player 1 dies: 44.95%
    Mook 1 dies: 55.05%
    Average # of actions before death: 14.8409

Having consequences is a major advantage of PCs vs. Mooks (no matter who goes first), but it can be flipped by a difference in skill of just 1.

@jhkrischel

This comment has been minimized.

Copy link
Owner Author

@jhkrischel jhkrischel commented Jan 11, 2013

Refactoring to include a built in test suite.

@jhkrischel

This comment has been minimized.

Copy link
Owner Author

@jhkrischel jhkrischel commented Jan 12, 2013

Working on an algorithm for deciding which consequences to use, but finally decided just to hard code the search space.

Coded for a length four string, with the first character MILD, moving up to the last character EXTREME, the proper order in which to use consequences looks like this:

XOOO
OXOO
OOXO
XXOO
XOXO
OXXO
XXXO
OOOX
XOOX
OXOX
OOXX
XXOX
XOXX
OXXX
XXXX

This will use the minimum number of consequences (thereby minimizing the number of free invokes exposed), and only use EXTREME as a last resort.

@jhkrischel

This comment has been minimized.

Copy link
Owner Author

@jhkrischel jhkrischel commented Jan 12, 2013

Consequences should work properly now, and I fixed a bug where I considered people dead because their stress track was filled (their stress track has to be exceeded, not just filled).

@jhkrischel

This comment has been minimized.

Copy link
Owner Author

@jhkrischel jhkrischel commented Jan 13, 2013

Massively refactored into packages, with prettier OOP style. Also added in stubs to allow asymmetrical attack/defense, as well as alternate mental parameters.

@jhkrischel

This comment has been minimized.

Copy link
Owner Author

@jhkrischel jhkrischel commented Jan 15, 2013

Now supporting the simulation of arbitrary teams. Teams both try to bluntly kill each other, in order, but you can customize every parameter of both physical and mental attack, defense, weapon, armor, stress, as well as consequences.

The only rub is that additional consequences (which are usually limited to either mental or physical) aren't handled very well.

@jhkrischel

This comment has been minimized.

Copy link
Owner Author

@jhkrischel jhkrischel commented Jan 15, 2013

Added multi-threading.

@jhkrischel

This comment has been minimized.

Copy link
Owner Author

@jhkrischel jhkrischel commented Mar 20, 2013

Multi-mook test run (Clone Team 1 is Player):

Player vs. Multiple Mooks:
Pv2M Guns Skill diff 0:
Clone Team 1 dies: 43.03%
Clone Team 2 dies: 56.97%
Average # of actions before death: 9.8332
Pv3M Guns Skill diff 0:
Clone Team 1 dies: 80.45%
Clone Team 2 dies: 19.55%
Average # of actions before death: 11.2632
Pv3M Guns Skill diff 1:
Clone Team 1 dies: 58.68%
Clone Team 2 dies: 41.32%
Average # of actions before death: 10.8521
Pv3M Guns Skill diff 2:
Clone Team 1 dies: 36.15%
Clone Team 2 dies: 63.85%
Average # of actions before death: 9.892

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment