[ARCHIVE] Road to Live Release

Status
Not open for further replies.

Rhys

FreeSO Developer
Staff member
Moderator
So, we're getting pretty close to the goal, so I thought I'd lay out generally where we're headed for the next while. I'll be posting updates on this thread, but you should check back on the initial post to see what is scheduled next (it might change!)

Task Queue (top first)

[CRITICAL, DONE] Refactor Routing
Right now our routing is a little bit of a mess, as you've probably gathered from the recent playtests. The main problems are:
  • Sims can walk through each other
  • Certain objects route into their own tile. Hacks are currently applied to make sure that the routing does not consider the location "impossible to reach". These positions should be reachable, as explained below.
  • Objects like chairs are meant to have smaller collision bounds than say, a counter. This is configured by a per object "Routing Footprint" that shortens the objects collision bounds by 16th tiles from each side. This means that a much more accurate routing system is required, and a grid traversing A* just won't cut it.
  • You can walk through walls, because only "room boundaries" are solid.
  • Route failure trees and a few other features that the VM expects do not currently work.
  • You can snap sims inside objects. This shouldn't be possible, the sim's collision rectangle should be checked before doing this.
The planned change is to instead generate a set of "obstacles" which are rectangles and route around them, using a combination of A* and a rectangular cover. More on this later... I'm working on it right now.

[Important, DONE] Flesh out Change Suit Primitive
Right now we only support adding and removing accessories (a little rough as well). As you can see, the primitive is actually a lot more complicated (can add entire suits from the sim's "body strings", which need to be manually defined for the template person.

upload_2015-8-7_21-32-50.png

EDIT: Global and person suits are now considered. Obviously not complete, as changes to the current outfit have to be made by special plugins (dressers, costume trunks)

[Important] Implement budget system
Right now the budget primitive does literally nothing except return true. Obviously this isn't the correct thing to do, people will need to use money to buy things. We don't know anything about this primitive, so it'll take a little investigation to get this working.

[High, DONE] Blocking dialogs over net, dialogs with special input
Right now dialogs appear for everyone, immediately return true and accept no input. This isn't always the case, obviously, and needs to be dealt with.

EDIT: done, except for the unused/unknown ones.

[Medium] Implement plugin system (for objects like pizza, signs)
Don't need to implement all the plugins, but before serializing lot state we need to find out how this is meant to work and implement the framework. (maybe even just one plugin, "signs", to get things started.

[Medium] Implement Balloon for things like relationship ++, skilling progress
Might take a little effort to get custom drawing into these (skills balloon draws custom text) but is arguably quite important for gameplay. Will also include the classic "money over head".

[Low, DONE] Chat bubbles
Shouldn't be too hard to extend the current UI panel to support more accurate looking chat bubbles, though they do need loading from outside of the content system, and some colouring system.

[CRITICAL, DONE] New network framework
This is not out of spite, I swear. What we need is something that works reliably when threaded, is simple and has an acceptable API that is both easy to use and quick to develop for. It also needs to be a lot more thread safe than the current code, which randomly locks everything, crashes a ton and has a really unusual way of sending packets (have to manually write the length?). A new network framework would help me sleep at night.

Once this is done we can quickly move though implementing more netplay features

UPDATE: Darren is working on this, the new code uses and expands on the original game's Voltron protocol. More info here: http://forum.freeso.org/threads/road-to-live-release.801/page-7#post-12629

UPDATE 2: This is pretty complete. It's the server that needs more work.


[CRITICAL, Started] Standalone simulator server
Right now we have a standalone server that runs on Linux (Charvatia) which I set up yesterday, but right now it's a little barebones and just exists to prove that it works. A future development will bring this to the level where it can run multiple simulator servers on a single server, on demand by a city server or (initially) users.

[CRITICAL, DONE] Serialize lot state
Before this we definitely want to get all of the core feature changes to the simulator out of the way. Might change before release, so lot "saves" won't be in this format for a while.

[CRITICAL, DONE] Bring back authentication/sims (in server-rebuild branch)
This is very careful work and needs to be done right. Can only be done after new network framework is working.

[CRITICAL, In Progress] City Server + Simulator Server Combo
The city server will store all of the lots (VM state + thumbnail) in a city, along with location, name and owner info. The city server will act as a "matchmaker", creating simulator instances on demand and retrieving+saving the lot state of simulators periodically and on close.

[Important] Graphics Refactor for performance
For details, see this thread: http://forum.freeso.org/threads/planned-graphics-refactor.484/
Another part of the plan is to cache sprite lists, which should prevent excessive regeneration of things like the Wall sprite list (currently causing a lot of CPU use) and the static objects buffer.

Should also move ObjectID to the same render step as everything else.

[Low] New grass drawing
See: http://forum.freeso.org/threads/planned-graphics-refactor.484/ (plan is fur shader style)

[Medium, INITIAL-DONE] Lighting
Initially rooms will have individually defined lighting, but in future we may use a deffered shading system for this. (might be hard to do with all the transparency everywhere though)
With the current implementation, rooms have an "ambient light" value which lights all objects in the room to the same degree. In future, objects and the floor should be lit by light emitting objects in a point light fashion - the problem is making it perform well.

EDIT:
[Important] Permissions
Forgot about this initially. Avatars in a lot can be either Visitors, Roommates, BuildMode Roommates or an Owner. There is a lot of other stateful information we're not tracking right now too. Mainly, we need to stop people from doing things that they are not authorised to do.
 
Last edited:
As mentioned, here's the dedicated server working on my linux vps. Got a pretty cool CPU usage on this big lot on a single core VPS.
linuxtso.png
 
Chat bubbles seem pretty simple, loading from 3 PNGs and then selecting the correct coordinates based on the sim's location (and mood?) and then producing a 9-segment sprite next to the sim, like the current system. If the sim is visible then he/she will have an arrow/point towards their head either on the top left, top centre, top right or bottom left, bottom centre or bottom right depending on the sim's location relative to the centre of the screen. if the sim is not visible, it simply draws a rounded rectangle shape selected from the image files. A string, beginning with "[" + Sim's name + "]", and then followed by a space along with the inputted chat text, is placed into the centre of the bubble. The bubble is then sized accordingly. As far as I can tell the methods to do this are already there (see the city/lot name at the top of the screen) so it should be a smooth job when you do it.

At least that's what I can make out.
 
Yes, pretty much on point with the 9 segment observation. The most complicated parts of this will be positioning the bubble so that it both does not go offscreen and does not overlap active UI panels, as well as the text wrapping though that can probably just be copied from the dialog panel. Drawing the point of the bubble going to the sim without it looking bad may be a small problem. Will also need to calculate sim screen position by their head bone position, instead of physical object position.
 
Yes, pretty much on point with the 9 segment observation. The most complicated parts of this will be positioning the bubble so that it both does not go offscreen and does not overlap active UI panels, as well as the text wrapping though that can probably just be copied from the dialog panel. Drawing the point of the bubble going to the sim without it looking bad may be a small problem. Will also need to calculate sim screen position by their head bone position, instead of physical object position.
The offscreen positioning is almost there but it needs a bit of work, like you said, with the UI panels. As far as I know text wrapping was rather strict as it was, upon observation, only able to fit a few words on each line. As for your method of finding the place to place the bubble, if a lot of bubbles were on-screen wouldn't that dramatically increase CPU usage, calculating head bone positions and rotations and selecting the correct place to put the bubble?
 
As for your method of finding the place to place the bubble, if a lot of bubbles were on-screen wouldn't that dramatically increase CPU usage, calculating head bone positions and rotations and selecting the correct place to put the bubble?
No, since we're doing it anyway for the actual animation. Computers aren't that weak either - I can't see any system setup where intelligently positioning a rectangle will incur much cpu cost.
 
No, since we're doing it anyway for the actual animation. Computers aren't that weak either - I can't see any system setup where intelligently positioning a rectangle will incur much cpu cost.
I meant Sims in their hundreds, but if you say so.
 
I meant Sims in their hundreds, but if you say so.
We are simulating literally hundreds of objects in an interpreter at less than 5% cpu usage. The chat calculations only need to be run on the client, and there won't ever be 100 sims on one lot. I think we'll be fine with a few rectangles.
 
There's a whole system behind plugins that needs to be worked out. It integrates directly into SimAntics and involves a flexible event system, like sim animations on steroids (true on complete, false on event, place into local but also seems to be false on no event here too?) but controlled from net.

The sign object seems to be the simplest use of this system, but it still needs to be thought out carefully with netplay in mind. Both the VM side and how we're going to do "EODs" in live mode.
 
There's a whole system behind plugins that needs to be worked out. It integrates directly into SimAntics and involves a flexible event system, like sim animations on steroids (true on complete, false on event, place into local but also seems to be false on no event here too?) but controlled from net.

The sign object seems to be the simplest use of this system, but it still needs to be thought out carefully with netplay in mind. Both the VM side and how we're going to do "EODs" in live mode.
The thought of this project going live is just... unbelievable.. with everything that has happened from 2008 to now is crazy.. the amount of progress the viewers of the forum and of course you Rhys ;) have done with this project is amazingly great process. I applaud everyone's hard work and dedication toward this project. I hope we will get our game back and we will all be playing this amazing game again :D Hope everything goes well :3
 
You can bet that I'll be here to help test. I am so excited and happy about the amount of progress made. Just the fact that I've been able to pet pull, chat with people online, and create houses... I never thought I'd be playing The Sims Online again in any shape or form.. I remember having the insane craving to pet pull, even wondered if someone could create a flash game of it.. but here we are :D Thank you, so much..
 
This project is going really great and I'm proud of you guys who developed the game. This game will be great when it's finish
 
You can bet that I'll be here to help test. I am so excited and happy about the amount of progress made. Just the fact that I've been able to pet pull, chat with people online, and create houses... I never thought I'd be playing The Sims Online again in any shape or form.. I remember having the insane craving to pet pull, even wondered if someone could create a flash game of it.. but here we are :D Thank you, so much..
Are the Rare pets implemented now? Have you found anything so far?
 
Are the Rare pets implemented now? Have you found anything so far?
The pet appearance selection is performed in SimAntics, so it should work right now. Haven't seen any robo dogs yet.

Not sure why I didn't notice before, since I know that C# basically runs on a JIT compiler, but we can actually recompile SimAntics code directly into C# for quicker execution using the CodeDOM. Not a priority right now obviously, but could be very useful in future for getting the most out of our servers. https://msdn.microsoft.com/en-us/library/y2k85ax6.aspx
 
Status
Not open for further replies.
Back
Top