LazyDuchess / OpenTS2

Open source re-implementation of The Sims 2 in Unity
Mozilla Public License 2.0
221 stars 17 forks source link

About the project and TS3 #1

Closed mcpiroman closed 1 year ago

mcpiroman commented 1 year ago

Hi, My story is that, after playing a bit with and finally realizing the architecture of Sims 3, this is, most of the actual logic is in .NET libraries and the core native .exe is 'just' an engine which seems to contain little gameplay specific code, I thought it could be relatively easy to recreate the engine part, while using most of the original .NET code and other assets, thus resolving all the long standing issues it has, most notably performance once. (Btw one of them looks like a JIT of the Mono framework they embed to run .NET going crazy for a first half an hour, as I'd expect Mono to be very unoptimized back then. I though about updating it in-place, but doing so with optimized statically linked lib is tough.)

Now, I also found this project of yours and I'm interested to see if what you're trying to achieve here isn't close to the above? I don't have TS2 but I would assume it has similar design as well as many solutions, like file formats etc. And if so, maybe that single engine could serve for TS3 as well? There might be some legal issues though, as unlike TS2, TS3 is still being officially sold. On the other hand, AFAIK at least in US, such an engine replacement can be viewed as just an big mod.

Anyway, I'd be looking forward into such a project and be happy to contribute in case I find some time. I'm not sure about using Unity though due to their latest political moves. Godot may also be an option because AFAIK it too runs .net natively.

Cheers.

LazyDuchess commented 1 year ago

Hi!

That is correct, TS3 does mostly run on Mono. There is a native Sims3Common.dll with debug symbols included in the Create a World tool if you're interested in looking into it and how the engine kind of works.

TS2 is pretty different, though. The engine is based off of the TS1/TSO engine. Most of the game's logic is C++ with a SimAntics (scripting engine) VM running mostly just simulation specific code such as interactions with objects. File formats are also pretty different, TS3 was made by a mostly completely different team.

I think it would be doable to get TS3's .net to interact with a new engine but it'd still be a pretty big task and I don't really know the game as well as I do TS2, file formats are still a whole thing. I'm more interested in doing it for TS2.

I don't tend to concern myself much with politics when coding so no idea what's going on with that. In any case what's been programmed so far should be pretty engine agnostic.

mcpiroman commented 1 year ago

OK, so TS3 is different and a thing for another project, noted. Still, just an engine for a TS3 (or actually, the native parts, which I hope there is little of) seems lighter than recreating the whole logic of the game, so good luck with that here. And long term it might even be quite worthwhile for the community as compared to the present trend for mods to endlessly patch the black box. But it's also very likely I'm underestimating things as I'm not familiar with the internals enough.

I'm rather not gonna start such a project myself, partly because I already have similar one (from which I can tell that if you want to reimplement the game accurately, it can be time consuming to do all the research and measurements of the original).

As to Unity, there are some distressing rumors/predictions, notably https://twitter.com/sh4na/status/1547220546458361859 . I have not tracked it down further as I don't use Unity for years anyway, but you may want to check it out.

LazyDuchess commented 1 year ago

Yeah TS3 as a whole is a lot more open and with TS2 struggling more and more every year with newer computers I really do think it needs it way more, in my opinion of course :)

I would probably not have started the project if it wasn't for FreeSO, a successful reimplementation of TSO which really paves the way for something like this to happen. A lot of the work put into it directly benefits this project.

Ty for letting me know about the whole Unity thing, I'll keep it in mind. I've been wanting to work on my own engine in something like MonoGame/OpenTK for a while anyways so this might finally do it :p