The ThreeCity Project and How It Changed San Andreas Multiplayer

ThreeCity started as a hobby project by a small group of developers who were frustrated with how most SA-MP servers treated roleplay. They wanted something more grounded — a persistent, semi-hardcore urban environment where economy, housing, and criminal activity actually affected other players. What they built ended up being one of the more ambitious ThreeCity-style projects the GTA SA modding community produced. The core of ThreeCity revolves around custom scripts that extend SA-MP well beyond the default gamemodes. Instead of just racing or free-roam deathmatch, the community built an integrated system where players could buy property, run businesses, join factions, and engage in organized crime. The scripting relied heavily on PHP-AFK, later migrating to newer frameworks like ZCMD and sscanf for command parsing. I spent a lot of time during the 2018–2021 period working with ThreeCity's source code. The original build was written mostly in Pawn, which is the scripting language SA-MP uses. It's not exactly elegant, but it works. The server compiled everything into a single .amx file, which made debugging a pain because error logs pointed to line numbers that didn't always match what you expected after recompiling.

Here is how the system actually functioned under the hood. The economy was token-based. Every player started with a fixed amount of in-game money, and the total money supply was tracked through a MySQL database. Vehicles, properties, and weapons all had price tags tied to real-time server economy formulas. If someone flooded the market by exploiting a bug, the server would gradually inflate prices across the board until the economy destabilized. This happened multiple times across different ThreeCity forks. The crime system was the most elaborate part. Factions like the Families and Ballas had their own territory maps defined by colshapes — collision shapes that the server checked whenever a player entered or left a zone. When a player was within a rival faction's territory, the script would randomly trigger encounter events. Some were simple car chases. Others involved ambushes with scripted AI drivers, which required custom pathfinding because the original GTA SA AI pathing doesn't work well in multiplayer environments. One thing beginners always get wrong about ThreeCity is that it is not a single downloadable mod you install and run. It is a server-side modification. You need an SA-MP server host, a MySQL database, and the ThreeCity GM files. There were several distribution sites over the years, but the most reliable builds came from dedicated forums where the original developers posted nightly updates. I maintain a private copy of the 2020 stable release because it is the version with the fewest memory leaks.

Installation involves placing the gamemode files into your server directory, configuring server.cfg with your database credentials, and then compiling the Pawn scripts with pawno.exe. The tricky part is the configuration — the default settings assume you are running on a machine with at least 4GB RAM dedicated to the server. Running it on anything less results in stuttering during peak hours when twenty or more players are in the same zone. A specific problem I ran into: the property ownership system used floating-point coordinates for zone boundaries, and due to how Pawn handles floating-point arithmetic, rounding errors caused players to occasionally be registered as inside or outside a property they legitimately owned. This meant they could not access their own garage or business. The workaround was to edit the relevant config file and increase the zone tolerance from the default 0.5 units to 2.0 units. After that, the boundary check worked consistently. It is not a perfect fix, but it eliminated the majority of false negatives. The community around ThreeCity also built a number of companion tools. There was a map editor for designing custom territories, a vehicle spawn manager, and an admin panel that let server owners ban players, freeze them in place, or adjust economy parameters in real time. The admin panel was web-based and connected to the server through a simple HTTP API that listened on a configurable port.

Get the Full Details

Endless Summer for GTA: San Andreas — Gameplay video of summer ...
Endless Summer for GTA: San Andreas — Gameplay video of summer ...

One counter-intuitive detail about ThreeCity that most guides ignore: the more players you have online, the worse the lag actually gets, even on a well-configured server. This is because the faction territory system recalculates every player's zone status on every position update. With fifty concurrent players moving around the map, the server spends a significant portion of its tick time checking colshape collisions instead of processing gameplay logic. The practical solution is to limit faction-controlled zones to a smaller set and use static colshapes instead of dynamic ones where possible. This can reduce CPU load by roughly thirty percent on a typical server. Another common pitfall is the assumption that the default ThreeCity config is balanced. It is not. The starting cash amount is too high for new players, which means they can buy a car and a property within the first hour and never need to work. The faction recruitment system is equally broken — any player can join any faction regardless of level, which defeats the purpose of having progression. A proper balance pass requires adjusting the init values in the main pawn script and recompiling. I usually suggest dropping the starting cash to 5,000 and adding a minimum level requirement of 5 for faction joins. As for where to get the files, the original developers stopped posting publicly around 2022. The last working version is circulating through archived SA-MP forums and Discord communities. There is no official download link anymore. If you find a site claiming to have the latest version, verify it by checking the compilation timestamp against known release dates. Modified builds with injected backdoors have appeared on several file-sharing sites.

The project had real potential but also clear limitations. The Pawn language is outdated and difficult to maintain. The database queries are not optimized for large player counts. And the community that built it has largely dispersed. What remains is a functional but fragile system that requires hands-on configuration to run properly. If you are willing to spend a few hours tweaking server.cfg and understanding the Pawn source, it can produce a remarkably detailed roleplay experience. If you expect a plug-and-play solution, you will be disappointed.