Welcome to AngelCode.com. Here you'll find resources for game development and more.

The most popular visits here are to the following pages: AngelScript - a powerful and free scripting library, BMFont - a free bitmap font generator, or RefDB - a database of useful developer resources. But feel free to browse the site for more resources.

AngelCode.com is maintained by Andreas Jönsson since 2001. Please help the continued maintainance and further development of the resources here with a donation.

Latest updates

2012-04-28   AngelScript 2.23.1

A new version is here. This release has been mostly focused on performance improvements and bug fixes, so there are not a lot of visible changes.

Especially the compatibility problems with Mac OS have been fixed. Apple had decided to change their compiler suite in the latest version of Mac OS X, and this made my code that has been working flawlessly for many years to break. As I do not have an up-to-date Mac it took a bit of trial and error to get things working again, but mainly thanks to Matt Bush, from Hitbox Team, who did a lot of testing for me, was I able to correct the problems.

Much of the performance improvements that has been made has been with the way the bytecode is generated. That together with the introduction of some new bytecode instructions, which replace frequently occurring bytecode sequences, should hopefully give a general performance boost for script execututions. I say hopefully, because it really depends on what your scripts look like.

Unfortunately the bytecode changes also means that the JIT compiler that Blind Mind Studios released in February needs to be updated before it can be used with this new version of AngelScript.

I've already contacted them, and they are working on getting the JIT compiler updated, in addition to further enhancements, e.g. support for 64bit Windows. Hopefully they will be able to complete that task soon.

Update 2012-04-30: Blind Mind Studios has updated the JIT compiler with support for version 2.23.1.

New developer references

2012-04-27   Fast Pathfinding via Symmetry Breaking
2012-04-07   XBox 360 Controller Emulator
2012-04-02   Color conversion math and formulas

2012-03-11   AngelScript 2.23.0

I've released yet another update to the AngelScript library. The major enhancement with this release is the improvement to the way the bytecode is saved.

With the changes I made in this release to abstract the pointer size the bytecode is now almost 100% platform independent, and should cover all modern platforms including computers, consoles, and mobile devices. The only things that prevent me from saying the code is 100% platform independent are 2 things; 1) that bit representation for float values is left as-is, so a CPU that doesn't use IEEE 754 will get the wrong value when reading bytecode saved on a PC, 2) that the size and value of the boolean type is left as-is, e.g. older Mac's on PPC used 4 bytes for the boolean type.

With the saved bytecode being platform independent many applications will not need to compile any scripts, so with this I added the preprocessor define AS_NO_COMPILER that can be used to remove all the code related to the compiler from the library. This can reduce the size of the executable quite a bit, so if size is important to you this will hopefully be a welcome change.

Another change that many has asked for is a way to register reference types that doesn't use reference counting. It was possible before by registering dummy functions for the ADDREF and RELEASE behaviours, but now the new flag asOBJ_NOCOUNT can be used instead so the dummy functions won't be needed anymore.

As I do with every new *.0 release, I've done some changes to the library interface. For the most part it is just to add proper methods for using the namespace feature I implemented in the last release, but there may be a few methods that needs to be adapted when upgrading to this version, most notably the GetExceptionFunction() and NotifyGarbageCollectorOfNewObject() methods.

The add-ons have also received a few improvements. I've implemented string pooling for the string type, which should improve the performance for scripts that use a lot of strings. I also added the method getKeys() to the dictionary object.

SiCrane from the GDNet forums implemented a new autowrapper system that eliminates the separate declaration of the function wrapper and the registration of it with AngelScript. The new macros are almost identical to the asFUNCTION and asMETHOD macros used to get the address of functions and class methods, so it becomes just as easy to use the generic calling convention as the native calling convention.

On the script language front, very little changed in this version. The only change is that enums can now be declared as 'shared' too.

New developer references

2012-03-11   cppcheck
2012-03-08   Next Generation Occlusion Culling
2012-02-22   Understanding BCn Texture Compression Formats
2012-02-18   musicfox

2012-02-15   AngelScript JIT compiler

The developers at Blind Mind Studios have implemented the first fully functional JIT compiler for AngelScript.

It is now available to the public as an open source project, with the master repository hosted at github.com.

I haven't had a chance to test it myself, but what Andrew (Thy Reaper) tells me is quite impressive. With the JIT compiler the performance typically improves between 1.5 to 3 times, and in some cases even reaches levels of native C++ code.

This is especially impressive because the JIT compiler itself is implemented in relatively few lines of code, which makes it perfect for embedding.

Currently the JIT compiler only supports x86, but I'm sure it can be quite easily extended to other CPUs as well.

New developer references

2012-02-15   C++11 - Wikipedia

2012-01-29   AngelScript 2.22.2

This new version brings a couple of enhancements to the script language: shared global functions and namespaces. The shared global functions is a continuation on the shared feature from version 2.22.0.

The namespaces is a new feature in the language, which is based on the C++ namespace feature. It is still in its initial stages, so some things you can do in C++ is still not available in AngelScript, e.g. 'using namespace'. Also, the application interface has not yet been changed, so the application doesn't really have all the methods necessary to interact with namespaces.

I've also made some internal improvements in the library. Mainly with the goal of finally making the pre-compiled bytecode fully platform independent. I've implemented some new bytecode instructions that are exclusively for manipulating pointers, and with this some older bytecode instructions have also been removed as they ended up no longer being used.

For the next version I plan on implementing the interface changes necessary for interacting with namespaces. I also plan to continue working on making the pre-compiled bytecode platform independent. I specifically want to focus on removing the dependency on the CPU pointer size, which is one of the few last obstacles to gaining full independence.

Another thing I'll implement for the next version is the option to compile the library without the script compiler. By not including the compiler the applications that only rely on pre-compiled bytecode should be able to reduce the executable size quite a bit.

2012-01-20   Dustforce is also using AngelScript

The indie developer Hitbox Team has recently released Dustforce on Steam. Hitbox is using AngelScript in their engine to code most of the game logic.

Dustforce is a beautiful 2D platformer where you're cleaning up dust and dirt that has somehow come to life and is dominating the surroundings. The art style and music attracted me and I decided to buy this game today and though being a difficult game I've enjoyed it greatly so far.

2012-01-11   Amy is using AngelScript

Amy was just released for digital download for XBox360 and PS3. VectorCell is the company that developed this game and they use AngelScript as part of their game engine.

The game itself is a horror game, which based on the official trailer looks amazing. I'm very curious to play this game myself as it looks to be the kind of game that I enjoy most. Too bad I do not have an XBox360 or PS3 to play it on. I hope a PC release will follow soon so I don't have to miss this title.

2011-12-28   AngelScript 2.22.1

It took a while but I've finally released version 2.22.1. This version brings quite a few improvements, along with bug fixes.

The script language now allow use of the keywords 'final' and 'override' for better control of when and how inheritance is implemented. The property accessors have also received a shorter alternative syntax for implementation in the script, similar to the syntax in C#. Both of these features were contributed by InvalidPointer.

The script compiler no longer implements the default constructor for classes if there are other explicit constructors defined. This prevents unwanted construction of classes which may lead to difficult to find bugs. Of course, the application can tell the compiler to implement the constructor anyway with an engine property.

The generic reference type (ASHANDLE) implemented in version 2.21.1 had a few quirks that made it not be quite as intuitive as I had intended. These have now been fixed by allowing the compiler to implicitly convert objects to the generic reference type by calling the appropriate constructor.

Other than that there are also improvements in both compiler and runtime performance, as well as several improvements in the add-ons.