Archive for the ‘ Graphics ’ Category

Nordenfelt Dev Log 41

The tech tree finally gets it’s long outstanding attention, lava is OK but not great and Nordenfelt waits for Desura’s go.

Nordenfelt on Desura

At the beginning of this week I’ve uploaded Nordenfelt to Desura. Since then it’s stuck in their review queue. So the ball is in their court now. In the meantime I’ve added new equipment …

Bot Swarm

The tech tree is a core feature of Nordenfelt. Despite this intention I had to neglect it til now. So just 2 main weapon increments were available for a long time. Simply put, it was empty.

Now I’ve added the first standalone equipment: bot swarm

bot swarm in action

It’s simply a set of shooting bots accompanying the player ship.

The next equipment will be something more unique. “Unique” is a bold word because most equipment ideas already got implemented sometime in shmup history. I would need to know all shmups to be sure nothing comparable has ever be done. Nonetheless, the probability is rather low that I’ll reinvent an unknown wheel.

Basically it’s important to have a mix of novel and well-known features. Too much new stuff and people get scared off by the “experiment”. Too much well-known and the game gets tagged “old hat”. So the plan is something known, something new, something known, something new, etc.

Lava Level Continued

The lava level backgrounds don’t have satisfying quality yet. They serve their purpose and players won’t recognize their blandness as long as enemy hordes enter the screen. Nevertheless I can call them done.

lava level background

They are not as good as I want them but done and releasable. And that’s the only thing I have to know to sleep well at night.


P.S.: Get real-time updates via Twitter feed @nordenfeltgame.


Nordenfelt Dev Log 40

The last 3 weeks led me down a rather bumpy road. After completing a few minor but motivational tasks I hit a road block. It was a problem of show-stopping nature.

Deploy System

In the last dev log entry I’ve mentioned working on an auto deploy system. It’s done and follows this simple scheme:

  1. get Nordenfelt‘s  latest version from SVN repository,
  2. compile it,
  3. archive it and
  4. upload the archive to the web server

I start to like scripting common tasks like deploy, directory cleanups an the like. Even if the scripted task can be done within seconds by hand, double-clicking a script file takes a fraction of a second, is less error-prone and needs less brainpower.


I’ve contacted Desura regarding alpha funding. They were positive about it but wanted a little more media to show. So I started working on a second level type: lava.

lava experiment collage

It will take a while ’til I can craft good lava levels. This collage is just an “outtake collection”, resulting from learning how to draw lava stuff.

Making Level Generation “Dumber”

When I was experimenting and testing the new lava tiles in-game I hit the initially mentioned road block: the level generator started to crawl. The increased number of background segments combined with the exponential growth of combination possibilities killed the performance. The problem was that too many, yet necessary rules where taken into consideration for stringing together level tiles to a complete level. A few optimizations made it faster but it was the overall algorithm which had to be changed finally. The solution was an easy one, derived from thoughtless human behaviour:

I know it when I see it.

The new generator code cranks out dozens of possible levels WTTM and a final decision maker algorithm chooses the best solution. Imagine a crowd of apes assembling prefabricated houses and one smarter ape who decides which one comes closest to habitable shelter. Sounds primitive? Yes, it is. And it works. 🙂


The jump to Desura became more of a low hop. So next time I want to tell you “Nordenfelt is on Desura”. Fingers crossed.


P.S.: Get real-time updates via Twitter feed @nordenfeltgame.

Nordenfelt Dev Log 39

The release of Nordenfelt 0.6 is coming close. The equipment tech tree is still missing and there are not enough bosses yet. Nevertheless the first beta version is within sight.

This happened since the last dev log entry:

Gameplay Tweaking

I’ve spent quite some time on improving the gameplay. The biggest issue was (and still is) the difficulty of the generated levels. Several factors like bullet speed, frequency, shot patterns, enemy density and the player’s weapon strength have to be balanced properly. I’ve integrated a difficulty system which determines for different difficulty levels how fast bullets travel, how many and which enemies can enter the screen, etc.

It’s an issue under continuous treatment.

Level Segments

A few new background segments were added to the game:

grain field/rural combiner

rural/grain field combiner

Crop circles are on the way. 🙂

I also dabbled in drawing a river segment. IMO it turned out not that bad, maybe a little “naked”:

rural river segment

The water stream is not animated. The funny thing is: when you’re playing the game the down-scrolling background creates the illusion of moving water. The eye simply sees what it wants to see.

Fighting Embarrassment

Most game developers (or stuff producers in general) will know this feeling: You keep improving your product because you think it’s not good enough to get published. I had this feeling back in 2010 as I have it today. I see it as some kind of stage fright.

I’ve started two counter-measures. The first was sending the “please fund me” email to Desura. When they say “yes” the ball is rolling and I have to release on a regular basis. It’s no big deal, just getting started is the tricky, frightening part.

The second procrastination killer is an auto deploy system I’m currently working on. It’s simply a sequence of scripted steps to fetch the latest version from Subversion (yes, I’m not using GIT), compile it, pack it and upload it to the web server. When deploy is just a double click onto a script file there is no excuse to not do it.

See next time.


P.S.: Get real-time updates via Twitter feed @nordenfeltgame.

Nordenfelt Dev Log 38

Much happened since the last dev log entry. Level backgrounds got finished, boss AI was extended and the level generator grew up a little.

Rural Level Segments

I’ve created several seamless background segments showing rural areas. You may guess which game inspired me for this level type. 🙂

rural level segment

Most effort went into figuring out how to create the details, e.g. how to draw paths, tricks for making the segments seamless or how to create proper water. After figuring out the procedures for drawing the details it became easy to crank out new level segments.

I’m quite happy with the quality of the new background segments. Finally I’ve reached the point where I can make backgrounds of sellable quality.

Boss AI

The first boss got an AI update. Now it has two attack phases with different behaviours.

The most time-consuming task was the debugging. The turnaround times for tweak-compile-play-analyse can be quite long when you’re using C++ and (way too) complex AI code. I’ve considered using a script language for faster turnaround times but decided against it. Integration and porting of the AI would have taken longer than struggling with the C++ AI code. Maybe the next boss will get script support. Maybe.

Level Generation by Blueprint

The level generator got a new feature: level blueprints.

The old generator version took a set of enemy formations, background segments and assembled them according to a specified difficulty. The result was a random sequence of enemies battling in various climate zones within the same level. This testified the narrow “intelligence” of the generator algorithm. So I gave the generator a set of blueprints which instruct it how to assemble sequences of enemies and which background segments make a good level together.


A big flaw of Nordenfelt was the restart at death. Just one hit was enough and you had to start the level from scratch.

There were different solutions to fix this issue:

  • continues,
  • lives,
  • health bar,
  • no death at all

Finally Nordenfelt is a non-linear game and you can play the levels in any order you want. Therefore continues would have been senseless. No death at all would have killed the basic challenge: beat the level. The finalists were lives and a health bar. When you lose a life and can go on right from where you died then there is no difference to a health bar. This is why I decided for good old lives.


P.S.: Get real-time updates via Twitter feed @nordenfeltgame.

Nordenfelt Dev Log 37

It’s time for a Nordenfelt status update. On Saturday my dev machine went belly-up so I have time to write a blog post while waiting for the new machine. 🙂

Procedural Level Generation

Designing fun levels isn’t easy. Teaching a machine to generate interesting levels is even more difficult. It’s like telling an instinctless child how to behave. Each time it does something wrong you have to intervene and adapt its behavior for the better. E.g. don’t send in the most difficult boss at the end of the first level.

Developing a level generator relies heavily on iterative improvement. I’m no longer that naive to try to estimate when it’s finished. It’s an ongoing process, aside all the asset and AI programming work. I’ll simply abandon the generator when everything else is done.

Assets, Assets, Assets

I’ve switched from pre-rendered 3D models to “hand-drawn” 2D sprites. It turned out that drawing enemies in GIMP is faster than the first-3d-then-render approach. This blue hovering plane was completely done in GIMP – no 3D involved:

hand-drawn bomber sprite

The level generator needs quite a lot of different background tiles and enemies to spread throughout the levels. So I’m busy cranking out new enemies, floor textures, building sprites, vegetation, etc. at the moment.

The good thing about the generator is that it integrates new backgrounds and enemies immediately. There is no need to add new assets in levels by hand. This is a nice side effect which enables continuous extension in a rapid manner.

Plans For Desura

In 2011 I’ve asked Desura if Nordenfelt would be a candidate for their alpha funding program. The reaction was positive. The only flaw they wanted fixed upfront was the soundtrack. The tracks were preview versions from audio stock sites and had voice overlays saying “preview” again and again.

At this time I ran out of money so I had to get a job. Desura wanted their alpha funded games to be in constant development with regular updates. I did not want to be forced to deliver this aside a full-time day job. Therefore I’ve abandoned Desura.

Now I’m ready for the alpha program. I just have to get in contact with Desura again. This will happen within the next few weeks. I’ve already set up Nordenfelt at IndieDB, as an entry point to Desura. I’m not active there yet but that will change when Desura greenlights Nordenfelt.



P.S.: Get real-time updates via Twitter feed @nordenfeltgame.

Nordenfelt Dev Log 34

Nordenfelt comes full circle. I’ve revived two features which disappeared from the design documents a year ago: level generator and world map.

These two features where part of the canceled adventure mode. This mode was cut due to the pressure of making a living from Nordenfelt. During the last two years just bullet hell shooters were released. At least that’s what my news channels reported. It seemed the market was reduced to this type of shmup. So I tried to adapt Nordenfelt accordingly.

Now that I have a steady income again the need for entering this crowded market is gone. Now I can go on experimenting and do things differently. That’s what I like most about making games. Participating in the rat race of faster-higher-stronger sounds like long-term suicide anyway.

Level Generator

Level design follows rules which should make levels interesting, challenging and fair. An example would be: difficulty has to rise over time. Players get better so the challenges have to get tougher as well.

Another criteria to meet is the learning curve:

MMO RPG learning curves

Courtesy of

Ideally games should present new mechanics or features to learn after the last one has been mastered. The level designer’s job here is to find out how long it takes the average player to master each skill.

Third example: dramatic structures in their usual sequence of intro, crisis development, climax and resolution.

Further, simpler rules would be scalar factors like level length, boss strength, bullets per second, powerup density, risk/reward amplification, etc.

Finally many tasks in level design, at least formal ones, can be automated. There’s no need to sit down and plan each level from scratch. Nordenfelt’s level generator will serve at least as boilerplate for creating level skeletons. The rest is filling out details by “design intuition”. Time will tell how much level design can be formalized and converted into code. The optimum would be a full-blown, no-intervention generator. That would be cool!

World Map

Nordenfelt has random-accessible levels now. There’s no longer the need for going through level A and B just to play C. Therefore there has to be some kind of level selection. This will be done here:

Nordenfelt map screen

The big dots are test markers for the available levels. I’ll draw proper graphics for them tomorrow.


P.S.: Get real-time updates via Twitter feed @nordenfeltgame.

Nordenfelt Dev Log 33

Already 2 months passed since the last dev log entry? I can’t remember climbing in a flux-capacitored DeLorean …

Whatever. Let’s have a look what happened since begin of February.

Finished Music

The game’s soundtrack is finished so far. Because there’s just one level yet there will be more work to do. Nevertheless, finding appropriate tracks isn’t that easy. 99% of stock site tracks simply don’t fit the dynamics of the game. So it took quite some time to find the current compilation.

Time System

Nordenfelt got a time distorting system which can scale the effective time flow. There’s a factor for scaling frame times which is usually set to 1. If the game should run faster, e.g. for testing purpose to reach a specific point in the game immediately, this factor can be set to any value >1. Slowdowns can be caused with values <1. Logically pausing can be done with a factor equal to zero. The only thing I’m not sure about is if negative factors work as well …

Released Nordenfelt 0.5.3, Silently

Version 0.5.3 was published in the preorder forum. I did not shout it from the rooftops because there were no real gameplay changes since 0.5.2. I’ve just finished details like explosions and audio, nothing game-changing.

Now I’m busy working on new level content and fresh equipment, the game’s essence so to speak. An equipment type already available but far from ripe is the Tesla weapon:

For future level work I’ve decided to cut back graphical complexity and go for reusable tiles and segments. This idea is quite old as the left of the following two screenshots from 2010 illustrates:

Left half of image shows version 0.1, right half shows coming version 0.2

I’m not sure what exactly distracted me from following the tile concept. Most likely the urge for boundless creativity was the reason. Nearly two years later I know that boundaries are your friends. They coerce you to not expand artistically ad infinitum.

Time to meet finitude.


PS: Just to remind you about the @nordenfeltgame Twitter feed. Feel free to follow and get dedicated info about what’s going on at the the Nordenfelt development front.