top of page
Title_WithOutline.png

OVERWORLD

The overworld is implemented as a tile-based map. Given the project's short time frame and relatively small, inexperienced team, I needed a way to design the maps and store the data without any dedicated tools.

My solution was to design the maps in Tiled and store the data in bitfields. This is actually more pragmatic than it sounds - it's flexible, scales, and it doesn't take very long to convert a Tiled map into engine-readable data:

1. Draw the maps in tiled.

2. Export to a spreadsheet (each unique tile in the tile sheet is exported as a unique integer)

3. Convert the spreadsheet to a text file (easier to parse in C)

4. Replace the integers in the text file with game data in hexadecimal (fairly easy using combination of find+replace and hand editing)

5. Read the hex numbers into the engine

DataMap.png

Example of one of the data files

TileManual0.png

Explanation of hex values (`F`s are walls, for example)

DataMap1.png

Data file for same map containing warp tiles (load another room)

1.png
TileManual1.png

Values contain three pieces of data: a room index, the player's orientation when the room spawns, and the player's position when the room spawns

The map as it appears in the game

HexParser.png

Parsing the data files - fscanf_s doesn't work correctly with 64-bit integers, so I had to read each number as a string and parse the string

bottom of page