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:
[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.
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.
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.
[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.
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: