Well I'm here again to bring you another small truckload of TGC related news and information. We've got games. We've got tutorials. We've got competition winners. We've got pyramid-heads! Yes.. in this sweltering month of July, all our bases belong to you :) This issue marks no less than 3.5 years of consistent newslettering, while others tried (and failed) we have stuck to our guns in bringing you the latest TGC news, as it happens. Personal highlights this month include an in-depth look at the new Dark Lights, yet another sneak peek at Dark Physics, three great tutorials (you simply MUST download the Arcade Environments demo and check it out!), FPS Creator news, forum chatter and plenty more.
But you all know the drill by now.. scroll on down to the contents below and enjoy the read. We'll see you again next month at the same time. We may have just lost the World Cup, but life goes on! (and hey, the sublime Dr. Who finale made up for it all :)
Don't forget you can read this newsletter online via your web browser, which is a much nicer experience if you are stuck within the realms of Hotmail or Gmail. See you next month for issue 43, as we get frighteningly close to our fourth year of publication.
Cheers — Rich
(1) eXtends (2) Dark Lights (3) Sketch Up (4) Dark Physics (5) Product Updates (6) PlayBasic News (7) Aliencodec Returns (8) EXE Hacking (9) Project Management (10) From the Forums (11) FPS Creator News (12) Lee's Tip of the Month (13) DBPro Tech Tips (Arcade Environments 3) (14) Mappy DLL (15) Amiga Demo Podcast (16) Five Full Games (17) Game Dev Changes (18) The Winner (19) Outro
We are pleased to announce the immediate availability of the eXtends plugin for DarkBASIC Professional. eXtends is a set of new DLLs that both expand some core areas of DBPro, as well as bringing in lots of new ones. It's main features are:
Dynamic Media Handling - Dynamic Media handling allows you to work in a faster way. Instead of creating media using the default DarkBASIC Professional commands (that forces you to define a number to each loaded media), you can now receive a media ID from the commands. This allows for a smoother code organisation, and a more intuitive way of naming media. All other commands in the Extends plugin use the Dynamic Media Handling method to avoid conflict with user coding. Plenty of example source code is provided.
XGui System - XGui is a complete set of commands for a custom "Graphical User Interface" and is designed for games. It allows you to create virtual windows and gadgets, and use them to display all the information you need. The system can be used to display a large range of Game UI like simple FPS display with energy, armour and weapons, up to more complex ones like RPG games that display equipment information. It also handle custom files to support Skin themes for XGui Windows.
XFont System - The XFont system allow the output of text on screen using a Bitmap font, created from a single image file. It handles 8x8, 16x16, 32x32 and 64x64 pixel wide bitmap fonts.
2D FX - If you liked the old Super Nintendo 'mosaic' effects, but were never able to achieve to reproduce them then this command set is for you! It can generate various levels of mosaic, and can also use a random pixel mode to give more impressive results. Are you an old-skool demo addict? Then Extends also includes 'wobble' effects, so you can deform images with sine wave patterns automatically.
Perfect Pixel Sprite Collision - With the Extends plugin you can perform pixel perfect collision between 2 sprites. You can also collect the amount of pixels that collide with each sprite. To show you how it works a small "Snail in the Labyrinth" game, highly inspired from old Sega Master System, is included as a demonstration sample.
Billboard system - This system is used to force an object to always be face to the camera. It is generally used by 2D/3D RPG games that use 3D for game environment and simple textures applied on a 3D sprite. It can also be used to generate light halos or 3D stars, and many others things.
Virtual 3D Lights system - DarkBASIC Professional uses hardware lights, which limits you to 7 in your scene. This system allows you to go beyond this, creating many more than 7. It works by calculating which ones will be closest to the camera, and activating them automatically. You can lock / unlock true DarkBASIC Professional lights to use them instead of letting the plugin select which ones will be displayed. Lock / Unlock commands are useful to keep a light available for special effects (like weapons plasma lights effects and more).
Custom Particle System - The main objective of this command set is to provide specific effects using our custom particle system. With the built-in presets it is easy to create stunning flames, snow, rain, smoke and sparkle effects. You can also customize the particle movements and speed, lending your own touch to them.
Real-Time Sky System - This set of commands is probably the master piece of this plugin. It's the perfect solution for people that wish to create a MMORPG or RPG/Adventure game with support for a full day and night cycle. It gives you the ability to use a set of sky systems, or create your own, and then choose the time expansion speed.
eXtends is on sale now priced only $31.99 (€25.00, £16.99). View screen shots and order from the eXtends web page.
Although only on sale for a few weeks, a brand new update for eXtends has been released. This includes pixel perfect collision support for scaled and rotated sprites, as well as new help files, examples and other new commands. Update 1.1 will be made available for download shortly, and is free to all eXtends customers.
Here at TGC HQ Paul Johnston (known in the forum as Sparky) has been working hard on a new DLL for DarkBASIC Professional. After releasing the excellent Dark AI plugin he then moved onto creating a light mapping extension. After a lot of hard work we are pleased to show you a preview of Dark Lights. Due to be released this month, Dark Lights adds a suite of new lightmapping commands and features to DarkBASIC Professional, and also includes a versatile lightmapping tool with full source code. Infact the free editor that comes with the DLL created the front cover image of this months newsletter. Here are some of the features that Dark Lights supports:
The light mapper supports three types of lights, point lights which emit light equally in all directions and reduce in brightness over distance, directional lights which shine in a particular direction over all distances equally, and spot lights that shine in a particular direction like a flash light.
You can set the attenuation for point lights to control how light fades over distance from the light source. You can set the parameters for quadratic, linear, or no attenuation and the radius over which the light has effect.
You can add transparent objects that allow light through but modify the colour of the light on its way through. This can be used for stained glass windows that create a pattern on the floor behind when a bright light shines through them. There are three modes of transparency available, black colour key transparency that blocks or allows light through, alpha mapped texture for transparency that varies over the object and colours the light, and semi-transparent with consistent transparency over the object and colours the light.
The light mapper reads the vertex normals of the objects that are being light mapped and colours curved surfaces accordingly. You can also set the quality for curved surfaces to be higher than that for flat surfaces to make sure there are enough pixels to smooth the surface correctly.
Objects can cast shadows over each other or be set to only receive light and not cast shadows. You can set the shadow blurring to remove any sharp edges that are created in the transition between light and dark. Soft shadows can be achieved by either blurring or by using multiple point lights instead of a single point light to smooth the transition of shadows.
The light mapper uses a fast ray casting engine to quickly work out if a point will be in shadow and allows many lights to be used whilst still maintaining quick build times in the order of minutes for complex scenes and seconds for simple scenes.
The light mapper allows you to start the light map process as a thread so that you can continue to display its status on screen whilst it is in progress. You can end this thread at any time before its completion allow you to cancel it without ending your program.
A form of global illumination, ambient occlusion creates realistic shading on surfaces by testing how much of a global light each point can see. Those points in corners or holes will see less of the global light and be darkened accordingly.
Click here to see a screen shot of Dark Lights in action on a level exported from FPS Creator (and loaded into DBPro)
You may be wondering what use these sorts of commands would be in DarkBASIC Professional. After all, even the fastest lightmapping routines would still take too long to be run in-game on complex levels. However there are many applications for this extension. A large number of people when creating games, build their own 'game editors' as well. Using this you could now add sophisticated light mapping functions directly into your tools. You could write your own stand-alone light mapping application with this. Write your own interface perhaps using something like BlueGUI, and use this extension to handle the actual mapping.
You could of course use it in-game if your game suits it. For example in a simple scene, dynamically generated, you could lightmap the entire level before the player even gets to start it. The threading options available mean you could even be doing this while the player is going through the intro sequence / game menu. Finally the editor we include with the DLL can be used to lightmap your own levels and objects. Using an intuitive 3D interface you can fly around your level, place lights, change the colour, fall-off distance and other attributes, before rendering the scene. You can then fly around the rendered scene and if you like it, save it out as a native DBO object. No more messy conversion with file formats - you can now import and map directly to DBO files which DBPro will load and display exactly as they appear in the editor. We even give you the source code to the editor, so you can add your own enhancements and learn from it.
Dark Lights is available for pre-order now at the very reasonable price of $25 (€19.99, £13.99) and will be released in the month of July 2006.
As part of their spending spree, Google have acquired many companies. One of them included the developers of 'Sketch Up'. Sketch Up is a free tool that allows you to 'quickly and easily create, view and modifying your 3D ideas'. As a 3D package Google are billing it more for those who wish to create visual designs for a new kitchen, or garden layout. However being ones to sniff out a bargain from a mile away we played with Sketch Up and found it to be an extremely versatile and very clever 3D editor. You can push and pull objects around, texture them, check shadowing, create sections and cut-outs, render and annotate. There is even a complete 3D gallery you can submit your models to (and download new ones from).
The potential for using this to create geometry for your games is apparent. In fact, we were so impressed with its ease of use that we have modified DarkBASIC Professional so you will be able to import Sketch Up models directly into your own games! We will release this modification, along with example source code in Upgrade 6.2 for DarkBASIC Professional, due for release later this month. In the meantime you can head on over to http://sketchup.google.com and grab the free version and start modeling with it, safe in the knowledge that your models will work natively in DBPro with Upgrade 6.2. Of course you could always model in Sketch Up and then light map your creations with Dark Lights for a powerful combination only costing $25!
Dark Physics brings a staggering amount of features to your Dark Basic Pro powered games. It has an extensive set of commands covering areas such as cloth, particles, fluid, rigid bodies and vehicles. Each command set is backed up with a collection of tutorials, demonstration programs and detailed background information.
Being able to create realistic cloth is now possible with Dark Physics. With a few simple commands you can have banners, flags, capes and items of clothing set up. Cloth can wave around in the wind, be attached to other objects, interact with its surroundings and even tear apart.
The particle system available in Dark Physics offers a wide range of features for creating numerous effects such as dense smoke, fog, fire, rain, snow, gas clouds and more. As each and every particle is simulated by the physics it means that you can have particles colliding with each other and other objects around them for creating all kinds of spectacular effects. Particles can also be harnessed for use in explosions that cause dust and collateral debris.
Hardware driven fluid effects provide an unprecedented level of realism for the simulation of liquids and gases. With fluids, you can create cascading waterfalls, jars full of liquid that break and spill, and the obligatory blood spattering onto a wall and dripping down after blasting an enemy. The fluid is designed to be fully integrated with the physics environment. It will collide and interact with other objects in a physically realistic manner.
Rigid bodies form the core of Dark Physics. They are used as ways of representing your objects in the world. For example, you may have a level and want to have it represented as a static rigid body mesh or you may have a collection of crates and have them set up as rigid body boxes. Whichever option you choose rigid bodies will ultimately form the core of your game. They can be used in all manner of ways. Imagine being able to create characters with complex, jointed geometries for more life like motion and interaction, being able to interact with all of the world and have destroyable structures such as bridges and much more. The command set for rigid bodies brings a wide range of features to Dark Physics including:
Have you ever wanted to create a racing game? Well now you can by utilising Dark Physics. A set of commands exist for taking vehicle models and setting them up in the simulation. It has a great deal of flexibility that allows for the creation of all kinds of scenarios such as driving simulations and racing games. It won't be too long before you can be driving around a terrain performing power slides and skids, or perhaps you fancy driving round a race course at high speed, or maybe you want to create a stunt circuit and have vehicles that drive up ramps and have to go through obstacles. All these possibilities are available to you by using Dark Physics.
A wide range of properties exist for vehicles to create all kinds of effects. Being able to set front, rear or 4 wheel drive is handled with a few simple commands. Automatic and manual driving can be set up along with all kinds of gears, control over steering and how the vehicle handles and of course how much power the engine has!
Dark Physics fully supports the AGEIA PhysX processor and harnessing its power in your games will make a significant difference. The extra complexity it allows for is staggering, and we've seen some fantastic results from it. In one test we had created 4 brick walls using a total of 1700 bricks. We then dropped a further 200 bricks into the scene in an attempt to destroy the walls. As you can imagine when only using the software version the complexity of the computations was proving to be too much and the demo slowed down a great deal. A quick change to one line of code to enable the AGEIA PhysX processor and a recompile later and our demo was now running at over double the frame rate of the software version. Another interesting aspect here was that only 50% of the cpu was now being utilised which demonstrates potential for us to be doing even more in our test. By taking advantage of the AGEIA PhysX processor imagine how much further we could go and how much more we can do in our games. Other tests have demonstrated exceptional results as well such as when using 2000 particles to create a massive amount of smoke it proved to be over 10 times as fast when using the AGEIA PhysX processor. In a further test of its capabilities we really got to see the the AGEIA PhysX processor can do by having an enormous amount of crates in a scene, 6000 to be precise and it was handled with ease.
Dark Physics will ship with over 100 example programs included. We have created demos and sample games for as many features as we could think of. From a complete Thrust-style 3D shooter, to a Pachinko (pinball) style game, to interactive demos for collision, rigid bodies, particles and many many more. The extensive help files are split into 'Tutorials' and 'Reference'. The commands are fully documented from within DarkBASIC Professional, so you will get function insight on all physics commands, and F1 key based links to the reference files. We've worked incredibly hard to make physics as appealing as possible to you, and as easy to drop into your games as we could.
You can pre-order Dark Physics. It is also available with Dark A.I. at a 15% discount.
There are a number of product updates we'd like to announce. Kicking off with ...
We have been listening to your feedback in our forums, and this free Update fixes a handful of reported issues, and brings in new parameters and commands for you to use. The changes are additions are:
AI ADD OBSTACLE FROM LEVEL can now accept 2 new parameters for container and height.
AI MAKE PATH BETWEEN POINTS has a new parameter to set the maximum distance without a way point.
New command AI SET ENTITY CAN SEARCH to prevent searching particularly when in aggressive mode.
New command AI SET ENTITY AVOID DISTANCE to set the distance the entity will start moving away from its target.
New command AI SET ENTITY ATTACK DISTANCE to set the distance it will stop moving towards a target in aggressive mode.
New command AI SET AVOID MODE to set if entities avoid each other.
New command AI GET PLAYER IN ZONE to check if the player is in a specified zone.
New command AI ZONE EXIST to check if a zone exists.
AI ADD OBSTACLE FROM LEVEL now allows instance objects to be used.
AI SET ENTITY COLLIDE now correctly makes the entity move sideways.
Object scale and all rotation is taken into account when adding obstacles.
Friendly units now avoid each other.
AI ENTITY DEFEND AREA now sets the entity's idle position to the defended point.
Path costs now correctly take way point costs into account.
AI MAKE PATH BETWEEN POINTS now doesn't tell you a path already exists when it really doesn't.
Upgrade 6.2 introduces further enhancements to the language. The most important for FPS Creator owners is the fact that 6.2 can fully compile the FPS Creator source code, without any modifications. As reported elsewhere this issue, 6.2 also fully supports models exported from Sketch Up. Other changes include:
New DBO structure to provide future-proof fields (reduce minor update incompatibilities)
Optimised SET SHADOW SHADING ON when employing shader conversion = 8 times faster
Fixed error causing a runtime error to prompt when using SHOW LIMB on an instanced object
Added LIMB COLLISION to be used with instanced objects (CSG now okay in FPSC code)
FX shader files can now be added as media, and detected as an available internal file
Added ONE new command for the creation and removal of an optional camera clipping plane
SET CAMERA CLIP Camera Number, ClipOnOff, X, Y, Z, NX, NY, NZ
Un-popular negative-value runtime error removed
The Dark A.I. 1.01 and DarkBASIC Professional 6.2 Upgrades will both be released together during the month of July.
3D World Studio version 5.48 is now available. This new version features new texture mapping for curved surfaces, better mesh lighting, and other improvements. A large industrial complex scene showcases the program's ability to create professional-quality game environments. You can download the program and example scene from the 3D World Studio page. Cartography Shop users who order the program before August 1 can still receive a substantial discount. Please see the order page for more details.
Kevin Picone details all the changes to PlayBasic over the past couple of months: Since it's been a couple of months since our last round up, we've an awful lot get through in order to bring you totally up to date. Most recently we've just completed another round of extensions to PlayBasic's sprite collision. These extensions have seen the addition of Pixel Perfect and combination collision modes. Other additions have been of Arrays fields in User Defined Types, a new animation tool, more MMX optimizations and work has now finally moved to the second generation runtime.
With the addition of a traditional Pixel Perfect collision mode, PlayBasic's sprite collision engine arguably second to none. Not only does the engine handle pixel level intersections between rotated/scaled/flipped/distorted sprites. But it can also handle mixed intersections between sprites using vector collision and sprite pixels. This gives users seven types of mixable sprite collision. Ranging from Rectangle, Rotated, Circular, Sliding, Sticky, Polygon Shapes (Convex, Concave, Complex!) and now Pixel Perfect. With the added combination of manual methods at your disposal for detecting things like if sprites are within regions / polygons / line of sight and the nearest collide. Which will simplify your AI programming dramatically.
You might be familiar with user defined types being able to hold various types of individual data (integers/floats/strings) in the one unified collection. Often this is all that you need, but what if you want to a store a list of items inside your type ?. This is where Array Fields give us some added flexibility. Array fields are defined just like regular fields. The only difference is we need to give PB the dimensions of this field. So if we were creating a type to hold the basic characteristics of a character in your game, then it might look like this:
Type BasicCharacter Status Xpos,Ypos ItemCount Items$(100) ; defined a sub array array to hold this characters list of items Endtype
Once a type has been defined to the compiler, we can create variables or even arrays (i.e. arrays in arrays) of this datatype using the dim statement. You can then store and retrieve information from this array field just like any other field. This is pretty useful! And when combined with PlayBasic type passing and inheritance support, you can create easily manage very complex data structures.
Over the past few months we've been slowly moving towards the second generation of the PB VM. These steps have seen a steady list improvements to not only PB's performance, but have allowed for various new flexibility like pointers and arrays fields in types, to name a few.. But we can only take these steps only so far, So it's time to move forward in a big way! The main differences between the existing VM and second generation edition, is that it uses a new instruction set, plus it's stand alone. Since the new instructions are more stream lined, this not only allows for faster runtime execution, but pre and post optimizations. The down side of changing the entire instruction set though, is that this means updating the compiler and runtime to suit. Which is a timely exercise.
Currently things are progressing well. In order to make the conversion more manageable, I've cut the task down into a series of what I hope are smaller objectives. Rather than a single massive one. First task was to re-block the instruction set. Which is already (mostly) done in PB1.44. The next was to exploit the new benefits of this blocking. Which is the ability to reduce the number of instructions the compiler produces in certain situations. Of course, the less instructions used, means faster execution ! Even while the update is still only in early beta, we are already seeing another 15-20% performance increase over PB1.44. We're not sure as how fast the new VM will be, but if previous tests are anything to go by, which have shown certain aspects to be %200->%300 faster. Then that's what were aiming at. But we'll know soon enough :)
Well, while we continue brewing up the next PB update, I'll leave you with the news that PlayBasic V1.44 Demo is currently available for download on the PlayBasic site. So enjoy.
It was no secret that The Game Creators purchased the brand and entire product range from Ronnie Smith / Aliencodec, late last year. Their Plant Life and TreeMagik software had always been strong selling titles for us, so the opportunity to bring the whole catalogue into our portfolio was too good to pass up on. After some hard work sorting out the web site, and bringing the core products up to date - incorporating the latest updates, adding in new media packs and wrapping them in native installers, we are pleased to announce that the Aliencodec web site is now back open and awaiting your visit!
For those of you who have never seen any of their products before, Aliencodec specialised in creating 'plant and vegetation' generators. These are applications that allow you to build fully textured trees, plans, flowers, grass and more. All of which can be exported in native DBO format directly for use in DarkBASIC Professional, or .X format for use in DarkBASIC (other formats are also supported). You can literally paint your own trees and create lush looking forests in next to no time at all.
If you purchased Plant Life or TreeMagik from The Game Creators at any point in the past, then you can now upgrade to the latest versions (with all the bundled extras) completely free of charge! Just login to your TGC account, click the Order History icon, and re-download the installers. This will give you the latest versions, full updated.
Also on sale are BlitzGrass3D and BlitzTree3D. These are complete 3D grass and tree engines that you can drop right into your Blitz Basic games, ready for use. Yes you read that correctly - these two titles only work with Blitz Basic 3D! (I bet that is something you never thought you'd read in a TGC newsletter, ever!) We are working on our own versions for DarkBASIC Professional under the working title of Dark Earth.
Feel free to visit the Aliencodec web site to download trial versions and read more. You can buy safe in the knowledge that all orders are fully handled and supported by The Game Creators.
Ever wondered what is going on inside your DarkBASIC Professional built EXE files? Want to find a way to pack extra files into your EXE, or strip out redundant ones? Then you definitely need to pay a visit to The Winches web site. On there you will find programs such as Dark Explorer, Dark Injector, Patch Tool, EXE Shrinker, DLL Tool and loads more, including comprehensive details on the DBPro EXE format.
Dark explorer is a program for editing DarkBASIC Professional, FPS Creator and DarkBASIC Classic exes. Features include:
Dbpro exes consist of a normal exe with data appended on the end. The exe part is very similar between all dbpro exes. The same exe handles the three different types of dbpro exes, normal, compressed and exe with .pck file. With a compressed exe the exe sees that the first appended file is "compress.dll".It then extracts "compress.dll" and then calls the decompress_block function within the dll. To this function it passes a pointer to the rest of the appended data and its size. The "compress.dll" then decompresses the data and returns a pointer to the decompressed data back to the dbpro exe.
If we inject our own "compress.dll" as the first attached file then the dbpro exe will extract our dll and call the compress_block function it contains passing a pointer to the rest of the appended data and its size. We can then just pass back the already decompressed appended data and the dbpro exe will start as normal. We can also return 0 which will tell the dbpro exe an error occurred and it will silently exit. This is mainly useful if used to inject a user friendly directx version check but it could be used to do anything that you can be done in a dll and needs to be done as soon as possible after the exe starts. This program provides a simple way to inject a dll as the first attached file and some dlls to inject.
Patch Tool is a patch maker tailored to dbpro exes. The patcher can add/replace or remove any file in a dbpro exe that was compiled without compress media option. Instead of distributing a multi-megabyte dbpro exe every time you update your game you can distribute a much smaller patch instead.
DBPro exe shrinker is a tool that allows you to reduce the size of dbpro exes by including only the files unique to your exe and sourcing the rest of the files from the dbpro compiler dir. Depending on the commands used in the exe this can reduce the exe size by up to 7Mb. In order to run the small exes on a different system the same version of dbpro needs to be installed.
You can download all of these applications (and more!) from: http://winch.pinkbile.com
It's competition season! The time is upon us, when competitions are springing up with fantastic prizes to be had. We have the TGC Text Adventure, Dark AI and Retro Remakes to name but three that are already in full swing. Unfortunately, one of the by-products is a plethora of hard drives, stacked high with almost-ran projects that never made it to the finishing post. So this month, we'll put the code to one side and take a look at the process of completing a game to a deadline. And with a bit of dedication and good management, maybe we'll see a few more games making it into the running.
This tutorial is by no means the only way to manage yourself and produce a complete piece of work. But what it will do is help you focus on managing your time, managing your game development, and managing to finish! Deadlines can be harsh, but if you use them as part of your toolkit they will ensure you focus on what is essential, and discard what is just a pipe dream. My experiences are drawn from my vocation as a business systems programmer, where the only guarantees are a lack of time and resources.
Editors Note: Due to both space restrictions in this newsletter, and the length and detail of Steve's excellent tutorial, we simply do not have room to feature it all here this month! However the tutorial can be downloaded by clicking the image below. The zip file contains the full Microsoft Word and PDF versions of the tutorial.
The topics the tutorial covers includes:
This is all wrapped up with a good way to get feedback on your game. If you are thinking about entering a competition, and haven't done so before (or you fell to pieces last time!) then you would be foolish not to download and read this tutorial.
Download this tutorial.
Here is a selection of current hot topics worth checking out ...
This is a 3D DarkBASIC Classic game based on the original Commodore classic. You can play against the computer or over the internet. The game is similar to chess, with strong strategy elements.
Dark NET allows you to use the .Net Framework version 2.0 in your DarkBASIC project. Although still early in development, this system looks promising for those who wish to integrate .NET and DBPro.
Forum member Hamish McHaggis has converted the C++ DBO headers to Delphi. Should be useful for Delphi developers who would like to work with DBO files
Drew has released his 3D adventure game Dumbow and Cool free for TGCers. If you didn't have a chance to check out this game previously, then you can now enjoy the full thing.
The forum code was recently enhanced with a number of new features, including new posting tools, new smiley strip, toggles and others. Preparations have also been made for more additions soon, including 'marked threads', revised paging and searching. Check out this post for all the changes.
This is a new game you may wish to try out. It essentially combines the gameplay elements of Table Soccer and Pool. It is controller centric and has multiple controller options. Game physics can be customised. It uses a novel "mouse vs mouse" mode where both players use mouse controllers.
Ok first of all, there are only going to be a handful of entries this month. If you actually go to them however, you will find a gateway to hundreds of different resources, tutorials, models, scripts and more, for FPS Creator. Forum members Chris Franklin and Bullshock2 have compiled together two lists of resources, both of them you should look at.
First up is Chris's list of tutorials. At the time of writing he has directly linked to 20 different FPS Creator tutorials. Everything from making entities in Cinema 4D, to making your own sky cubes. Check out the thread here.
FPS Creator Forum Moderator Bullshock has compiled an exhaustive list of FPSC related content and sites. I hope you've got some spare time if you check this out, because there are over 100 different things to look at! Everything from links to resource sites (free and cheap), content ready for purchase, and a whole stack of free models and textures the community has contributed so far, from Plasma Rifles to Electric Guitars! Dig around in here and you'll be amazed at what you see.
We couldn't feature this last month because the submission deadline was only hours before the newsletter issue was due to be released, and we hadn't yet voted on the winners! But that has now taken place and we posted the top 5 winners of the screen shot competition to the forum, along with the winning images. Here are the first three places (shown from left to right), who between them win $350 worth of prizes:
Not content with just winning the screen shot competition (above), Wehtam also released version 2 of his Game Cover program. Game Cover is a program that can create Flash intro sequences for your FPS Creator games. You can choose the fade colours between elements (such as the developer / publisher logos), it supports more file formats and can resize images for you. The end result being saved out ready to slap onto the beginning of your game. Check it out here.
We forgot to mention this game last month, so here it is - this is an FPS Creator built 'episodic' game. Apparently customers of the first chapter get to decide what happens in the next one! Set in a sci-fi environment, apparently all hell has broken loose down on Mars again (seems to have a bit of reputation that planet, doesn't it?), and it's up to you to find out what caused it! Make sure you check out the screen shots, video and demo before parting with any cash, but if you like what you see/play the game only costs €6.99. From the same developer is also a Landscape Pack for FPS Creator. This consists of pre-modeled and texture landscape elements you can drop into your games. Obviously it's not going to turn FPS Creator into the next Battlefield 2, but used correctly it could visually improve your game. Visit the web site for info.
This is a common question, often posted to the FPSC forums after the release of our newsletter. So I thought I would spend a moment to explain our company policy, and give a bit of a background. Back in 1999 when we started out with DarkBASIC Classic, we fell into the mistake of promising things in Upgrades, and also promising unrealistic deadlines. While we set out with every intention in the world of meeting our deadlines, it doesn't always pan out like that. And while we'd love to drop every single cool new feature we can think of into FPS Creator, we cannot publicly say we're going to do this - because the community backlash if we fail to deliver is far worse than that generated by saying nothing at all. Our policy on upgrading FPS Creator is quite simply that it will happen when we are ready, but we will not speculate on what the upgrade may or may not contain, nor when it will be released. Both of those items are kept internal until we have a 99% complete package ready to roll. So when you do hear about an Upgrade from us, you will be safe in the knowledge that whatever we say it contains, it will do - and that because we've even mentioned it, it must be extremely close to release status (within 4 weeks). Some of you may not like this approach, but we have learnt from the past and it is how we now operate. When the first FPSC Upgrade is ready, you'll read about it here first.
TGC Disclaimer: Please remember that The Game Creators provide newsletter information for your own use and do not support the products listed above. I.e. while we believe the traders to be responsible and honourable, we can't bail you out if they foul up an order.
If there is one issue that should be at the top of your list, and always ends up at the bottom, it's the speed of your game. It took me twenty years to come up with that pearl, and I still don't listen. If your game is not running fast and smooth, you are not enlightened.
You are so busy making a great game idea come alive, speed always gets pushed into the realm of 'when I have time to optimise it', or my personal favourite, 'this is not the final version'.
Allow me to dispel some concepts you might be using at the moment. The SYNC RATE command simply places an ugly delay in the rendering pipeline to approximate the desired frame rate. No self respecting game would force a sequential delay right in the middle of their game loop! Also, relying on VSYNC (SET DISPLAY MODE 640,480,32,1) to control your game speed does not account for your game running on Uncle Joe's Shoe box computer running at 5fps. Doing so means your game slows down by a factor of twelve and becomes unplayable. Likewise if the user changes their monitor refresh rate to 120mhz, your game will become unpleasantly fast.
I have prepared some code which shows a simple clock running under vsync and a constant 60fps logic. The program is smooth and completely machine independent, meaning 1 game second on your machine will be 1 game second on Uncle Joe's machine. Read the code and the comments. Edit the code and observe the difference between code logic (such as A=A+1) and code visuals (such as LINE x,y,z,y). For simplicity, the code uses a WHILE loop to control game logic speed, but there are better ways. Instead of looping logic twice, simply multiply all values by a factor of two.
To conclude, if you (a) make sure your game vsyncs to refresh rate, (b) do not force sequential delays, (c) keep ALL your game logic machine independent and (d) you can maintain your frame rate at 60fps while you develop, you will get a real sense of polish and professionalism. And why not, you are recreating a quality mechanism used by the best developers in the world.
Greetings and salutations fellow DBP'ers, welcome to part 3 of our arcade environments series. Last month was a bit too hectic with physics testing which is now almost over, so it's back on with the program and time for some landscape eye candy goodness.
Recapping : Last month we discussed the neighbour policy and how it can be used for making a multi-directional scrolling tile system, The month before that we had the actual functions for the scrolling landscape. It's time to expand on the landscape and add some atmosphere to the proceedings. What we are going to do this month is a bit of a performance hit on lesser computers, but you have the code and it's easily modified to work at a decent rate on low end systems, you just need less of it, more on this and other performance related stuff further into the article.
So what's next on the list then? The first thing we need to add to get a real sense of depth in the existing scene is an atmosphere. Making this is actually a very easy process as it's just a collection of transparent plains that lie between the layers of the landscape, each layer placed further from the camera than the last in a stacked fashion. Using ghosted objects and scrolling textures we can add some really cool atmosphere effects. Using shaders we can get even more convincing and interesting effects but we don't want to overload the scene with too much going on too early in development, so shaders will be an addition to the functions that should only be used under certain circumstances. It must be noted again at this point that the media becomes very important, it's all to easy to upset the overall look of the scene with media that does not fit properly. When it comes to good visual representation of things, the media used becomes just as important as the code that drives it. No matter how good your code is, if the media is sub standard or just plain wrong, your scene will look bad even though the code may be of the highest quality.
All this transparency we'll be using relies on the fill rate of your 3d card, not the rate it can draw polygons, but rather the speed it throws the texels at the hardware which turns the visual data into pixels on the viewport, your screen. Modern GPU's have a fill rate in the billions of textured pixels per second, this allows for a great deal of effects that rely on transparency to run at the same time in a scene, slower machines with less powerful GPU's will start to struggle a bit with this. If you experience any issues with effects, just cut back a little at a time till you get the desired frame rate back. Dropping the target resolution can help a little with frame rate, as can adjusting the level of detail bias, FSAA and ansiotropic filtering in your hardware settings, this is at the cost of overall visual quality though. As a coder using DBP and DX in a 3d environment, you really should know how to do this, now back to matters at hand.
Using only a few ghosted plains with textures, it's possible to transform the existing scape into something with a more complete feel. We can also add a screen aligned plain at a large distance from the camera with a backdrop texture, this helps give the scape a sense of setting, this is not always needed though and is scene specific. Take a look at screen shots below to see just how much depth is added with only nine textured plains added to the scene. The static images don't show the parallax effect of movement unfortunately, you'll have to run or compile the demo to see the real action.
As you can see the original scape is rather dull, while the same scape with atmosphere plains is much nicer and complete, yet the second image contains only nine more objects than the first. From here the feeling just gets deeper. Adding a mist effect using the standard DBP fog can gain yet more depth (as seen in the original function demo), this is at the very minor expense of adding a couple of commands then tweaking the distance and colour of the fog to get the desired effect. you'll also find some rather interesting colour bleed-in as objects closer to the camera are less effected with the fog. White fog as mist can be really effective and artful if it fits the scene properly. The same goes for black fog which creates a wonderful depth cue effect to black. Dynamically adjusting the fog distance and colour over time can add a new level of graphical niceness if you get it right, allowing for seamless transition from clear sunny weather to foggy and darkening over the duration of a game level. It also becomes a very effective way to cloak and reveal the landscape and its contents at the start and end of levels, this is done using a rapid change from the scene to a pure colour with high speed fog distance changing, from near to far and vice versa. It should be noted that many shaders are not fog friendly, so fog is more naturally suited to non shader based environments, It's not too much of an issue in the grand scheme of things though.
Once we have the general misty atmosphere in place it's time to move on to the more interesting effects, all of which are based on quick and simple particle systems. Particle systems are everything to a game or demo, you may not think it, but you use them all the time. Here the particle system automates the creation and destruction of objects to produce an effect, this just runs in a loop with every destroyed object instantly being re-born at a new starting point, nothing complex in the slightest, which is how it should be. On the horizon line we have forced the colour to white through additive blending, now we want to bring that to life with an almost magical effect that's very much like an aurora. Particles are born just below the horizon line then grow while climbing and fade out to nothing. Something I thought would be interesting was a similar effect that moved into the scene quite high in the atmosphere, but still potent enough to impact the surface on occasion for extra effect. This effect also has a lot of influence on the saturation of the colour around it, making the plasma type pulsing you see around the edges of the particles in the demo while its running.
To help introduce a real sense of depth to our scene there needs to be more solid objects than just the landscape, no matter how pretty it looks, there needs to be other distractions in the scene. In a space scene planets are a good addition to give an additional sense of scale, debris in the form of high altitude orbiting rocks are also quite a nice addition to a cosmic scene. The planets are simple spheres with a crusty like texture and the two smaller spheres are tied to the largest in the function for easier setup. The rocks are a simple starfield tied to the speed of the landscape scrolling with their own natural speed as well, this makes for a more chaotic but convincing motion.
Now its time for you to prod the functions and add your own stuff to the affray. Along with the executable demo showing the scape with atmosphere in action, there is the source code which is set up in such a way that all you have to do is add your own stuff to it, A command list is written into the code at the beginning of each section and is easy to navigate. The main loop is practically empty and even people fairly new to DBP and coding should be able to get to grips with it in no time. The next time you think about making an invaders game, just think, you could stick it inside an environment like this and really bring it to life. Next month we'll add another bunch of atmosphere effects, in game explosion effects, and the buildings that will take the sense of scale to a different level. I'll leave you with a glimpse of what's to come in the image below, The demo includes a layer of buildings making a city in the distance, and the media is there for you to play with too.
Till next month, Cya.
Download the full source code, media and EXE (8.8 MB)
Nicholas Kingsley wrote to tell us about his new plugin: "Just to let you know that my Mappy plugin is nearly totally finished. This will allow maps (both FMA and FMP) created by the 2D tile editor program Mappy (available from www.tilemap.co.uk) to be read and used by the user. Whilst Mappy is primarily designed for 2D programs, it can simplify designing layouts for any type of program. If the FMP map format is used, then the graphics that are stored in the file are automatically extracted, ready for loading into DBPro/GSDK. The plug-in contains commands to read and write tile values at a given position and layer, display animated tiles and update the animation.
You can get the download from http://www.nicholaskingsley.co.uk/html/dbpro_plugins.html
This is one for you older geeks out there (sorry, but it's true!) that perhaps cut their first (or second) computer tooth on the Commodore Amiga. The Amiga Demo Podcast is a podcast that streams a different classic (or contemporary) Amiga demo, direct to your favourite RSS browser, each week. So far some real master pieces have been shown, including the Kefrens Guardian Demo, Polka Brothers Twisted and Mental Hangover by Scoopex. If these mean something to you, then you were a 16-bit demo freak too, and will hopefully enjoy watching them again. If not, it is an interesting way to pass a few minutes, and some of the old skool coding tricks employed on those 16-bit machines should at the very least give you some creative inspiration. You can subscribe to the podcast from its web site: http://www.amigademopodcast.com
It would be fair to say that most people have trouble finishing one full game, yet forum member IBOL has released no less than 5 brand new games onto the forums over the past few weeks. What is more, he has even managed to make them all 20-Liners! Yet do not be deceived, these are very playable and comprehensive games, well worth a look. Here are my two favourite, the rest are listed in his forum thread (linked at the end)
This is my personal favourite! Think of a cross between Gauntlet and Chips Challenge. You must progress through the mazes, beating the monsters, collecting gold (if you can get to it!), picking up keys and trying to find the way out. Each level gets progressively harder, with more varied baddies (that take more shots to kill), but you can upgrade your weapon, armour and speed, as well as eat bread and meat to regain health. The game even features a save option, so you can come back to it later. Well worth checking out!
You are the captain of an interplanetary trade ship. You make money by hauling cargo between planets, buying low and selling high. Ten planets have recently been settled in this sector, and their fledgling economies are very volatile. Keep an eye on the news headlines for insight into what prices might be like on a given world.
The other games include De-Bug, a Centipede clone (highly addictive) that uses no external media! Star Freighter - a game where you play space-delivery boy in a busy planetary environment, and finally Airborne Defence which is a simple point and click shoot-em-up.
This forum thread has all five games, and you'd be mad not to try at least a couple of them!
Here is a gaming trivia question for you: "How many tracks does the original Ridge Racer game have?" You need to cast your mind back several years, and several sequels, to find the answer (and if you don't know I'll tell you at the end), but it made me realise just how much things have changed in the past decade, and how this is effecting you as indie games developers. Even if you go back right to the very dawn of computer gaming, games have always been rated and compared with one another. A titles commercial success usually depended on magazine reviews, and reviews would rip apart the graphics, music and gameplay in order to make comparisons with the other releases at the time. Things have not changed much. The difference now is that the proliferation of the Internet and gaming sites has dropped the influence of magazine ratings. Publishers will now vy for your attention through extensive demo versions and ad campaigns, and constantly raise the bar.
The difference is that back at the start of gaming, you could look at a computer (or arcade) game and have a very good chance of being able to create your own version of it, almost spot on to the pixel. The majority of games were easier to code, because they were easier to play. One person could produce the entire thing from start to finish. So what do the beginner programmers of today have to compare themselves against? It sure isn't Pacman or Galaxians. It's games full of shader based gorgeousness like Oblivion. Action packed affairs such as Half Life 2. Near cinematic experiences like Prey. The bar is now so high it would take a large development and media team, with a budget in the millions of dollars, to create a title on par with the triple As out there. And yet time and time again we see enthusiastic young people come into our forums, and into our support system, asking how they can make their own version of GTA3.
So what should you tell them? For half the people, the response is to laugh. As if one single person could craft a game of the quality and depth of GTA3. To a certain degree they are right, it is an impossible challenge. Others may be more helpful, offering them to start with something a little more realistic, a little more 'beginner' - like the dreaded game Pong. This approach has its merits also. Start simple and you'll learn basic programming skills that will lead you into greater things. What it misses out is the fact that unless the project is engaging enough for the developer, they will eventually loose interest and wander off to pastures new. Here is where I believe our forthcoming Dark Physics extension will help change things. Take a simple example - Asteroids. In order to write this game you'd have to deal with object rotation, velocity, thrust, gravity and collision, at the bare minimum. With Dark Physics you create a rigid body from your ship object, apply angular velocity upon a key press (all via physics commands), set some damping so it doesn't fly off the screen, and suddenly it's zooming around the place - smoothly, swiftly, accurately. Want to jazz it up a little? Why not drop a particle emitter onto the back of the ship.. set it to spew out 200 particles with a few seconds life span, and voila - when you move you have a gorgeous particle flow trail following your ship. Drop in some asteroids and bullets, and you're half way there to a very decent and fun game.
The core difference with this approach is that (a) it took less work! (b) the end results are far more impressive than doing all the math yourself via variables and functions and (c) it takes half the time. The faster beginners can get something on-screen, the longer it will hold their interest. The longer you hold their interest, the more they learn, and the more they learn, the more they are able to add to their games.
So what does this have to do with the number of tracks in Ridge Racer? The answer is: One. There is only one track in the original Ridge Racer game. One very good track, but one all the same. Using vehicle physics and the examples we provide, there is no reason why you couldn't have a very similar style game to Ridge Racer up and running in record time. I agree you still have the issue of producing the media for this game (or buying it), but that problem exists no matter what language or tools you use. The fact still remains that, by the end of it, you could have a better driving game that the original RR. And that's saying something to the way in which indie game development has changed. I for one applaud it. Dark Physics is easily the single most important release we've ever made (second only to DBPro) because it will give you the power to get extremely inventive and creative with your games. Once you start tinkering, you'll have trouble letting go. And we'll be here, ready to see your results.
Each month we pluck the 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, naturally) The winner this month is: whomanbean@???.com
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 43 deadline - July 30th.