MagicaVoxel

Trashing and rebuilding

 

In the previous post, I wrote about how adding round shapes in a voxel map sounded like a great idea. Well, it was. But as expected, it wasn’t easy… And it raised a lot of questions.

I tossed my first, cubic-looking map and restarted from scratch. Not only because it was necessary to add round corners, which required too many changes in order to keep the whole think navigable for the player, but also because the map itself was slightly too small. Most rooms felt like prison cells, and that wasn’t the intent. At least, not for this map, which is supposed to be the big clan house where our main character spends most of his childhood.

 

Voxels indeed mean square shapes, and the curves you see here were just not fitting.

 

I wanted to plan things a bit ahead, because building rooms with curved walls is indeed a rather complicated task. I made some quick, low-resolution 3D drafts in order to know where I was going. Pixelated round shapes look rather simple at this scale. But in my case, I needed to add many more details that could barely be imagined by looking at these mockups.

 

A mockup of the new map, made with MagicaVoxel.

 

There’s a good reason most real buildings have rectangular rooms. It’s a freaking nightmare to design practical circular rooms in a whole structure. You have to deal with the many nice-looking but cumbersome shapes such a layout creates, and to avoid wasting too much space. And of course, with a video game engine, you also have to make all of this fit with the system you’ve chosen. In our case, a standard square tiles system.

I started by designing a rather big 32×32 curved wall model, actually made of four smaller blocks. Which also implied, for technical reasons due to the way RPG In A Box works, many, many slightly different models for specific uses: door sides, ceilings, walls junctions… Quite a headache, in fact. But with a much more interesting result than that plain old Minecraft cubic style, and, if done properly, a modular, highly reusable set of blocks.

 

And early version of the resulting map in the RPG In A Box map editor.

 

In short, I had to design my own Lego set. And it’s far from being finished.

This equally exciting and arduous path led to the tremendous pain of designing curved roofs, which took me days, if not weeks, to figure out. Oh sure, just make some basic stair-shaped stuff and everything will be fine. Except if you have curved walls, you also need roofs that follow their curves, hence the geometrical witchcraft required to make everything fit together, not to mention the need to divide this mess in equal 16x16x8 cubic models.

Yes, not 16x16x16 models, because regular 45° slopes looked quite ugly, so I had to smooth things a bit, for an even more increased complexity.

Hopefully, RPG In A Box allows to stack models freely upon each other, without snapping them on a vertical grid, so you’re less limited than when placing models horizontally. Which means it’s possible to build great stuff, though I wouldn’t say it’s easy. But hey, I am the masochist using a pseudo-realistic scale in an engine designed for cute low-res voxel art, so who am I to complain? And the developer is a really nice and helpful guy. So far it’s been a joy to see both his engine and my project evolve simultaneously, feeding on each other’s features and needs.

 

The highlighted part is a 16x16x8 part of a much greater ensemble.

 

That’s only the tip of the iceberg. My current map still lacks a second floor, many architectural details, and, well, a decent set of stairs. A lot of writing, world building and city design work has been done in parallel, with the help of Konstantinos, who is indeed pretty good at city design, since he happens to be a urban geographer and engineer.

Speaking of icebergs, this is what I’m talking about. I’ve even set up a private Flarum instance to share our thoughts and organize our notes, which works perfectly fine for a beta. And we’re currently filling the blank cells of a huge spreadsheet to define the cultural and architectural traits of the three major Nékromegà cities. Since RPG In A Box is still in alpha, there also have been various bug reports, feature requests and discussions with Justin, its developer. And I still have lots of stuff to figure out about the plot, the characters, economy and politics…

You get it, we’ve been busy.

I’ve also started composing the soundtrack, blending dark ambient and doom metal with a few generative techniques and tools… And it’s quite exciting, but I’ll keep that for the next time. In fact, it’s very, very exciting, because I’m discovering this whole new world of live coding and… Shhh!

Building round things with square things

 

One of the topics Nékromegà deals with is colonialism. The story takes place in two very different countries, one being a small insular matriarchal society, the other a huge proto-capitalist empire. It’s all about contrast.

Above are some screenshots of the map I’m currently working on, set in the archipelago of Suùn. While I’m rather satisfied with the overall aesthetics, this will probably change a lot, because the place depicted here doesn’t quite look like it should.

Both countries have indeed to show very different architectural styles. However, since I’m building the whole thing with 16x16x16 voxel blocks, this leaves few possibilities for complex shapes. Which is a good thing, because it means I may be able to finish this project in my lifetime.

But my official imaginary city design adviser told me he imagined that matriarchal architecture with round shapes. This would totally makes sense, not only because femininity is generally associated with curves, or because the idea of matriarchy reminds him of neolithic settlements, where round shapes were pretty common, but also because it would help defining a sharp contrast with the empire’s fascist-industrial architectural style.

However, voxels are cubic, and creating round shapes with cubic elements isn’t exactly easy. So if I want round shapes, I guess I’m up for a challenge, eh?

 

Wouldn’t round shapes like this look lovely? (Los Millares)

 

As if it wasn’t challenging enough, RPG In A Box’s latest update adds nifty ambient occlusion shaders. This looks great on my character models, but not so great on my walls and bigger elements. Why? Because the way I’ve set up my map, and especially my walls, is not really the standard way. That would work at a smaller scale, but in my case, it’s kind of complicated, hence odd shadings in some corners, among other similar problems.

So I’ll have to work on two things: enhancing my models in a way that do justice to these ambient occlusion shaders which I definitely want to use, and adding round shapes all over the place. Because occlusion shaders would indeed look very nice on round shapes. The good thing is the shaders settings are on a per-model basis, so this leaves me with a lot of freedom.

The bad thing is my building blocks are starting to become numerous and highly specific, but that’s a necessary evil to satisfy my lego-god ego.

This is a development blog

Here I am, starting a development blog while I already have a Tumblr, and a website, and many other tools supposed to give me an online presence, most of them very rarely updated. So, why the hassle?

Because I need to focus. I’ve been working on this project from time to time for a few years, trying many engines to tell the same story. Nékromegà is meant to be an simple adventure game with a few RPG elements, and a lot of game engines can do that. Pretty easily. But not so many do it in a way that suits my workflow and keeps me motivated. I’ve tried lots of them, and none seemed to be the right tool for this project.

This may sound strange, but I’ve always wanted Nékromegà to have stairs. Not teleporters in stairs disguise that send you automagically to the next floor, but stairs you can actually walk on. I want the game to convey a sense of space and architecture, and to fully embrace the notion of moving vertically. Probably because a long, long time ago, H.R. Giger’s stairs drawings have made a real impression on me. Or, more generally, because there will be ruins, and I can’t really dissociate stairs from ruins.

 

Hans Rudi Giger, Shaft IV (1966-68)

 

History and memories aside, ruins are buildings which are slowly losing their battle against gravity, transitioning from verticality to horizontality, from majesty to nothingness. And I think stairs are an important asset to physically experience this collapsing majesty. I don’t want my ruins to feel two-dimensional or decorative: the player should be able to walk around them, inside them, but also to embrace their height. Stairs should behave no differently than corridors and not be treated like abstract links between floors. Obviously, Nékromegà will have its share of deep underground places and tall broken towers, and I don’t envision them as flat blueprints.

But developing stairs caused me intense frustration. Both Clickteam Fusion and GG Maker betrayed my grand vision of stairs. These are still excellent game engines I’d highly recommend, but simply not stairs-friendly enough for my needs.

My first attempt at turning this project into a game was in Clickteam Fusion, with pre-rendered 3D scenes made with MagicaVoxel. I had a mouse-controlled sprite moving over the background in a 2D space, with invisible colliders everywhere, sloppy pathfinding, and a few depth issues. Overall it was looking nice, but the controls were really bad — especially when walking on stairs. My limited maths skills for trajectory calculations and faking 3D with sprites scaling didn’t help either. Worse, the Fusion workflow was, at best, tedious. I have no idea how people find the patience to use its terribly outdated sprite editor and its dull import system. Hopefully, I had Pyxel Edit to do real pixel art work ahead.

 

My inital design for a test level, made and rendered with MagicaVoxel.

 

I ended up with a somewhat working prototype, but not with a satisfying prototype. I got bored and put the project on hold. Months later, I discovered GG Maker, which has a really neat visual scripting system, and simple yet efficient 3D capabilities. I managed to export my models from MagicaVoxel and set up a real 3D scene quite easily, if we except the horrible pipeline involving the even more horrible use of Blender to convert my voxel models to stuff GG Maker can use with proper textures and orientation. Overall though, it worked, even if I had issues with displaying my sprite properly, as you can see below:

 

A clunky and incomplete 3D scene, something I was proud of nonetheless.

 

But the stairs were still a mess. I managed to build maps with real vertical depth and frightening height, but the collisions were half-broken. My character was sometimes getting stuck for no reason I could understand. So I gave up again, with a clearer idea of what I could do, but not how I could do it. Messing with 3D had brought more questions than answers: isometric? 3rd person? 1st person? All of them?

 

An early isometric rendering of my first test level.

 

So Nékromegà, ironically, became an undead project. Months passed again. Then, a few weeks ago, while looking for new development tools on itch.io, I stumbled upon RPG In A Box, decided to give it a try, and found it perfect for my needs. Why? Well, that’s for another post, but to put it simply: it’s voxel-based, and its workflow is easier, faster, and way more enjoyable than anything I’ve tried before. And stairs are dead simple to set up.

 

Stairs are important, but so are beams, I guess.

 

The screenshot above shows a very rough WIP map edited in RPG In A Box. It lacks various textures, objects, characters, and at least one floor, not to mention dialogues and choices. And cool stairs. It’s not a terrifying necropolis, just a big house. Yet it should give you an idea of what I’m trying to create. I still have a lot of work to do, not only on this map, but also, and mainly, on game design. While the story is almost done, the game structure and systems need a lot more details.

Good news: that’s the point of this development blog.