A city-building and empire-management strategy game inspired by Ikariam — built with Godot 4.7
| Aspect | Status | Notes |
|---|---|---|
| Playability | ✅ Playable | Core loop works, NPCs are active, gameplay flow is functional |
| Stability | ✅ Good | No compile errors, no unexpected crashes |
| UI/UX | ✅ Improved | Panels completed, onboarding in place, user flow patched |
| Assets | 54 building textures; 5 buildings use color-coded placeholders | |
| Content | 20 NPC cities in the world, 6 commanders, daily scenarios | |
| Multiplayer | 🔴 Not implemented | No networking code exists |
- 38 building types with full definitions (cost, production, upkeep, research prerequisites)
- Worker system (assigning population to buildings)
- 16×16 city grid with free placement
- 54 building textures in
Assets/Textures/Buildings/ - Builder system with 2 concurrent slots (Clash of Clans-inspired)
- Building upgrades and demolition, with visual progress bars
- Real-time construction timers (per-second)
- 13 resources (wood, marble, glass, wine, gold, food, stone, crystal, sulfur, population, workers, research points, happiness)
- Happiness system, influenced by wine, taverns, temples, overcrowding, and corruption
- Corruption system, reduced by governor's residence
- Warehouse storage with capacity limits
- Construction cost discounts (carpenter, architect, glassmaker, etc.)
- Inter-city trade with sea routes (travel time is calculated)
- Real-time economic ticks (once per second)
- 4 main branches: Economy, Military, Science, Seafaring
- Layered technology tree with prerequisites (30+ technologies in ResearchManager)
- Research point generation via Academy and Crystal Workshop
- Full ResearchPanel UI
- New capabilities unlocked through research
- Turn-based combat with 12 rounds (5 minutes per round = up to 1 hour of battle)
- 6 formation types (Standard, Phalanx, Flanking, Assault, Entrenched, Ambush)
- Commander modifiers: attack, defense, naval
- Animated BattleScene with flying projectiles, emoji-based unit icons, HP bars, and unit shake on casualties
- Retreat option available at rounds 3, 6, and 9
- CombatReport with per-round breakdown (casualties, skills, loot)
- Defensive building system (watchtower, cannon, harbor chain, arch, wall)
- NPC attacks: click enemy cities (red) → attack/spy/trade dialog
- 6 commanders: Captain, Warlord, Tactician, Architect, Spy, Admiral
- 3 types (naval, ground, support) and 4 rarity tiers (common to legendary)
- 3 skills per commander (passive + active)
- Leveling up to 50 via EXP, with skill unlocks across Tiers 1–5
- CommanderPanel: selection, stats, and skill overview
- Modifiers integrated with CombatSystem
- 20 islands with primary and secondary resources
- 20 NPC cities with randomized names, spread across 12 islands
- NPCSystem with basic AI (attacking player cities, building defenses, 30-second tick)
- Deterministic world generation (seed=42)
- World map rendered via Canvas (islands, cities in blue/red, trade routes)
- Click an island to view cities, colonize, or attack an NPC
- Zoom/pan via mouse and touch (pinch-zoom + pan gesture)
- Inter-city trade route system
- 6 mission types (sabotage, resource theft, research theft, reconnaissance, incite revolt, poison water supply)
- Upgradeable hideout
- Discovery risk and execution consequences
- Fully implemented in
SpySystem.gd
- Landscape-only (forced landscape orientation)
- SafeAreaManager for notches/punch-hole cameras
- HapticManager for touch feedback (Android)
- Touch targets ≥ 88px
- Vertical AdvisorBar with 8 buttons (optimized for right-thumb reach)
- Pinch-zoom and pan gestures on WorldMap
- NotificationManager for local Android notifications
- ETC2 texture compression (mobile)
- Immersive mode + keep-screen-on
- Beginner protection (72-hour grace period)
- 12-step guided onboarding for new players
- Steps: welcome → first city → build lumberjack → build farm → explore island → barracks → research → train troops → attack NPC → colonize
- Event-driven: advances automatically after each completed action
- Skip button for experienced players
- Tutorial progress saved to the save file
- Buildings without dedicated textures (watchtower, defensive cannon, harbor chain, treasury, city wall)
- Rendered as color-coded rectangles by category, labeled with the building name
- Category colors: RESOURCE = green, MILITARY = red, INFRASTRUCTURE = blue, RESEARCH = purple, CULTURE = gold
- QuestSystem with 6 daily quests (first build, first upgrade, population 50, first research, train army, daily login)
- EventSystem with 4 recurring events (harvest festival, military drill, trade winds, inspiration)
- DailyReward (7-day rotating cycle)
- Signal-based architecture (EventBus for inter-system communication)
- ObjectPool for tile management
- ResponsiveLayout with dynamic tile sizing (40–72px)
- Custom UITheme built with StyleBoxFlat
- Custom shaders (water, glow, fire particles, post-process bloom)
- Save/load via Dictionary serialization
- TimeManager with tick/day system and offline progress
- 9,545 lines of GDScript + 1,778 lines of TSCN
| Item | Status |
|---|---|
| NPC enemies | ✅ 20 NPC cities with randomized names, basic AI, interaction dialogs |
| Tutorial | ✅ 12-step event-driven onboarding |
| Gameplay flow | ✅ Build → research → military → battle → colonize, fully connected |
| BattleScene animation | ✅ Projectiles, unit icons, HP bars, shake effects, timers |
| Missing textures | ✅ 5 buildings using category-based color placeholders |
| Item | Notes |
|---|---|
| MilitaryPanel | ✅ Active — unit training, available units, costs |
| TradePanel | ✅ Inter-city trade routes with gold cost, route listing, route removal |
| AllyPanel is a stub | Empty panel with only a close button |
| ColonizeDialog | ✅ Functional — click empty island → select origin city → colonize |
| EconomyManager consumption incomplete | Only food and wine are currently consumed |
| Sound FX | ✅ Wired to building clicks, construction/upgrades, research, trade, advisor buttons |
| ObjectPool | ✅ Prewarmed in Game._ready() with 20 units and 30 projectiles |
| Save/Load | ✅ Tutorial progress saves and restores correctly |
| NotificationManager scheduling exists but is disconnected | Notifications are never triggered during actual gameplay |
| Item |
|---|
8 of 38 buildings lack dedicated textures (fall back to construct.png) |
CityView's _ready() recently added rebuild_all() — possible race condition with signals |
| Save/load not fully tested (especially commanders and newer systems) |
| Offline progress in TimeManager calculates ticks but doesn't complete in-progress construction |
| CitizenSystem has citizen sprites but no one actually walks around the city |
City background (Bg) has a fixed position (484,767) and isn't responsive |
| Documentation (this README) is more complete than the game itself |
| No unit tests exist |
BattleSystem.gd is deprecated (replaced by CombatSystem.gd) but the file hasn't been removed |
| Phase | Status | Features |
|---|---|---|
| 🏗️ Phase 1: Infrastructure | ✅ Complete | Core loop, economy, research, city grid, base HUD |
| 📱 Phase 2: Mobile | Android conversion, commanders, combat, defense, daily loop | |
| 🧠 Phase 3: Content | 🔴 Not started | NPC enemies, tutorial, campaign missions, events |
| 🌐 Phase 4: Networking | 🔴 Not started | Multiplayer, alliances, diplomacy, real-time battles |
| 🎨 Phase 5: Polish | 🔴 Not started | Animations, particle effects, sound design, UI polish |
GameMB/
├── Assets/
│ ├── Audio/ # Music and sound effects (27 files)
│ │ ├── Ambient/ # Ocean waves
│ │ ├── Music/ # Main theme
│ │ └── SFX/ # Clicks, construction, errors, success, alerts
│ ├── Shaders/ # GLSL shaders (4 files)
│ └── Textures/ # All game imagery (1,122 files)
│ ├── Buildings/ # 54 building sprites
│ ├── Resources/ # 10 resource icons
│ ├── Units/ # 7 unit sprites
│ ├── UI/ # 32 UI elements
│ └── Environment/ # City and island backgrounds
├── Globals/ # 4 global scripts
│ ├── Globals.gd # All constants and enums
│ ├── GameState.gd # Runtime game state
│ ├── EventBus.gd # Signal system (44 events)
│ └── UITheme.gd # UI theme and styling
├── Scenes/
│ ├── Menu/ # Main menu, settings, load/save
│ ├── Game/ # 20 files (HUD, CityView, WorldMap, panels)
│ └── Building/ # Visual component per building
└── Scripts/
├── Core/ # 10 files (Building, Economy, Time, World, Save, ...)
├── Military/ # MilitaryManager
├── Systems/ # 10 files (Combat, Commander, Quest, Event, ...)
└── Utils/ # ObjectPool
| Component | Details |
|---|---|
| Engine | Godot 4.7 stable |
| Language | GDScript (9,545 lines) |
| Target platforms | Android (landscape only) + Linux/PC |
| Base resolution | 1920×1080 (canvas_items + expand stretch) |
| Renderer | Mobile (gl_compatibility) |
| Texture compression | ETC2/ASTC (VRAM) |
| Assets | PNG/JPG — CC0, sourced from various providers |
| Audio | 27 WAV/FLAC files (ambient + SFX + music) |
| UI theme | Custom StyleBoxFlat + 32 UI textures |
| Localization | Fully localized in Persian/Farsi |
| Min SDK | Android API 24 (Android 7.0) |
| Target SDK | Android API 34 (Android 14) |
# Requires: Godot Engine 4.7+
godot project.godotControls:
- Left click: select / place building
- Right click: cancel build mode
- Scroll / pinch: zoom
- Drag: move camera
- Backspace / Escape: exit dialog
Code and content in this project are released under the GPLv3 license.
Assets used (images, audio) are sourced from CC0/Public Domain providers. See ATTRIBUTIONS.md for full details.
Built with ❤️ and Godot Engine 4