This page is intended for developers only.

Getting started


Got you there, didn't I? Well, this page serves for gathering hints and tips, hopefully culminating in a FAQ so that starting modders have some hand holding to take a look at mods. A request for some of the more daring coders to share their experiences and tips.

Of course discussion threads can be started off this page, and pages added as necessary.

To work on the project you'll need Visual Studio 2010 Express or later. This is a free download from Microsoft.You will also need to set it up exactly as detailed in the simswiki link below.
You can also use MonoDevelop (Xamarin Studio), which is also free. It has the added benefit of not needing an external tool like ILSpy to peak into the Sims 3 assemblies (the .dll files) that you extracted and unprotected as mentioned below.

The latest sources of the mods can be found on our official Github repository at https://github.com/Chain-Reaction/NRaas. You can either grab these via Github (see "How to contribute to the project" below for instructions) or you can click here to grab them as a zip. If you are using Visual Studio, you will want to put all folders into your Documents \ Visual Studio <version> \ Projects folder.

To compile a module for one of the main mods, you will need the DLL of that mod in your Documents \ Visual Studio <version> \ Projects \ <mod name> \ bin folder. You can either compile the mod from the sources or grab it with S3PE from the mod packages here. You can obviously just add the reference yourself but Twallan's project files are setup to reference the DLL's from those locations.

If you have everything in the right place, expanding the References tab on the right side of Visual Studio should show all the core DLL's (and the DLL of a main mod if working on a module) with no exclamation point icon to the left of it.

A few notes:

You'll need unprotected .dll's of the game's core files which are already provided for you at the 1.67 patch level in the source (Sims 3 \ compiler folder). The standard game .dll's will not work with most of these mods as they reference protected methods in the core. However, due to a glitch in Mono it will accept that you link against an unprotected .dll and then cheerfully work with the real protected one when the game is ran. This is essential, the compiler will spam you silly with errors if you don't get that right.

Useful links:
http://simswiki.info/wiki.php?title=Sims_3:Creating_a_game_compatible_Visual_Studio_project
http://modthesims.info/wiki.php?title=Tutorials:TS3_GeneralModding
http://www.tutorialspoint.com/csharp/csharp_overview.htm
http://sims.pitchoon.org/monodevelop/XamarinTuto.html


How to contribute to the project


There are numerous things you could do to help the project. If you have some free time, please go through the "issues" or "the list" page for each mod. Anything that doesn't currently have a username next to it is up for grabs. However, even something with a username next to it may require your assistance and you can make a thread in this section about it. Once you find something that peaks your interest that you think you can tackle, edit the page and add your username next to it with 4 tides (~). Of course you can contribute anything not on these pages too.

Please always make sure you have the latest sources before you commit anything to the project. Do not provide a mod here that is not built from the latest source. Also when building your package, please make sure you start with the latest available here and just replace the DLL for the sake of translations.

Once you have code that is working and releasable to users to test further you can choose to commit the the code to Github or provide a separate source zip and someone will gladly commit it to Github on your behalf. Please note you will have grab the latest source from the zip above and using a diff program like WinMerge, merge it with yours manually before compiling the mod if you go this route.

To commit it yourself, you will first need a Github account (http://github.com) (note the e-mail you use to signup will be publicly visible) and to download the Github client for Windows (offered after you sign up). Install the client and enter your username, email and password on the initial screen. Once you have done this, we recommend you fork the project. You can do this using the Fork button at the top of the source page and we will accept pull requests. This allows you to work on the project entirely independent from the main one and you can let us know when you are ready to merge by issuing a pull request on this page.

The newer versions of the GitHub client for Windows automatically clone any repositories you have forked so you no longer have to use the command line. Once opening the client, it should automatically begin syncing the code to your Github folder. To sync your local changes with our master repository, just click the sync button at the top of the client.

When it's finished, you can copy the merged source back to your Visual Studio projects folder and compile it. Note you will have to manually resolve any conflicts yourself with WinMerge. Upload the mod here (please prefix the zip with a two letter representation of your username and an underscore after) and issue a pull request for your work to be merged with the main source.

However you choose to do so, always provide your source. Should you require assistance, please let us know.


Important notes about translations

Should your change to a mod require new translations be added, it's important you follow these steps carefully.

To start: If your new version is in testing, please do not update the English translation on the site. Once it has gone stable is the time to do this. It is also very important that after you have added your new key's to the English localization page for the mod here that you update all other languages! You should also update the documentation for the mod during this time if needed.

First you should download Packer. Grab the latest version of the mod you are editing and open it up in it. Now find the entry that says "Strings UnhashedKeys" and click it. At the bottom, paste the new keys you are adding with the STR also being the same as the KEY (follow the existing entries if that confuses you). Once you have done this, you can export the English STBL to a text file, paste your new KEY's and their STR values in and save. Finally import the same text file back into the mod.

If you have done everything correctly, packer should automatically add the new keys in their English form to all other languages and you are done.

Problems compiling StoryProgression

It seems Twallan left some incomplete profiling code in the source for StoryProgression that prevents it from compiling and also induces lag when running in debug mode. These issues are fixed in the latest sources on our Github so grab those.