Difference between revisions of "Check Point"

From Custom Mario Kart
Jump to navigation Jump to search
m (Grammar)
Line 53: Line 53:
  
 
'''The following part is a first model/theory to explain the online behaviour of lap counters:'''
 
'''The following part is a first model/theory to explain the online behaviour of lap counters:'''
: The Wii use to d9fferent algorithms for player on the local Wii and players of others Wiis, that are connected via network. These foreign players send only rarely position and status records (all 1/3 seconds for a 12 player game). So the Wii must simulate and estimate the foreign players. Therefore another algorithm is needed and the theory is, that this second algorithm only accept the very first lap counter to increase the laps.
+
: The Wii use to different algorithms for player on the local Wii and players of other Wiis, that are connected via network. These foreign players send only rarely position and status records (all 1/3 seconds for a 12 player game). So the Wii must simulate and estimate the foreign players. Therefore another algorithm is needed and the theory is, that this second algorithm only accept the very first lap counter to increase the laps.
  
 
: If now the local and a foreign player enter a lap counter quadrilateral, the local lap count is increased, but not the foreign. The result is, that the first So the local player is first, because its lap counter is increased. The really problematic is, that all players get items only planned for the first position.
 
: If now the local and a foreign player enter a lap counter quadrilateral, the local lap count is increased, but not the foreign. The result is, that the first So the local player is first, because its lap counter is increased. The really problematic is, that all players get items only planned for the first position.

Revision as of 21:42, 1 November 2013

Under Construction
At the moment, this article is managed by Wiimm. Feel free to edit bad english, but please don't touch the structure and content until Wiimm has finished the article.


This article explains how to define good check points (KMP/CKPT) for a Mario Kart Wii track following the new quadrilateral model.



Introduction

If starting with the analysis of the KMP in 2009, the section CKPT with 4 real values and 4 additional bytes for each point was also found. Very fast it was clear, that these 4 values are the x- and z-coordinates of a left and a right check point. And so the line model for check point was born. The line model says, that the line must be set, so that the driver must cross the lines. This line model works very well for the most circumstances.

In 2012, the racing group around Wiimm found situations, that can't be explained with the line model. It was AndyKs idea, that quadrilaterals are important. With beginning of 2013, Wiimm created different test tracks to test the behaviour offline and online. The tests confirmed the quadrilateral model. And this model helped Wiimm to fix the Position Jump Bug of different tracks. The quadrilateral model says, that a driver must always stay in a checkpoint quadrilateral. So the quadrilaterals must cover all (normally) reachable parts of the track.

This article will now explain the background of the quadrilateral model and how to set up a good check point section.

What is a check point?

Check points basics
red: road
gray: offroad
black: fall down
blue: check points
cyan: frame of quadrilateral
green: see text

A check point is defined in the CKPT section of the KMP file. Technically a check point (CKPT) is defined as a horizontal line between 2 two-dimensional points and with some attributes (4 bytes; see below). However, each of these lines forms a check point quadrilateral together with its following line. On junctions (last point of a group with more than 1 following group) a check point defines multiple quadrilaterals, one with each following check point.

This quadrilateral model is important to understand the whole concept of check points. For example, take a look at the image on the right. The driving direction is from top to bottom.

CP1 and CP2 together build the first check quadrilateral. To trigger CP1, the player can enter the quadrilateral from 3 sides (green arrows). This is also true for mandatory check points and for the lap counter. It is important that all drivable areas are covered by such quadrilaterals. In the image on the right the quadrilaterals include the complete offroad and also parts of fall down areas. The check quadrilateral in which the player falls down decides which respawn point is used.

After CP2 there is a route spilt. This is managed by 3 groups: The first one with CP1 and CP2 use to next links to 2 other groups (CP3a+CP4a / CP3b+CP4b). It is clear that the first quadrilaterals behind the junction must overlap. It is possible to use some more overlapped quadrilaterals, but you should make sure to avoid overlapping as far as possible.

Attributes

Each check point defines 4 bytes for 4 attributes:

respawn index
Index into KMP/JGPT for restarting the player if falling down in the related quadrilateral. Incidences to not defined respawn points let the game freeze if activated.
check point type
The type of check point. 0xff defines a normal check point, 0x00 a lap counter and all other values define a mandatory check point (see below).
previous check point
This impact is not discovered yet. It is usually the index of the previous check point, or 0xff for the first point of a group.
next check point
The index of the second check point to build the quadrilateral. It is usually the index of the next check point, or 0xff at junctions (last point of group).


Mandatory check point/quadrilateral

The second attribute (a byte values) defines the type of the check point (quadrilateral). A value of 0xff (-1 as signed number) means, that it is a normal quadrilateral without special meaning. Such quadrilaterals can be omitted by the drivers without side effects.

All other types of quadrilaterals (values 0x00–0xfe) are mandatory or key quadrilaterals. Type 0x00 is not only a mandatory check point, it is also the lap counter (see next section). A driver must trigger these check points in ascend order without missing one. If the driver reaches a mandatory quadrilateral and has missed a prior one, Lakitu appears. A track may define multiple check points with the same type to allow alternative ways.

One detail is important: The system detects the missing of a mandatory check point only, if a higher mandatory check point is reached. If for example mandatory check points 0, 1, 2 and 3 are defined and the drivers triggers 1 and 2, there is no need to trigger 3 before reaching the lap counter. So it's a good idea to place the last mandatory check point in the near before the lap counter.

There is another effect of mandatory check point: If a driver leaves the quadrilaterals, the system assumes its position in the last triggered mandatory quadrilateral. This is also important, if falling down, because the respawn point defined by the last triggered mandatory quadrilateral is then used. So it's a good idea to create (fall down) walls, so that drives can't leave the quadrilaterals.

Lap counter

The lap counter is the special mandatory check point with type 0x00. All players start in lap 0. Every time a player enters a lap counter quadrilateral in driving direction, the lap counter is increased by one. If a player reaches lap 4, its race is terminated. if driving backwards, the lap counter was decreased and negative lap numbers are possible. However, the Wii will only display lap numbers between 1 and 3. This behaviour can be changed by cheats and code modifications.

The lap counter model of above works fine offline. And offline it is no problem to have multiple lap counters. But online, multiple lap counters force a permanent Position Jump Bug.

The following part is a first model/theory to explain the online behaviour of lap counters:

The Wii use to different algorithms for player on the local Wii and players of other Wiis, that are connected via network. These foreign players send only rarely position and status records (all 1/3 seconds for a 12 player game). So the Wii must simulate and estimate the foreign players. Therefore another algorithm is needed and the theory is, that this second algorithm only accept the very first lap counter to increase the laps.
If now the local and a foreign player enter a lap counter quadrilateral, the local lap count is increased, but not the foreign. The result is, that the first So the local player is first, because its lap counter is increased. The really problematic is, that all players get items only planned for the first position.

Setup ≠3 lap races

.......

Groups (Sections)

Overlapped areas

Respawning

Each check point has a link to a respawn point (first attribute). If a driver falls down within the a check quadrilateral, it is respawned at the linked respawn point. If the driver falls outside of any check quadrilateral or falls down after it has missed a mandatory check quadrilateral, the respawn point linked by the last registered mandatory check point or sometimes by the following mandatory check point is used (this is subject of further investigation).

For mandatory check points it is important, that the respawn point lays before the check point, so that the player can enter the check quadrilateral again. Overall all, respawn points must be placed that a driver never miss the entrance of mandatory check quadrilateral.

In fact, respawn point are not only points, but areas. See »Respawn Point« for details.

Usual Errors

This section will show you some of the most common errors. Most of them are made because check points were thought to be lines instead of quadrilaterals.

Fixed bug of GCN Rainbow Road. This is a wkmpt export displayed in 3DSmax.

Curves

In the picture on the right you see a typical error found in many (sharp) curves.

On the left side the track author defined some check point lines, not knowing they together work in quadrilaterals. This leads to the magenta parts of the (red) roads, which are not covered by a check point quadrilateral. As soon as a driver stays in this part, the Wii can't estimate its position, resulting in a Position Jump Bug.

On the right side this was fixed by defining more check point lines so that the resulting quadrilaterals cover up all parts of the road. It's no problem to create overlapping quadrilaterals as long as they are at least 3 steps away from each other. The best solution is to place mandatory check points (dark blue with diamonds) somewhere between the overlapping quadrilaterals.

Fixed bug of GBA Rainbow Road. The right yellow circle is constructed for demonstration only.

Wrong distance

In the next example you see 2 more usual errors.

In the left yellow circle, the 6 right points are placed exact at the same position with the result, that the distance between the points is zero. And a zero distance means, that a normal can't be calculated. But normals are always used to check, if a point resists in a 2D or 3D area.

In the right yellow circle, 2 check point lines are crossed. That makes a quadrilateral calculation impossible.

Both bugs will resulting in a Position Jump Bug. The right half of the picture shows a fixed set up of the check points. All quadrilaterals are clearly defined and intermediate quadrilaterals have no overlays.

Links

Wiiki