editorial / november 06

Issue 46 cover

Greetings and welcome to this bumper-packed issue. The Ageia PhysX Software Competition results are in, and there are a selection of highly playable games for you to download and enjoy. We've also got news of the new TGC / NVIDIA Game Dev Competition, which unless you've been living under a rock since Oct. 16th, has been plastered all over our web sites. Even so, check it out because the DBPro part of the contest in particular has some exciting updates.

On the release front there is the excellent Model Pack 5 for FPS Creator, which adds some seriously beefy weapons to your games. DarkGDK .NET is out, a great way to use DBPro from within the Microsoft Visual Studio .NET range products. Starting this month is a series of tutorials from 3D Guru Mark Blosser. You can follow him on his work through creating a fantasy / RPG pack for FPS Creator. On the more traditional coding front we've part two of Steve Vinks 'Space Invaders' tutorial, and Grant hits us over the head with a smattering of Explosion FX; you MUST check out his Retroroid game! It's the absolute shizzle.

Add to that a healthy collection of new releases, videos, forum chatter, tutorials, free PDF downloads and releases; and you've got one heck of an issue in your hands. Truly no-one else gives away as much valuable content as we do each month! Don't forget you can read this newsletter online, which is a much nicer experience if you are stuck within a web mail client. See you next month for issue 47.

Cheers — Rich

contents

(1) PhysX Competition Results (2) FPS Creator Model Pack 5 (3) NVIDIA Game Dev Competition (4) DarkGDK .NET (5) Free Hands On DBPro PDFs (6) 3D Guru: Modeling a Game character (7) DarkBASIC Pro Upgrade 6.3 (8) DBPro Mastery: Invaders Part 2 (9) From the Forums (10) DarkGDK Update Work (11) Lee's Tip of the Month (12) Game Videos: TPS Speed & Sky Blazer (13) DBPro Tech Tips: Explosive Eye Candy (14) Skycubes (15) T.R.A.T (16) PlayBasic News (17) Dark Shader Video (18) The Winner (19) Outro

PhysX Programming Competition Results

AGEIA / TGC / BFG PhysX Competition

The Software part of the Ageia and BFG sponsored Programming Competition ended October 15th. Since then we've been madly playing, screen grabbing, reviewing, rating and making videos of the entries received.

12 working games were entered in total and you can view them all on-line, where you'll find screen shots, an overview, the judges comments and of course a link to download. The entries were:

A Special Thank You: As a way of saying 'Thank You' to those who dedicated their time entering this competition, we are awarding ALL entrants a free copy of Dark Physics. A number of the games entered were created with the trial version, so the full version will allow you can explore the rest of the features on offer, and recompile your games without the water mark.

And now here come the winners ...

1st Place - Flyhard by Stephen Downey

Overview: Use the cursor keys to fly the helicube around, and use the space bar to pick-up various items scattered around the level. The objective is simply to get to the exit. This task is made harder by the fact that you'll need to activate trap doors, switches and escape routes through the careful dropping and pulling of blocks and planks of wood. Certain doors only open when their pressure pads have enough weight on them, green gravity pads alter the direction of objects and all the time you must keep flying the helicube, with or without its extra weight cargo dangling from below!

Judges Verdict: This is a quality game, no doubt about it, which is why we awarded it 1st Place. Flying the helicube takes a little getting used to, at first it appears to be quite unresponsive but you soon learn the tricks required to keep it in the air while ferrying your precious cargo around. The level design is great and the puzzles ingenious. A good variety of challenges present themselves on each level, and while some areas require careful planning, you never feel that the game is being unjust towards you. Graphically it's great, with a real sense of depth to the environment, and you are never left wondering where to go next. The only complaint we have in this area is that it's hard to tell which objects are part of the scenery (i.e. static) and which are dynamic physics objects.

A game that encouraged the use of physics and exploration as the core of the gameplay was always going to rate highly in this contest. To have carried it off so professionally secured it the well deserved first prize.

This game won the author: 1 x AGEIA PhysX card from BFG, $50 TGC software voucher and a Super Goodie Pack.

Download Flyhard - Watch the Flyhard video on YouTube.

2nd Place - Crash Tester by Kenneth Bugeja

Overview: Here's a weird one! You play a crash test dummy who must jetboard down a ramp, avoiding the cones and other obstacles to get to the end, where-upon you set your power and trajectory and launch yourself at a giant dartboard. The more pieces of the dartboard you knock out, the better your score! You've got to love this game for its originality at least :)

Judges Verdict: This game has the usual degree of flair and polish that we've come to expect from Kenneth Bugeja, a long-time supporter of our competitions. The game concept is original and most of all, fun. You soon get to learn which angles provide the best aim on the dartboard, and as your crash test dummy soars through the air you can still influence its direction to a degree, by moving and nudging. It's not just about knocking out as many pieces as you can either. Each level has a different objective such as knock-out the bullseye, or hit any red piece. Up to 4 players can take part and there are multiple camera angles, display and control options available. A polished title and a worthy 2nd place winner.

This game won the author: 1 x AGEIA PhysX card from BFG, $30 TGC software voucher and a Goodie Pack.

Download Crash Tester - Watch the Runners-Up video on YouTube.

3rd Place - Rolling Fury by Sam Hockaday

Overview: You control the blue ball (the 'Fury') and your objective is simply to reach the end of the level, collecting as many points as possible. At the end of each level, you must dislodge the core from the generator by giving it a good bash. You are timed, so don't take too long!

Judges Verdict: This is a quality game, make no mistake about it. Sure, it is fiendishly difficult, and at times frustrating, but it's still pulled off with a real sense of panache. You control the blue sphere around the level, it rolls around constantly like a marble, so you have the balls inertia to take into consideration when timing drops and collecting items. Various objects are scattered about, from the pinball style deflectors, to speed-up ramps, cannons and swinging hammers. As you roll you attempt to collect the green and red crystals, which equate to cash. At the end of each level you can spend the cash on extra lives, or pocket it in order to achieve a better high score at the end. Graphically the game is lovely, with well animated models and good clean presentation. Although a bit repetitive, the music also fits the scene well. The only real problem is the frustration factor involved. When you can see a bunch of swinging hammers up ahead you need to time it so perfectly, and set just the right speed, that even Mario would have trouble. Ideally the game should be against the clock only, and not have any lives limit, in order that you may have a chance of exploring so much more of this well constructed world.

This game won the author: $30 TGC software voucher and a Goodie Pack.

Download Rolling Fury - Watch the Runners-Up video on YouTube.

4th Place - The Grand Machines by Jason Wells

Overview: The full title of this game is "Big 'n' Small vs The Grand Machines". The titular 'Big' and 'Small' are two balls which you swap between controlling at a press of the tab key. Using them both you must complete the three levels on offer, solving the puzzles along the way.

Judges Verdict: We appreciate that there are only three levels in this game, but they are well constructed and most of all fun to play through. The game has a unique graphical look, and the fluid camera movement and ball controls really do enhance the playability. When you die you at least feel like it was your fault. Swapping between the two balls you must get to the warp gate and complete the levels. Some areas only the small ball can reach, and switches open doorways. There are rewards to collect (if you are dextrous enough!) and you get a good amount of lives, which is just as well given how hard level 3 is :) We were surprised that the only difference between 'Big' and 'Small' are their sizes. We would have liked to see some 'weight' puzzles, where 'Big' weighs more and can therefore activate certain pressure sensors for example. But this was only a demo version, and the game shows real promise that we'd love to see progress in the future.

This game won the author: A Goodie Pack.

Download The Grand Machines - Watch the Runners-Up video on YouTube.

Runners Up

Here is a selection of some of the best runners-up games.

Food Frenzy

The year is 2006. The citizens are revolting. But more importantly, the food is really revolting. It's time to make a stand against bad nutrition, fatty fast food and unhealthy lifestyles. Your mission is to enter Sloppy Snacks and destroy their display of Kiddie Meal Boxes.

Download and Review
Gerball

Take on the opposing gerbil and kick balls into the other half of the pitch. Different colours get different points, but the more you put behind the higher your score goes. Avoid the ones that send you spinning out, but try your best to ensure they hit the other to cause some good damage.

Download and Review
MiniShooters

The aim is to knock down as many of the dominos as you can within the allotted time limit. Hold the space bar to charge the shooter and release it to fire. Use arrow keys to look around the scene.

Download and Review

FPS Creator Model Pack 5

FPS Creator Model Pack #5 is now available! This pack contains 16 new weapons for your FPS Creator games, as well as 11 different sets of 'hands', new sound effects, reload animations, ammo entities, room segments and more.

FPS Creator Model Pack 5

Model Pack #5 for FPS Creator is out now. Costing only $19.99 the contents include:

We've put a video up on YouTube showcasing the weapons in action. You can watch it by going here. Within the next couple of days we'll also put a standard Windows Media Player (WMV) high-res version of the video onto the Model Pack 5 page on our web site, so keep checking back.

To see all the weapons and to order please go to: //www.thegamecreators.com/?m=view_product&id=2033

NVIDIA and TGC Game Dev Competition

NVIDIA and TGC Game Dev Competition

So you've hardly caught your breath from the AGEIA / BFG Competition, and what goes and happens? We announce yet another game dev competition, and this time it's the largest we have ever held!

Frequent visitors to our web site and forums will already have seen the large NVIDIA banners across the top of the sites. It is NVIDIA who are sponsoring this competition, and there are some phenomenal prizes on offer. The prizes even include secret hardware that we can't tell you about until later on in November, as it's so brand new it is still under NDA!

Kick some

Split into two sections, one for FPS Creator and one for DarkBASIC Professional, there are some incredible prizes up for grabs, and a long healthy deadline too. Most of the deadline lays across the festive holiday period, so once you are stuffed with Turkey and have got bored with Wii Sports ;) you can turn back to FPSC/DBPro and carry on with your masterpiece. After all you would be insane not to enter this contest. Not only might it net you some great hardware, but also a potential publishing deal too. Here are the details ...

FPS Creator (Deadline: 16th January 2007)

Calling all FPS Creator users out there: Enter this competition and you could win a complete brand new PC set-up, cutting-edge NVIDIA graphics cards, or even a potential game publishing deal!

The task is to create a 1 level game in FPS Creator.

The level should be no larger than 15 x 15 x 5 grid units in size (that's 15 units square by 5 units in height). Into this relatively small space you need to cram as much gaming action as possible.

We will then judge all of the entries and pick out 5 winners.

The Prizes

Two '1st Prizes'? That's right. We've two complete PC systems to be won. One is for the best game coming from the US. The other PC system is for the best FPSC game coming from anywhere else (ROW = 'Rest of the World')

Each of the winners will be considered for a Publishing Deal. That's right, you could see your game on store shelves. If of a high enough quality the winning game/s will get funding to be developed into a full title. Upon satisfactory completion it will be published worldwide by Mastertronic.

Visit the FPSC Competition site for the rules and details

DarkBASIC Professional (Deadline: 16th February 2007)

Win one of these!

Fire-up DarkBASIC Professional (we've a free trial version if you don't own it) and start coding to be in with a chance to win some great prizes in our biggest programming competition ever. Up for grabs are full PC systems, SLi motherboards and the latest NVIDIA graphics cards.

The task is to create a game using DarkBASIC Professional.

There are no restrictions on the genre, so anything goes. From a modern-day styled FPS, to a shoot-em-up, a cerebral puzzler, a platformer, or even a retro inspired remake; the choice is entirely yours. All games will be judged equally.

The Prizes

Two '1st Prizes' ? That's right. We've two complete PC systems to be won. One is for the best game coming from a developer living in the US. The other PC system is for developers living anywhere else (ROW = 'Rest of the World')

Competition Update: All games entered into the DarkBASIC Professional Competition will also be considered for a publishing deal by Mastertronic. If they like what they see, they will consider funding your game to be developed into a full title, and upon satisfactory completion it will be published worldwide by Mastertronic. Create something special and you could see it on store shelves.

Visit the DBPro Competition site for the rules and details

DarkGDK .NET

DarkGDK .NET

Now you can take full advantage of the game engine that powers DarkBASIC Professional 6.2 from within any of the Visual Studio .NET Express or Visual Studio .NET Professional environments, with the DarkGDK.NET.

A whole new world of possibilities can be opened up by combining the features that both Visual Basic.NET and C# offers, and the power of the DarkGDK.NET. The GDK brings the flexibility of the DarkBASIC Professional 6.2 engine to the world of .NET development while still retaining the ease of use that DarkBASIC Professional offers.

The DarkGDK.NET provides virtually* all of the command sets found within DarkBASIC Professional 6.2 into an easy to use library format that is compatible with the following development environments: Microsoft Visual Studio .NET 2003, Microsoft Visual Studio .NET 2005, Microsoft Visual Basic.NET Express Edition, Microsoft Visual C#.NET Express Edition, SharpDevelop2 RC2 and Microsoft .NET framework 1.1 and 2.0.

Developing games with the DarkGDK .NET offers many benefits:

Use industry standard .NET compilers

Once installed it only takes a few simple steps to be able to use the GDK within your compiler and you can then start developing a .NET application that utilises the features of the GDK. Full documentation and tutorials are available for getting you started up straight away.

Examples and Help Files

A selection of example programs are provided with the DarkGDK.NET demonstrating how to take advantage of its many features. Several brand new demos have been created and others converted from the original DarkBASIC Professional to demonstrate the benefits when using the DarkGDK.NET.

Also included with the DarkGDK.NET is a comprehensive help file detailing all of the functions available. Also included are informative easy to follow tutorials to get you up and running straight away. A useful index and search facility is also provided.

* Some DarkBASIC Professional commands have been excluded, or have no GDK equivilant.

For more information visit: //www.thegamecreators.com/?m=view_product&id=2128&page=net

Hands on DarkBASIC Pro Free PDFs

The Hands On DBPro series of books are an invaluable resource for DarkBASIC Professional programmers, covering all of the core aspects of development, from string handling to object manipulation to 3D Math. We are very pleased to announce that Digital Skills, the authors of the books, have created two giant PDF files exclusively for TGC DarkBASIC Professional customers.

The first PDF file contains 4 chapters from Volume 1, a total of no less than 164 pages. The second PDF contains 3 chapters from Volume 2, that's another 119 pages. A grand total of 283 pages of coding advice, hints and explanations: all for free.

Topics covered in the chapters include control structures, loops, data operations, error checking, writing your first program, screen output, working with colours, variable handling, 3D objects, screen set-up and more.

To download the two PDFs simply login to your TGC account and click on your Order History. You will see the PDF download links in the same entry as your DarkBASIC Professional purchase. Sorry but these PDFs are currently only available to customers who purchased directly from us.

3D Guru - Modeling a Game Character - by Mark Blosser

It is my privilege to write this series of 3D Modeling Tips and Tricks for what is probably one of the toughest assets to create for a game - a convincing character. These are things I've learned along the way, and will hopefully help beginners avoid common mistakes and learn a few tricks of the trade. As an example this month I will be using a "peasant girl" character I recently created for an upcoming fantasy-themed pack for FPS Creator.

Conception

For the fantasy themed pack, I decided to create the characters first, and then create the environmental assets that they will "live" in. I find this to be a logical way of working. To start, I decided to create a few peasant type characters. For the design, I simply did a Google search for "peasant". I found a concept that I liked, and used it as a guide. It is extremely important to have some sort of concept to guide your modeling.

Modeling

While this isn't going to be a comprehensive modeling tutorial, this will give some insight on how I like to work. I decided to give this character about 2500 polys, enough for plenty of facial detail. Things like the nostrils and mouth will be modeled in detail, rather than just relying on texture map alone.

For animated game characters, the most important thing to guide your modeling should be the edge flow of your polygons. This will ensure that the mesh deforms correctly when rigging and animation is applied. Basically, your edges should follow the muscle flow of the human body. Even for a clothed character this still applies.

Click to view full version

Notice in the picture to the right (click here for the full size version) how the highlighted edges follow the contour of the body, even on the skirt. This is important around the joints especially. This ensures that when the character moves, the geometry will "fold" in the correct direction. If you know your anatomy, you'll notice that the edges flow from beneath the pectoral muscle and connect with the deltoid muscle at the shoulder, and continue around the back of the character where it connects with the lats, or back muscles.

For the body, I start with basic cylinder primitives as shown below. After that, there really isn't any trickery involved; it's a matter of getting your hands dirty - moving vertices around and molding the character into shape. Good reference is always helpful to guide your modeling, especially for something like the human body.

For the face, I decided to try something new. Usually I start with a cube, but this time I started with a simple plane with 4 subdivisions. Using 3ds max's cut tool, I simply cut in the facial details, much like drawing outlines on a sheet of paper. From there it was just a matter of pulling out individual vertices to form the head in 3 dimensions, the final result turned out great! On the left shows the plane I started with, and on the right after cutting in the facial details.

On the right is the face at a later stage after pulling the vertices out, and adding more detail. Notice how the edges flow around the contours of the face.

Texturing Tips and Tricks

For this series of characters, I decided that a clean, "CG" look would fit the fantasy theme well. After laying out the UV map, I used Max's render-to-texture feature to render an ambient occlusion map. This gives a nice base to start your texture, providing shadows in places where they are always present, such as in the nostrils, armpits, and shadows from the hair. I also applied a soft specular material to my character and rendered out a second light map, which gave some shine to places like the forehead, nose, and lips. It also adds a sense of volume to the character, in obvious places like the breasts.

Using Photoshop, I layered these together to form the basic shading for my character, and this also gives a nice start for a specular map if your game engine supports it. From here, it is a matter of adding layers on top of these using different blending modes, to provide color and texture.

To make quick and easy clothing folds in Photoshop, a technique I've found useful is to quickly sketch in your folds using the dodge and burn tools, it doesn't have to look perfect at this point, just some quick strokes in the direction you want the folds to go. Then, run the plastic wrap filter. If you play around with the settings you can quickly simulate satin materials as well as duller more matte-type clothing. The plastic wrap filter is excellent at provide natural, organic variation that works well for clothing folds.

Another tricky thing to make is stitching and embroidery. It needs to look consistent as it flows around the clothing, and hand-painting this kind of detail would be very hard and time consuming. The solution is to make a custom brush in Photoshop. For the stitching on this character, I created a series of lines on a transparent background and saved it as a brush preset (shown on the right)

Using your new brush on a separate layer, simply paint the stitching onto your clothing! If you need pixel-perfect precision, first draw a path using the pen tool, right click and choose "stroke with brush". You will have perfectly aligned stitching along the path! To complete the effect, apply a bevel effect using layer styles. I like using "pillow emboss" for stitching.

Conclusion

Well that's it for now. While this wasn't meant as a step by step guide to the process of creating a character, it is more a glimpse at my current workflow, and hopefully this gave you some good tips at creating your own characters. Feel free to email questions and comments to me.

DarkBASIC Professional Upgrade 6.3

We have released Upgrade 6.3 for DarkBASIC Professional. This is a free download and introduces a number of new features and changes to the core. It incorporates the following:

Basic3D

Camera

Download Upgrade 6.3 from: //www.thegamecreators.com/?m=view_product&id=2000&page=upgrades

DBPro Tutorial - Space Invaders, Part 2 - by Steve Vink

DBPro Mastery

Building Blocks

Having put our framework into place in the last issue, we will now start to build the game itself. Solid, working logic is the prime aim at this point, proving that our concept is workable and codable. To this end, we will not be adding fantastic, well polished models, astounding sounds and out-of-this world effects. We will, however, bear in mind that this is the ultimate goal, and will create the code in a way that allows us to replace simple building blocks with the finished article at a later stage.

Rapid Development

As discussed in the competition programming article, building your game from the anchor-point of a menu is good practise. We will use a simple graphic and add a couple of keyboard-driven options. In our well-structured functionalised program, I know we already have a menu() function ready and waiting. In fact, it's already working, it simply doesn't do anything visible or useful just yet.

Stage 4 shows our menu in place, albeit in draft form. Study this small piece of the game carefully, and you will understand how the rest of the game will be built up part by part. The options are very easily added by directing the program to the relevant function. Notice especially that our game is already working, and adding the menu is so effortless. Our previous hard work is already paying off, and we are coding in self-contained functions that are unaffected by anything else. Our top-down approach facilitates the calling of different parts of the overall application, and simply continuing to run as normal on the return.

Option 1, playing the game, does nothing but redirect to the currently empty GamePlay() function and return again. A small delay has been added for effect at this stage. The menu is simply but effectively excluded from the screen, and included again afterwards. Option 2, ending the application, similarly calls the deinitialisation function and exits in the simplest way possible.

Create and Destroy

Now we are really moving. It's time to create our game objects and place them on the screen. At the same time, the code to destroy the objects will also be written. Doing these two tasks in parallel ensures the final game is efficient and requires far less debugging! The functions GamePlayInit() and GamePlayDeinit() are already in position and are already being called in the appropriate places in the GamePlay() function, as set out in the original framework. We simply have to add the relevant code. Stage 5 does exactly this. Open the provided example and compare the 2 functions, noticing that everything that is created is also destroyed. We are using the data set up earlier in the invader arrays and player variables to quickly generate and position the objects. Each object has also been introduced into the collision system.

Again, the program is simply ready to compile and run, with no additional effort. The most obvious observation is that at the moment, we have only basic boxes representing the objects. Remember, our aim at this stage is to prove everything fits into place. We could, if necessary, return now to the Initialisation function and make adjustments to the positioning of the various entities quickly and with very little effort.


In just a few minutes, the world has been populated with the game objects.

Adding a state machine

The actual game itself is a collection of actions and reactions. Depending on the current "state", each action will or will not happen. For example, when the player is alive, the movement action can happen; when the player is dead, it can't. By creating what is known as a Finite State Machine, we can very simply implement a structure where every action is called at the right time. At the end of the state (or cycle), the decision is made to stay in the same state, or switch to another one, triggered by the events that have taken place. Some states may last for some time, while others may come and go in an instant.

This system isn't as difficult to implement as it may seem; in fact there is a programmatic method for implementing this method - the SELECT/CASE clauses. 8 states have been identified:

In each state, the function calls to the necessary actions are placed. For example, when the player is alive we must checkKeys() for player input, and checkInvaderBullets() for a hit. We must also animateInvaders(), which will also happen when the player is dead and also when the level is starting. MoveInvaders() is unique to this state however. As you can see, we can quickly build up a picture of what needs to happen and when.

Stage 6, which you can open and review, has this arrangement added to the GamePlay() function. In order to make this complete, a further level of functions have been added to our Top-Down design. The functions aren't all populated with code just yet, but bringing the game to life will once again be simple and methodical. The naming of the functions also make the flow easy to follow.

The moveInvaders() function is actually populated, to give you a feel for this process. You can follow the state from the game starting and initialising a few variables, to the level starting, initialising more data and waiting a few seconds to start the gameplay. Then, the "Alive" state is reached, the moveInvaders() function is triggered and the game starts to move!

Right now, we have the simple beginnings of the game. The engine is moving from state to state. Actions, although very sparse, are being triggered. Most importantly, this skeleton engine can now be easily populated with more actions.

The Plan Ahead

Everything is now in place to build our game features, and to build them rapidly. In the next instalment, all the various components, from movement, to collision detection, invader weaponry and sound effects will be literally dropped into place. At each stage, we will be able to compile and immediately see the results, even though the full game is not completed.

Until next time, Happy Coding!

Download this tutorial.

From the Forums

On October the 29th the one millionth public message was posted to our forum. The lucky author won himself a superb prize - every single product we currently sell on our web site. Although he didn't know this would be the case, as we didn't announce the prize on purpose to avoid post spamming for the million mark. So congratulations to Hawkeye, if you'd like to read the thread in question then go here.

Here is a selection of current hot topics worth checking out ...

Free FPSC Fireman

Not content with just writing great tutorials, Mark Blosser has also released a royalty-free, fully textured and fully rigged Fireman character for FPS Creator.

Aliens Powerloader Model

torti has released a model for FPS Creator based on the Powerloader from the sci-fi film Aliens. While the textures could do with a bit of work, it's free, and it's Aliens; how much more cool can you get? :)

SIRDs DLL for DBPro

A SIRD (Single Image Random Dot Stereogram) is a variation of one of those 'Magic Eye' things you've no-doubt seen a million times. A SIRD however uses dots, and can therefore be animated. This DLL creates them - trippy, but fun.

STYX COM .NET Tutorial

Net Commander has written a quite comprehensive tutorial on creating a DLL using Visual Studio 2005 (VS) and the .NET Framework that will load into DBPro, with source code and solution available for download.

Neophytes Cartoon Shader Fix

Ruccus has fixed Neophytes Cartoon shader and posted showing how to properly implement it, examples of the correct edge and shading images to use, example code, screen shots, a video, and a breif explanation of everything. Nice one!

Sliding Collision Tutorial

Ruccus also noticed people having trouble using Sparky's collision DLL, even with it being heavily commented. So he posted a simpler version showing how to achieve sliding collision, bouncing collision and even a full Pool game. Way to go.

Dark GDK Update Work

As well as the DarkGDK .NET version which was released this month, we are also working on an update to the main Dark GDK. The aim of this update is to resolve the most important issues that are still outstanding. For example, a function may not be working as expected or perhaps there is a function in DBPro that does not exist in the GDK which you would like to use.

If anyone would like to assist with the update then please post about issues you have encountered in the GDK forum at http://forum.thegamecreators.com/?m=forum_read&i=22. Several useful posts have already been made, but it will be helpful if we can get more information of what everyone expects for the next update. Please remember that this is limited to fixing current issues rather than adding new functionality.

While the update is being developed I would like to work with a small group who can help with testing and checking if problems have been resolved. If you would like to be involved, and have the time to spare, then please email me.

Lee's Tip of the Month - Blooming Lovely

Lee's Tip of the Month

I recently made an off-hand comment about the frequent use of bloom in todays games, and this observation gave rise to the fact that in the past, such an effect would have been considered expensive and unnecessary. Imagine what kind of effects we now consider extreme or performance unfriendly, which in a few years time will not only be accepted game content, but easy to implement to boot. Imagine your game conducting real-time radiosity rendering as easily as drawing a polygon, or simulating the effect of a pin, falling into a bale of hay. Exciting times are ahead!

Often, these juicy game effects remain the best kept secret of a few top developers, and if you want to get the same result you have no choice but to pay, or work it out for yourself. I would therefore like to offer you a third option; a free modern day effect for your games.

The effect is called BLOOM, and if you don't know what that is, you've probably not bought a modern game in the last six months. The technique makes bright objects seem brighter by adding a glare effect that bleeds the bright colours into the rest of the scene. It creates glorious whites and shiny metal, and makes your whole scene feel more polished and professional.

Rather than explain the inner-workings of the technique, I have written a small program which demonstrates the effect. Go online and read up on the theory of the bloom technique, and then load the provided example to see how the implementation makes it all happen:

Download EverybodyLikesBloom-271006.zip (4KB)

Make sure you are using the latest DBPro Upgrade 6.3 to run this example. By popular request, you can now create cameras (render targets) of practically any size and perform instant camera renders using SYNC MASK and FASTSYNC to simulate your own render target pipeline. Shaders, ahoy! More shader tips will follow next month.

TPS Speed and Sky Blazer

As if we didn't feature enough games this issue, thanks to the excellent AGEIA Competition results, we've also prepared videos of two more games that caught our eye. The first is TPS Speed, a very Wipeout inspired futuristic racer:

And the second game is Sky Blazer. If you remember the 8-bit classic Trailblazer then you know what to expect from this title. Insanely fast and addictive it's well worth playing.

Visit the TPS Speed forum thread where you can download this game.
Visit the Sky Blazer forum thread where you can download this game.

Tech Tips - Explosive Eye Candy - by Grant Clark

Tech Tips

Greetings fellow DarkBASIC enthusiasts and welcome to another round of DBPro Tech Tips. Seeing as the compo season is well and truly upon us, I thought it would be a good idea to show you how to add real impact to your compo entries with some rather nifty animated explosions. A library of explosions is included for your pleasure in this months download, with 1050 frames of animated maps that you can mix and blend to your hearts content.

As a small bonus you will also find a little asteroids game to demonstrate the explosions in a real game scenario. This shows how the addition of some sparkle can make even the most mundane looking of games appear much better (it also lets you itch your trigger finger!)

Retroid
Click here to watch a YouTube video of Retroroid in action

I also happen to know that most of you will be very busy with your works of art, so I'm not going to waffle on too much this month, you lot have games to code :) Incidently, this is targeted at newer coders looking for a quick way to get nice explosions into their games, but more advanced coders can use the media with their own code.

How it works

The system loads an image and chops it into frames using Steve Vinks image splitter function. The images or frames are given specific IDs, counting upward from a specified first image, for each different explosion style. You can change these if your existing program already uses the required image or object IDs. When an explosion is spawned, it is given a value to define the style of explosion we want. This value is used to look up the first image of the sequence of frames for that explosion (which gets held in an array called ex_first_image(explosion_number)). The explosion frame counter for our newly spawned explosion object is reset to 1, and the status of the object is set to alive (ex_alive(ID) = 1). Finally our object is textured, placed at the specified co-ordinates and made visible.

The explosion effects are updated by a function called update_explosions(), this takes no parameters and simply checks the frame number of all the alive explosions using a for-next loop. It then updates the frame counters and textures the explosion objects with the new frames or images. Once an explosion has reached its final frame, we hide it and set the alive staus to 0 (ex_alive(explosion_number)=0). It will be ignored in the update function until it's alive status is once again set to 1.

ExplosionFX

Currently the system is set up for 50 explosions on screen at any one time. You can change this to suit your own needs and may find it advantageous to use around 25 explosions maximum for efficiency reasons. All the explosion maps are layed out identically, each map is 30 seperate images when split, making it an easy system to manage.

The whole system is basically 1 subroutine and 4 simple functions, with a media folder containing the images. You can see a list containing the subroutine and functions below. It really can't get much simpler than that!

init_explosion_variables
This subroutine sets up the variables and arrays and must be called first.

prepare_explosions()
This function prepares the media and gets things ready for use.

spawn_explosion(x#,y#,z#,style,size#)
This function spawns and explosion at the specified x#,y#,z# coordinates using a specified 'style' and 'size#' (in the demo code there are 20 styles 1-20 inclusive. you can add more styles easily.)

update_explosions()
This function is used to update the 'alive' explosions and kill off any that have reached the final frame of animation.

kill_all_explosions()
This function will set all explosions alive status to be 0 or 'dead', it also hides the explosion objects from view.

split_image()
This is a generic function used by the prepare_explosions() function to split images while retaining alpha, I use it as standard for most image slicing operations, credits to Steve Vink.

The source code is also included as a standard .txt file for easy copy and paste into your own code, so provided you have the media in the correct place, you should have explosions up and running in just a few minutes from some quick code insertions.

Using this system is really simple, in fact it's so simple you could rewrite it in your particular coding style in very little time indeed. For the tiny amount of code required, the impact is extreme, especially if like me you tend to go for explosion overload in your creations. The supplied media can be loaded into just about any paint app and remixed using the multitude of blending modes and colour processing that most apps are now capable of. So start remixing those explosions and add some sparkle to your compo entries!

Till next month, Cya.

Download the ExplosionFX Source and Media (20 MB)
Download the Retroroid Game (7 MB)

Skycubes

We received an email from Frank Decker telling us about his new website www.skycubes.com. Over to Frank: "The site contains skycubes for FPS Creator and Dark Basic. All of the skycubes are priced at $1.99 USD. Site is fully PayPal integrated. Over 20 skycubes currently available in a variety of genres. All Hi-Res renders at 512X512. Each one comes with an installer that puts the skycube directly into the FPS Creator directory for instant use. An instructions document is also included that outlines how to change skycubes in FPS Creator."

"Coming soon, 3 new sections to the Skycubes Library: WWII Series, Deep Space Series, and Low Orbit Series."

Check out the web site for pictures and order details.

T.R.A.T - Terrain Randomizer And Texturer

We received details about a new program called T.R.A.T ( Terrain Randomizer And Texturer). It randomly creates heightmaps based on settings you provide. It also has presets for creating random heightmaps for Islands, Mountains, Rivers, Shores, Ponds, and more. Each randomly created heightmap can be customised also with heightmap alteration tools provided in the program, such as raising certain areas of the heightmap or lowering them.

After a heightmap is created the program will also generate a texture for the heightmap based off of images you provide. Or you can chose to have the program use images included to render a texture for you. The program and screenshots can be found at www.virtualdarkarts.com,and there is also a forum thread.

PlayBasic News by Kevin Picone

Play Basic

I'll start this month by giving you some insight into the big picture of PlayBasic. Approximately two years we sat down and laid out a road map of features and goals for PB and beyond (I.e. PBFX, PB3D). Not being one for half measures, you can imagine how big the initial list was, massive While we've probably implemented most of the originally listed features, there's a still some big additions left. Which range from language additions, a new runtime engine, through to more graphics engine features and additional helper tools. So there's a lot of ground to cover.

One key point during our development centered around the new runtime engine (known as VM2). We'd planned to introduce the second generation by or before release PB V1.50 if possible. But as we all know adding new features often takes a longer than anticipated. So VM2 didn't make it's debut until the recent PB V1.54 update, and only partially at that. Now those reading the fine print over recent months, would no doubt realize this puts us way behind schedule! One reason for this is that we've been bringing forward features that had been slated for addition after VM2 implementation was complete i.e, between PB v1.50 -> PB v2.00. So the transformation has been occurring out of sequence and thus slower than I'd like.

But it's here that the road map gets little a fuzzy. In order to bring users our vision of a modular suite of PlayBasic languages together, (i.e. PB, PBFX, PB3D etc) we not only need the foundations of the PB to be broken into those modules for VM2, but we also need our next generation IDE to go with it. It's this combination that makes it all possible. While these projects are well underway, they need to be finalized before a stand alone PBFX, or PB3D can be released. Which is taking valuable time and from a users perspective. VM2 and modularization just aren't sexy! So your no doubt coming the the same conclusion we did ba few months back. Which is to bring forward a version of 3D accelerated gfx engine for PB users now, rather than wait till VM2 finalized.

Now I'm not saying i'm going to run off and dump the recent compiler / VM2 work now... never! Just that we'll be changing the sequence we'll be making some key changes in. It's not really extra work, as the changes were necessary anyway. Just that this way, we can bring PB users the best of both worlds now (traditional 2D + hardware 3D solution) rather than later. So my immediate plans are to finished the recent Type implementations (See Collections below) and perhaps add few other VM2 bindings, then dive into building a replaceable GFX core.

ColdSteel - Add DX9 3D support to PlayBasic

Earlier this month we built a wrapping library for the Cold Steel 3D engine. This library lets PlayBasic users to explore the world of 3D programming today through ColdSteel. ColdSteel Features:

See ColdSteel Features & Download / Installation Info From UnderwareDesign.com

Type Collections

User defined types are one of boring linguistic subjects that people seem to gloss over, as if it's not important. That is until you run head first into something that your language choice doesn't support, then what? While Type an Array support in PB has always been fairly robust, there was a few missing tidbits that I felt that we needed to implement now, not later.

While PlayBasic has supported type inherence (spawning child types from parent types) with for some time, you couldn't store all the different types in one central array. Which meant making various arrays for the different lists, or passing arrays to functions. Both are perfectly workable, but it'd nice if we can store them all in one concentrated place. Which is what the Type collections give us.

So typed arrays can now be treated as a collection of types. Using the New operator, we can assign array elements an individual type. This type has to be a descendant of the parent type, meaning the array can hold the parent and children of the parent types within it. Example:

; Define a parent type to hold all the basic fields that all characters will have 
Type BasicCharacter
  Status, X, Y, Sprite
  AnimFrames(100)  
EndType

Type Alien as BasicCharacter
; The unique fields that this type would have
EndType

Type BossAlien as BasicCharacter
; The unique fields that this type would have
EndType

Dim ObjectCollection(100) as BasicCharacter

; Create some elements 
ObjectCollection(1) = New Alien
ObjectCollection(2) = New BossAlien

; Your characters update code might look a little like this if you wanted.

For lp=0 to GetArrayElements(ObjectCollection(),1)

  ; Use the GetType Function  to query what TYPE is stored at this element.
  Select GetType(ObjectCollection(lp))

    ; If it's an alien, then call your update function for this character type.
    Case Alien
      UpdateAlien(lp)

    ; If it's a Boss Alien, then call your update function for this character type.
    Case BossAlien
      UpdateBossAlien(lp)
  EndSelect
Next

As you can see, this style of approach can help you create more compact code in your projects. We've also added support for complex typed assignments and typed pointers to boot. But that's a bit too geeky to bother going into. But it's there now if you want it! :)

Update PB1.54 Is out there

Well that's it for October, so until next month I'll leave you with the news that PB.154 patch is available now (includes the new Help, Updated Type Support & ColdSteel Wrapper). So enjoy. PlayBasic Update V1.54 Release Notices

Dark Shader Video

After the interest in Dark Shader from its preview last issue, we put together a video showing the package in action. It is still early days but you can already see how the core of the program works, and the real-time results. The video has been uploaded to YouTube and can be watched here: Dark Shader on YouTube.

We've also prepared a higher resolution Windows Media Player (WMV) version of the video which you can download here (21 MB). If you've any questions about the product then join in the chat in the Dark Shader thread on our forum.

This months Winner

Each month we pluck a random email address of one lucky subscriber from the list, and award them with a free copy of DarkBASIC Professional. To claim it all you have to do is send us an email from the winning email address. The winner this month is: henriks-data@???????.se.

Outro

Share your news with over 12,500 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).
Issue 47 deadline - November 27th.