Hello again! It’s been a while since our last post, and a lot has changed. First of all, we have completely ditched Bass.NET for a custom solution using only Monogame (like the rest of our audio) and a decoding library called Mp3Sharp. This lets us play mp3 music through the same channels as our sound effects, meaning, you guessed it, speakers ingame (and robot job) can now play game music! No longer are you stuck dancing to silence.
Last month, the simulator underwent one of the largest and most important changes it’s faced recently – the addition of Permissions and checking them.
But of course, that’s not all. Alongside many quality of life changes, such as the property list and two person object interaction fixes, we’ve also fully implemented sim budgets in a way that will transfer nicely to the global server.
TSO specific game features have always been a priority, since they have not been replicated anywhere else. One such feature, “plugins/EODs”, allows an object to display an interface on the sim’s local machine, and allows it to connect to an “EOD server”, hosted within the object in question. The biggest TSO objects, signs, the nightclub job and pizza, use this functionality extensively to provide interfaces for gameplay simply not feasible within SimAntics alone. The challenge was to implement this “server in a server” system in a way that could easily be extended for all ~20 plugins in the game. As of a few days ago, we were successful!
Signs and the Dance Floor plugin, but that’s not all…
However, implementing these three does not mean an easy ride for the remaining ones! Each EOD has a custom server which can be complicated (it especially was for pizza! 8 different simantics events, and ~7 freeso ones) and requires a backing implementation for its UI on the live mode panel. Most of the work is done by the UIScripts, however all functionality has to be implemented by hand… unlike SimAntics, where the simulator drives the object functionality from the game scripts!
Hello folks, it’s been a while since I posted an update. A number of things have happened since the last post, so I’ll go over them quite quickly.
Firstly, a lot of work has been put into our resource editing tool, Volcanic. It is now possible to make, test and debug new objects entirely from scratch within FreeSO! This is the culmination of 6 months work; you are now able to fully modify and create most resource types that TSO uses.
Many object interactions have been fixed – specifically the food counters, beds, campfire and bubble blower. There are a lot of small changes, but the gist of it is that now there are very few objects that do not work correctly. The only remaining main SimAntics VM features are permissions, budget, and the “plugins” system that drove things like “Pizza” and the sign posts. After these, we can get started on the MMO server.
…and of course (due to popular demand), grass and other terrain types are now visible. Here are some screenshots of objects users created with Volcanic as part of its user evaluation, grass included:
We also have a new text logo! This was designed with guidance from some of the members of the community, and resembles more of a modern sims feel than an old one. This was really just to make it go with the icon I already created.
You may have noticed that the forums are currently down. Don’t worry, we haven’t gone anywhere! They should be back up soon, but while you’re waiting here’s a little teaser for what I’ve been working on. 😉
For all you anti-forums folk, a lot has changed since the last update. The change suit primitive now works correctly, TV sounds are half working, and most importantly the game can now serialize and deserialize entire game states, avoiding the huge wait times people were seeing when connecting to servers.
Chat bubbles and chat history have been added, a ton of bugs have been fixed, and work has begun on a full Independent Development Environment for SimAntics to let users create their own objects! (and us modify existing ones 😉 ) There will be more on this soon, once it’s in a stable state.
Rather interestingly, a Brazilian community has recently started developing for the game, and they’re dedicated enough to have already translated parts of the game with the rather shoddy multilingual string support! Full translation of all objects is a little while away though (the IDE will provide this), and sprite font text rendering makes it rather hard to translate into certain languages. We’ll be working on this in the coming months, stay tuned!
To better support the objects and environments present in the original game, we had to switch routing algorithm to one which supported more accurate routing without incurring a huge cost. This combination of a rectangular cover algorithm and A* is performant, fit for purpose and seems to be quite similar to the way the original game does things.
As well as this, a large number of related changes have been made to routing, as well as smaller changes to SimAntics which fix objects such as the Whacketball set, computers and job carpool. Things should generally look smoother and work a little better, but I encourage users to look for regressions and bugs in the new code that I haven’t found on my own!
Hey all, the forums are currently down temporarily. Should be back up soon, it’s just the same database problem we had during the first playtest. You can keep track of all immediate developments on GitHub and the build bot primarily, but the new routing is nearing completion, at which point I’ll write a full blog about it. We’ll probably do a similar thing all the way to release, with detailed blog posts about all the important merges into the master branch detailing what specifically has been achieved, usually accompanied by a youtube video.
The new routing is looking phenomenal, but you might need a comparison video to show just how much better. This will come in a few days, directly after the merge. The roadmap is available on the forums, which I’m still going to be following semi-strictly, so next we’ll be clearing up the suit primitive and handling. Hope you guys are OK with barbie doll style naked sims, since the censor effect will not be immediately available. 😉
A few members of the community have been running play tests pretty frequently, but were coming up against an issue where the server would crash at unexpected moments because of certain interactions or objects. This was causing problems for users attempting to build houses together, so starting now in the release builds all exceptions in SimAntics threads will be caught, and objects that throw them will be reset or removed depending on the circumstance.
We also now have a new client, with the FreeSO logo. This client has a completely changed namespace setup and now builds to “FreeSO.exe”, so make sure to start the correct version when testing!
The latest version enables buy/build online, and by popular request, adds the most important feature by far… “Go Here”! To get these working I had to implement a special variant of object that I’ve dubbed a “Ghost Object”, which only runs its init function and deliberately sandboxes itself away from all other objects, to prevent causing desyncs with the server when these objects are controlled in real time on client only by, for example, the mouse cursor.
Buy mode has also now be changed to act more like the original game. When picking up an object on the lot, you actually pick up a duplicate of it as a “ghost object” which only exists on your side. Changes are only confirmed when you finalize the placement.
The video above is of a play test Zack Casey ran earlier today, where he and other users collaborated on and interacted together on an initially blank lot. Hope you enjoy!