Technology is progressing faster than ever before. One hundred years ago, Henry Ford produced the first mass-manufactured car, the Model T. There are now over 600 million vehicles on our roads today. In between, mankind has invented television, been to the moon, and created the transistor, allowing computers to become increasingly more powerful whilst decreasing in size. My personal investment in the technology ladder was in the eighties, when I laid out £29.99 GBP ($60.00 USD, €38.00 EUR) for a Walkman clone, which played audio tapes. It had play, stop, fast forward and rewind buttons, and the all important eject mechanism. My son has just spent exactly the same amount of money on an MP4 player. It holds around 750 songs, plays videos, holds eBooks, transmits to nearby radio equipment and has a handful of games. This represents a phenomenal leap in a short space of time.
When it comes to making games, it's important to realise that in the time it takes to complete your title, technology will have shifted significantly. The library of media that is struggling to fit in video memory will have a little more elbow room, the highly optimised but still struggling main logic will have time to spare, and the additional physics load that you fear will be the straw that breaks the camel's back will be asking for more tasks to break the monotony. So it's essential to design for tomorrow, not today. Otherwise, your hard work will be outdated as soon as it is released.
This month we introduce a video session on essential Photoshop techniques to complement the continuing platformer tutorial, preview the TGC Store and a new games engine, highlight a couple of interesting competitions, find out how to preserve your source code easily and at no cost, and much more. Enjoy this edition, and don't forget to get in touch with your own news and anything else you stumble across that would be of interest to your fellow developers.
Until next time,
(1) Leadworks Engine (2) FPSC News (3) DarkBASIC (4) DarkInk (5) Soul Control (6) Tutorial - textures (7) Intel Competition (8) DBP Tutorial (9) Toolbox (10) Videos (11) Lee's Tip of the Month (12) PlayBasic (13) From the Forums (14) Winner (15) Outro
As an official re-seller, TGC are proud to announce that from today (May 1st 2008) we are taking pre-orders for the new and exciting Leadwerks Game Engine 2.0.
It's a fully-featured next-generation rendering platform, suitable for the latest games as well as architectural visualization, simulations, and other 3D applications. Many of the standard features are what you would expect from high-end real-time production systems.
All surfaces are lit with a per-pixel lighting model, with support for dynamic soft shadows. There is no pre-processing, and as a result scenes can be edited and instantly visualized. Combining this with normal maps and specular reflection, in-scenario actions such as switching lights on and off, moving light sources and day/night cycles produce truly dynamic and eye-catching output.
Running under Shader Model 4.0 (and also compatible with Shader Model 3.0 cards with support for GLSL 1.20), Leadwerks Engine takes advantage of the GPU capabilities. Scenes of 33 million triangles can be rendered, providing scope for highly realistic scenery. Again, this can be taken to the extreme by combining this power with the built-in LOD, instancing for vegetation, and real-time deformation. Vegetation layers allow millions of instances of grass.
Other features of the product include:
Leadwerks Game Engine 2 is available as a library to be used with C++, Visual Basic, PureBasic and other languages. It can also be used as a standalone development environment using Leadwerks Script, an object-oriented language.
Leadwerks Game Engine 2 is available to pre-order NOW, and due for release in on May 19th.
The beta testing is going very well with all of the promised features now implemented and currently under scrutiny by a dedicated group of hard core FPSC testers, making sure it delivers. This version introduces a host of new features including:
Perhaps the best feature is the addition of an IMAGEBLOCK process, activated by default, which combines all texture files in the final standalone executable. This feature reduces load time of final games, and also makes it very much harder to hack the art from your final published games, especially crucial if you want to protect your custom media. In addition, all X files are now converted to DBO files making secondary load times and final game loading faster, additionally securing your geometry behind the DBO format, further restricting the ability to compromise your custom media.
It doesn't stop there. You can now use FPI scripting to freeze the player any time you like, great for enemy frost attacks, booby traps and other devices to enrich the game play experience. The Sound Zone marker can now be enhanced with a new script to allow the background music to be overridden with whatever sound or music you like. It is great for changing the mood of a scene as you progress through your level.
This major feature update is the last version under the current source code, and only minor bug fixes will follow on from V109. The next major update will take the form of the ‘migration version' which promises features from the X10 version plus full Vista support. Check out future newsletter articles for more information on this exciting new development of the FPS Creator engine.
With the TGC Store launch imminent, we are still looking for talented media-makers to debut their skills. As well as game models we will be introducing sound and music to the store in the coming weeks. This opens up the opportunities that the store offers to a wider audience of both buyers and sellers.
There are already over 700 items awaiting download when the store opens its doors, directly from within FPSC. Once you have topped up your new account with a few credits, you don't even need to leave the FPSC design interface to find that elusive last component to finish your level.
After successfully releasing Game Creator Store within FPS Creator X9, the team plan to expand it to work with FPS Creator X10, DBPro, GDK and other game making solutions.
If you want to be a part of the TGC Store, contact Rick Vanner who will provide you with the full details. Provide a couple of screenshots of your work to get the ball rolling. We look forward to hearing from you, and helping you to realise some of your dreams!
Kenneth J Williams has now released Starbunker - an FPSC X10 production - as freeware. The game pans out over 16 levels, plus an additional 4 levels for this new edition. Download Starbunker from the website now by clicking on the cover image opposite.
In the game, you play a soldier whose base has been taken over by unknown enemy forces. Your mission is to rescue what remains of your squadron, and ultimately regain control of the base.
With the launch of DarkINK, a new printer support extension for Dark Basic Pro (see announcement later in the newsletter), a new update to the compiler has been made available for you to download right now. Together with the necessary compiler change you also get a new feature in the SETUP.INI file called ‘ExternaliseDLLS=No'. When you set this field to ‘Yes', an executable will be produced that includes no DLLs of its own. You then take only those DLLs that the executable requires and place them alongside the executable you have produced. There is a log file in the TEMP folder when you compile your program which shows you which DLLs the executable requires. The upshot is that you can re-use the DLLs for as many DBPro executables as you like, providing they are placed in the same folder. For example ten 5 Megabyte executables would consume 50 Megabytes stored locally. Using the new system the same ten executables performing the exact same code would only be 7 Megabytes in total. As you can imagine for demo compilations and emailing updates, not only will it save you disc space, it will also save you time.
The upgrade is now available for download.
A community led competition, managed by MikeS, the 3D modelling challenge sets out to discover hidden talents and have a little fun along the way. "Make your own species" is the title of the current competition which ends on May 10th 2008, and offers a $50 TGC voucher to the winner. Robotic or organic, it doesn't matter. Just make sure your creation is unique (no cats, dogs or humans).
The community will decide the winner, with one vote per member. Voting is done by making a post in the final entry thread "I vote for _______". Make sure you enter in good time, and get your latest work in progress submitted if all else fails. Finally, the winner gets to set the next competition theme.
The competition forum thread can be found here.
Jason P Sage recently unearthed a small gem of information and posted on the forums. It's an MSDN article that explains the basics of vertices and how to treat them in order to make them behave. So if you want to demystify the elements that hold your game world together, follow the link and read this informative article.
The full article can be found here
Since the feature on SGT 4 last month, a further update has been released. It includes the following changes:
Visit the TGC forum thread for the latest updates and discussions
Dark Ink is a print library for Dark Basic Professional. Now you can harness the power of Dark Basic Professional and Dark Ink together to create powerful 3D applications with printing capabilities.
Dark Ink can print images as well as text and graphics. You can send any image or bitmap loaded into DBPro directly to your printer. Imagine being able to render a scene using the full power of DarkBASIC Professional and DirectX, and then being able to send the rendered image straight to your printer.
Dark Ink is extremely easy to use and can literally output text to your printer with a minimum of two commands. The commands allow you to set any font style and to output text with a transparent background. It is also possible to create stored fonts within the library which takes a lot of the grind out of programming .
The plug-in supports familiar printer versions of your favourite textual and graphical commands for DarkBASIC Professional. The library comes with a full help file that integrates with the DarkBASIC IDE putting the new command set at your fingertips.
The library also comes with native helper functions to make it even easier to use. Conversion functions are supported so you can translate real distances into pixels and vice versa. There are several sample projects including a complete mini-application that can create a picture calendar for any given Gregorian year!
DarkInk is available now on The Game Creators website
A team of young people from across London have come together to produce a life-like computer game to warn their peers about the dangers of knife crime. The game, entitled "Soul Control" was created by a group of 20 talented young people from all around London aged 16-19, as part of a youth-led project by multimedia education company RollingSound. The project was funded by Mediabox, the £6 million Department of Children Schools and Families fund to help young people have a positive voice in the media.
The young people taking part in the project were taught skills in top computer game design software - including DarkBASIC Professional - and then used their new-found skills to design and build their own game: Soul Control, which they have now made available as a free download for other young people.
"It's similar to games like Grand Theft Auto," explains Stephen Mazonis, 18, one of the games creators and originator of the project idea. "Only in Soul Control, you play a teenager on a London estate, and have to interact with other characters in the street, your family and your mates."
The game aims to show the longer-term repercussions of criminal behaviour, such as carrying knives or dealing drugs, in a realistic way. Ben Guiste, 17, who helped design the game's graffiti-strewn environment added: ""We wanted to show what it's like for young people, as well as showing how easy it is to get trapped in this kind of lifestyle". In Soul Control, like in real life, the more criminal behaviour you take part in, the more your choices and options eventually run out."
Simon Bennett, who set up RollingSound four years ago as a way to help tackle the growing number of young people in the UK who are categorised as NEET (Not in Employment, Education or Training) said:
"Soul Control is an amazing piece of work, by a very talented group of young people. We're really proud of what they've achieved, and hope to take this project much further - we believe Soul Control has real value as an educational tool."
The Soul Control project has been helped by the fact that some of its creators have first hand experience of the sharp end of the issues explored. Just over a year ago Reepa, one of the young people working on the project, was in a prison cell, facing his tenth sentence for a cycle of violence, robbery and burglary that began when he was fifteen. Now, through his participation in the Soul Control project he has learnt new skills in film making and music production, and is now planning to set up his own record label.
"I've seen a lot of bad things on the street," said Reepa. "But it's definitely getting worse. I hope young people play this game, and see that there is another way."
Soul Control is a free download. You can access the game along with video demos and interviews on the Soul Control website.
This month Adam Plumbley, known as BiggAdd on the forums, has produced a tutorial exclusively for the newsletter readership. In a quest to unravel some of the peripheral skills needed to add quality to games, he has compiled a video explaining how to create perfect seamless textures. In the video, Photoshop is used, but the techniques can just as easily be applied to other applications.
Amongst the various areas covered, you will learn about:
You can download the accompanying base texture here, and don't forget to use the forums for feedback and questions, Adam already has a thread discussing the video and topics covered.
Make your game ideas a reality! Share your ideas with the world and be eligible to win cool prizes!
The 2008 Game Demo Contest is now accepting demo abstracts. Tell Intel about yourself and your idea for the next great game! As part of your entry, submit coding or game design tips to improve compatibility and playability on Intel® Integrated Graphics and be eligible for special judges' awards like a high-end gaming laptop.
Full details, competition rules and entry instructions are available now on the Intel website. Put your abilities in DarkGDK and DarkBASIC Professional to the test, and let us know of any successes.
Continuing this series on building a platform game, the efforts this month are focused on creating the level editor. Download the source code to review how the components described here have been implemented.
Rome wasn't built in a day, the saying goes, and neither was ancient China. One thing that can speed up the building process is a fine selection of tools, and this month we will be looking at the most important, the level editor.
But before we get into that, we have to look at how the game layout is handled internally. The real bones of this tutorial is in the media handling system, the editor will mature next month when moderately useful features like saving and loading will be added.
Given that the game layout is going to be created from small blocks, it makes sense to use this to as much of an advantage as is possible. Laying down a good system of media management and creation early is key to keeping a project on the tracks. Not everyone has a massive spec PC, so only using a minimal amount of media can ensure a game will run on more PC's, and leaves room for fancy effects.
Each block is initially stored as a real object, and cloned whenever needed, properties like collision and mode can be set, for example a ladder uses mode 2 to indicate that it can be climbed on. Any object that we require to act as a ladder will need it's mode set to 2. There are only 3 different blocks right now but each month there will be more and more media, and types of block as well.
With this method of media creation, some strict control has to be put in place, there has to be a careful eye on what object number ranges are being used. Currently the blocks are stored after object 100, so a standard block master object is stored as object 101, these objects are used when cloning the object while creating the blocks for the screen. A variable called mapobj, using the following type, stores the limits for the map objects:
type countertype
start as integer
current as integer
last as integer
limit as integer
endtype
Keeping track of how many objects are in use allows them to be easily checked when changing screens. For example, it's only necessary to check the objects between 'start' and 'current', these measures will come in handy when adding things like particle effects.
In the case of the mapobj variable, the start object is 1000, limit is 2999, so there are 2000 objects reserved for the map, if the number of objects exceeds the limit then it will need to be extended. Storing the object number ranges like this at least affords some control when things need adjusting.
Two new Types have also been added to facilitate the blocks and object tracking data.
type blocktype
col as byte
mode as byte
special as string
textureimage as integer
endtype
type mapobjecttype
block as integer
inuse as byte
map_x as integer
map_y as integer
endtype
Among the properties for each block, there is one for special effects or behaviours, in the typed array block(), the variable 'special' contains a string that is parsed when creating the screen. This is only really used to specify that the blocks should be a random colour right now, but it will be expanded to allow different effects. Most object properties can be set when loading the media because they are cloned and will take on the display settings of the master object, so no need to support things like ghosting. This will be used for things like animated blocks, when the settings are not automatically set from the master object.
When the player goes into a different screen, each object used to represent the level is checked to see if it is in screen, if not it will be re-used the next time that particular block is needed. Each time the screen changes, either by going onto a new screen or by changing something, the flick() function is called. It needs the screen location, which is stored in screen_x and screen_y globalised variables. This will check each block to see if it is outside the screen and can then be recycled, then adds and positions the blocks needed to represent the screen. When a block is needed the map_getobj() function is called, this will return an object number to use based on a specified block. If it can't find a matching block that is not in use, it will clone a new block to suit. Either way, the map_getobj() function will always return the object number to use.
In this month's code, the mouse now has a red wireframe block attached to it, clicking the mouse will place a block at the mouse position, pressing DEL will erase it. The current block can be changed using the number keys 1,2 and 3:
Holding down the right mouse button will allow you to position Bruce wherever you like. If you leave a room and re-enter it, the jewels will be reset.
Making level editors can be as time consuming as making the levels themselves, but the more time that is spent on making them user friendly, the better. The editor right now is quite useless, because it can't save or load yet. Next month more features will be added and perhaps even some real media to play with, expect many Chinese clichés.
One of the most important - and all too often overlooked - aspects of building a project is looking after your precious assets. The most difficult of these to replace is the source code itself, so this month I've taken a few moments out to illustrate the tools I use to manage my personal library.
Change management utilities (also known as version control) do exactly what it says on the tin - they manage the changes to your project as it evolves through its many stages of life, from the first few lines to the final product. The additional benefits are also worth mentioning.
For me, there is a further advantage. Having three PCs and finding myself in many locations, it is a perfect way to transport my code between development environments. My DarkBASIC Professional code, Microsoft .net files and other resources are available 100% of the time, wherever I am.
Subversion (SVN) is an established version control tool, based on the older CVS system. SVN is used by the developers of Apache, Ruby, Python and Sourceforge to namedrop a few major clients. It is also open source, making it available to the independent coder as well as the heavy users.
There are two elements to the SVN system, the server and the clients. The Subversion server component is designed primarily as a web service, running over Apache. Nevertheless it can also be run as a standalone application should it be more suited to your needs. The clients can use command line arguments, but generally a client tool would be installed to simplify the process.
Being a web based application, the management interface is simple and intuitive. The complex data system that ensures compact, comprehensive control is interpreted as easy-to-read overviews and code highlights. The user can drill down through each modification and file, and colour-coded highlighting makes additions, deletions and updates immediately recognisable.
My client of choice is Tortoise SVN. This is an interface that integrates with Windows Explorer, from where I control everything concerning the backup and management of my projects. Customised icons verify the state of every file and folder at a glance. The context-sensitive right-click menu provides every SVN command via simple dialogue boxes. Simple operations such as commiting changes and retrieving the latest source code can be achieved in two or three mouse clicks. It is also a simple task to view the log history, review the user comments at each commit and establish what code changes have been made along the way. There is a code comparison utility that provides merging tools where source has been updated by multiple users. In a similar vein, individual files can be rolled back to previous incarnations of the code.
Subversion Home Page | |
Tortoise SVN homepage | |
Assembla SVN Hosting |
Drew Cameron (of Dumbow & Cool fame) has turned the development of his latest game into a video featurette. At the end of each day, the new features and challenges are summarised in two or three minutes of footage. Starting at day one with the obligatory sphere on a plain, it progresses through to full blown scenery with dynamic foliage and more complex character movements. Even the more experienced coders will appreciate the insight into the trails and tribulations of Drew's daily coding life.
The first few videos are included here, visit the YouTube page for the full series to date.
It would be fair to say that the evolution of computers owes a great deal to the Amiga. In fact without it, Darkbasic would probably never have existed. Sit back, relax, and enjoy this tribute to the Amiga, still alive and well!
If you have created one or two games or demos, you will no doubt have had to face the issue of performance tuning and decreasing your load times. I am also willing to wager that you probably had a gut feeling for where the slow part was, and started coding away to make it faster. All good, but was it the 'slowest' part? You sure?
The human brain can handle pictures much better than words or numbers, so making a graphical chart of your profile data is the best way to identify immediately which part of the load process is the slowest, and the next slowest, and so on.
An easy way to create profile data is to create a LOG text file and enter a time stamp and description for each significant task within the load process. You can create a time stamp easily with code such as:
OPEN TO WRITE 1,"LOG.TXT"
TIME=TIMER() : WRITE STRING 1,STR$(TIME)+" : Load Scenery"
GOSUB _LOAD_SCENERY
TIME=TIMER() : WRITE STRING 1,STR$(TIME)+" : Load Characters"
GOSUB _LOAD_CHARACTERS
TIME=TIMER() : WRITE STRING 1,STR$(TIME)+" : Finished"
CLOSE FILE 1
Once you have a LOG.TXT file that represents your loading process, you can write a small program which takes this LOG data and graphically represents how long each part takes, and provide an overall percentage in order to measure which takes the most time compared to all the other parts.
There are many ways to create a program to chart data, but you will ideally want one that can work on an arbitrary number of entries, use colour coding to help identify the entries better and highlight those parts that are unusually high. Rather than delve into the code required to create a chart, I have prepared a program I am using to profile the load times of FPS Creator.
You can even use this program to profile your own load times in FPSC. Just copy the SETUP.INI into your final executable, run and play the game once, then exit. Copy the log file produced to overwrite the log file provided with the program, delete the last line within the text file that marks the end of the game session and then run the program. You will get a complete list of load tasks, and you will see how clearly the slow parts of the process are highlighted, ready for attention. It might seem a waste of time creating small programs to chart data, but in the long-term it saves you ten times your investment as you are working on the parts that matter, not the parts that don't.
Since our last newsletter outing, all hands have been on deck working on the new Learning Edition of PlayBasic. What's that? - The learning edition is effectively a more polished and slightly simplified demo replacement. Moreover we've been working upon bringing TDK Man's great tutorial series to PlayBasic users. This combination will make Learning Edition even more accessible to any budding new game programmers. So check it out.
Unfortunately it would seem we've done a great job of confusing the community about versions and what features each has. If you're lost, don't worry you're not alone. To cut a year long story short, PlayBasic updates currently revolve around one key point in it's history, that being the move from the DirectDraw Engine to the Direct3D engine. The Direct3D transformation occurred after V1.64. That means that all versions higher than 1.64 use the Direct3D engine, and all releases below 1.64 use the original DirectDraw engine. Version 1.63 was the last in the DirectDraw line. This all seems pretty straightforward until you realise we've had to re-issue updates to the 1.63 edition to fix a few old bug/compatibility issues, which is what seems to be creating the confusion.
The Beginners Guide To Game Programming is a set of introductory tutorials written by TDK_Man. These tutorials help guide new users into the weird and wonderful world of game programming. While originally aimed at DB/DBpro users, TDK has been nice enough to let us translate/update them for PlayBasic users. They cover everything from basic variables and arrays through to simple game mechanics. We highly recommend all users (new and veteran programmers alike) to read them. Click on the link opposite for the full details.
Learning to program can be quite a challenge. While modern languages are generally much more powerful than their retro counterparts, they're often overwhelming to new and old school programmers alike. How so? Well, back in the 8/16 bit days of computing, most BASICs would struggle to have more than a few hundred commands in total, whereas today's Basic editions can have thousands! The vast majority of these are irrelevant to new programmers. As such, we've purposely built the PlayBasic Learning Edition with two things in mind; reduce the number irrelevant commands and improve the quality of the built-in documentation further, Which has been quite a task.
Given that Learning Edition has fewer commands than the retail edition, it would be easy to assume the Learning Edition isn't as powerful and to be honest it isn't, but that doesn't mean you can't produce some stunning results. To demonstrate this we've updated the example packs, to include the latest editions of Thesius XIII, and various others.
Other notable changes from the demos (from even the retail edition at this time) is that the Learning Edition uses the latest IDE which includes our live news feed and last but not least, unlike a demo the Learning Edition has no expiry time limit. This allows you to tinker away all you want, then upgrade when you've got the next big thing in development.
Download the current version of PlayBasic Learning Edition
Until next time, I'm off to continue bashing bits in some other dimension, otherwise known as sitting at my dev pc :)
A few links you may have missed over the past few weeks...
Plystire has been working on various scripts to modify the standard first person view of FPS Creator. Watch the video preview to see the progress of third person views, and vehicle implementation.
As the newsletter goes to press, the shader showcase is just one post. However, it shows just what can be done in DarkBASIC Professional. The video is also worth downloading to see shaders in motion.
Spotaru has been very busy, all in the name of contributing to the community. There are various free buildings here, and one or two other items too. They are themed round desert and medieval scenarios, and can create a complete village scene.
where do they go? Well, Zotoaster hopes his guitar playing is good enough to take him to the London finals. Follow the link, vote and his dreams may just come true. I didn't think keyboard and guitar skills were compatible, but I was obviously wrong.
Each month we pluck one lucky subscriber from the newsletter mailing list and award them a free copy of DarkBASIC Professional. The email address of this month's winner is: hwi**y@live.com If this is you then send us an email to claim your prize.
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 65 deadline - May 26th.
"Sit down, shut up and ask youself, "What's true?" until you know."
Jed McKenna, Spiritual Enlightenment - the Damnedest thing.