From fc33db676abc48e084eb8cbe7dea6fdc5e165c34 Mon Sep 17 00:00:00 2001 From: HeNine <> Date: Thu, 18 May 2023 13:51:25 +0200 Subject: [PATCH] dice and classes --- classes.tex | 29 ++++++++++++++ dice.tex | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++ main.tex | 25 ++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 classes.tex create mode 100644 dice.tex create mode 100644 main.tex diff --git a/classes.tex b/classes.tex new file mode 100644 index 0000000..215070b --- /dev/null +++ b/classes.tex @@ -0,0 +1,29 @@ +\chapter{Classes} + +\section*{Basic Class Structure} + +\subsection*{Combat} + +\paragraph{Stats} +Each class grants +1 in three separate stats; no two classes grant the exact same stats. + +Most combat classes grant bonuses to physical stats, aiming for the class to be self-sufficient, such as the warrior group. Some classes, such as rangers, add mental stats, to support other classes. + +\paragraph{Standard Weapons} +The standard weapons are purely for flavor. They act as a guide to how that class should feel. + +\paragraph{Weapon Proficiencies} +Weapon proficiencies are chosen such that they include the standard weapons. + +\paragraph{Armor proficiencies} +Armor proficiencies are also selected to support the flavor of the class. It should reflect how vulnerable the class should feel, taking into account how the stats, i.e., \stat{STB} and \stat{DEX} compensate for any missing armor. + +Note that every class can wear no armor, e.g., normal clothes. + +\paragraph{Skills} +The number of skills should roughly reflect the mental stats a class grants. More support-focused classes should grant more skills. + +\paragraph{Abilities} +Each class group has one ability that all classes in that group share. Other than that, each class should have at least 4 abilities. + +The number of passive and reactive abilities affects how passive the class feels. Something like a guard should feel more like guarding -- standing still and reacting to what other people do. \ No newline at end of file diff --git a/dice.tex b/dice.tex new file mode 100644 index 0000000..75f10d0 --- /dev/null +++ b/dice.tex @@ -0,0 +1,111 @@ +\chapter{Dice} + +\section{Distribution of Successes} + +\begin{multicols}{2} + For further analysis it will be useful to have a distribution function for margins of success. + + To obtain such a distribution we start by observing that each roll can be divided into four groups: critical successes, successes, failures and critical failures, as shown in \cref{equ:dice_groups}. Further, this tuple has a multinomial distribution + \begin{align} + \left(C_s, S, F, C_f\right) \sim \text{MN}\left(d, 4, p\right)\label{equ:dice_groups} \\ + p = \left[1/12,\frac{12-\stat{dt}-1}{12},\frac{\stat{dt}-1}{12},\frac{1}{12}\right] + \end{align} + + We can easily map a tuple to a success margin: + \begin{equation} + M = 2C_s + S - F - 2C_f + \end{equation} + + Therefore, our distribution for $M$ is a sum over all tuples that produce the correct $m$ + \begin{equation} + Pr(M = m) = \sum_{C_s,S,F,C_f; M = m} \text{MN}\left(d, 4, p\right) + \end{equation} + + Instead of trying all combinations of variables and summing the correct ones, we can use a system of Diophantine equations to reduce the search space. + + We start with two equations + \begin{align} + 2c_s + s - f - 2c_f & = m \\ + c_s + s + f + c_f & = d + \end{align} + which resolve into a two-dimensional system + \begin{align} + c_s & = m - d + 2f + 3c_f \\ + s & = -m + 2d - 3f - 4c_f + \end{align} + + Next, we use inequalities $c_s\geq0, s\geq0$ to constrain the space for $c_f$, based on $f$. An example plot in \cref{fig:candidates} graphically shows the area defined by these equations and inequalities for one combination of $d$ and $m$. + \begin{align} + \frac{m-d+2f}{-3} \leq c_f \leq \frac{-m+2d-3f}{4} + \end{align} + Because the lower bound is not necessarily greater than 0, we will also use $c_f\geq0$. + + We can now also constrain $f$ by observing that the lower bound for $c_f$ can cross $c_f=0$ before $f=d$. + \begin{equation} + 0 \leq f \leq \frac{2d-m}{3} + \end{equation} + + Putting the sum together, and adding floors and ceilings to limit the sum to integers, we get: + \begin{align} + Pr(M=m) & = \sum_{f=0}^{\left\lfloor \frac{2d-m}{3} \right\rfloor}\sum_{c_f=\max(0,\left\lceil\frac{m-d+2f}{-3}\right\rceil)}^{\left\lfloor\frac{-m+2d-3f}{4}\right\rfloor} \\ + &\quad\; \frac{d!}{c_s!s!f!c_f!} + \frac{n_s^s n_f^f}{12^{d}} \\ + n_f & = \stat{dt}-1 \\ + n_s & = 12-n_s + \end{align} + While this equation is not very illuminating, it does allow us to efficiently compute the distribution and thus answer various questions regarding the results of dice rolls. + +\end{multicols} + +\begin{figure}[htb] + \centering + \includegraphics{images/dice_candidates_example.pdf} + \caption{Example of candidate combinations of $f$ and $c_f$ with upper and lower bounds for $c_f$ shown. In this plot, $d=12$ and $m=8$.\label{fig:candidates}} +\end{figure} + +\begin{figure}[htb] + \centering + \begin{tabular}{r | c c c c c c c c} + & \multicolumn{8}{c}{Difficulty Threshold} \\ + d & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\ \cline{2-9} + 1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 & 0 \\ + 2 & 2 & 2 & 1 & 1 & 1 & 1 & 0 & 0 \\ + 3 & 3 & 3 & 2 & 2 & 1 & 1 & 1 & 1 \\ + 4 & 4 & 3 & 3 & 2 & 2 & 1 & 1 & 0 \\ + 5 & 5 & 4 & 3 & 3 & 2 & 1 & 1 & 1 \\ + 6 & 6 & 5 & 4 & 3 & 2 & 2 & 1 & 1 \\ + 7 & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 1 \\ + 8 & 8 & 7 & 5 & 4 & 3 & 2 & 1 & 1 \\ + 9 & 9 & 8 & 6 & 5 & 3 & 2 & 1 & 1 \\ + 10 & 10 & 8 & 7 & 5 & 4 & 2 & 1 & 1 \\ + \end{tabular} + \caption{Expected number of successes.\label{tab:exp_mos}} +\end{figure} + +\section{Combat Pool Steady State} + +\begin{multicols}{2} + The combat pool starts with the proficiency state, i.e., \stat{STR} or \stat{DEX}. However, after rolling, the change in pool size is determined by \stat{CON}. After a number of turns, the expected size of the pool should converge on a number $E[d]$. + + We start by assuming that $E[d]$ is a number such that + \begin{equation} + E[d_{n+1}] = E[d_{n}] \label{equ:dice_ss_a1} + \end{equation} + where $n$ is the turn after which the steady state is achieved. + + To compute $E[d_n]$ for any $n$ we can use + \begin{equation} + E[d_n] = E[d_{n-1}] - p_f \cdot E[d_{n-1}] + \stat{con} \label{equ:dice_ss_a2} + \end{equation} + where $p_f = \stat{dt}/12$ is the probability of failure. + + Using assumptions in \cref{equ:dice_ss_a1,equ:dice_ss_a2} we write the following equations: + \begin{align} + E[d] & = E[d] - p_f \cdot E[d] + \stat{con} \\ + p_f\cdot E[d] & = \stat{con} \\ + E[d] & = \frac{\stat{con}}{p_f} + \end{align} + + As $p_f$ approaches 1, the steady state becomes just \stat{CON}, meaning the dice pool is entirely discarded and refreshed by \stat{con} on every turn. On the other hand, as $p_f$ approaches 0, the expected dice pool size increases. Specifically at 0, it shoots off toward infinity, as the dice pool loses no dice and \stat{con} dice get added toward it on every turn. +\end{multicols} + diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..14c9493 --- /dev/null +++ b/main.tex @@ -0,0 +1,25 @@ +\documentclass{kartsstyle} + +\usepackage{multirow} + +\title{On The Metaphysics Of Savits} +\author{\texttt{HeNine}} +\date{2023} + +\newcommand{\tochange}[1]{\textcolor{red}{#1}} + +\begin{document} + +\frontmatter + +\maketitle + +\tableofcontents + +\mainmatter + +\include{dice} + +\include{classes} + +\end{document}