The Game Creators Newsletter Issue 31

Issue 31 cover - click for full version

Welcome to Issue 31 of The Game Creators newsletter. As another month of Summer goes by, we slink ever closer to the run-up to Autumn and that festive period. A time of the year traditionally reserved for the best hardware and game releases, this year looking to be no exception. But for those that can't wait 4 months we've got no less than 53 stonking new puzzle games here for you! Yes that's right, the Puzzle Game Compo deadline has been and gone, the games tested and verified and they're all presented here for you to play. So get downloading, get voting and we'll announce the winners next issue.

In other news we've got a brand new FPS Creator Video available + a catch-up session with the head developer Lee Bamber. The front cover this month is the great shooter Alien Treasure. There are also tutorials for DBPro, PlayBasic and OmegaBasic, plus a guide from the PC Extreme team on getting old DOS games running again.

Before I go I'd just like to give a mention to the Razer line of full-on gaming mice. Not because they sponsored this or anything, but just because I bought myself a new limited edition Razer Diamondback plasma mouse + an ExactMat mouse mat to run this baby on. I have to tell you - they are extremely cool devices indeed! The mat flips over for a control or speed mode. The mouse itself lets you alter the sensitivity on the fly (up to a staggering 1600 dpi), and it all glows a cool blue colour too. The mouse is shaped with especially elongated buttons that your fingers nestle into, and its ergonomically shaped for long-haul gaming sessions (or just straight Windows use). Pulling off those wild head shots in Battlefield 2 has never been slicker :) So if you're in the market for a new desktop critter, I'd heartily recommend them. And now, on with this issue!


Editorial Puzzle Games Galore! PlayBasic Tutorial FPS Creator News
EZ Serv 1.4 PC Extreme - DOS Games Guide Subscription Special Offer CShop 5.10 Beta
DBPro Tutorial - Timing Smart Particles Review: Alien Treasure Omega Basic Tutorial
IGF 2006 DB Dreamer New DBPro DLLs From the Forums
gameSpace Mini Course Synergy IDE This months winner Outro

Puzzle Games Galore!

Puzzle Game Compo

It's Over!
The Puzzle Game Competition deadline has come and gone. We've no less than 53 games entered, some of which are truly commercial quality. The programmers have all done their hard work - and now it is up to YOU to download, play and rate the games. The most points wins.

Before I list all the games I would just like to point out something - there is 380 MB worth of games in total. Now this is a lot, especially for those of you on 56k. Even if you DO download them all, it will still take you many hours to fairly test each game in turn. So the point I would like to make is - don't attempt to do this alphabetically! Otherwise some of the excellent titles towards the bottom of the list will never been seen, and you'll really miss out. Instead I urge you to read the game summaries that I have written and download games based on those alone - if they sound interesting to you, then do try them. Graphics, especially for puzzle games, shouldn't be a deciding factor either. If you can only test a handful of games then please only download those you truly like the sound of - hopefully this way the voting will be distributed, rather than clumped around the first 10 or so games on the list.

Where are the games?
We have created a unique thread on our forum for each game. The first message of the thread is the game title, a screen shot, download link and a summary. You are free to add your comments to the thread about the game (please note that we'll actively delete all flames) - go to the Puzzle Game Compo Board to access this.

How to vote?
Visit the Puzzle Game Compo Board, click on the game thread and cast your vote by using the form at the bottom. You MUST be a TGC forum member. (and yes, you can vote for your own game if you want!) Pick 4 games out of those entered. The first game will be awarded 4 points, the second 4 points, the third will get 2 points and your final choice will get 1 point. You can leave constructive comments about the game at the same time as voting if you wish. In approx. 3 weeks time we'll add-up all the votes. The winners will be announced in the next newsletter.

3D Traffic Jam
Alchemists Apprentice
Alphabet Mahjong
Anagram Caverns
Atom Smasher
Atomix 2004
BlockMan Remix
Blocks 3D
Bomber Man 3D
Box Attack
Cannons Island
Connect More
Crap Superheroes
Fish Charming
Icon Shuffle
MiR Ware
Mox Blox 2005
Pac Puzzle
Piece it Together
Puzzle Challenge
Save Private Ant
Storm Trapper
Submarine Attack
Traffic 3000
UFO Towers
Download & vote
in the...
Puzzle Game Board

PlayBasic - Types Inheriting the earth

In last months newsletter, we touched upon some sprite collision features under development, which are now a part of PB V1.08. These included Rotated, Vector Shape, Circular and of course Sliding Sprite Collision. While these collision features represent a vast leap forward over 'rectangular' sprite collision systems, my development effort is still focusing on improving the collision system beyond that. To do this means thinking not just about detecting intersections, but giving the user commands to handle things like Sticky Impacts (below), Los (line of sight), Nearest Colliders and Ray to Sprite intersections. Which are slated for inclusion in the next 1.08x. Which should be available in a few weeks time.

In the mean time, lets dig a little deeper into Play Basic Types.

Inherited Types

One of the most tedious aspects of writing programs, often occurs when we need to write code that performs common tasks upon different typed arrays. This is particular evident in game programming, if we quickly examine the type of data most games use. In the most general (depended upon the genre) terms a game with have three, four or more lists/arrays (Players, Player Bullets, Aliens, Alien Bullets, Particles etc) of objects it's controlling. Since everything is stored within different arrays, then we inevitability end up writing some sections (often identical) to handle the base creation/deletion etc over and over and over again.

To help solve this situation and allow you write more stream lined code, we introduced an inheritance feature into PlayBasic types. What this feature does is it lets you create base (parent) types, from which ,various child types can be created. Since the child types are descendants of the parent, they inherit the parent types fields. But more importantly, the descendant children type arrays can be passed into any function its parent can.

Ok, that's a real mouthful. So lets dissect it little more with an example. Lets say were building a game and we want to have various typed arrays holding information about our Players, The Aliens and their Bullets. If you think about it, Now even though these arrays store information about four totally different groups of objects, some information is going to be common across the board. Like the objects Status (Alive, Dead, etc), Position, Score, Lives /HitPoints/ Sprite Index/Image Indexes etc. So these most common fields could be placed within a Parent type. So our Basic Parent Type could look something like this:

Since each of our different objects will need their own collection of unique fields, we'll base them off the BasicObject parent type, which might look something like this:

So far we've outlined some user defined types and created our arrays for our game, while we've already saved some effort, the real power comes through our ability to pass these types arrays into functions. To do this, we'd develop a centralized set our most common functions, so they can be used upon all these objects. Things like creation / deletion / positioning / animation / movement etc, whatever you like. These functions use the original parent type (BasicObject) as an input parameter. Now, since our games objects (the players/aliens) are all descendants of this parent type, PlayBasic will not only accept 'BasicObject' typed arrays as input, but it'll also accept it's children. So our Players, Aliens & Bullet arrays can be passed in an manipulated also. As an example, here's what a possible creation and position pair of functions might look like.

So now we have our types and some basic functions we can set about creating and position the various objects like this.

Ok, While this example doesn't really do anything whiz bang visually, it does show how you can build a set of base functions that can be used across various object arrays, not only that, but this approach could be used to build your own base layer of functions that can used across a various games. This approach will not only reduce the size of your programs dramatically, but make your programming experience easier in the long run.

You can find another full example posted on our PB forums.

Sticky Collision Demo PB1.081

This last second example shows one of the most recent collision modes called "sticky". What sticky collision does is calculate the first impact point of the sprite with the world. From this impact point you could simply destroy the object or even calc reflection angles to rebound sprites of the environment, rather than sliding them. The following tech demo shows Sticky collision being used to rebound some 250 sprites off their randomly generated environment. A bit like a pinball game without gravity.

Download Rebound Balls (Sticky Collision) Demo with Source Code included.

Play Basic is on sale now for $34.95 (€26.99, £18.99)

Web Site: //

FPS Creator News

You know that video we promised a while ago on the FPSC Forums? (sheepish grin) Well, it's finally here! FPSC Producer Rick Vanner sat down and recorded various gameplay sessions including demonstrations of physics, new AI and multiplayer and we've put them together into a short piece for you.

FPS Creator Video
View the video on-line at

Here we have a catch-up Q & A session with Lee Bamber about the current development of FPS Creator:

Q: What do you feel is the biggest new feature since EA?
A: "Physics, physics and physics. It transforms gameplay into something amazing!"

Q: Can you give a small example of how it can extend FPSC users level / game design?
A: "Imagine you have a switch on a wall, which when pulled opens a trap door, which makes a box fall through it and down some stairs, which hits a boulder, that crashes down a ramp and squashes the enemy that you could not shoot because it was too powerful. It allows the game designer to add elements that have nothing to do with shooting."

Q: And users can edit all of these physics properties directly from the Windows interface?
A: "Yes the designer has control over object weight, friction delta, whether the object explodes when damaged, whether it spins when you throw the object and a few other nice properties. A very heavy object cannot be picked up, a small object like a bottle can be thrown and smashed, etc - but of course you can change that should you wish!"

Q: What other changes are regular EA users going to notice?
A: "We have replaced almost all the sound effects, both for the guns and the environmental effects. Guns now sound very cool! We have added a material system so not only do things sound correct when you throw, scrape or land on the various materials, but they also give off the right visual such as metal sparks, wood splinters, ice shards and concrete dust flumes. I have added more AI behaviours too."

Q: Can we expect more intelligent opponents then?
A: "In the EA the characters had only one response, which was to run at you and shoot. In V1 I have added behaviours which allow characters to duck behind crate and pop up to shoot you from time to time, and my favourite is the strafe behaviour where the enemy dodges when hit, and randomly strafes to avoid being hit in the first place."

Q: All without complex FPI script changing?
A: "Correct, just enter the Entity properties, click the MAIN AI field, and change it to CROUCH.FPI or STRAFE.FPI. Naturally we will increase this library with add-ons after launch."

Q: Talking of launch, I know it's the million-dollar question, but are we getting close now?
A: "As I write this I am pulling together the finer aspects of BETA4, which is 98% function complete and represents an almost final product. We have the test group signed up now to hammer it out over the next few weeks, during which the software will get become more stable and faster. It is already well tested, but now we and the beta group are testing the final build versions."

Q: We know the new build supports multiplayer - but getting massive FPSC levels working in multiplayer would have been extremely difficult, so are there any considerations users should remember when building specifically for multiplayer?
A: "Yes, it is important to understand the MP features are in relation to deathmatch levels, or what we have termed Arena Games. This means we have limited things that would normally be used to tell a story, or challenge the single player. For example, only doors operate in MP, whereas lifts remain static. Also only ammo, weapons, health and characters are dynamic, everything else is static. There are other limits too such as one level per Arena game to keep the file size and game complexity down. The idea is that the restrictions allow the end user to create very fast arena levels that provide the best gameplay when played with your friends."

Q: What do you call your player in on-line FPSC frag fests? :)
A: "I usually go by the name LeeMaster, but that is out of habit of testing the arena games as the HOST for the last three months. Out there in the real world, you can find me under the creative alias of LeeThatIsCalledLee :)" (so there you go chaps, you know who to frag now!)

Q: Any final tidbits you'd like to share with the readers?
A: "The main focus has been on doing Physics and Multiplayer as best we can. You can expect the goodies in the quality of both these features. For example, we went to great pains to get the physics system just right so carrying objects across a room feels like it would in a top game. The object responds when it hits a wall, is pushed by another object and casts a shadow below it. Other goodies are the small feature requests we have had such as an FPI script which triggers an entity to activate when an other entity explodes or enters a trigger zone. These little logic behaviours create a vast number of opportunities to create puzzles in your game, so we have not left out enhancements to the single player level too!"

More details: //

EZ_Serv 1.4

EZ_Serv is designed to be a completely customizable TCP/IP Server, that can be used in a wide range of implementations – from a simple chat server, to a complex game server, EZ_Serv can handle it all. The new version now incorporates client zoning. When zoning is enabled, current message marshaling rules are followed but under the context of a zoned hierarchy. This effectively reduces unecessary server traffic by marshaling TO_ALL and TO_ALL_OTHER message types to only those clients in the same zone (with the same zone value). Client zoning, as with most of EZS's features, is fully optional.

More details:

PC Extreme - Play DOS games on a modern PC

PC Extreme
PC Extreme

Each month the tech gurus over at PC Extreme magazine delve into a current or emerging PC technology, always with a gaming / development related theme. This month: Got a hankering for lo-fi arcade action? Tom Salisbury goes old skool to find some abandonware.

It's difficult to believe that the PC's so old. The first PC was brought to life in 1981, so it's rapidly approaching its silver anniversary. In that time, thousands if not millions of pieces of software have been created for the PC. Some of them were sold, some were given away, but all of them proved useful for one task or another. Which leads us to ask the question: what happens to software when technology moves on? And more to the point, whatever happened to all those classic games we used to play back in the 80s and 90s?

Old skool

A variety of things could have happened. The first, and most likely, possibility is that the company that produced the software went out of business. Often this means the software is floating in a legal limbo, seemingly unowned. However, some companies went out of business but had their assets purchased by another company. The software may therefore rest on a corporate database somewhere, listed as an ‘asset' of the company but not one with which it can do very much.

Why not? Well, these companies simply can't sell old games in our modern age. Apart from the fact that they'd be considered poor quality in comparison to modern titles, old games simply don't run well on modern PCs. Windows XP makes a valiant attempt to run old DOS/early Windows software but it's not always successful. In some instances a game will run but, because modern processors are so fast, the action will be speeded up or otherwise erratic.

But there are ways around this, and that's exactly what we're going to look at in the steps below. It's entirely possible to get nearly all old DOS games up and running with just a little effort. To find old titles, simply search Google for 'abandonware'. This is the category under which old games reside online. You'll uncover several software archives of old games, all available for download. Believe us, it can be an emotional experience rediscovering the original version of Leisure Suit Larry or Arkanoid!

The legality of downloading and running older games is questionable. Some titles may well be still be in copyright whilst others won't be. It's down to you to determine the status on a title-by-title basis.

1 2 3

First, download and try the game under Windows XP. It might just work. If not, right-click the .exe file, go to Properties and select the Compatibility tab. Put a tick in the Run This Program In Compatibility Mode For, and choose Windows 95. Then try running the game again.

If that doesn't work, you can try DOSBox. This is a DOS emulator. You'll find it at Download and install it, then download the game. Extract the game files to a folder in the root of your c:\ drive. Then start DOSBox and type mount c C:\<folder name>.

Try running the game. DOSBox emulates a soundcard and provides VGA graphics. If the game runs too slowly, you can speed up DOSBox's emulation by tapping Ctrl+F8 and Ctrl+F12. This drops frames and scales the processor use. The game might become choppy but most remain playable.

4 5 6

If you can't get the game to work, or it's just too slow, why not simply boot your computer into DOS and run the game from there? This can be done by creating a floppy disc image. You'll find a program that can do just that at Insert a blank floppy and run it.

Most old games will easily fit onto a single 3.5" disk so all you have to do is copy the contents of its zip file to a floppy, then swap this in after you've booted into DOS. Bear in mind that running games from a floppy means you might have to wait around a fair bit while the software loads.

Serious DOS gamers actually repartition their hard disks and create an area in which DOS can be installed. If you haven't got any old MS-DOS installation disks hanging around, you can install FreeDOS ( This is a completely free of charge DOS clone that is able to run games.

PC Extreme magazine is available monthly:

PC Extreme - Special Subscription Offer

Our friends over at Live Publishing have got a great offer on at the moment for new subscribers to their monthly PC Extreme magazine. Packed with all the latest news and features surrounding performance computing, modding, hacking, gaming, geek culture and more, you can get your monthly slice of action for a lot less dosh!

UK Subscribers - 4 Issues for only £9.99 (inc. postage)
This offer is available via the PC Extreme web site only and it saves you a massive 50% on the cover price and you get it delivered direct to your door.

UK Subscribers - 12 Issues for only £59.88 + FREE USB Flash Drive
Subscribe to PC Extreme and get 12 issues for just £59.88. (This price includes postage). You'll also get a Kingmax 256MB USB flash drive, absolutely free. It works with Windows Me, XP, 2000, MacOS or Linux, has a write-protection switch to prevent unintentional deletions, and of course it's small enough to slip in your pocket and take anywhere.

More Offers for non-UK Readers
Further offers are available for those of you living in Europe / America / Canada - full details available at the site below.

Subscribe now:

Cartography Shop Beta 5.10


The betas of Cartography Shop v5 keep improving. 5.10 adds the following new features:

  • Added confirm to save changes, if map has been altered
  • Much faster rendering and selection
  • Brush and mesh rendering can be toggled on/off
  • Added show fps option
  • Added "extrude face" CSG tool
  • Added hide/show objects and subobjects
  • New general options available in options dialog

More details at: CShop Forum

DBPro Tutorial - Application Timing and Control

A handful of Puzzle Competition Games suffered from the same problem - the use of "SYNC RATE 0" as the only timing control - causing games to run FAR too quickly on modern PCs (to the point of being unplayable). Take note of this tutorial to avoid this in the future.

Timers Tutorial

Time is of the Essence
I am far from being an authority on timekeeping. It's not my fault; it's in my genes, and it never skips a generation. Anyway, moving swiftly on... One of the big hurdles of game making is the unknown, uncontrollable factor. That is, the PC specification of your potential users. And the combinations of different pieces of hardware makes it impossible to predict exactly how your game will perform on different machines.

The first example included in the downloadable sample code is an illustration of how things can go wrong. It simply rotates 4 cubes around a point, which should be a nice, consistent animation. Because we can't show the same program running on different configurations, the example artificially injects an irregular program flow instead, simulating a heavy burden in the process. In a real situation, this may be a surge of action, or an explosion of special effects that increases the workload.

The obvious answer to this issue is to set a SYNC RATE. This is ideal for smaller projects, but there are drawbacks:

  • You must account for your lowest specification of user, and thus degrade performance for power users
  • SYNC RATE is only a "stabilizer", it doesn't allow for sudden changes in frame rate. It's possible to get differences of 10% or between the actual and reported frame rates.
  • You can never state categorically that you will always outperform the frame rate. Once you drop below the specified rate, it becomes irrelevant and you will see the problems we have already demonstrated.

So what can we do? The answer isn't as complicated as you may think, and the mathematics behind it is very simple. We simply check the actual time taken to perform one program cycle, and adjust our movement accordingly. Rather than solve this isolated issue, we'll create a self-contained code module that will serve many timing needs. It's possible to deal with this in the midst of our main code, but our solution will once again be scalable and portable.

Open the sample code to see the implementation of our timers. We have the standard initialisation routine, which will set up the necessary Types and Arrays to hold an unlimited number of Timers. Looking at the timer Type, you will very quickly realise the functionality we will be including:

type tTimer
  • A timer has the ability to be activated and deactivated, an essential piece of functionality!
  • Each timer will have the ability to store it's own start time, and the last time it was interrogated. This gives us the freedom to retrieve total time since it was started, as well as the time it takes between each successive interrogation.
  • The Interval and lastTick values will allow us to create Timers that measure different time periods. For example, we will be able to create a timer that counts in minutes, rather than the default milliseconds.

To support our timers, we will need various functions, to hide us from the complexities of the data. These are outlined below, and if you want to see exactly how they have been implemented, take a look at the source code. The methodology is identical to that used in the previous tutorials.

timerInit(fps). Initialises the system. We can pass a desired frame rate value, to make calculations easier. So we can, for example, request that the system is synchronised to a frame rate of 40 frames per second.

timerUpdateTime(). Called once every cycle, to maintain and synchronise the system.

timerCreate(interval). Creates a new timer. We can set an interval rate for specific purposes. Passing a value of 2000 (milliseconds) will create a timer that is capable of recording 2-second intervals. The function returns the identifier (id) of the new timer.

timerStart(id). Starts a timer.

timerStop(id). Stops a timer!

timerGetTime(id). Returns the absolute length of time the timer has been running.

timerGetTimeDiff(id). Returns the difference in time between this request and the last. This is the principle behind controlling the frame rate and consistent movement, but we will actually implement this in more specific functions, to make our life easier still.

timerGetTick(id). If an interval was specified when the timer was created, this returns the number of intervals (ticks) that have passed since the timer was created. An interval of 2000 (milliseconds) will return 30 ticks a minute, one every 2 seconds. 60000 millisecond intervals will allow you to monitor 1-minute ticks. This type of timer is useful for games that last for a specific period, or events that occur at particular points in a game.

timerGetTickDiff(id). Returns the number of ticks since the last time the value was requested.

timerGetFPS(id). Return the real Frames Per Second.

timerGetFactor(id). This is the most useful function for calculating movement, and other calculations that are dependant on the frame rate. It returns the factor by which you need to multiply your "normal" value, in order to synchronise it with the desired frame rate.

When we started the system, we had the option to set a frame rate. If this was set to 40 frames per second but we are actually running at 80 frames per second, the timerGetFactor() function will return a value of 0.5. Thus, we would then multiply all of our movement by 0.5 to ensure it occurs as if the frame rate was 40. This is the basis of creating a game that runs the same for all users, irrespective of their system specifications.

As with all things, there is a downside. The price that must be paid for maintaining the action and being in control is that a very badly performing computer, or less careful programming can cause characters to "jump", rather like you would see in early 20th century films. The positioning will be perfect, but the perception on-screen will not be as good as you might like. The answer to this problem is still to code efficiently, and set minimum specifications, as with all professional publications.

Run the sample code to see various timers in action, including one that is being used to control the wavy text effect. It utilises a 2 second ticker, ensuring the text undulates once every 2 seconds, consistently, no matter what else happens in our application. You will see how the functions are called and at which point in the program. Essentially, we have setup functions, called during the initialisation, and we have additional functions in the main loop to return the current status of the timers as and when required.

To finish, I would like to publicise the fact that, despite my bad time keeping, I submitted this article 2 days before the deadline! Maybe I'm learning from my own tutorials.

Note: This tutorial has been packaged up into a nice friendly installer that will load a full-length version of the tutorial, along with extended DBPro source code into your Start Menu (in The Game Creators program group). Each month this collection will build-up into a formidable free resource.

Download this tutorial + code: DBPro_July_Tutorial.exe

Smart Particles

Smart Particles is an intuitive interface for creating particle based special effects. It utilises the power of The Game Creators’ Particles expansion pack, with the simplicity of a graphical interface for designing, creating and exporting fantastic effects. From vehicle explosions, to lemonade bubbles, the only limit is your imagination.

Smart Particles

Every feature in the Particles Expansion pack is available in Smart Particles! If you wondered what the official expansion pack is capable of, you can try out every feature of the particles in full, and see the results immediately. For owners of the pack, you can also export a particle emitter and unlimited effectors and colliders into your game.

This forum thread has a tutorial on creating explosions, it's a fantastic way to get to grips with the functions and features of both Smart Particles and the expansion pack. There is a showcase available for download, with fireworks, The Matrix and more; and there is a tech demo created with Smart Particles in Program Announcements, showing rain applied to the standard terrain demo. Walk around the terrain and the rain never ends, it's like a weekend in The Lake District!

More details: Smart Particles Forum Thread

Alien Treasure Game Review

Alien Treasure
Alien Treasure

Alien Treasure is a very frantic, fast paced, arcade scrolling action game. The basic objective is to pretty much blow-up everything in sight and it sure is good fun trying to do so. The first level starts with having to destroy alien ships and catch treasure, and only a few seconds into the game you're faced with countless waves of ships coming in your direction and it's hard going trying to take them out. Along the way there are power-ups to collect for things like better weapons and extra lives.

There's an incredible amount of action going on and it's a real tough challenge trying to keep up with play and eliminate all the ships. As you progress the levels get much harder and many new enemies end up arriving on the scene for you to deal with. At the end of the level, or when you lose all your lives, you get to see statistics showing you how well you have done and if you got a good score you can enter your name on the high score table.

One of the other things worth mentioning is how well presented the game is. It all looks great and everything is really easy to use and get into. To sum up if you're into games of this genre I'm sure you will have fun playing this. Certainly one of the best games created in DBPro that I've seen in recent months -- Review by TGC Developer Mike Johnson

Alien Treasure is a zippy little shoot em up! The start is very atmospheric and moody (not to mention polished) and infact is quite different to the game itself - once you start its a frantic battle to stay alive. The graphics are small but detailed which allows for a lot to happen at once.. and it does! From the moment you start playing there is a seemingly endless onslaught from those pesky aliens that are trying to take over the universe. The action is fast - almost too fast at first but thankfully due to the control system (the trusty mouse) the action is fun and light hearted rather than pure panic.

If anyone fancies a light hearted good old fashioned alien pounding - I would definately reccomend Alien Treasure. Now, where did I put the spare batteries for my mouse? -- Review by TGC Developer Dave "Ravey" Milton

Download here:

Omega Basic Tutorial - Building a Platform Game, Part 2

Last month we started designing a platform game in Omega Basic that let you move the super hero left and right. There was also an enemy character which patrolled the right hand side of the level. This months tutorial will be more concerned with the overall program design for the finished game, as well as some possible enhancements we can perform in the future. Last months tutorial was designed to give you a tester of programming, and so we jumped straight in with some code. Learning a programming language is never an easy process, so attacking the problem from several angles should help you gain a solid understanding of Omega Basic. This month sees the launch of a new compiled help file containing all of the commands with examples, as well as the dynamic help system included in our new Synergy IDE.

Important points to note

The Omega Basic language is relatively strict when it comes to variable usage. Although variables are not case sensitive e.g. 'This' is treated the same as 'THIS', you must declare them before you can use them. You declare variables and arrays using the DIM keyword; for string variables append '$' at the end of the variable name e.g.

Dim thisIsANumber
Dim thisIsAString$

You can also give the variables values as you declare them; this is useful for providing starting positions or default values.

Omega Basic is driven by functions, and everything except variables and GUI items should be written inside a function. For most basic game writing most code is written inside the MAIN function. The START function can be used to keep start up code such as image loading separate if you wish. When Omega Basic loads your program, the flow of execution is downwards until it reaches the end of the main function. Once it reaches this part, it is up to your program or user to control the execution path. The ACTION LOOP will be activated at the intervals specified, and the other ACTIONS may be called upon if the user or code calls them. If you are using a GUI then an action such as a button press will call FUNCTION ACTION, the name of the control calling the function is held in the variable c. For the game developed last month the flow will be something like so:

1) Create the variables
2) Call the FUNCTION START function which loads our images
3) Call the FUNCTION MAIN function which sets up the canvas.
  a) The canvas is activated starting the loop action
  b) The loop action calls the paint action every second (1000 milliseconds)
  c) If a user presses a key the keypress action is called

As you can see most of the functions are not actually used, the main program logic is handled within one function. With this knowledge programming in Omega Basic should become less daunting, and it becomes much like programming in DarkBasic. However, Omega Basic is designed for a much different computer architecture than other flavours of Basic, and so the extra functions enable you to handle extra functionality that may affect your game.

Back to design

You may have noticed that the characters in last weeks demo were animated (albeit simply). Animation in Omega Basic is performed by creating an image file that is equally divided into the frames that the animation is going to use. One point to remember when dealing with graphics in Omega Basic is that a PC is hundreds of times more powerful than a mobile phone. It is a challenging, yet rewarding experience to be able to develop games that look good, yet run smoothly. An animated sprite is treated the same as a static sprite, and so you are free to position it anywhere on the screen.

The frames used to animate the hero

Again, if you have a keen eye you will have noticed that the image that we used for the grass is not wide enough to cover the bottom of the screen. It was therefore necessary to use two separate, but identical copies of the image placed next to each other. Instead of having to load two separate images, Omega Basic provides a handy command call Sprite.Array which allows you to store a number of identical images under one name, but with different indexes. To ensure the grass looked like one long image we used a special seamless image which has specially designed edges which allow the image to fit together without any visible lines.

The grass sprite
Notice that when two copies of the sprite are placed together there is no seam!

The AI in the game is incredibly simple, and probably not even worthy of being classified as AI, but it does a job. The idea for the simple game was to show you how simple it is to manipulate sprites. The code used a variable to determine the direction of the enemy, which then determined whether the sprite was moved left or right. Then when it reached a preset position on the screen the variable was 'reversed' so that the enemy could march the other way. This simple algorithm was all that was needed to add some polish to the game, and was much more interesting to look at than a stationary animated sprite.

This tutorial wasn't very progressive in terms of coding, but hopefully it has helped explain the design behind the game we created last month. Next month I will return to a mainly code based tutorial to help you progress your understanding of the commands available, and program design used in Omega Basic. There are some particularly innovative individuals also contacting me regarding their developments, which include a phone OS, an RPG battle system and an example menu system, all of which should make their way into the example source code folder in a later release!

Web Site: //

Independent Games Festival Announced

The CMP Game Group (producer of Game Developer magazine,, and the Game Developers Conference) established the Independent Games Festival in 1998 to encourage innovation in game development and to recognize the best independent game developers. The IGF, now in its 8th year, has given away hundreds of thousands of dollars in prizes and major recognition to innovative, independently created video games from all over the world, from early pioneering titles such as Tread Marks and Shattered Galaxy, through recent stand-outs such as Oasis, Alien Hominid, and Gish.

There are now three sections of the Independent Games Festival event, for which the prizes will be awarded at GDC 2006, held from March 20th-24th 2006 at the San Jose Convention Center in San Jose, California: the main IGF Competition itself, the IGF Student Showcase, and the IGF Mod Competition.

There are various categories including "the Grand Prize" ($20,000), "Innovation in Visual Art", "Best Web Browser Game" and more. Check out the web site for details.

More Details:

DB Dreamer

DB Dreamer is a DarkBASIC visual mapping tool. The program allows you to visually position, rotate, texture etc. all 3D components in DarkBASIC Pro. After mapping out these things, you can then export the source code which can then be run in DarkBASIC Pro.

The program allows users to map out the following things: Objects, Lights, Sounds and Matrix.

The program also supports the addition of:
Shaders, Textures and Fog.

However DB Dreamer does much more than simple mapping. Users also gain access to other options, for example: Changing Light and Fog colours. To help users map out "invisible" things such as lights and sounds, spheres (for lights), cubes (for sounds & light point directions) can be assigned.

Why do you want this?
It is often hard for DB users to generate game levels, constantly pressing the F5 button, writing down masses of x y and z values and wondering if they have made a mistake in their coding. DB Dreamer solves all of your every day 3D mapping problems. Using DB Dreamer you can create extensive complex 3D levels incorporating all the necassary components.

Demo site:

New DarkBASIC Professional DLLs

A number of new DLLs for DarkBASIC Professional have caught our eye this month.


This DLL contains only one function, but it's an important one! It will change the resolution and depth of color (bits/pixel) of the monitor even if the program runs in a window mode (including a full-screen window)

Wait a minute - isn't that what "set display mode" does? Well - sort of, read on... You've probably noticed that in DBPro when a program is started in Window mode but the resolution is reduced in comparison with that which has been set on your monitor - objects, sprites and in general all contents become distorted. Another example is if you run your program in "full screen window mode" on a 1600x1200 Windows desktop, your graphics can easily become stretched and blocky. It's impossible to change the resolution in Window mode - you are at the mercy of the end-user. And in a fullscreen mode various bugs stop it from working either. This DLL solves that.

Download from here: (only 5KB!)

LUA Scripting in DBPro

David T has been working for a while on implementing the Lua scripting engine into DBPro. The result is the ability to load and execute scripts from your games, have scripts access your 3d darkbasic world and for your DBPro programs to access data held in the scripts.

More details here:

From the Forums

Our forums are a diverse and interesting place to hang-out and here are a selection of hot topics this month.

Geo Defender Game
From Erick G: "Geo Defender is a game I wrote using the DarkSDK. I wrote it to show users how easy it is to use the SDK. The game took only 2 days to create, I love the DarkSDK ;) The basic premise of the game is to protect your home planet from waves of asteroids. For each wave completed, the asteroids move in quicker. Give the game a whirl, and tell me what you think." [ Read the Thread ]

Vatan - Mappers Required
Vatan is a superb looking new FPS game. Although written in C++ it can import levels made with Cartography Shop, so if you fancy mapping some levels for what looks like a killer new indie FPS then now is the time to get onboard. [ Read the Thread ]

High Poly Character Modelling Tutorial
Here is a thread discussing a set of tutorials (the Joan of Arc tutorials) that covers high poly character modelling. [ Read the Thread ]

Ion Extension Pack
The first public release of the Ion Extension Pack for DarkBASIC Classic. Adds in new features such as Box Dialogs, Message Boxes, INI file writing, Memblocks, File Commands, String Functions, etc. [ Read the Thread ]

Easy Tank Combat
This is a DBPro created multiplayer network game - and you can get the whole thing for free now. Check out the thread for links and details. [ Read the Thread ]

Chainmail - 2D RPG
This is the first release of a new 2D RPG game - which makes great use of the Fizz 2D physics system and lovely cartoony graphics. Test out the controls and participate in user feedback. [ Read the Thread ]

Laser Sight + Raycasting Code
Here is a full DBPro source code snippet that demonstrates line of sight with full raycasting. Want to create a game where you must sneak around without detection, or have guards scanning an area? This would be a good place to start .[ Read the Thread ]

You can find our forums at:

New gameSpace Course at no Charge

Caligari are pleased to announce the release of the first gameSpace Mini Course! These courses are kept short and to the point, at a running time of around 20 to 30 minutes, so they make an ideal and affordable way to brush up on your gameSpace skills!


Best of all, this first course is being released to gameSpace owners at no charge. It provides a general overview of gameSpace and its features, but even experienced gameSpace users will find something new in here. The course author, Drew Clark, has plenty of experience in using gameSpace to make games, and he'll be passing on the benefits of that experience in this and future courses! Be sure to watch out for future gameSpace Mini Courses too - four more are in the works, and all will be kept short, sweet, and affordable!

gameSpace owners - check your email for details of downloading the first course. For those interested in buying gameSpace you can get more details about it from the web site below.

Web Site: //

Synergy IDE - Open Beta Test

A new multi-language IDE is on the horizon, called Synergy it's by the same developer as Omega Basic and uses a familiar Visual Studio layout. Beta testers are wanted (see the end of this article). Current features include:

Click for larger shot
  • Support for Omega Basic, DarkBasic Professional and DarkBasic
  • Visual Studio 2005 style and feel
  • Visual Studio style properties editor
  • Visual Studio style solution explorer
  • Visual Studio style docking windows
  • Macro support to streamline repetitive tasks
  • Scripting support to access the IDEs APIs
  • Full syntax highlightingv
  • Dynamic help with direct access to all htm help files
  • To Do List
  • Compiler output with error line
  • Outlook 2003 style information popup providing unobtrusive information
  • CHM Help file documenting all features
  • New Project Wizard (optional)

Availability is slated for 1st August, beta testers are wanted.

Beta Testers Contact:

This months winner

Each month we award one lucky subscriber a free copy of DarkBASIC Professional. The winner this month is: ideweever@?????.com
Just email us with your address details and DarkBASIC Professional will be in the post to you.


Next month we'll have the Puzzle Game Competition Winners to announce. We will also be another month closer to the full release of FPS Creator, that and the DBPro Physics Extension Beta Group will have been playing away, so perhaps we'll have things to show you from that too! The new web site is also nearing completion (in time for next issue? possible.. but there's a lot to still finish), so quite frankly it's all go here at the moment.

Share your product / project news with over 12,000 active games developers!
If you have something you'd like featured in a future issue then please get in touch and include as much information as possible (including where applicable: screen shots, URLs and zip files). The deadline for Issue 32 is August 20th.

Famous Movie Quotes: "Sorry, Venkman, I'm terrified beyond the capacity for rational thought."
(C) Copyright The Game Creators Limited 2005