Here we write about Nikki and the Robots development and other news. Be sure to subscribe! Visit our reddit forum and join IRC for even more info!
Merging Tiles
WARNING: This is a development post. So if you're not into programming, you might find it pretty boring...
When you use our level editor and place some tiles in a scene, these have to be converted into polygons and handed to chipmunk, the physics engine. If we do that naive and create a rectangle for every tile, there are lots of problems with Nikki being stuck were two tiles meet. So the tiles have to be merged together and altered in a certain way, to allow Nikki to move through the levels as elegantly as desired. I don't want to go into the details here, but I want to write about my use of QuickCheck.
QuickCheck is a test framework for Haskell that lets you check if certain properties hold for auto-generated arbitrary values. And as the tile merging algorithm is a little too complex for my little brain, that came in quite handy. So I wrote a test suite that checked, if the tile merging algorithm did the following two things:
(btw: The picture doesn't represent a failing test case. The generated test cases were much simpler, due to QuickCheck's great shrinking feature.)
When you use our level editor and place some tiles in a scene, these have to be converted into polygons and handed to chipmunk, the physics engine. If we do that naive and create a rectangle for every tile, there are lots of problems with Nikki being stuck were two tiles meet. So the tiles have to be merged together and altered in a certain way, to allow Nikki to move through the levels as elegantly as desired. I don't want to go into the details here, but I want to write about my use of QuickCheck.
QuickCheck is a test framework for Haskell that lets you check if certain properties hold for auto-generated arbitrary values. And as the tile merging algorithm is a little too complex for my little brain, that came in quite handy. So I wrote a test suite that checked, if the tile merging algorithm did the following two things:
- return a list of polygons where Nikki can't get stuck and
- preserve the exact area that is covered by the input polygons.
(btw: The picture doesn't represent a failing test case. The generated test cases were much simpler, due to QuickCheck's great shrinking feature.)
Tags: game tech, nikki, open source
















