What is Jax?

Jax is a game-changer. It’s not just another JavaScript library that wraps around a WebGL context and then expects you to connect the dots yourself. Jax is a one-stop shop for building robust, high-quality WebGL applications — fast.

So what’s the big deal?

Jax!

Even if you’re using a WebGL framework, there’s still a lot of gruntwork left to you, the developer. You have to handle keyboard input. You have to keep track of mouse movements. You have to figure out a place to put your business logic, and if you’re smart, you’re going to have a heck of a time figuring out the best way to test it. What about your resources? Where will you store your data, and how will your app load it?

The number of obstacles you’re going to have to research up-front is mind-numbing, and it doesn’t get any easier once you’ve started coding. You’ve got a lot of work ahead of you, and it’s going to get repetitive. Even if you break your back figuring out some way to reuse vast chunks of code, you’ll never get away from this fundamental JavaScript hurdle.

And then there’s the deployment headache. That’s a whole ‘nother issue.

Enter Jax, stage right.

With Jax, you’re going to sleep a lot sounder at night. Keyboard and mouse handling are automatic. Business logic is safe and sound, stored in Model files conveniently separate from presentation layer and scene set-up. Jax ships with a powerful test suite, and Jax itself generates unit tests for you and integrates them seamlessly into your development environment.

And don’t you fret about code reuse; Jax has that covered, too. Anything that can be reused dynamically, is — and Jax has a bunch of helpful command-line generators to take care of any remaining up-front work. All you really need to decide is what kind of app to make. Then go and make it.

The entire driving principle behind Jax can be boiled down to one bold-faced, large-font-sized word:

productivity.

Jax is designed for people with big ideas and little time to implement them. It’s designed for anyone who wants to develop WebGL apps, and not just hack them together. It’s a professional framework for professional developers.

The Bottom Line

If you’d like to see some quick demonstrations of Jax in action, take a gander at the Demo Pages. Already decided to give Jax a shot? Check out the comprehensive guides. Or, you could forgo all that and jump right into the Jax Quickstart to have your first app up and running in minutes!

Finally, If you’re already familiar with Jax and would like to help make it even better, you’re more than welcome to roll up your sleeves and hop on over to the main sources.

  1. Helo – i’m new to WebGL – Just wondering if you have any demos to link to for Jax?

  2. I have checked the dungeon demo and there are no collision detection, there is not collision detection yet with this webgl framework ?

    • Colin MacKenzie IV

      Jax implements numerous geometric intersection functions, but skips collision detection to reduce bloat. Instead, a higher-level collision detection library has been implemented as a plugin which is available on Github.

      The dungeon demo uses the above-linked plugin to keep the player from passing through the dungeon walls.

      The library is currently incomplete; it does detect collisions accurately, but does not currently implement the Swept Sphere test. Hence, on slower machines or on rare instances (such as immediately following garbage collection), where more time has passed between the last frame and the current, it is possible that a collision may go undetected because the collision meshes have literally passed through each other in a single frame. This edge case is the only outstanding issue that I’m aware of before the collision detection library is complete, but I haven’t had much time to work on it due to other projects.

      If anyone would like to send a pull request on Github, they are more than welcome to do so!

      • I am using a pc with an ati 3870, not too old, i just press forward button and when it hits the wall and dont stop hitting the button and in the end it goes through wall.

        • Colin MacKenzie IV

          Yes, that is the swept sphere weakness I spoke of earlier. Initially the collision detection works properly, but eventually it will fail because of variances in between the updates. Detection is expensive and generates lots of objects; eventually, JavaScript has to stop and run the garbage collector to dispose of these objects. When it resumes, enough time has passed that the camera often moves to the other side of the wall, without ever actually “colliding”. The swept sphere algorithm would resolve this, but it’s not implemented yet.

Trackbacks and Pingbacks: