Celtic Heroes

The Official Forum for Celtic Heroes, the 3D MMORPG for iOS and Android Devices

3D Visualization of Skill Equations

#1
Hello everyone, below are three-dimensional mesh renderings of Swan's skill equations (there is a link to his thread in the Lexicon) for four skills: Nature's Touch, Lightning Strike, Howling Winds, and Shield of Bark.

For each skill I made two meshes:
- The first places your heal on the z-axis (given X focus and Y nature magic, your heal is Z)
- The second places the derivative of your heal on the z-axis (given X focus and Y nature magic, your heal is changing by Z amount per increment in nature magic and focus)

Initially, I started the focus/natmagic axes at 0, however the derivative range was just too high -- the plot looked like two walls and a floor! I arbitrarily chose 300 focus and 1000 natmagic as the minimums for better visuals.

If you notice anything interesting, do share it here! If you want to know any specific points, say so :)

Image


Image


Image


Image


For anyone interested in the Matlab code, it follows (modify the constants for each skill):

Code: Select all

% Nature's Touch

% Constants
focus_c = 28.89;
natmagic_c = 8.9361;
level_c = 452.42;

% Heal
focus = @(x) focus_c * sqrt(x); % focus component
natmagic = @(y) natmagic_c * sqrt(y); % nature magic component
level = @(z) level_c + 0*z; % level component, assuming level 50
heal = @(x, y, z) focus(x) + natmagic(y) + level(z); % overall

% Derivative
focus_d = @(x) (focus_c/2) ./ sqrt(x); % focus component
natmagic_d = @(y) (natmagic_c/2) ./ sqrt(y); % nature magic component
level_d = @(z) 0 + 0*z; % level component, assuming level 50
heal_d = @(x, y, z) focus_d(x) + natmagic_d(y) + level_d(z); % overall

% Plotting
points = 500; % number of points in each x/y/z
focus_range = linspace(300, 2500, points); % evenly spaces from 300-2500 focus
natmagic_range = linspace(1000, 8000, points); % evenly spaces from 1000-8000 nature magic
level_range = linspace(1, 50, points); % evenly spaces from level 1-50, but this doesn't matter (assuming level 50)

[FOCUS, NATMAGIC] = meshgrid(focus_range, natmagic_range); % make the mesh grid
total_heal = heal(FOCUS, NATMAGIC, level_range); % get heal over the mesh points (matrix)
total_heal_d = heal_d(FOCUS, NATMAGIC, level_range); % get heal derivative over the mesh points (matrix)

% Plot the base mesh
subplot(1, 2, 1); mesh(FOCUS, NATMAGIC, total_heal);
xlabel('Focus'); ylabel('Nature Magic'); zlabel('Attack Reduction');
title('Howling Winds - Base');

% Plot the derivative mesh
subplot(1, 2, 2); mesh(FOCUS, NATMAGIC, total_heal_d);
xlabel('Focus'); ylabel('Nature Magic'); zlabel('Attack Reduction');
title('Howling Winds - Derivative');
World Taranis

- Regenleif -
Rachmaninoff
Aedin Flameborn

Guardian Emeritus of theILLUMINATI
Guardian Emeritus of Aeon

I am a Guide! If you need any tips/help/advice, Click Here to send me a message!

Re: 3D Visualization of Skill Equations

#2
Very interesting. While it wouldn’t change the basic takeaway, I’d like to see these with whatever the theoretical upper limit to both Focus and Nature Magic is. I’m guessing somewhere north of 4.5k foc and 9k nm.
Morrigan: Avalon (Yes, I'm still playing)
AwsomeO: 227 Druid
Hyperbole: 200 Rogue

Re: 3D Visualization of Skill Equations

#3
Mickey wrote:Very interesting. While it wouldn’t change the basic takeaway, I’d like to see these with whatever the theoretical upper limit to both Focus and Nature Magic is. I’m guessing somewhere north of 4.5k foc and 9k nm.


well, as the function uses square roots we can't say that the base or derivative converge to any point (p-series test). Regardless, I can post a plot with 100k focus and nm ;)
World Taranis

- Regenleif -
Rachmaninoff
Aedin Flameborn

Guardian Emeritus of theILLUMINATI
Guardian Emeritus of Aeon

I am a Guide! If you need any tips/help/advice, Click Here to send me a message!

Who is online

Users browsing this forum: No registered users and 3 guests