godot (game engine)

Created: Apr 20, 2021Published: Nov 01, 2022Last modified: Apr 24, 2023
Word count: 923Backlinks: 30

Godot is an up-and-coming game engine for 2d and 3d games.

See also: Godot workspace file

It is a competitor to Unity and Unreal Engine, both of which require some portion of your games proceeds. Godot does not ask for any money from your game's success, and is completely open source with the permissive MIT license. It also downloads, starts, and restarts in seconds (vs minutes for those other engines).

It publishes to the Web, mobile, and console platforms.

I've been hacking in Godot in my free time for a year or so, and have a few repos around if you want to get a look at what Godot games are like.

Learning Godot strategy

> Daily Read-the-docs pills/kata

> Game clones

Copying the classics, with challenges like mario-in-a-week

>> fishy clone

>> beat em up

>> platformer

mario in a week?

>> tetris

>> bullet hell

>> chess sportscenter highlight reel

>> ink story tool

>> nba hangtime clone

> A playable chess board

Chess-em-up, continued?

the godot scene is the target asset

The godot scene is the target asset. Just add pixel art to the projects and learn the re-import flow. love reload the animating robot

create the character select scene

the character 'help' scenes

show us their own character acre

- their items

- their weapons

- their families

wishlist: godot plugin for showing the keybindings for all the things i can see

similar to the way vimium shows weblinks, or ace-window shows window keybds.

could even go all the way to emacs hydra or which-key.

bunch of godot open source to explore

great knockback/2d movement video

a first godot gradient sizing bug

godot headless/server

for when we need devops or better local support

https://godotengine.org/download/server

resourceful repos

> gathered urls

old workspace note

Godot is an open-source game engine.

This workspace file is for inspiration or note taking while working with godot. Overtime i'm sure the games will actually develop their own workspaces, so this will be a place for general godot learning, resource collection, prototyping, and toying with misc plugins, etc.

> made with godot collection

> Templates:

> Toy with!

Godot and elixir/phoenix channels: https://github.com/alfredbaudisch/GodotPhoenixChannels

over-the-top typing experience: https://github.com/jotson/ridiculous_coding

super tux party (mario party? bumper balls?): https://gitlab.com/SuperTuxParty/SuperTuxParty

meteorite (low-res metroid/doom fps): https://github.com/Bauxitedev/meteorite

bunch of mini games (wario-ware ish?): https://codeberg.org/Yeldham/librerama

> TODO gd script formatter should read from the project settings

> what would you put in godot treemacs mode?

error logs? scenes/debugger output the output buffers? assets as sprites?

displaying keybindings for godot? just the godot hydra?

> TODO defthing-based animal crossing in godot

> get a godot platformer started

something 2d and battle-royale style a place to play with smash-clone characters and to experiment with control styles combos fighting mechanics more prototyping and sandboxing!

> godot tool scripting has begun

now, to get a few tool script wrappers so i can ensure the code reruns when i

save from emacs

>> ask via issue on emacs-godot github project

>> i gotta learn this emacs godot breakpoints ui

>> need to remotely call godot commands

>> mostly resolved

there's a Scene dropdown command - Reload Saved Scene

this can be given a keybinding (within godot)

so now instead of close/reopen, it's alt-r (when focused on godot)

so, edit file, switch clients, alt-r to get a tool to reload

> godot as a live-reloadable thing

> godot as a window manager, especially one controlled by defs, would be great

> godot as wm doesn't have tailwind

> read/re-create as a godot exercise

> tried to do this for a long time

  # print("camera global transform", camera.global_transform.basis.z)
  # print("camera transform basis z", camera.get_transform().basis.z)
  # print("camera looking vector", camera.global_transform.looking_at(self.translation, Vector3.UP).origin)
  # print("camera looking at basisz", camera.global_transform.looking_at(camera.get_transform().basis.z, Vector3.UP).origin)
  # move_direction *= camera.global_transform.looking_at(self.translation, Vector3.UP).origin
  # move_direction *= camera.global_transform.looking_at(camera.get_transform().basis.z, Vector3.UP).origin

was hoping to multiply some vector by my existing movement vector

but finally found this

  if Input.is_action_pressed("ui_right"):
    move_direction += camera.global_transform.basis.x
  if Input.is_action_pressed("ui_left"):
    move_direction -= camera.global_transform.basis.x
  if Input.is_action_pressed("ui_up"):#forwards
    move_direction -= camera.global_transform.basis.z
  if Input.is_action_pressed("ui_down"):#backwards
    move_direction += camera.global_transform.basis.z
    var dir = Vector3()
        dir.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left")
        dir.z = Input.get_action_strength("move_back") - Input.get_action_strength("move_forward")

        # Get the camera's transform basis, but remove the X rotation such
        # that the Y axis is up and Z is horizontal.
        var cam_basis = camera.global_transform.basis
        var basis = cam_basis.rotated(cam_basis.x, -cam_basis.get_euler().x)
        dir = basis.xform(dir)

> TODO godot game template

with nice deploys/CI ?!?

> TODO read to learn godot UI

also, collect those ui-clones (trello, todo app, etc)

> TODO integrate godot functional helpers

> [OBKF/Godot-Trail-System: Advanced trail/ribbon plugin for the Godot Engine](https://github.com/OBKF/Godot-Trail-System)

[OBKF/Godot-Trail-System: Advanced trail/ribbon plugin for the Godot Engine](https://github.com/OBKF/Godot-Trail-System)

>

> [nonunknown/gdextension-creator](https://github.com/nonunknown/gdextension-creator)

[nonunknown/gdextension-creator](https://github.com/nonunknown/gdextension-creator)

>

> [Extensible Color Palette - Godot Shaders](https://godotshaders.com/shader/extensible-color-palette/)

[Extensible Color Palette - Godot Shaders](https://godotshaders.com/shader/extensible-color-palette/)

>

> [SPEEDLINES - Godot Shaders](https://godotshaders.com/shader/speedlines/)

[SPEEDLINES - Godot Shaders](https://godotshaders.com/shader/speedlines/)

>

> [AndresGamboaA/GDpick: GDpick is a color picker tool built on the Godot Engine, which allows you to easily pick colors from your screen.](https://github.com/AndresGamboaA/GDpick)

[AndresGamboaA/GDpick: GDpick is a color picker tool built on the Godot Engine, which allows you to easily pick colors from your screen.](https://github.com/AndresGamboaA/GDpick)

>


Backlinks

A short list for now, but folks that are doing excellent work.

Hi! My name is Russ!

I make open-source games in Godot, and I build dev tools in Clojure.

Everyone's journey through programming languages is different - we all choose different times to start and stop.

One thing I know for sure - the more languages you use in-anger, the easier learning the next one is. I really didn't know anything about my first language or two until I learned the third or fourth.

More details to leave here, but for now, here's a rough outline of my path:

  • Primitive Java in college courses
  • Objective-C and a basic iOS app
  • JavaScript via Codecademy
  • Full stack JavaScript
  • BackboneJS
  • AngularJS
  • NodeJS
  • MongoDB
  • Golang for some microservices
  • Brief Ruby + Rails + ReactJS frontend
  • Full Stack JS with Angular, Koa, RethinkDB
  • Plus a swift iOS consumer
  • Angular2 with TypeScript, Node + GraphQL backend with Typescipt
  • Go microservice framework, data pipeline, GraphQL service
  • Elixir rewrite with same features
  • Elm frontend
  • Switch from Neovim to Emacs (first lisp exposure)
  • Full Haskell rewrite
  • Forced switch to Python backend, opt-in to ClojureScript frontend (Reframe)
  • Bash tooling refactored into Clojure
  • Fennel (Lisp for Lua) in Love2d and AwesomeWM
  • Python (Django) and Python (FastApi, Strawberry)
  • 'modern' React with Typescript (yuck!)
  • GDScript ( Godot )

At the time of writing, my opinions are quite strongly in favor of Clojure for just about everything practical. It does so much in so little code, is extremely flexible and malleable, and is excellent for interactive debugging. Especially with the recent expansion of targets (e.g. Babashka), Clojure can reach everywhere.

I do think my path had something to do with my stability at the end. If folks come into clojure without trying to destructure json in Go, without dealing with python in anger, or without typing yourself into a category theory corner in Haskell, you might need to go chase that first.

I loved Elixir for it's simple and effective standard library and interactivity as well - Clojure just feels like an even better execution of those things.

More to share here! Feel free to ping me if you want to hash any of this out,

I'm game :D

Related to Game AI, a newer take on state-machines / behavior trees.

Allows for more emergent behavior.

GOAP supports dynamic prioritization of goals based on world-state.

Also supports nuanced planning building based on cost-analysis.

Often uses A* to build the 'path' (plan).

Probably short for Godot Script, this is the scripting language godot introduced to support it's game engine.

Pretty raw for now.

Game Dev/Design Education

A Godot monorepo full of games, addons, and scripts.

Godot is an up-and-coming game engine for 2d and 3d games.

It is a competitor to Unity and Unreal Engine, both of which require some portion of your games proceeds. Godot does not ask for any money from your game's success, and is completely open source with the permissive MIT license. It also downloads, starts, and restarts in seconds (vs minutes for those other engines).

It publishes to the Web, mobile, and console platforms.

I've been hacking in Godot in my free time for a year or so, and have a few repos around if you want to get a look at what Godot games are like.

Game AI can be modeled with behavior trees.

We want a very expressive behavior tree lib, so we can be expressive in our AI design.

Ideally Behavior Trees can be visualized and debugged easily.

Enemy AI design, Level Design. It's all coming together.

Somewhat related: Build a Level editor

Starting early today (12:01am)

working through clawe.org, pulling in some content, writing some new ideas

garden tending

YouTube channels for creators producing godot content.

A monthly, godot -required game jam.

Always 9 days (two weekends).