Author Archive

Update on progress since March

Oops, we forgot to keep you up to date about what is going on. There hasn’t been any really major new features added but there has been a lot of work on small features, and a lot of churn in the source code. Refactoring, and redesigns, to remove some of the limitations and to allow us to go forward from here. In particular, isolating the graphics engines is a step towards having dedicated servers. The rewrites and refactorings cover almost all the code: physics, resource system, background loading, rendering, shaders, materials, … Also there have been plenty of bug fixes (and perhaps some new bugs :) ).

Here is a summary of some of the more visible work people have been doing the last few months:

  • Complete reimplementation of the background streaming subsystem
  • Background loading of textual collision mesh files
  • Binary collision mesh files
  • Texture streaming is now automatic — you don’t have to specify the list of used textures in your class definition
  • Communal work on ‘project’ map has started, a tiling city block that we can instantiate multiple times to make a large city, and Brian has started a new ‘urban’ map
  • Camera now tracks vehicles automatically
  • Added a low power mode for laptop debugging (mostly for development, this is an idea I stole from portal)
  • Overlays — useful for road markings, z offset scaled by vertical distance from camera
  • Work in progress for bloom
  • Mesh material remapping from class objects
  • Added a nice exploding oil drum, and a traffic control orange barrel for roadworks
  • Added the sponza map, very high poly! include “sponza/init.lua”
  • PCF shadow filter can now use a noise map instead of just the simple dither pattern (enabled by default)

In addition to this, we have moved the website, forums, and wiki, to another host.

So, even if we aren’t posting, we are keeping busy :)

1500 SVN revisions

We recently reached an arbitrary, and meaningless, but strangely satisfying milestone. Of course the previous svn repository (before the move to sourceforge) also had a lot of revisions that we lost. And before then there was a prolonged period of development with no svn repository at all. Nevertheless, progress is progress so congrats everyone!

More news on new features will appear soon. :)

Finally we have deferred lighting!

Deferred Lighting in the Playground map.

After a large amount of effort restructuring the engine into a deferred shading pipeline, it has finally been possible to implement point lights and spotlights through a deferred lighting pass. There is a reasonable performance hit with the switch to deferred shading, but individual lights are now quite cheap, so we should be able to build some pretty nice looking scenes.

Documentation for the new lights can be found at on the wiki.

The next step is to implement coronas so we can get a nice effect at the actual light location. There remains a lot more to do beyond that as well. We plan to implement a smooth fade out instead of the abrupt removal of the light, support for blinking / flickering lights (i.e. damaged neon tubes), support for turning off the lights during the day (with a bit of noise in the timings) and turning on/off the car lights when the car is not being driven. Car brake lights should also be possible soon. Finally, there should be some way of rendering emissive textures so we can render the actual ‘bulb’ of the light.

Grit project contains 50000 lines of code

A semi-important milestone, I suppose. The actual number is 50044, including exporters, lua, maxscript, etc. If you include generated code the figure is nearer 180000. If you include dependencies, the total will be well over half a million…

Physical Materials Update

As we’ve been working on adding procedural object / vegetation support, it has been necessary to revamp the physical material framework within Grit.  This has required changing the grammar of the tcol files, so if you update svn you’ll have to re-export your tcols using the updated maxscripts or they will give you errors inside Grit.  The maxscript is a bit ‘fresh’ but hopefully no serious bugs, if you find anything, please point it out to us on IRC.

Summary of changes:

Materials are now given by string (none of that hex number rubbish anymore) and users can easily add their own materials (see common/phys_mats.lua for examples).  The materials don’t do much yet but they will get fleshed out with various gameplay and behavioural features as time goes by.

The physical materials are now very similar to the graphical materials, they exist (by default) in the directory of the lua file in which they are defined. Tcol files will look in their local directory for physical materials just like mesh files look in their local directory for graphical materials.

Note: When using the tcol maxscript, don’t try and use the GRIT_PHYSMAT material anymore, just assign a normal material with the name you want.

The new system should be a lot more powerful and user-friendly than the old system so any hassle bringing existing tcol files up to date should be worth it.  Thanks!