I hope this project works out well.

bigl2369

Member
I miss TSO and it would be so excellent if someone was able to write a functional engine for it again. It would be so cool if you guys could get it back online with all of its features working again.
 
Indeed!, not to mention the ones Maxis never finished that remains only working in Sims 1 like the Shovel tool, and well...Bills? who wants to pay Bill's though? lol
 
A bunch of features in the game: objects, skills, needs, interaction between sims, build mode, buy mode, jobs, chat, time, account, city view.

Could we get something describing how those features work now and when they're thought to be done? Let me ask some questions.

Objects: Can you interact with them and expect the animation and character position to be good? When using skill or money objects do they reward skill or money?

Skills: Do skills reward emotes? Do they effect how much money you make from money objects?

Needs: Do these deteriorate and replenish as they should?

Interaction between sims: Do they work? Does move in or kick out work?

Build mode: Can you build walls, place tile, doors, windows, paint, trees doors? Can you delete your building?

Buy mode: Can you buy objects, place them, and move them?

Jobs: Can you call up and go to work? Does work commence? Can the car that arrives pick you up?

Chat: Can you enter text and have it appear in bubbles. Can you private message?

Time: Does time pass?

Account: Can you create an account, a sim, and login and advance with them?

City view: Can you enter houses or buy a lot? Can you look at the most popular for each category?
 
I'll quickly address most of these:

Objects: The Sims and The Sims Online use a special VM that runs object logic from standalone files. Right now our implementation of this VM is mostly accurate, with a few problems with multitile objects and a lot of problems with routing. Objects like the mechanical bull, parrot and food chains' logic run almost perfectly.

Skills: Skills are also driven by the VM. The money objects have built in logic to help calculate the payout based on the sim using it's skill state.

Needs: Needs currently do not deteriorate, however object authored changes to needs are currently working.

Interaction between sims: Working ok for around half of interactions, some just instantly thread suicide though. Can't perform kick out or move in as the lot is currently offline only and no TSO specific logic has yet been coded.

Build Mode: Not yet! The game currently reads the job lots from blueprint files included with the game.

Buy mode: Not yet! Same as above - objects are also placed by these blueprints.

Jobs: Jobs are a special type of lot with some extra logic to change the gameplay. The objects used by jobs mostly work - however the actual jobs do not yet function. You can't leave the lot because it's an offline debug lot.

Chat: Ingame chat does not work as the lot is currently 1 player offline. Instant messaging is being worked on.

Time: Time passes in the Lot Debug Mode, as the VM relies on it.

Account: You can create a sim, login but the lot gameplay has not been extended to multiplayer yet.

City View: Right now the city view is just a simple renderer with sample data.
 
So the game is not currently multiplayer. After you login and create a sim it ports you to a lot debug mode. Or is it different than this?

Thanks for going into detail in reference to my breakdown of the game. But you didn't comment on how long you thought it would take.
 
Right now there is a button on the login screen to enter the Lot Debug Mode. This is just a test of the simulator working in offline mode (until the simulator is working completely correctly). The future extension to multiplayer will sync your simulator to one on a server which multiple users can send interaction requests to.

Me and Darren are the only people who have worked on the simulation & world rendering, and neither of us are currently contributing (lack of interest for me). We can't have an estimate without someone working on it unfortunately...
 
So multiplayer will be a simulation. Don't most games work by letting everyone play on the server instead of syncing to it?

Oh so this project is never going to be done...
 
The server is still in development. Without the simulation and that completed, there isn't much in the way of online gameplay.
Oh so this project is never going to be done...
To be fair, Will Wright said the same thing about the game - it was never going to be fully finished. There is always room for improvement.

At the moment, I'm still studying C#, the programming language the PD was primarily written in. Once that's done, I'll be learning XNA/MonoGame, the game development tools and libraries, MonoGame being the open source reimplementation of XNA, and will be able get the game closer to at least a playable stage.
 
Me and Aidan are currently the only two people working on PD.
Simulation stuff is on my TODO list, namely adding local and global variables to HIT from SimAntics.
But I'm also working on the IM and improving network stability in general.
There's only so much I can do, as I'm only one person...
Aidan is still learning, so I think it's fair to say that his development capacity is still not 100%. But even >100% is better than nothing!
 
By simulation I mean that we will be running the objects through a simulator, the same way the original game did. Other games sync changing data in realtime (all variables individually), however due to the nature of TS1/TSO lots it is not possible to stream all of the changes at a reasonable rate. The VMs will be synced once upon connection, and then a stream of inputs will keep the client VMs up to date with the most recent happenings with minimal data transfer.

Never is not a good estimate, since I'll probably return to working on it soon.
 
Aidan is still learning, so I think it's fair to say that his development capacity is still not 100%. But even >100% is better than nothing!
I managed to pick up the pace a little more by switching to my tablet, which, after several firmware upgrades, finally stopped with the random reboots.
 
I think you need to focus on whats important and that's reverting the game back to the way it was when it was online and there were paying customers. If you can't do that I honestly think you should scrap the project.

Who informed you that TSO was using their data streams to "sync simulations"? Where did you get the idea that TSO players were not playing on the same level? I'm no expert on multiplayer gaming or anything but I do believe that players all play on the same level.
 
Last edited:
I think you need to focus on whats important and that's reverting the game back to the way it was when it was online and there were paying customers. If you can't do that I honestly think you should scrap the project.
I think we can all agree that that already is the primary goal of the project, and that we *are* making significant progress towards it.

But even if you, or somebody else, or the whole world, thinks we should scrap the project, that doesn't mean we exactly have to.

Personally, I like working on TSO because it's fulfilling. And I believe it's that way for the other people on the Project Dollhouse team too. At the end of the day, we need goals to work on.

Who informed you that TSO was using their data streams to "sync simulations"?

I'll assume that you meant: "Who informed you that TSO was using only SimAntics data to sync simulations?"

Nobody has informed us, but it's a very reasonable guess. In most online games today, you can control the location of your character and the rotation of your gun's aim with fine precision, and these variables are instantly updated on the other players' computers continuously during gameplay (many times per second). But in The Sims Online, there is not even one variable which the player has very fine precision over (e.g. the player can only command a sim to move to one of a countable number of square tiles, and there are only 4 character rotations), and even if the player's actions sometimes take several seconds to be updated on the other players' computers every once in while, that's considered acceptable for this game; it will not lead to unfairness (or cheapness) of gameplay, and it will probably not bother the players. For these two reasons, if we decide to synchronize players together by only communicating the players' input and random variables used (or equivalently, the entire SimAntics state and its changed variables), we do not have to worry about the problem of desynchronization (also called the "butterfly effect", e.g. if you have ever played Super Smash Bros N64 online with someone else using Kaillera with PJ64K, you are familiar with this problem) because we can afford to first of all, submit all the simulation data to and from the cityserver very quickly (since it doesn't amount to much), and second, have the client stall the game (do not progress the simulation) until it has received 5-seconds-old-or-younger simulation data from the server.

The function in The Sims Online that performs as many SimAntics simulation ticks as necessary to become up-to-date with a given time is located is called "ClientIdle" (according to a debugging string in TSO Pre-Alpha), and is located at base+0x1ecfc in TSOSimulatorClientD.dll in Pre-Alpha. (More info in this thread.) It's a pretty good guess that the given time is provided by the cityserver whenever the cityserver provides new simulation data to the client.

Hope that helps. Cheers.
 
Last edited:
I think you need to focus on whats important and that's reverting the game back to the way it was when it was online and there were paying customers. If you can't do that I honestly think you should scrap the project.
What's important is bringing back The Sims Online. o_O We have two options: emulate the servers, or recreate the game from scratch. The former is an uphill battle requires tricking an MMO to think it's back online on the official servers. This is like riding a horse blindfolded. The latter, recreate it from scratch easier, in contrast to the former, is more efficient, and better in the long term, such as easier cross-platform support, or adding LAN.

Once the latter is ready, if you want to revert it back to what it was, be my guest.
 
Fatbag I disagree with your comparison to online FPS. I do not believe that you are seeing a simulation of the server but rather that you are playing on it.

I also do not think that the data streams have been set to only every few seconds. I think the people on this project have very strange misconceptions about how multiplayer gaming works. I don't think you ever change the speed of data streams.
 
I also do not think that the data streams have been set to only every few seconds. I think the people on this project have very strange misconceptions about how multiplayer gaming works. I don't think you ever change the speed of data streams.
Then tell us how a MMOs should be handled, between a server and a client.
 
We should scrap the project because we're too busy implementing crucial systems offline instead of hackily creating them networked to boot using a haphazard dumping ground of a protocol we just add shit to? Stop the presses guys, cancel every online game. We've been doing it wrong for the past 20 years, obviously. TSO was built directly off of the same engine as TS1, which afaik, was built and released with no networking! The networking was hacked in afterwards, so I'm assuming it's in the PJ64K fashion where they take an already working complicated offline system (in their case, split screen multiplayer emulated title. in ours, large simulation with threads for each and every object) and hack it to work online using some sort of input stream.

I don't see any reasonable way that the simulation can be multiplayer in the way you describe without sending a ridiculous amount of data per frame. Each object (multitile objects are even made up of more than one of these objects!) has its own data, simulation thread etc. Look into the data each object stores - please just actually TRY to understand how the game simulation works before making any assumptions about anything or trying to tell us that we're doing things wrong. http://simantics.wikidot.com/ describes most of what we have found out about the VM.

Normal multiplayers do "sync" like this too, however it is data like positions, velocity and events (gunshots, sound effects) that are synced instead of inputs, so that players individually have an instant response to their inputs. We are syncing inputs because it is not crucial to see an instant response to actions in a game like TSO, and it is simply impossible to sync all the individual data points for each object.

I don't think you ever change the speed of data streams.

Uh... what
 
Last edited:
I remember we had a big discussion about this on the old forum.
What we'll end up using will be very similar to the Q3 networking model, except we'll only be sending what has changed since the last gamestate.
Also, I'm tired of people telling us how to do this shit. If you know, be my guest and implement the networking! The code's all available on Github, nothing's stopping you from writing the rest of the damn game yourself.
 
Back
Top