44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
---
|
|
title: Tiles and maps
|
|
author: nek0
|
|
tags:
|
|
- "devlog: pituicat"
|
|
- english
|
|
description: Putting previous stuff to use and walking steadily forward
|
|
---
|
|
|
|
Hi there!
|
|
|
|
Another weekend passed and another step has been taken. Last time I was
|
|
struggling my way through OpenGL and got a single quad displayed on screen,
|
|
which I had hardcoded there. The next step I decided to take was reading level
|
|
maps and generate quads where tiles would be and texture them properly.
|
|
|
|
I had already put some thought into how to store level information.
|
|
|
|
May train of thought here is, that tiles are static and arranged in layers
|
|
above each other. To represent that I use a simple bitmap picture per layer.
|
|
every single pixel in this bitmap represents a tile. The red channel contains
|
|
the information of the tile type (at the moment there are only solid tiles,
|
|
platform tiles and decoration tiles). The green and blue channel mark the
|
|
offset on the tilemap. To make the information visible to the naked eye, the
|
|
information is stored inverted, so that filled areas appear white and empty
|
|
areas black.
|
|
|
|
I will have to figure out dynamic objects like collectibles or enemies later.
|
|
|
|
So after defining types for the tiles, the tilemap and the level map I also
|
|
defined a rather generic typeclass for anything drawable to spew out vertices
|
|
with texture coordinate information. Putting my game on the screen now looks
|
|
like this:
|
|
|
|
![Screenshot](/images/2020-12-14_preview.png "a black screen with white tiles")
|
|
|
|
Making progress is fun and I enjoy making it in my own bespoken way, though
|
|
havig to think in different coordinate systems at the same time (OpenGL
|
|
coordinates vs. Image coordinates mostly) can cause quite a headache and some
|
|
rather fun bugs.
|
|
|
|
As always, feel free to check out the code on [my gitea](https://gitea.nek0.eu/nek0/pituicat).
|
|
|
|
See you next time!
|