REPEATFEED RᴇᴘᴇᴀᴛFᴇᴇᴅ RepeatFeed

http://discourse.stonehearth.net/t/tis-the-season-for-frostfeast/18394

Let’s share a few screenshots from development.

So this is where we’ve started, roughly, using the arctic biome as a starter:

The floor is white but that’s about it. The next change that we’ve wanted to do was about the time. It’s winter, which means it’s cold and dark and we somehow wanted to show that. This was the first, over-the-border attempt:

To get the proper effect done, I had to mess with the client renderer for the sky. There’s a JSON binding for those now, frostfeast overrides them to make the atmosphere more gloomy, including the sky. However, you can get really fancy with that, if you wish to do so:

In a nutshell, mods can add their own “celestial light sources” if they want to, or override the system altogether just with mixintos/overrides. As of this writing, the best gif + sound combination I can possibly come up with would be this one (step beyond). All done with JSON only.

Meanwhile, @Froggy worked on the snowy models. The first one was the berry bush and together with the biome and some light adjustments, it started to look “right”:

Quickly after that we had the basic starter set of wintery models on our little mini_game microworld:

Of course, it can’t be day for 16 hours and night for another 8, so I’ve had to do a slight adjustment to the clock. Thanks to the new override-nothing-equals-injection rule, it was rather easy to trick Stonehearth into thinking that the clock had really 16 night graphics instead of only 8.

After that, the encounter for the presents was done. It’s based on the returning trader, but expanded to allow an optional objective to be completed, to reach an optional reward instead. Because we didn’t have the better presents yet, I’ve just told the encounter to spawn 50-100 presents instead. Pillaring piles of presents happened. Visible in that screenshot is also the bits of the warmth testing around (look at all those lanterns. We didn’t have heaters back then).

Onto hats! Of course, things had to go horribly wrong at some point when working with hats. They did. The hat system is actually an equipment system, it allows an equipment component to say “whenever I am equipped, switch model X with model Y”. This way, we can avoid issues with clipping hair or similar, we can just say "replace lots_of_hair.qb with bald.qb" and when the hat is taken off again, the model is switched back. It’s not perfect, i.e. if two things try to change the same model, it will backfire horribly, but when talking about models in general there’s things Radiant could change to ease that - for example, hair could become an own model variant.

In the end, you’ll only need to define one or two new head models per existing head (“hat approved heads”), create a bunch of hats, a mixin that says “map this hair-head to that bald-head” and you’re good to go: Hats.

If you want to add a new head, you’d likely want to create three head models (instead of one), and then mixin your model into some dictionary of some sorts. The hat system in frostfeast isn’t quite as advanced - it’s possible for you to add your own hats, of course, but it’s a bit restrictive otherwise. I’ll probably revisit equipment decoration at some point and make it better with a proper system, once I’ve got time.

Eventually it was working and after tweaking a bit with some graphical settings, I’ve managed to make the first screenshot that I think is really pretty. It’s really nice that this kind of stuff can be done with only the engine.

The chimney system (called “shapeshifter”) is actually really cheaty. It’s able to spawn children, or change its model variant, based on a set of rules. In Frostfeast, we use two of them: The oven is changing its model variant when facing a wall and the chimney is spawning chimney stacks until it’s reaching the sky (but only up to 40 blocks). This allows “realistic” chimneys even in underground caverns, or in houses. Of course, at the beginning, things went wrong - hooray floating point numbers. Onto infinity and beyond!

But it worked, more or less, and it’s actually crazy what kind of stuff this allows.

At some point, I’ll probably revisit this and make it a standalone thing, but only for chimneys. The current system (spawning entities recursively) could be optimized, with advantages and disadvantages alike. For the time being, it looks decent and it works. Polluting the air has never been more organized.


All in all, I didn’t have much time to spend on this so a few things weren’t done completely. For example, I would have loved to have some sort of ice on the water - you can actually find bits of the code in frostfeast, but unused - or make the chimneys a bit more optimized, things like that.

It was a fun, albeit a bit stressful journey. So thanks to all of Radiant for their help with feedback, implementing new things, fixing bugs and organizing the whole thing, and of course to @Froggy, who really did about everything but the scripting (and the new clock. I’m proud of the new clock. Don’t anyone dare criticise that.)

On an unrelated note, I won’t bait @Froggy with that stuff in the future.

11 Likes