• Use your scenes to organize the game hierarchy.

    • Have a scene for the player character.
    • Have a scene for the level. Any additional game objects in the level may also correspond to a scene.
    • Use Node2Ds and Node3Ds to organize the scene.
  • Tilemaps have layer functionality which lets you layer where tiles from a tileset (for example one layer for walls, one layer for soil).

  • Metadata is essentially Godot’s version of Editor scripts from Unity

  • Project > Project Settings > Input Map to set controls

  • For handling mouse events, you will often need to map the Mouse’s position into the Node’s Local Position. Use Node.ToLocal()

  • Always prefer to have the root’s transform to be the default transform. This will make placing it around as a scene much easier.

  • Canvas Layers are used as the root of the UI because they are always independent of camera movement.

  • Use a globals folder to store your global variables to be used for Autoloading. This is especially useful to act as a global Singleton that is accessible by all scenes. This means that a UI and a game logic scene can both access and modify these variables without having to resort to unclean message passing.

  • Modify the stretch settings from the project settings to allow the window to be robust to resizes.

  • Use Nodes by default for game logic. Use Resources for entities that do not rely on the game loop (i.e., no use for OnProcess or OnUpdate). Typical use cases include anything keeping track of game state.

  • Prefer to work with sprites first rather than resorting to tilemaps immediately. Tilemaps should be used only when you are certain that the game elements will be static. Regardless, OOP applies and we should make things easily adjustable.

Links