Project Description
Ajaxna is a javascript API enabling 3D games for the web, without using plugins.

This programming framework targets Visual Studio 2008, follows an XNA inspired API, is implemented as a C# ASP.NET control and is built around dynamic client class (lazy) loading and intellisense.

Project Links

Overview

Ajaxna development began in early 2006, by me, Kevin Robinson, as "just another ajax framework", a move away from hidden frames and the like, as an effort to produce a collection of truly re-usable client classes that would help me do my job as a Web Developer. Conceptually it can most easily be compared to the Microsoft Ajax client libraries as it tackles many of the same issues such as an ability to create client classes using a classical Object Oriented nature, cross browser eventing and client serialization from and to json and xml. It was initially developed with no knowledge at all of "Atlas", as it was originally known, but does bear many similarities.

Unlike Atlas however, I made the decision early on to build the framework upon the notion of dynamic client class loading. I didn't want to have to load up tons of javascript code into a client browser, which might never be used. You can still do things this way if needed but there are many reasons not to. By default Ajaxna will load only a set of bootstrapper code/classes to enable it to function if it is called.

As soon as that decision was made I realised that working with a framework like this made a "Single Page Application" a real possibility. And then the advantages of this style of Web Application Development began to show themselves, starting with the statefulness of such applications, the client code never had to deal with page refreshes or roundtrips and instead of being just there for "effects" actually could take over the Presentation Layer entirely. The coding style used is as close to C# as I dared get.

Things then started to get more ambitious and templating was introduced to allow client classes (akin to ASP.NET Code behind) to load in an associated template (akin to ASP.NET .ascx). Any Dom controls of interest could then be parsed out and added as class members of the templated class (akin to what happens with ASP.NET User Controls).

Just for fun, I later added some drawing classes, and then classes for 3D rendering, with a similar API to Managed DirectX (MDX). Again, Ajaxna does not need to load in any class that is not used so I knew this kindof excess was not going to affect download performance of the framework as a whole.

Professionally I then started using MS Ajax, not because it was the best or fastest or scaled well but because it was easily understood, very well supported, and allowed rapid development by a whole team.

Ajaxna then focused more on the 3d stuff and I thought it would be fun to do to my MDX classes what Microsoft did to theirs, and so wrapped it in some XNA style classes to make development easier.

Later on I converted it into a .NET Custom Web Control (AjaxnaControl) because I liked the idea of a single file I could reference and get all this functionality out of. This also made deployment easier. I could make use of the Designers in .NET to make things easier for a developer to set up and Visual Studio was definately what I was aiming at as Javascript Intellisense support was added in the 2008 version. This support is sometimes for free and sometimes you have to work for it. Much effort has been made to enable Ajaxna to get the best from this feature.

Why is Ajaxna on Codeplex?

Ajaxna has gotten so large a project now and I believe has alot of potential, either for games or web applications or both, that I recognise I no longer have the time needed to develop it the way it could be developed.

Due to the built in dynamic class loading, it would make alot of sense for collaboration between developers with specialist skills in certain areas. It's shown currently by having an XNA namespace but others areas could be added without affecting performance at all. A little like the .NET compact framework (and XNA) this framework delivers/can deliver alot of functionality and a very rich API, but unlike the microsoft offerings, users do not have to download anything but the bootstrap code and can run desktop like applications or even games right in the browser, all from a single page, if desired.

Therefore, I offer this out to the community to assess, comment on, use and hopefully to embrace, develop and help to extend.

What is in the (pre) Alpha release

Just the basics, the compiled DLL and the source code for Ajaxna.

I intend to supply examples, code templates and tutorials in due course but for now I had to publish something else the project would be deleted from Codeplex.

Screenies and Info

Early version playable example: http://www.victory-road.co.uk/ajaxengine/examples/ajax_xna_performance_javascript_3d_rendering_test_game_battlezone_prototype_using_intellisense.html

Screenie A
Ajaxna3.gif
Ajaxna3_Large.gif

Screenie A shows:
Screenie B
Ajaxna_intellisense.gif

Screenie B shows
Sceenie C
ajaxna_StarWars.gif

Screenie C shows:
Screenie D
Ajaxna_3DCollisions.gif

Screenie D shows:
Screenie E
Ajaxna_Platformer.gif

Screenie E shows:
Screenie F
Ajaxna_Raycaster.gif

Screenie F shows:
Screenie G
Ajaxna_Application.gif

Screenie G shows: