PostCollapse Post-Mortem

PostCollapse was my first one-man-game published on Steam, made with my also one-man-self-created 3D engine CopperCube.

Although intended to be a small side-project game, it sold around 4000 copies as of today, so here is a small Post-Mortem:

First Steps: WebGL

When I started developing PostCollapse 7 years ago, it was supposed to be a WebGL game to be run in your browser from a website. WebGL was new and I expected it to replace the back then still popular Flash game scene (and it turned out I was very, very wrong), so it made completely sense to me.

The name of the game was planned to be "EndTime at Home".
I wrote it with a procedural generated world (terrain, houses, trees etc) and self-created textures and self-composed music within about 4 weekends. It was very ugly and a bit slow, but it worked.
Here is a video of the first prototype running it.

The game had very thick fog, because the browser would slow down too fast, otherwise. Not because of rendering the 3D world, but because the on-the-fly procedural generation of the world was too slow. Back then, the Javascript engines in the browsers weren't as fast as today, unfortunately.

WebGL: technical problems

I refined the game over the next weekends to make it look nicer and contain more gameplay features such as furniture, weapons, animals and such, but I wasn't able to overcome one critical problem: The game still appeared to be very slow. But the problem wasn't the 3D rendering speed or the generation of the world, those were now very fast. The developers behind the JavaScript engine in the browsers really had done an incredible job.


The problem was that the browser had a mouse input lag. A movement of the mouse was sent to the code with a huge lag, making the game to appear very slow. A lot of other developers had the same problem, and there was even a highly upvoted bug report about this in chromium bug database, but the Google Developers had answered that they weren't planning to fix this. So I was stuck somehow with my concept.

Steam Greenlight

In the meantime, Valve kind of had opened Steam for all developers with a program called Greenlight: Developers could post there ideas for their games, and if enough users voted for the game, it would have a change to be published to Steam. I renamed "EndTime at Home" to "PostCollapse" because I thought that name described better what the game was supposed to be about, and posted it on Greenlight. To my surprise, it was upvoted quickly, and allowed to be released on Steam.


The Problem: I only had the WebGL prototype with the mouse input lag problem, and this wasn't at all good enough to be published on steam. So I set down, scrapped all the code and re-implemented the game in C++.

Early Access Release

After a month of work, the game ran nicely as it was now reimplemented using CopperCube's C++ base. I had added a lot of stuff like tutorials, objectives and more, so I released it as early access on Steam.
The reviews were mixed, a lot of people didn't like the unusual way the game is supposed to be played: In an empty, large world, no zombies or other types of monsters, just you against nature. Too boring for a lot of people. But I guess this happens when I create games which I want to play myself, and are not targeted at the average mass market. Also, the market of survival games was quite oversaturated even then, and people expected something a bit different.

Still, about 60% of all players recommended the game, so I was happy.

Updates after the release

I did 17 bigger updates of the game after the release, adding content and gameplay changes. The graphics and style of the game evolved and improved significantly during this. I even added a type of "Minecraft mode" to the game: It is now possible to modify any building in the game by adding and removing blocks to the walls.


The Numbers

I translated the game initially into English, German, Russian, French and Spanish, because those are the languages I and my wife speak. The community helped improving those then. The USA, Germany and Russia are also the countries where the game is mostly bought and played.

The development costs were basically the license fees for some 3D models and textures. This is of course without my time creating 3d models, composing music, drawing textures and programming. Figuring that in, the game would be of course a big loss.

But as with all my other games, I create them because I want to create them. And I create games which I want to play personally, not because I want to earn a lot of money. Working as indie game developer is very risky and comparable to playing the lottery. I do games only as side-projects, and can only recommend doing this for other solo developers, because you have a high propability to ruin your life otherwise.

I usually sell most copies of PostCollapse during Steam sales, where PostCollapse is discounted. People are ok spending a few euros for playing an unusual survival game. And I'm happy when sometimes people leave a positive review, telling them that my game made them a bit happier.


Hope you liked that PostMortem. Of course, please try my other games on Steam and ask my any question on Twitter, if you like.



The craziness of developing a WYSIWYG web editor in 2019

For a few years now, I'm developing a free WYSIWYG website designer named RocketCake, which is modestly successful: I estimate a high five digit number of people actively using it today.

I don't earn very much from it (there is a 'Pro' version which you can buy to support development of the editor) but it is enough to continue doing this besides my other projects, and I enjoy that.


I've learned a ton of unusual things while working on it - like there are still web servers out there choking on double file extensions or browsers on specific unicode characters. I've read and implemented quite a lot parts of the HTML and CSS specifications, and became a fan of the wording "The exact algorithm is not defined" - which today roughly translates to "figure out yourself how Chrome does it and copy that".

But one of the most interesting things is the controversy the editor seems to cause, when people notice that it exists at all. Here are some direct quotes from mails I received in the last 3 years:

"Go back to 1995 to where your software belongs"


"Nobody needs your [swear words here] Rocketacke (sic), I can code HTML myself, thank you!!"


"WYSIWYG editors are for amateurs! Just use Visual Studio Code"


And similar.
What makes this so outstanding is that some people even take the time to write this to me. As if they are somehow personally offended. I'm not sure why.

Of course, and fortunately, there are a lot of people not thinking this way. RocketCake is one of the few pieces of software I created where people send me tons of constructive feedback and friendly feature requests, which makes it pleasant to work on.

It is also very interesting that you have to catch up with the current trends and designs of web development, even if you just create a generic blown up text editor, basically: You need to adjust defaults and templates all the time. People wanted tables with shadows, then gradients everywhere, then rounded corners, then flat stuff (and god-no, no shadows!), then shadows again, but different ones, and giant font sizes with giant line heights. Everytime you make a release with up-to-date defaults, it looks like the next trend is just around the corner.

Together with the game engine I'm developing, this is one of the more challenging pieces of software I've been spending my time with. I know, a WYSIWYG web editor is not the trendiest technology, but as long as it is useful to people, I'm going to continue working on it.

Although it seems to appear crazy to apparently a couple of people.



Switching to an Electric Car

I did it. I just switched to an electric car.

And now after driving it for a couple of hundred KMs, I think "Why haven't I done this earlier?". It's great, and the shortcomings I feared there where are actually non-issues.


I didn't get a Tesla since they are a bit expensive for my taste (although I like them), and there are lots of good cheaper electric cars out there. Like the Nissan Leaf, Renault ZOE or Hyndai Ioniq (I chose the latter).

Here are some things I learned about all this, which maybe might help you if you are thinking about switching too:

Getting the Car
I live in the area around Vienna, which is the area with the highest density of electric cars in Austria. Nevertheless, when I went to the dealer and told them I want that Ioniq Electric, they asked me multiple times if I am sure, and if this is for me as private person. The dealers didn't seem to know much about any of the technical details like the polymer battery, temperature management or other features. Which was a bit of a let-down. Electric cars seem to be still a bit exotic even for the dealers.
But I also noticed that there seems to be slowly building up a market for used electric cars, which is very nice, so this is more and more and option now, too.

Charging
First thing I noticed is that you just have to treat the car like a big smartphone. Wherever you are, just plug it into the next socket or charging station. Just like you do with your phone. Long charging times are not a problem, since you nearly never drive it until the battery is empty. And for long range travel, for the Ioniq at least, you can actually recharge it within just 20 minutes at a fast charger. Which is faster than my kids take to get out of the car, to the restroom and back again.

Accessoires
Charging cables and wall boxes are surprisingly expensive. A type 2 cable costs 250€, and a wall box around 1000€. You don't need those, but they make your life easier, and they are just a one-time investment, so I think they are worth it.

Charging Network
When driving around, you sometimes need to charge at EV charging stations, and there are tons and tons of networks to choose from, even in such a small country like Austria. There are 12 large networks and a lot of smaller additional ones. You need a card or app with account for each of them to charge at their stations, which is confusing and stupidly complex. Recently, most of them have started cooperations, so you can use a card of one provider at the station of another one, but it still is confusing with the tariffs, and you never 100% know if it will work. Not sure why they just simply don't take debit or credit cards as payment method, just like every gas station or shop on this planet.


I still have to accumulate a lot more experience, this was just what I noticed within the first days of having the car. But I really had a very positive experience so far. I'll probably post an update in a few weeks.




Creating a Tycoon Game Part 4 - UI and dialogs

I am developing a game named Business Magnate. This post is part 4 of its development blog (other parts: part 1, part 2, part 3)

One of the most time intensive parts of creating tycoon games or simulation games in general is also the most boring part: User interface. It is hard because the user interface needs to be functional, good looking and easy to understand at the same time.


And in addition, for the type of game I am working on: It needs to be able to update itself in realtime - everything can change while the dialog is open - and it needs to be able to do this quickly, without much framedrop. All togehter, this is a terrible, terrible combination.


Nevertheless, Business Magnate has a total of 23 dialogs (including subdialogs) like this. I am quite happy that - as user tests reveal - most of them seem to be very easy to use and understand, but I think I could still improve some of them. But on a side-note: If I ever mention that I want to write another game like this with that amount of UI - please someone shoot me.

I also had to add another, quite interesting feature, related to UI: When I played through the game the first time with a "Rockets" business type, I was so busy adjusting production settings, doing marketing and research, ordering materials and so on, that I never had the time to watch my rockets take off, although I really wanted to. I simply always missed the rocket launches. So I implemented this thing here:

This looks like a simple message box, easy to add, right? It is actually a bit harder: The game needs to detect that you won't see the launch - maybe because you are busy in a dialog, have a too fast gameplay speed or watching somewhere else, and only THEN ask for this. Then it needs to be able to scroll and zoom to the right place, and it also needs a setting in the options so that you can turn this feature off if you think it is too annoying.
But after all this, it was worth implementing this: Watching the rockets you designed, marketed and sold, lift off into space is quite a reward - I wished there was a similar event for other business types such as cars.

Anyway, the game is now nearly finished already and will release in less than 4 weeks on steam. I hope that everything will work out until then. A lot of testing still has to be done.

If you are interested in the game, you can subscribe to the newsletter on the game's website, or follow me on twitter. Or wishlist here:





Happy new year!

I wish all the readers of this blog a happy new year! May you be successful and have fun in 2019!

Also, as the tradition demands, I give away my software for a big discount, for a short amount of time: The ambiera new year sale is running again, currently. There is for example RocketCake 2 for -50% and CopperCube 6 for -30%, so there is something in for you too, maybe.



CopperCube 6 Pro Steam Sale

Today is the first sale of CopperCube 6 on Steam: It is still basically free, but if you want to support CopperCube, you can buy the Pro or Studio edition (a DLC on Steam), now with a -30% discount for a few days.

If you already own CopperCube 5 Pro, there is also a Steam bundle which makes it even a bit more cheaper for you.



Creating a Tycoon Game Part 3 - Rockets and Particle Systems

I am developing a game named Business Magnate. This post is part 3 of its development blog (other parts: part 1, part 2).

I programmed a lot of particle systems in my life, but when I started implementing the game engine for Business Magnate I wasn't aware that I would need one for that game, too. It is a tycoon game, after all. But what was I thinking, of course I need one. Besides other types of businesses, you can create space companies in that game, and launch rockets into space. Rocket engines produce fire and smoke, so - yes - of course I need a particle system. So this was what I came up with: It might need a few adjustments, but it is looking ok so far, I think. It works like this: Each particle is a structure in an array and has an image and a position, movement speed, and lifetime assigned to it. Every frame, each particle is moved and animated (faded out based on its lifetime, in that case):

void animateParticles(timeDelta)
{
  for (i=0; i<Particles.length; )
  {
	var p = Particles[i];
	
	if (p.TimeToDelete < timenow)
		Particles.erase(i); // delete particle		
	else
	{
		// move particle
		
		p.X += timeDelta * p.SpeedX;
		p.Y += timeDelta * p.SpeedY;
		
		++i;
	}
}

All particle systems I wrote so far were in 3D, but 2D ones are the same, only the Z component is missing. I probably will have to adjust the position of the fire a bit for the different types of rockets, but I think for a business game, they look ok so far.

Another thing which you might have spotted on the .gif above is this: There is a car moving in there. I originally wasn't sure if the game would have animated cars, but I decided that it would be much nicer with them. The Minibus you can spot in that gif is the first attempt at making this work, too. I'll likely write more about that next time.

Business wise: The game has a Steam page for a few days already, and it is possible to wishlist it on Steam. A handful of people aleardy did, which is very nice. But the Steam community forum is quite empty so far. Nobody seemed to have an interesting question about the game so far on steam, not sure why. Hope it is because the trailer answers all questions already. :)

If you like the game, you can subscribe to the newsletter on the game's website, or follow me on twitter.



RocketCake 2.2 - Mojave troubles fixed

I just uploaded version 2.2 of RocketCake, the free responsive website editor I am developing: I had to push this out because some people sometimes had problems with the editor UI not working at all: Sometimes, ComboBoxes and sliders simply wouldn't work at all. I bought a new Mac Mini among other things too be able to reproduce and fix this problem, and after many tries, somehow, finally RocketCake behaved exactly the same as reported by some people. Still not exactly sure if this was the reason, but I was able to fix this behavior by rebuilding a few underlying libraries, linking with a newer MacSDK, and making RocketCake stricktly 64 bit only for macOS.

It's a bit scary, though. Especially since this only happened on Mojave and the app works perfectly on all previous 6 versions. Hope Apple will test their OS a bit more before shipping it in the future.



First Gameplay Video

I just created a small gameplay video of Business Magnate, I think it shows a bit better how the game will play like:



Any feedback is welcome.

Also, there is now a steam page for the game. So you can put it on your Steam wishlist, if you like:



Also, if you want to help, you can upvote the tags of the game on the steam page.




Changed the name of the game

Some friendly people let me know that the planned name for my next game, which was "Business Builder" probably wasn't a very good choice: There is a mobile game which has a similar name, although not the same one. That's also why I overlooked this. Still, unfortunate. I could go on using "Business Builder", since it is not the same, but to avoid confusion and because the game is still in development, a change of name is a good idea.

So I changed the name, and "Business Builder" will now be named "Business Magnate".

Website and logos are already converted, and I think although that new name is a bit more complicated, it better tells you what the game will be exactly about.