Children of Infinity

Milestone 2 Update

We’re excited to share an update on what we’ve been working on as we wrap up our latest milestone, Milestone 2! For players who are excited about the story of our game, this update is guaranteed to be mostly spoiler free. As we have more milestones, with even more exciting names like Milestone 3 and Milestone 4, we’ll be sharing these updates so we can show our progress.

Sometimes it might not look like much, but the achievements are in securing technical, design, or creative goals. We usually want to prove anything we’re doing is really worth our while before investing in it, and a critical step which won’t be obvious until the very end is actually polishing what we have. Until we make a lot more stuff, actually play it all together, and evaluate it against every part, we won’t know exactly what parts are fine as-is and what parts need extra love to shine.

Get ready for some things in various states of completion!

That’s a Lot of Stars!

Our game currently has 718 stars. I actually hadn’t counted in a while and tallied them just for this blog post! The stars in HyperSpace are laid out in a program called Tiled, and Simple uses a bespoke plugin to ingest the Tiled data and create the actual, playable map of HyperSpace. All of this was already working, but there were a few things left to do to finalize our vision.

First was enhancing our procedural generation. Our game is built out of two distinct parts: Simple, which handles our physics-based gameplay and multiplayer needs, and Godot, which we use to do audiovisual representations of the gameplay. Godot observes what’s going on in Simple but otherwise has limited awareness of what might show up and executes no gameplay code. Many months ago, we started to do procedural generation of solar systems, where we create a collection of planets and position them around a star programmatically, as well as override certain things when we want to place special things like Rainbow Worlds. All of that work was done within Simple, since it’s important to gameplay.

Each of the stars contains piles of planets!

The problem is, Godot doesn’t run Simple logic, so it couldn’t do the same procedural generation. It only knew how to visualize planets, minerals, and so on when the player was actually there and they had been generated. 

This created a challenge for how we would go about tracking progress or guiding players to things. It would be difficult to know what, exactly, a player would find or had done in a star system if we didn’t know what was happening there except when a player was in that star system (say that 10 times fast)! Beyond that, we have a design for an interactive Starmap which helps a player take notes about what they’ve discovered.

We needed a way for Godot to be able to get the same information about procedural generation that Simple was using, but at different times, like from the Starmap menu. We now do our procedural generation in a C++ plugin. Godot and Simple both run the same, shared code to generate a star, even though they will each do wildly different things with the information. Simple will actually make a solar system, planets, and minerals when the player enters the appropriate game space, while Godot will get the same information about what will be made as a JSON response.

The game running in Simple on the left. The JSON we see in Godot on the right.

Second was authoring some of what we call our “HyperSpace topography.” We were currently using Tiled only to generate stars, which are always the same shape and were always the same kind of thing (a star). For Children of Infinity, rather than a straight shot through space on manual or auto-pilot, we wanted the player to actually experience some texture in HyperSpace. We’ve talked about it forever and did some prototypes, but it wasn’t clear how we’d handle it at a large scale. Using nautical metaphors, what if there were currents, shallow areas, deep areas, treacherous rapids, and other navigational hazards in HyperSpace? What if there were many things in HyperSpace besides just gravity wells?

We now support a bevy of features that let us make unique shapes and gameplay. Using Tiled and Simple together, we’ve been able to demonstrate fun gameplay with 2D shapes and actually make the Starmap much more of a game map, with tools the player will gain to help them traverse new challenges. More on that shortly!

Lastly, we wanted the ability to create dynamic experiences in HyperSpace. Luckily, stars don’t need to move around, but we were starting to place things that would appear or disappear based on different rules. We had mechanisms for placing all kinds of things, but what about deciding if they should be there at all? What if those rules would change over the course of play? Spheres of influence are a good example, but we’ve got a lot of new things cooking beyond just spheres of influence. Here’s a proof of concept showing the player using their metaphorical metal detector to find some similarly metaphorical buried treasure beneath the metaphorical waves of HyperSpace:

Metal detector (lower right icon) indicates proximity, player triggers a “dive” to perceive the depths (the color shift).

We still have a lot more work to do in HyperSpace, especially in deciding how we want to visualize some things, but we can now build all of our prototypes at scale and see how the whole map plays. And it is a big map!

Introducing the Introduction

We have sliced our game’s story up into different playable segments which usually revolve around the subplot of an alien or two, and we have been designing and building each piece one at a time. Last milestone, we got our first of these playable segments put together. This milestone, we tackled one that is very likely to change before we finish, but is a critical part of seeing how the game plays: the start of the game!

The beginning of the game has a lot of heavy lifting to do beyond the story elements. We want players to be able to pick up and play the game well enough to be motivated and feel capable. For that to succeed, we don’t want to introduce players to too much overwhelming complexity too quickly while they might just be coming to terms with the very long mastery curve of the unique physics of Melee combat.

We now have a start of the game, including a story, where the player is introduced to ship controls and Melee, then to the notion of scanning and landing on planets, and then finally to exploring HyperSpace. They’ll meet different characters who will be part of the player’s story and can help guide them. We’ve built what we lovingly call ‘the kiddie pool’ where the player can safely learn the core concepts of the game before they’re unleashed on the entire galaxy. We’re still playing with how much we want the player to be forced vs. encouraged to stay in the shallow part of the pool until they have complete freedom, and this is something we’ll know how to tune when we have more playable story segments and player growth.

We hope you’re excited to meet Trademaster Placeholder. This is sarcasm.

Last but not least, the beginning demonstrates a starting point for the player’s capabilities. We want players to feel encouraged to grow in strength. Whether it’s getting new ships, practicing Melee, or acquiring some of our many upgrades which will help them progress through the game, we’ve created the floor from which all those things will rise.

Want Success? You Planet!

If you were to identify places where the player was more likely to lose crew, Melee might be the worst thing in space—but being planetside is dangerous. We put special attention into actually creating a spectrum of planets, from peaceful to absolutely deadly. We had proven the bottom and the middle, but what about planets where you absolutely do not want to go without being properly equipped and skilled? We’re very satisfied to finally have planets where you’re likely to die before you can even finish uttering your shocked expletives.

This is fine.

Planetside work also hit some asset goals. As of our milestone, we have finished creating our entire creature roster, only needing the ones our backers will be helping us design (more on that shortly). We might choose to create more creatures later, but since we only have one artist working on these, it’s great to unleash him on some of our other art needs.

The game is not bug free.

Planetside has proven to be the most challenging art space to nail down because of the mixture of very different types of art: a procedurally generated texture, modeled objects like the lander and critters, and VFX for hazards. The player needs to understand what all of these things mean for gameplay, and from an artistic standpoint, we are trying to strike the right balance between artistic interpretation and abstraction and “what it really would look like.” For this milestone, we created a new workflow for generating planet textures that an artist can interact with. The artist can now actually spend some more time polishing and tuning that texture in an environment with our other Planetside objects to balance that push and pull between reality and computer-generated artistic abstraction.

Flat moon hypothesis.

Speaking of plans, we had long had a plan for how we wanted to handle our camera in Interplanetary view once players are in a star system. This was a bit of a polish task, but because it was never really proven and remained quite unknown, I spent a little time verifying it was going to work. There’s still more polish to do, but here you can see our Interplanetary camera capturing some of the vibes from The Ur-Quan Masters as it provides different zoom levels depending on how close you get to the sun. Elements like battlegroups and other players at different zoom levels all move at different speeds, and we’ll indicate to the player what might be close or far away with some size changes. The idea is that the player’s ship size stays constant even though the size of the world around them changes. Everything’s still subject to change, but we think it feels pretty unique and will encourage players to want to get closer to things to learn more about them–the core exploration principle of Children of Infinity!

Old one on the left, new one on the right.

Last but not least, we continued to work through our alien conversation portraits. We finished three more of them this milestone and started working on our next two. We’ve also created what we call our mini-comms screen, which we will use in special situations where characters might want to talk without pulling you into the main fully interactive comms screen–-like for tutorials, cutscenes, and stuff like that.

Concept sketches for… someone.

Let’s Split

We made a number of technical achievements that will unlock further design work. We finally completed the technical heavy lifting which would allow us to prove local co-op play. We now allow the Godot viewer to request an additional viewport for a local player, and our user interface plumbing is set up to support the notion that multiple players might be playing. If you are familiar with programming concepts, this is very much the equivalent of undoing a lot of assumptions, removing singletons, and inventing objects which can come and go as players come or go. This coming milestone, we’ll actually be doing some of the real work for co-op play in general, but this was an exciting technical piece to have under our belt.

Two players on one screen, each with their own view.

We started work on our Switch port this milestone, and as of now, the whole game is playable there! (Well, as much as it’s playable anywhere, at least.) We have a long way to go to accommodate the Switch’s more limited technical requirements, but just getting it running was no small task. We are excited to work with W4 Games to make Godot go-go, but because we have some unique engine components like Simple, we need to do a lot of our own work as well. We’ll be determining strategies to optimize for memory and performance now that we are actually running.

We have a lot of other technical odds and ends we were able to do this milestone which are far from flashy but will make our game so much better. We implemented threaded loading of game scenes so players can play the game seamlessly without loading screens. We have a lot of progression systems functioning, so we can trigger events based on interesting, secret bits of data like how many star systems the player has visited, who you’ve talked to, and other bits of knowledge the game accumulates. We have rudimentary controller support for playing without a keyboard. We made some very cool music mixing tests with multi-tracked music to go beyond simple musical loops for our gameplay. Like we mentioned last milestone, a lot of our technical work is in tackling the biggest unknowns—and there are lots of little ones like this that help us shape our work.

The Big Production

During this last milestone, I also finished a massive spreadsheet which represented the entire itemized list of every asset, task, design, and feature required for us to finish the game. While we had started working in our milestone chunks already with a roadmap toward completing the game, we couldn’t actually finalize everything until our Kickstarter wound down and we actually learned a bit more from our first milestone about how the work was going to, well, work.

The last time we had such a complete summary of tasks to complete was actually in the lead up to our Kickstarter, where we detailed every single asset, plan, and goal we’d need to do before we could activate the Kickstarter.

With our entire game roadmap, now we can actually say with complete confidence that we’re done with all of our creature assets. We also have it mapped against time and effort, so we know when we need to be done with all of our ship art, for example. We can guarantee all of our contributors will have clear deadlines and we can scope all of our work and make sure they really will have time for what we’re planning. It is also easy to distribute the work so we aren’t trying to do too much all at once.

Trust us, it’s really exciting.

It might sound a little weird to say I’m excited about a spreadsheet, but it’s a really empowering spreadsheet. We’re working with a team of people and we’re serious about delivering on time, so it’s critical that we can all look down the same runway together and see the steps we need to take to prepare for takeoff. From a personal, creative standpoint, it’s honestly thrilling to see every single part just described and accounted for. The vision we want to achieve is accounted for, and I personally am excited to actually have an accurate plan for how to get there.

This also helped us make decisions on when we might look to do things like playtesting. We know we’ll have a few willing victims, er… participants. In addition to our supporters who are participating in a private playtest, we planned out when and how we’ll be taking in designs for creatures, lander skins, ships, and the Precursor Legacy. We know the last two months of the year are typically busy times for people, but if you backed at one of those tiers, look out for an email in the next month with some fun “homework” to do. We’ll establish some deadlines (don’t worry, you’ll have time!), but we’d love to start working on your creatures at the start of next year, with your ships and lander skins following.

For everyone else who has already been submitting text in our surveys for the Lost Crew Log and Messages from Earth, we’ll be starting to slot them in this milestone. We’re excited to finally start putting your contributions in the game!

What’s in Milestone 3

We have a few big goals for our next milestone. Of course we’ll be continuing to make things like our playable story slices and alien comms portraits, but we’re going to finalize some big parts. In short:

  • Complete design for co-op play in Adventure (the story mode) with all parts working. Start preparing our UI and game to handle the user experience for local multiplayer, split-screen co-op and single-screen Super Melee (the player versus player mode).
  • Finalize the requirements for every playable story slice, even the ones we aren’t building yet. This will help us ensure we’re not over-scoping anything and can stitch multiple story segments together.
  • Implement our Trading and Alien Auction House systems.
  • Finish our gameplay experiences for Gas Giant Gameplay and how the player is using the Mark II (!).
  • Implement player ship and lander upgrade mechanisms so they can actually grow beyond the starting point we made this milestone.
  • Finish all of our new ship designs and art (besides the ones we’ll be making with backers).
  • Start finalizing our Interior experiences with Floyd, including building art assets.
  • Start supporting more fully-featured and platform-specific network play, like making use of Steam’s “invite to game” feature for playing with your friends.

Definition of Done

One of the unique parts of game development is identifying what is or isn’t easy to change, and then navigating with that knowledge. To use a metaphor, if you’re building with Lego and you’re making something that’s only two bricks high, you can swap and rearrange different parts quite easily without destroying the entire piece you’re working on. Once you start building a dozen bricks high and start making more interesting shapes like towers or bridges, taking things apart becomes a lot trickier. You might wish you had more blue bricks, but they’re all stuck in that massive sculpture you built. The problem is, maybe you didn’t know how cool blue bricks were until you put many structures together.

Part of creation is letting your creations speak to you. Games are meant to be played! That metaphor really feels apt for how games shape up. Assuming our finished game is a swath of dozen-brick-tall features, it would be a huge mistake to try to stack everything up that high right now and commit that deeply into ensuring every structure is a dozen bricks tall. With a finite amount of time and a broad collection of experiences we’re making for players to enjoy, the challenge is that we don’t know exactly which experiences are going to be best yet. They aren’t all sitting together, and some are only five high while others are just getting their second brick added.

In describing the big spreadsheet above, one of the critical allocations of time is for polish. What are we going to polish? We don’t know! For all we know, many things will be great being only five high, while others will be so much fun that we want to make them the full dozen. That’s why we reserve time to polish the whole product and experience, since we’ll know what isn’t working only when we compare it to all the other parts. You could call it triage, but it’s more like a positive version of triage. What aspects of the game will benefit the most from additional investment? It’s too early to tell.

All project estimates are made up numbers. Here’s some of ours!

Finish Now, Polish Later

I am continually learning on this project. I learn about new technologies, new game design ideas, and how to work with other people on a team. If there’s one thing I hope everyone on the team embraces, it is that we are all here to learn together. One of my biggest lessons I’ve been learning on this project is how to teach and even enforce that notion of leaving polish for later. 

We are fortunate to work with so many creative individuals who are filling our game with their dreams. We want their contributions because they have those talents and capabilities! How can something be visualized? How can a story be told? How could a strange alien sound? It’s wonderful what we can come up with.

I’m used to seeing a lot of games in progress, and it’s honestly a joy to share all of the incomplete work with the team and everyone following our development. For our creatives who dream and are unfamiliar with the process, it can seem confusing or outright mortifying! Maybe even for you, reading this update right now, you are wondering or anxious about certain things which don’t seem finished. You are right—they are not finished. As Fred likes to say, nothing is ever finished.

This is true for our game too. We live in a world of constraints, and we will call it finished when we get there. I’m looking forward to actually having players play the game! We still have time to polish, fix bugs, and do playtests, and it is critical that we reserve that time for later instead of trying to achieve perfection before we know if it’s even worth perfecting. You might never know what we didn’t do, what we decided to leave behind at any stage, and what actually got the most polish put into it.

A cake has both cake and icing, and we’re still making layers of cake. It’s not ready to taste, and it’s our job to imagine the icing long before it’s there, not rush to put the icing in before we have our cake layers baked and ready to stack up.
We will have what we think is a pretty great game, and we’re encouraged by the incremental improvements we’ve made to our work so far. We’re so excited to have your support and involvement along the way! Join us on Discord, Twitter, and Reddit to be a part of the community. Our BackerKit page is still available for late pledges and you can still support us on Patreon as well.

Milestone 2 Update Read More »

Kickstarter Launch Incoming!

On April 16th at 7am PT, we are excited to launch our Kickstarter for Free Stars: Children of Infinity. Sign up now to be notified when it goes live and help us garner more support! The more attention you can help us get and the more backers who join us, the more successful we will be with our entire campaign. Haven’t gotten a good look at the game in a while? Be sure to check out our Kickstarter trailer.

We’re using Kickstarter to raise funds which will help us see our game to completion and create the sequel to The Ur-Quan Masters that we dream of. There might even be a few things in it for you too…

Backer Rewards

Beyond some unique digital rewards, we’re also creating some cool physical collectibles. Whether you want to immerse yourself in our handmade art and stories, long for a beautiful starmap to hang on your wall, or simply wish to don your Captain’s regalia with pride, we have a variety of treats we think you’ll enjoy.

Collection of physical rewards for Kickstarter backers of Free Stars: Children of Infinity

We’ve entered full production mode only with the confidence that we can finish what we started and that we think we have something really cool. After nearly three years of self-funding, along with the help of our Patreon community we’ve assembled, we are asking for your support to take this project across the finish line and make it the best it can be.

We are grateful for all of you helping to keep the Free Stars universe alive all these years. We hope you’re as excited for this as we are, and we can’t wait to launch our campaign on the 16th. Hope to see you all on Kickstarter!

Kickstarter Launch Incoming! Read More »

Free Stars: Children of Infinity comes to Kickstarter on April 16th

Free Stars: Children of Infinity is coming to Kickstarter on April 16th!

We are excited to finally share some of our work with you and showcase what we’ve been up to in our Kickstarter trailer. Our Kickstarter preview page will be live soon, and more details will be available then.

In the meantime, the alliance still needs you, Captain! Spread word of this message, that there is life still out there, that adventure awairds, and that we’ll need all the support we can get.

Join us on Reddit, Patreon, or Discord to be part of the conversation.

Free Stars: Children of Infinity comes to Kickstarter on April 16th Read More »

Upcoming Livestream & Channel 44 Discussions

A slithering ur-quan masked by shadow

Big Things Coming in April

Last week, we shared a message with our supportive Patreon community giving them some teasers, information, and a request for feedback. For everyone, we wanted to announce that we will be hosting a live stream this Friday, March 22nd at 11am PDT on Twitch to have a discussion about the near future of Free Stars: Children of Infinity and how we’ll be planning to take it to completion.

In short, we’re preparing to launch a crowdfunding campaign next month that is focused on one-time payments for people who just want the game. We’re talking about it live because we enjoy it, my birds miss getting free attention on camera, and we want it to be more of a discussion than us just telling you all of our plans. Your input and questions matter too!

We know everyone has a life, a schedule, and maybe even a different time zone than ours. For those who can’t be there live, there will be a recording and notes shared afterward, so don’t worry if you can’t make it.

Humorous pie chart allocation for the Druuge
We model ourselves after the Crimson Corporation.

Channel 44 Continues on YouTube

If you haven’t been following Channel 44 on our YouTube, now is the time to jump in! New episodes will be released tomorrow, March 19th. As before, Patreon supporters will get access to all of them immediately. They will also be available in audio form on the Pistol Shrimp Podcast

Here’s the schedule for the next round:

  • March 19th: Christine Love from Love Conquers All Games (Digital: A Love Story, Get in the Car, Loser!, Ladykiller in a Bind)
  • March 26th: Andrew Hume and Richard Clifford from MinMax Games (Space Pirates and Zombies, Clanfolk)
  • April 4th: Chris Taylor from Kanoogi (Total Annihilation, Dungeon Siege, Supreme Commander)
  • April 9th: Richard Cobbett from The Curiosity Engine (The Long Journey Home, Sunless Sea, Nighthawks)
  • April 16th: Mac Walters from Worlds Untold (Mass Effect Series, Jade Empire)

Join us on Reddit, Patreon, or Discord to be part of the conversation, and we look forward to seeing you this Friday! We have a lot of exciting stuff in store.

Upcoming Livestream & Channel 44 Discussions Read More »

Dev Diary: Procedural Planet Art

A series of 12 procedurally generated planets sitting in space.

Today’s episode of our dev diary is about how we’re generating our procedural planet art. It’s a big task, but we want to share the journey so far and highlight some of the amazing work we’ve been doing in what is our biggest, most collaborative undertaking so far.

Our process for planet art is following the general model from The Ur-Quan Masters which we loved. Planets serve a particular purpose in our game, and we want to be able to satisfy that big goal by being able to make many of them. First, let’s start with what The Ur-Quan Masters did.

What’s Our Goal?

We like to think of planets as characters unto themselves. Though space is largely empty of actual life, we want the universe of Free Stars: Children of Infinity to have things which our living player will appreciate and have emotional reactions and relationships with. Planets, first and foremost, have types. Some of them are mundane, disappointing, and maybe even unappealing, but others may be more fantastical in name and appearance, like a gem world. We want players to be happy, disappointed, frustrated, and have myriad reactions to meeting these recurring characters over and over, so they need to have a little character to begin with.

Images of all the planet types from The Ur-Quan Masters.
Images of all the planet types from The Ur-Quan Masters. What a lineup!

Similar to The Ur-Quan Masters, there will be thousands of planets to explore in Children of Infinity. And similar to how we didn’t actually don’t know how many there were until The Ur-Quan Masters was finished and Fred wrote a program to calculate it way back in 1992, we actually have no idea how many are currently in the game despite the hundreds of stars in our galaxy. But we know the player is going to be seeing a lot of them.

Creating thousands of planets by hand would be disastrous for our budget and probably drive at least most artists insane. Procedurally generating the art is the only way, but far from piles of random planets is our actual goal: piles of planets with a distinct character. How have we gone about this?

From the Web to Godot

The short version of this story is that we forked a procedural planet toy which someone else had made, explained why we liked it and thought it might be a suitable start for our game, and asked if anyone was interested in trying to learn about it and mold it into something we could actually use.

The UQM Planet Generator web toy.
The UQM Planet Generator web toy.

Several members of our community just had fun making planets they thought had interesting features. A few expressed interest in trying to understand and shape the tool further. After some time spent iterating on the web version combined with announcing our shift into using Godot as our viewer solution, we asked if the planet art team wanted to make the jump with us instead of just proving more things in the web app for us to port later.

Since I had a bit of a Godot head-start, I started by building them an extraordinarily simple Godot test project which we could use as an addon in Godot, meaning it could be built and maintained on its own, and integrated later in Children of Infinity. I passed it off to the team actually doing the hard stuff, and they set about trying to rebuild the techniques they liked from the Javascript version while expanding on them or altering things to work better given the technological capabilities of Godot and the realities of how we wanted to use it in our game.

If you’re unfamiliar with procedural texture generation, I can give you a very high-level overview. If you’ve ever seen fun, mathematically driven artwork like the Mandelbrot set of fractals, we use algorithms plus randomness to generate what we call noise textures. By tuning the mathematical inputs of the noise, we can create interesting curves, dots, and shapes. We map the outputs to color values, height values, and material properties (i.e. is the surface shiny, rough, etc.), and we wind up with art as a result of controlled, designed chaos. Computers are doing what they’re good at, and our artists can hand-craft things to share the space with the generated objects.

Mosaic patterns generated by noise.
A simple noise texture making different shapes and grayscale values.

The last step is simply mapping it to a sphere properly for views in space while also supporting mapping it to a rectangular plane for Planetside. The team developed some of their own techniques on that, and we worked together to integrate it into Children of Infinity. The initial project went just as planned and was a success! The art team proved out how to make planets with base types, artistically (e.g. a rocky, mars-like planet but with different colors), how to create a planetside texture which matched the spherical view, and our workflow for integrating their changes while giving them a mini-planetside test bed where we could tune.

A test texture mapped to a rectangle and a sphere, showing how the texture applies to both places.
A test texture mapped to a rectangle and a sphere, showing how the texture can be projected to either.

Beyond the First Steps

A rainbow planet with rainbow rings.
Rainbow world experiment, with rainbow rings. Color overload!

In the beginning phase, the planet art team was mostly figuring out just how to get things off the ground, proving how it would be done and making something good enough. While the non-procedural art crew was learning how to build and light art in Godot, we eventually wanted to merge forces. Ben, our art consultant, worked with me to actually figure out an in-engine look for Planetside, which is, as far as our game is concerned, the place players will be spending the most time looking at the planet textures.

We had enough experience so far building ship art that we weren’t concerned about that, but what about this new, procedurally generated texture? As the only non-space gameplay experience, how would it sit alongside the necessary gameplay components of Planetside like creatures, minerals, and hazards? We didn’t just need to develop a Planetside texture but also a general aesthetic for Planetside, with representative lighting, camera angles, and strategies for supporting the fun we want players to have.

A lander vehicle driving and shooting on a blue planet's surface.
A few prototype dynamic elements help us understand light and scale against the planet texture.

Down on Planetside, there’s a lot going on besides the texture! Putting it all together taught us a lot about what we needed. Lighting helped the most, including different lighting configurations for different planet types. We imagined being able to play with the lighting values as well, adding bits of nuance to different Planetside experiences.

Animated gif of a lander vehicle on the surface of a dark planet, illuminating the ground with its headlamp.
Even the same type of planet being lit differently gives the experience unique character. Spoooooky.

Beyond that, we learned an important lesson: the planet texture which looked good in Orbit did not look good on Planetside. Put simply, Planetside is an abstraction of sizes done to satisfy its arcadey gameplay. It has an illogical size (it’s a rectangle) and objects are not represented at true sizes relative to one another. Having a very real feeling planet texture in Orbit didn’t make sense when we went to Planetside. Improving this is our current focus, but we only were able to learn what we needed to improve by bringing everyone together.

We’re by no means done, but we have our course charted!

A series of 12 procedurally generated planets sitting in space.
Some of the proof-of-concept planet textures being generated so far.

Our Destination

On this project, we’ve often used the phrase One Awesome <Insert Blank> as a goalpost. If we can prove that we can make one awesome planet texture, which is part of one awesome Planetside experience with all the components we’re using, we’ll know where the mark is. By actually trying to put all the pieces together, we truly see what works, what we need, and what we can consider polish or nice to have. This is crucial for game development, and it is always an iterative process to learn just what we have.

Working with an artistic sense of making something stylized, abstract, and emotional on Planetside alongside the programmers’ knowledge of what can actually be done and how is going to give us the best result. It helps to have many eyeballs and many disciplines contributing.

Back to the original goal: we want players to feel emotional connections with the planets. They’re exploring space, full of the unknown and surprises, but with familiarity in the different types and discovery in new ones. If each star system is a mystery candy box, the planets are the individual candies. Our game has a lot of candy boxes to unwrap, and it’s important to remember that, just like candy, they’re not supposed to be sustenance. Players will be scanning, landing, and taking off in rapid succession, all while trying to accomplish their own open-world goals driven by their own desire. Planets are a bite-size experience, and we want that experience to be satisfying in aggregate, with knobs to twist and progression on both the visual and gameplay sides to keep it interesting.

Animation of a planet texture surface being made through randomized settings.
The same planet noise with randomizing material settings for interpreting it.

With the goal in mind, once we have the setup for one planet, we’ll be able to move on to making Many Awesome Planetside Textures because we have our benchmark. The planet team has already done some of their own explorations on how to do more than just we originally wanted. They’ve built things like a crater-stamp generator, rings for planets in orbit, and even proofs of concept for how to do some of our more unusual worlds like Emerald Worlds. We’ve done experiments with other layered, procedural elements in-engine which will add variety like lights and fog. But we have to have our single benchmark before we can evaluate what’s really effective!

A gray planet with craters.
A test of crater ‘stamping’ on a planet’s surface to add even more variety.

Last but not least, one of the special things about the procedural planets work is that it’s almost entirely community-sourced! We’re looking forward to releasing it as its own standalone addon so people can use it even in their own projects or add to it themselves. We are extremely grateful to our community team of just three folks who have been involved in pushing this forward and will be part of taking it across the finish line. It’s really fun for us to work with them on this piece, and we wanted to take a moment to highlight their amazing work. Look forward to another episode when we get further along!

Join us on Reddit, Patreon, or Discord and let us know what you think!

Dev Diary: Procedural Planet Art Read More »

Dev Diary: Bringing Ship Art to Life

Deconstruction of the Chmmr laser with images for each layer.

We wanted to share a little bit about the technical processes we are using to bring ships to life in Free Stars: Children of Infinity. If you’ve seen our development streams, most of our visible development effort has been in design, and we’ve recently been hard at work painting layers of content over it.

Lately, we’ve been working on ships. They’re not real ships, but we want them to feel like real ships to the player. As opposed to a painting or a video, game ships need to feel alive and present in the game world. Whether they respond to being hit by a weapon with a sound, bouncing off an asteroid, or simply to the player’s inputs, we want the player to feel like they can really inhabit the Free Stars universe. During Melee, they are the player’s (and enemy’s!) avatar, with control and agency to battle.

The most important thing is for a player to feel something. Ships aren’t just vehicles or objects, they are more like characters. They are not a part of the environment; they are its denizens.

So what goes into our ship art? How does a static painting become that character?

It’s Normal

Our work is based on a game which was built when there wasn’t really much distinction between “2d art”, “3d art”, or “pixel graphics”. In 1992, we were still dealing with CRT monitors, very visible pixels, and low resolutions. We’ve since moved on, technologically, and can support a lot of different graphical styles and techniques in different games. We could technically produce art any possible way, but we wanted to maintain some of the charm, whimsy, and stylistic liberties one can take with 2D art while still leveraging techniques to give the illusion of depth.

As a result, our ships are all pancakes. Or, strictly speaking, focaccia, waffles, or some other sort of square, flat thing. Using game rendering (aka shaders), we create 2 dimensional images which are interpreted to have meaning in 3 dimensions. The Chmmr, for example, starts with a simple square and then adds textures which describe its color, implied depth (aka normal map), and how it interacts with lights (aka specular map). See how we layer each component and how it accumulates into something which looks like a ship.

The Chmmr you see was actually an early experiment trying to make these textures by hand. We wanted to see if we could retain some of the artistic freedom of hand-painting while producing a 3D result. That technique turned out to be too laborious, so the Chmmr represents the output of a process that we have already learned from. Now, we actually do model our ships in 3D before exporting these specialized textures, since it reduces the workload while still allowing for handmade touches. In both cases, we gain the benefit of not having to deal with making complete 3D models, but we still get a result that has an illusion of depth and can interact with dynamic parts of the game.

Dynamics

If a ship were just a still model, it still wouldn’t have much life. We need dynamic elements based on the capabilities of a ship. At a minimum, we want them to respond to the player’s inputs and their own abilities. Our ship art is produced to sit alongside things like dynamic lights and visual effects to make, and they’re our best tool for making ships feel alive.

Some dynamic lights along with particle systems give us a simple thruster effect. We never made an engine powering the ship, but with the glow and jets of flame, we can imagine one is there inside.

Ships are nothing without their weapons, and anyone who played The Ur-Quan Masters may remember that the Chmmr is one of the most powerful ships in the Adventure game. Here’s what its mighty laser looked like back then.

It was an orange-red line, with some sparkly dots it left behind to imply a kind of ‘ionization’ effect. Hey, back in the day, this was an awesome laser. Weapons are already pretty cool because they directly impact the world, respond directly to the player’s button presses, and make some memorable sounds. Weapons give the player agency by default. For our new Chmmr, we wanted to reimagine “a red line” while still staying true to how the Chmmr laser should feel. Awesome, powerful, and lethal.

It’s gotten a lot more sophisticated than a simple, colored line! But, in many ways, it’s still quite simple. Especially since we only need to render in top-down 2D, we can use some clever tricks. The laser above can be dissected into its layers, just like the ship art.

All of these things draw together to produce an illusion!

  • Scrolling textures (the red, wiggly bit) animate forward in the direction of the laser to make noise and add ‘motion’ to what would otherwise just be a red line.
  • The center and glow provide a body for the laser, so the player can understand its size in space and thread area.
  • The emission and contact VFX mask the otherwise funny-looking ‘hard edges’ of the textures.
  • (not visible here) The emission area produces a dynamic light, which illuminates the ship.

The contact VFX are important for making the ship feel like a real inhabitant of the world. They not only tell the player they’re hitting something – important gameplay feedback – but also orient in the direction of what they’re hitting, reinforcing the ‘realness’ of the physical objects in the world. Here’s a demonstration of it sweeping across a simple, untextured sphere. (What the untextured sphere did to deserve this, we will accept any fan theories.)

Fun and Function

The final thing we want to share is that these bits of art are shown at the closest distance, if not much closer, than the player will ever see them in-game. Under scrutiny, we can always find problems and room for improvement. Our game art is there to serve a purpose, though. Melee should be fun, and ships should feel exciting, deadly, powerful, or all the other feelings we want. They are there to serve the player, and the player is playing a game!

A huge part of making games, much less making anything, is finding constraints and compromises as well as how the whole thing fits together. To use a metaphor, one might be the most amazing drummer in the world and love to play drums, but if the point is to listen to a 30 minute symphony, the listener is likely not there to just hear the sound of those drums. The sound of every instrument working together and balancing them all is one of our challenging jobs, but we never lose sight of what we want for our game and our players. Fun!

We’re going to shift gears next month with some Ur-Quan Masters anniversary activities, and we promise to be back with more exciting updates about Children of Infinity soon after. If you enjoyed this technical exploration of some ship art, please let us know on Reddit, Patreon, or our Discord. If you want more dev diaries like this, we have a few more waiting in the wings: let us know which ship you want to see!

(Ships are not to scale. Ships are not necessarily friends with one another. The Supox are still not sure about Juffo-Wup.)

Dev Diary: Bringing Ship Art to Life Read More »