Inspiration

This project was inspired by our favorite casual games - Cities: Skylines, Factorio and Town To City. We wanted to combine ideas and progrression pipeline of tile-based games like Dorfromantik or Carcassonne and artisitc liberty that city building brings.

Features

Players take on the role of council members with different traits. Each member invests in buildings, harvests demand from adjacent tiles, and competes to reach 100 rating points.

  • 6 Unique Traits: Doctor, Activist, Entrepreneur, Political, Volunteer, Academic - each with building and demand bonuses
  • 3 Building Types: Hospital, Park, Factory - each harvesting different demand types
  • 3 Demand Generators: Residential, Commercial, Industrial tiles
  • AI Opponents: Powered by LLM (Ollama/llama.cpp) with fallback AI
  • Dynamic Grid: Sparse grid system that expands as tiles are placed
  • Multiple Win Conditions: First to 100 rating, highest after turn 10, last 2 standing

How we built it

First, we created a simple tile placing game with Godot's 2D engine. Then, we

Challenges we ran into

  • First time trying isometric 2D art in Godot and calculating tile placement
  • Connecting Godot's engine with LLM
  • Shortening LLM's answering time

Accomplishments that we're proud of

This game has a fun gameplay loop with elements that fit casual play style - it is fun to build a city and with decorative tiles and more building variety it would be exactly what we were trying to achieve. Agents add to replayability potential, and it is pretty entertaining to see them argue and discredit each other.

The most important thing that we are proud of is that we successfully explored ethical use of generative AI in gamedev. We live in the world where AI is everywhere, and if one is not implementing it they are considered to be behind. We can find a way to use AI in a way that benefit users, devs ant artist, and this project is proving it.

The problem is that as the game industry accelerates, less gets invested into bots' intelligence. At the same time, using big corporate LLMs is expensive and unsustainable. General purpose, local agents may become new bot companions for gamers. No need for training or hosting in datacenter makes such "AI" development competitive against in-code algorithmic approaches.

What we learned

We've explored if local-run small, general purpose language models (with math support) can play a game along with a player. The answer to this however is probably not at the moment - the models (even if run on neuro-optimized GPUs with state-of-the-art accelerators like Metal) it takes 10-15 to make a simple decision. Moreover, language models use text, which makes another challenge to represent the sate of the game to them. Context window being small doesn't help here as well.

What's next for Gorod

This was our first attempt at proper game pixel art. In terms of art, we would like to scale the resolution and instead of placing one "factory" or "school" building have a set of building types. Also, we would like to draw portraits for opponents, have them say unique phrases when winning or losing and add side quests.

Built With

  • godot
  • llama
  • mcp
  • pixelart
Share this project:

Updates