Basic Structure

This document outlines the basic design of EgoVenture.

EgoVenture makes heavy use of [singletons](Singletons (AutoLoad) — Godot Engine (stable) documentation in English). The central singletons are EgoVenture, which handles the most basic parts of the game, Backpack for inventory handling and Boombox for handling audio.

The whole game is made up of multiple Godot scenes, that are switched when walking through the environments. Multiple parts of the environments (called locations) are bound together using a map scene. To optimize for performance and memory consumption, EgoVenture contains a scene caching algorithm that precaches upcoming scenes based on a cache map that can be generated when editing the game.

Various tools like special hotspots are provided to ease and streamline game development.

Signals are used to communicate with the different components.

Various parts that build up the game are created using standard Godot resources. For example inventory items, the game’s configuration or the game state, a standardized resource for storing variables about the progress in the game. Variables in that state can be used in the scenes to toggle sprites or hotspots.

Most tools use Godot controls to implement their actions. Also, the main menu is made up using controls and can completely by themed using Godot themes using special theme overrides.

Finally, there should be a core singleton for each game, that handles very basic stuff like initializing the state, and is used for configuring EgoVenture and handling signals.

Canvas layers

EgoVenture uses CanvasLayers to stack different views over one another. The bigger This list records the IDs for reference:

Layer

Resource

Description

1

inventory.tscn$Inventory/Canvas

The inventory bar

90

detail_view.tscn$DetailView

The inventory item detail view

99

parrot_dialog.tscn$ParrotDialog

Parrot’s dialog character and subtitle view

100

map_notification.tscn$MapNotification

The overlay that shows up when the map notification is played

125

main_menu.tscn$MainMenu

The main menu

126

waiting_screen.tscn$WaitingScreen

The screen shown when filling the cache

127

menu_grab.tscn$MenuGrab

A tool layer to capture right mouse clicks and show the menu

128

speedy.tscn$MouseLayer

The custom mouse cursors