While this sounds very technical, it boils down to “characters that went to bed just lying down but not sleeping can now start sleeping without having to get up only to lie down again”. Implementation wise that only meant exposing a bit more functionality to Python and adding yet another library-like function to the main abstract object Python class. Works just fine. 🙂
Just a small game play change this time, this means that adverse effects (food level or hygiene decreasing) will happen slower when sitting or lying down, but healing will happen more quickly.
Refactor the handling of attribute changes on the Python side somewhat to make it easier to add more attributes. Change the default world size from 12×12 to 20×20.
While this commit in itself doesn’t make for riveting entertainment the changes will help with one of the next tickets. The visible change here is that after a very, very long time the default world size has changed, what a time to be a alive!
– Make the default enter/leave animations configurable – Refactor the python job code and reduce logic duplication significantly – Add a job type for showering and half-implement it (does not leave yet when done, specific animations are missing)
Hello! Adding some more boilerplate for the job type configuration, turns out that a copy constructor missed some of the new properties, which made for some interesting debugging. A lot more exciting here are some refactoring efforts that were made once I realised that the previous approach would have lead to a lot of boilerplate code – and also would not out of the box use the configured default values for enter/leave animations, but rather would have required some custom code in every job to retrieve them. Well, that’s fixed now 🙂 While it does not look very exciting, here’s a quick screenshot of one of the characters after finishing the “shower” job – as mentioned in the commit log, the custom animations for that are still missing (I’m currently recycling another one for that), but the basic logic is now working.
Now only to get out of that shower again.. more about that in the next commit 🙂
Works as promised, with the caveat that the only way to use the non-looping behaviour is by using it in the context of entering/leaving another object – the mechanism itself does not care about the source of the data however. That being said, this commit is already setting the right animation when sitting down/lying down – not for getting back up however. The second problem is that of all the required combinations (eight) only one exists so far..which happens to be slightly misaligned, so the next task is to create animations. A lot of them. If this is working properly it will be time for another video to demonstrate all of that. 🙂
What was rather frustrating to debug turned out to be essentially a one-liner, now one can properly queue up multiple jobs that involve entering/leaving other objects! 🙂 That is, if a certain ticket does not get in your way.
– Use the same implementation for the “lying down” mechanic as for the sitting one – Adjust dimensions of the “bed” object to make it better fit the world dimensions
Not too much had to be done to make it happen, but now the “lying down” mechanic also works (with the same caveats as mentioned before), but it is pretty nice to see this object finally see some use as well besides just existing and looking nice. 🙂
Hi! As the message states, this is implementing the basics of the concept of “getting back up” – some quirks remain, like the missing rotation into the right direction depending on the exit point and jobs seems to lose some information when being started from a non-standing state. Also, the same restrictions (no transition in terms of time or animation happen) as for sitting done apply. However, besides that the core mechanics work and after leaving the container object the slots become available again. 🙂
– Set the default idle animation depending on the current position status (standing, sitting, etc..) – Add first iteration of sitting animation – Add a few more helper functions to determine under what circumstances an object enters another – First WiP approach for the sitting down mechanic (just switches immediately for now, no standing up either) – Extend the Python bindings
More progress and getting closer to an actual object-in/on-object mechanic! It is now possible to let the controllable objects sit down on objects that support that – albeit immediately and without any animations. You also better not plan on them being able to get up again, unless of course you don’t mind simply deleting the object they are sitting on. Needless to say, this is all very much work in progress and will continue to do so for quite some time, but it is definitely progress 🙂
This also brought up the rather unfortunate question of positioning of the model so that everything lines up in a generic way, it just happens to work very nicely for the couch model, not so much for the chair though. Let’s see what the next few days will bring in that regard. 🙂