Using gridmaps

Introduction

Gridmaps are a simple and fast way to create 3D game levels. Think of it as a 3D version of the TileMap node. Similarly, you start with a predefined library of 3D meshes that can be put on a grid, just like if you were building a level with an unlimited amount of Lego blocks.

Collisions can also be added to the meshes, just like you would do with the tiles of a tilemap.

Creating a MeshLibrary

To begin, you need a MeshLibrary, which is a collection of meshes that can be used in the gridmap. Here are some meshes you can use to set it up.

../../../_images/meshes.png

Open a new scene and create a root node (this is important, as without the root node, it will not be able to generate the MeshLibrary!). Then, create a MeshInstance node:

../../../_images/mesh_meshlib.png

If you don’t need to apply physics to the building blocks, that’s all you need to do. In most cases though, you will need your block to generate collisions, so let’s see how to add them.

Collisions

To assign a CollisionShape and PhysicsBody to the meshes, the simplest way is to do it while creating the MeshLibrary. Alternatively, you can also edit an existing MeshLibrary from within the GridMap inspector, but only CollisionShapes can be defined there and not PhysicsBody.

To give the meshes a CollisionShape, you simply add children nodes to the MeshInstance node. You would typically add the desired PhysicsBody and CollisionShape in this order:

../../../_images/collide_mesh_meshlib.png

You can adjust the order according to your needs.

Exporting the MeshLibrary

To export, go to Scene > Convert To.. > MeshLibrary.., and save it as a resource.

../../../_images/export_meshlib.png

You are now ready to use the GridMap node.

Using the MeshLibrary in a GridMap

Create a new scene using any node as root, then add a Gridmap node. Then, load the MeshLibrary that you just exported.

../../../_images/load_meshlib.png

Now, you can build your own level as you see best fit. Use left click to add tiles and right click to remove them. You can adjust the floor level when you need to put meshes at specific heights.

../../../_images/gridmap.png

As mentioned above, you can also define new CollisionShapes at this stage by doing the following steps:

../../../_images/load_collisionshape.png

There you are!

Reminder

  • Be cautious before scaling meshes if you are not using uniform meshes.
  • There are many ways to make use of gridmaps, be creative!