mirror of
https://github.com/LazyDuchess/OpenTS2.git
synced 2025-01-23 08:41:47 -05:00
Open source re-implementation of The Sims 2 in Unity
c9010e20ff
Previously we were using an ad-hoc system where we were rotating meshes to -90 on the x-axis and applying a -1 scale to them. This worked to show them properly but meant that because our coordinate system was flipped all rotations from the game had to be inverted from a right-hand system to a left-hand system. This change introduces a simRotations object that all the meshes sit under that takes raw rotations from the game. The parent game object then converts these all at once into the unity space. All rotations from the game should now be applied to this simRotations object, we should likely move this ScenegraphResourceAsset generated game object into a helper MonoBehavior to make this easier to use. |
||
---|---|---|
.github/workflows | ||
Assets | ||
Packages | ||
ProjectSettings | ||
TestAssets | ||
.gitattributes | ||
.gitignore | ||
.vsconfig | ||
config.example.json | ||
LICENSE.md | ||
packages.config | ||
README.md |
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.
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
- 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.
- 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/Scripts/OpenTS2/Engine
- Unity specific code tends to live in here to keep it separate from the more language-independent code in the directory.Assets/Tests/OpenTS2/
- Unit tests following the same directory structure as theScripts
folder.
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.