The guide will present a custom map template by CapLag and describe the file to help understand how to work with a new simple map with no small blocks.
Download: Sample_Empty_Map_No_Small_Blocks_b11 Requires Infinite Heaven. You could probably just run the sample map and it should load fast.
Unpack the .mgsv with your preferred archive unzipper tool. Change the name of the folder to fit your taste.

Inside the Mod Folder, you should have the folders Assets and GameDir.
smpl is the four letter name that will be the unique locationName for
your custom location. afgh, mafr, cypr, mtbs are some of what’s
used by the game, for example, in its vanilla
Locations. In this guide we will use mapa,
and change all instances of smpl in the example to that. It can be
whatever you think would be better and unique.
Change the name of smpl.fpk and smpl.fpkd in mapa to mapa.fpk
and mapa.fpkd, and then unpack them with a recent enough version of
GzsTool. The renaming doesn’t matter much as long
as the location script calls for the right path. It’s a matter of
organization only as you can have as many .fpk/.fpkd folders with
any names. MakeBite from SnakeBite
will pack all _fpk and _fpkd folders to .fpk and .fpkd pack
files.

mapa.fpk will have assets such as .fmdl,
.geom, .twpf,
.frt, motions,
.nav2, .lba and whatever…
mapa.fpkd will have various accompanying object placement parameter
data, such as .fox2, scripts and
.vfx.
Inside the _fpkd folder there should be three folders: level,
level_asset and ui.
In level_asset, there should be the block data loading .fox2 dataset
files for memory allocation of the player block, buddy block and vehicle
block. No need to change things here, though maps have been known to
work even without the player block entity.
In ui, the result_option_subtitles_boot.fox2 will load the subtitles
for the result screen. It’s not needed for the map to function, but all
maps place this here.
In level, change the 4 letter smpl name to your mapa equivalent,
as well the these three files. The .fox2 files here don’t matter much,
and neither do their names, unless they need to be referenced by
EntityLink references in some .fox2 entities.

The _common_asset_floor.fox2 is the dataset which stores the data in
which a .fmdl/.geom pair from the .fpkd’s associated .fpk called
mtbs_flor011 is placed as a StaticModel, rotated and scaled. To edit
.fox2 files in XML, download FoxTool and unpack
the .fox2. Check out the guide FoxKit: StaticModel and
GeoxCollisionFreeShape
by Ventos to understand more about how to add more assets to the
custom map. You can place as many .fox2 files with as many placed
assets in them as the game could possibly take it. You can completely
remove this file along with the .fpk’s mtbs_flor011 .fmdl/.geom
pair, as the map doesn’t require a floor for the player to stand on -
there’s already an invisible floor at Y -80, so while testing the map,
you can simply specify the later described mission .lua script’s
startPos’s Y value to -79.2 to safely spawn on the always present
invisible floor.
The _common_data.fox2 defines the entity TppLocationData. It doesn’t
matter much in terms of the map actually loading in, so you can leave it
out for now, if you don’t deem the sky tinting, global fog and color
correction parameters important for your map just yet.
You should change the name of it to mapa_location (or with your
equivalent of mapa) where smpl_location is.
While locationId works with 0, like it does with MGO maps it might be
interesting to choose a unique one, and you will need to pick one later
in the location .lua script later on. Please see Things
Codes to have a look of each number location
is already taken by the vanilla game. There aren’t many custom locations
at the moment, so there’s no need for a custom location number id
reservation system. To follow the vanilla game’s location ids count,
anything beyond 120 is fine.
scriptPath has yet to be seen in vanilla uses with anything but an
empty value, so it can be left as is.
For the map to have weather and sky tinting based on time of day, you
should write down a path between <value></value> to the weather
parameters file, .twpf, where it should be in
mapa_fpk/Assets/tpp/level/location/mapa/ folder, like:
<value>/Assets/tpp/level/location/mapa/mapa_weatherParams.twpf</value>
It can be empty for now. There’s no tools yet to generate .twpf files
yet, so it’s best to reuse vanilla ones from TPP and onwards.

This dataset loads the important TppSimpleMissionBlockControllerData
entity. It has to be in, but doesn’t require any changes. You can rename
the .fox2’s name, though.
The template map only loads the StaticModel mtbs_flor011.fmdl and
.geom. If you removed the floor dataset as previously suggested, you
can remove these ones as well.

_fpk/Assets/tpp could store a lot of types of asset files.
Environmental assets like rocks, trees, ground and houses can be found
in the environ folder. If a location_common_sky.fox2 dataset
needs a sky model, it’ll look for a sky_dome in the effect folder.
If a dataset needs to add .mtar files, it’ll look in the motion
folder. If it needs to find a weapon model, it’ll look in the weapon,
so on and so forth. And, of course, the level folder which stores
files like .twpf, .nav2, .lba, .geoms, .obr, .grxla,
.gpfp, etc. It’s best to look up examples of the uses of those
entities in vanilla maps, and when tools are made to create them, there
should be guides here on how to create them and made your map use them!
The GameDir folder will have the external Infinite Heaven add-on
location .lua script and the mission add-on .lua script to prepare
the pack paths and other parameters for Infinite Heaven to pipeline and
inject into the game’s location and mission definition tables.
Inside the GameDir/mod/location/SMPL.lua script you will also find
CapLag’s initial comments on these files and parameters. Change the name
of SMPL.lua to your location’s name. Open the file using any editor
that accepts .lua, like Notepad++ or Visual Studio.
Change the locationName and the locationId according to our previous
changes to the TppLocationData, and change the path to the .fpk to the
right one, also according to our previous changes. Make sure your paths
always start with /Assets/ and use / instead of \. Note that
inside the packs, you can specify multiple .fpk paths as a list, for
example:
packs= { "/Assets/tpp/pack/location/mapa/mapa.fpk",
"/Assets/tpp/pack/location/mapa/secondFPK.fpk", },

The sample map file has a 12000_sample.lua script: the code in the
name needs to be unique as it might conflict with another one with the
same name. 12000 is of course none of the vanilla have, and it’s
unlikely for any mod show that soon, because we don’t have much mod maps
available. You can choose any mission id from the 12k range for testing,
but for release you should contact us at Modders’ Heaven to reserve a
mission id, so anything in the 13k range above 13010 is fine.
Currently there’s not many mission mods, so no serious mission reserving
system is in place yet.
Open the mission add-on .lua script and change the missionCode, add
the right location.
The pack here loads a minimal sample mission .fpk that’s already
included with Infinite Heaven. If you want to make a unique mission
.fpk with NPCs and objectives and such, the path should point to
another .fpk in /Assets/tpp/pack/mission2/ and not in location.
And the startPos should write the coordinates for where the player
will spawn on mission start. if you previously removed the floor dataset
as suggested, change the Y, the second value, to -79.2.
For further mission and location add-on script parameters, check out
Infinite Heaven’s InfMission.lua script usually found in /MGS_TPP or
GameDir/mod/modules/InfMission.lua.

If you wish to expand the map, check out the guide FoxKit: Installing,
Import Files and
Terrain by
Ventos. You should understand how .fox2 file works and get used to
all the entities game has, the folder structure of game and what file
does what. To write missions, see how side ops are made with Side Op
Companion, how other users’
locations missions and side ops are made, or how all of the above work
in the vanilla game. See .lng2 files to add a suited name for the area
as well some images of location. This is just the beginning.