Text

Turbulenz Engine Goes Open Source

We’re excited to announce that we have released the Turbulenz HTML5 game engine as open source under the standard MIT license. The open source project is available on GitHub at https://github.com/turbulenz/turbulenz_engine.

You may have seen Turbulenz mentioned somewhere and wondered what it was. Turbulenz provides a game engine that delivers all the building blocks developers need to rapidly create high quality and hardware accelerated 2D and 3D games playable across mobiles, tablets and the web.

image

Polycraft by Wonderstruck

We started developing the Turbulenz Engine a little over 4 years ago in early 2009, when HTML5 was still in its infancy and before WebGL even existed. We recognized that JavaScript and the web development platform offered a huge opportunity for creating high quality games and as a mechanism and market for dynamically distributing content.

We initially proved this to ourselves by creating the service and engine capable of streaming and rendering the majority of Quake 4. This continues today to be a great test of the engine as it has evolved. You can see it demonstrated by our CTO David Galeano.

Today, the Turbulenz Engine powers the highest quality 2D and 3D HTML5 games online. If you want to see some examples we recommend looking at:

image

Save the Day from BAFTA-winning Denki

We have seen a monotonically increasing interest in the engine and SDK since it was first made publicly available.

If you want to take a look, the best place to start is the README which you can find on the Github project page and included in the source. This details how to set up a development environment and includes a short getting started guide on how to use the Turbulenz Engine APIs. From here we recommend going through the Getting Started guide and reviewing all the documentation online.

The engine is also available bundled in an easy to install SDK for Windows, Mac OS X and GNU/Linux. This might be an easier option if you’re looking for a packaged-up and fully QA’d snapshot of the engine. All future SDK releases will contain the open source engine with the associated MIT license. (Earlier versions of the SDK were released with a partially open license which has now been deprecated.) The bundled SDK is available from the Turbulenz developer service.

What Features Does the Open Source Turbulenz Engine Provide?

The Turbulenz Engine contains an extensive range of features and services for creating games. The engine was designed to be a complete Internet generation game engine. By this, we mean a game engine that was conceived, designed and implemented specifically for building games that are played via the Internet using web technologies, rather than as a native application on a console or PC. This is a single suite of technology that spans the client game application and remote game services.

The libraries contain solutions for all sensibly reusable game services, including: 2D and 3D graphics, 2D and 3D physics, 2D and 3D effects, sound, networking, user input, scene graphs, hierarchical animation, movie playback, resource management, server requests, a range of renderers, leaderboards, badges, payments, save game userdata, user profiles, game profiles, multiplayer, metrics, maths and numerous utilities.

The graphics engine is completely shader driven and hardware accelerated using WebGL. It has been implemented to allow games to efficiently dispatch their scenes. The engine comes with multiple renderers which can be selected depending on the features and performance of a user’s device, this includes, a deferred renderer, a forward renderer and a default renderer. There is also a highly efficient 2D renderer for efficiently dispatching huge numbers of sprites and effects.

The 2D and 3D physics engines are particularly powerful in comparison to the procedurally generated ports of currently available.

All the technology has been handwritten as efficient TypeScript and JavaScript to maximise execution and memory performance.

There is a detailed list of all the engine’s features in the repository README and in the documentation.

Why Are We Open Sourcing the Engine?

We’ve had a lot of interest in the Turbulenz Engine via our SDK packages and many of the people who try it out have praised the features and performance. However, two issues that have often come up are any sort of restrictive licensing and the ease of getting things started.

By releasing the Turbulenz Engine as open source under a standard liberal MIT license we hope to ease the adoption costs and ensure that people don’t feel in any way restricted by using the Engine.

What Are the Design Goals of the Turbulenz Engine?

The main design goals of the Turbulenz Engine are performance, modularity and customizability. Users of the engine should be able to build any kind of game without limitations, in an efficient manner and with an end product that performs optimally when loading and during play.

To achieve this target the Turbulenz team followed these rules when writing code:

Modularity

  • Users should be able to pick what they want and replace what they don’t.
  • When possible new functionality should be orthogonal to existing one.

High performance

  • Strict coding standards to keep code efficient.
  • Keep memory allocations to minimum, reuse existing objects or arrays whenever possible, use scratch pads, combine multiple separate objects into a single one.
  • Use most efficient storage for each data, Typed Arrays when possible.
  • Reduce function calls when possible: write functions that handle arrays of objects instead of loops that make a function call per element, games rarely do a single thing to a single object.
  • Be aware of performance differences between browsers.
  • Profile often.

Asynchronous loading

  • No API should block waiting for a response from the server, avoid polling whenever possible, use callbacks or Promises, to notify of data availability.

Data driven

  • The target should be to make the game a simple dumb player of data, all functionality defined by simple data files.

Simple well documented file formats

  • Define simple, easy to create asset formats that can trivially be connected to any tool chain.

Scalability

  • Design interfaces that can be implemented with different level of detail or quality settings in order to scale from mobile to desktops.

Power without control is nothing

  • Make sure users can do exactly what they want, with a helper layer put on top if required, document performance implications at every level.

Fault tolerant

  • The engine should keep going even if any type of asset fails to load. The application is able to provide sensible defaults for all asset types making it easier to stay productive and diagnose issues.

Fast loading

  • Reduce amount of data to be downloaded, compress data efficiently.
  • Use the browser cache efficiently, use unique file names based on content and tell the browser to cache forever.

Maintainability

  • Strict coding standards to keep code readable, easy to maintain and debug.
  • Write unit tests, samples and documentation for every new code path.

Targeted

  • This is a game engine, for games.

What Have We Made Available?

We’ve made three Git repositories available on GitHub:

Turbulenz Engine - https://github.com/turbulenz/turbulenz_engine

  • TypeScript and JavaScript implementations of the game engine
  • Documentation of the libraries, APIs and tools
  • Code samples demonstrating the engine APIs
  • Application samples showing how a basic but complete game can be built
  • Protolib high level prototyping libraries

Turbulenz Tools - https://github.com/turbulenz/turbulenz_tools

Turbulenz Local - https://github.com/turbulenz/turbulenz_local

  • A locally hosted Python development web server implementing the Turbulenz services APIs
  • Tools for interacting with the Turbulenz Hub
  • Also available from PyPi as turbulenz_local.

Want to Contribute?

We know there is a large and growing community interested in HTML5 game development and we hope that people will find this project an empowering contribution to game and Internet technology domains. Now that the project is fully available as open source and easily accessible via GitHub all contributions are gladly welcomed. Please send the project a pull request or post a git diff patch on the Turbulenz Engine google group.

Please Help Us Spread the Word

Please help spread the word to your friends and followers by sharing this announcement online. We want to make sure that anyone thinking about making a game with HTML5 is aware of Turbulenz as a free and open source solution that comes packed with high performance features.

Learn More

Sign up for the free WebCast on 21st of May at 9am PST / 5pm BST. This will include an introduction to the technology, show you how to get started, and leave time for Q&A.

Any questions or ideas about the Turbulenz Engine, HTML5 games or anything else, please get in touch.

Happy Hacking!

- James Austin

Turbulenz CEO

Text

TypeScript in focus - getting started with TypeScript Turbulenz

SDK 0.25.1 is a minor update to SDK 0.25.0 and contains a few fixes and updated documentation. If you’ve just updated to 0.25.0 this update should be a breeze.

TypeScript in Focus

There’s now a whole new section in the “Getting Started Guide” that goes into depth about how to build against Turbulenz TypeScript modules. With a walkthrough example and commands that you can use with your own build system. You should be up and running in no time. Future developments will include a standardised build structure, so watch this space.

More and more COLLADA updates

We’re continuously making updates to our dae2json tool; supporting additional features and making improvements. There’s so much going on we can get them out fast enough. See the detailed release notes to find out what’s new.

A fistful of fixes

Fixes in this release include a bug in the soundDevice.listenerGain property on canvas and the correction of a few missing files in the SDK. See the release notes for details.

Text

TypeScript version of Turbulenz Engine now available

Type check… one, two - TypeScript support rocks Turbulenz

image

SDK 0.25.0 has been a long time coming, but we hope it will be a significant step in helping our developers make awesome games. This SDK includes the first public release of TypeScript versions of our libraries. With improved syntax checking and validation using TypeScript should help you streamline your development process and avoid silly bugs and runtime errors down the line. It compiles to JavaScript and works with other existing JavaScript libraries.

You don’t need to use TypeScript to use Turbulenz, but we now provide type definitions for all of our libraries, which is just one good reason to try it out!

For more information on TypeScript check out: http://www.typescriptlang.org

Features

TypeScript

The SDK now includes tslib and jslib (generated from tslib) as well as TypeScript versions of apps and samples.

This feature is in beta and we need your help to try it out! Make sure to read the detailed release notes and the TypeScript recommendations.

  • Existing developers: Use the standard jslib as usual. If you have your own modifications, compare your code to the tslib version which has a similar layout to previous jslib releases. Investigate whether TypeScript would help you with your project.
  • New developers: Start your project with either of tslib or jslib depending on preference. 

interesting blog article of his findings during developmentOur TypeScript guru Duncan has written an . Definitely worth a read.

Video support

The GraphicsDevice now supports the creation of video objects that can render video data as a texture. This feature can be used for cut-sequences and other media playback in the game engine. The video sample shows how this can be used in conjunction with audio to playback a video. Check graphicsDevice.isSupported to find out if the browser supports WebM or MP4 video formats.

imageimage

Physics snapshots

The PhysicsManager now supports snapshots for creating and restoring snapshots of dynamic physics objects on the scene.

Ideal for resetting the state of physics simulations.

Clean-up outstanding API requests

A new destroy function has been added to the RequestHandler to help clean-up outstanding request callbacks and stop them from accessing invalid state on destruction. Make sure to add this to your existing shutdown code.

UV transformation support for the renderers

DefaultRendering, DeferredRendering and ForwardRendering now support uvTransform allowing you to rotate, scale and translate UVs. See the release notes for more details.

Updates for dae2json

dae2json, the COLLADA import tools for models, animations, materials and more has had a number of bug fixes and improvements. It has better support for various exporters from Maya/Max to Sketchup. Notable is the addition of the NvTriStrip command which is a recommended step for optimising meshes.

image

Fixes

  • T152 - An issue where deploygame tool was unable to upload to the Hub.
  • A rounding error for certain values in storeitems.yaml that caused an error on the Hub.
  • Various fixes to dae2json to avoid crashing and give more warnings for incorrect/unsupported files.
  • Fixed an issue where JSProfiling was unable to generate array information in the latest Chrome.

See the 0.25.0 release notes for more details.

The SDK is available to download from the developer service at hub.turbulenz.com.

Text

Play-before-sign-in added to Turbulenz

Turbulenz SDK 0.23.0 is now available on the hub.

The main update in this release is to add support for “Play before sign-in”. This allows users to try games before signing into the game site. The web services are smart enough to then allow users to create accounts later and keep all the badges, scores and their game progress.

New Features

  • Support for Internet Explorer 10 has now been added.
  • Support has been added in Turbulenz Services for play before sign-in. Games that are built with this version of the SDK will automatically support play before sign-in, when available on turbulenz.com

Fixed

  • In previous versions, calls to Turbulenz.setInterval() in plugin mode could generate callbacks at 60Hz independent of the interval value passed in. This has been fixed.
  • The previous version of the Turbulenz Engine installer (0.22.0) for Mac OS X unconditionally replaces parts of existing plugins, even if a newer plugin is already installed. This has been fixed, but users installing 0.22.0 after later versions of the engine should be aware of this behaviour and should ensure that they (re)install the newest Turbulenz Engine after 0.22.0 if they wish to continue using the 0.22.0 engine alongside newer versions.
  • Callbacks from the NetworkDevice are now called asynchronously, fixing an inconsistency between the canvas and plugin versions.
  • Sending of websocket data >8kb was being incorrectly buffered in the plugin (T1221)

The full release notes are available online at docs.turbulenz.com.

Text

Physics and multiplayer technology updated in Turbulenz SDK 0.22.0 release

Summary

Turbulenz SDK 0.22.0 is an update for both the Turbulenz Engine Installer and SDK components.

Full release notes are available in the documentation online.

The SDK can be downloaded directly from the Turbulenz Developer Hub.

The SDK is available for Windows, Mac OS X and Linux.

New Features

Payments

Turbulenz payments for local and the Hub is now supported. To use the Turbulenz payments see the documentation for the StoreManager object. Please note that the game site does not yet support payments. Any games published to the game site should not use the StoreManager object.

Leaderboards

The leaderboards.yaml now takes an optional set of default scores for the leaderboards.

Physics

Physics2DDevice object added for high performance 2D physics simulations with Turbulenz. This is a complete 2D physics engine built from the ground up, and optimised for JavaScript.

Physics2D comes with 3 new samples: Physics2D, Physics2D-Constraints and Physics2D-Callbacks demonstrating the main features of Physics2D and co-operation with Draw2D library.

Math

Added 2D vector types and operations to VMath and the MathDevice.

Badges

Badges now allow you to specify an optional predescription, which if specified is used as the description until the badge is unlocked. See Defining your game’s badges.

Debugging Tools

Added DebuggingTools which allows data breakpoints to be set on object properties and array indices.

Rendering

Transient IndexBuffers are now supported: this kind of IndexBuffer is optimized for dynamic single use geometries.

The only change required to use them is to set as true the parameter transient when creating the IndexBuffer.

Multiplayer

The Multiplayer functionality exposed via the TurbulenzServices object has moved into the MultiplayerSessionManager object, please see the documentation for full details.

The behaviour of the createSession function is different to the behaviour of the old createMultiplayerSession function and will now always create a new multiplayer session. If you want the old behaviour please use joinOrCreateSession.

The new functions queryFriendsSessions and joinAnySession allow you to find friends’ multiplayer sessions or join a friend’s multiplayer session automatically.

getJoinRequestQueue replaces the previous methods for responding to multiplayer join requests originating from the game site.

New user session information can be displayed on the game site. The API to add per-player meta-data is exposed on the GameSession object via the setTeamInfo and setPlayerInfo functions.

Services

The DyanmicUI and BridgeServicesSimulator allow you to easily build powerful dynamic user interfaces and preview your integration into the games site while developing games on the local server or the Hub. A version of these tools is included in the MultiWorm sample provided with the SDK. To try them out in your own project simply copy across the contents of the js folder into your own project, add the file duimanager.js to your scripts directory, add duimanager.css to your css folder and add the following lines to the header of your html template:

<link rel=”stylesheet” type=”text/css” href=”css/dynamicui.css”>

<script type=”text/javascript” src=”js/jquery-1.7.1.js”></script>

<script type=”text/javascript” src=”js/duiserver.js”></script>

<script type=”text/javascript” src=”js/bridgeservice.js”></script>

Changes

Engine

The engine loader will now respect the engine version specified for your game. This can be done in the Manage tab for the game in the local development server or directly in the game’s manifest file by adding the line (for instance with the current engine version):

engine_version: ‘0.22.0’

For the game to be publishable, this engine version must be a three-part string (of the form X.Y.Z).

Fixed

Fix for a deficiency in Draw2D for Draw2DSprite objects that previously assumed a 1:1 ratio between Draw2D coordinates and screen pixel coordinates. This previously led to a visible slack in updating of rotations when Draw2D viewport resolution was significantly smaller than that of the screen.

The canvas version of SoundDevice no longer generates 404s on Firefox when sound source stop() is called.

Input events now cause all callbacks to happen outside of the game loop in both canvas and plugin modes. Previously canvas and plugin modes were inconsistent with some callbacks being made during the call to InputDevice.update. Note that InputDevice.update should still be called to ensure all events are reliably delivered to the game.

Fix for the leaderboardResult scrolling functions throwing an exception when a callback argument is provided in TZJS and release builds.

Fix for custom objects appearing as functions when passed from Safari to plugin JavaScriptEngine.

Text

“phoenix down” and biz.turbulenz.com is re-born!

biz.turbulenz.com was re-born today with a new look and lots of new information about our products and services.

Turbulenz‘ covers all things to do with our consumer game site and it’s awesome social functionality. ‘Developers‘ and ‘Partners‘ have everything you’ll need to know about getting started with Turbulenz, downloading the SDK and project funding. ‘Careers‘ has information about the team and how you can join us and ‘Press’ is a constantly updated resource of all our logo assets, key reading links and press coverage.

There’s more up-to-date information and links to resources across the site now — if you think there’s something missing let us know by email (or tweet us) and we’ll add it.

Text

Lock & Load: More Weapons In The Fight For Better Browser Games

Lets face it, developing for lots of different configurations can be a pain. That’s why in this release of the Turbulenz SDK we’ve added functionality to make it easier to check the things you need and not be concerned with the things you don’t. Here are a couple of examples:

Which sound files do I need to load?

The Sound Device has built in checking for supported file formats. It can tell you what a browser supports, saving you from loading megabytes of the wrong file type.

How do I check what version of Turbulenz a user has?

In short, you don’t need to. The new Turbulenz loader takes away the hassle of checking which version a user is running. You request the version of the engine you need and if the user has it, the loader will run it. When on turbulenz.com the site is aware of what the user’s configuration supports and can direct them to the most compatible version of your game. You don’t need to do anything apart from provide the game builds. Cool, huh?

Read More

Text

Turbulenz updated with everyone’s favourite: improvements and bug fixes

Turbulenz.com was updated this week with bug fixes and interface tweaks that should make using Turbulenz approximately 12.3% more enjoyable (or your money back).

Reading and commenting in the global feed on a game is now a much better experience. By default now only conversations are shown, meaning it’s much easier for other users to see (and comment on) your posts. Try striking up a debate about your favourite Score Rush strategy, or Space Ark animal in the feed!

Reading scores in the leaderboards is also now much easier as numbers are correctly formatted with commas and there’s an option to refresh if you’re a really fast player.

We’ve been listening to your feedback since we opened the site and we’re planning lots more enhancements as well as some really great new features. We’ll be posting teasers of new Turbulenz functionality to Facebook and Twitter in the run up to our next release — follow us here: facebook.com/turbulenz and here: twitter.com/turbulenz to keep up to date.

Text

No longer a blank Canvas - native HTML5 Support

turbulenz.com now supports HTML5 Canvas, plug-in-less, gaming! We don’t just support it, in fact, we’ve embraced it with loving arms and given it a big hug. We’ve been waiting for web standards to catch up for a few years now, and they’re finally nearly where they need to be for next-generation web gaming. As a result all of our games can now be played natively in browsers that support WebGL such as Chrome, Firefox 10 and Safari (in developer mode). We recommend using Chrome for the best experience at the moment. The Turbulenz Engine has always been an HTML5 JavaScript engine and now the final link in the chain has been completed the game sites supports native HTML5 application deployment.

Read More

Text

Multi-player, Multi-configuration, Multi-ple choices!

This release of the Turbulenz SDK is all about multiplying the possibilities. We’ve spent some time making it easier to develop for different target configurations simultaneously. Using the new makehtml and maketzjs tools you can write code once, create a canvas and a plugin compatible version of your game at the same time.

Now that you can target multiple configurations, why not add multiple players? We’ve introduced a new multi-player match making service. When integrated into your game it automatically pairs players with their friends ensuring that you’re not playing alone when you could be playing together.

There’s a new place for the full set of release notes.

Read More

Text

Robust input, robust loading and robust profiling

Are you interested in a more flexible method of detected user input? If so, then this release of the Turbulenz SDK is for you. We’ve added additional callbacks and input state detection, so now you can tell if a user has clicked on your game and when they navigate to a different window. We’ve also bundled a robust request handler that deals with lost internet connections. Lose a connection, stay in the game!

The full release notes are available on Github - you need access to the Turbulenz SDK repository to read these. Get in touch if you want early access.

Read More

Text

Turbulenz SDK 0.17.0 now available

Have you been working on a HTML5 game using canvas? Turbulenz SDK 0.17.0 introduces canvas support, providing the first step in bringing your game to the Turbulenz platform, not to mention making it playable on browsers that lack canvas compatibility. In this SDK we’ve also revamped our input support providing a system of mapping keys that works for Windows/Mac and across different keyboard configurations.

The full release notes are available on Github - you need access to the Turbulenz SDK repository to read these. Get in touch if you want early access.

Read More

Text

Access Turbulenz with Facebook

This week the Turbulenz game site Beta was updated with new features and enhancements. Here’s a rundown of what we added, and what’s coming next.

Facebook Connect

You can now register for, or connect an existing account, with Facebook. This is great news as you can now create an account in seconds using the data you’ve already filled in with Facebook. Death to filling in boring forms! 

Read More

Text

Turbulenz SDK 0.16.0 now for Mac OS X

After enough people asked for it, we’ve let the Mac OS X version of the Turbulenz SDK escape. What’s in it? Well exactly the same features as the Windows version.

It can be downloaded right now from Github.

The download comes as a binary payload embedded in a Shell script. Just execute the script and it will ask where the SDK should be installed and then build everything. Nice and simple.

Read More

Text

Turbulenz SDK 0.16.0 now available

Stop the press! This release of the Turbulenz SDK 0.16.0 comes with a special feature that we at Turbulenz are proud to make available to users and developers.

Introducing Apple Mac OS X support for the Turbulenz Engine. Now you can access the Turbulenz game site and other services using your Mac. We’ve been working towards a goal of ensuring a great user experience on each of our supported platforms, so we hope you enjoy it.

The full release notes are available on Github - you need access to the Turbulenz SDK repository to read these. Get in touch if you want early access.

Read More

Archive Random Next page Page 1 of 2