Vesper

A lot of work so far has gone into trying to come up with a compelling way of rendering a neo-retro ship sprite.

Vector vs Raster

moo1.png

Kyle was greatly inspired by Master of Orion

So I've been working with vector assets in SC: Reforged for years, obviously, since Drakeor, the project's co-maintainer [see here], and I have been in the process of remaking the original '00s Flash game off and on for over a decade. One of the benefits was that the assets could be modified non-destructively. Another benefit, of course, was the fact that with relatively little data you could render fairly complex scenes at any DPI.

However, I've always felt there were major drawbacks to vectors that outweighed any benefits. For one, vector assets get muddy when you scale them down to the point where it's fairly difficult to make out what a small asset is. Modern SVGs certainly support more advanced features than the old Flash vectors back in the '04 era that SC: Reforged was based on, but they still skew towards flat, simpler asset designs.

Kyle Dodds, the original creator of Stellar Conflicts, drew the original game assets as a callback to the raster assets of the late '90s 4X space games. From there, the rest of the game's style emerged coherently. Not all of Stellar Conflicts' assets were vectors, of course, but during the development of SC: Reforged, I was able to create vector assets in the same style as Kyle's. It became clear to me as I converted the few raster assets to vectors for the first time that Stellar Conflicts may have been better served by continuing to use a raster style instead. I never quite loved my replacements for the few Master of Orion sprites that Kyle had included in the Flash game.

¿Por qué no los dos?

Pixel art can be done non-destructively, but it's challenging and often makes for a chaotic project file. Plus, when you need to generate an asset at many different zoom levels, it can be a real chore since nearest-neighbor downsampling often produces poor results.

I was interested in trying to solve these issues using a different approach. I wanted to create a 2D asset authoring tool that could be used to draw pixel-perfect 2D assets using some of the same machinery that vectors are often designed with, but instead of rasterizing at arbitrary DPI, I'd define a set of custom rasterization functions that were designed with pixel art in mind.

Vesper

And so I created Vesper, a 2D authoring tool designed to quickly create sprites and other 2D assets, either static or animated, built from a set of generator functions that could be easily modified, stacked, layered, masked, and animated, and whose functions could be overridden per resolution to produce authored sprite detail levels, generated automatically.

Imagine the shape tool in your favorite pixel art editor, but instead of just an outline and a fill, it could describe a pattern based on a procedural function, not unlike geometry nodes in Blender. This was roughly the idea behind Vesper, which I was able to use to create complex pixel art sprites that could be modified, whose different zoom levels could be authored specifically to fix certain issues, and whose rasters could be generated automatically from a simple JSON file.

This led me to try to solve all kinds of neat and interesting problems with the generator functions, such as normal maps for lighting, anchor points, and onion-skin anchors for animation poses, among other things.

Stellar Conflicts Art Design

For SC: Reforged, I am not planning on changing up the current vector assets because it's supposed to be a faithful restoration of the original game. However, for Stellar Conflicts (this game), I plan on continuing to use and refine Vesper so that the sprites are more coherent and quicker to create and edit.

What do you think of the result below?

Real-time lighting

A scout flying past lights, shaded live from its normal map.