WEBVTT 1 00:00:06.257 --> 00:00:09.901 Game Basics SNG Data Table Planning 2 00:00:27.169 --> 00:00:28.000 Hello 3 00:00:28.000 --> 00:00:31.258 I am Park Hyung-Seon, from SNG data table planning 4 00:00:31.258 --> 00:00:33.565 Let's begin the SNG data table planning lesson 5 00:00:34.104 --> 00:00:37.807 Writing a Data Table 6 00:00:38.050 --> 00:00:41.565 First, let's reverse-engineer an existing data table 7 00:00:41.565 --> 00:00:43.389 You will probably already know 8 00:00:43.389 --> 00:00:46.040 about the developer Supercell 9 00:00:46.040 --> 00:00:49.758 They are the developers of the game Hay Day 10 00:00:49.758 --> 00:00:54.249 Its name is a pun on the phrase 'hey day' 11 00:00:54.249 --> 00:00:56.530 using the word 'hay' instead 12 00:00:56.530 --> 00:01:00.000 and it is a peaceful farming social network game 13 00:01:00.000 --> 00:01:02.545 Now let me explain what 14 00:01:02.545 --> 00:01:04.644 a data table is 15 00:01:04.644 --> 00:01:06.210 To develop a game 16 00:01:06.210 --> 00:01:11.739 you need the plans for the rules of the game, its UI 17 00:01:11.739 --> 00:01:13.852 and a data table 18 00:01:13.852 --> 00:01:18.947 A data table is all of the attribute values 19 00:01:18.947 --> 00:01:23.868 that go into the game 20 00:01:23.868 --> 00:01:25.832 organized in a table 21 00:01:25.832 --> 00:01:30.026 Then now, let's try creating a data table 22 00:01:30.026 --> 00:01:34.060 for the game Hay Day by Supercell 23 00:01:34.060 --> 00:01:36.604 In order to write a data table 24 00:01:36.604 --> 00:01:39.235 you need to know the various values 25 00:01:39.235 --> 00:01:41.525 that exist in the video game 26 00:01:41.525 --> 00:01:43.146 You can do that 27 00:01:43.146 --> 00:01:46.700 by either searching for datamined content online 28 00:01:46.700 --> 00:01:50.245 or finding the values yourself 29 00:01:50.245 --> 00:01:52.367 as you play the game 30 00:01:52.367 --> 00:01:56.390 To do it the easier way 31 00:01:56.390 --> 00:01:57.941 you can just search the Hay Day wiki 32 00:01:57.941 --> 00:02:00.412 This is the Hay Day wiki 33 00:02:00.412 --> 00:02:02.831 If you go to the Crops page 34 00:02:02.831 --> 00:02:05.148 you can see a list of all the crops in the game 35 00:02:05.148 --> 00:02:08.535 and the level they are unlocked at 36 00:02:08.535 --> 00:02:11.295 There's wheat, corn, soybeans, candy canes 37 00:02:11.295 --> 00:02:14.516 carrots, indigo, pumpkins, and so on 38 00:02:14.516 --> 00:02:16.811 Though there are a lot of them 39 00:02:16.811 --> 00:02:20.336 let's first take a look at wheat, which is available from the start 40 00:02:20.336 --> 00:02:23.389 If you click on wheat in this list 41 00:02:23.389 --> 00:02:25.685 you will be directed to its page 42 00:02:25.685 --> 00:02:28.534 which additional details 43 00:02:28.534 --> 00:02:31.685 The level it unlocks at, min/max price, time it takes to grow 44 00:02:31.685 --> 00:02:35.019 experience, source, and default price 45 00:02:35.019 --> 00:02:37.336 These are all of the values 46 00:02:37.336 --> 00:02:39.494 that are associated with wheat 47 00:02:39.494 --> 00:02:41.046 So you can get all of this information 48 00:02:41.046 --> 00:02:45.007 like the attributes of wheat, what level you get it at, the gold it will earn you 49 00:02:45.007 --> 00:02:47.725 how long it takes to grow, how much experience it yields 50 00:02:47.725 --> 00:02:49.459 and where you can plant it 51 00:02:49.459 --> 00:02:51.999 simply from its page on the wiki 52 00:02:51.999 --> 00:02:54.197 Attributes such as unlock level 53 00:02:54.197 --> 00:02:57.138 make up the columns of the data table 54 00:02:57.138 --> 00:02:58.702 Using the information we have 55 00:02:58.702 --> 00:03:01.534 we can now write a data table 56 00:03:01.534 --> 00:03:05.019 Let me first explain to you about columns 57 00:03:05.019 --> 00:03:08.371 In an actual developing environment 58 00:03:08.371 --> 00:03:10.039 you will have to communicate with the programmers 59 00:03:10.039 --> 00:03:12.356 You'll ask them each time 60 00:03:12.356 --> 00:03:15.206 if you can add a column, edit it 61 00:03:15.206 --> 00:03:18.772 or if it's okay to delete it 62 00:03:18.772 --> 00:03:21.437 To put it simply 63 00:03:21.437 --> 00:03:24.286 If there is a spreadsheet with rows and columns 64 00:03:24.286 --> 00:03:29.722 rows go on horizontally, and columns go on vertically 65 00:03:29.722 --> 00:03:32.308 Rows are horizontal 66 00:03:32.308 --> 00:03:34.574 and columns are vertical 67 00:03:34.574 --> 00:03:37.918 A single column represents a single attribute 68 00:03:37.918 --> 00:03:39.720 so when an attribute is added 69 00:03:39.720 --> 00:03:42.039 The spreadsheet will get longer horizontally 70 00:03:42.039 --> 00:03:43.757 One thing to watch out for 71 00:03:43.757 --> 00:03:45.367 is that the more columns there are 72 00:03:45.367 --> 00:03:47.653 the more database capacity the table will take up 73 00:03:47.653 --> 00:03:49.237 So you should be careful not to add too many 74 00:03:49.237 --> 00:03:51.479 When writing a data table 75 00:03:51.479 --> 00:03:53.432 you have to use your head 76 00:03:53.432 --> 00:03:55.732 and design it in a way 77 00:03:55.732 --> 00:03:58.326 so that it uses the fewest columns as possible 78 00:03:58.326 --> 00:03:59.929 But the size of data tables 79 00:03:59.929 --> 00:04:02.128 don't depend as much on their vertical length 80 00:04:02.128 --> 00:04:04.717 so even if a game has over a thousand quests 81 00:04:04.717 --> 00:04:09.213 because that's 1,000 rows and not 1,000 columns 82 00:04:09.213 --> 00:04:11.336 it won't cause a problem 83 00:04:11.336 --> 00:04:14.997 But if the table has 1,000 columns 84 00:04:14.997 --> 00:04:18.066 it will take up so much data capacity 85 00:04:18.066 --> 00:04:19.436 that it will become impossible to even save 86 00:04:19.436 --> 00:04:21.870 That is why you should be very aware 87 00:04:21.870 --> 00:04:23.990 of the table's horizontal length 88 00:04:23.990 --> 00:04:25.306 Now let's write 89 00:04:25.306 --> 00:04:27.802 a data table using the data 90 00:04:27.802 --> 00:04:30.228 that we acquired from the wiki 91 00:04:30.228 --> 00:04:34.098 Attributes of the crops, such as production time and experience yield 92 00:04:34.098 --> 00:04:35.900 make up the columns 93 00:04:35.900 --> 00:04:38.159 and are placed on the topmost row 94 00:04:38.159 --> 00:04:39.351 After the columns are created 95 00:04:39.351 --> 00:04:41.904 you can fill out the attribute values of each crop 96 00:04:41.904 --> 00:04:43.080 and write the data table 97 00:04:43.080 --> 00:04:46.822 Each column is a type of information or attribute 98 00:04:46.822 --> 00:04:49.862 that items or game content will have 99 00:04:49.862 --> 00:04:52.036 Also, values that are likely to change 100 00:04:52.036 --> 00:04:55.595 as the game is played 101 00:04:55.595 --> 00:04:57.743 also belong in columns 102 00:04:57.743 --> 00:05:01.690 For example, number of crops produced, or crop price 103 00:05:01.690 --> 00:05:05.614 since such values will change as the game is played 104 00:05:05.614 --> 00:05:07.552 You also need ID numbers 105 00:05:07.552 --> 00:05:11.466 because if you don't distinguish between things as you develop the game 106 00:05:11.466 --> 00:05:14.023 The client server will have no way of knowing which is which 107 00:05:14.023 --> 00:05:16.268 so you must enter IDs as well 108 00:05:16.268 --> 00:05:18.103 Elements of the game that contain a lot of information 109 00:05:18.103 --> 00:05:20.395 such as items or characters 110 00:05:20.395 --> 00:05:23.436 especially require them 111 00:05:23.436 --> 00:05:27.297 Now let's learn about the data values 112 00:05:27.297 --> 00:05:30.454 Data values mean the actual values 113 00:05:30.454 --> 00:05:32.757 that are entered into the cells of the table 114 00:05:32.757 --> 00:05:35.505 such as the crop's ID, name, and unlock level 115 00:05:35.505 --> 00:05:37.671 When entering data values 116 00:05:37.671 --> 00:05:39.767 you have to make sure 117 00:05:39.767 --> 00:05:41.812 they are the correct variable type 118 00:05:41.812 --> 00:05:46.248 This is an example of a data table 119 00:05:46.248 --> 00:05:49.821 ID, Name, Lv, Exp, productionTime 120 00:05:49.821 --> 00:05:52.307 those are the name of the columns 121 00:05:52.307 --> 00:05:57.677 When you're starting, there's no need to think too hard 122 00:05:57.677 --> 00:05:59.723 Just think of it as making a regular spreadsheet 123 00:05:59.723 --> 00:06:02.753 The first thing you need is the ID 124 00:06:02.753 --> 00:06:07.160 You will probably use alphabets or numbers as IDs 125 00:06:07.160 --> 00:06:09.406 but using numbers is the most optimal 126 00:06:09.406 --> 00:06:11.790 so I used numbers in this example 127 00:06:11.790 --> 00:06:14.020 But one thing of note 128 00:06:14.020 --> 00:06:16.019 if you used 129 00:06:16.019 --> 00:06:19.065 ascending natural numbers, starting from 1 130 00:06:19.065 --> 00:06:24.060 and going up to 2, 3, 4, 5, and so on as the ID 131 00:06:24.060 --> 00:06:25.451 is that there will be dozens of other data tables 132 00:06:25.451 --> 00:06:27.931 as well 133 00:06:27.931 --> 00:06:30.555 If the same numbers are used elsewhere 134 00:06:30.555 --> 00:06:32.416 it will be confusing 135 00:06:32.416 --> 00:06:36.216 and you might mess up the code 136 00:06:36.216 --> 00:06:38.195 because there are different elements with the same ID 137 00:06:38.195 --> 00:06:40.495 and that might cause a bug 138 00:06:40.495 --> 00:06:45.919 So when you're using numbers 139 00:06:45.919 --> 00:06:48.456 for the IDs in your data table 140 00:06:48.456 --> 00:06:51.617 you should create your own set of rules 141 00:06:51.617 --> 00:06:53.961 to make sure they don't overlap 142 00:06:53.961 --> 00:06:56.318 This table now has data 143 00:06:56.318 --> 00:06:58.703 of various crops 144 00:06:58.703 --> 00:07:02.165 And the columns consist of 145 00:07:02.165 --> 00:07:06.218 ID, Name, Lv, Exp, 146 00:07:06.218 --> 00:07:09.737 Production Time, Product Count, price 147 00:07:09.737 --> 00:07:13.575 MimPrice, MaxPrice 148 00:07:13.575 --> 00:07:15.703 Place_Id and Place_name 149 00:07:15.703 --> 00:07:18.515 I'll explain what these are one at a time 150 00:07:18.515 --> 00:07:21.879 The ID number, as I explained before 151 00:07:21.879 --> 00:07:25.652 are necessary for 152 00:07:25.652 --> 00:07:28.535 the code to distinguish 153 00:07:28.535 --> 00:07:30.557 between the different crops 154 00:07:30.557 --> 00:07:32.669 on the client and server 155 00:07:32.669 --> 00:07:33.710 That is why we need to create 156 00:07:33.710 --> 00:07:36.159 IDs for these crops 157 00:07:36.159 --> 00:07:37.623 And the names here 158 00:07:37.623 --> 00:07:39.965 are what will be displayed on the user interface 159 00:07:39.965 --> 00:07:43.129 So the names Wheat, Corn, Soybeans, Candy canes, and so on 160 00:07:43.129 --> 00:07:45.456 will be shown in Korean or English, according to the language setting 161 00:07:45.456 --> 00:07:49.070 There are two ways to code the language settings 162 00:07:49.070 --> 00:07:50.544 If you're coding a game 163 00:07:50.544 --> 00:07:52.877 on an engine like Unity 164 00:07:52.877 --> 00:07:54.179 or Unreal Engine 165 00:07:54.179 --> 00:07:57.965 you can hard code the data 166 00:07:57.965 --> 00:08:00.377 as data tables into the database 167 00:08:00.377 --> 00:08:03.525 Then the data does not need to be transferred 168 00:08:03.525 --> 00:08:05.632 between the server and client 169 00:08:05.632 --> 00:08:08.609 If you write a C# script in Unity 170 00:08:08.609 --> 00:08:11.218 and hard code the data 171 00:08:11.218 --> 00:08:14.811 you will have to enter all of the crop names 172 00:08:14.811 --> 00:08:17.228 in the code yourself 173 00:08:17.228 --> 00:08:21.207 What is bad about this method 174 00:08:21.207 --> 00:08:24.783 is that it is fundamentally very easy to hack 175 00:08:24.783 --> 00:08:28.640 A hacker can easily reprogram the client 176 00:08:28.640 --> 00:08:33.558 and get access to items 177 00:08:33.558 --> 00:08:36.692 without making any in-app purchases 178 00:08:36.692 --> 00:08:38.798 without having to go through 179 00:08:38.798 --> 00:08:40.970 verification by the server 180 00:08:40.970 --> 00:08:43.742 Second, it is difficult to edit 181 00:08:43.742 --> 00:08:47.343 If we had to make any patches to the game 182 00:08:47.343 --> 00:08:49.435 and if we were using a data table 183 00:08:49.435 --> 00:08:52.651 The designer simply has to change the values in the data table 184 00:08:52.651 --> 00:08:55.712 and send it to the server developer 185 00:08:55.712 --> 00:08:57.184 who can apply that to the server right away 186 00:08:57.184 --> 00:08:59.471 and update the data in real time 187 00:08:59.471 --> 00:09:03.683 which means the values can be changed at any time 188 00:09:03.683 --> 00:09:06.204 On the other hand, if you hard code 189 00:09:06.204 --> 00:09:08.911 every time you need to make a change 190 00:09:08.911 --> 00:09:13.138 you will have to go to the client developer 191 00:09:13.138 --> 00:09:17.766 and open the C# script either in plain text or Visual Studio 192 00:09:17.766 --> 00:09:22.158 or the code editor in Unity 193 00:09:22.158 --> 00:09:24.108 and edit all of the code yourself 194 00:09:24.108 --> 00:09:26.722 If that only happened one or two times, it wouldn't be a big deal 195 00:09:26.722 --> 00:09:29.021 But if changes have to be made all of the time 196 00:09:29.021 --> 00:09:32.950 it will begin to affect the client developer's work 197 00:09:32.950 --> 00:09:35.386 Also, it is very difficult to communicate as well 198 00:09:35.386 --> 00:09:37.205 Which is why in order to prevent abuse 199 00:09:37.205 --> 00:09:39.623 and to make the work easier 200 00:09:39.623 --> 00:09:43.318 we save the values in spreadsheets called data tables 201 00:09:43.318 --> 00:09:46.247 and keep them on the server 202 00:09:46.247 --> 00:09:47.751 and make the client talk to the server 203 00:09:47.751 --> 00:09:50.059 to get the data in real time 204 00:09:50.059 --> 00:09:51.866 Also, as for the levels 205 00:09:51.866 --> 00:09:55.268 Wheat, corn, soybeans, candy canes, and carrots 206 00:09:55.268 --> 00:09:57.930 have to be unlocked 207 00:09:57.930 --> 00:09:59.762 at level 1, 2, 5, 7, 9, 13, 15, and 18 respectively 208 00:09:59.762 --> 00:10:02.234 so we should enter that into this column 209 00:10:02.234 --> 00:10:04.148 And experience yield 210 00:10:04.148 --> 00:10:08.089 is the total amount of experience points 211 00:10:08.089 --> 00:10:11.579 you get from harvesting these crops 212 00:10:11.579 --> 00:10:13.259 So whatever number you enter in that column 213 00:10:13.259 --> 00:10:16.803 is the amount of exp the player gets 214 00:10:16.803 --> 00:10:19.485 when they harvest each crop 215 00:10:19.485 --> 00:10:21.314 As for production time 216 00:10:21.314 --> 00:10:23.293 because this is a SNG 217 00:10:23.293 --> 00:10:25.841 If you plant different crops 218 00:10:25.841 --> 00:10:28.971 some will take one minute to grow, while others take 20 minutes 219 00:10:28.971 --> 00:10:30.584 So some crops take long to grow 220 00:10:30.584 --> 00:10:32.551 while other don't take very long 221 00:10:32.551 --> 00:10:34.316 but whichever you plant, you will have to wait a while 222 00:10:34.316 --> 00:10:37.755 If you don't enter the production time 223 00:10:37.755 --> 00:10:39.465 that feature won't be implemented 224 00:10:39.465 --> 00:10:41.765 which is why you need to put production time as a column 225 00:10:41.765 --> 00:10:44.267 The column is named Production Time 226 00:10:44.267 --> 00:10:46.023 and if you set the unit to minutes 227 00:10:46.023 --> 00:10:48.335 if you enter 60 as the value 228 00:10:48.335 --> 00:10:51.197 then the crop will take 60 minutes to grow 229 00:10:51.197 --> 00:10:52.964 As for Product Count 230 00:10:52.964 --> 00:10:55.296 you can see that wheat has a value of 2 231 00:10:55.296 --> 00:10:58.408 which means that a single harvest 232 00:10:58.408 --> 00:11:00.316 will yield two wheat 233 00:11:00.316 --> 00:11:03.805 As for the price, like most SNGs 234 00:11:03.805 --> 00:11:07.019 When you plant wheat 235 00:11:07.019 --> 00:11:09.584 it will take some money to do so 236 00:11:09.584 --> 00:11:14.472 You can see planting wheat 237 00:11:14.472 --> 00:11:17.237 costs 1 gold 238 00:11:17.237 --> 00:11:20.647 Now for MimPrice and MaxPrice 239 00:11:20.647 --> 00:11:22.208 When you harvest these crops 240 00:11:22.208 --> 00:11:26.514 and sell them using the shop system 241 00:11:26.514 --> 00:11:29.878 other players will buy them 242 00:11:29.878 --> 00:11:31.728 But the game has a set minimum 243 00:11:31.728 --> 00:11:33.612 and maximum price 244 00:11:33.612 --> 00:11:38.890 so that the player can only 245 00:11:38.890 --> 00:11:40.926 set the price below 246 00:11:40.926 --> 00:11:42.039 the set maximum price 247 00:11:42.039 --> 00:11:45.945 The reason that players will buy crops from each other 248 00:11:45.945 --> 00:11:47.841 is because in SNG games 249 00:11:47.841 --> 00:11:51.125 if you wanted to make bread, for example 250 00:11:51.125 --> 00:11:53.174 you have to harvest wheat 251 00:11:53.174 --> 00:11:55.712 and turn it into bread at the bakery 252 00:11:55.712 --> 00:11:59.422 And if you wanted to make something out of that bread 253 00:11:59.422 --> 00:12:01.588 you could get milk from a cow 254 00:12:01.588 --> 00:12:03.554 and make a cream puff, for example 255 00:12:03.554 --> 00:12:06.566 Then you can take the cream puff and add strawberries to it 256 00:12:06.566 --> 00:12:07.970 to make a cream & strawberry puff 257 00:12:07.970 --> 00:12:10.178 So items are made by combining various ingredients 258 00:12:10.178 --> 00:12:14.870 And completing quests that require higher-level items 259 00:12:14.870 --> 00:12:18.692 will give you more experience and gold 260 00:12:18.692 --> 00:12:21.432 So the market system exists 261 00:12:21.432 --> 00:12:24.513 so that players can buy lower-level items 262 00:12:24.513 --> 00:12:27.133 and be able to create 263 00:12:27.133 --> 00:12:28.245 the high-level items 264 00:12:28.245 --> 00:12:30.287 as quickly as possible 265 00:12:30.287 --> 00:12:32.167 So whatever items you don't have 266 00:12:32.167 --> 00:12:34.514 you can get by buying from other players 267 00:12:34.514 --> 00:12:38.472 Next you need to enter the ID of the source 268 00:12:38.472 --> 00:12:40.985 Like before 269 00:12:40.985 --> 00:12:42.227 I will use numbers as IDs 270 00:12:42.227 --> 00:12:45.533 1 represents a field 271 00:12:45.533 --> 00:12:48.377 2 is an apple tree, 3 is a raspberry bush 272 00:12:48.377 --> 00:12:50.118 and 4 is a cherry tree 273 00:12:50.118 --> 00:12:54.593 If you can only see the numbered IDs 274 00:12:54.593 --> 00:12:56.336 it's hard to recognize which is which 275 00:12:56.336 --> 00:13:00.057 So even though it won't be used in the code 276 00:13:00.057 --> 00:13:02.790 to make it easier for the designer to work 277 00:13:02.790 --> 00:13:04.935 I put a column here for the designer 278 00:13:04.935 --> 00:13:07.207 and named it 'design' 279 00:13:07.207 --> 00:13:08.395 to help with development 280 00:13:08.395 --> 00:13:12.077 This column will not be saved on the client server 281 00:13:12.077 --> 00:13:13.900 and is only for the development process 282 00:13:13.900 --> 00:13:15.718 That was the detailed explanation 283 00:13:15.718 --> 00:13:17.722 of data tables 284 00:13:17.722 --> 00:13:21.338 Now let's look at the details 285 00:13:21.338 --> 00:13:24.732 of the development 286 00:13:24.732 --> 00:13:28.595 When you're writing a data table 287 00:13:28.595 --> 00:13:30.617 when a programmer uses the table 288 00:13:30.617 --> 00:13:33.054 they need the column names to be in the English alphabet 289 00:13:33.054 --> 00:13:36.306 so you always need English names for the columns 290 00:13:36.306 --> 00:13:39.429 The reason for that is 291 00:13:39.429 --> 00:13:41.635 when you give the programmer 292 00:13:41.635 --> 00:13:44.087 the data table 293 00:13:44.087 --> 00:13:47.455 the table will usually be in Microsoft Excel format 294 00:13:47.455 --> 00:13:51.017 and the programmer will convert it to the right file extension 295 00:13:51.017 --> 00:13:53.593 and save it to the database 296 00:13:53.593 --> 00:13:57.199 But programmers do not use letters other than the alphabet 297 00:13:57.199 --> 00:13:59.332 for the column names 298 00:13:59.332 --> 00:14:04.395 because those column names will be going in the code 299 00:14:04.395 --> 00:14:06.504 that is why column names should be in English 300 00:14:06.504 --> 00:14:08.819 Another thing of note 301 00:14:08.819 --> 00:14:12.930 is how you write those English names 302 00:14:12.930 --> 00:14:15.173 Do you use capitals? 303 00:14:15.173 --> 00:14:18.395 How should you use underscores? 304 00:14:18.395 --> 00:14:20.287 There should be rules for that as well 305 00:14:20.287 --> 00:14:24.558 This problem should be solved 306 00:14:24.558 --> 00:14:28.069 by looking at the data table draft 307 00:14:28.069 --> 00:14:30.157 that the designer srote 308 00:14:30.157 --> 00:14:33.059 together with the client and server programmers 309 00:14:33.059 --> 00:14:34.593 The three should talk to each other 310 00:14:34.593 --> 00:14:37.386 and reach an agreement about that 311 00:14:37.386 --> 00:14:40.280 Some studios will have rules 312 00:14:40.280 --> 00:14:41.903 so that the first letter is always capitalized 313 00:14:41.903 --> 00:14:44.395 and underscores replace spaces 314 00:14:44.395 --> 00:14:49.126 But if you can't do that for some reason 315 00:14:49.126 --> 00:14:50.319 or if you're not sure 316 00:14:50.319 --> 00:14:52.950 it's okay to use just lower case letters 317 00:14:52.950 --> 00:14:54.747 The purpose of these names is to distinguish between things 318 00:14:54.747 --> 00:14:56.774 so if you don't speak English, you can just use a translator 319 00:14:56.774 --> 00:14:59.196 and use short words 320 00:14:59.196 --> 00:15:02.445 rather than sentences 321 00:15:02.445 --> 00:15:04.983 or big words 322 00:15:04.983 --> 00:15:08.458 You don't have to make it grammatically correct 323 00:15:08.458 --> 00:15:11.554 You just have to give each asset a unique ID 324 00:15:11.554 --> 00:15:14.722 so it's okay 325 00:15:14.722 --> 00:15:17.644 Next, I will explain to you 326 00:15:17.644 --> 00:15:19.098 about data types 327 00:15:19.098 --> 00:15:21.885 The development is smoother 328 00:15:21.885 --> 00:15:24.494 when the designers designate the data types beforehand 329 00:15:24.494 --> 00:15:27.487 It's not necessary for the designers to do this 330 00:15:27.487 --> 00:15:29.435 because the programmers can do this as well 331 00:15:29.435 --> 00:15:33.760 But the reason it's better for the designers to do it 332 00:15:33.760 --> 00:15:37.386 is because the designer is who writes the data table 333 00:15:37.386 --> 00:15:40.275 and has planned the entire system 334 00:15:40.275 --> 00:15:42.675 and so the programmer may not be aware 335 00:15:42.675 --> 00:15:45.316 of what the designer intended to do with each column 336 00:15:45.316 --> 00:15:49.236 So in order for the designer 337 00:15:49.236 --> 00:15:53.277 to make their intention clear in each of the columns 338 00:15:53.277 --> 00:15:55.538 the designer has to have some level of knowledge 339 00:15:55.538 --> 00:15:57.402 about data types 340 00:15:57.402 --> 00:16:00.079 and be able to write the data table draft 341 00:16:00.079 --> 00:16:01.202 It is possible to change 342 00:16:01.202 --> 00:16:02.795 the data type even after 343 00:16:02.795 --> 00:16:04.861 you have handed the table to the programmer 344 00:16:04.861 --> 00:16:08.139 But before you fix anything 345 00:16:08.139 --> 00:16:11.296 you should let them know what you had first intended to do 346 00:16:11.296 --> 00:16:13.726 The most often used data type in this table 347 00:16:13.726 --> 00:16:16.395 is Int, Float, String, and Boolean 348 00:16:16.395 --> 00:16:19.913 Int stands for integer, Float means floating-point number, which means it can have decimals 349 00:16:19.913 --> 00:16:23.643 String means a sequence of characters, and Boolean is true or false 350 00:16:23.643 --> 00:16:27.016 Then there's a type called design, which is used for values that only the designer will see 351 00:16:27.016 --> 00:16:29.425 and the List data type is somewhat special 352 00:16:29.425 --> 00:16:31.601 The developer needs to be provided explanation 353 00:16:31.601 --> 00:16:33.886 on how the data works 354 00:16:33.886 --> 00:16:37.326 and what information each column holds 355 00:16:37.326 --> 00:16:40.939 You, as the designer, have to organize the data table well 356 00:16:40.939 --> 00:16:46.059 using column names, their alphabetical names, and data types 357 00:16:46.059 --> 00:16:48.920 That is because, in the case 358 00:16:48.920 --> 00:16:52.049 that a designer joins or leaves the team 359 00:16:52.049 --> 00:16:55.227 if the information isn't organized well enough 360 00:16:55.227 --> 00:16:57.360 the designer who is handed over the project 361 00:16:57.360 --> 00:16:59.009 won't know what is what 362 00:16:59.009 --> 00:17:01.663 That's why information has to be organized 363 00:17:01.663 --> 00:17:04.793 If you keep the data table 364 00:17:04.793 --> 00:17:08.010 as only as a spreadsheet in the design document 365 00:17:08.010 --> 00:17:10.184 Someone who sees it for the first time 366 00:17:10.184 --> 00:17:12.287 will only be able to see it 367 00:17:12.287 --> 00:17:15.347 as a table full of encrypted messages 368 00:17:15.347 --> 00:17:20.311 So that is why you should write down as a table 369 00:17:20.311 --> 00:17:24.862 all of the names, data types, and some short explanations 370 00:17:24.862 --> 00:17:26.447 for the columns in the data table 371 00:17:26.447 --> 00:17:29.377 and put it in the game plans 372 00:17:29.377 --> 00:17:33.227 You should also add some example values 373 00:17:33.741 --> 00:17:38.238 as well as the column definitions 374 00:17:38.238 --> 00:17:41.747 The example values don't have to be real values 375 00:17:41.747 --> 00:17:43.565 You can just add dummy data instead 376 00:17:43.565 --> 00:17:47.691 Because the only thing that matters here 377 00:17:47.691 --> 00:17:49.981 is being able to tell the role of each column 378 00:17:49.981 --> 00:17:52.540 Then let's take a look 379 00:17:52.540 --> 00:17:55.238 at some example values 380 00:17:55.238 --> 00:17:58.272 Here's an example 381 00:17:58.272 --> 00:18:00.466 These are the column names in Korean 382 00:18:00.466 --> 00:18:04.558 numbered ID, name, unlock level, experience yield 383 00:18:04.558 --> 00:18:09.045 production time, product yield, price 384 00:18:09.045 --> 00:18:11.917 minimum market price, maximum market price 385 00:18:11.917 --> 00:18:15.238 source ID, and source(designer) 386 00:18:15.238 --> 00:18:17.801 Those are the Korean column names 387 00:18:17.801 --> 00:18:20.035 And as for the English column names 388 00:18:20.035 --> 00:18:25.466 there are ID, Name, Lv, Exp, productionTime 389 00:18:25.466 --> 00:18:30.860 productCount, Price, MimPrice, MaxPrice 390 00:18:30.860 --> 00:18:33.169 Place_id, and Place_Name 391 00:18:33.169 --> 00:18:35.361 These are how you would generally name columns 392 00:18:35.361 --> 00:18:41.454 As for data types, ID is Int, Name is String, Lv is Int 393 00:18:41.454 --> 00:18:44.891 Exp is Int, productionTime is also Int 394 00:18:44.891 --> 00:18:49.239 productCount and Price are Int 395 00:18:49.239 --> 00:18:53.218 so are MimPrice and MaxPrice 396 00:18:53.218 --> 00:18:58.088 Place_Id is Int And Place_Name is design 397 00:18:58.088 --> 00:19:01.248 which means it won't be used in the game 398 00:19:01.248 --> 00:19:02.722 and is just for the developer to see 399 00:19:02.722 --> 00:19:06.131 So that is how you categorize data types 400 00:19:06.131 --> 00:19:10.791 ID is the distinct number for each type of crop 401 00:19:10.791 --> 00:19:13.081 Name is the crop's name 402 00:19:13.081 --> 00:19:15.526 Lv is the level it's unlocked at 403 00:19:15.526 --> 00:19:20.365 Exp is the experience you get from the crop 404 00:19:20.365 --> 00:19:23.061 productionTime is the time it takes to grow 405 00:19:23.061 --> 00:19:24.566 and productCount 406 00:19:24.566 --> 00:19:29.436 is the amount you get from a single harvest 407 00:19:29.436 --> 00:19:32.261 Price is the base selling price 408 00:19:32.261 --> 00:19:33.953 MimPrice 409 00:19:33.953 --> 00:19:37.037 is the minimum price you can sell it at the market 410 00:19:37.037 --> 00:19:38.550 MaxPrice is 411 00:19:38.550 --> 00:19:41.607 the maximum selling price at the market 412 00:19:41.607 --> 00:19:46.689 Place_Id is the ID for the place you can grow the crop 413 00:19:46.689 --> 00:19:51.171 Place_Name is the places that Place_ID represents 414 00:19:51.171 --> 00:19:53.294 but in words, so that the designer can check easily 415 00:19:53.294 --> 00:19:56.218 Write down descriptions like this and the table is complete 416 00:19:56.218 --> 00:20:00.207 Let's look at some actual examples 417 00:20:00.207 --> 00:20:04.535 of data tables, and how to improve them 418 00:20:04.535 --> 00:20:08.176 One of the amateur designers that I taught 419 00:20:08.176 --> 00:20:12.245 was creating a data table for the first time 420 00:20:12.245 --> 00:20:15.636 and the first one they made 421 00:20:15.636 --> 00:20:18.208 was one about character upgrades 422 00:20:18.208 --> 00:20:22.376 How that upgrade system worked 423 00:20:22.376 --> 00:20:23.521 was that you give 424 00:20:23.521 --> 00:20:26.265 the base character, which is the one you want to level up 425 00:20:26.265 --> 00:20:28.946 other characters you don't need 426 00:20:28.946 --> 00:20:31.446 Then they will disappear 427 00:20:31.446 --> 00:20:34.634 and the base character levels up 428 00:20:34.634 --> 00:20:39.468 Characters also have rarity levels 429 00:20:39.468 --> 00:20:42.198 which are represented by stars 430 00:20:42.198 --> 00:20:45.198 So they have levels and rarity levels 431 00:20:45.198 --> 00:20:48.341 Both rarity and level 432 00:20:48.341 --> 00:20:51.092 are better the higher they are 433 00:20:51.092 --> 00:20:55.067 but rarity is determined 434 00:20:55.067 --> 00:20:57.042 at the point you get the character 435 00:20:57.042 --> 00:20:58.594 so from the gacha roll 436 00:20:58.594 --> 00:20:59.974 And rarity 437 00:20:59.974 --> 00:21:03.220 can also be raised using a system called 'evolution' 438 00:21:03.220 --> 00:21:05.655 which can be done using a special item 439 00:21:05.655 --> 00:21:08.246 so a character can go from having one star 440 00:21:08.246 --> 00:21:11.426 to two, three, five and so on 441 00:21:11.426 --> 00:21:13.589 Because of that, there is a data table 442 00:21:13.589 --> 00:21:16.320 that shows the max level by rarity 443 00:21:16.320 --> 00:21:18.170 and a table for the experience 444 00:21:18.170 --> 00:21:20.109 required to reach the maximum level 445 00:21:20.109 --> 00:21:22.569 Depending on the character's 446 00:21:22.569 --> 00:21:25.096 original and current rarity 447 00:21:25.096 --> 00:21:27.155 the maximum level is different 448 00:21:27.155 --> 00:21:31.901 But you can see that there are two tables 449 00:21:31.901 --> 00:21:34.545 one of the max level according to rarity 450 00:21:34.545 --> 00:21:37.365 and the other of the experience required to reach max level 451 00:21:37.365 --> 00:21:38.476 and that some of the cells are empty 452 00:21:38.476 --> 00:21:40.147 As I said before 453 00:21:40.147 --> 00:21:42.028 the less columns, the better 454 00:21:42.028 --> 00:21:44.195 So let's try putting these two together 455 00:21:44.195 --> 00:21:46.535 into a single table 456 00:21:46.535 --> 00:21:48.196 We have a table showing the max level 457 00:21:48.196 --> 00:21:50.294 by rarity, and one showing the experience 458 00:21:50.294 --> 00:21:51.748 required to reach that level 459 00:21:51.748 --> 00:21:54.195 We can take these tables, which have blank cells 460 00:21:54.195 --> 00:21:56.040 and turn them into one cell like this 461 00:21:56.040 --> 00:21:58.297 We took the columns 462 00:21:58.297 --> 00:22:02.167 for base rarity, current rarity, and required exp 463 00:22:02.167 --> 00:22:04.721 from the two tables 464 00:22:04.721 --> 00:22:06.371 and put them together 465 00:22:06.371 --> 00:22:08.773 into a single table 466 00:22:08.773 --> 00:22:11.977 Now the data table is fixed 467 00:22:11.977 --> 00:22:13.323 Now let me go over 468 00:22:13.323 --> 00:22:15.849 the original maximum level data table 469 00:22:15.849 --> 00:22:18.931 once more 470 00:22:18.931 --> 00:22:23.154 For example, rarity can be between 1 and 4 471 00:22:23.154 --> 00:22:26.535 and the columns represent levels 472 00:22:26.535 --> 00:22:28.486 like level 1, 2, 3 and so on 473 00:22:28.486 --> 00:22:30.257 The problem here is that 474 00:22:30.257 --> 00:22:32.311 there are so many levels a character can be at 475 00:22:32.311 --> 00:22:35.017 and there are columns for each level 476 00:22:35.017 --> 00:22:38.354 Because of this 477 00:22:38.354 --> 00:22:40.070 the table has too many cells 478 00:22:40.070 --> 00:22:41.842 so it's hard for the programmer to view 479 00:22:41.842 --> 00:22:46.031 and it unnecessarily takes up database space 480 00:22:46.031 --> 00:22:49.051 It's packed with tiny letters as well 481 00:22:49.051 --> 00:22:52.670 You can improve this table 482 00:22:52.670 --> 00:22:54.832 simply by switching between the rows and columns 483 00:22:54.832 --> 00:22:58.115 So putting rarity data into the columns 484 00:22:58.115 --> 00:23:00.045 instead of level data 485 00:23:00.045 --> 00:23:03.600 Now the columns and rows are switched 486 00:23:03.600 --> 00:23:07.166 so it doesn't matter how many levels there are 487 00:23:07.166 --> 00:23:11.099 there can be up to 100 or 200 488 00:23:11.099 --> 00:23:14.000 Before there were 100 columns 489 00:23:14.000 --> 00:23:17.252 that were eating up space in the database 490 00:23:17.252 --> 00:23:19.865 but now that's been reduced dramatically 491 00:23:19.865 --> 00:23:21.733 into just 4 columns 492 00:23:21.733 --> 00:23:24.398 This is why you should think hard about 493 00:23:24.398 --> 00:23:25.931 how you can design the data table 494 00:23:25.931 --> 00:23:27.753 to reduce the number of columns 495 00:23:27.753 --> 00:23:31.159 This case was a very easy one 496 00:23:31.159 --> 00:23:33.762 As I said before 497 00:23:33.762 --> 00:23:36.194 It doesn't matter how many rows there are 498 00:23:36.194 --> 00:23:37.654 There can be hundreds or even thousands of them 499 00:23:37.654 --> 00:23:41.364 What you have to be careful of 500 00:23:41.364 --> 00:23:43.396 is not to make too many columns 501 00:23:43.885 --> 00:23:47.588 Reverse-engineering Data Table Design Plans 502 00:23:47.588 --> 00:23:52.739 First I'll explain to you about 503 00:23:52.739 --> 00:23:57.169 the daily challenges and season challenges in the game Clash of Clans 504 00:23:57.169 --> 00:24:00.000 In order to reverse plan Clash of Clans' 505 00:24:00.000 --> 00:24:02.209 daily and season challenges 506 00:24:02.209 --> 00:24:05.134 it would help to look at 507 00:24:05.134 --> 00:24:08.050 what the data table looks like 508 00:24:08.050 --> 00:24:10.258 Daily challenges can be completed 509 00:24:10.258 --> 00:24:12.861 of course, each day 510 00:24:12.861 --> 00:24:16.585 and seasonal ones change each season 511 00:24:16.585 --> 00:24:21.424 So COC has a thing called 512 00:24:21.424 --> 00:24:22.437 a season pass 513 00:24:22.437 --> 00:24:25.969 You will probably know what that is 514 00:24:25.969 --> 00:24:28.960 You can complete 515 00:24:28.960 --> 00:24:32.753 quests and such to get rewards 516 00:24:32.753 --> 00:24:37.225 These rewards are given according to pass level 517 00:24:37.225 --> 00:24:40.555 When you complete a challenge, you get points 518 00:24:40.555 --> 00:24:43.374 and by accumulating points 519 00:24:43.374 --> 00:24:44.743 you gain pass levels 520 00:24:44.743 --> 00:24:47.071 And because this is on a seasonal basis 521 00:24:47.071 --> 00:24:50.348 It will change once a month 522 00:24:50.348 --> 00:24:51.149 for example 523 00:24:51.149 --> 00:24:54.846 So if it's October 524 00:24:54.846 --> 00:24:58.080 the season pass will open on October 1st 525 00:24:58.080 --> 00:25:02.852 and you will complete challenges for one month 526 00:25:02.852 --> 00:25:04.754 to earn pass points 527 00:25:04.754 --> 00:25:07.092 and if there are 20 levels, for example 528 00:25:07.092 --> 00:25:09.804 as you keep earning points 529 00:25:09.804 --> 00:25:12.196 your pass level will increase 530 00:25:12.196 --> 00:25:14.555 one by one 531 00:25:14.555 --> 00:25:16.453 and for each level 532 00:25:16.453 --> 00:25:19.739 you can get a reward 533 00:25:19.739 --> 00:25:24.869 This was first introduced by COC 534 00:25:24.869 --> 00:25:27.390 and other games saw this 535 00:25:27.390 --> 00:25:30.931 and implemented similar systems 536 00:25:30.931 --> 00:25:34.283 So, COC, or Clash of Clans 537 00:25:34.283 --> 00:25:38.134 has two kinds of challenges 538 00:25:38.134 --> 00:25:41.842 Daily challenges and season challenges 539 00:25:41.842 --> 00:25:43.888 And if you meet certain conditions 540 00:25:43.888 --> 00:25:46.418 just like completing a quest 541 00:25:46.418 --> 00:25:49.372 you can earn points 542 00:25:49.372 --> 00:25:51.664 such as pass points or experience 543 00:25:51.664 --> 00:25:55.537 The challenge can be to attack another player 544 00:25:55.537 --> 00:25:58.787 or to win in a battle 545 00:25:58.787 --> 00:26:00.586 so beat another player 546 00:26:00.586 --> 00:26:01.831 Do a versus battle 547 00:26:01.831 --> 00:26:06.307 or build a defensive building 548 00:26:06.307 --> 00:26:08.840 and raise it to a certain level 549 00:26:08.840 --> 00:26:11.639 Anything that can be done in the game 550 00:26:11.639 --> 00:26:14.792 can be turned into a quest 551 00:26:14.792 --> 00:26:16.907 But when creating a quest 552 00:26:16.907 --> 00:26:19.576 what you have to be careful about 553 00:26:19.576 --> 00:26:22.634 is that you have to assign it a type 554 00:26:22.634 --> 00:26:24.428 Because there are season passes 555 00:26:24.428 --> 00:26:27.154 which usually last 556 00:26:27.154 --> 00:26:29.431 for one month 557 00:26:29.431 --> 00:26:33.508 That means the challenges will change each month 558 00:26:33.508 --> 00:26:35.911 and so may the rewards 559 00:26:35.911 --> 00:26:38.010 and season pass points 560 00:26:38.010 --> 00:26:41.431 So the first thing you would do 561 00:26:41.431 --> 00:26:45.657 is to decide beforehand 562 00:26:45.657 --> 00:26:49.307 what challenges will be in the daily challenges 563 00:26:49.307 --> 00:26:50.859 and what challenges will be 564 00:26:50.859 --> 00:26:52.030 part of the monthly season challenges 565 00:26:52.030 --> 00:26:54.918 Then there will be columns in the data table 566 00:26:54.918 --> 00:26:56.950 for challenge number, name, description 567 00:26:56.950 --> 00:27:00.249 challenge points you can earn upon completion 568 00:27:00.249 --> 00:27:02.971 maximum level, and challenge type 569 00:27:02.971 --> 00:27:06.862 As for daily challenges, there are three a day 570 00:27:06.862 --> 00:27:10.715 and they are refreshed each day 571 00:27:10.715 --> 00:27:12.924 They have IDs, titles, descriptions, challenge point yields 572 00:27:12.924 --> 00:27:15.634 and the maximum level they can appear or be completed on 573 00:27:15.634 --> 00:27:17.453 As for season challenges 574 00:27:17.453 --> 00:27:19.114 they are not given every day 575 00:27:19.114 --> 00:27:22.025 but are completed over the course of a month 576 00:27:22.025 --> 00:27:26.505 and they can't be re-completed once you complete them 577 00:27:26.505 --> 00:27:27.822 They're just gone 578 00:27:27.822 --> 00:27:30.947 So they each have an ID, title, description, amount of challenge points they give 579 00:27:30.947 --> 00:27:33.819 maximum level, and challenge type 580 00:27:33.819 --> 00:27:35.666 Now you need to calculate 581 00:27:35.666 --> 00:27:37.743 the maximum points you can gain from all of the season challenges 582 00:27:37.743 --> 00:27:41.472 For example, in the season pass 583 00:27:41.472 --> 00:27:46.569 there are a total of 3000 points that you can earn 584 00:27:46.569 --> 00:27:47.968 And you need to reverse-engineer 585 00:27:47.968 --> 00:27:49.585 these 3000 points 586 00:27:49.585 --> 00:27:54.325 If there are 100 season challenges, for example 587 00:27:54.325 --> 00:27:58.417 you have make sure 588 00:27:58.417 --> 00:28:01.717 all of the points you can get 589 00:28:01.717 --> 00:28:04.347 from the 100 challenges in a single month 590 00:28:04.347 --> 00:28:06.050 add up to 3000 591 00:28:06.050 --> 00:28:09.248 Also, there are the 3 daily challenges 592 00:28:09.248 --> 00:28:11.212 so the game should actually be balanced 593 00:28:11.212 --> 00:28:13.602 so that you can complete the season pass 594 00:28:13.602 --> 00:28:16.852 when you complete all of the daily challenges 595 00:28:16.852 --> 00:28:18.179 along with the seasonal ones 596 00:28:18.179 --> 00:28:21.104 Usually, if the season pass 597 00:28:21.104 --> 00:28:24.242 can be completed with 3000 points 598 00:28:24.242 --> 00:28:26.939 you have to design the challenges so that the points earned 599 00:28:26.939 --> 00:28:30.058 from daily and season challenges add up to more than 3000 600 00:28:30.058 --> 00:28:31.816 in order to prevent bugs from happening 601 00:28:31.816 --> 00:28:33.189 and make the game run normally 602 00:28:33.189 --> 00:28:36.148 With that in mind 603 00:28:36.148 --> 00:28:39.103 you will have to decide 604 00:28:39.103 --> 00:28:40.964 how many challenges there will be 605 00:28:40.964 --> 00:28:44.301 daily and per season 606 00:28:44.301 --> 00:28:46.681 and how many points 607 00:28:46.681 --> 00:28:49.723 each challenge will give 608 00:28:49.723 --> 00:28:52.551 So let's learn about the reward tiers and placement of rewards 609 00:28:52.551 --> 00:28:53.674 in a season pass 610 00:28:53.674 --> 00:28:57.686 Now, if you have designed 611 00:28:57.686 --> 00:28:59.252 what kind of season challenges 612 00:28:59.252 --> 00:29:02.414 give how many points 613 00:29:02.414 --> 00:29:06.337 next you have to design the reward map 614 00:29:06.337 --> 00:29:08.964 There are two types of rewards 615 00:29:08.964 --> 00:29:10.451 the free tier and the paid tier 616 00:29:10.451 --> 00:29:11.505 As for the free reward tier 617 00:29:11.505 --> 00:29:13.147 you can get the free tier rewards 618 00:29:13.147 --> 00:29:15.307 without making any in-app purchases 619 00:29:15.307 --> 00:29:18.172 If there are 15 rewards in a season 620 00:29:18.172 --> 00:29:22.300 you will have to enter 621 00:29:22.300 --> 00:29:24.250 the type and number of paid tier rewards 622 00:29:24.250 --> 00:29:25.716 and the type and number 623 00:29:25.716 --> 00:29:26.986 of free tier rewards 624 00:29:26.986 --> 00:29:30.466 for each of the 15 levels 625 00:29:30.466 --> 00:29:33.484 Paid rewards, since this is a seasonal pass 626 00:29:33.484 --> 00:29:35.417 will be available for a month 627 00:29:35.417 --> 00:29:37.767 And if you pay a certain price 628 00:29:37.767 --> 00:29:39.303 you can get the paid rewards as well 629 00:29:39.303 --> 00:29:42.535 This is how the game persuades the player to pay money 630 00:29:42.535 --> 00:29:44.513 So the season pass system 631 00:29:44.513 --> 00:29:47.460 acts as gaming content 632 00:29:47.460 --> 00:29:50.426 and an in-app purchase model at the same time 633 00:29:50.426 --> 00:29:51.701 By content, I mean 634 00:29:51.701 --> 00:29:54.208 that you can complete the challenges, like completing quests 635 00:29:54.208 --> 00:29:56.444 and get the free tier rewards 636 00:29:56.444 --> 00:29:58.545 so that is half of the rewards 637 00:29:58.545 --> 00:30:00.518 And once you get the rewards 638 00:30:00.518 --> 00:30:02.500 you see that with a relatively small purchase 639 00:30:02.500 --> 00:30:04.503 you can get extra rewards 640 00:30:04.503 --> 00:30:06.208 Because of this nature 641 00:30:06.208 --> 00:30:08.608 the season pass also acts 642 00:30:08.608 --> 00:30:11.565 as an in-app purchase model 643 00:30:11.565 --> 00:30:16.429 The paid season pass is called the gold tier in COC 644 00:30:16.429 --> 00:30:18.130 So you can enter in a data table 645 00:30:18.130 --> 00:30:20.436 when the player reaches a reward level 646 00:30:20.436 --> 00:30:22.919 how many of what item 647 00:30:22.919 --> 00:30:25.010 they will get as a free and paid reward 648 00:30:25.010 --> 00:30:27.847 And the data table for the season pass 649 00:30:27.847 --> 00:30:28.937 is complete 650 00:30:28.937 --> 00:30:31.606 When planning an actual game 651 00:30:31.606 --> 00:30:34.301 you will enter the points required yourself 652 00:30:34.301 --> 00:30:36.535 And design the season challenges and rewards 653 00:30:36.535 --> 00:30:38.785 and also design the UI and UX 654 00:30:38.785 --> 00:30:41.064 and the plan for the season pass is complete 655 00:30:41.064 --> 00:30:43.242 What a new designer might do wrong 656 00:30:43.242 --> 00:30:44.657 is that they might design the UI first 657 00:30:44.657 --> 00:30:47.456 without any thought for actual gameplay details 658 00:30:47.456 --> 00:30:50.256 A quick way to increase your design skill 659 00:30:50.256 --> 00:30:53.933 would be to create the data table first 660 00:30:53.933 --> 00:30:58.387 A season pass may also have a store 661 00:30:58.387 --> 00:30:59.674 that sells other bonuses 662 00:30:59.674 --> 00:31:03.992 For example, you could pay a certain amount 663 00:31:03.992 --> 00:31:06.953 to get boosters 664 00:31:06.953 --> 00:31:08.523 So a season pass 665 00:31:08.523 --> 00:31:10.431 can not only have free and paid rewards 666 00:31:10.431 --> 00:31:14.337 but various other perks as well 667 00:31:14.337 --> 00:31:17.276 Since we now have a list 668 00:31:17.276 --> 00:31:20.270 of the season pass rewards 669 00:31:20.270 --> 00:31:21.348 we can put them in a table 670 00:31:21.348 --> 00:31:24.005 and make sure to enter the text that will go in the icons as well 671 00:31:24.005 --> 00:31:26.862 so that it will show up in the UI 672 00:31:26.862 --> 00:31:31.224 The rewards can be broken down 673 00:31:31.224 --> 00:31:34.842 into ID, category, name, and description 674 00:31:34.842 --> 00:31:39.462 When you select a reward 675 00:31:39.462 --> 00:31:41.851 in the UI 676 00:31:41.851 --> 00:31:43.347 you should get a description 677 00:31:43.347 --> 00:31:46.664 of what exactly that reward is 678 00:31:46.664 --> 00:31:48.393 To increase the chances 679 00:31:48.393 --> 00:31:50.253 of a player purchasing the gold tier 680 00:31:50.253 --> 00:31:52.747 you could add detailed descriptions 681 00:31:52.747 --> 00:31:54.981 of the paid reward 682 00:31:54.981 --> 00:31:57.481 Next we will take a detailed look 683 00:31:57.481 --> 00:32:00.911 at system and commercialization, using a flow chart 684 00:32:00.911 --> 00:32:02.530 Here is an analyzation 685 00:32:02.530 --> 00:32:05.121 of the entire system of a collecting RPG 686 00:32:05.121 --> 00:32:08.402 The flow chart shows how 687 00:32:08.402 --> 00:32:11.271 battles, character growth, raids & extra content 688 00:32:11.271 --> 00:32:14.614 guilds, and real-time cooperative & PVP battles work together 689 00:32:14.614 --> 00:32:16.102 Also, for example 690 00:32:16.102 --> 00:32:18.474 when creating a flow chart like this 691 00:32:18.474 --> 00:32:22.165 you can see what element influences which system 692 00:32:22.165 --> 00:32:26.301 and create new currency or resources 693 00:32:26.301 --> 00:32:28.778 You can also analyze paid items 694 00:32:28.778 --> 00:32:30.478 It can also help 695 00:32:30.478 --> 00:32:33.144 when suggesting an improvement 696 00:32:33.144 --> 00:32:36.084 since you can easily point out 697 00:32:36.084 --> 00:32:37.276 what to fix and what to newly implement 698 00:32:37.276 --> 00:32:38.901 using the flow chart 699 00:32:38.901 --> 00:32:41.693 and create a single-page proposal 700 00:32:41.693 --> 00:32:44.047 When analyzing in-game systems and content 701 00:32:44.047 --> 00:32:47.202 you can gain insight on related commercialization opportunities as well 702 00:32:47.202 --> 00:32:50.613 For example, items that can be commercialized related to the battle system 703 00:32:50.613 --> 00:32:52.393 would be tickets to enter the stage 704 00:32:52.393 --> 00:32:54.677 tickets to restart 705 00:32:54.677 --> 00:32:55.840 and tickets to auto-clear 706 00:32:55.840 --> 00:32:57.168 These are items that can be sold to players 707 00:32:57.168 --> 00:33:00.148 By auto-clear, I mean that by using the ticket 708 00:33:00.148 --> 00:33:01.311 you can clear the stage 709 00:33:01.311 --> 00:33:03.693 without having to actually play 710 00:33:03.693 --> 00:33:05.048 So if you are planning to become 711 00:33:05.048 --> 00:33:07.822 a business PM, or commercialization designer 712 00:33:07.822 --> 00:33:10.789 it will help a lot to try analyzing 713 00:33:10.789 --> 00:33:13.573 paid items and thinking of ways to improve them 714 00:33:13.573 --> 00:33:16.887 Now let's look at a example 715 00:33:16.887 --> 00:33:19.763 of breaking down MapleStory M's system 716 00:33:19.763 --> 00:33:21.385 In MapleStory M 717 00:33:21.385 --> 00:33:23.434 experience and resources are gained 718 00:33:23.434 --> 00:33:25.987 mostly from hunting and clearing dungeons 719 00:33:25.987 --> 00:33:29.082 and those resources are spent either on growing your character, in the shop 720 00:33:29.082 --> 00:33:32.676 in the trading station, or at the blacksmith 721 00:33:32.676 --> 00:33:35.674 So that is how the game flows 722 00:33:35.674 --> 00:33:39.067 So first you should make a flow chart 723 00:33:39.067 --> 00:33:42.384 on what items can be obtained 724 00:33:42.384 --> 00:33:44.377 from hunting in the field 725 00:33:44.377 --> 00:33:47.282 and try connecting those 726 00:33:47.282 --> 00:33:49.060 to how they are used in character growth 727 00:33:49.060 --> 00:33:51.924 Once that's finished 728 00:33:51.924 --> 00:33:56.476 cover the other parts and change the alpha value 729 00:33:56.476 --> 00:33:58.767 and you get a transparent gray effect 730 00:33:58.767 --> 00:34:01.159 Now that the other parts are omitted 731 00:34:01.159 --> 00:34:03.609 you can highlight the part 732 00:34:03.609 --> 00:34:06.505 that you want to improve 733 00:34:06.505 --> 00:34:08.386 For example, you know that 734 00:34:08.386 --> 00:34:11.880 there are such and such items in the field part 735 00:34:11.880 --> 00:34:15.305 and you want to improve them 736 00:34:15.305 --> 00:34:18.566 If you show your coworkers using the flow chart, it will be easier to understand 737 00:34:18.566 --> 00:34:22.633 Or, if there is a new item 738 00:34:22.633 --> 00:34:25.981 and you think that it should be fixed 739 00:34:25.981 --> 00:34:29.386 you can write it down in text like this 740 00:34:29.386 --> 00:34:32.691 and the others can easily notice 741 00:34:32.691 --> 00:34:35.190 that you want to recommend a new item 742 00:34:35.190 --> 00:34:38.036 to put in the game flow 743 00:34:38.036 --> 00:34:39.271 Live planners usually 744 00:34:39.271 --> 00:34:41.252 fix and improve problems 745 00:34:41.252 --> 00:34:44.338 in a game that is in live service 746 00:34:44.338 --> 00:34:50.060 so it helps to make improvement plans for any problems you find right away 747 00:34:50.060 --> 00:34:51.780 I'll show you an example of a flow chart 748 00:34:51.780 --> 00:34:54.878 It's about character leveling 749 00:34:54.878 --> 00:34:56.847 A flow chart is a drawing 750 00:34:56.847 --> 00:34:58.342 that uses standardized icons and diagrams 751 00:34:58.342 --> 00:35:00.274 to create a rendering 752 00:35:00.274 --> 00:35:01.931 of a system's flow 753 00:35:01.931 --> 00:35:03.828 When creating one, you should be careful 754 00:35:03.828 --> 00:35:06.624 not to make any logical contradictions 755 00:35:06.624 --> 00:35:09.167 There are beginnings and ends, results, actions, conditionals 756 00:35:09.167 --> 00:35:11.848 So you create routes for if the conditionals are true 757 00:35:11.848 --> 00:35:14.115 and routes for if conditionals are false 758 00:35:14.115 --> 00:35:15.896 That's how a flow chart is made 759 00:35:15.896 --> 00:35:19.151 Here is an example of a character upgrade flow chart 760 00:35:19.151 --> 00:35:21.433 You choose the character you want to promote 761 00:35:21.433 --> 00:35:23.438 and go to the promotion screen 762 00:35:23.438 --> 00:35:27.079 After moving, the game checks if the character is at max level 763 00:35:27.079 --> 00:35:29.822 and determine whether or not 764 00:35:29.822 --> 00:35:31.387 the character can be promoted 765 00:35:31.387 --> 00:35:34.984 So depending on the conditions 766 00:35:34.984 --> 00:35:39.176 whether there are enough resources, for example 767 00:35:39.176 --> 00:35:43.991 the game can decide what it will do next 768 00:35:43.991 --> 00:35:45.902 That was a flow chart about character promotion 769 00:35:45.902 --> 00:35:48.131 Now let's look at a flow chart 770 00:35:48.131 --> 00:35:50.139 of guild exploration, according to user action and system function 771 00:35:50.139 --> 00:35:53.629 You can write a flow chart 772 00:35:53.629 --> 00:35:55.546 of the system like this 773 00:35:55.546 --> 00:35:57.792 UI, state, action, and result 774 00:35:57.792 --> 00:36:00.031 these are the activities 775 00:36:00.031 --> 00:36:03.288 Then we can depict the flow of time 776 00:36:03.288 --> 00:36:04.839 and when items are obtained 777 00:36:04.839 --> 00:36:06.897 to lay out which system the play interacts with 778 00:36:06.897 --> 00:36:09.954 and what results each action that they can take 779 00:36:09.954 --> 00:36:11.390 will bring 780 00:36:11.390 --> 00:36:15.126 And we have a complete flow chart 781 00:36:15.126 --> 00:36:18.545 of the gameplay flow according to the player's actions and the system 782 00:36:18.545 --> 00:36:20.989 So for a system you are creating or reverse engineering 783 00:36:20.989 --> 00:36:23.006 you need to try making a flow chart 784 00:36:23.006 --> 00:36:25.399 of player action and system function 785 00:36:25.399 --> 00:36:28.070 Player action means actions that the user takes 786 00:36:28.070 --> 00:36:29.976 such as pressing a button 787 00:36:29.976 --> 00:36:31.754 and system function is the content 788 00:36:31.754 --> 00:36:33.090 of the result of said actions 789 00:36:33.090 --> 00:36:35.225 UI is the user interface that is being displayed 790 00:36:35.225 --> 00:36:37.033 Action is the action the player takes 791 00:36:37.033 --> 00:36:38.362 State is the state of gameplay or the player 792 00:36:38.362 --> 00:36:41.071 and Result is the result of the gameplay 793 00:36:41.071 --> 00:36:43.738 The arrow depicting flow of time 794 00:36:43.738 --> 00:36:46.452 indicates that the game is able to progress after a certain amount of time 795 00:36:46.452 --> 00:36:49.391 The plus and minus symbols 796 00:36:49.391 --> 00:36:52.661 show where resources are obtained 797 00:36:52.661 --> 00:36:54.109 and used up 798 00:36:54.109 --> 00:36:56.505 You could also create a flow chart 799 00:36:56.505 --> 00:37:00.255 for equipment upgrades, using the same system 800 00:37:00.255 --> 00:37:02.571 of UI, Action, State, and Result 801 00:37:02.571 --> 00:37:03.179 Thank you 802 00:37:03.516 --> 00:37:04.347 Writing a Data Table Gathering data Search on the internet for existing data Collect data through gameplay 803 00:37:04.347 --> 00:37:05.040 Writing a data table Columns: Represent a single type of data, contain attributes of items or game content 804 00:37:05.040 --> 00:37:05.815 More columns take up more DB space, therefore as few columns should be used as possible Columns have separate alphabetic names for using in code 805 00:37:05.815 --> 00:37:06.625 Data types must be defined as to make clear the designer's intent Defining data table columns Columns should have descriptions of what data they hold 806 00:37:06.625 --> 00:37:07.476 A separate table of each column's title, data type, and description should be inserted in document 807 00:37:07.478 --> 00:37:08.428 Reverse-engineering Data Tables System and commercialization Game system flow chart Gain insight on game elements Add resources Analyze paid items 808 00:37:08.428 --> 00:37:09.428 Proposing improvement or new idea Game system design Flow Chart A diagram that depicts the flow of the system using standardized symbols 809 00:37:09.428 --> 00:37:10.428 Be wary of logical errors when writing Player action and system function A flow chart should exist of the interaction of player action and the system 810 00:37:10.428 --> 00:37:11.379 Player action: Actions the player takes, such as a key input System function: The result of the player's actions