Skip to content

The Development Workflow

Start with a main.go file, model your project in Go using structs to represent the world, space or state of your project. With its simple type-safe syntax, Go is an excellent language for theory building and conceptual representation.

package idea
import "graphics.gd/classdb/Node"
type Project struct {
Node.Extension[Project]
}

Keep creating more data structures to represent the concepts of what you are aiming to build. Explore the classdb to discover all the functionality the engine provides. Think about how you can use these features to build your project.

When you want to organise the visual appearance of the project, use the gd command to launch the engine’s editor. The editor is excellent for importing media, managing assets and designing the visual + spatial elements of your project.

Hot Reloads planned feature

Section titled “Hot Reloads ”

graphics.gd aims to support hot-reloading during gd or gd run so that when you make any changes to Go source files whilst the project or editor is running, they will be recompiled into either a wasm binary or a Go plugin and the running application will switch over to using any newly compiled code.

If you stick to using exported struct fields, startup.Scene and avoid depending on globals or anonymous functions, this may “just work” for you, otherwise, if you are using startup.Rendering or require globals or persistent callables, then there will be internal state not available to the new version of the code. Register startup.OnSuspend and startup.OnRestore functions to coordinate and transfer this state.

If any non-serializable state is required for specific class extensions, you can also implement Suspend(Dictionary.Any) and Restore(Dictionary.Any) methods in order to record any required information to reconstruct this state.

Each hot-reload will permanently increase memory usage until the application is restarted. This feature is only available for the purpose of convenience and to keep the editor running whilst editing code, do not expect the equivalent runtime performance of a freshly launched application.

Snapshots planned feature

Section titled “Snapshots ”

As a consequence of supporting hot-reloads, graphics.gd will also feature the functionality to take snapshots of the entire application state, as if it were being hot-reloaded. This enables an application to be resumed from a previously captured state. The same limitations apply to snapshots as to hot-reloads.

Snapshots will be suitable to use as a quick save/load function for an application. On mobile platforms, snapshots can be used to preserve application state when the device sleeps or the application is suspended.