Category Archives: DSP

DSP Update – 19th January

Its that time again!

This last week I spent lots more time balancing River TD, and I’m getting quite happy with it finally.

While doing this (I’ve played River TD so many damn times… so so many times) I found some small rendering issues and cleaned them up.

Here is the list of changes as of Friday night:

  • Air enemies render on top of land enemies.
  • Health bar renders on top of everything (Before lasers would stop you seeing the health bar).
  • Refactor some code so that the [New Game] button works.
  • Fix selling laser type towers (Was crashing the game)
  • Ability to make enemies loop when they hit the end of their path, so you have to eventually kill them.
  • Always give the same amount of points for killing an enemy (Previously it decreased the longer an enemy was alive).

But of course… There is more 😉 I spent all Saturday (and another hour today) adding pathfinding, just like the flash based Desktop Tower Defence.

Maps can now specify pathfinding and enemies will work out their own way around your towers! This leads to all sorts of cool new map ideas, I have one up my sleeve 🙂

Here is a screenshot from the test level showing it off:

DSP R304

DSP R304

The plan for the next week is to catch up on my sleep and maybe add another new feature to the engine before I start work on another level. 🙂

DSP Update – 12th January

Nothing much to report this week….

I put all of the enemies in order for the level and have begun balancing them, the rough cut I have so far is looking fairly good, if maybe a little difficult.
Over the next week I’ll be playing and replaying until I am happy with the difficulty.

I have a massive spreadsheet for enemies and another one for towers.
One of the things I’ve found with the current development version is that there is no reason to build anything except laser towers.. So I’m trying to combat this, which is turning out to be a lot more difficult than I expected!

DSP Update time!

Its time for another weekly(ish) update on DSP progress.
The last week I have been mainly focused on content creation.

  • Change XML so that levels can have multiple maps, similar to Vector TD
  • Surreal contributed 3 new maps for River TD, so you can fight on different (harder!) rivers.
  • River TD now has 46 enemies, all hand crafted by myself.
  • Fixed 100% CPU usage in windows.
  • Range ring improvements – Draw them Anti-Aliased, don’t show both when upgrading if you don’t need to.
  • Graphics to go behind the top numbers in mouse_ui
  • Gave the window a title in windows/linux builds 🙂
  • Added health bars to enemies
  • Fixed towers not shooting on long maps, or shooting off map on short ones
DSP R249

DSP R249

Another DSP Update

Since Marcel complained, here is an update 😛

I’ve added laser weapons and replaced the harpoon gun with a laser instead.

I’ve reduced the size of RiverTD to 480×480 px so that it will fit perfectly on the MouseUI. I plan to redo the Gamepad/PSP interface so it will fit on there too.

I’ve added a fast forward feature, so you can zip through the waves.

Added the ability to sell towers.

Added descriptions to tower upgrades.

Made the existing tower descriptions more descriptive.

And a screenshot:

DSP R196

DSP R196

The Gamepad (PSP) UI is broken at the moment, I plan to rejiggle it so that it is more like the Mouse UI, so I’ll fix it then.

DSP Progress (With Screenshots!)

So progress has been coming along fairly well on DSP.

I’ve moved the text renderer over to a variable width font, which looks much nicer and gives more room for useful text.

The Mouse UI is coming along quite well, the core game can be played through including tower research, wave details, etc.
The only bits missing for an individual level to be properly playable is the ability to upgrade/sell towers, which I’m currently working on.

Here is a totally uninteresting looking screenshot of the current mouse UI:

DSP R118 Mouse UI

DSP R118 Mouse UI

The Gamepad (PSP) UI has fallen into disarray a bit. I plan to clean it up and port over some of the nice UI improvements from the Mouse UI to bring it up to scratch.


DSP R118 Gamepad UI

Anyway, I just felt like posting an update since I’ve come down with a cold and am having difficulty coding 🙂

Once I get the Mouse UI to a properly playable state, I’ll post a build for windows/linux/mac (and update the sourceforge SVN) which will let level devs (finally) try out the XML based level format.

DSP Mouse UI

If you have been watching the DSP SVN logs recently you will of noticed I checked in a draft for what the Mouse Interface for DSP might look like.
You can check it online here: http://OFFLINEZIP.wpsho/dsp/draft3.png
I’ve started implementing it in a private SVN, I’ll sync up to when I’m done with it.
Expect also to see a new level or 2 from myself when this happens 😉

So far the implementation has only changed slightly from the draft, once it gets further along I’ll post an updated draft and maybe some screenshots 🙂

You’ll notice in the draft image that tower upgrades have a textual description. This will effect the gamepad UI also, I’ll check this into the SVN once it is done.

DSP Update…

If you’ve watched SVN lately(ish) you would of seen that I’ve abstracted almost all the system dependent parts.

I’ve decided I need to do the same with GLBits too, but my linux desktop is currently in the lounge…. so I won’t be working on that for a bit 🙂

I’m going to have a go at compiling the SDL version on my Mac and then I’ll port RiverTD to XML.

Update: Support to build on mac committed 🙂

Update2: RiverTD is now ported to XML, I haven’t fully tested it but it seems to work.

DSP isn’t dead!

I’ve started doing some work on DSP again for…. my own purposes 🙂

First up was separating the UI from the Game logic code (which it should of been in the first place!)
I’m mostly done with this, but still have to clean up the sdl_psp/GameMenu interactions with Game.

Once I’m done with this, SDL_Mixer needs to be abstracted away, glbits2 needs to be improved (remove immediate mode, get opengl to do maths, rectangle sprites, etc)

Then….. Finishing off the XML integration, porting RiverTD to XML, and more… we’ll see 🙂

Check the SVN here for the current todo list

DSP on

DSP has finally arrived on!
And its blog:
This means the source code is now available, etc etc etc.

I’ll get some documents up on the source layout and such things as I have time over the next week.

As I have said in the DSP News:

Its been a long wait but it was worth it!
The current release (1.1a) has been uploaded and the SVN repository has been imported.

I’ve decided on GPL v3 for the code, and licensed the existing art under a creative commons license (see readme.txt)

I am keen to have more levels hosted in the SVN, but only ones which are CC licensed.
Only levels included in the SVN will be in the official releases, but there will be a wiki page dedicated to level links.

The wiki pages will slowly show up over the next few days as I import them from various sources.

DSP Status

I’ve applied for a sourceforge site for DSP. It is a takeover from another project using ‘dsp’ as its name already, they haven’t used the project at all however, (it has been idle for 2 years,) so I shouldn’t have any trouble getting the name.
I’ve done some minor improvements since the last release including:
– Show splash/speed when > 0
– Show tower stats when maxed.
– Very minor rendering tweaks.

I’ve also been researching improving the framerate and trying various different techniques.
Currently DSP renders at 30fps on the PSP, dropping to 20 if you are on the ingame-menu when between waves (text rendering is slow by the looks).
I’ve tried converting the rendering engine from immediate mode to use vertices with glDrawArray, this gave no noticable FPS differences.
During this testing I discovered that certain textures of the same size render faster than others.
Looking into this further (including the pspgl source) It would appear to be that PSPGL doesn’t copy/move textures between GE-Memory and System-Memory, so if your texture ends up in system memory you get slower render speed and nothing you can do about it 🙁
Will need to do more research into this including a debug build of PSPGL to find out what is really happening, but that is my current thoughts.
It may be possible to fix this in PSPGL or alternatively switch to using GU for rendering on PSP instead, we will see.
Not something DSP needs as of yet since the framerate stays high even with huge waves with lots of towers firing at them, but something new, fun and interesting to work on at some stage 😉

I’ve also created a draft XML file for the next level format: http://OFFLINEZIP.wpsho/dsp/level_draft_1.xml
This is a proposed replacement for the current level.txt.
Switching to XML for the file formats will give numerous advantages:
– Files become alot more self explanatory (no more, “what is line 5 again?”)
– Better backwards compatibility in the future.
– etc… >_>
Please give it a quick look over and offer any suggestions you may have (especially you Shazz!)

I will also switch enemy.txt / tower.txt to XML files, but haven’t drafted any up yet.

Another interesting thing I’m thinking about adding is the ability to run levels from within zip files, this will make for much faster copying of levels to your PSP.

Thats enough news for now.

Update, will use this post for general ‘next gen’ XML file format discussion.
level.xml changes:
– Capitalize all attributes.
– Add ‘Radius’ to waypoints.
– Change “Name” attribute to “Folder”
– Change Path.flags to be seperate attributes (Boss, SaveTheHouse, UpgradePoint, all default to false)
– Add Enemy.Multiplier, makes old enemies new again! 😉
I’ve also added an enemy and tower draft, no big changes in there yet.

Draft 3
– Add Level.LevelSprite (includes changeable Width, Height)
– Enemy has levels, the first one is used by default unless specified in Level.Waves.Wave.Enemy->Level (Which replaces Multiplier)
– Specify Sprites/Sounds in XML, allows different amounts of Frames for each.
– Add a “Leave Level” sound.
– Add Capability (Hit Ground/Air, Slows), Replaces old tags
– Add Sprites (includes turret position)
– FireSprite (shown when shoots).


Draft 4 (final)

– UpgradePoint is now an integer everywhere.
– InterestLevel/Live can now cost upgrade points.
– Add StartSound to Wave.
– Add Win/Lose (With Sound and Sprite)
– Add Weakness (take more/less damage from certain towers)
– Add PlacementSound
– Add SellAmount to Level
– Add Poison:Damage/Length to Level
– Move Capability.Slow to Level.SlowLength/SlowAmount
– Change to , has supporting attributes for shot animation etc.


Still missing:
– Music, Special music for boss waves.
Smoke trail ShotType.

Missing but may not make it:
Add min range (to define a target reachable band instead of a target reachable disk)