summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authora1xd <[email protected]>2020-09-26 04:57:26 -0400
committerGitHub <[email protected]>2020-09-26 04:57:26 -0400
commit8683d3c7b7eb650033f5c6492e0350638c32bb4c (patch)
tree36c783c5540b958c70fed7a31830554db9059754
parentMerge pull request #23 from JacobPalecki/GUI (diff)
parentFAQ has conversion instructions (diff)
downloadrawaccel-8683d3c7b7eb650033f5c6492e0350638c32bb4c.tar.xz
rawaccel-8683d3c7b7eb650033f5c6492e0350638c32bb4c.zip
Merge pull request #24 from JacobPalecki/GUI
Round out Guide, create FAQ, small bugfixes
-rw-r--r--grapher/Models/Fields/FieldXY.cs26
-rw-r--r--grapher/Models/Options/ActiveValueLabelXY.cs20
-rw-r--r--grapher/Models/Options/ApplyOptions.cs2
-rw-r--r--grapher/Models/Options/OptionXY.cs2
-rw-r--r--grapher/ReadMe/FAQ.md18
-rw-r--r--grapher/ReadMe/Guide.md23
-rw-r--r--grapher/ReadMe/images/classic_example.pngbin0 -> 52040 bytes
-rw-r--r--grapher/ReadMe/images/interaccel_to_rawaccel.pngbin0 -> 218717 bytes
-rw-r--r--grapher/ReadMe/images/linear_example.pngbin0 -> 51428 bytes
-rw-r--r--grapher/ReadMe/images/logarithm_example.pngbin0 -> 50553 bytes
-rw-r--r--grapher/ReadMe/images/motivity_example.pngbin0 -> 60657 bytes
-rw-r--r--grapher/ReadMe/images/natural_example.pngbin0 -> 67409 bytes
-rw-r--r--grapher/ReadMe/images/natural_gain_example.pngbin0 -> 51433 bytes
-rw-r--r--grapher/ReadMe/images/power_example.pngbin0 -> 51251 bytes
14 files changed, 83 insertions, 8 deletions
diff --git a/grapher/Models/Fields/FieldXY.cs b/grapher/Models/Fields/FieldXY.cs
index 1c01668..a7db922 100644
--- a/grapher/Models/Fields/FieldXY.cs
+++ b/grapher/Models/Fields/FieldXY.cs
@@ -121,6 +121,32 @@ namespace grapher
#region Methods
+ public void SetActive(double x, double y)
+ {
+ XField.SetNewDefault(x);
+ YField.SetNewDefault(y);
+ XField.SetToDefault();
+
+ if (x != y)
+ {
+ LockCheckBox.Checked = false;
+
+ if (Combined)
+ {
+ SetSeparate();
+ }
+ }
+ else
+ {
+ LockCheckBox.Checked = true;
+
+ if (!Combined)
+ {
+ SetCombined();
+ }
+ }
+ }
+
private void CheckChanged(object sender, EventArgs e)
{
if (LockCheckBox.CheckState == CheckState.Checked)
diff --git a/grapher/Models/Options/ActiveValueLabelXY.cs b/grapher/Models/Options/ActiveValueLabelXY.cs
index 9498c66..1367a6a 100644
--- a/grapher/Models/Options/ActiveValueLabelXY.cs
+++ b/grapher/Models/Options/ActiveValueLabelXY.cs
@@ -1,4 +1,6 @@
-namespace grapher.Models.Options
+using System.Drawing;
+
+namespace grapher.Models.Options
{
public class ActiveValueLabelXY
{
@@ -20,6 +22,14 @@
Y.Width = ShortenedWidth;
Y.FormatString = Constants.ShortenedFormatString;
+ X.ValueLabel.Margin = new System.Windows.Forms.Padding(0);
+ Y.ValueLabel.Margin = new System.Windows.Forms.Padding(0);
+ X.ValueLabel.UseCompatibleTextRendering = true;
+ Y.ValueLabel.UseCompatibleTextRendering = true;
+ DefaultFont = X.ValueLabel.Font;
+ ShortenedFont = new Font(DefaultFont.FontFamily, (float)7.75);
+ Y.ValueLabel.Font = ShortenedFont;
+
Combined = false;
SetCombined();
}
@@ -32,6 +42,10 @@
public ActiveValueLabel Y { get; }
+ public Font DefaultFont { get; }
+
+ public Font ShortenedFont { get; }
+
public bool Combined { get; private set; }
public int Left
@@ -90,6 +104,7 @@
X.FormatString = Constants.DefaultActiveValueFormatString;
X.Width = FullWidth;
X.Prefix = string.Empty;
+ X.ValueLabel.Font = DefaultFont;
Y.Hide();
}
@@ -103,6 +118,7 @@
X.FormatString = Constants.ShortenedFormatString;
X.Width = ShortenedWidth;
X.Prefix = "X";
+ X.ValueLabel.Font = ShortenedFont;
Y.Prefix = "Y";
Y.Show();
}
@@ -127,7 +143,7 @@
private void Align (int width)
{
FullWidth = width;
- ShortenedWidth = (FullWidth - Constants.ActiveLabelXYSeparation) / 2;
+ ShortenedWidth = FullWidth / 2;
SetYLeft();
Y.Width = ShortenedWidth;
diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs
index 720cb13..c2ed498 100644
--- a/grapher/Models/Options/ApplyOptions.cs
+++ b/grapher/Models/Options/ApplyOptions.cs
@@ -123,7 +123,7 @@ namespace grapher.Models.Options
{
SetActiveValues(
settings.sensitivity.x,
- settings.sensitivity.x,
+ settings.sensitivity.y,
settings.rotation,
(int)settings.modes.x,
(int)settings.modes.y,
diff --git a/grapher/Models/Options/OptionXY.cs b/grapher/Models/Options/OptionXY.cs
index 6d6129a..b4a2b27 100644
--- a/grapher/Models/Options/OptionXY.cs
+++ b/grapher/Models/Options/OptionXY.cs
@@ -123,6 +123,8 @@ namespace grapher
public void SetActiveValues(double x, double y)
{
ActiveValueLabels.SetValues(x, y);
+ Fields.SetActive(x, y);
+
}
public override void AlignActiveValues()
diff --git a/grapher/ReadMe/FAQ.md b/grapher/ReadMe/FAQ.md
new file mode 100644
index 0000000..d0ce31c
--- /dev/null
+++ b/grapher/ReadMe/FAQ.md
@@ -0,0 +1,18 @@
+# Raw Accel: Frequently Asked Questions
+See the Guide to understand all options and features in-depth.
+
+## What are the differences between Raw Accel and InterAccel?
+- The sensitivity and prescale fields in InterAccel are not present in Raw Accel. See the next question for helping converting your InterAccel settings to Raw Accel.
+- Separate x and y prescale values, which no one should have, are not supported in Raw Accel. For something similar but better, check out the "By Component" section of the guide.
+- Raw Accel uses a new kind of cap by default. See the guide for more information on this It takes a value in counts/ms instead of max desired sensitivity. The old style is available for those who want it. See the next question for converting the old to new style.
+- There are many new features and curve types available. See the guide for information on all of these.
+
+## How do I convert InterAccel settings to Raw Accel?
+![ConvertExample](\images\interaccel_to_rawaccel.png)
+See the guide to understand more about the Gain Cap option and other new features!
+
+## Does this driver work with AntiCheat?
+Yes. That is one of the fundamental goals of this driver. It is fully signed and has a one-second delay on write, so it cannot be used to cheat and should be considered safe by AntiCheat programs. However, we can never guarantee that the humans in control over AntiCheat code make the right decisions. So far it is working in FaceIT, Valorant, and Diabotical matches.
+
+## I don't understand something, or have some other question.
+Read the guide to see if it answers your question. If not, join our [Discord](https://discord.gg/7pQh8zH) and ask. \ No newline at end of file
diff --git a/grapher/ReadMe/Guide.md b/grapher/ReadMe/Guide.md
index 1eae47e..43619d3 100644
--- a/grapher/ReadMe/Guide.md
+++ b/grapher/ReadMe/Guide.md
@@ -1,14 +1,19 @@
# Raw Accel Guide
+## Installation
+Run "installer.exe" in the release directory to install the raw accel driver. Restart your computer for the installation to take effect.
+
+Run "uninstaller.exe" in the release directory to uninstall the driver. Restart for the uninstallation to take effect.
+
## Philosophy
The Raw Accel driver and GUI's workings and exposed parameters are based on our understanding of mouse acceleration. Our understanding includes the concepts of "gain", "whole vs by component", and "anisotropy." For clarity, we will outline this understanding here. Those uninterested can skip to Features below.
### Measurements from Input Speed
-Raw Accel, like any mouse modification program, works by acting on a passed in (x,y) input and passing back out an (x,y) output. The GUI program creates charts by feeding a set of (x,y) inputs to the driver code to receive a set of (x,y) outputs. The following measurements, available as charts in Raw Accel, are then found from the outputs:
+Raw Accel, like any mouse modification program, works by acting on a passed-in (x,y) input in order to pass back out an (x,y) output. The GUI program creates charts by feeding a set of (x,y) inputs to the driver code to receive a set of (x,y) outputs. The following measurements, available as charts in Raw Accel, are then found from the outputs:
- **Sensitivity**: The ratio of the output speed to the input speed. The "sensitivity" parameter in the program is a multiplier used on the post-calculation output vector.
- **(Output) Velocity**: The speed of the final output vector. The output vs input velocity curve is perhaps the most important relationship in a particular setup because it directly describes the output for any given input. (We use "speed" and "velocity" interchangeably, and are aware of the difference elsewhere.)
-- **Gain**: The slope of the output vs input velocity curve. It answers the question: "if I move my hand a little faster, how much faster will my cursor move?" One author of this document says: "If I could have users to understand one thing, it's that they should focus on their gain rather than their sensitivity."
+- **Gain**: The slope of the output vs input velocity curve. It answers the question: "if I move my hand a little faster, how much faster will my cursor move?" The relationship between gain and sensitivity is that if gain is continuous, so is sensitivity. The reverse is not necessarily true, so keeping the gain "nice" ensures "nice" sensitivity but not vice versa.
- For the mathematically inclined: for input speed "v" and Output Velocity f(v), Sensitivity is f(v)/v and Gain is f'(v) = d/dv(f(v)).
Acceleration, then, is a characteristic of the velocity curve, defined as true when the velocity curve is non-linear for any input speed.
@@ -65,21 +70,29 @@ This option does not scale your acceleration curve in any way. Rather, it scales
### Linear
This is simplest style used by most; it is simply a line rising at a given rate. This is a good choice for new users.
+![LinearExample](\images\linear_example.png)
### Classic
This is the style found in Quake 3, Quake Live, and countless inspired followers, including the InterAccel program. It mulplies the speed by a given rate and then raises the product to a given exponent. Any particular linear style curve can be replicated in classic style with an exponent of 2.
+![ClassicExample](\images\classic_example.png)
### Power
-This is the style found in CS:GO and Source Engine games. The user can set a rate by which the speed is multplied, and then an exponent to which the product is raised, which is then the final multiplier (no adding to 1.). In the aforementioned games the default m_customaccel_exponent value of 1.05 would be a value of 0.05 in Raw Accel, leading to a concave slowly rising curve. CS:GO and Source Engine games apply acceleration in an fps-dependent manner, so Raw Accel can only simulate acceleration from these games at a given fps. To do so, set rate to 1000/(fps).
+This is the style found in CS:GO and Source Engine games. The user can set a rate by which the speed is multplied, and then an exponent to which the product is raised, which is then the final multiplier (no adding to 1.). In the aforementioned games the default m_customaccel_exponent value of 1.05 would be a value of 0.05 in Raw Accel, leading to a concave slowly rising curve. CS:GO and Source Engine games apply acceleration in an fps-dependent manner, so Raw Accel can only simulate acceleration from these games at a given fps. To do so, set rate to 1000/(in-game fps).
+![PowerExample](\images\power_example.png)
### Natural & NaturalGain
Natural is a style found in the game Diabotical. It features a concave curve which starts at 1 and approaches some maximum sensitivity. This style is unique and useful but causes an ugly dip in the gain graph. For this reason we have created the NaturalGain style, which recreates the Natural style shape in the gain graph without any dips. We recommend users use the NaturalGain style instead of the Natural style; on switch some small tweaks may be needed since for any particular settings the NaturalGain is slightly slower to ramp up than the Natural style. NaturalGain is another excellent choice for new users.
+![NaturalExample](\images\natural_example.png)
+![NaturalGainExample](\images\natural_gain_example.png)
### Motivity
-This curve looks like an "S" with the top half bigger than the bottom. Mathematically it's a "Sigmoid function on a log-log plot". A user can set the "midpoint" of the S, the "acceleration" (i.e. slantedness) of the S, and the "motivity". "Motivity" sets min and max sensitivity, where the maximum is just "motility", and the minimum is "1/motility." (Sensitivity is 1 at the midpoint.) This curve is calculated and stored in a lookup table before applying acceleration, which makes the gain graph look a little funny. This is one author's favorite curve, and an excellent choice for power users and new users who don't mind playing with the settings a little.
+This curve looks like an "S" with the top half bigger than the bottom. Mathematically it's a "Sigmoid function on a log-log plot". A user can set the "midpoint" of the S, the "acceleration" (i.e. slantedness) of the S, and the "motivity". "Motivity" sets min and max sensitivity, where the maximum is just "motivity", and the minimum is "1/motivity." (Sensitivity is 1 at the midpoint.) This curve is calculated and stored in a lookup table before applying acceleration, which makes the gain graph look a little funny. This is one author's favorite curve, and an excellent choice for power users and new users who don't mind playing with the settings a little.
+![MotivityExample](\images\motivity_example.png)
### Logarithm
-[Sidiouth needs to write this]
+Not a big difference between this and power in terms of shape.
+![LogarithmExample](\images\logarithm_example.png)
+
## Further Help
Further help and frequently asked questions can be found in the FAQ. \ No newline at end of file
diff --git a/grapher/ReadMe/images/classic_example.png b/grapher/ReadMe/images/classic_example.png
new file mode 100644
index 0000000..e626e86
--- /dev/null
+++ b/grapher/ReadMe/images/classic_example.png
Binary files differ
diff --git a/grapher/ReadMe/images/interaccel_to_rawaccel.png b/grapher/ReadMe/images/interaccel_to_rawaccel.png
new file mode 100644
index 0000000..4f3560a
--- /dev/null
+++ b/grapher/ReadMe/images/interaccel_to_rawaccel.png
Binary files differ
diff --git a/grapher/ReadMe/images/linear_example.png b/grapher/ReadMe/images/linear_example.png
new file mode 100644
index 0000000..5530529
--- /dev/null
+++ b/grapher/ReadMe/images/linear_example.png
Binary files differ
diff --git a/grapher/ReadMe/images/logarithm_example.png b/grapher/ReadMe/images/logarithm_example.png
new file mode 100644
index 0000000..3153ae5
--- /dev/null
+++ b/grapher/ReadMe/images/logarithm_example.png
Binary files differ
diff --git a/grapher/ReadMe/images/motivity_example.png b/grapher/ReadMe/images/motivity_example.png
new file mode 100644
index 0000000..521bf85
--- /dev/null
+++ b/grapher/ReadMe/images/motivity_example.png
Binary files differ
diff --git a/grapher/ReadMe/images/natural_example.png b/grapher/ReadMe/images/natural_example.png
new file mode 100644
index 0000000..9c7946b
--- /dev/null
+++ b/grapher/ReadMe/images/natural_example.png
Binary files differ
diff --git a/grapher/ReadMe/images/natural_gain_example.png b/grapher/ReadMe/images/natural_gain_example.png
new file mode 100644
index 0000000..48a05e4
--- /dev/null
+++ b/grapher/ReadMe/images/natural_gain_example.png
Binary files differ
diff --git a/grapher/ReadMe/images/power_example.png b/grapher/ReadMe/images/power_example.png
new file mode 100644
index 0000000..0fa1d7e
--- /dev/null
+++ b/grapher/ReadMe/images/power_example.png
Binary files differ