Essentials Series/Springboard Tutorial
This page is part of the Essential Series modding tutorials. It will tell you how to set up a BFBB springboard PLAT in Industrial Park to launch you in a specific direction, possibly with control removed from the player.
- If you have not done so already, download the Industrial Park Editor Files through Industrial Park under the Tools tab on the top of the window. The program will hang for a few moments, but leave it be and it will eventually tell you the download has completed.
- With the HIP/HOP files of the desired level for editing open in Industrial Park, import the archive of the Springboard into your HOP file. You can find the Springboard in the Utilities folder of the Industrial Park Editor Files for BFBB.
- Save the HOP and place a template of the Springboard in the HIP, be it using Template Focus or otherwise.
- Open the Asset Data Editor for the PLAT asset that represents the Springboard by clicking the 'Edit Data' button on the right of the HIP file's window. Expand the 'Springboard' section of the window (see below) by dragging the top and bottom borders of other window sections until you can clearly see the Springboard section mentioned previously, since this is the only section of the window in need of focus for this tutorial.
- The first 3 values of the Springboard section are 'Height1', 'Height2', 'Height3'. It is possible that the game was supposed to pick a random value from this array of 3, but instead it just picks whichever value is the largest. The resulting value represents how high the springboard will launch you when you DON'T slam down on it using the Bubble Bounce move as Spongebob.
- The next value is 'HeightBubbleBounce'. This, as you may be able to tell, is the value that represents how high the springboard will bounce you if you DO impact the board with the Bubble Bounce move as Spongebob.
- 'Anim1_AssetID', 'Anim2_AssetID', and 'Anim3_AssetID' all represent either internal values that will not be necessary for this tutorial or nothing at all, so you can ignore them in this instance.
- The next 3 values, 'DirectionX', 'DirectionY', and 'DirectionZ' come together to represent a 3-valued normalized vector of direction that is applied throughout the time between jumping off of the Springboard and landing on the ground again. It sounds confusing to those who are not familiar with the concept of vectors, so I have written a thorough, applied explanation of the concept below. Although the vector is normalized, you can enter values outside of the range of -1 to 1 and it will simply try that many times as hard to shift you in that respective direction. It is important to note that the resulting vector of 3 values gathered from DirectionX, DirectionY, and DirectionZ is applied to a world co-ordinate space, not local, and so that means that rotating the Springboard will have no effect on how the vector affects the player. For example, tilting your Springboard 45 degrees onto its side will not also tilt the trajectory that is generated naturally from applying the vector of 3 to the player through the air, you will have to recalculate the vector yourself if you were under the impression that the values applied locally.
- Finally, the last value 'Flags' represents special properties you want this specific instance of the springboard to have. Setting it to 1 will lock your camera to face downwards during the jump, setting it to 2 has a purpose but it is currently unknown, and setting it to 4 will lock the controls of the player until they have landed from their jump, which is the value we will be setting the 'Flags' value to. You have now set up a springboard PLAT in Industrial Park to launch you in a specific direction with control removed from the player!
What are Vectors, and what does 'Normalized' mean?
A vector is a collection of numbers that usually represent something. In this case, we have 3 numbers, X, Y, and Z, and they represent the direction you will be sent upon hitting the Springboard. What 'Normalized' means is that each of the 3 values is any decimal number between and including -1 to 1, and in this application of the vector, the value indicates the strength of the force being applied along that axis. For example, setting 'DirectionX' to 1 means that the Springboard will apply as much force as possible to send you to the right, and if 'DirectionY' and 'DirectionZ' are set to 0, you will go to the right with no conflicting force after bouncing on the Springboard. For another example, if you were to set 'DirectionX' to -1 and 'DirectionY' to 0.3, but leave 'DirectionZ' at 0, the resulting vector would be trying very hard to purely move you to the left from the negative 1 DirectionX value, but it would also apply exactly 30% upward force from the positive 0.3 DirectionY, and no force whatsoever depth-wise from the zero DirectionZ value. A good way to understand this concept is to visualize it with the help of a tool. Using the provided tool, set the Red vector value to (0,0,0) so it can be ignored and then set the Blue vector's 3 values to any decimal numbers between and including -1 to 1, then clicking the 'Draw' button to refresh the render on the left of the value entry pane, making sure to observe how your entry affects the direction of the line, possibly even testing the extremes like (1,1,1) or (-1,-1,-1). Once you have the line looking like the direction you want to send the player in, you can use the 3 values of the Blue vector directly as the DirectionX, DirectionY, and DirectionZ values of the Springboard. Since it can be such a delicate set of decimals you end up with to angle it just right, I recommend referring to visualizers like this instead of educated guessing at values in most cases, the exceptions being memorized vectors from doing this sort of thing a lot.