Skip to content

Creating a Map

The game world is made up of maps grouped into areas. An area is a collection of related maps, like all the rooms in Boo's Mansion. Generally there are 1 or 2 areas per chapter.

Vanilla areas
FolderJapaneseEnglish
kmrクリむらGoomba Village
macまちToad Town
tikまちのちかToad Town Tunnels
kgrくじらのなかInside the Whale
kkjきのこ城Princess Peach's Castle
hos星ふる丘Shooting Star Summit
nokノコノコむらKoopa Village
trdとりでKoopa Bros. Fortress
iwa岩山Mt. Rugged
droカラカラタウンDry Dry Outpost
sbkカラカラ砂漠Dry Dry Desert
iskカラカラいせきDry Dry Ruins
mim迷いの森Forever Forest
obkテレサハウスBoo's Mansion
arnあれのGusty Gulch
dgbドガボンの城Tubba Blubba's Castle
omoヘイホーのおもちゃばこShy Guy's Toy Box
janジャングルJade Jungle
kzn火山Mt. Lavalava
floフラワーランドFlower Fields
samさむいさむい村Shiver City
praパラレルきゅうでんCrystal Palace
kpaクッパ城Bowser's Castle
osrきのこ城そとOutside Peach's Castle
endエンディングEnding
mgmミニゲームMinigames
gvゲームオーバーGame Over
tstテストマップTest Map

Vanilla uses three-letter area names and map names that correspond to them, e.g. kmr has the map kmr_20. You don't need to do this.

Every map has three parts:

  • Shape - the 3D geometry the player sees
  • Hit - the collision mesh the player walks and stands on
  • Overlay - C code that controls what happens in the map

Overlay

Create a folder inside assets/mod/world/area

You can name the area folder whatever you want. If you would like to add to a vanilla area, just name it the same as the vanilla area (three letters).

For example: assets/mod/world/area/cool_city

Create a folder for the map inside the area folder

Create a folder named after the map. It needs to be unique across all areas. Make it short and memorable.

For example: assets/mod/world/area/cool_city/house_of_fun

Create a main.c file inside the map folder

Use this template for the file content:

EntryList Entrances = {
    { 0.0, 0.0, 0.0, 0.0 },
};

EvtScript EVS_BindExitTriggers = {
    Return
    End
};

EvtScript EVS_Main = {
    Set(GB_WorldLocation, LOCATION_TOAD_TOWN)
    Call(SetSpriteShading,preset SHADING_NONE)
    EVT_SETUP_CAMERA_NO_LEAD(0, 0, 0)
    
    Set(LVar0, Ref(EVS_BindExitTriggers))
    Exec(EnterWalk)
    
    EndSwitch
    Return
    End
};

export MapSettings settings = {
    .main = &EVS_Main,
    .entryList = &Entrances,
    .entryCount = ENTRY_COUNT(Entrances),
    .bgName = "kmr_bg",
    .textureArchive = "kmr",
};

Shape and hit

Open the Star Rod Map Editor and create a new map. Then, use the Generate Shape and Generate Hit buttons.

Add the shape and hit to the bottom of tools/splat_ext/mapfs.yaml:

- house_of_fun_shape
- house_of_fun_hit

Testing the map

By this point, you should have touched the following files:

  • Directorytools
    • Directorysplat_ext
      • mapfs.yaml Edited
  • Directoryassets
    • Directorymod
      • Directoryworld
        • Directoryarea
          • Directorycool_city
            • Directoryhouse_of_fun
              • main.c
    • Directorystar_rod_build Generated by Star Rod
      • Directorymapfs
        • Directorygeom
          • house_of_fun_shape.bin
          • house_of_fun_hit.bin

Build your mod and use the debug menu to Load Map and warp to your new map.