Friday, July 31, 2009

Development Update

1. What is hopefully the last memory leak has been fixed in revision 484, after a few days of investigation (turns out it involved how NPC position updates were sent from the server). At this point there are no significant remaining bugs that I am aware of, code-wise things are basically ready for the 1.0 release of the Intensity Engine.

2. After 10 days of fairly strict test-driven development (the Django test client is quite useful), the new master server is mostly complete. It should soon be usable as a replacement for the minimaster.

Friday, July 24, 2009

New Master Server in Progress

I'm writing a new master server which will replace both the Syntensity master server (which was hacked together a long time ago, as a proof of concept, and never open sourced) and the minimaster (which will remain useful for testing, standalone demos, etc.).

The new master is in /master_django. It's written, as the name indicates, using Django, and includes a script to run it on CherryPy, which makes deployment very easy (the Django dev server isn't suitable for production, which is why something like CherryPy is needed; of course, you can also use Apache/lighttpd/etc., but that requires some setting up).

The goals with the new master server are
  • Clean extensible codebase: Beyond the basic functionality, additional features will be implemented as plugins
  • Federation: Allow anyone to easily customize and run their own Intensity Engine master server
Note that the new master is orthogonal to the Intensity Engine 1.0 release - it's optional at this point, and the 1.0 release won't wait for it. What does depend on the new master is the public launch of Syntensity. In other words, the current status is:
  • The Intensity Engine 1.0 release depends on the existence of a few good maps/games
  • The public launch of Syntensity depends on the Intensity Engine 1.0 release and on completion of the new master server

Friday, July 17, 2009

Platforms Video



I've been mostly busy with the business side of this project in past weeks, but today I found the time to do some coding, so I worked on another optional library, Platforms.js, a platforms library for multiplayer. This is still kind of buggy, but the basics sort of work.

Saturday, June 27, 2009

Autoturrets Video



This is done using the Projectiles.js library, which is now mature enough to be put in the standard library. Note that like all other libraries, it's entirely optional, and work on it cannot affect the stability of the engine or the core API (which is why it was added during feature freeze).

Some details:
  • The automatic turrets are controlled by the server, with projectiles managed on both server and clients for responsiveness
  • The turret model was kindly contributed by Gregor Koch under a creative commons license, and consists of a base that turns left and right and a barrel that turns up and down (the commands to render the separate parts are done by a script). Edit: For a closeup, see here.
  • Notice the reflections of the shots in the water
  • Music: The intro to "You Can Take The World" by Predator, from their album Sick Society

Thursday, June 18, 2009

Intensity Engine 0.9.5 Release


More screenshots can be seen here.

Since 0.9, a month and a half ago, a lot of work has gone into the 0.9.5 release which is out today (rev. 324). This release is still not considered stable, but is a significant step towards that (in fact it may be the last release before 1.0). Two main areas of focus in this release are:
  • Allowing people to run their own infrastructure - master server, asset servers, and server instances - without any connection to Syntensity. This allows both federation (separate independent servers, with loose connections - like the WWW) and makes it easier to customize the Intensity Engine for non-standard uses.
  • Improving content creation and collaboration. This is now in a good enough state to allow focusing on content creation, which is one of the main tasks remaining before the Intensity Engine 1.0 release and public launch of Syntensity.
In more detail, here are some of the changes:
  • 'clientSet' state variables, which are applied first on the client, allowing better responsiveness in an easy way
  • Initial login to server instances made faster
  • AreaTriggers made significantly faster, and now work correctly on server
  • Allow maps to extend the position protocol messages, for faster updates of map-relevant information like custom animation settings
  • Allow rendering models (including players) from map scripts, for more flexibility in visuals
  • Added almost-finished Stromar character model
  • Update of server-side NPC/bot system to current API
  • Various API extensions (e.g., allowing gravity to be changed)
  • Various minor GUI and usability improvements
  • Full support for building on Ubuntu 8.10, Ubuntu 9.04, Windows XP and Windows Vista
  • Plenty of bug fixes
Binary builds aren't planned for this release, as things are still moving quite fast.


Towards 1.0

The Intensity Engine is now in feature freeze. Only bugs in existing features will be fixed for the 1.0 release, which is dependent upon
  • a decent level of stability and polish, and
  • a reasonable amount of working content that can be distributed with the engine or at least used to demo it

Thursday, June 11, 2009

Roadmap Changes

I've made some decisions regarding the roadmap for the next few months:
  • The Intensity Engine has been made completely independent of Syntensity, and will continue that way. My original intention was that I would focus on Syntensity, and through that promote the Intensity Engine (the Intensity Engine being an open source project utilized by Syntensity), and later on get around to making the Intensity Engine more compelling as a separate project. But several people (for various reasons) have already expressed an interest in the Intensity Engine by itself, and I have also been hearing some very good arguments for completely open sourcing the Syntensity master server. Because of that, I've started to add to the Intensity Engine the functionality it needs to be usable without the Syntensity master server, namely, an example master server was committed a few days ago, and better documentation on running the various server components as well. Furthermore, improved master and asset servers should be appearing soon.
  • The Intensity Engine 1.0 release is still planned for later this summer. Bugfixing is progressing well, and no major features are planned at this point, just minor stuff. Recent decisions like including a master server as mentioned above should not be a cause of delay.
  • Syntensity will remain in 'closed' alpha, and later 'closed' beta. I say 'closed' with scare quotes, because the source code is open, and I'll give an invite to Syntensity to anyone that asks, so 'closed' here is kind of a silly term. But what I mean is that I won't make an effort to promote Syntensity, and probably not provide pre-built binaries either. The reason is that I think opening up to a wider audience should wait for better content, and it looks like getting that content will take less time than I originally thought, so why not wait.
  • The Syntensity public launch might be delayed somewhat. Basically I will delay it until I feel the content is good enough, probably not by very much, but there is no reason to have a rushed release.