convert crlf to lf

This commit is contained in:
coco875
2026-01-19 20:16:39 +01:00
committed by Lywx
parent a2036f5ce7
commit d713853970
12 changed files with 622 additions and 622 deletions
+24 -24
View File
@@ -1,24 +1,24 @@
@page charactermenu Make a Character
@htmlonly
Guides for making custom characters!
<br><br>
<div class="pagebutton">
<a class="pagea" href="characteroverview.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Overview</div>
<div class="pagedescription">
<p>All the steps for making a character</p>
</div>
</div>
</div>
</a>
</div>
@endhtmlonly
@subpage characteroverview
@page charactermenu Make a Character
@htmlonly
Guides for making custom characters!
<br><br>
<div class="pagebutton">
<a class="pagea" href="characteroverview.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Overview</div>
<div class="pagedescription">
<p>All the steps for making a character</p>
</div>
</div>
</div>
</a>
</div>
@endhtmlonly
@subpage characteroverview
+54 -54
View File
@@ -1,55 +1,55 @@
\page characteroverview Overview
# Custom characters
Custom characters can only replace existing characters for now.
1. Download the Kart Setup blender file included with this post(Slightly altered .blender file provided by the Overkart server with some adjustments to the animation to export for Spaghetti, thanks again Andrat for permission to post this and a huge thanks to the Overkart 64 community in general.) [Kart Setup.blend](MK64_Spaghetti_Adjusted_Kart_Setup.blend)
2. Replace Mario with your character, and handle weights of the skeleton as needed to make them move properly.
3. Set the path a valid one(the included path is what Andrat had setup for his original kart setup) but make sure the name matches a listed kart name below and ends with ###, this will ensure it is 3 digits(example path/to/export/toad_kart/toad_kart_frame###)
4. Render the animation at whatever power of 2 of 64x64 you want(64x64, 128x128, 256x256 and so on),
5. In the above toad example, zip up the toad_kart folder and rename it to a .o2r file.
6. Put it in mods folder and run.
# Examples for all characters:
mario_kart/mario_kart_frame###
luigi_kart/luigi_kart_frame###
peach_kart/peach_kart_frame###
wario_kart/wario_kart_frame###
toad_kart/toad_kart_frame###
donkeykong_kart/donkeykong_kart_frame###
bowser_kart/bowser_kart_frame###
yoshi_kart/yoshi_kart_frame###
# Additional Files
Some other files to look out for(still using toad as a example)
placement icon = common_data/common_texture_portrait_toad.png Original frame is 32x32
player selection frames = player_selection/toad_face_00.png ~ toad_face_16.png Original frames is 64x64 (note that Donkeykong uses donkey_kong here instead)
player select nameplate = texture_tkmk00/gTextureNameToad.png Original frame is 64x12 (note that Donkeykong uses DK here instead)
## Tips
### Change Viewport Render Settings
Assuming your using the overkart setup kart.
In object mode, select View -> Cameras -> Active Camera
Set your render resolution and path as shown in the image below
Then render your animation by selecting View -> Viewport Render Animation
![Viewport Render Settings](change_viewport.png)
## Tools To Help
* There is [Racer Ready-Up](https://vinievex.itch.io/racer-ready-up) which is a tool to help you create custom characters for SpaghettiKart.
## Future plans
* Support for custom characters that do not replace existing ones.
\page characteroverview Overview
# Custom characters
Custom characters can only replace existing characters for now.
1. Download the Kart Setup blender file included with this post(Slightly altered .blender file provided by the Overkart server with some adjustments to the animation to export for Spaghetti, thanks again Andrat for permission to post this and a huge thanks to the Overkart 64 community in general.) [Kart Setup.blend](MK64_Spaghetti_Adjusted_Kart_Setup.blend)
2. Replace Mario with your character, and handle weights of the skeleton as needed to make them move properly.
3. Set the path a valid one(the included path is what Andrat had setup for his original kart setup) but make sure the name matches a listed kart name below and ends with ###, this will ensure it is 3 digits(example path/to/export/toad_kart/toad_kart_frame###)
4. Render the animation at whatever power of 2 of 64x64 you want(64x64, 128x128, 256x256 and so on),
5. In the above toad example, zip up the toad_kart folder and rename it to a .o2r file.
6. Put it in mods folder and run.
# Examples for all characters:
mario_kart/mario_kart_frame###
luigi_kart/luigi_kart_frame###
peach_kart/peach_kart_frame###
wario_kart/wario_kart_frame###
toad_kart/toad_kart_frame###
donkeykong_kart/donkeykong_kart_frame###
bowser_kart/bowser_kart_frame###
yoshi_kart/yoshi_kart_frame###
# Additional Files
Some other files to look out for(still using toad as a example)
placement icon = common_data/common_texture_portrait_toad.png Original frame is 32x32
player selection frames = player_selection/toad_face_00.png ~ toad_face_16.png Original frames is 64x64 (note that Donkeykong uses donkey_kong here instead)
player select nameplate = texture_tkmk00/gTextureNameToad.png Original frame is 64x12 (note that Donkeykong uses DK here instead)
## Tips
### Change Viewport Render Settings
Assuming your using the overkart setup kart.
In object mode, select View -> Cameras -> Active Camera
Set your render resolution and path as shown in the image below
Then render your animation by selecting View -> Viewport Render Animation
![Viewport Render Settings](change_viewport.png)
## Tools To Help
* There is [Racer Ready-Up](https://vinievex.itch.io/racer-ready-up) which is a tool to help you create custom characters for SpaghettiKart.
## Future plans
* Support for custom characters that do not replace existing ones.
* Support 3d models for characters.
+174 -174
View File
@@ -1,174 +1,174 @@
@page trackmenu Track Making
@htmlonly
Guides for making custom tracks!
<br><br>
<div class="pagebutton">
<a class="pagea" href="trackoverview.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Overview</div>
<div class="pagedescription">
<p>All the steps for building the simplest possible track.</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="quick.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Quick Reference</div>
<div class="pagedescription">
<p>Cheatsheet with tips, and tricks.</p>
</div>
</div>
</div>
</a>
</div>
<br><br>
<div class="pagebutton">
<a class="pagea" href="setup.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Setup</div>
<div class="pagedescription">
<p>Your first baby steps. Start here!</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="materials.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Materials</div>
<div class="pagedescription">
<p>Working with fast64 materials.</p>
</div>
</div>
</div>
</a>
</div class="pagebutton">
<div class="pagebutton">
<a class="pagea" href="objectproperties.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Object Properties</div>
<div class="pagedescription">
<p>Surface types and collision.</p>
</div>
</div>
</div>
</a>
</div class="pagebutton">
<div class="pagebutton">
<a class="pagea" href="paths.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Pathing</div>
<div class="pagedescription">
<p>Setup pathing for your track.</p>
</div>
</div>
</div>
</a>
</div class="pagebutton">
<div class="pagebutton">
<a class="pagea" href="minimap.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Minimap</div>
<div class="pagedescription">
<p>How to draw a minimap for your track.</p>
</div>
</div>
</div>
</a>
</div class="pagebutton">
<div class="pagebutton">
<a class="pagea" href="export.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Export</div>
<div class="pagedescription">
<p>Export from Blender.</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="import.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Import</div>
<div class="pagedescription">
<p>Setting up a new track in-game.</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="track-properties.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Track Properties</div>
<div class="pagedescription">
<p>What do all these settings do?</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="troubleshooting.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Troubleshooting</div>
<div class="pagedescription">
<p>Something not working right? Try here!</p>
</div>
</div>
</div>
</a>
</div>
@endhtmlonly
@subpage trackoverview
@subpage quick
@subpage setup
@subpage materials
@subpage objectproperties
@subpage paths
@subpage minimap
@subpage export
@subpage import
@subpage track-properties
@subpage troubleshooting
@page trackmenu Track Making
@htmlonly
Guides for making custom tracks!
<br><br>
<div class="pagebutton">
<a class="pagea" href="trackoverview.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Overview</div>
<div class="pagedescription">
<p>All the steps for building the simplest possible track.</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="quick.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Quick Reference</div>
<div class="pagedescription">
<p>Cheatsheet with tips, and tricks.</p>
</div>
</div>
</div>
</a>
</div>
<br><br>
<div class="pagebutton">
<a class="pagea" href="setup.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Setup</div>
<div class="pagedescription">
<p>Your first baby steps. Start here!</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="materials.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Materials</div>
<div class="pagedescription">
<p>Working with fast64 materials.</p>
</div>
</div>
</div>
</a>
</div class="pagebutton">
<div class="pagebutton">
<a class="pagea" href="objectproperties.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Object Properties</div>
<div class="pagedescription">
<p>Surface types and collision.</p>
</div>
</div>
</div>
</a>
</div class="pagebutton">
<div class="pagebutton">
<a class="pagea" href="paths.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Pathing</div>
<div class="pagedescription">
<p>Setup pathing for your track.</p>
</div>
</div>
</div>
</a>
</div class="pagebutton">
<div class="pagebutton">
<a class="pagea" href="minimap.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Minimap</div>
<div class="pagedescription">
<p>How to draw a minimap for your track.</p>
</div>
</div>
</div>
</a>
</div class="pagebutton">
<div class="pagebutton">
<a class="pagea" href="export.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Export</div>
<div class="pagedescription">
<p>Export from Blender.</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="import.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Import</div>
<div class="pagedescription">
<p>Setting up a new track in-game.</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="track-properties.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Track Properties</div>
<div class="pagedescription">
<p>What do all these settings do?</p>
</div>
</div>
</div>
</a>
</div>
<div class="pagebutton">
<a class="pagea" href="troubleshooting.html">
<div class="pagelink">
<div class="pageimg"><img width=320 src="buttonimage.png" /></div>
<div class="content">
<div class="pageheading">Troubleshooting</div>
<div class="pagedescription">
<p>Something not working right? Try here!</p>
</div>
</div>
</div>
</a>
</div>
@endhtmlonly
@subpage trackoverview
@subpage quick
@subpage setup
@subpage materials
@subpage objectproperties
@subpage paths
@subpage minimap
@subpage export
@subpage import
@subpage track-properties
@subpage troubleshooting
+54 -54
View File
@@ -1,55 +1,55 @@
\page export Export
# Export
## Quick Overview
A basic track needs the following:
* A surface mesh built using a plane (a flat square, not a cube)
* Large enough to encompass the spawn area from (0,0,0) to (0, -16.8, 0) in blender, in-game (0, 0, -420)
* A path built using a Path or bezier curve
## Setup
* Naming the objects in blender is not required.
* To export a track all the objects need to be placed inside the empty like so:
![](image-1.png)
* This can be done by dragging mesh or path into the empty while holding `SHIFT`
## Export Panel
![alt text](image-2.png)
Featureset
* Must be set to HM64
Name
* The name of your track
Mods Path
* The mods folder where the data will output too
* `desktop/mycoolmods` will output as `desktop/mycoolmods/tracks/mytrackname/stuff_here`
Export
* Press this button to export the track!
## Packaging
* Find the `desktop/mycoolmods/tracks` folder and place a mods.toml file beside the tracks folder. Place the following in mods.toml
```toml
[mod]
name = "mymod"
version = "1.0.0"
```
* Highlight the tracks folder and the mods.toml file.
<img width="120" height="74" alt="image" src="https://github.com/user-attachments/assets/8842a528-ef67-4ae6-81cd-802f133bbea1" />
* Right-click --> *Add To Archive* and turn into a stored zip archive.
* This file should *not* be compressed.
* If you wish, you may rename this file to mod_name.o2r or mod_name.zip
If you open the zip folder, you should immediately see the `tracks` folder and the mods.toml file. Inside `tracks` should be a folder with the name of your track, and some files inside of that folder.
If it does not contain any files similar to the below then something has gone wrong.
<img width="289" height="466" alt="image" src="https://github.com/user-attachments/assets/ccef558b-ac9a-42ed-bc85-e27da4f16598" />
* If all checks out, go to your game executable
* Add a `mods` folder. Drag and drop your mod into the mods folder.
* Any number of tracks may be placed in the tracks folder
\page export Export
# Export
## Quick Overview
A basic track needs the following:
* A surface mesh built using a plane (a flat square, not a cube)
* Large enough to encompass the spawn area from (0,0,0) to (0, -16.8, 0) in blender, in-game (0, 0, -420)
* A path built using a Path or bezier curve
## Setup
* Naming the objects in blender is not required.
* To export a track all the objects need to be placed inside the empty like so:
![](image-1.png)
* This can be done by dragging mesh or path into the empty while holding `SHIFT`
## Export Panel
![alt text](image-2.png)
Featureset
* Must be set to HM64
Name
* The name of your track
Mods Path
* The mods folder where the data will output too
* `desktop/mycoolmods` will output as `desktop/mycoolmods/tracks/mytrackname/stuff_here`
Export
* Press this button to export the track!
## Packaging
* Find the `desktop/mycoolmods/tracks` folder and place a mods.toml file beside the tracks folder. Place the following in mods.toml
```toml
[mod]
name = "mymod"
version = "1.0.0"
```
* Highlight the tracks folder and the mods.toml file.
<img width="120" height="74" alt="image" src="https://github.com/user-attachments/assets/8842a528-ef67-4ae6-81cd-802f133bbea1" />
* Right-click --> *Add To Archive* and turn into a stored zip archive.
* This file should *not* be compressed.
* If you wish, you may rename this file to mod_name.o2r or mod_name.zip
If you open the zip folder, you should immediately see the `tracks` folder and the mods.toml file. Inside `tracks` should be a folder with the name of your track, and some files inside of that folder.
If it does not contain any files similar to the below then something has gone wrong.
<img width="289" height="466" alt="image" src="https://github.com/user-attachments/assets/ccef558b-ac9a-42ed-bc85-e27da4f16598" />
* If all checks out, go to your game executable
* Add a `mods` folder. Drag and drop your mod into the mods folder.
* Any number of tracks may be placed in the tracks folder
* This allows map packs
+48 -48
View File
@@ -1,48 +1,48 @@
\page import Import
# Import
Presuming you have followed the steps in the export page, you should have
* `mymod.zip` or `mymod.o2r` placed in the mods folder beside the game executable.
* The track is ready for testing
## Launch the Game
* Press `ESC` and enable `Debug Mode`
<img width="379" height="210" alt="image" src="https://github.com/user-attachments/assets/1a3f09ba-0743-4243-b400-2a443df78cdd" />
* Navigate away and back to the start screen and a debug menu should pop up.
Use the left/right arrow keys to switch tracks. Custom tracks are placed at the end of the list.
* Press *Launch HM64 Labs* to configure your track and place actors.
<img width="767" height="413" alt="image" src="https://github.com/user-attachments/assets/52bcde3e-0b23-4611-9417-1adb71397a5c" />
* Select your track in the Content Browser
* When opening your track for the first time, a scene.json file is created in the tracks data folder.
* If something ever goes horribly wrong you could manually edit this file or back it up to restore it later.
* If the game crashes while loading, then there is an issue with track path or mesh. Check logs, they are quite detailed and may point out what is wrong.
<img width="1301" height="275" alt="image" src="https://github.com/user-attachments/assets/5f092a60-3377-48e1-8d23-d527a0e60684" />
* Navigate to the Track Properties winow to modify track name and settings
<img width="323" height="339" alt="image" src="https://github.com/user-attachments/assets/59116891-0fca-4eb8-8050-02e70b75021d" />
![alt text](image-6.png)
### Resource Name
* Must be named identifier:track_name
* The identifier can be used as a keyword for all of your mods
* This format prevents name collisions so that everyone could make their own version of banana if they wish. mk is used for original game content and hm for harbour masters content. mk:banana, hm:harbour, etc.
### Name
* The display name for the track
### Debug Name
* The display name in the debug menu.
### Track Length
* An arbitrary value that describes the general length of the track
## Conclusion
Congrats! You have successfully made a track
If thet track did not work, try the troubleshooting page.
\page import Import
# Import
Presuming you have followed the steps in the export page, you should have
* `mymod.zip` or `mymod.o2r` placed in the mods folder beside the game executable.
* The track is ready for testing
## Launch the Game
* Press `ESC` and enable `Debug Mode`
<img width="379" height="210" alt="image" src="https://github.com/user-attachments/assets/1a3f09ba-0743-4243-b400-2a443df78cdd" />
* Navigate away and back to the start screen and a debug menu should pop up.
Use the left/right arrow keys to switch tracks. Custom tracks are placed at the end of the list.
* Press *Launch HM64 Labs* to configure your track and place actors.
<img width="767" height="413" alt="image" src="https://github.com/user-attachments/assets/52bcde3e-0b23-4611-9417-1adb71397a5c" />
* Select your track in the Content Browser
* When opening your track for the first time, a scene.json file is created in the tracks data folder.
* If something ever goes horribly wrong you could manually edit this file or back it up to restore it later.
* If the game crashes while loading, then there is an issue with track path or mesh. Check logs, they are quite detailed and may point out what is wrong.
<img width="1301" height="275" alt="image" src="https://github.com/user-attachments/assets/5f092a60-3377-48e1-8d23-d527a0e60684" />
* Navigate to the Track Properties winow to modify track name and settings
<img width="323" height="339" alt="image" src="https://github.com/user-attachments/assets/59116891-0fca-4eb8-8050-02e70b75021d" />
![alt text](image-6.png)
### Resource Name
* Must be named identifier:track_name
* The identifier can be used as a keyword for all of your mods
* This format prevents name collisions so that everyone could make their own version of banana if they wish. mk is used for original game content and hm for harbour masters content. mk:banana, hm:harbour, etc.
### Name
* The display name for the track
### Debug Name
* The display name in the debug menu.
### Track Length
* An arbitrary value that describes the general length of the track
## Conclusion
Congrats! You have successfully made a track
If thet track did not work, try the troubleshooting page.
+8 -8
View File
@@ -1,9 +1,9 @@
\page materials Materials
# Materials
Suggest using the youtubes on this one.
https://youtu.be/LwODZixL_II?si=7o4shGYo6V-mQPeh
\page materials Materials
# Materials
Suggest using the youtubes on this one.
https://youtu.be/LwODZixL_II?si=7o4shGYo6V-mQPeh
Proper material presets need to be setup still
+47 -47
View File
@@ -1,48 +1,48 @@
\page minimap Minimap
# Minimap
Create a new `minimap.png` file using your favourite graphics editor.
There are two options for making a minimap. The outcome is identical.
## Format
* Image size of 32x32 to 128x128
* Odd sizes like 64x32 or 128x64 is fine.
* Recommend no bigger than 128x128 but it will work.
* Save as 32-bit
## Tips
* Turn off anti-aliasing
* White pixels must be RGB(255, 255, 255)
* Black pixels must be RGB(0, 0, 0)
* Any other pixel colour will turn into white
## Option 1: Black Background, White Track
* Use black pixels for the background and white pixels for the track.
* The black pixels will be transparent in-game
![alt text](image-3.png)
* Easiest option to make because it is easy to see the track
## Option 2: Transparent Background, White Track
* Transparent pixels must be *FULL* transparent or they will turn into white pixels
<img width=64 src="image-5.png" />
* Transparent version much harder to see the track in the graphics editor.
## Export
Place `minimap.png` in the track folder.
```
desktop/mycoolmods/tracks/mytrackname/minimap.png
```
The same folder as the track data that looks like this:
<img width="289" height="466" alt="image" src="https://github.com/user-attachments/assets/ccef558b-ac9a-42ed-bc85-e27da4f16598" />
## In-game configuration
* In the minimap tab the position of the minimap, finishline, and players markers can be configured.
* The minimap can also be coloured
\page minimap Minimap
# Minimap
Create a new `minimap.png` file using your favourite graphics editor.
There are two options for making a minimap. The outcome is identical.
## Format
* Image size of 32x32 to 128x128
* Odd sizes like 64x32 or 128x64 is fine.
* Recommend no bigger than 128x128 but it will work.
* Save as 32-bit
## Tips
* Turn off anti-aliasing
* White pixels must be RGB(255, 255, 255)
* Black pixels must be RGB(0, 0, 0)
* Any other pixel colour will turn into white
## Option 1: Black Background, White Track
* Use black pixels for the background and white pixels for the track.
* The black pixels will be transparent in-game
![alt text](image-3.png)
* Easiest option to make because it is easy to see the track
## Option 2: Transparent Background, White Track
* Transparent pixels must be *FULL* transparent or they will turn into white pixels
<img width=64 src="image-5.png" />
* Transparent version much harder to see the track in the graphics editor.
## Export
Place `minimap.png` in the track folder.
```
desktop/mycoolmods/tracks/mytrackname/minimap.png
```
The same folder as the track data that looks like this:
<img width="289" height="466" alt="image" src="https://github.com/user-attachments/assets/ccef558b-ac9a-42ed-bc85-e27da4f16598" />
## In-game configuration
* In the minimap tab the position of the minimap, finishline, and players markers can be configured.
* The minimap can also be coloured
![alt text](image-18.png)
+45 -45
View File
@@ -1,46 +1,46 @@
@page objectproperties Object Properties
# Object Properties
![alt text](image-22.png)
## Section ID
* Leave this set to 255. This tells the game to always draw the object.
* If you set this to a section ID, then you need to setup grouped displaylists and consider what meshes should be drawn depending on what section the player is driving in and what direction they are facing.
* This technology is no longer necessary, and thus, we can ignore it by leaving this value at 255
## Surface
The kind of driving surface the player is on. Dirt and sand will slow you down. Asphalt is driving on a road, etc.
## Clip
This sets if the object can be driven through or not. And if objects in the environment collide with it. Generally, this value only
needs to be changed under certain circumstances
* Remember that the edges of meshes need to perfectly line-up. If there's any gaps, or if objects overlap each other, the collision will not be consistent and players can drive through the object in the corners.
### No Clip
No collision. Players can drive through this object.
* Warning: Setting the surface mesh to no clip will spawn players at 3000.0f because it will not be able to find a place to put the players
### Single-sided Wall
A normal wall collision presuming the player can never access the other side of the wall. If they do, they will drive through the object.
### Surface
Not necessary to be set. But if for some reason you need to force a mesh to be a surface, this is here for that.
### Double-sided Wall
Required if making a fence where the player can access both sides of the wall. The collision generator is not good at recognizing that you want a double-sided wall and for performance reasons will not provide collision for the other side. This means the player can drive through one side, but not the other. Double-sided wall fixes this so no matter what side the wall is approached from, the player cannot drive through the wall.
## Draw Layer
Object draw order matters for transparent objects. Thus, transparent objects must be drawn after opaque objects.
### Draw Invisible
Pretty self-explanatory. The draw phase gets completely cut from the object. This is useful for invisible walls
### Draw Opaque
A normal object. It is not transparent.
### Draw Translucent
A transparent object. If you do not set this for transparent objects, the order of drawn objects will be wrong.
### Draw Translucent NoZBuffer
@page objectproperties Object Properties
# Object Properties
![alt text](image-22.png)
## Section ID
* Leave this set to 255. This tells the game to always draw the object.
* If you set this to a section ID, then you need to setup grouped displaylists and consider what meshes should be drawn depending on what section the player is driving in and what direction they are facing.
* This technology is no longer necessary, and thus, we can ignore it by leaving this value at 255
## Surface
The kind of driving surface the player is on. Dirt and sand will slow you down. Asphalt is driving on a road, etc.
## Clip
This sets if the object can be driven through or not. And if objects in the environment collide with it. Generally, this value only
needs to be changed under certain circumstances
* Remember that the edges of meshes need to perfectly line-up. If there's any gaps, or if objects overlap each other, the collision will not be consistent and players can drive through the object in the corners.
### No Clip
No collision. Players can drive through this object.
* Warning: Setting the surface mesh to no clip will spawn players at 3000.0f because it will not be able to find a place to put the players
### Single-sided Wall
A normal wall collision presuming the player can never access the other side of the wall. If they do, they will drive through the object.
### Surface
Not necessary to be set. But if for some reason you need to force a mesh to be a surface, this is here for that.
### Double-sided Wall
Required if making a fence where the player can access both sides of the wall. The collision generator is not good at recognizing that you want a double-sided wall and for performance reasons will not provide collision for the other side. This means the player can drive through one side, but not the other. Double-sided wall fixes this so no matter what side the wall is approached from, the player cannot drive through the wall.
## Draw Layer
Object draw order matters for transparent objects. Thus, transparent objects must be drawn after opaque objects.
### Draw Invisible
Pretty self-explanatory. The draw phase gets completely cut from the object. This is useful for invisible walls
### Draw Opaque
A normal object. It is not transparent.
### Draw Translucent
A transparent object. If you do not set this for transparent objects, the order of drawn objects will be wrong.
### Draw Translucent NoZBuffer
Objects set to this ignore the ZBuffer. This means they are always visible on the screen, no matter the distance. The HM64 Labs Gizmo grab handles for instance are set to this (used for translating objects).
+52 -52
View File
@@ -1,52 +1,52 @@
\page quick Quick Reference
# Quick Reference
Important details without the steps
## Template Project
* See the template below containing
* A finishline model for use as as reference
* A starting road (probably delete and make your own)
* Road has enough length behind the finishline for the racers
* A starting path
[template 1.0.blend](<template 1.0.blend>)
## Track Details
Path Points: ~800 (any number is fine)
* For best results, place path points evenly apart spacing each one by around 0.20 blender units
Triangle Count: Original tracks average ~6000 triangles
* SpaghettiKart will start losing fps after ~100k triangles
Starting Line Width: 1.75 units
Track Boundaries: +-32767.0 in Blender units this is +-1310.68 (32767 / 25)
* Note that this allows a very big track
Track Widths:
* Luigi Raceway track width: 1.13 points
* Mario Raceway track width: 1.0 points
* Wide: 1.1 points to 2.0 points
* Medium: 0.8 points to 1.1 points
* Narrow: 0.5 point to 0.8 points
## The Laws of SpaghettiKart
* Track geography must be a plane, not a box
* A flat track with a basic plane (square), needs to be turned into triangules and/or subdivided a few times, otherwise the collision generation will 'wig out', placing the racers incorrectly
* The starting line must face north
* In Blender: Positive Green Y Axis
* In game: Negative Z axis
* The meshes anchor needs to be center of mass or at 0,0,0
* Otherwise the mesh will have a weird offset.
* Do not draw your path backwards (In blender turn on normals on the bezier curve to see the direction)
* The first path point is set at 0,0,0
* Recommend a scaling of 25 in the F3D Exporter window
* Must be 10 path points behind the starting line
# Collision Surface Extra Types
Colouring vertices the following colours will set these actions for that area.
* Player Tumbles: RGB(153, 0, 153)
* No Collision: RGB(0, 153, 153)
* Darkens the player: RGB(255, 0, 0)
* Out of Bounds: RGB(230, 204, 0)
\page quick Quick Reference
# Quick Reference
Important details without the steps
## Template Project
* See the template below containing
* A finishline model for use as as reference
* A starting road (probably delete and make your own)
* Road has enough length behind the finishline for the racers
* A starting path
[template 1.0.blend](<template 1.0.blend>)
## Track Details
Path Points: ~800 (any number is fine)
* For best results, place path points evenly apart spacing each one by around 0.20 blender units
Triangle Count: Original tracks average ~6000 triangles
* SpaghettiKart will start losing fps after ~100k triangles
Starting Line Width: 1.75 units
Track Boundaries: +-32767.0 in Blender units this is +-1310.68 (32767 / 25)
* Note that this allows a very big track
Track Widths:
* Luigi Raceway track width: 1.13 points
* Mario Raceway track width: 1.0 points
* Wide: 1.1 points to 2.0 points
* Medium: 0.8 points to 1.1 points
* Narrow: 0.5 point to 0.8 points
## The Laws of SpaghettiKart
* Track geography must be a plane, not a box
* A flat track with a basic plane (square), needs to be turned into triangules and/or subdivided a few times, otherwise the collision generation will 'wig out', placing the racers incorrectly
* The starting line must face north
* In Blender: Positive Green Y Axis
* In game: Negative Z axis
* The meshes anchor needs to be center of mass or at 0,0,0
* Otherwise the mesh will have a weird offset.
* Do not draw your path backwards (In blender turn on normals on the bezier curve to see the direction)
* The first path point is set at 0,0,0
* Recommend a scaling of 25 in the F3D Exporter window
* Must be 10 path points behind the starting line
# Collision Surface Extra Types
Colouring vertices the following colours will set these actions for that area.
* Player Tumbles: RGB(153, 0, 153)
* No Collision: RGB(0, 153, 153)
* Darkens the player: RGB(255, 0, 0)
* Out of Bounds: RGB(230, 204, 0)
+30 -30
View File
@@ -1,30 +1,30 @@
\page setup Setup
# Setup
## Pre-requisites
* Blender 4.3 or older
* Harbour Masters Fast64 Blender Addon https://github.com/HarbourMasters/fast64
## Install
Download Fast64 from github
![alt text](image-7.png)
* Open blender
* Edit --> Preferences --> Add-ons
<img width="500" alt="image" src="image-8.png" />
* Press the arrow button --> `Install from Disk...`
* Open the fast64 zip folder
* Restart Blender
## Configure Fast64
* Open this pane
![alt text](image-9.png)
* Change Game to `MK64` and microcode to `F3DEX`
![alt text](image-10.png)
* The `MK64` tab contains the export track panel
\page setup Setup
# Setup
## Pre-requisites
* Blender 4.3 or older
* Harbour Masters Fast64 Blender Addon https://github.com/HarbourMasters/fast64
## Install
Download Fast64 from github
![alt text](image-7.png)
* Open blender
* Edit --> Preferences --> Add-ons
<img width="500" alt="image" src="image-8.png" />
* Press the arrow button --> `Install from Disk...`
* Open the fast64 zip folder
* Restart Blender
## Configure Fast64
* Open this pane
![alt text](image-9.png)
* Change Game to `MK64` and microcode to `F3DEX`
![alt text](image-10.png)
* The `MK64` tab contains the export track panel
+23 -23
View File
@@ -1,23 +1,23 @@
\page track-properties Track Properties
# Track Properties
Track Props contains the track data that the modern C++ interface sends into the C game engine. This allows complete configuration of the track from lighting, skybox, and environment, to CPU pathing, minimap, and music.
## Overview
The following settings are available. Most of these are straight forward.
![alt text](image-20.png)
# Environment
Light 1 is unused. Use Light 2.
## AI
This allows adjusting how precise the CPUs steering is, and the separation between CPUs.
* This section sets AI distance * lap. The first 8 elements are first lap 1, the next 8 lap 2, etc. The first element is for the player in-first, etc.
![alt text](image-19.png)
## Random Junk
This section effects the speed of the CPUs. Whether they should slow down or speed up in corners, and how fast they should go when they are not on the track.
![alt text](image-21.png)
\page track-properties Track Properties
# Track Properties
Track Props contains the track data that the modern C++ interface sends into the C game engine. This allows complete configuration of the track from lighting, skybox, and environment, to CPU pathing, minimap, and music.
## Overview
The following settings are available. Most of these are straight forward.
![alt text](image-20.png)
# Environment
Light 1 is unused. Use Light 2.
## AI
This allows adjusting how precise the CPUs steering is, and the separation between CPUs.
* This section sets AI distance * lap. The first 8 elements are first lap 1, the next 8 lap 2, etc. The first element is for the player in-first, etc.
![alt text](image-19.png)
## Random Junk
This section effects the speed of the CPUs. Whether they should slow down or speed up in corners, and how fast they should go when they are not on the track.
![alt text](image-21.png)
+63 -63
View File
@@ -1,64 +1,64 @@
\page troubleshooting Troubleshooting
# Troubleshooting
## Players Spawn in the Air
Players and actors are placed at 3000.0 if the game cannot find a surface
* The surface must be a plane not a cube
* Must be surface from (0,0,0) to (0,0,-420) in Blender units this is (0,-16.8,0) like so:
<img width="600" alt="image" src="https://github.com/user-attachments/assets/71566a5b-06b5-4a95-829a-1f9edde3c530" />
* The surface must be set to default clip or surface. Clip none means players can drive through the mesh
![alt text](image.png)
## Scaling Issues or Missing Geometry
* Set scale to 100.
* Select the geometry, press CTRL+A and click `Apply Transformations`
* Lets say a vertex (edit mode) is placed at (10, 0, 0). And then the mesh object (object mode) is placed at (10, 0, 0)
* On export the object will be placed at 20
* Apply transformations resets the object location to (0,0,0)
## Traversal Issues
Certain rules must be followed for players to correctly traverse from one mesh to another mesh.
### Driving Through Surfaces or onto Walls
* The first example below will result in players ignoring the ramp. They will drive through the ramping geography keeping to the current racing surface.
* The second example correctly transfers the player onto the ramp.
<img width="400" alt="image" src="image-11.png" />
* Players always stick to their current surface unless it ends and another begins. The below also does not consitute as good practice.
<img width="400" alt="image" src="image-12.png" />
* The above variation will result in the player sticking to the original ground and not transferring to the ramp.
### Walls
* The harsh angle of this wall will likely work as intended. However, it may result in unknown behaviour and as such is not good practice.
* The bottom of the wall should perfectly align with the surface for it to work reliably as a wall. Any gaps can be driven through.
<img width="400" alt="image" src="image-13.png" />
* Here is an example of good modelling practices
<img width="400" alt="image" src="image-14.png" />
## Render Conflicts
In-game example:
<img width="160" alt="image" src="image-15.png" />
Another example:
<img width="360" alt="image" src="image-16.png" />
* Observe that two separate mesh objects are overlapping each other. Solve this by adding more vertices to the objects and connecting the vertices together:
<img width="360" alt="image" src="image-17.png" />
This may seem tedius. Especially if you rely on the extrude tool to make the track. However, there are other tools and tricks that help prevent this issue from happening as much
Source:
\page troubleshooting Troubleshooting
# Troubleshooting
## Players Spawn in the Air
Players and actors are placed at 3000.0 if the game cannot find a surface
* The surface must be a plane not a cube
* Must be surface from (0,0,0) to (0,0,-420) in Blender units this is (0,-16.8,0) like so:
<img width="600" alt="image" src="https://github.com/user-attachments/assets/71566a5b-06b5-4a95-829a-1f9edde3c530" />
* The surface must be set to default clip or surface. Clip none means players can drive through the mesh
![alt text](image.png)
## Scaling Issues or Missing Geometry
* Set scale to 100.
* Select the geometry, press CTRL+A and click `Apply Transformations`
* Lets say a vertex (edit mode) is placed at (10, 0, 0). And then the mesh object (object mode) is placed at (10, 0, 0)
* On export the object will be placed at 20
* Apply transformations resets the object location to (0,0,0)
## Traversal Issues
Certain rules must be followed for players to correctly traverse from one mesh to another mesh.
### Driving Through Surfaces or onto Walls
* The first example below will result in players ignoring the ramp. They will drive through the ramping geography keeping to the current racing surface.
* The second example correctly transfers the player onto the ramp.
<img width="400" alt="image" src="image-11.png" />
* Players always stick to their current surface unless it ends and another begins. The below also does not consitute as good practice.
<img width="400" alt="image" src="image-12.png" />
* The above variation will result in the player sticking to the original ground and not transferring to the ramp.
### Walls
* The harsh angle of this wall will likely work as intended. However, it may result in unknown behaviour and as such is not good practice.
* The bottom of the wall should perfectly align with the surface for it to work reliably as a wall. Any gaps can be driven through.
<img width="400" alt="image" src="image-13.png" />
* Here is an example of good modelling practices
<img width="400" alt="image" src="image-14.png" />
## Render Conflicts
In-game example:
<img width="160" alt="image" src="image-15.png" />
Another example:
<img width="360" alt="image" src="image-16.png" />
* Observe that two separate mesh objects are overlapping each other. Solve this by adding more vertices to the objects and connecting the vertices together:
<img width="360" alt="image" src="image-17.png" />
This may seem tedius. Especially if you rely on the extrude tool to make the track. However, there are other tools and tricks that help prevent this issue from happening as much
Source:
https://github.com/DeadHamster35/Tarmac64/wiki/Troubleshooting