Welcome to Victory Road...


Let you this play in no case escape!

Update 02/02/08
Recently I've been updating the ajax library shown below to take most advantage of the new Javascript Intellisense feature of Visual Studio 2008 (Visual Web Developer Express, VWD in this case). This led me to radically update the 3d rendering abilities and fashion an API resembling XNA or managed directX, all with intellisense, and all just javascript.

Here is a prototype of a game created using this engine, rendering by default using tha Canvas tag or Vector Markup Language (VML), depending on the web browser used. ajax xna javascript 3d graphics rendering game example.

Update 09/06/07
Well, I've been in my new job for some 6 months now and had some time to get real hands on with ASP.NET AJAX. Not quite what I was expecting...
The focus of this first release of ASP.NET Ajax appears to be on a concept called partial endering,  called "Update Panels", where callbacks can be made to the server and when the response comes, it comes as HTML which is then "swapped" with the original content, for that area of the page. The genius is that it requires no Javascript code by the developer, its all drag and drop! What's more, its very easy to take a pre-existing ASP.NET 2 application and add these upgrades in just a few minutes.

Although not at all an optimal way to do Ajax, these update panels can do a reasonably good job at streamlining your asp.net page into something slicker and more optimal. Not only that but if Client Javascript is not enabled then doing it this way can downgrade and still work but in the old way.

There is somewhat more to it than that though, you get the ability to call SOAP (.NET) Web Services and special static "Page Methods" in a 100% optimal way, right from your client Javascript code, sending nothing but JSON (JavaScript Object Notation) objects up and down the wire. This is great except that, for the most part, what you can DO with that data when it is returned is limited because there is not yet a concept of Client Side Widgets with a Client side API for them (except for the community based open source AjaxControlToolkit).

I'm expecting major inroads into this come the next version 3 (in beta but I've not had the time to look), in the meantime I've been mixing my own ajax & client API with the library with good success. Microsoft were kind enough to design ASP.NET Ajax so it would not clash with other, well know client libraries like Prototype. It just so happens that my Ajax Engine drew some inspiration (and a couple of lines of code to be honest - the "bind" method IIRC) from Prototype. This has meant that with only some minor (although annoying) modification my Ajax engine seems to be able to sit quite happily next to Microsofts and both remain 100% operational.

So without further ado, perhaps it's time to show my Ajax Engine. This has NOTHING to do with MS AJAX but is wholly my own project.

The idea of it really is to provide both an Ajax engine and a client side API for common windows like widgets, such as Treeview and Menus. With the inclusion of a drawing API, this was on its way to becoming a framework by which developers could program applications that work in the browser, without plugins of any kind but would look and act much like a "normal" desktop application.


Update 15/12/06
Some thoughts on Web Application Development, Ajax, Javascript, Microsoft and Rich Clients:
ASP.NET is a web development framework product by Microsoft which has been around some 5 years now, since 2001.

Previous versions only addressed the developer productivity (and thus, to an extent, functionality) whilst leaving the actual user experience severely lacking in most scenarios. Fine for proof of concept and putting-it-together-quickly jobs to keep the boss off your back but put up any ASP.NET app next to a hand coded one, using Ajax and "tricks" (which no doubt took much longer, and more programming skills to build) and, to a user (the important person!), the hand coded app is always much, much slicker and user friendly. No annoying page "flicker" (or worse, much, much worse) when the inevitable postback would happen, no "losing of scroll position" when the inivitable postback would happen, much greater speed and much less bandwidth usage.

The poster child of the ASP.NET application for me was always Microsoft's own Developer Network (MSDN) 2, a developer site where we can access documentation for various Microsoft Application Programmer's Interfaces (API's). A simple looking page, with perhaps 2 paragraphs of text could equate to a 1.5MB+ download, such was the overhead of the framework and inefficiency of the client interface. If this wasn't bad enough, each and every navigational click could mean yet another 1.5MB download. Even in the broadband era, this is completely rediculous, and yet this was precisely was where Microsoft wanted to take us Web Developers. 

Of course these side effects were not made clear to the development community, and I myself used it for a while (ASP.NET 1.1) but just could not justify the usage of it, over and above what it did for *me*. Applications are useless if no one can/wants to use them.

To be fair, Microsoft's argument was always that if you wanted good client interaction, then you should develop "Rich Client" applications. This basically transates into "applets" or Applications that run directly from the web (see Click Once examples below - if they even work for your set-up, that is!). The big drawback there is always the fact that this takes your application out of the browser and has it now rely on other runtimes to be installed on any user's machines. This includes .NET, Java and Flash applications (anything else really and it just isn't a web app at all). It doesn't sound a big deal on the face of it but in these days of security concerned sys admins, any reliance on software that is not installed as standard is a weak point in your ability to distribute your application. Sometimes, not always, this is crucial.

Would Amazon or Ebay have succeeded if users where required to install a program to use them? Probably not and especially not if there was a web based alternative.

Using a Rich Plugin solution, some users will simly not be able to run your software because of admin "Lock down" on their system, some will choose not to because of security warnings, and some will simply not be bothered to download the components or runtimes needed. This can easily mean the difference of success and failure for any business.

Last year, ASP.NET 2 was released, and included some limited abilities to be able to leverage some Ajax like functionalilty without completely breaking the ASP.NET programming model (the entire point of using it in the first place). Gradually, ASP.NET sites have started getting a little better as a result but still the overall postback architecture remained and still I couldn't recommend it for client orientated Web Application Solutions.

Yesterday, Microsoft released Release Candidate (RC)1 of their ASP.NET AJAX product. And hats off to them for recognising that this is the way web apps are going. 

"At Last!", I say! Strange that "Atlas" was the code name for this product...an "in joke" perhaps?

For me, this makes ASP.NET finally a viable choice for web app development. And this is a big, big deal as there has never been any question that ASP.NET empowers the developer, it was always that it was at the expense of the user.

Over time, despite the Microsoft marketing engine, it has become clear that the "Rich Client" via "Richer Plugins" solution is only viable when the audience is a known quantity, such as an intranet environment or possibly a public web app with "System specs" attached. This goes for .NET or Java based solutions. Even Flash but to a slightly lesser extent.

The thing is, you must be prepared for when your boss, or the client, questions your decision on the technology you have used to create the software application. If your answer is merely, "But fat client is easier for me to program in" and the spec says "must reach as wide an audience as possible" then you may well be in trouble. On the other hand, if you answer "But the application required high speed 3D graphics" then you are probably safe

The decision to use Ajax or a rich client is one we can make as software designers based on an informed decision, who our target audience is, application scope etc etc. One is not "better" than the other, only more applicable to certain scenarios.

However, if you decide that your application doesn't need high speed graphics or intensive computations, then, by using Ajax, you can leverage the Browser as a platform in it's own right, the Browser becomes the OS and Javascript becomes the language of choice. It doesn't matter if your user has Linux, Windows or Mac, they can still run your app, using nothing but default Internet security settings. And it seems to me that this is precisely what most users want, most of the time.

Since Javascript can be coaxed into acting very similarly to a classical inheritance language, such as C#, Java or C++ then large scale, well designed applications can be created, even by large (but well managed) teams. The current (and future) crops of Development tools, such as the Free Visual Web Developer and its integrated Javascript debugger can only help this situation. ASP.NET can abstract the process further, to the point that Javascript expertise is not even required.

Still not nearly as easy as a straight Java or C# application, but a great leap forward all the same. 

Lazy loading of Javascript classes can render any arguments about application size, framework size or download and installation virtually null as program components dynamically load as and when required (JIT on the wire). I only know of one Ajax framework that fully supports this currently but its a proven concept all the same (more on this another time, perhaps).

However Javascript is hellishly slow to execute compared to Java and .NET code meaning that high speed graphics and intensive computation are complete no-no's. The "Canvas Tag" will not do much to help either. To give an idea, a "3D spinning cube" can be calculated and rendered in a 640 X 480 Java applet many, many 100s of times a second on any reasonable spec PC. A similar port to javascript (even using an applet for actually drawing) would be very lucky to achieve 30 frames per second. 2 cubes would be 15 and 3 would be 7 or 8 (based on my observations).

Also, client data storage in a Javascript client is extremely limited.

But that still leaves a great deal of scope for the Ajax application to work in.

Microsoft now seem to have covered all the bases, from traditional client apps, Smart/Fat clients and now ASP.NET with AJAX. I understand that their AJAX library will now form part of the full .NET framework for Version 3 (which only needs to be installed on the web server, the client only needs their web browser), validating Ajax as a standard model to produce Web Applications. The next version of Visual Studio will likely also support Javacript Intellisense of the client Ajax library.

I believe that this kind of development will push Ajax more and more mainstream (if it isn't already) and will further marginalise the Rich Client back towards the Intranet arena.

The amazing thing is that Microsoft have not only done a "U" turn on their rich client focus, but have also done a "U" turn on the purley postback architecture of their flagship web app framework, ASP.NET. I'm stunned by this but am also delighted. Who would have thought this would be the case just 18 moths ago? This is what I thought ASP.NET was going to be when I first heard of it, back in 2000 or so. How disappointed I was when I finally saw it (and saw through the marketing)!

Moving forward, with ever improving tools, lil' ol' Javascript may well pick up the mantle that Java set out to achieve, that of true platform independance and "write once run anywhere" for the developer. And since it's "runtime" is the common Web Browser(a concept of using the web which isn't going away any time soon) then there are no installation considerations or security restrictions to get bogged down with. 

Put simply, Ajax gives the most, for the least.

Javascript eh? Who knew?

Update 17/10/06
Another demo, I made a couple of months ago. VR Proto 2


This one was a one off I made using the (now defunct in favour of Microsoft's XNA) Managed DirectX 1.1 library and (also defunct) Managed wrapper for ODE, "ODE.NET". Also, there is no DirectX "Engine" here as such, I just wrote this from scratch in C# 2 using raw (well, as raw as it ever gets in C#) DirectX. The car model (Virtua Racing inspired) & track were just created by myself.

The idea was simply to try to get a decent vehicle physics simulation using C#. And you know what? I think it does! Its way better than my previous attempts although it's not perfect but the handling IS realistic, even at high speeds.

The demo uses Microsoft's verion of Java "Web Start", a "one-click" deployment making any new versions of this demo automatically notified to the client (you) so you can either choose to automatically upgrade to the latest version of the demo, or not.

Know requirements are WinXP, .NET Framework 2, DirectX 9.0c etc blah.

You can access the start page here (just follow the on-screen instructions) and the controls are LEFT, RIGHT & UP to accelerate, SPACE to brake and 1, 2, 3 to change Camera Views.


Update 02/07/06
Just for fun again, here's a "Game Preloader" where we have a small arcade Flash game that you can play while main Flash content loads in the background. The idea of the game is that you must stop the aliens from killing you or destroying all your "orange" power stations. 

Update 01/07/06
Just for fun Click here to install/run a Web Browser app written in C# & using .NET 2.

As I write "Web Applications" for a living, it's interesting to me to see that Microsoft have copied the Java way of (effectively) launching an application from a web page. This also gets one over the Java mechanism as .NET programs are listed as normal under "Programs" where Java are listed only in the special Java admin area.

Its hard to get too excited though as, unless the developer is willing to stay within the tight security sandbox of "no-touch" (see previous entry), then the user is always gonna be nervous about clicking that "install" button, verification certificate or no. Still, it wraps up deployment for Real Apps quite nicely and allows them to benefit from automatic updates, without placing any extra burden on the developer to add the functionality (thus are more like Web Applications that can also be launched from the desktop).

With this, Flash, Java and AJAX, all offering Richer Clients for web applications, it remains that only AJAX (when supporting all browsers) is truly open to all and does not open up any extra security risks to the user (as happens when installing ANYTHING new these days).

Its kinda frustrating that there is all this cool tech out there, and the line of Web & Real applications has never been more blurry, but if you want to reach *all* the people *almost all* the time, you still have to jump through the HTTP hoops and operate in the confines of the web browser, using little more than notepad.

Update 09/05/06
Its about time for some new stuff: OK, I've not exactly been keeping this site upto date this last year and, with a baby on the way, that situation is not likely to change too much in the near future. But I have been working on "home project programming" since december 2004 and do have some demos that may be of interest. Here they are in no particular order:

Project Screenies, see below for details

Java Games and demos:
These 4 demos all use my own 100% software, java 3D Engine. This engine started life very crudely in DarkBASIC, then moved to C++, then to C#, then briefly to HTML (well, javascript really), and finally to Java 5, all the while it got more features and a complete re-write.

I am/was quite chuffed with this engine, it had collisions, a scene graph management system, and the design of the API was based upon my knowledge of Managed DirectX, so a sortof DirectX Lite for Java (in its most recent implementation). To show the similarity with DirectX, here is a code snippet from a typical rendering loop where "m_RootNode" is the root node of the scene management and can be rendered directly (calling all visible children in turn) and "m_Cam" is defined as a "movable thing", and notice how we invert it's matrix so it can act as our camera position node!


        this.Device().Clear(ClearFlags.Target | ClearFlags.ZBuffer, new Color(0x00));

        this.Device().getTransform().View = CMatrix.Invert(m_Cam.getLocalMatrix());




Of course, not being C#, the syntax is not nearly as pretty, all those horrid C++ style "gets and sets", but basically the API follows the DX design. For anyone interested, here's a full code listing example of the source code used in the Java engine demos below:

  • PlatformsApplet (Demo Applet, despite the lack of texturing is actually light years ahead of CrocTypeLevelDemo below as this has proper "Platformer dynamics"). Warning - I think there's a bug in the sound looping - the music may not stop when you leave the page.
  • RaceTrack (Demo Applet)
  • RedDoor "Full" but "simple" game Applet
  • VirtuaRacingPrototype (Demo applet with car/terrain collision and response). Along with the Platforms demo above, is about as far as I got!)

So what next? Well you'll notice that my Java 3D engine is lacking a Z buffer. This is because I decided it would not be needed (as this was to be a wireframe engine, not a flat shaded one). However, the flat shading looked so good that I had to have it, but moving over to a "Scan Line" rendering engine is a big step that really also should include a texture mapper. I would fear for the framerate also. 


JavaScript - The "experimental" version before moving to Java

  • 3DRendering (Press "Draw 3D Model in render loop" button). Marvel at the 3D "Whale" object, rendering at a whopping 7 or 8 frames per sec! Its loaded in from this xml file.

The above is an entire 3D Engine in just HTML and Javascript!!! Throw in the Windows Sound player and you could make a full 3d game like this!

Why? I was just frustrated that a "no touch, sandboxed" C# Control cannot play AND stop even a single sound when embedded in a web page. See Prototype HTML engine here To be more precise, .NET 1.1 cannot play sound without interop (which is forbidden by security, and rightly so). .NET 2 CAN play ONE sound at a time, but trips a secuity exception when you try to STOP the sound. So the new "C# soundplayer class" of .NET 2 ends up being no better than the old style interop to "Winmm.dll". Pointless, and no good for games at all. So then I thought, "why bother with this crap, everyone knows that the best web games are written in Java anyway - and now I can see why!".

This was when I junked C# and moved over to Java (see above) for this sortof thing.

Don't get me wrong, I love C# as much as anyone, its such a pure, clean and modern language but I ended up frustrated that although I could write "Web Applets" using it, the "sandbox" security restrictions imposed on anyone not writing a simple windows control (ie a game with sound and graphics) were too much to live with.

This was the kindof thing I was working on at the time, a "Web Control", written in C#, that could be used to write Web based 3D Games that did not require any installation (or DirectX). A 100% software 3D engine with a small footprint and an API similar to DirectX.

Here are some screenshots of the software 3D Engine while it was in C# development:

  1. C#
  2. C#
  3. C#
  4. C#
  5. C#
  6. C#
  7. C#
  8. C#
  9. C#
  10. C#
  11. C#
  12. C#
  13. C#
  14. C#
  15. WinCE (PocketPC) Version

C# Software 3D Demo

  • Lighting Demos, (extract zip and run any of the collection of 3 .NET 1.1 exes), showing the lighting modes of the engine. All safe & Managed code.

C# (Managed DirectX) Demos (all MSI installers):


C++ Demos

  • BingBong (basic GDI based Pong game)
  • Missile Command (link later)
  • Office Fight (link later)


Update 03/05/06
Game Creators Community: VR is on the map...?


We must support this noble cause :)

Update 24/12/04
New Engine Screenshot: Finally I have something new that actually looks OK in a still picture, a screenie of the Collision Demo I'm putting together. The collision code is converted directly from my old C++ code used as the first version of the DarkCollisions dll (now Nuclear Glory). It uses a Sphere (Player) to Polygon (mesh) method to detect and respond to collisions of a moving player against a non-moving mesh. The response it delivers is to compute a new "sliding" player location, keeping the player away from any "surfaces" a smooth way.

Click for larger image (192.46 k)

No doubt I will upload the demo in the next few days (after xmas) but wanted to get the screenie up now as it looks OK and represents alot of work & research to get this far. The programming of this version of a collision class was surprisingly straight forward, mainly because the code converted (and simplified from) my existing C++ code.

The biggest headache I had was the fact that when I coded this originally in C++, I created my own Math functions as I was not familiar with the existing C++ libraries (still am not). The plus of doing this was that I knew exactly what each function did and how it worked. This time however, using C# I decided to use the "Math" namespace library as well as the static Vector and Matrix functions where needed, as well as my own stuff. Everything was fine until I noticed that the collision detection failed to work under "certain conditions". Much head scratching later, I found the cause of the problem: Microsoft's Math.Sign framwork function, which I assumed would do what my original did and return a 1 (positive) or -1 (negative) depending on the Sign of a given number.

It turns out that it actually returns a Zero if passed a Zero as an argument!

And a zero is neither a 1 or -1. Totally unexpected by me and caused a weird failure that only a step through the code (not easy in an app that loops at 60 frames per second!) allowed me to see (definately a eureka moment!). Technically I don't suppose its the Math function's fault, a zero is neither a negative or positive number, so I guess it returned a correct answer, but for what I was using it for it was no good, I needed 1 or -1 as part of my check for "PointInPoly"! Anyway, I made my own "Sgn" function, which I can trust to do a good job and testing it has cured the problem 100%.

Update 10/12/04
Martin & Sascha set GREAT new times! Just havin' a look at the top times (as you do) and I see a recent batch of additions from "Martin". Check out this 20.6970 second lap time for Florida Raceway!! The fastest lap EVER, and I know that you need nerves of steel around that tight last bend in the fastest car to "scrape" your way round. He/she must have slipped up somewhere though as my good Friend ADW still enjoys the top spot. Not So on Florda Reverse though as you must have held it together to kick ADW's butt big stylee to claim first place. Great stuff Martin, wherever you are!

MARTIN20.6970177.152004 December 2004

And then there is Sascha, who seems to be all over the Expert Track a couple of days ago!

SASCHA645.0000192.424008 December 2004
SASCH47.9394200.727008 December 2004
DICKD48.6970201.303026 September 2003

A best lap time over THREE seconds better than mine (DickD)?!! Way to go rubber burner ;-)

Update 21/11/04
HOT NEWS: Victory Road is officially a PC Remake of Daytona USA! Retro Gamer Issue 10 from Live Publishing is on sale now, priced 5.99 from "all good newsagents". Only it isn't - not really, its just a freeware game I wrote that was influenced by Daytona USA, Ridge Racer & Virtua Racing. Despite these games being over 10 years old now, VR still does not compete with any of them on any level except "styling".

Anyhow, I picked up my copy from WHSmiths in Newbury. The coverdisk features 50 top shareware & freeware games including: Victory Road, Centipede25 and Space Pong. The Victory Road game is also mentioned on the cover of the CD jewel case. Also it comes with a free copy of The Game Factory (worth 15.99).

I should also say that it was a total fluke that I saw this, I was never contacted by Live Publishing and picked up the magazine while browsing the mags in Smiths (as you do). Sitting down to read it this morning I was interested that the cover of the CD said "includes PC remakes of ..... Daytona USA". Well naturally, being a huge Daytona fan I had to slip the disk in my PC to check it out. While scrolling down the list of games I noticed that the "faithfull" centipede game garnered the "25" monicker. "Hmmm" I thought, "that looks familiar" so I paused while I opened the zip file. I recognised the set straight away. This was my game! Then the penny dropped, quickly scrolling to the last in the list I saw that it was indeed Victory Road that was the "Daytona USA" remake. My disappointment that I didn't have a new Daytona game to play was quickly replaced by my excitement that not one, not two, but three of my games were on a CD compilation sold in the UK :-D, even if the advertisement is a little misleading!

There is a screenshot of Victory Road in the magazine also. Centipede25 is described as "an extremely faithful remake of the classic Atari Coin-Op" (which it kinda is), while Space Pong recieves a "You can't really have enough Pong remakes, especially when they're set in space". Bless!

Click picture for magazine info page.

Update 21/09/04
Fastens you on and enjoys the intoxication of the speed!

With "Victory Road" acts it around a running play in the style of "Daytona the USA".

The play offers outstanding 3D-Grafiken, which looks for their-same on the Freeware sector. Naturally also the play passport comes not too briefly and can be even still increased owing to the ONLINE functions.

Let you this play in no case escape!

Couldn't have put it better myself! Thank you FreeGames HQ and google for the translation :)

Update 04/06/04
Just a few screenies from the work I've done on "real reflections". Its much like the effect seen in Gran Turismo where the cars accurately "reflect" their surroundings. This example relies on hardware accelerated "Cube Maps" as well as multitexturing so only modern machines are capable of  using this method. Using DirectX 9 makes this visual effect fairly painless, although I feel that C# is not optimal currently as certain variables (matrices etc) are getting boxed/unboxed each frame which is actually quite scary. I'm hoping I can workaround this and optimise my classes.



Update 28/05/04
Well I started off this evening determined to write a "True Reflections" class but have ended up working on a framework to do away with the dreaded OnPaint override and DoEvents methods for realtime rendering in windows applications using C# or VB.NET (whew). This screeny shows a track & car & sky box rendering at 60 fps using virtually no CPU at all. Obviously the GPU is taking the strain due to the lack of AI & physics etc but the point is this is a "tight" rendering loop running in its own thread, it has nothing else to think about but drawing the graphics as fast as it can. Which, if you ask me, is the way it should be. It should also be said that both windows operate normally, responding well to windows messages. The only real thread sharing going on is a variable to get the game engine to shut itself down when a form closes.

Update 10/05/04
Interesting. I've been playing with the multi texture stages of DX9 to do some reflective surfaces and have a couple of renders. the "Pewter" looking one was achived using a "DotProduct3" Texture stage operation. The other render shows a more "realistic" reflection. What you don't see here is how they move - the reflections gliding over the surface really is a neat effect (for not alot of code really).

Another interesting point is the way DirectShow has (not) been implemented into the Managed DX API. The functionality that is available is accessed at an extremely high level but offers little flexibility. On the plus side it makes doing simple things very easy, like ONE line of code to load an MP3 or MPG file and play it!

Also beware the value types! The secondary image in these renders comes from a render to an off screen surface. I made the mistake of continually grabbing a "pointer" to the surface the texture sat on, without realising that I was creating an orphaned handle each time. This caused the program to eat resouces for a good while after the application was closed, as the garbage collector cleaned up the sufraces once the Direct3D device had been destroyed.  

Update 24/04/04
The latest (and maybe last) version of Centipede25 for windows is now available for download. To install just extract from the zip to a directory and run the exe. Like the arcade unit, you have to "put some money in" before you can start, so press "ENTER" on your keyboard. Depending on how much cash you put in entitles you to a one or two player game. Choose how many you'd like and off you go. Curso keys to move and space bar to fire. It starts of VERY easier - much easier than the original but gradually the difficulty is ramped up. The game will clock after 16 levels but will begin again with more difficulty each time. The best I did was around Level 42 and a score of 81581.

Screenshot from Centipede25.
Visually its exacly the same as the emulated version,
only with much smoother graphics display and gameplay, on my
machine at least.

Download Centipede25 Now! Its free and only 241K  

Update 24/04/04
The site's been a bit quiet lately - still many of you are downloading the free version of Victory Road but I've not posted anything new for some time. Why is this? To be frank, because I've had very little to show. Even full games like Centipede don't really warrant lots of screenshots as it looks so, well, dated. Centepede is still not finished, I've kindof abandoned it for now - its virtually done bar a few niceties - oh and there's a whopping bug in it somewhere. Memory problems, as can happen when using a language like C++.

So, whats prompted this "news" item then... well I'm delighted and pleased with myself because I've been working my way with Managed DirectX and C# and have started putting together a new "improved" game engine, this time using the newer technology. My god its sooooooo much easier than previous versions of DirectX, or rather, its soooo much easier than the old books would make out.

I'll explain in a tick but how about a screenie from this new engine.. its 3D y'know ;) This is to celebrate getting the "Free Flight" movement working correctly, and what better way than to load an XWing and take it for a virtual spin?

Screenshot from the new game engine. Authentic XWing lighting & rotation test rendering

Ok, so, the old books...I've not read them ALL of course but the theme in each of them seemed to be that they were written around the time of DirectX 7 / 8 and they each ignore the D3DX classes that come with DirecX now. What this means is that you always have to do things the hard way, write all your own code for every little thing - loading bitmaps, sounds, models, create your own file structures - you name it. The D3DX library has been around for ages as well but it tends to get ignored by book authors.

It shouldn't be that hard and really it isn't. You learn about vectors and matrix math but when it comes down to it, you only need some basic concepts before you can happily dive into microsofts supporting classes (D3DX) and off you go, maybe write a game. Thats not to say that your time with the books and the hard labour code has been wasted, far from it, just that all that time you have your "eye off the ball", its a distraction you, I, or anyone, as a learner can do without.

Update 02/02/04
Quale Computer may publish Victory Road on the cover-mounted disk of issue #52 of their magazine.


Update 12/01/04
Joules Hams has created this stunningly detailed model of the "Hornet" car from victory road!
It took nearly 2 months to complete and is totally hand painted - he was kind enough to present this to me as an xmas gift :)

Click for larger image 

Update 28/11/03
SpacePong now with DirectSound! Download NOW its FREE! 

Update 15/11/2003
Updated "KRPongDX". The aliens in their pesky UFOs now shoot at you, causing your bat to shrink if you're hit!

Screenies - click for larger image.

Update 13/11/2003
New Game Today! Its "KRPongDX" a test game for my brand new C++/DirectX Game engine.

Download NOW its FREE! 

Screenies - click for larger image.

Yes it's only a Pong Clone (like we need another one!) but it has an added twist of Flying Saucers coming to deflect the ball and generally put you off! :) I like! System requirements can go very low indeed, a Pentuim class processor with Win98 & DirectX7 should do the job OK.

Game (and engine features):
Input from Keyboard, Joypad and Mouse! (at the request of Andy Wivvs - thanks mate, it gives true analogue control for that authentic "Binatone" feel. Not that you're old enough to remember what A "Binatone Intellivision" console was  ;)
DirectDraw graphics
16 BIT Animated Sprites
Windowed or Fullscreen modes (16 BIT Desktop colour is required for windowed mode. Please make sure you change it if you want to run in windowed)
Parallax scrolling starfield Background.
Smooth refresh - as fast as your Vertical refresh rate. Your eyes will bleed! (No, no, not really - its quite safe!)

Download NOW its FREE! 

Update 29/10/2003
A couple of things to report today.

Firstly that Victory Road has now attracted in excess of 3,000 downloads! Now thats alot! Its a 33MB file so that's approximately 99GIG of data been downloaded since 4th July.

Secondly, I've spent some time adding DirectX capability to my 2D game engine (as used for Bing-Bong, see below) and intitial speed tests put it waay out in front when compared to DarkBASIC's 2D operations, I'm talking powers of 10 differences in speed here! I may post a few demos in the coming days...

Update 09/10/2003
Prior to a web site re-vamp, I've been working on some 2D games in VC++ 2003. My Game engine is working nicely now and seems quite fast although is not DirectX based (yet). I'll add games here as they are completed:

Bing-Bong (58K with media).
This is a "pretty complete" pong clone, written over 3 evenings or so.
Includes Fullscreen mode (card allowing) and joypad support.

Update 20/09/2003
The Romanian based games.softnews.ro alone has accounted for 206 downloads of VR. Currently rated "Very Good". Nice job!

VR Back on the front page of the Indie Game oriented site "Game Tunnel".
For those who had the chance to play Daytona USA in the arcades, this game will likely look very familiar..."

Read the whole Game Tunnel review & score of VR.

Update 19/09/2003
Victory Road to feature on the box art of the German version of the Dark Basic Professional programming language...?
You heard it here first! :)

Update 18/09/2003
To celebrate WELL over 1,000 downloads of VR see the Victory Road mini-site, lovingly created and featured at JazzyM's www.ExpressionSolutions.com

Do not adjust your set, that IS a four figure number up there!

Update 12/09/2003
Victory Road WAP site available.
Download games, ringtones and even view the VR Leaderboard direct from your mobile phone!
Point your wap enabled device at

Update 22/07/2003
Read all about it!
VR Makes the front cover of the
DarkBASIC Newletter magazine issue 7.
VR is featured inside.
Victory Road release is announced on the 
GameTunnel web site.

Update 11/07/2003
The web based Leaderboard is now up. Check out those top times!

Update 10/07/2003
New Cheat added to the Player guide.

Update 09/07/2003
Read comments and views about Victory Road:

Update 08/07/2003
BRAND NEW version & patch available on the download page.
Not bug fixes (bugs? moi?) but purely game enhancements.
Now lets see some names up on those leader boards, I'm sure Glenn's getting lonely up there!

I hope you enjoy.

Update 06/07/2003
Player Guide available

Update 04/07/2003
It's here finally, please see the
download page
for Spec & install instructions.



Featured link: www.ExpressionSolutions.com



 This site is regularly updated using