Saturday, April 25, 2015

Cathode Ray Tube Fidelity

We are now all going back to the roots. With increasing screen resolutions we are stepping deeper into the uncanny valley. At least for an average modeller and texturer it is impossible to fill e.g. 1920x1080 with good-looking graphics.

The way out of this valley is of course stylized models, shader effects and scanlines.
In these pictures you will see:
- my icosahedron based explosions
- glow shaders for fire, shots, capsules etc.
- scanlines (every even line is almost black, every other line is exaggerated a bit)
- channel separation (subpixels show some aberration towards one the R,G and B channels)

In my opinion, this looks much fluffier.

Graphics modes where your matrix-based monitor uses scaling will look very ugly...

Saturday, April 18, 2015

The ultraviolence of texture mapping

When you don't use 3d modelling software on a daily basis then it can be an astonishing time-sink when you use it.

I decided to create another ship model because the current ones are mediocre. Now every time I use Blender I try to be more efficient than the last time and to generate higher quality and more maintainable products. Also, to learn some new tricks along the way. The problem is, I am not an artist and not a modeller. I don't learn these techniques in order but I brute-force myself through whatever problem is currently at hand.

This usually works when you can think of a search phrase for googling yourself out of your misery, example:
"blender align vertices among themselves" (the solution is to scale along an axis and type 0 to force them to the same axis position).

A non-fruitful phrase for me was
"blender effective uv unwrapping".

This came out of desperation after I'd spent considerable time trying to control the unwrapping algorithms in Blender. I am today convinced that UV mapping is as much an art as modelling. A good modeller will probably think about the mapping strategy when he starts modelling.

 I am still a dabbler in all things Blender so I am pretty happy with this result. I gave up on improving the results of Blender unwrapping and tweaked a few things manually. I definately learnt a lot about planning ahead for the texture map. Topology is also key, this model uses almost no triangles, just quads.


This is after carefully aligning vertices, thereby removing jitter from the manual modelling process. I also determined which unwrapping algorithm works best for me (Smart UV project with angle ~ 85° and island margin of 0.04).
A major part of the work was also selecting edges as seams for unwrapping and retrying, tweaking etc. etc. Endless fun and desperation.

Btw this isn't even the final version, There are still some islands that can use some rotating for easier texture editing later.
Then I learnt my new favourite trick which set me at peace with Blender after all the rage.

Behold the almighty texture paint mode with face selection


In Texture Paint mode, you get to use a spray gun on your model. A spray gun is not at all precise. I am not talking about the handicap of a mouse user, drawing on a tablet will not change anything. In the best case, your drawing will smear onto other, not connected parts of the model unless you created your UV map with safety distances between the UV islands. In the worst case, you will try to zoom onto edges of border regions and try to not hit the faces beyond that edge. An impossible feat.

That is...
it is not impossible when you tap into the power of "face selection masking for painting". You can now select faces just like in edit mode. If you carelessly wipe a handful of blue ink across a few faces that does feel better than good.... it is empowering.

Of course you won't want to paint the texture in Blender, Blender itself will happily fire up your image editor for you and use the updated texture you drew there.

The texture paint mode seems best suited for marking and outlining the different parts of your model in order to flesh them out later in a real 2D image editor.

Try it!

Real artists, please comment or mail whatever comments or suggestions you have about the topic :)

Saturday, February 21, 2015

Low pH and Loads of Becquerels

This week I have started to implement radioactive acid slime because without it Horizon Blaster just felt empty. In the finished game, the liquid terrain types (lava, ocean, green stuff) will be used in conjunction with other solid terrain or with ground structures like steel girders and platforms.

The other improvement is that level files now contain definitions for placement of buildings. I am using a few simple placement patterns like lines, rectangles, grids and circles. This gets me one step closer to a level editor which in turn brings us closer to real levels.

Low pH and Loads of Becquerels

I also tweaked the homing missiles a bit, they will lock onto a target a moment after launch which makes their handling much more interesting.

Saturday, February 14, 2015

Red Magma and Rocket Trails

Lava is now magma red, improving the visibility of blaster shots greatly...

The technical improvement for today is that some types of weapons now use dynamically updated meshes for their trails. In the screenshot below, the plasma gun and rockets don't generate disconnected particles anymore...

Saturday, February 7, 2015

Playing with Lava

The amount of fire, explosions and lava that you can squeeze into a Shmup is remarkable. Today I did just that.

Shots now leave marks of molten rock on the planet's surface as seen in this video:

Here is what the lava terrain looks like after a complete overhaul. This pool of magma wobbles und bubbles, which is extra motivation to keep your ship in the air:

Against the bright terrain shots can be hard to keep track of. This will need some tweaking.

PS: I recorded the 2 videos in 60 fps but I am pretty sure the processed video I see on YouTube is not. Is there a way to enforce higher framerates?

Saturday, January 31, 2015

New Landscape and a Short Boss Fight

A new video is up, showing the 2D/3D toggle and another landscape. At the end of the level, the evil space train is dealt with swiftly.
After uploading the last video I saw that the energy bars were not updating, which is now fixed.
In the video the first few seconds show a "traditional" bird's eye view of vertical scrolling Shoot'em Ups. The rest of the video uses forward scrolling.

Wednesday, January 28, 2015

Videos now hosted on Youtube channel

I am continuing my experiments with video recording and hosting. Seems like YouTube's video quality is far superior to their own blogspot-hosted videos!

My next steps are some bugfixing and then to offer a small demo for download.

Tuesday, January 27, 2015

Another Video and RSS Feeds

I put another video up in the Media section in an attempt to improve the video quality. I will keep experimenting, maybe I will have to upload to YouTube for better quality.

I noticed that the Chrome browser does not come with any feed reader support. To subscribe this page, for most browsers scrolling all the way down to "Submit to Posts" is the way. Chrome users would have to install the RSS feed reader plug-in and will then find an orange feed icon in the navigation bar. *Sigh of relief*

Monday, January 26, 2015

Gameplay video

I was checking out Open Broadcaster Software and created a gameplay video. You can see two players shooting down some bogies over 2 minutes. This is how the campaign or survival modes would work. All current weapon types are shown, but only one enemy type. This video is also without sound, but there will be more to follow. By the way, the game has a friendly fire setting for those who like to get into arguments with whoever they are sitting next to playing.

Head to the video over at Media

Saturday, January 24, 2015

Modding Horizon Blaster

Game modifications...

We know that nobody has time to waste anymore and that people are sitting on endless bucket lists of games they want to play at some moment. Then why do game developers even bother and facilitate modding of their title? The consensus is that this increases the metaphorical life span of a title. Take a look at how Starcraft's custom map feature lifted off, spawning the tower defense genre. Warcraft 3 repeated the same stunt creating MOBA style games. These successes are based on excellent customization tools.

My aim is not the same quality of tools because my priority is to get the game done and polished. Most modding capabilities of the game came automatically instead of being grafted onto. Usually loading data from files is usually the most versatile way to develop and avoid program compilation times and content creation turnaround. The benefit of this data driven programming technique shall also help the players to tweak the game or create their own content. Maybe an entire "mod" will appear, who knows?

Because I am planning for an online highscore list, there will be mechanisms that disallow scores achieved in a mod from going to the list of official version high scores.


Here is the current state of technologies I use to build my ship create Horizon Blaster.

Languages and Frameworks
  • C++ game and "engine" code
  • Python for internal workflow scripts
  • OpenGL for graphics
  • GLEW to facilitate OpenGL
  • SDL for input and sound
  • FTGL for font rendering (will cycle this out, soon)

Main Tools
  • Visual Studio Express(!)
  • WScite as text editor
  • Blender to model the ships
  • Paint.NET for terrain and textures
  • sfxr for sound creation
  • NSIS for the installer (will change to WiX)
Debugging Tools

These don't go into released versions, but accelerate development.
  • glIntercept
  • AntTweakBar
If you have questions about any of these tools and how I use them, drop me a note. I can explain more in a future post :).

Friday, January 23, 2015


Welcome to the wonderful world of space ship shooting.

You will find news and background info for my game Horizon Blaster right here.

I am hoping to upgrade regularly, should that ever not be so then you must drop me a line and I will push a couple more pixels onto the web.

My plan is also to submit a few technical articles here, so if there is any particular technique or implementation you are interested in, then ask!

Now, to our protagonist:

Horizon Blaster

Forward Scrolling Shoot'em up

Coming in 2015 to desktop PCs

Wait, "forward" scroller, is that a thing?

I honestly don't know, unlike vertical or horizontal scrollers, I have never heard this categorization from anybody else...
Better answer: Well, yes I think they do! What about Space Harrier, which appeared in 1985 and whose "super scaler" hardware dominated its kind well into the 90s.
We also saw After Burner in 1987. By the way, both were created under lead of Yu Suzuka at Sega.

My definition of forward scroller is this:
Where scrolling horizontally is movement of the world along the x axis, vertically means y axis and forward along the z axis.
In a forward scroller the world advances screenwards, in the direction the player looks, the player's forward.

Don't let anybody call this style of play a "rails shooter". It can't be named that because the player is allowed to move to the sides in order to aim. A rails shooter in my definition restrains you to a fixed location but allows you to aim freely.

I am closing with mention of another defining element of all shmups.

Forward ever, backward never!