Project setup

Create a new project and download the project assets from https://github.com/PacktPublishing/Godot-Game-Engine-Projects/releases.

As you've seen previously, Godot, by default, includes a number of input actions mapped to various keyboard inputs. For example, you used ui_left and ui_right for arrow key movement in the first project. Often, however, you need a different input from the defaults provided, or you'd like to customize the actions' names. You might also wish to add actions for mouse or gamepad inputs. You can do this in the Project Settings window.

Click on the Input Map tab and add four new input actions (left, right, up, and down) by typing the names into the Action: box and clicking Add. Then, for each new action, click the + button to add a Key action and choose the corresponding arrow key. You can also add WASD controls, if you wish:

This game will have a variety of objects on the screen. Some of them should detect collisions (the player against the walls, for example), while others should ignore one another (like the enemies versus coins). You can solve this by setting the objects' physics layer and physics layer mask properties. To make these layers easier to work with, Godot allows you to give the game's physics layers custom names.

Click on the General tab and find the Layer Names/2D Physics section. Name the first four layers as follows:

You'll see how the collision layer system works with the various objects in the game later in the project.

Next, in the Display/Window section, set the Mode to viewport and the Aspect to keep. This will enable you to resize the game window while keeping the display's proportions unchanged. Refer to the following screenshot:

Finally, in the Rendering/Quality section, set Use Pixel Snap to On. This setting is useful, especially for pixel art-styled games, as it ensures that all objects are drawn at whole-number pixel values. Note that this does not affect movement, physics, or other properties; it only applies to the rendering of objects. Refer to the following screenshot: