/OpenTS2

Open source re-implementation of The Sims 2 in Unity

Primary LanguageC#Mozilla Public License 2.0MPL-2.0

OpenTS2

OpenTS2 is an Open-Source Reimplementation of The Sims 2, using the Unity game engine. Also aims to provide a number of modular libraries for working with TS2 formats in a C# environment.

Progress

Currently a basic main menu with a neighborhood chooser is implemented. Neighborhood info can be previewed and a basic neighborhood view can be accessed. image

Acknowledgements

Similar Projects

  • FreeSO - Open Source reimplementation of The Sims Online using C# and Monogame. OpenTS2 borrows a lot of code and structure from this project.
  • Las Marionetas - Similar project, aiming to reimplement The Sims 2 by reverse engineering its binary code into C/C++ source code.
  • SimUnity2 - Earlier attempt at a TS2 reimplementation in the Unity engine. Abandoned, succeeded by this project.
  • OpenTPW - Open Source reimplementation of Sim Theme Park / Theme Park World.
  • OpenRCT2 - Open Source reimplementation of Rollercoaster Tycoon 2.

License

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

Development

Prerequisites

  • Unity 2020.3.32f1 - Can be found under "Unity 2020.x", you could also download the Unity Hub and install from there. Unity version is subject to change, please keep an eye on this!
  • Visual Studio 2019
  • A copy of The Sims 2 Ultimate Collection

Setup

  1. You need to have a "config.json" file in the root folder that provides paths to your Sims 2 UC installation and user directories. Copy the "config.example.json" file and rename it to "config.json" to start off, and type in your own paths.
  2. In Unity, make sure Edit > Preferences > External Tools > External Script Editor is set to Visual Studio. By default it opens files separately as opposed to in a solution.

Project Structure

We follow the layout of a normal Unity project except:

  • Assets/Scripts/OpenTS2 - Contains the bulk of the C# code that deals with TS2 formats and files.
  • Assets/Tests/OpenTS2/ - Unit tests following the same directory structure as the Scripts folder.
  • Assets/Scenes/Test - Tests but more at the integration level involving Unity scenes.
    • Assets/Scripts/OpenTS2/Engine/Tests - Controller scripts for the above tests.

Testing

We currently use the Unity Test Runner for unit testing code. These tests can be run inside of unity through the test runner tab or if you use Rider as your C# editor, inside of it.