Difference between revisions of "Pikmin 2 waterboxes"

From Pikmin Technical Knowledge Base
Jump to navigation Jump to search
(Expanded.)
 
 
(10 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[File:Pikmin_water_hack.png|300px|thumb|right|A bit of water hacked in Awakening Wood]]
+
[[File:Pikmin_water_hack.png|300px|thumb|right|Water modified in the ''Awakening Wood'']]
Waterboxes are text files that control where water is placed in an area. They are located in <code>user/kando/map/*/texts.szs/waterbox.txt</code>. Each body of water is defined by a [[wikipedia:Cuboid|cuboid]].
+
<code>waterbox.txt</code> hold x, y and z coordinates that tell the game where to draw a waterbox in 3D space. These files are typically located in <code>texts.szs</code> archives such as <code>user/kando/map/*/texts.szs/waterbox.txt</code>. Each body of water is defined to be in the shape of a [[wikipedia:Cuboid|cuboid]].
  
 
==Format==
 
==Format==
 
===Header===
 
===Header===
Waterbox files start with a number, commented with <code>type</code>, {{unsure|whose meaning is unknown}}.
+
Each file start with a version number on line 1, commented with <code>#type</code>, {{unsure|it is unknown how this may affect the parsing of the file or effect on the waterboxes themselves.}}.
  
Then, the list of boxes starts after the line commented with <code>CNode</code>, and is defined inside curly braces. Each body of water is defined in one line.
+
On line 2, it has a comment of <code>#CNode</code> as a label of the array that starts on line 3.
  
The very first line of the list of boxes indicates how many there are in total.
+
Line 3 starts the array with a single bracket, where the first piece of data (line 4) holds the total number of waterbox coordinates it contains.
  
===Box===
+
===Waterbox===
The boxes are defined by two 3D points. You can think of this like the first point being the "top-left-front" point, and the other to be the "bottom-right-back" point. In the list inside the file, each box is one line long, and consists of 6 space-separated numbers. The first number is the X coordinate of the first point, the second number is the Y coordinate of the first point, etc. So, the format is basically <code>X1 Y1 Z1 X2 Y2 Z2</code>.
+
{{note|Be wary that the positional values used for waterboxes will be based around the centerpoint of the model it's found under. Waterboxes used in cave units should ideally be measured within the model particularly in cave units that can spawn plentifully (eg. hallways, corner turns, intersections) as large waterboxes can clip into cave units that don't have waterboxes defined. If you plan on using a waterbox that covers an entire generated cave, use a single room as a candidate to hold a single large waterbox that extends throughout the cave. As reference caves units shouldn't typically generate past 3,000 units in the x and y directions.}}
 +
The array defines the waterbox as two sets of coordinate points with x, y and z positional values stored as floats. The game will draw a waterbox that fills the area between the two points defined. The format of the data that stores these values is <code><X1> <Y1> <Z1> <X2> <Y2> <Z2></code>.
  
Each line also has a comment at the end with the number of the box (starts at 0), and the total number of boxes (e.g. <code>2/4</code>). These comments are optional, though.
+
In the vanilla files each waterbox coordinates are commented with an identification number (starts at 0), and the total number of boxes (e.g. <code># 2/4</code>). Comments aren't necessary and are never parsed. They are simply just labels to help track and organize data.
  
 
==Example==
 
==Example==
Line 19: Line 20:
  
 
{| class="wikitable"
 
{| class="wikitable"
! File line || Line explanation
+
! File line|| Data || Line explanation  
 
|-
 
|-
| <pre>0 # type</pre> || Type of waterbox file. {{unsure|Meaning is unknown.}}
+
| 1 ||<pre>0 # type</pre> || Version type of waterbox file. {{unsure|Meaning is unknown.}}
 
|-
 
|-
| <pre># CNode</pre> ||
+
| 2 ||<pre># CNode</pre> || Comment, presumably the label of the array
 
|-
 
|-
| <pre>{</pre> || Start of the list of boxes.
+
| 3 ||<pre>{</pre> || Start of array
 
|-
 
|-
| <pre> 2 </pre> || Total number of boxes.
+
| 4 ||<pre> 2 </pre> || First value of the array will always hold the total number of waterboxes.
 
|-
 
|-
| <pre> -3700.000000 -110.000000 850.000000 -2500.000000 -10.000000 1650.000000 # 0/2</pre> || <code>X1 Y1 Z1 X2 Y2 Z2</code> of the first box.
+
| 5 ||<pre> -3700.000000 -110.000000 850.000000 -2500.000000 -10.000000 1650.000000 # 0/2</pre> || The set of x, y, and z positional values of the first waterbox. The first set is for the bottom left back of the cuboid, and the second is for the top right front.
 
|-
 
|-
| <pre> -2000.000000 -90.000000 50.000000 -1000.000000 10.000000 1450.000000 # 1/2</pre> || <code>X1 Y1 Z1 X2 Y2 Z2</code> of the second box.
+
| 6 ||<pre> -2000.000000 -90.000000 50.000000 -1000.000000 10.000000 1450.000000 # 1/2</pre> || Ditto for second waterbox.
 
|-
 
|-
| <pre>}</pre> || End of the list of boxes.
+
| 7 ||<pre>}</pre> || End of array.
 
|}
 
|}
 +
 +
Notes: While the water will still appear and be animated, if the Y1-Y2 distance (or depth) isn't large enough then it will not behave like water. One would assume the depth must be 100 units, based on the two given examples.
  
 
[[Category:Pikmin 2]]
 
[[Category:Pikmin 2]]
 
[[Category:File formats]]
 
[[Category:File formats]]

Latest revision as of 18:05, 11 April 2021

Water modified in the Awakening Wood

waterbox.txt hold x, y and z coordinates that tell the game where to draw a waterbox in 3D space. These files are typically located in texts.szs archives such as user/kando/map/*/texts.szs/waterbox.txt. Each body of water is defined to be in the shape of a cuboid.

Format[edit]

Header[edit]

Each file start with a version number on line 1, commented with #type, it is unknown how this may affect the parsing of the file or effect on the waterboxes themselves.[unsure].

On line 2, it has a comment of #CNode as a label of the array that starts on line 3.

Line 3 starts the array with a single bracket, where the first piece of data (line 4) holds the total number of waterbox coordinates it contains.

Waterbox[edit]

Editor's note: Be wary that the positional values used for waterboxes will be based around the centerpoint of the model it's found under. Waterboxes used in cave units should ideally be measured within the model particularly in cave units that can spawn plentifully (eg. hallways, corner turns, intersections) as large waterboxes can clip into cave units that don't have waterboxes defined. If you plan on using a waterbox that covers an entire generated cave, use a single room as a candidate to hold a single large waterbox that extends throughout the cave. As reference caves units shouldn't typically generate past 3,000 units in the x and y directions.

The array defines the waterbox as two sets of coordinate points with x, y and z positional values stored as floats. The game will draw a waterbox that fills the area between the two points defined. The format of the data that stores these values is <X1> <Y1> <Z1> <X2> <Y2> <Z2>.

In the vanilla files each waterbox coordinates are commented with an identification number (starts at 0), and the total number of boxes (e.g. # 2/4). Comments aren't necessary and are never parsed. They are simply just labels to help track and organize data.

Example[edit]

This is the file used for the Wistful Wild's water boxes.

File line Data Line explanation
1
0 	# type
Version type of waterbox file. Meaning is unknown.[unsure]
2
# CNode
Comment, presumably the label of the array
3
{
Start of array
4
	2 
First value of the array will always hold the total number of waterboxes.
5
	-3700.000000 -110.000000 850.000000 -2500.000000 -10.000000 1650.000000 # 0/2
The set of x, y, and z positional values of the first waterbox. The first set is for the bottom left back of the cuboid, and the second is for the top right front.
6
	-2000.000000 -90.000000 50.000000 -1000.000000 10.000000 1450.000000 # 1/2
Ditto for second waterbox.
7
}
End of array.

Notes: While the water will still appear and be animated, if the Y1-Y2 distance (or depth) isn't large enough then it will not behave like water. One would assume the depth must be 100 units, based on the two given examples.