Skip to content
Aris Lancrescent edited this page Apr 11, 2015 · 7 revisions

How can Skylines Overwatch simplify mod creation?

This depends on what your mod needs. Skylines Overwatch watches over your city for active IDs in a few dozen categories, such as residents, seagulls, police cars, etc. If you need to retrieve active IDs in a monitored category, then you won't have to do much more than a simple call to Skylines Overwatch, asking for them. You no longer have to figure out how to get them and how to do it efficiently.

Wait, if all it does is keep track of active IDs, why do you say it can reduce mod conflicts?

Much of the existing mods and mod ideas resolve around changing some aspect of an already created asset, such as a building, a vehicle, or a resident. Without an easy way to directly access the active IDs, many mods are overriding the underlying game code to achieve their changes in an efficient manner. However, only one mod can override one particular game code at a time. This means some mods cannot work together, even though their changes are conceptually compatible. Skylines Overwatch gives modders the ability to access active IDs easily, so many of them don't have to resort to overriding Colossal Order's code.

Tying off the same vein, replacing game code can leave residual problems. For example, if a replacement code does not properly deserialize just the original data and adds its own data into the mix, the game could fail to load if the mod is disabled or gone. By offering a suitable, non-intrusive alternative to make the changes modders want, Skylines Overwatch can help reducing the number of mods that override the underlying code, and by extension, the probability of broken games.

Do I need Skylines Overwatch?

No, you can implement everything Skylines Overwatch does by yourself. One benefit of open source projects is that you can take what you need, without having to commit to the whole project. If you choose to do that, make sure you check back regularly to see if new optimization measures have been discovered and implemented to keep your version as speedy as possible.

What made you make Skylines Overwatch?

While I was working on my original mods, SOM - Services Optimization Module and Kill the Seagulls!, I encountered two challenges:

  1. Cities: Skylines' code does not provide for direct access to active IDs. So, instead of checking on the handful of garbage trucks that are out there, I had to loop through over 16,000 entries of potentially active vehicles just to find those 5. That's the smallest repository, too. The largest one required me to loop through over 1,000,000 entries for maybe 10 active ones.

  2. I had to constantly decide between quicker reaction rate and less burden on the system. This was not a trivial decision, either. On the one hand, it was bad for hearses to drive right past corpses because the mod hasn't become aware of the corpses yet; on the other hand, it was just as bad, if not worse, for larger cities to experience FPS drops sometimes reaching 20+.

Skylines Overwatch solves both of these problems. For a direct comparison, take a look at the performance and reaction rate differences between the original Kill the Seagulls! and the new [ARIS] Remove Seagulls.

Speaking of seagulls, why so many animal remover mods?

These are usage samples. They are designed to demonstrate several principles of Skylines Overwatch:

  1. Multi-mod efficiency. Skylines Overwatch streamlines active ID querying for mods attaching to it. The performance difference between having one mod attaching to it versus having 10 is negligible. This stands in stark contrast to the traditional approach of each mod implementing its own querying routine. You can test this out by loading one of the animal removers, and then all three of them. See for yourself the performance degradation, or the lack thereof, from piling on two additional mods.

  2. Monitor distinction. Skylines Overwatch has two types of monitors: class-based and prefab-based.

[ARIS] Remove Seagulls and [ARIS] Remove Cows demonstrate the first type. You can see in the code how each of them needs to enable different monitors to get the data they need.

[ARIS] Remove Cows and [ARIS] Remove Pigs demonstrate the second type. Cows and pigs are both livestock and fall under the LivestockAI class. Skylines Overwatch distinguishes them through their prefab IDs. Since monitors are on a class level, there are no specific monitors to enable when you are querying for a specific prefab type.

How come the code looks so simple?

Because it is a simple task serving a simple purpose. This is a framework for obtaining active entries within the game world, not a programming platform that allows you anything and everything from changing a building's name to creating Half Life 3 out of Cities: Skylines. For a given task, the simpler the code, the better.

Did you spend more time writing this Wiki than programming Skylines Overwatch?

No. Not even close. The programming, testing, balancing, etc. took way longer. However, many aspects require additional explanation. That's why this Wiki is so long. Think of it this way, do you find it odd that the explanation for E=mc2 is 1,000,000,000 times longer than the equation itself?

Someone claimed Skylines Overwatch is malicious, a virus, snake oil, etc. Is it true?

People have the freedom to say whatever they want, regardless of how ridiculous it may be. This is not a blackbox project; it's open source. Anyone can take a look through the code and decide for themselves whether those claims are true or not. With that said, it is my opinion that the people who are making those nonsensical claims lack in either technical competence or integrity... or both. I sincerely hope they will land a job in the gaming industry soon or wherever they are trying so hard to get into, so they can mature as a person and grow out of petty imaginary power struggles over something that's supposed to be fun and enjoyable :)