1. Dandelion Void
  2. News

Dandelion Void News

Watch Your Step

[p]Spoiler label: this post contains a look at a new enemy in Dandelion Void![/p][p][/p][p]Hi everyone, and happy almost Halloween! To channel with the reason for the season, we wanted to give you a sneak peek into a new horticultural horror that you can look forward to (or dread) in Dandelion Void. [/p][p]This is an early mockup, with temp art and just a rough pass at sound, but we’re pretty excited by the gameplay this creature will bring! [/p][p][/p][previewyoutube][/previewyoutube][p]
We wish we could show you more, but this footage was all we could recover. If you will, a moment of silence for our brave expedition party.[/p][p][/p]
Bonus: What's a Manzanita?
[p]We’ve had some questions about  the origin of the name Manzanita Interactive, the studio behind Dandelion Void. A few of us went on a hike last weekend in Angeles National Forest, where we found the perfect opportunity to demonstrate![/p][p][/p][p][/p][p]"Manzanita" refers to the Arctostaphylos genus of small, hardy shrubs endemic to the chaparral biome of the southwest USA and Northwest Mexico. The name literally translates to “small apple” in Spanish, referring to the appearance of a Manzanita fruit. The genus is known for its drought tolerance, upwards-pointing leaves, and beautiful dark red bark (often presented in two-tone, with long streaks of gray).
[/p][p]The name is a nod to our beloved home of Southern California, where our entire team is based. Manzanita is also known for quickly regrowing in the wake of devastating wildfires using special fire-tolerant seeds. As a team that met as union organizers in a time where the entire games industry seems to be on fire, we like the symbolism here.
[/p][p]That’s all for today! Join us again in two weeks on November 11th for more early looks into Dandelion Void. 
[/p][p]Until then, may we all get our chance to rise from the ashes.[/p][p]-- Robin and the Manzanita Interactive team[/p][p]
[/p]

All Dressed up and Nowhere to Land

[p]Hi all! Welcome to another weekly devblog. Today we’re giving a peek into some of the fashion options available to you in Dandelion Void![/p][p][/p][p]Before we get started, a quick housekeeping note – we are shifting our devblog schedule from once a week to twice a month. We've started our October doing a lot of longer-term foundation-building on our tech infrastructure and game design. It’s pretty exciting stuff, but it doesn’t lend itself well to flashy screenshots, and some of the plans are too early for the public to see. All that said, we’ll be back here in two weeks on Tuesday October 28th![/p][p][/p][p]Spoiler label: this post shows visuals for 4 outfits and discusses some of their mechanical properties[/p]
Runway Between the Stars
[p]Every outfit we design for Dandelion Void is a new way for the player to express themselves, as well as an opportunity for us to develop the game’s unique setting! As a centuries-old overgrown derelict, the Pergola has quite a bit of history, and the clothing helps tell that story.[/p][p][/p][p]Generally speaking, new clothing we add fits into one of four buckets:[/p][p]Civilian:[/p][p]The Pergola wasn’t just a spaceship; it was also home to generations of crew who lived their entire lives aboard. The Pergola launched in the 70’s, and we want to capture some of the fun of that era's fashion. Strong shapes, flared legs, and relaxed fits are characteristic of the civilian clothing you will find aboard.
[/p][p]Loose linen lounge pants: perfect for a lazy afternoon on the couch, or a terrifying night in the overgrown tomb of your spacefaring ancestors
[/p][p]Vocational:[/p][p]Like Earth workplaces, uniforms were used aboard the Pergola to designate roles and professions. The the Acorn Starship Collective that built the ship was full of utopian-minded artists and scientists. We wanted to capture some of that energy in the vocational clothing with simple-but-beautiful designs and rich pops of color.
[/p][p]Excuse me, do you work here?
[/p][p]Spacesuits:[/p][p]Of course, a ship is still a ship, and where there's space you need spacesuits! In Dandelion Void, these pressure-fit garments will help you traverse areas of the ship that have been exposed to vacuum.
[/p][p][/p][p]Protection against Void and Vine[/p][p]
Our designs are based on the lightweight, silvery jumpsuits of the Mercury program. Note that these are made for tethered EVA operations, not planetary landing, so they lack the bulky backpacks you might see from moonfaring suits.[/p][p][/p][p]Scavenger:[/p][p]All of the aforementioned clothing categories are from the Pergola’s golden era, before mysterious circumstances turned it into an overgrown derelict. Between the bright colors and high-quality materials, the ship’s original people used industrial tools to make beautiful clothing.[/p][p][/p][p]The pergola’s current inhabitants – a hungry band of scavengers, hunter-gatherers, and subsistence farmers – have a much more pragmatic, improvisational approach to fashion:[/p][p][/p][p]This “cloak” is fashioned from an old sleeping bag. It’s not exactly Met Gala material, but it has its own rustic charm – and it keeps you warm.[/p]
Back on the Rack
[p]Thanks for joining us today! We hope to have many more outfits to show you as development progresses. Until then, have a great week![/p][p][/p][p]-Robin and the Manzanita Interactive team[/p]

Six of one engine, half a dozen of another

[p]Hello, pergonauts, and welcome back to another Tuesday dev blog. This week we have a couple of unglamorous, but all-the-more important updates for you.[/p][p][/p][p]As you may have heard, a critical security issue was recently exposed that affects all Unity games made with engine versions 2017.1 and after. You may have even noticed games in your steam library being temporarily delisted or requiring an immediate update.[/p][p][/p][p]It goes without saying that this is a major pain for developers who now need to update their live builds ASAP, and it may have some worrying impacts on game preservation. For the Dandelion Void team, though, the silver lining is that this is the excuse we needed to update to the Unity 6 engine![/p][p][/p][p]Up to now we’ve been developing on a "Long Term Stable" version of Unity 2022.3 that was last updated in September of 2023, over two years ago. Like most developers, we’re cautious about when we change our engine versions; there’s always a few things that break here and there, and all the bugfixing can suck time away from gameplay features. [/p][p][/p][p]With that said, it makes a lot of sense for us to invest in a more up to date version. 2022.3 is old now, and it’s only getting older! Being on Unity 6 will give us access to the latest and greatest from Unity, and engine bugs we encounter will have a higher likelihood of being fixed by their team. We’re also interested in some of the new profiling tools they have been working on, as well as the better contrast on the editor UI.[/p][p][/p][p]What else is new with us? Well, speaking of tooling updates, we’ve been giving some TLC to our Sickle level editor! We’re making these tools both for us and for future Dandelion Void modders, so it’s important for us that they feel great to use. Up to now you’ve selected your level editing tool by clicking through tabs in a Unity window, but we’ve migrated these to a series of icons that overlay the scene view! [/p][p][/p][p][/p][p]The old way above, the new way below...[/p][p][/p][p]The yellow icons above represent Sickle's various tools, and will reveal contextual menus as needed[/p][p][/p][p]This reduces the amount you need to jump between the scene and the editor window with your eyes, and brings Sickle more into line with the usability standard set for Unity tools. We also just really like making icons! The yellow is a little nod to the color used by our terminal displays.[/p][p][/p][p]That’s all for today! Take care everyone, and have a great week.[/p]
  • [p]Robin and the Manzanita Interactive team[/p]

Grime and Punishment

[p]Hi everyone! Welcome back to another dev blog. Brian and Robin are fresh back from a week off, and we’re excited to get back into talking about the game! Today we’re doing a deep-dive into one of the game’s tentpole visual effects: grime![/p][p][/p][p]Spoiler label: this post describes the grime visual effect and discusses small gameplay interactions.[/p]
Aging Gracefully
[p]The visual identity for Dandelion Void is “Spaceship Reclaimed by Nature.” Launched hundreds of years ago, the once-gleaming Pergola has fallen into ruin. With this in mind, it’s very important for our environment to look like it has gone to seed.[/p][previewyoutube][/previewyoutube][p]When we started Dandelion Void, we were just trying to nail the architecture and design language of the ship as it was built. Our earliest builds looked nice, but the environment more closely resembled the Pergola in its prime than its derelict era. The leafy ponic plants helped a bit, but everything was still too “clean.”[/p][p]Enter: the grime pass![/p][p]From left to right: pre-grime, post-grime, and grime blending under the hood![/p][p][/p][p][/p][p]In combination with the vegetation system, grime helps us sell the age of environments like this computer room[/p][p][/p][p]Our grime technology applies dirty texture overlays over any surface. It works both on flat floors and wall surfaces, as well as three-dimensional pieces of furniture. This is accomplished using a modified version of a triplanar mapping shader.[/p][p][/p][p]In simple terms, triplanar mapping is a graphics technique that automatically wraps textures over arbitrary geometry in a way that looks natural. The "arbitrary geometry" part is important here; on a typical model, 3D artists manually assign which parts of a texture go on which parts of the object using a process called UV mapping. This makes a lot of sense for something like a chair, where you don't want the cushion color on the legs or the wood color on the cushions, but it's pretty inefficient for a homogeneous repeating texture like grime.[/p][p][/p][p]Triplanar mapping works by defining wrapping textures for the top, sides, etc. of a mesh and then elegantly blending between them on the corners. One issue with this approach for us is that Dandelion void uses “crunchy pixel” textures for its world geometry without antialiasing. If we just blended between our top and wall textures, this would create smooth regions that break the pixel grid. [/p][p][/p][p]Our solution is that instead of linearly blending on these corners, we use a noise function to combine the two textures like a tile mosaic; note the regions in the screenshot below where you can see little boxes of the red and the yellow intermingling. This allows for a more seamless transition between the two textures without having to compromise on our precious crunchy pixels. [/p][p][/p][p]Our grime shader is what I call a “garlic salt” effect. It works with any dish, and everything you sprinkle it on tastes better![/p]
Grime-based Gameplay
[p]Our grime isn't just a pretty face: It also serves an important gameplay function in our base building system. Using a designated tool, the player can clean grime off of floors and furniture objects![/p][p][/p][p]Cleaning grime is one of the first things you might do when picking a safe room to turn into a temporary or permanent base. In addition to being satisfying and aesthetically pleasing, certain types of furniture will offer extra benefits when they are clear of grime. [/p][p][/p][p]Our grime system is open-ended and supports multiple categories of filth. The green algae is the most visible, but we also have a more subtle gray dust effect, and ideas for future types of grime. In addition to looking different, grime classes also have secondary effects like changing the footstep sound; algae provides a satisfying “squish” while dust will use the standard hard surface sound. We also support infrastructure for requiring different tools to clean different grime classes, creating opportunities for items like scraping knives, sponges, sandpaper, etc.![/p]
Bedtime for Grime
[p]That’s enough about grime! We’ve really enjoyed getting down and dirty about this system. If we're being honest, we also really, really feel like washing our hands.[/p][p][/p][p]Take care everyone, and have a great week![/p][p][/p]

Learning to Love Lua

[p]Hi everyone! Welcome to another Tuesday dev blog. Today we’re going a bit “under the hood” and discussing the Lua scripting language – what it is, what it does in Dandelion Void, and why we chose it![/p][p][/p][p]Lua (Portuguese for “Moon”) is an ultra-lightweight programming language with only 23 keywords. Its stylistic simplicity and high performance make it popular as an embedded scripting language in video games. If you've played Garry's Mod, Project Zomboid, Don't starve, Roblox, or any of a dozen other games, you may have already enjoyed the benefits of Lua without knowing it![/p][p][/p][p]Before we get started, some housekeeping: some of our team will be out of office next week, so our next dev blog will be in two weeks on Tuesday September 30th.[/p][p][/p]
The 3-layer Cake
[p]When we say that Lua is embedded as a scripting language, this means that there are actually three programming languages involved in Dandelion Void. [/p][p][/p][p]The first is the C++ code used to write the Unity game engine. This comes to us already compiled, so we don’t touch it directly. Next up is C#, the standard programming language for Unity games. Things that you might consider our core technical systems – assembling renderers for entities, loading and unloading chunks, etc. – are all written in C# by us.[/p][p][/p][p]And then all the way at the top there’s Lua, where most of our “gameplay code” lives. Lua is what tells your hunger to tick down and eventually diminish your health, Lua is what determines the context menu options when you right click on a piece of furniture, and Lua is what tells the music system to play the combat theme when enemies approach.[/p][p][/p][p]Now, why would we go through the trouble of splitting ourselves between both C# and Lua? There are a few answers![/p][p][/p]
Advantages of Lua
[p]C# is a compiled language. In practical terms, this means that every time you want to make a change and test it in the game, you need to wait a few seconds (around 5 to 30 depending on the project) for the code to compile. You also can’t recompile while your game is running, so if you want to make a change you have to stop the game, wait for the code to recompile, and start again. This can really slow down development!
[/p][p]As an interpreted language, Lua skips the compilation step. There’s no delay to see your changes take effect, and you can even edit files while the game is running. This is a godsend when you’re doing rapid iteration on a game design feature, or trying a lot of different solutions for a bugfix. [/p][p][/p][p]One of the other advantages Lua has over C# is that you don’t need to pre-declare all your data fields in advance; you can just make them up on the fly! This removes some pre-planning steps and makes it fast easier to write Lua in an “off the cuff” style.[/p][p][/p][p]These qualities aren’t just why we enjoy working in Lua – they’re also the reason it’s the programming language of choice for modders![/p][p][/p]
Lua in Game Development.
[p]Engineering and game design are different skillsets, and at large companies these roles are frequently performed by separate people. The simplest form of this team dynamic would be for a designer to come up with the ideas and then ask the engineer to implement them, but this is pretty inefficient. Important details can be lost in the game of telephone, and each person has to find something else to do while the other is working.[/p][p][/p][p]Lua and other scripting languages offer a nice solution. Lua code is far simpler than C++ or C#, and it’s pretty easy for designers to pick up. Once a designer is comfortable in the scripting language they can implement their ideas directly and test the results in real time, while the engineers can continue to support them by adding new hooks from Lua into the main engine of the game. Having Lua separated from the rest of the codebase is also a safety measure, as it means designers won’t be tempted to tamper with sensitive engine code that could lead to huge bugs or crashes.[/p][p][/p][p]The same qualities that make Lua good for designers also makes it good for modders. Lua’s simple elegance makes it accessible to hobbyists of many skill levels, whether or not one has a formal computer science education. The lack of a compilation step or time-consuming infrastructure also means that if you only have a few hours each day or week to spend on modding, that precious time isn’t being eaten up by loading and busywork.[/p][p][/p][p]Perhaps most importantly, Lua is good for modders because modders are used to using it in other games! Our game director Brian got his start as a modder, and creating a modding-friendly environment has always been a top priority for us. If you’ve already modded Roblox, Garry’s Mod, Project Zomboid, or similar games, you’ll already have a head start for modding Dandelion Void! [/p][p][/p]
break, return, end
[p]I have to admit, I rolled my eyes a little when Brian told me he was integrating a Lua scripting layer into our game. Each of our engineers has over a decade of experience working with C#, why put something else in our way? [/p][p][/p][p]But the more time I’ve spent working in Lua, the more I’ve come to appreciate its loose, gestural style. Writing C# and C++ is like building with wooden planks; you have to measure and cut all your material before you’re ready to build, and if you change your plans halfway through, you might need to just start from scratch. Lua is like working with clay; you can just get your hands dirty, squish it into the shape you want, and embrace happy accidents! There’s a certain element of spontaneity to Lua that captures the original joy of programming that drew us to this trade in the first place.[/p][p][/p][p]I’ve been having quite a lot of fun working in our Lua codebase, and I hope you do too! Until then, take care and have a great week – we’ll see you back on the 30th![/p]