Skip to content

Visual components

Charles edited this page Jun 7, 2026 · 1 revision

Introduction

While ProtoJam is not an asset library, it does include a small collection of visual resources and custom nodes to help you build your game faster.

Prototyping materials

While developing a level, it's often beneficial to construct geometry and items from a checkerboard grid material to help judge scale in relation to the player. To this end, ProtoJam provides two grid types in four different colors in addition to a shader you can use to create custom grids.

Model grid materials

The model grid materials align their grid cells to the model's local coordinates meaning the grid does not shift when the mesh moves. Each cell is 0.25m. This is ideal for meshes intended to move like props.

model_grid_dark_material dark
model_grid_light_material light
model_grid_orange_material orange
model_grid_placeholder_material placeholder

World grid materials

The world grid materials align their grid cells to the world coordinates meaning the cells will remain in place even if the mesh moves. Each cell is 0.25m. This is ideal for constructing CSG geometry with a consistent repeating grid.

world_grid_dark_material dark
world_grid_light_material light
world_grid_orange_material orange
world_grid_placeholder_material placeholder

Custom grid materials

To create custom grids, make a ShaderMaterial with checkerboard_shader as its shader and modify the parameters as desired:

  • color_a: The first cell color
  • color_b: The second cell color
  • cells: How many cells per meter
  • world_coordinates: Whether the cells will be in world space (true) or model space (false)
custom

Item bob component

Bobbing collectable objects up and down has been a common trope in games for decades. While not complicated to implement, doing so without causing adjacent items to bob in sync can be tedious. ProtoJam provides a custom SineBob3D component which can be used to bob a target Node3D without the hassle.

Simply add a SineBob3D to your scene, set the target node to whatever object you want to bob, and configure the speed and amplitude to your liking. Adjusting the phase_shift will control how out-of-phase adjacent target nodes are. It is recommended to place all visual components of a pickup under a Node3D and target that rather than targeting the root node.

sine-bob-config sine-bob-3d

Clone this wiki locally