<<Previous Archive | Next Archive>>

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.



Mac Mini 2018

I just received a new Mac Mini from Apple. The new one is black. Looks interesting, compared to the three older generations:

Starting it up, it is surprisingly fast (especially compared to the older versions), only that default "natural" mouse wheel scrolling (which is inverted) was annoying. It only has two 'normal' USB ports, the remaining other 4 ports are USB-C, so I guess I need to invest in a few adapters. Another change: The power adapter is now internal, as it seems. It only has a simple cable connecting to the mac. All my older macs have external ones.

So yay, going to write better macOS versions of my Software in the future.



Creating a Tycoon Game Part 2 - Hit Tests and Streets

I am developing a game named Business Magnate. This post is part 2 of its development blog (part 1 is here).

For making the isometric engine more useful, we need to be able to click onto buildings, in order to open dialogs and similar. Detecting if a user clicked on a building isn't actually that difficult: Just check if the mouse coordinates are within the rectangle of the drawn sprite, and if the hit pixel is solid. We also need to check if another building is drawn in front of the current one, and then take that one, of course. For business magnate, I also added a hit-test cache:

The red overlay is the hit cache image, it won't be visible in the final game


What it does is basically speeding up the hit-testing: Every frame, I need to lookup which building is under the mouse cursor, and do a image lookup to do pixel perfect hit-testing. For big images, and a lot of them, this could mean that a lot of data needs to be kept in memory for this, increasing cache misses, or even worse: transferred between GPU and main memory. To prevent this, a size reduced and only 1-bit-per-pixel version of the image is created and held in memory, to do very fast hit-testing.

If for example we have 10 building types with a size of 512x512 pixels, we would need about 10 MB for this, which would have needed to be transferred and unlocked. The hit-testing images only need 0.3 MB instead, which is a very nice improvement for this.

The fact that the image isn't exactly matching at the borders is negligible, the error is too insignificant for users to notice. I tried it out, and it feels very nice. Also, the game runs quite fast that way on slower systems.

Additionally, I implemented a quick way to easily create streets:


A simple algorithm quickly scans for neighbouring tiles after the user placed a new street tile, and adjusts the tiles to connect in order to form streets. No magic there.

I'm not yet sure if it will be necessary in the game to have an efficiently planned street layout, but the company and building setup you can create in the game will definately look a lot nicer with proper streets.

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



CopperCube Roadmap

When I started developing the Irrlicht 3D engine nearly 20 years ago, I always had a public roadmap on the website. Not sure why I didn't make one for the CopperCube 3D game engine as well. So time to change that.

The official CopperCube roadmap is now available, too. It's still a bit empty, but I guess it will fill more and more during the next months. It only contains the big items (not bug fixes and similar), but if I forgot something very important, please let me know!