Tutorials - Updated Aug 09.
Get started right now with Ajaxna! Code your first solid, lit, spinning 3D cube in a web page, without plugins, in no time.

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.

How event handlers can be applied to DOM elements (the window in this case).

Sceenie C

Screenie C shows:

A Vector 3D Star Wars game prototype written using Ajaxna rendering 30 polygons per render and running at 114 frames per second in (3420 lighted polygons per second).

A Tie fighter flying past with the player HUD in the foreground.

This example is in Google Chrome.

Screenie D

Screenie D shows:

Use of built in classes to perform collision detection & response for Ellipsoid to Mesh.

The Mesh in this case is rotating and pushing the Ellipsoid (the box) out of the way.

This example is in Firefox.

Screenie E

Screenie E shows:

A platform game prototype built using Ajaxna.

The player (box) is standing on a rotating platform by making use of the collision classes mentioned above.

Bone type scene graph hierarchies can be constructed, with nodes attached and detached. Here the player has been attached to the rotating platform (BRIDGE) as he collided with (jumped on) it and the platform's face Normal was within "Standing on"
limits (pointing more or less upwards).

This example is in Safari

Screenie F

Screenie F shows:

Use of an experimental set of Ray Casting classes (ajax.xna.Raycaster)

Makes use of texture drawing from a source rectangle (ajax.geometry.shapes.Rectangle) to a destination rectangle,