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-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.
New developer references
2011-12-11 Real-time Realistic Rendering and Lighting of Forests
2011-12-01 Calling conventions for different C++ compilers and operating systems
2011-12-01 System V Application Binary Interface, AMD64 Architecture Processor Supplement
2011-12-01 GCC-Inline-Assembly-HOWTO
2011-11-28 MySQL
2011-11-28 JustHost.com
2011-11-28 PHP
2011-11-18 The move is complete
If you see this you are viewing AngelCode.com at its new home, and everything worked as it should.
It took a little longer than I had expected because of a slight problem with my new host, but once I got in touch with the tech support they very quickly corrected my issue.
It's quite possible I've made a few mistakes when porting the site over to its new format, so if you find any broken links or similar things that seems to be out of order, please don't hesitate to get in touch with me.
2011-11-09 AngelCode is moving
GameDev.net has hosted AngelCode for last 10 years and it has been great, but everything eventually change. GameDev.net is undergoing major changes in order to improve what they are already offering to the game development community. I totally support their needs, and for that reason I decided it was time to move out so as not to burden them with taking care of my needs too.
I've spent the last couple of months converting my site over to PHP and MySQL, and it has been a great learning experience. I cut a few corners, removed a lot of the backend stuff, and simplified the design in order to complete the conversion quicker, but everything is now done content wise.
The next step is to make the actual move. I already have the host and will be changing the DNS sometime over the next days. Hopefully there won't be any downtime, but if there is you'll know why (if you read this notice before, that is ;))
The new design is quite minimalistic and probably not what anyone would consider a 'cool' design, but at least the information is there. I personally feel it is refreshing to start from a clean slate and do not plan to keep the design so minimalistic, but rather than holding off on the move until everything is ready I'll be making incremental improvements over the months to come instead.
2011-11-06 AngelScript 2.22.0
This version brings a long list of smaller enhancements, including:
- User data in asIObjectType and asIScriptModule, that can be used for holding function pointer caches
- The asIScriptContext::Prepare method can now take the asIScriptFunction pointer rather than the function id
- Added functions to make it slightly easier to get the asIScriptFunction pointers
- Application can now define the modules' access to individual registered entities through bitmasks, rather than on the configuration group level
- Added methods to the asIObjectType interface to make it easier to determine relationship between types
- AddRefScriptObject and ReleaseScriptObject can now take a pointer to the asIObjectType instead of the type id
- Made improvements to the interface to aid JIT compilation
- Implemented shared script classes, i.e. classes can now be declared as 'shared' which will allow multiple modules to share the same implementation thus simplifying how objects can be passed between modules
Most of the changes are just incremental improvements, the real exciting new feature is the shared script classes.
Previously it was a bit complicated to have two or more modules communicate with each other, due to the inability to share types. The modules could only use the types that had already been registered by the application when passing data back and forth. Now, with the shared classes, the modules can implement common classes with data and methods to simplify this.
Shared classes is just the beginning, I plan to expand this feature to global functions and properties too.
2011-09-25 AngelScript 2.21.2
A new version is ready for download.
I've changed how the script engine works with return values in order to reduce the amount of dynamic memory allocations. A value type that is returned by value is now allocated on the script stack, rather than on the dynamic memory heap.
In my own game engine, this change has reduced the number of memory allocations that are done from the script engine on a frame by frame basis to zero. New allocations are only done when a new game object is spawned. Hopefully others should see similar improvements in their own projects.
Another significant improvement is to the support for native calling conventions on 64bit Linux and Mac OS X. The ABI on these platforms is very complex as structures can be passed around in different registers based on the type of each member. One particular problem was POD structures that didn't implement the copy constructor or destructor, e.g. 3D vector types, which is a very common type. I've solved it by allowing the application to inform whether the structure should be treated as if all members are integers or floats/doubles, with the flags asOBJ_APP_CLASS_ALLINTS and asOBJ_APP_CLASS_ALLFLOATS. This obviously doesn't cover all possible combinations, but should cover the most common ones.
In this release I also implemented a sample game that gives a more complex example of how AngelScript can be integrated in a game engine. The same game shows how I do it in my own game engine, but it is just one way of doing it. Perhaps in a future release I'll implement some other ways too.
And finally I'd like to thank Thomas Grip for the contribution of support for metadata on class members in the CScriptBuilder add-on.
2011-08-21 AngelScript 2.21.1
A new version is here. The main novelty in this version is the addition of the object flag asOBJ_ASHANDLE, that will allow the application to register a value type that will behave as a handle. With this I've implemented the add-on CScriptHandle, which is a generic handle type. This type behaves as if it was the base class of all reference types, script classes and application types alike.
Some other important updates include the support for native calling conventions on Win64 with MinGW (Thanks _Vicious_), and the new add-on CSerializer, and finally that the clib has been updated to the latest interface.
The CSerializer add-on allow the application to temporarily store all the variables in a module and then restore them after recompiling the script. Thanks goes to FDsagizi who implemented this add-on.