mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-08-13 04:29:22 -04:00
convert crlf to lf
This commit is contained in:
+24
-24
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||

|
||||
|
||||
## 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
|
||||
|
||||

|
||||
|
||||
## 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
@@ -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
@@ -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:
|
||||

|
||||
|
||||
* This can be done by dragging mesh or path into the empty while holding `SHIFT`
|
||||
|
||||
## Export Panel
|
||||

|
||||
|
||||
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:
|
||||

|
||||
|
||||
* This can be done by dragging mesh or path into the empty while holding `SHIFT`
|
||||
|
||||
## Export Panel
|
||||

|
||||
|
||||
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
@@ -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" />
|
||||
|
||||

|
||||
|
||||
### 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" />
|
||||
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||

|
||||
* 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
|
||||
|
||||

|
||||
* 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
|
||||
|
||||

|
||||
@@ -1,46 +1,46 @@
|
||||
@page objectproperties Object Properties
|
||||
# Object Properties
|
||||
|
||||

|
||||
|
||||
## 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
|
||||
|
||||

|
||||
|
||||
## 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
@@ -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
@@ -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
|
||||
|
||||

|
||||
|
||||
* 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
|
||||

|
||||
|
||||
* Change Game to `MK64` and microcode to `F3DEX`
|
||||
|
||||

|
||||
|
||||
* 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
|
||||
|
||||

|
||||
|
||||
* 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
|
||||

|
||||
|
||||
* Change Game to `MK64` and microcode to `F3DEX`
|
||||
|
||||

|
||||
|
||||
* The `MK64` tab contains the export track panel
|
||||
|
||||
@@ -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.
|
||||
|
||||

|
||||
# 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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
\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.
|
||||
|
||||

|
||||
# 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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||
@@ -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
|
||||

|
||||
|
||||
|
||||
## 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
|
||||

|
||||
|
||||
|
||||
## 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
|
||||
Reference in New Issue
Block a user