The Sims 3 Open World - Put a Bow on It
The Living World Gameplay Prototype created during early Sims 3 development was notable in that it unified several smaller prototypes and other proposed systems into a full featured, fully playable version of a potential Sims 3. Traditionally, I wouldn't spend time actually building out the entire experience, as it was mostly redundant given that each individual system would be minimally altered and all of the heavy lifting would be "wasted" integration work. In this case though, there were several reasons that it made sense...
First and most importantly, The Sims is very much a "whole is greater than the sum of its parts" sorta jam. Most of the individual systems in a Sims experience are relatively simple. They rarely do all that much on their own. The magic of The Sims lies in the combinatorics of those simple, understandable systems bouncing off of each other, often in unpredictable or unexpected ways. This meant that even though a new system might work in isolation, we really needed to integrate them into a "whole" in order to be certain that the individual systems were serving their respective purposes and that that whole was exceeding the sum.
Second and very geekily, I have an unhealthy affection for C# (an efficient but forgiving programming language that's been around for decades and is particularly easy to work with). All of our prototypes were created in C#, and I felt that as we grew the team, C# would be both a skill that people were likely to already have and also a skill that would be transferrable and hence attractive to prospective engineers, as opposed to a proprietary language as was used for Sims 1 and Sims 2 that was used nowhere else.
I also had originally wanted to formally open the entire game to community modding. The scripting used for gameplay previously was extra very entirely "internal". It was full of idiosyncrasies, was heavily dependent on tribal knowledge, and required a toolchain that was never built to be used outside of Maxis (that scripting system was called Edith for old school Sims connoisseurs). I felt that C# would be far more practical for modding. There's a ton of C# code out there to learn/borrow from, and we could design and build a proper "Sims SDK" that made things clean and was built for that specific purpose.
Implementing the core gameplay of the game with the same language intended for modding meant that the theoretical upper limit of what we could allow players to create was everything that the team itself had made. That also meant that a unified prototype, implemented in C# as the individual prototypes had been, would also help prove out the feasibility and scalability of using the language for the real game. It also meant that ostensibly, the work done on the prototype could potentially be used in the production game. That said, using prototype code as production code is kinda sorta always a bad idea, and unfortunately more than one prototype system ended up serving as the basis of the real shipping version of said system.
First and most importantly, The Sims is very much a "whole is greater than the sum of its parts" sorta jam. Most of the individual systems in a Sims experience are relatively simple. They rarely do all that much on their own. The magic of The Sims lies in the combinatorics of those simple, understandable systems bouncing off of each other, often in unpredictable or unexpected ways. This meant that even though a new system might work in isolation, we really needed to integrate them into a "whole" in order to be certain that the individual systems were serving their respective purposes and that that whole was exceeding the sum.
Second and very geekily, I have an unhealthy affection for C# (an efficient but forgiving programming language that's been around for decades and is particularly easy to work with). All of our prototypes were created in C#, and I felt that as we grew the team, C# would be both a skill that people were likely to already have and also a skill that would be transferrable and hence attractive to prospective engineers, as opposed to a proprietary language as was used for Sims 1 and Sims 2 that was used nowhere else.
I also had originally wanted to formally open the entire game to community modding. The scripting used for gameplay previously was extra very entirely "internal". It was full of idiosyncrasies, was heavily dependent on tribal knowledge, and required a toolchain that was never built to be used outside of Maxis (that scripting system was called Edith for old school Sims connoisseurs). I felt that C# would be far more practical for modding. There's a ton of C# code out there to learn/borrow from, and we could design and build a proper "Sims SDK" that made things clean and was built for that specific purpose.
Implementing the core gameplay of the game with the same language intended for modding meant that the theoretical upper limit of what we could allow players to create was everything that the team itself had made. That also meant that a unified prototype, implemented in C# as the individual prototypes had been, would also help prove out the feasibility and scalability of using the language for the real game. It also meant that ostensibly, the work done on the prototype could potentially be used in the production game. That said, using prototype code as production code is kinda sorta always a bad idea, and unfortunately more than one prototype system ended up serving as the basis of the real shipping version of said system.
Building a larger unified prototype also allowed us to integrate designs that were impractical to prototype in isolation. Some of those systems were quite large in impact even though the mechanisms themselves were very simple.
This image shows the prototype Create-A-Sim interface showing an early incarnation of personality traits as well as the concept of "favorites" which was later cut (some of the concepts were considered/implemented as part of the simulation although they were never surfaced to the player in CAS). Personality traits were one of our favorite new designs, and they were pretty central to player expression and to the new simulation. But they didn't do anything at all by themselves without the rest of the game to modulate. Moreover, many of the other individual systems were intended to leverage those traits heavily. This unified prototype was the perfect testing ground for those sorts of features. |
Along similar lines, we needed money to matter in order for players to have any motivation to make hard choices and to drive the "conflicts" that are often critical to interesting emergence.
To that end, even though buying furniture and whatnot wasn't in itself something that needed prototyping, we needed the buy catalog to "close the loop" on other systems. On the other hand, build mode was not part of this prototype. Although adding pathing could have made even the 2D layout matter, the prototype was focused on gameplay, and outside of hardcore min/maxing efficiency, build mode serves a largely cosmetic role. |