Olympus UI and Multiplayer Code found in The Sims 4 Engine

79
15,916

Hey there everyone, you might have noticed SimsVIP has been so kind as to let me take the reins on this one. I’m TwistedMexi. You might know me, but in case you don’t, I’m a modder who has been heavily invested in the workings of TS4 since launch, and today I’ve got some news that can settle the now two and a half year mystery that is The Sims 4.

Olympus UI

With the launch of The Sims Mobile, some old grumblings about “The Sims 4 (Olympus)” have been cropping up. Rightly so, but players are starting to think Olympus was always meant to be The Sims Mobile. I’m here to tell you, The Sims 4 is absolutely Olympus, or more specifically the Sims 4 UI is Olympus. Below is a picture from one of the decompiled UI files, where you can see Olympus is referenced. I assure you this is laced through the entirety of the UI components. If you need more proof though, I’ve also located Olympus in the source code of the main assembly, something that had been inaccessible until now. In it you can see that Olympus is tied in directly to the game’s core. And finally, I’ll remind doubters that one of the concept videos actually had TS4 logos in them.


So in summary, The Sims Mobile is not Olympus. Olympus was a codename for the UI component of the Sims 4. I know it’s common for people to think of Olympus as the online functionality but they were unrelated, players made the connection (pun, sorry) because online features happened to be present in the UI concept video. The Sims Mobile does appear to borrow heavily from Sims 4 assets, although they’ve been restyled. What hasn’t been copied is the engine we saw in that concept video in 2013. It’s not feasible for a PC engine to be converted directly to platforms such as Android and iOS. They’re very much their own animal. (With the exception of multi-platform development tools like Unity). I’ve decompiled The Sims Mobile APK and the engine used is borrowed from EA’s Firemonkey Studios, their mobile game development studio. The game is new but they likely developed it in order to get some use out of the unused assets from the Olympus-era development.

 

The Sims 4 Had Multiplayer

Ah, the topic that has been wisped through the air for years now with no response. Today it has one. The sims 4 was a multiplayer game. There’s not any conspiracy theory, doubt, or hearsay involved this time. Just information straight from The Sims 4 executable code itself.

References to Multiplayer Invites and multiplayer interactions in both the C++ and Python engine. It also includes a command switch that says (offline simulation only), implying there is an online simulation.
C++ references to multiplayer joinability settings

I’m going to continue the dump of C++ entries below, but first I want to offer some more insight into the current state of The Sims 4. When The Sims 4 was being developed, EA was struggling with a recently launched and failing “always-online” SimCity product. Assuming EA held faith in this strategy for their other products, it makes sense that TS4 started out as a multiplayer platform. There are a few reasons why I personally have always maintained that the game was meant to be online.

  • The biggest reason, is the way the game is structured today. If you aren’t aware, The Sims 4 is split into two main components. You have the modding-friendly Python code (script mods), and the typically closed-off C++. These two languages do not talk to each other, so instead they’re bridged by something called Protocol Buffers, or “Protobuf”. Protobuf is a great technology but typically one you would use for data interchange over networks. In my observation, it seems the whole reason we received this open python code is because the programmers needed to replace the client portion of the game quickly when they pivoted to offline. The C++ portion is most likely the original server portion of the game. I cannot confirm the following, but I suspect this bridged communication is a large part of why the simulation has trouble keeping pace at higher speeds.
  • The exclusion of CASt may have been a result of this, as customized data on objects and sims would result in a lot of netcode requirements in order to display everything properly across multiple clients.
  • The same can be said for terrain modification. By keeping the terrain consistent, it removes the requirement to sync the terrain model across clients.
  • The smaller, closed lot system is also conducive to the multiplayer functionality. This is the same sort of limitation we saw with SimCity and it’s likely this is why we have lots separated by loading screens today. The neighborhoods would have acted as a social space with around 4 lots for 4 players… which brings me to the next image.

(Warning: Incoming data dump)

 

Users 1 through 4 are mentioned here, implying that would have been the limit of players in any particular instance. SendServerFPS and SendClock is also of particular interest for their implication of needing to sync. You can also see SendChatMessage here.

 

Numerous references to chat functionality, as seen in the Olympus concept video. “generalchat” is also present which was a tab in the concept chat window.

 

“kLoginStatusClientMustPatchOnline” – this appears to be a condition where you must download updates before you can connect to the game. A situation common with multiplayer games.

Also worth noting is kLoginStatusUserIsBanned – the question is what would they be banned from? The gameplay server? It’s not the gallery because as you can see, there’s a separate flag for that – “kLoginStatusUserGalleryBanned”

Worth noting: SIM_SERVER_RESPONSE_FAILED, SG_CONNECTION_STATUS_LOGINRESPONSE, and SIM_REL_HANDSHAKE_UPDATE.
The relationship handshake is particularly interesting because this is common terminology with networking. A handshake is a sort of confirmation of a new status (i.e. of player 1’s sim moving in with player 2’s sim which we see in an olympus concept video)

 

Some extra records that may or may not be related to the multiplayer functionality.
FRIENDSIMHOME, ConnectedNeighborhoodLot  and CASConnectionTimeoutMS are worth noting. The latter implies there is a timeout in milliseconds for CAS. This is something you’d typically see if a server connection was required, which we know CAS does not.

UPDATE:

Methods for getting relationships/joiningg other players in one household (as seen in Olympus concept video)

So, where’s that leave us? Well, you can see it for yourself. You’re using Olympus (or a much more tolerable descendant of it) everytime you load up The Sims 4. Sims 4 was going to be online. Then it wasn’t. Perhaps modders should be thankful as it may have led to our newly-found flexibility, or maybe we should be cursing it for the stock limitations it brought with it. I’ll leave that up to the community.

P.S. This existed and I know it exists in some form today. Guru’s, how about dropping a community devkit? Just a little one?