What it's good at
- Writing idiomatic Godot 4 GDScript (nodes, signals, resources,
@export/@onready, await, typed code).
- Building complete, multi-file systems: inventory, finite-state-machine AI, save/load, dialogue, multiplayer, shaders, combat (hitbox/hurtbox), navigation, crafting, skill trees, and more.
- Not confusing Godot 3 and Godot 4 APIs (
move_and_slide(), instantiate(), CharacterBody2D/3D, source_color, FileAccess, signal .connect()/.emit(), @rpc, …).
- Staying in Godot instead of drifting to Unity, Python, web, or other frameworks.
Benchmark
Godoter vs. the base Qwen3.6-27B, both in the same Q6_K quant, same GPU, same prompts,
thinking enabled for both. A task "passes" only if the answer uses the correct Godot 4 API
and avoids the deprecated Godot 3 API (the check looks at code blocks, not prose).
Table with columns: Test, Base Qwen3.6-27B, Godoter| Test | Base Qwen3.6-27B | Godoter |
|---|
| Easy tasks (Godot 4 migration traps) | 80% | 100% |
| Hard tasks (advanced Godot 4) | 68% | 96% |

On the hard set, reading the actual answers shows why the base struggles:
- Framework drift — asked to "build a skill tree" or a "deck-builder", the base often
replies in HTML/CSS/JS or Python; an RPC question gets answered in gRPC/Go; a
lobby in WebRTC. It doesn't realize the question is about Godot. Godoter never drifts.
- Lost in reasoning — on some prompts the base spends its whole token budget thinking and
never reaches the code.
(The 68% even overstates the base, since the keyword rubric credits wrong-language or
incomplete answers. The real gap is larger.)
How it was trained
- Base model:
unsloth/Qwen3.6-27B
- Method: QLoRA, rank
r = 16, alpha = 16, adamw_8bit, 4-bit base — adapter then merged to 16-bit.
- Dataset (~18,000 examples), all anchored to the official Godot 4 docs:
- exact API reference extraction (methods, properties, signals with signatures)
- documentation-grounded Q&A over the Godot 4 tutorials
- 666 complete, multi-file Godot 4 systems authored as build / explain / extend triples
- real Godot 4 GDScript completion pairs
Usage
This is a qwen3_5 / Qwen3.6 architecture model — it needs transformers 5.x.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tok = AutoTokenizer.from_pretrained("Ruler97/Godoter-27B")
model = AutoModelForCausalLM.from_pretrained(
"Ruler97/Godoter-27B", torch_dtype=torch.bfloat16, device_map="auto")
msgs = [{"role": "user", "content": "In Godot 4, make a CharacterBody2D move with the arrow keys."}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=512)
print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True))
For local use, prefer the GGUF builds (LM Studio / llama.cpp / Ollama):
Ruler97/Godoter-27B-GGUF (Q4 / Q6 / Q8).
Limitations
- It's a derivative of Qwen3.6-27B — ~99% of its capability is the base model; the
fine-tune adds Godot-4 reliability, not new general reasoning.
- Knowledge is bounded by the training data and the base's cutoff; very recent Godot 4.x
changes may not be reflected.
- The benchmark measures API correctness, not full architectural quality of generated code.
- Like any LLM, it can be confidently wrong — review generated code before shipping.
License & attribution
Godoter is a fine-tune of Qwen3.6-27B, which is licensed Apache 2.0, and Godoter is
released under Apache 2.0 as well. Please keep attribution to the base model. Built with Unsloth.