Skip to content

Instantly share code, notes, and snippets.

Pros

  • Entering play mode is instant!
  • Has very intuitive coding style.
    • Very Unity-like, but even when it's not identical to Unity, it's very intuitive
  • Gives you an option to install daily master branch editor in the launcher
  • Profiling with Tracy!
  • Unlike Godot:
    • Prefabs (scenes) don't hide children
    • Can apply prefab from scene
  • Input is not a separate function, but it happens in update (like in Unity)

Preface

I'm comparing Godot mostly to Unity due to my ~10 years of Unity experience. I'm also primarily working in 3D and C# and that is what I want to use Godot for.

Terms:

  • by "export" I mean a variable exposed in the inspector, that's how Godot calls them
  • I use the word "prefab" to mean a scene that is intended to be instantiated multiple times, unlike a "level"
  • Godot's Resources == Unity's ScriptableObjects
  • Godot's collision shapes == Unity's colliders

Pros

Hello reader. This post is just for throwing ideas in the air, there is no implementation, it's all just in my head, and I don't know if this would even work in practice. It's incomplete as well.

INSERTNAMELANG is yet another embeddable scripting language! It's imperative, optionally-typed with write first optimize later philosophy.

It borrows elements from all languages so I'm not claiming any inovations.

I'll try to use as few words as possible in explaining. Here we go:

Variables are mutable

@nothke
nothke / tasks.json
Created October 20, 2023 19:06
zig tasks for VSCode
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "zig build-exe",
"type": "process",
"command": "zig",
"args": [
@nothke
nothke / cool-zig-features.zig
Last active October 20, 2023 19:05
Zig code I wrote on stream to show some cool features
const std = @import("std");
const DivisionError = error{
DivisionByZero,
OperandIsNan,
};
fn divide(a: f32, b: f32) DivisionError!f32 {
if (b == 0) {
return DivisionError.DivisionByZero;
[Shortcuts]
KisToolSelectOutline=S
KisToolSelectRectangular=B
KisToolTransform=W
KritaSelected/KisToolColorSampler=P; Z
KritaShape/KisToolBrush=Q
KritaShape/KisToolMultiBrush=none
clear=Del; X
deselect=A
duplicatelayer=Ctrl+D
@nothke
nothke / zig.json
Created September 21, 2023 18:20
My zig snippets for VS Code
{
"Self": {
"prefix": "self",
"body": "const Self = @This();",
},
"Scoped function": {
"prefix": "fnself",
"body": "fn ${1:MyScopedFunction}(self: Self) ${2:void} {$0}",
},
"Mutable scoped function": {
@nothke
nothke / publish-to-itch.py
Created August 1, 2023 17:43
Shakedown Rally itch uploader example
# A script for single [double] click uploading to itch using butler
# by Nothke
#
# Requirements:
# - Installed butler: https://itch.io/docs/butler/
# - butler added to PATH
#
# How to use:
# 1. Put this script in your project folder,
# 2. Edit the script by adding project names and ignores below
@nothke
nothke / strbuff.zig
Created December 1, 2022 18:39
Minimal generic stack-based string buffer for zig
const std = @import("std");
/// Minimal generic stack-based string buffer
pub fn StrBuff(comptime capacity: usize) type {
return struct {
chars: [capacity]u8 = std.mem.zeroes([capacity]u8),
cur: usize = 0,
const Error = error{AttemptingToAppendArrayLargerThanCapacity};