Pre-Alpha hype thread

Great progress! Lovely to watch it come together bit by bit. I understand it will be a very long time till its done but its nice to see things gradually moving along.
 
elesto: This is a picture of The Sims Online Pre-Alpha, given to paid EA testers and Maxis programmers in May 2002. i.e. it is not a picture of Project Dollhouse. But yes, I agree that we are moving along at a faster pace than ever before.

If your client crashes whenever you try to open it after messing around in the lot, just delete UserData/Houses/nonetworkhouse.dat.
 
elesto: This is a picture of The Sims Online Pre-Alpha, given to paid EA testers and Maxis programmers in May 2002. i.e. it is not a picture of Project Dollhouse. But yes, I agree that we are moving along at a faster pace than ever before.

If your client crashes whenever you try to open it after messing around in the lot, just delete UserData/Houses/nonetworkhouse.dat.
How can we get the pre-alpha? :(
 
Like I already told Fatbag, we need to have someone write a shader for the Pre-Alpha hood. The colors are so much better, sans the fact that there is no terrain blending.
 
I have told Afr0 and aidancheddar that I got the simulation working, but not at the correct speed. I will copy and paste what I told aidancheddar.

After experimenting with cTSOSimulator::ClientIdle() (base+0x1ECFC in TSOSimulatorClientD.dll), basically the situation looks like dword [cTSOSimulator+0xfc] controls the number of simulation ticks per second. It should be something like 0x10. If you put in a huge value (0x00FFFFFF), then the simulation goes fast, and, if you use the cheat "sim_speed 1", it will slow down the animation, yet the NPCs will animate with very low sampling rate. The problem is that there's a count-up timer in dword [cTSOSimulator+0xcc]. When this timer reaches the value in dword [cTSOSimulator+0xfc], the simulation stops.

So, this is just an educated guess, but it sounds like sim_speed controls the speed at which ClientIdle() is called per second (the game is already calling ClientIdle several times per second without the simulator running even before you change anything)—either that, or the number of ticks per second that one call to ClientIdle simulates. But what we actually want to change is the code calling ClientIdle, because it sounds like the code is supposed to do something when the timer reaches the end (I'm guessing what it's supposed to do is wait a certain amount of time) and reset the timer, but it's currently not doing it.

So I hooked ClientIdle() so that it would increment an integer held in one of 128 bins, and at 5 second intervals (as measured by QueryPerformanceCounter()), switch to the next bin. This showed that, regardless of sim_speed, ClientIdle() is called between 400 and 500 times per second (on my computer) when the game window is in focus, and exactly 10 times per second when the game window is not in focus. Also, regardless of sim_speed, each call to ClientIdle() causes the timer to advance by 60 if the timer has not yet reached the end. Another important note is that +0xcc is actually set to the second dword in the uncompressed version of defaulthouse.dat (which you can decompress using farextract).

So my refined guess is that +0xcc is the tick counter (which gets saved in the house data), and +0xfc controls how high the next several calls to ClientIdle() are allowed to advance the tick counter before stopping the simulation; and the game is supposed to raise +0xfc by a certain amount (the time slice in ticks), outside of ClientIdle(), once the correct amount of time (the time slice in seconds) has passed.
 
Last edited:
Back
Top