Recap (once again)

(Ok, I’ll start by mentionning that this post was intended to be online three months ago, in december. Unfortunately, I broke the blog when I tried to update it to a more recent version, and I left it untouched/broken until now… I paid it dearly in terms of spam to remove, not gonna do that again. Welp.)

So, another 13 16 months later, and here we are (again).

Believe it or not, but despite the lack of news, I am still as commited as ever to the game. Irritatingly so, I would say, given how frustrated I am by this last year’s poor progress, so, so far away from my expectations.

The last few months of 2017 and most of 2018 has been a succession of events that ate little by little every speck of free time I could dedicate to working on the game. Some positive, some negative, but the end result is the same nonetheless : I have had little to no (viable) time to work on significative feature. It does not mean that I did nothing for all that duration. But I have little to show as most of it ended up being background or game design work, rather than graphical, player-appealing stuff.

What has been done

Overall, most of the time I have worked on the codebase has been used to simplify or refactor (improve) code that was getting hard to maintain. There is still more work to do on that front, but the situation is already much better than it was a few months ago. The plus side of not working on code for an extended period of time is that it makes it obvious what needs to be clarified, improved, or simply documented more adequately.

Failsafe behaviours have been added in quite a few systems that were previously crashing the game’s client. The server was already fairly stable in that regard.

The rendering engine has been improved to better manage animated entities. Any game object can now be animated at a much fewer cost than before.

Persistence of character data has been thoroughly implemented (inventory, skills, location…), what gives a more MMO feel to the game. It’s also much easier to test it as progression is saved properly.

Support for multiple worlds (versus a single map) has been prepared. It is not yet used, but it is ready. As I detailed in one of the first few blog entries, personal “housing” space is planned, and it’s most definitely one of the next things I hope to work on, making multiple worlds a necessary development.

Plenty of minor bugs have been fixed. Even if I can not work on big shiny features, I can at least fix bugs :)

What is coming

So far, 2019 as been significantly more active on both the game design and development fronts. Not much to show for now, I’ve mostly done cleanup, fixes and created the bases of incoming game systems.

Developments, by order of priority for the time being :

1. More refactoring. As a whole, I am rather happy with how I have architectured both the client and the server. But I have made a few poor decisions that need to be addressed now, before they become a problem. It’s more an “on-the-go” thing than an “it’s done” thing, but it’s the top priority nonetheless.

2. Personal spaces. It is a core feature of the game, and I need to have at least one new of such features up and running, even just to have something to show. It implies quite a lot of sub-systems to implement (“housing”, crops, cycles, …) or move forward (player cities), so it will be a time-consuming development. I’m still finalizing the game design for it at the moment, but I hope to start developing it very soon.

3. Another graphical rework of characters. It is one of the few things I have prepared on the side, and certainly nothing critical, but I have slightly adjusted the look of characters to return to something more akin to the first game models I created years ago, except at a slightly higher voxel resolution. It’s one of the things I had actually plan for 2019 that is already partially done.

And there we are. I would like to say that I’ll try to news more often, but I’m more likely to code when I have some time than to write a blog post. I’ll do my best either way, but the past proved it was far from enough, so let’s see how long it will be until my next post. See you soon (hopefully).

It’s recap time

It’s been no less than 13 months since I last updated the dev blog, so, it’s more than time for a recap and some news about Metaworld. What happened during the last year, what’s going on at the moment, and what I plan for this year.

The plan that was

I initially started working on Metaworld’s prototype at the end of 2014, after a few years digressing around voxel engines. For most of 2015, I worked fulltime on the game, gradually building a robust engine both on the client and the server sides, and implementing the first gameplay mechanics. I initially expected a release in the second half of 2016, something that didn’t happen, as you can see.
The plan actually changed in late 2015. At that time, I was evaluating the remaining work load at roughly six man-months. What would have matched the schedule if I hadn’t to include the business/marketing aspect of releasing the game. The fact is that I gradually got late in the development due to unexpected but necessary graphical improvements and a rework of the character style to differentiate it more from the existing offer (mainly Cube World, that is).
In a best case scenario, the game would have been released at the end of 2016 or early 2017. One additional year was unfortunately a bit too much for me, so I accepted a job offer for a software engineer position, and since then I’ve kept working on the game on my free time.

What was done in 2016

Not being fulltime on the game allowed me to stop focusing purely on development, and instead to make a game design check up. I already had some doubts about some systems I designed that didn’t seem to work as well as I thought they would, so that was the perfect time for it (note that if I kept working fulltime I would have needed to do that check up anyway, what would have pushed the release even further).

The check up made it obvious that the game has two major issues:

  • the vastness and continuity of the overworld: this is a desirable feature for a virtual world as it improves immersion and creates a true sense of a “world”. I planned mechanics to go with the immensity of the world (mobile resource hot spots, dynamic mob spawns, rare events/object spawn, etc), and reward exploration, but at the moment the incentive is not that strong. This problem is something that I’m still working on. Many possibilities, but they’re all give and take.
  • the player city/housing system: it is suffering from the same “messy town” issue than most player city systems, and isn’t working well with terrain variations. To put it simply, it’s ugly. I have (mostly) settled on a solution, but not on the details. It’s very likely that I’ll change it in favor of an procedural/organical growth approach. Basically, a player plant a city seed, and by feeding it with specific materials, a city layout creates itself around (with either complete buildings or purchasable building spots).

Beside the check up and work on the game design, I’ve mostly done bug fixes, added UI details, and did a lot of graphical experimentations (shadows, ambient, occlusion…), the most notable being a deferred renderer.

The current state

Since the beginning of the year, I’ve mostly worked on adding a DirectX 12 support. Note that you can still play the game with XNA, what will be useful for older PCs.
The DX12 support was done with the goal of adding a VR support to the game (yes, “that” VR, as in Virtual Reality). At the time I’m writing, both of these objectives are close to completion, only the 2D is left to implement, and I’ve experienced the game in VR quite a bit :). I still have a lot of polish to do, but all of that makes a good 2017 start!

The plan that is

For now, I don’t intend to go fulltime again. I have the necessary resources for it, however I still need time to rethink the parts of the game design that don’t work, a task that I’m most efficient at when slowly processing informations and ideas, rather than when working on it fulltime. In the meanwhile I’ll keep improving the tech that runs the game, add content, and implement the remaining gameplay mechanics. I’m committed to create a great game, and will keep moving forward, even if a bit slowly.

Additionally, I’ll try to update the dev blog more often. It usually takes me a lot of time to write a post, but since a few people recently asked me about the game by mail, it seems as worth as ever!

Until next time.

Screenshot saturday #7 and map editor video

New screenshot based on what I’ve worked the most these days: improving the environment. To do this, the map editor has been upgraded (check the video below to see it in action), the biomes has been slightly reworked, a sea level has been added and both a vertical fog and an horizontal fog has been implemented. Nothing ultra fancy but the rendering is quite better, and it now allows to find some interesting sceneries that I’m not necessarily aware to create when editing the map from above. For example, this scenery :

Moutain view
Newly added water and far distance fog on a small moutain equals to a somewhat nice view.

And here the video showing the map editor. Quick and efficient with the procedurally generated biomes transforming a plain heightmap into green hills, rocky mountains, or sea shores:

Screenshot saturday #5

New screenshot for this (freakishly hot here) saturday.

If you remember my post from two weeks ago about the UI, you may remember aswell that I was planning to rework the text display. It’s done. Much nicer with antialiasing.

The screenshot contains a mob fight with a hundred entities around. It was mostly a load test, but makes for an interesting screenshot. Note that I can go up to 500 fighting entities on that little square of map before encountering problems. Not exactly what is supposed to happen.

Fighting Mobs
3… 2… 1… Ready? Fight!