Hello! In my last daily diary I mentioned that I might work on sound or equipment but instead I’ve completely deviated from my original tasks and instead begun some work on the Procedural Systems. Which isn’t a very visually appealing task, sadly (Or maybe I’m just excusing my own laziness). But now I have a lot of enumerators! And a working demonstration of spawning décor.
In the above pictures is a demonstration of one of the test systems working. We have what I call Furniture (Big squares that just represent tables in this case), with them spawning Décor (The actually modeled and textured stuff being models I paid for a long time ago) on top of them.
Each one of the furniture objects are unique (Just not in shape). They all have individual spawn chances set for how likely they are to spawn an object in each place. All of them do share the positions at which they’ll spawn things, making them a one to one comparison between each. This is a early way of testing likelihood and if my probability code is working properly. For the 50% chance one I have yet to have a time where I have one object, but have had times when I had none, and for the 25% I’ve had instances where it spawned all three, but it mostly spawns none so I guess it’s working okay enough for now.
Anyhow time to explain some procedural stuff! This is something that’s been daunting to me for a long time. But with enough thought I’ve figured that I just need data… a lot of data…
So yeah that’s the main issue really, having the data I need. But thankfully, Data is what Object Oriented Programming is designed around! If nothing else, data processing and abuse should be easy to handle.
Additionally I should mention that the general idea for this was inspired by another developer’s blog which proves to me that writing about this stuff might actually be helpful to someone that can be seen here: Thanks Arch Mage Rises!
It has a lot of history and discussion of how other’s systems works, and defines their own methodology of making their own procedural generator. While theirs is a room by room approach, the data tagging is something I’m certainly agreeing with as I am making my own whole home solution.
Anyhow, Ghost Holic has a tiered approach as to how things will be generated. I drew this with pen and paper in the same way people draw the HTML/CSS Margin, Border, Padding, and Size graph because it’s somewhat similar in conceptualization as we’re slowly getting more individualized and smaller objects as we scale down. Though now that I write it, I feel pretentious as it’s also completely different in many ways but oh well. Anyhow here’s how I’m defining things.
Currently I’m focused on implementing the House, Room, Furniture and Decor tiers. What I’ve shown as I stated previously was the Furniture spawning Decor off of it. From there I can make Furniture spawning on its own, then I can make rooms able to spawn furniture, then houses will be a whole matter of its own. For now though I’m happy that I’ve created a decent way of describing the different tiers of objects, their purpose, and making a functional decor spawning system. I might even implement this in the Ghost Zoo to see how it interacts with things (though that will also take a little work making new prefabs).
P.S. Writing all the names of “DecorType” “RoomType” “RoomStyle” with diagrams and descriptions of purpose makes me feel like I’ve written something akin to that of a schizophrenic. No wonder Computer Scientists have a tendency to go mad…