Fixes and refactoring this week, same topic (level generation). But I'll start with a novel turn of things (written in novel-sized length in relation to other posts of mine), and a topic that I don't ramble on about frequently, which is art.

Art direction crossroads

So far I've been using Oryx sprites as a baseline, augmented with some DCSS sprites for items, and a few sprites here from itch.io or other sources. It's a mix already, but the majority, in terms of look-and-feel, is the Oryx fantasy tileset. There are some things I quite like about those sprites, like the colours, clarity and SNES-era feel, but there are also elements that I do not like, such as the fact that they can be too "cute", they are definitely overused and are core part of some visible titles (I've been accused of "stealing art from other games"). Also, the sprite resolution is on the low end for my taste (24x24) whereas I'd be fine between 32 and 64 pixels.

So, problem #1: existing art has to change. Enter problem #2: change to what?, and how? Let's start from the "how". Hiring an artist, at least at the moment, is a no-go, as it would be financially not viable at all (I need a lot of art). But I also want to have precise control for the style, which makes me wary of having other people do it, even semi-voluntarily. So, my solution, as usual, is "DIY".

My approach so far has been, "how far can I get with transforming existing imagery to something that I like, automatically". On this end, I have been looking at various pixelisation methods and I've made PixelPal to assist, and I'm still currently looking to expand/improve it. But this is not enough. I've collectively spent way too much time trying to automatically process an image into a final form I like. Here's the ever-relevant XKCD strip on this topic

Another obvious approach is to use AI, which is loved by some, hated by others. Without going into the ethics and legality rabbit hole, my problems with using AI to generate my game art is that 1) it produces inconsistent results unless you find a way to carefully tweak it 2) requires you to develop skills on how to make prompts to get useful stuff. My opinion is that "prompting", even if it's an art to wield, is not art, and does not make one an artist and it's not creative neither it is fulfilling. So, I do not want to spend much time on it. What I do find it very useful for, is inspiration, as it can create a huge variety of images, and the cool thing about it is that you can easily tweak it to generate images/things in particular styles and from particular perspectives.

So, my latest approach to all this, is to delve into full DIY territory, and develop some art skills. I've got a good tablet from a friend and I do enjoy fiddling with the basics, and even though I'm quite inept at the moment, time goes by happily. If I break down the problem of art in shape and shading, I want to focus more on shapes, and shading can either come later, but I could even use AI to assist with that part.

Alright, back to Sigil of Kings. First hands-on art opportunity came with the need to have palm trees for an oasis. The Oryx tileset does not have palm trees, so I thought I'll make my own. Here it is, version 1. So, well, the sprite itself is not terrible (I hope) but it doesn't fit at all with the cacti. And not because of the colours, as I used colours from the Oryx palette. The problem that I immediately noticed was the the perspective and scale was totally different. Palm tree needs to be more chunky. So, I made an updated version 2. Now this one is chunkier, but still not as chunky as the cacti (at this stage, I want to replace the cacti, the look like balloons). But here I observed something else: my palm trees looked flat! So shading is different as well. Cacti have highlights whereas palm trees do not. So, that's the next exercise, how to add highlights.

And at this point, I'll summarise my problem with Oryx: a lot of its sprites have some particular perspective that makes them look extra chunky and round, and 1) I don't like that 2) I don't want to spend time making more sprites looking like that. So, the crossroads:

  • Make new art that looks like Oryx and fits with existing sprites. Consistent, and won't alienate people, but hard for me to make, and I don't necessarily like it
  • Make new art that has different art style and augment and slowly replace Oryx and everything else. That's better for the long run, but for the foreseeable future, the art that I'm going to have will look incoherent. Now, I don't care about that as it's temporary, but there are a few dangers: 1) I might get used to the art mix from seeing it all the time, so I think it's fine and everybody else thinks it's crap 2) anything that I share from now on might give the impression that the game's artistic vision is crap and I'm planning to release something with incoherent art.
Palm trees version 1: too small compared to cacti
Palm trees version 1: too small compared to cacti
Palm trees version 2: still too small compared to cacti, and too flat
Palm trees version 2: still too small compared to cacti, and too flat

Level generation and other updates

  • Oasis was a bit problematic before, for a few reasons. I now allow variability in the prefab size, rather than say it's going to be a 12x12 or a 16x16 map. Sounds straightforward, but variable-size prefabs can be tricky. Another issue was that the liquid properties of the oasis were overwritten by the biome procedural liquid data, like amount of freshwater etc. I've also added palm trees, but they don't look too good yet.
  • Creatures now have an "aquatic type" property, that marks if they're land, freshwater or marine. That's useful to know when spawning creatures, to make sure that only marine animals spawn in sea, etc. This needs a bit of extra work unfortunately, due to the information I retain in the map data regarding to liquids, which is just 3 values: "none", "shallow" and "deep", and typically I use "deep" for the sea in coastal maps.
  • A few more bugfixes and improvements in populating areas/rooms. Now each area/room can specify if it's allowed to have procedurally placed things or not in a more granular way, as I classify features as "ambience", "creatures" and "objects". For example, I can have semi-prefab areas like a prison or an abandoned lodge where I allow "procedural ambience" (blood stains, cobwebs) but not procedural creatures (a bear) or objects (a trap).
  • A new procedural "ambience" feature is waterside vegetation, either blocking (e.g. palm trees by an oasis) or "brush" (reeds by the river). These can only appear in non-dungeon, non-room areas.
  • Blood spatters and pools, instead of being specified explicitly per race, they are now in a database and they're referenced by creatures with a name. This is because most of the time, creatures will be spilling regular blood, so the blood database doesn't need that many entries.
  • Zones can specify tags (and associated weights) for when spawning such zones procedurally. E.g. if we decide to spawn an optional lodge in the woods, what are the chances for it to be spawned with the "bloody" tag? or with the "abandoned" tag? Etc. This gives a bit more flavour.