Pictured is Edith, the development tool for The Sims long aspired since the game’s release in 2000 and *accidentally* distributed as a DLL in the final version of EA-Land. I reverse engineered the controlling object’s interface (cEdithEditor) about a week after producing the tool that dumps the MSVC RTTI. Since Edith is built to work alongside an ingame lot, it requires access to the game’s cTSOFramework and the simulation state; these and other resources in the game environment can only be accessed if Edith is launched through a specially patched version of the game exe, rather than through a 2kB standalone injector I initially had plans for.
So after patching the exe, in place of the EAL splash screen and game window you’re presented with Edith. My only tool of the trade was OllyDbg… and a plugin I wrote for it, to label all of the MFC80.dll functions using its corresponding Visual Studio PDB file. The patch will likely be revised multiple times as the need arises. The patch can be downloaded here and applied to the final version of EA-Land (2.1667.5.0) using this tool.
As the developers programmed every object in the game with the sole use of this tool, Edith is the single most useful resource for helping us learn SimAntics. Edith was not officially released outside of Maxis but was demonstrated in short videos by Don Hopkins and documented for a college game design course. These resources will help us grasp the language much, much quicker.
So what else has been accomplished in the half year since the last status update?
- Niotso switched to git and is now hosted on Github. Binaries and third-party libraries were purged from the history and are instead now uploaded to http://niotso.org/pub/. The Compile Guide has been revised with the necessary steps to obtain the files from their distinct locations.
- Niotso Server was set up with a basic Linux daemon, and a mock RFC has been set up that will one day describe the protocol for Alpha and above.
- The design for the Translate Tool has been conceived, but currently we’ve been debating whether it should be done with GTK+, Qt, wxWidgets, phoenix, Python, or a combination of one of the above and the Windows API.
- The Current Tasks page has been set up. This page describes in detail the toil that must be offered to complete each task relevant to the current development phase.
My time for this project has without a doubt become shy. But the time-invariantly welcoming nature of this project allows me to say the sometimes dubious message: I’m still working.