WEBVTT

00:06.900 --> 00:08.040
Welcome back.

00:08.160 --> 00:15.540
So we now have some gameplay effects and they're assigned here in our data asset character class info.

00:15.570 --> 00:23.040
Now the thing is that these primary attribute gameplay effects have no modifiers, and we've seen that

00:23.040 --> 00:24.120
with modifiers.

00:24.120 --> 00:32.850
We can have curved tables that allow us to scale the modifier magnitude by a value based on what the

00:32.850 --> 00:36.400
curve table returns using a lookup by level.

00:36.420 --> 00:42.210
Let's go to our Elementalist primary attributes gameplay effect and take a look.

00:42.390 --> 00:48.720
Now this is a gameplay effect with instant duration policy and we have no modifiers, but we're going

00:48.720 --> 00:54.240
to add a modifier for each of our primary attributes, so we should have four of them total.

00:54.240 --> 00:57.180
And for each one I'd like to use a curve table.

00:57.180 --> 01:03.210
And for those curve tables, I'd like to have different values based on level so that when we spawn

01:03.210 --> 01:08.350
in an enemy, we can apply this gameplay effect at the level specified.

01:08.380 --> 01:14.920
Now we can create curve tables in a number of ways and we can store the data in a number of ways.

01:14.920 --> 01:19.840
So here's what I'd like to do for our default attributes for the enemy.

01:19.870 --> 01:23.290
We're going to have a folder here for our curve tables.

01:23.500 --> 01:28.870
I'm going to right click and make a new folder and call this curve tables.

01:29.140 --> 01:33.370
And here in curve tables we're going to make a new curve table.

01:33.670 --> 01:37.420
So first we'll go to Miscellaneous Choose Curve Table.

01:37.420 --> 01:43.600
And we've been using linear curve tables, but what do these interpolation types actually mean?

01:43.750 --> 01:47.890
Well, linear means between each x y value pair.

01:47.890 --> 01:49.990
In other words, each key in the curve.

01:50.020 --> 01:53.470
The curve is a straight line in between those values.

01:53.470 --> 02:01.630
But if we choose, say, cubic, then we'll get a smoother curve in between those key values and constant

02:01.660 --> 02:07.360
gives us no interpolation whatsoever from one value to the next.

02:07.360 --> 02:10.150
We just have horizontal straight lines.

02:10.180 --> 02:14.380
We're going to choose cubic for this and we're going to create our curve table.

02:14.380 --> 02:22.780
And I'm going to call this CT underscore primary attributes, underscore elementalist, and these will

02:22.780 --> 02:25.480
be the primary attributes for the Elementalist.

02:25.900 --> 02:31.600
Now, let's go ahead and open up this curve table and for the curve, we're first going to rename it

02:31.600 --> 02:34.300
from curve to a new name.

02:34.300 --> 02:37.900
And this is going to be for our strength primary attribute.

02:37.990 --> 02:45.910
Now for the names, I'd like to keep the same name as the gameplay tag associated with that particular

02:45.910 --> 02:46.810
attribute.

02:46.810 --> 02:54.400
So for strength, we would say attributes dot primary dot strength.

02:55.460 --> 02:57.180
And we can put in some values.

02:57.200 --> 03:00.080
Now, here's the cool thing about interpolation types.

03:00.110 --> 03:03.730
We don't have to have a value for each level.

03:03.740 --> 03:07.530
We can choose a value for every five levels or every ten levels.

03:07.550 --> 03:14.690
And if we attempt to retrieve the value from the curve at any particular level or X value, we'll get

03:14.690 --> 03:16.940
the interpolated value on the curve.

03:17.030 --> 03:24.920
For instance, if I right click here on the curve and select Add key, I now have a key and I can choose

03:24.920 --> 03:33.030
a value of say, one for the X and what value for the strength for an Elementalist.

03:33.050 --> 03:40.100
What I'd like to have at level one now we're thinking in terms of an enemy elementalist character.

03:40.550 --> 03:46.310
I think for an elementalist a low value for strength like five should do.

03:46.490 --> 03:52.310
Now I can't see anything now, but if I come up here and click on Zoom to Fit, all of a sudden that

03:52.310 --> 03:53.930
key is now in the middle.

03:54.230 --> 03:56.970
Now it says one second here.

03:57.180 --> 04:05.730
These curve table X values are interpreted as units of time in seconds by default, but they don't have

04:05.730 --> 04:06.960
to be time values.

04:06.960 --> 04:10.020
In our case, the x axis represents level.

04:10.050 --> 04:14.070
But in the curve table asset, they're listed as seconds.

04:14.100 --> 04:20.180
Now we can add another value by right clicking and selecting add key.

04:20.190 --> 04:24.330
And with that key selected, I'm going to change its X value.

04:24.360 --> 04:28.320
Now, as I said, we don't have to do every single discrete integer.

04:28.320 --> 04:33.570
I can skip to level five, for example, and at level five for the Elementalist.

04:33.570 --> 04:36.120
Let's say I'd like my strength to be seven.

04:36.210 --> 04:40.980
And if I zoom to fit, we can kind of see what's going on here.

04:40.980 --> 04:45.600
In fact, I might have to scroll out to see really what's happening.

04:45.600 --> 04:50.550
And if I click and drag to select all the points, right click and select Auto.

04:50.580 --> 04:59.670
Well, now we can get a smooth curve because this particular curve table has a cubic interpolation type.

04:59.670 --> 05:07.770
That means we can get a mathematical graph that is at the mathematical level, a cubic function.

05:07.890 --> 05:11.340
So if your math savvy, that probably means something to you.

05:11.340 --> 05:14.810
If you're not and that doesn't make any sense, don't worry about it.

05:14.820 --> 05:18.600
Cubic can be thought of as a smooth curve like this.

05:18.630 --> 05:24.840
Now I'm going to add another key, and for this one I'm going to set the X value to ten.

05:24.840 --> 05:31.800
And I'd like my strength at level ten to be, let's say 9.5.

05:32.250 --> 05:38.790
Now I can click on Zoom to Fit, and actually this dropdown to the left has normalized view mode.

05:38.790 --> 05:43.990
If I click on that, then we'll normalize to all keys involved here.

05:44.010 --> 05:50.010
Now as you can see the curve smoothly interpolates from one value to the next.

05:50.280 --> 05:56.670
So if I query this curve and said, Hey, what's the strength value at level two, then it would give

05:56.670 --> 06:01.710
me the value here on the curve at level two, which is 5.219 roughly.

06:01.890 --> 06:08.730
So this can save us some time if we want to shape out the curve by shape and just interpolate between

06:08.730 --> 06:09.810
major values.

06:09.810 --> 06:15.570
And then I don't have to go in here and put in a value for each and every single level.

06:15.810 --> 06:21.030
Now I'm going to go back from normalized view mode to absolute view mode, and that will allow me to

06:21.030 --> 06:23.280
move by right clicking and dragging.

06:23.280 --> 06:26.580
I can move around and I'm going to add a new key.

06:26.790 --> 06:28.860
The last one was at level ten.

06:28.890 --> 06:38.140
This one will be at level 15 and I'd like my strength to bump up to about 12.5 at that level.

06:38.160 --> 06:46.320
Now it's going to be linear, but at the end of all this, we can make this all very smooth by highlighting

06:46.320 --> 06:51.350
all of them right clicking and choosing auto and we'll have nice smooth curves.

06:51.360 --> 06:57.000
And of course we can click and move these up and move them around if we like as well.

06:57.540 --> 07:00.570
So far this is looking relatively linear.

07:00.570 --> 07:04.770
So cubic is maybe overkill, but that's okay.

07:04.770 --> 07:10.500
These are only going to be queried when the primary attribute values are modified once at the beginning

07:10.500 --> 07:12.420
of the enemy's lifetime anyway.

07:12.870 --> 07:16.350
So we've got values for strength up to level 15.

07:16.350 --> 07:18.030
Let's add a new key.

07:18.060 --> 07:23.910
This one can be level 20 and I'm going to bump the strength up to 14.

07:24.120 --> 07:27.660
This is an elemental list, kind of like a wizard or sorcerer.

07:27.660 --> 07:30.350
So we really don't care much about strength.

07:30.360 --> 07:33.690
It's not going to do a whole lot for the character involved.

07:33.960 --> 07:37.560
So that gives us values up to level 20.

07:37.560 --> 07:41.590
And if I really want, I can add one last key.

07:41.610 --> 07:52.140
Let's go up to level 40 and at level 40, I'm going to bump that strength up to say 25 like so.

07:52.230 --> 07:54.780
And I can highlight all these points.

07:54.850 --> 07:56.860
And select auto.

07:56.980 --> 07:59.620
And now we see what our curve looks like.

07:59.740 --> 08:03.280
So now we have a curve for strength for the Elementalist.

08:03.310 --> 08:10.030
Now adding points like this is a good, nice visual way to do it, and that's how we're going to add

08:10.030 --> 08:14.530
the other curves for the Elementalist primary attribute curve table.

08:14.770 --> 08:17.170
And then we'll learn another way to do it.

08:17.200 --> 08:22.630
So after getting the curve, looking approximately how we like it and we can even click on the handles

08:22.630 --> 08:25.810
and adjust the curve however we like.

08:26.050 --> 08:31.510
We can now add our second curve and rename this curve to attributes.

08:33.650 --> 08:36.950
Dot primary dot intelligence.

08:37.610 --> 08:40.880
Now, intelligence is more important for the elementalist.

08:40.910 --> 08:46.190
We're going to right click add a key, and this will be for level one.

08:46.190 --> 08:51.980
And we're going to start the elementalist at a higher intelligence, let's say 15 for level one, and

08:51.980 --> 08:54.470
then we're going to add another key.

08:54.500 --> 09:01.700
This will be for level five and we'll bump the intelligence up to about 19.

09:02.030 --> 09:03.630
We'll add another key.

09:03.650 --> 09:05.750
This will be for level ten.

09:06.350 --> 09:09.080
We'll bump the intelligence up to 21.

09:09.200 --> 09:10.800
We'll add another key.

09:10.820 --> 09:13.580
This can be for level 20.

09:13.790 --> 09:17.300
Notice we're going from ten straight to 20.

09:17.300 --> 09:22.490
And for 20, let's do a value of about 25.

09:22.520 --> 09:23.690
What kind of tapering off?

09:23.690 --> 09:24.410
A little.

09:24.410 --> 09:29.000
And from 20, we'll have another key that goes straight up to 40.

09:29.030 --> 09:32.150
And at 40, let's do 35.

09:32.180 --> 09:35.010
Let's actually go up to about 40 intelligence.

09:35.010 --> 09:36.840
We'll have a curve that looks like this.

09:36.870 --> 09:39.470
We'll highlight them all and select auto.

09:39.480 --> 09:41.700
So we have a smooth looking curve.

09:41.730 --> 09:43.620
So there's our intelligence.

09:43.650 --> 09:49.290
Notice that interpolation is saving us a lot of time entering in those values, especially if we just

09:49.290 --> 09:55.440
want this to follow a specific trend and not have manually entered points per level.

09:55.470 --> 10:03.750
Let's add another curve and rename this curve to attributes dot Primary dot Resilience.

10:04.620 --> 10:08.010
For resilience, I'm going to go ahead and add a key.

10:08.100 --> 10:12.330
This will be for level one and we'll give it a value of 11.

10:12.330 --> 10:14.340
And I just want to see what this looks like.

10:14.340 --> 10:22.230
If I just add one key right here at level 40 and give it a value of, say, 20.

10:22.680 --> 10:24.630
Here's what that curve would look like.

10:24.630 --> 10:32.640
And we can highlight both keys, give it an auto smoothing, and now we just have this trend that smoothly

10:32.640 --> 10:37.950
goes up from level one and value 11 to level 40 at value 20.

10:37.950 --> 10:42.210
And we can see what the value would be at any point along the curve.

10:42.240 --> 10:43.710
We can do the same thing for vigor.

10:43.740 --> 10:53.010
I'm going to click curve, rename the curve to attributes dot primary dot vigor.

10:53.160 --> 10:55.380
We'll right click and add a key.

10:55.410 --> 10:57.090
This will be for level one.

10:57.720 --> 11:01.890
The value of vigor can be, oh, let's say seven.

11:01.920 --> 11:05.730
I'm going to click on Zoom to fit and add a new key after.

11:05.760 --> 11:07.950
This can be for level 40.

11:07.950 --> 11:12.810
And what should the vigor be for our elementalist at level 40?

11:12.840 --> 11:19.650
Let's put it at say, 14 and I'm going to zoom on out, highlight both of these right click and use

11:19.650 --> 11:20.880
an auto curve.

11:20.880 --> 11:25.890
And here is the curve from level one to level 40.

11:26.130 --> 11:30.210
And I can always go to normalized view mode to see that curve.

11:30.210 --> 11:33.300
And again, we can adjust the shape of the curve.

11:33.300 --> 11:36.960
Let's say we want it to go up very quickly and then taper off.

11:36.960 --> 11:44.670
We could do that or just have a very slow build up at first, but then start to ramp up faster towards

11:44.670 --> 11:45.400
level 40.

11:45.420 --> 11:47.190
That's another possibility.

11:47.760 --> 11:53.870
Just depends on how you'd like that attribute to increase as those enemies level up.

11:53.880 --> 12:01.230
So now we have a curve table that we can use for the elementalist for strength, intelligence, resilience

12:01.230 --> 12:02.070
and vigor.

12:02.070 --> 12:09.450
And now we can go to our primary attributes, Elementalist, and we can add those modifiers.

12:09.450 --> 12:12.450
So I'm going to add four of them one, two, three, four.

12:12.630 --> 12:16.260
The first one, the attribute is going to be strength.

12:16.320 --> 12:18.630
It's going to be override.

12:18.720 --> 12:24.870
The modifier magnitude will be scalable float and I'll put a one here and use the curve table.

12:24.900 --> 12:27.840
CTE Primary Attributes Elementalist.

12:27.870 --> 12:32.160
We're going to select the curve attributes Dot primary dot strength.

12:32.160 --> 12:37.920
And now we have our modifier set up and we're going to do the same thing for the other attributes for

12:37.920 --> 12:38.860
the next one.

12:38.880 --> 12:42.240
We've already got strength, so let's do intelligence.

12:42.240 --> 12:45.330
It's going to be override modifier.

12:45.330 --> 12:47.040
Magnitude will be scalable float.

12:47.040 --> 12:49.040
We'll set that magnitude to one.

12:49.050 --> 12:52.560
We'll use the primary attributes Elementalist curve table.

12:52.560 --> 12:55.230
And for the curve, we'll select intelligence.

12:55.470 --> 12:57.750
Let's move on and do resilience.

12:57.750 --> 13:01.860
So we'll select resilience, Set this to override.

13:01.980 --> 13:09.810
We'll set our magnitude to one, choose the Elementalist curve table and pick the resilience curve.

13:09.810 --> 13:13.530
And finally, we have our last modifier.

13:13.560 --> 13:17.270
This will be vigor setting it to override.

13:17.280 --> 13:22.260
We're going to set scalable float magnitude to one, choose the Elementalist curve table.

13:22.260 --> 13:24.180
And for the curve we'll use vigor.

13:24.180 --> 13:28.830
And we've now taken care of our elementalist primary attributes.

13:28.830 --> 13:29.970
We're going to save that.

13:31.220 --> 13:33.590
Okay, so this isn't really anything new.

13:33.620 --> 13:36.050
We've already made curve tables before.

13:36.080 --> 13:41.150
But we need curve tables for the warrior and the ranger classes as well.

13:41.180 --> 13:46.360
So the question is, do we have to do this whole process again for those classes?

13:46.370 --> 13:48.320
And the answer is actually no.

13:48.350 --> 13:51.110
We can create these in different ways.

13:51.110 --> 13:58.250
And I'm going to show you two additional formats that our curve table data can exist in.

13:58.280 --> 14:05.780
Now for our curve table, let's go back out into the folder that our Primary Attributes curve table

14:05.780 --> 14:06.780
exists in.

14:06.800 --> 14:12.770
We'll go ahead and save all, and I'd like to export this in a different format.

14:13.160 --> 14:20.900
You see curve tables, much like data assets can be exported in the form of CSV or comma separated values

14:20.900 --> 14:22.610
and Json data.

14:22.640 --> 14:30.110
Let's export this curve table as a CSV and before we do, I'm going to take my project folder structure

14:30.110 --> 14:36.600
here and I'm going to make a new folder right here and this will be called Data.

14:37.200 --> 14:41.400
So here in data I'd like to export that curve table as a CSV.

14:41.790 --> 14:47.730
To do that, we find the asset in the asset browser, right click on it and at the top we can export

14:47.730 --> 14:49.920
as CSV or Json.

14:50.070 --> 14:57.180
I'm going to export as CSV and I'm going to go into my Ora folder and into data and I'm going to export

14:57.180 --> 14:58.440
it here into data.

14:58.470 --> 15:00.000
Let's choose a file name.

15:00.000 --> 15:06.210
Now this is our CT underscore primary attributes.

15:07.750 --> 15:10.090
Underscore elementalist.

15:10.900 --> 15:12.310
Let's click save.

15:12.340 --> 15:16.390
Now we can take a look in our data folder and look at this.

15:16.390 --> 15:19.270
We have a comma separated values file.

15:19.530 --> 15:27.490
Now Csvs can be opened in just a text editor like Notepad, and they can also be opened as spreadsheets

15:27.490 --> 15:29.530
in Excel, for example.

15:29.530 --> 15:31.630
So notice I have the Excel icon.

15:31.630 --> 15:37.900
That means if I double click on it by default, it's going to open as a spreadsheet here in Excel and

15:37.900 --> 15:45.850
notice that we see our names of the rows and the very first row determines our x axis values.

15:46.150 --> 15:50.380
In other words, our time, or in our case we're using these as levels.

15:50.740 --> 15:55.270
So at level one, strength is five, intelligence is 15 and so on.

15:55.270 --> 15:57.330
And notice that some of these are empty.

15:57.340 --> 15:59.200
They don't have any values there.

15:59.200 --> 16:02.530
We only went up to level 20, it looks like, for resilience.

16:02.650 --> 16:08.840
Now showing this in CSV format, especially in a spreadsheet, is really nice because we can look at

16:08.840 --> 16:11.210
the values and alter them here.

16:11.210 --> 16:14.490
Let's say that I'd like to fill out these values, right?

16:14.510 --> 16:19.670
Let's say that perhaps I'd like to specify values at each of these points.

16:19.700 --> 16:25.280
It looks like my intelligence goes to 40 at level 20, but I'm going to change this.

16:25.280 --> 16:33.080
I'm going to set it to 35 here and 45 there, and I'm going to enter in some new values for resilience.

16:33.080 --> 16:42.200
Let's do 15, 17, 24, 32 and 40 here for vigor.

16:42.200 --> 16:51.770
We're going to go from 7 to 9 to 13 to 16 to 20 to 24.

16:52.070 --> 16:52.490
Okay.

16:52.490 --> 16:54.440
So we've changed all of these values.

16:54.440 --> 17:01.910
I'm going to click Save now before we go in and update our curve table in the Unreal Editor to reflect

17:01.910 --> 17:07.640
these, I'm also going to show you how you can open the CSV as a text file.

17:07.670 --> 17:13.190
You can simply right click on it and choose open with and you can open it with notepad.

17:13.190 --> 17:15.050
You can open it with notepad plus plus.

17:15.050 --> 17:19.700
If you have that, if I open it with notepad, here's what it looks like.

17:19.730 --> 17:26.330
It's just comma separated values and those values are the same as what we see in the spreadsheet.

17:27.100 --> 17:33.280
Notice the x axis value has the first entry with three dashes, and that's because it doesn't matter

17:33.280 --> 17:34.720
what that first entry is.

17:34.750 --> 17:37.350
Again, this is the x axis values.

17:37.360 --> 17:43.930
And then here we have the rows, starting with the row name and then the values corresponding to those

17:43.960 --> 17:45.310
x axis values.

17:45.340 --> 17:51.670
So if you don't want to use a spreadsheet or you don't have Excel or some kind of spreadsheet software,

17:51.670 --> 18:00.160
you can literally edit this in notepad or notepad plus plus or really any software package that can

18:00.160 --> 18:01.840
read text data.

18:02.710 --> 18:03.070
Okay.

18:03.070 --> 18:07.150
So what we've done is we've changed our spreadsheet, we've now changed the values.

18:07.150 --> 18:14.080
I'm going to go ahead and save this file and back in Unreal Engine, I'm going to open up my curve table

18:14.080 --> 18:19.240
and we have a button right here that says Re-import the curve table from the source file.

18:19.240 --> 18:21.130
All changes will be lost.

18:21.160 --> 18:23.310
This action cannot be undone.

18:23.320 --> 18:28.880
We can choose that file that we've changed and then that will change the curve table.

18:28.910 --> 18:36.860
We also have the option to go to asset and selecting Re-import and it's showing that CT primary attributes

18:36.890 --> 18:38.620
Elementalist file.

18:38.630 --> 18:40.070
So we have two options here.

18:40.070 --> 18:44.420
Now, if I click this re-import button, I have the option to choose the file.

18:44.420 --> 18:48.890
I'm going to choose the file we changed and saved and click open.

18:49.160 --> 18:52.390
And now notice that our curve table is different.

18:52.400 --> 18:59.000
It now has those values that we've added and they're no longer interpolated in a cubic manner.

18:59.000 --> 19:00.020
That's okay.

19:00.050 --> 19:06.590
Now notice that if we select all the values now, right click, we can't choose auto anymore.

19:06.620 --> 19:09.560
It's now forced to be linear.

19:09.740 --> 19:17.390
So that's an important quality when it comes to importing these from a CSV, we can no longer have auto

19:17.390 --> 19:18.140
interpolation.

19:18.140 --> 19:20.510
It's now linear between each point.

19:20.570 --> 19:22.750
So that's something to be aware of.

19:22.760 --> 19:29.960
So now we know how to export our curve tables as csvs and we've seen that we can re-import the data

19:29.960 --> 19:32.180
into our curve table from a CSV.

19:32.480 --> 19:36.730
We can also create curve tables straight from CSV files.

19:36.740 --> 19:38.330
Let's see how that works.

19:38.360 --> 19:39.530
Here's what I'm going to do.

19:39.530 --> 19:47.990
I'm going to take this CSV file I'm going to go to save as and I'm going to save this as a new file

19:47.990 --> 19:53.870
called CT Primary Attributes Underscore Ranger and click Save.

19:54.080 --> 19:57.590
Now for the Ranger, I can change the values around.

19:57.590 --> 20:00.410
Let's say the Ranger should have a slightly higher strength.

20:00.410 --> 20:10.310
We can start at a strength of six for level one, nine for level five, 14 for level ten, perhaps 18

20:10.310 --> 20:11.870
for 15.

20:12.080 --> 20:18.290
Level 20 can have a value of 26, and level 40 can have a value of 34.

20:18.810 --> 20:21.480
For intelligence, we can be a little bit lower.

20:21.510 --> 20:23.310
Let's start off at 12.

20:23.310 --> 20:33.120
At level five, we'll go to 15, then 17, then 24, then 27, then 32.

20:33.750 --> 20:35.880
For resilience, we'll be a little higher.

20:35.880 --> 20:37.230
Let's do 13.

20:37.230 --> 20:38.310
15.

20:39.310 --> 20:44.650
17, 23, 27, 32.

20:45.010 --> 20:45.460
We'll do.

20:45.490 --> 20:46.330
33.

20:46.360 --> 20:48.280
Vigor can be a bit higher as well.

20:48.280 --> 20:57.550
We'll go from 11 to 15, 17, 25, 31 and 35.

20:58.030 --> 20:58.540
Okay.

20:58.540 --> 21:00.250
And we'll go ahead and save that.

21:00.250 --> 21:03.250
So now we have a different CSV for the Ranger.

21:03.580 --> 21:06.790
We can import this directly into the engine.

21:07.210 --> 21:08.830
So here's how we can do it.

21:08.860 --> 21:10.540
We can make a new curve table.

21:10.540 --> 21:13.840
So I'm going to right click and make a new curve table.

21:14.020 --> 21:23.800
I'm going to choose Cubic, create the curve table and call this CT underscore primary attributes underscore

21:23.800 --> 21:34.420
Ranger open this up and let's re import the curve table choosing Ranger dot csv clicking open and here

21:34.420 --> 21:38.410
we see our curve and we can take a look at those trends.

21:38.410 --> 21:46.670
And of course they are linear, but we saw how easy it was for us to just create a new CSV, change

21:46.670 --> 21:51.950
the values here in the spreadsheet and create a new curve table and choose the CSV.

21:52.610 --> 21:54.500
So that's another way to do it.

21:55.220 --> 21:55.850
Now.

21:55.850 --> 21:59.720
Yet another way is to use Json data.

21:59.750 --> 22:07.130
Json is a file format for organizing data just like a comma separated list, but it has a slightly different

22:07.130 --> 22:07.970
syntax.

22:08.000 --> 22:09.570
Let's see what that looks like.

22:09.590 --> 22:15.140
We're going to take our Ranger data table right click and export as Json this time.

22:15.320 --> 22:19.540
Now we're going to call this primary attributes Ranger dot Json.

22:19.550 --> 22:23.870
We'll click Save and we can open up that Json file.

22:24.080 --> 22:25.460
So here it is.

22:25.490 --> 22:30.680
My computer wants to open it automatically using notepad and that's fine.

22:30.680 --> 22:35.090
I'm going to open it with notepad and here's what it looks like in Json format.

22:35.090 --> 22:37.160
So the syntax is a bit different.

22:37.190 --> 22:44.630
We have opening and closing square brackets and then each of these curves is represented by a comma

22:44.630 --> 22:53.870
separated list of curly brackets, and each of the curly brackets have pairs in quotes separated by

22:53.870 --> 22:54.470
colons.

22:54.470 --> 22:58.050
And these are separated by commas within the curly brackets.

22:58.050 --> 23:00.630
So this is another way to store the data.

23:01.050 --> 23:10.260
So this one is ranger dot Json, but we can go ahead and save as and we can save this as primary attributes

23:10.260 --> 23:16.110
underscore warrior dot Json and we can change the values here.

23:16.140 --> 23:19.110
Now warriors are going to want a higher strength.

23:19.110 --> 23:21.990
Let's start them off at a strength of 15.

23:22.110 --> 23:28.920
At level five, we'll go up to say 21 at ten, let's do 26.

23:28.920 --> 23:35.070
At 15 or 14.9, we'll have a value of 33.

23:35.100 --> 23:40.560
At level 20, we'll be at 37 and at 40, let's do 42.

23:40.680 --> 23:43.470
Now, intelligence can be relatively low.

23:43.470 --> 23:46.350
At level one, we can have an intelligence of five.

23:46.380 --> 23:49.410
At level five, we can be at 6.5.

23:49.920 --> 24:00.750
At level ten, we can be at 7.9 and level 15, we can be at nine level 20, we can be at 11 and level

24:00.750 --> 24:02.400
40, we can be at 13.

24:03.170 --> 24:05.390
For resilience, we can have a higher value.

24:05.390 --> 24:06.980
Let's start at 15.

24:07.010 --> 24:16.880
We'll go up to 17, then 21, then 25, then 27, then 31.

24:17.900 --> 24:20.360
And vigor will be higher as well.

24:20.690 --> 24:35.150
We'll start at 11, go to 15, then 16, then 21, 25 and 29, and we'll go ahead and save this.

24:35.150 --> 24:42.050
So now we have a Json file for the warrior and we can import this into Unreal Engine.

24:42.980 --> 24:47.930
Now I'm going to click on import and choose our Warrior Json file.

24:48.050 --> 24:52.860
And this time we get the option to choose what we'd like.

24:52.880 --> 24:55.770
We can make a data table out of the Json file.

24:55.790 --> 25:00.210
We can make a curved table float curve vector curve, linear color curve.

25:00.230 --> 25:01.970
I'm going to choose curve table.

25:02.060 --> 25:06.310
And when choosing the interpolation type, I'm going to choose cubic.

25:06.320 --> 25:07.990
Click on Apply.

25:08.000 --> 25:10.170
And now we have a new curve table.

25:10.190 --> 25:12.170
Primary attributes Warrior.

25:12.170 --> 25:15.800
And if I open it and select my strength, well, check it out.

25:15.800 --> 25:23.090
We now have our curve and notice we have a cubic curve and we can once again alter the handles.

25:23.090 --> 25:29.780
So with Json files, we're able to maintain that cubic curve, which is kind of nice.

25:29.780 --> 25:32.720
The CSV kind of strips that quality away.

25:32.720 --> 25:36.920
So Json is a little bit superior in that regard.

25:37.570 --> 25:39.880
So that's just something to be aware of.

25:40.030 --> 25:47.770
If you'd like that cubic quality that's smooth curve quality, you can use Json files.

25:47.800 --> 25:55.630
So now that we have curve tables for Ranger and Warrior, we can go in and set up the modifiers for

25:55.630 --> 25:58.750
those primary attribute gameplay effects.

25:58.780 --> 26:00.700
I'm going to start with the Ranger.

26:00.730 --> 26:08.140
I'm going to go down to the modifiers, Click plus four times and let's set these up so we'll have the

26:08.140 --> 26:09.010
attribute.

26:09.040 --> 26:10.960
We'll start with strength.

26:11.290 --> 26:13.600
Set this to override.

26:13.630 --> 26:20.650
Give it a value of one scaled by our curve table for Ranger selecting the strength Curve.

26:21.070 --> 26:23.260
We'll go to our next modifier.

26:23.290 --> 26:27.190
This is going to be intelligence override.

26:30.030 --> 26:31.860
Ranger Curve.

26:32.280 --> 26:32.820
Curve.

26:32.850 --> 26:33.600
Table.

26:34.140 --> 26:35.730
Intelligence Curve.

26:37.540 --> 26:37.870
Next.

26:37.870 --> 26:39.130
We have resilience.

26:44.620 --> 26:46.540
Choosing the resilience curve.

26:46.870 --> 26:50.380
And finally, we have vigor.

26:57.180 --> 26:58.650
And we're set.

26:59.190 --> 27:02.670
Let's set up our warrior class.

27:02.670 --> 27:04.860
And at this point, it's repetition.

27:04.860 --> 27:06.720
So we'll time lapse this one.

27:24.250 --> 27:28.030
Okay, so we're set on all of our modifiers.

27:28.620 --> 27:35.100
Now that those are all set up and ready to apply, we actually need to apply these primary attribute

27:35.130 --> 27:42.930
gameplay effects and we have them all stored here in our data asset, which we can look up based on

27:42.930 --> 27:45.120
our character class type.

27:45.480 --> 27:49.440
And when we apply these effects, we can specify a level.

27:49.440 --> 27:51.120
So this is all great.

27:51.150 --> 27:53.610
Our next step is to actually apply these.

27:53.610 --> 27:57.110
And before we wrap up this video, I'm just going to point out one thing.

27:57.120 --> 28:02.940
Our secondary attributes, which we're using with Aura, is an infinite gameplay effect.

28:02.940 --> 28:09.270
And we did that because every time Aughra's primary attributes change, we'd like those secondary attributes

28:09.270 --> 28:10.530
to change as well.

28:11.010 --> 28:17.070
But for our enemies, at least in this game project, I don't really plan on the enemies primary attributes

28:17.070 --> 28:19.290
changing at runtime.

28:19.500 --> 28:24.510
I'm going to set their primary attributes based on their level and then they're never going to change

28:24.510 --> 28:25.350
after that.

28:25.380 --> 28:31.270
So there's really no need to apply an infinite gameplay effect to our enemies for that reason.

28:31.270 --> 28:37.840
If we wanted to, we could take this secondary attributes infinite effect and we could right click and

28:37.840 --> 28:46.360
we can duplicate it and call this g underscore secondary attributes underscore enemy.

28:46.360 --> 28:52.030
And we could use this for the enemies and for the secondary attributes enemy.

28:52.060 --> 28:59.380
We could change it from an infinite gameplay effect to an instant gameplay effect and save that.

28:59.770 --> 29:04.690
And then we can use that version for the enemy's secondary attributes.

29:04.720 --> 29:06.670
So I'm going to do that.

29:06.700 --> 29:14.260
We have secondary attributes, enemy, and then I can take the secondary attributes used by Aura, which

29:14.260 --> 29:19.450
is this one, and stick it back into the aura folder and save all.

29:19.480 --> 29:25.540
Now, if you did plan on changing the primary attributes of your enemies at runtime, for instance,

29:25.540 --> 29:30.730
maybe you'd like your enemies to be able to level up, which is something I'm not going to implement.

29:30.730 --> 29:36.040
But if you did, then you could use the infinite gameplay effect for your secondary attributes.

29:36.040 --> 29:40.060
Since we're not, I'm going to have an instant gameplay effect for that.

29:40.390 --> 29:48.220
So now our data asset is just waiting for us to initialize the attributes for our enemies and we're

29:48.220 --> 29:50.100
going to handle that next.

29:50.110 --> 29:52.480
So great job and I'll see you soon.
