A 2D top-down action RPG built in Godot Engine. Six enemy factions fight for territory across a neon-drenched arena. Your first game. The one that started everything.
COLORWAR is a 2D top-down action RPG where six color-coded enemy factions battle for territorial dominance. Built entirely in Godot Engine with GDScript, it features a weapon inventory system, health mechanics, and a distinctive neon tileset aesthetic. This was the project that proved game development was possible without a CS degree -- just curiosity and documentation.
Pure Godot. No plugins, no external libraries. Everything from scratch using the engine's built-in tools and GDScript.
Godot's node-based composition model. Each enemy type is a scene that inherits from a base enemy, with behavior defined by attached scripts and exported variables.
The territory AI system -- each faction checks nearby zones and decides whether to advance, retreat, or hold position.
extends Node2D @export var faction_color: Color @export var aggression: float = 0.6 @export var territory_radius: float = 200.0 var controlled_zones: Array = [] var enemies_in_range: Array = [] func _physics_process(delta): scan_territory() if enemies_in_range.size() > 0: if aggression > 0.5: advance_toward(enemies_in_range[0]) else: hold_position() else: patrol_zone() func scan_territory(): # Check overlapping Area2D zones var areas = $DetectionZone.get_overlapping_areas() for area in areas: if area.is_in_group("territory"): claim_zone(area)
Godot's node composition model was the mental breakthrough. Instead of inheritance hierarchies, you compose behavior by attaching child nodes. A health bar is just a child of any entity that needs HP.
The first enemy was a red square that moved toward the player. By the end, there were six factions with territory logic. Each layer built on the last. Never start with the complex version.
Early code was spaghetti -- everything referenced everything else. Learning Godot's signal system was the first step toward decoupled architecture. When an enemy dies, it emits a signal. Whoever cares, connects.
COLORWAR is rough. The AI is simple. The art is programmer art. But it runs, it plays, and it shipped. That matters more than any feature that never got built.