Sirrf version 0.2.1 released!

0.2.1 is here, 9 days later the simple irrlicht framework team re-emerges with a feature and bug release. Some bugs have been fixed and some new features introduced, the changes include :

  • Script-side GameStates
    It is now truely possible to derive from the GameState class (through CGameState) in scripts. A bug in previous versions prevented this, but this bug has now been fixed.
  • Script-side Components
    EntityComponent can be derived from script-side (through CEntityComponent), classes in script can now create components and register them with entities from script or engine side.
  • Script-side Events
    The event system is now integrated into the script engine. Script-side classes can derive from IHasSlots and can register, connect and disconnect from slot events.
  • Important Bug Fixes:
    • Construction of entity components with parent is now relatively safe. If you are not sure whether your component has a parent, check it after construction. If the component has no parent, destroy it as quickly as possible
    • AssetProcessors on windows were never loading assets unless the files were all lowercase, restrictions were irrlicht related but solved.
    • Minor bug fixes with script side things, Scolor fixes, asset groups on entities and much much more.

Useful links
SourceForge.net page – http://sourceforge.net/projects/sirrf
Downloads – http://sourceforge.net/projects/sirrf/files/ | http://www.ohloh.net/p/sirrf/download?package=Sirrf
Documentation – API | Tutorials

Sirrf version 0.2.0 released!

The latest release of Sirrf, the Simple Irrlicht Framework, version 0.2.0, is now available for download. In the two months since the previous release a lot of changes have taken place. These changes range from small API changes to major feature additions. The most noticeable changes include:

  • Asset Management
    The biggest new feature is asset management. Assets are managed by the AssetManager class. This manager manages so-called asset groups, which represent a collection of assets (meshes, textures, etc). These assets are retrieved from a directory with the appropriate directory structure. In turn the found assets are processed by asset processors. And at the end of the road, the user can use these assets without having to deal with paths. Furthermore asset management makes it possible to reload all assets in realtime, with direct results on the current scene. Reloading assets is as simple as one function call.
  • XML-based Entity files
    It is now possible to load data concerning entities and their components from XML-files. This means that you can now define a scene through XML-files.
  • Local Event System
    As of version 0.2.0 a HasEvents class, which provides the base for a local event system, is available. The availability of local event systems makes the entire framework more performant. Currently the HasEvents class is used by entities and asset groups.
  • Microsoft Visual C++ 2008 support
    Version 0.2.0 is the first release that officialy supports Microsoft Visual C++ 2008. This should make it easier to set up Sirrf-based projects accros multiple platforms.

See the change log for more information regarding the changes in Sirrf version 0.2.0.

This is not the end of Sirrf’s development, though. Sirrf’s development will continue and Sirrf will undoubtely become even better in the future. And you, as a Sirrf user, as a member of the Irrlicht community, can help us improve the framework. This can be done by contributing code to the project, but also by testing the framework. Either way, we hope that Sirrf will be of use.

Useful links
SourceForge.net page – http://sourceforge.net/projects/sirrf
Downloads – http://sourceforge.net/projects/sirrf/files/ | http://www.ohloh.net/p/sirrf/download?package=Sirrf

Sirrf version 0.1.1 released!

It is only two weeks ago since the first official version of Sirrf, the Simple Irrlicht Framework, was released. But now it is already time for the next release: 0.1.1. In comparison to the previous release, this new release adds few new features. Yet the new release can be considered as an important one. Sirrf 0.1.1 brings an improved scripting architecture; all AngelScript binding code has been moved into its own dedicated directory. Not only does this tidy up the code, but it also to remove scripting quite easily (if desired). This has become even easier with the addition of compilation flags which can be used to easily enable/disable certain features of the framework. Furthermore the have been various small bug fixes and other improvements. See the change log for more information.

Useful links
SourceForge.net page – http://sourceforge.net/projects/sirrf
Downloads – http://sourceforge.net/project/showfiles.php?group_id=260711 | http://www.ohloh.net/p/sirrf/download?package=Sirrf

Sirrf version 0.1.0 released!

Today the first official version of Sirrf, the Simple Irrlicht Framework, has been released. After two months of steady development Sirrf has finally reached the initial goals of Sirrf 0.1.0: being an extensive, but simple open source framework to enable rapid game development. In its current state Sirrf is able to do exactly that. That’s also the reason why Sirrf has jumped directly from pre-alpha status to beta status.

But what can Sirrf do for you? In it’s current state Sirrf offers game logic, graphics, scripting and sound control. Some noticeable features are:

  • Data Store
    The Data Store allows you to store primitive value types such as integers, floats and doubles in a type-independent format. These variables can be accessed from anywhere within the framework, from both native and interpreted code, through the DataStore and DataStack classes.
  • Entity Management
    In Sirrf entities are component-oriented. The idea behind Component Oriented Entities is to make entities data-driven. In order to do this the functionalities are split in various individual components. As a result an entity is in fact nothing more than a collection of components. So, what an entity represents, is defined by its components. Sirrf currently offers various components in the fields of graphics and sound. Furthermore Sirrf also provides an Entity Manager which should be seen as the central interface point to all entity related issues.
  • Event Management
    Sirrf’s event management is build upon sigslot. This means that Sirrf follows an observer model where objects have to subscribe to an event if they want to react to that event. Currently observers can subscribe to game logic events, input events (passed from Irrlicht) and GUI events (again, passed from Irrlicht).
  • Game Management
    The Game Manager performs generic game initialization and deinitialization. It also provides functions to access sub-systems of the framework, such as the Event Manager and the Entity Manager. It’s main function, though, is to control the flow of the game through game state management. This class provides various features to this end.
  • Scripting
    Sirrf is almost completely accessible through AngelScript, a free and open source scripting language. AngelScript allows users to extend applications on run-time using scripts that follow a C/C++ like syntax. Furthermore it’s easy to extend Sirrf’s AngelScript bindings even further.

You might be wondering, though, if Sirrf is really something for you. It’s obvious that Sirrf is ideal for newcomers to Irrlicht and game development, but Sirrf should also be useful for experts. Especially now experts are more than welcome as Sirrf is still in beta status.

In the coming time focus will lie primarily at adding additional documentation. This will be an crucial step to make the framework more accessible to newcomers. And of course Sirrf will also be extended with new features.

Useful links
Development Hub – http://sourceforge.net/projects/sirrf
Downloads – https://sourceforge.net/project/showfiles.php?group_id=260711

Sirrf – Simple Irrlicht Framework (Help Wanted)

Team name

The Sirrf Project

Project name

Sirrf – Simple Irrlicht Framework

Brief description

Sirrf, the Simple Irrlicht Framework, is an extensive, but open source and simple framework for rapid game development. Sirrf provides end-users a game skeleton which implements concepts such as states, component-based entities and a datastore. Newer hobbyist game developers will probably benefit most from the project, but hopefully Sirrf will also be useful for experienced developers.

Target aim

Long term

Making a game isn’t a simple task. The goal of the Sirrf project is to create an extensive, but simple framework to enable rapid game development. Furthermore, Sirrf is aimed for as broad of a target audience as possible. Sirrf hopes to accomplish this by maintaining a cross-platform nature and a lack of genre specialization. Additionally, the framework is not-for-profit and open source, licensed under the zlib/libpng license.

Short term

At the moment the main priority is to finish the core, which will form the base for future releases. The first release is expected after Irrlicht 1.6 and AngelScript 2.17.0 are released.

Compensation

Sirrf is open to donations, but this doesn’t guarantee regular financial compensation. So expect to work largely without financial compensation.

Technology

There are no requirements for developers to use specific tools; developers are free to choose their own tools. Please note that Sirrf currently uses the following languages and APIs:

Programming Language: C++
Scripting Language: AngelScript
Rendering: Irrlicht
Sound: SFML-Audio

Talent needed

C++ Programmers

Sirrf is looking for additional programmers. Moderate knowledge of C++ is required. Knowledge of other components, such as AngelScript and Irrlicht, is preferred. You’ll work with other programmers over the SVN of Sirrf. As programmer you’ll be working on multiple different areas of the code, but it’s possible to specialize on one part of the code. Additional programmers on the following topics would be much appreciated:

- Core Development (graphics, scripting, I/O)
- Physics

Windows and Mac OSX Maintainers

Sirrf is currently only supported on Linux; maintainers for Windows and Mac OSX are needed.

Team structure

Michael Bartsch

In the past I’ve worked on several projects. The smaller projects nearly always involved some implementation of Irrlicht. My bigger projects, however, are mostly unrelated to Irrlicht. My latest project was the Aia-project, a project with the goal to create a small artificial intelligent robot. And before that I worked on Entwined Worlds, a 2D Action-RPG, that has never been released. Furthermore, I’m one of the editors of .simplicity.

Contact Information

Contact me via SourceForge.

Additional Information

Links

Development Hub – http://apps.sourceforge.net/trac/sirrf/
SourceForge Project Page – http://sf.net/projects/sirrf/
Subversion Repository – http://sirrf.svn.sourceforge.net/viewvc/sirrf/

STF Utility (updated!)

The SSS STF (a cool new format for storing data with multiple levels but still > XML, more info here) parser is almost finished. I’m trying to simplify it up as we speak. C++ Templates sure can be frustrating! “/me twitches with his eyes.”

So the parser was working, but it didn’t utilize C++ all the way. I’m trying to reduce the code and thus ease further development and maintainability.

Some hours later…

It is finished! As far as I can tell anyway.  It has a nice example app with it, here’s a (now already dated) sneak peek:

    prettyprint("Welcome to the SSS example app");
cout
< < "This application shows how easy it is to use SSS.\n"
<< "STF is a \"new\" way to store leveled data, just as XML can do, for example.\n"
<< "The format looks like a C(++) struct, which we think is easier to read than XML.\n"
<< "Each :{ is a node, a node has other nodes and values. The first node is unnamed.\n"
<< endl;

So what are you waiting for? Grab the source with example app from the SourceForge page (either checkout from the SVN or select “Browse SVN” -> “Download GNU tarball” (all the way down) ), and use this neat alternative to XML! More information after the break.

Read the rest of this entry »

Component Oriented Entities – Updated (and some more…)

The code I posted in the article Component Oriented Entities has been updated. The code in that article contained some documentation mistakes. Thanks to Nick these mistakes have been corrected. Besides that I’ve also added some new methods (Entity::remove*) which were somehow forgotten in the first implementation. And of course the code has also been slightly improved. Unfortunately the Event Management part of the implementation still hasn’t been included. Still I would like to encourage people who are using the code or parts of it to update their own code.

Also, a sneak peek on what I’m currently working on.

Read the rest of this entry »

Component Oriented Entities

Recently I started working at a game framework. The idea is to create a reusable framework that can be used across multiple platforms and libraries (I.e. Irrlicht, OGRE, SDL). Myself, I already have some experience with game programming (Entwined Worlds). However, all my previous game implementations were based upon the traditional deep hierarchy approach. At first sight this seems like a good idea, but I noticed that this approach always leads to very specialized entities. The true problem with this is that those entities often share various functionalities. And in order to prevent rewriting the same code over and over again, these functionalities are often put in a derived class from the base entity class. And the specialized entities then inherit from that class. The problem should become clear now: for every set of shared functionalities the programmer has to inherit from the base class (or maybe even an derived class). This can result in a gigantic unmaintainable tree of entities. Luckily, there is another approach called Component Oriented Entities.

The idea behind Component Oriented Entities is to make entities data-driven. In order to do this the functionalities are split in various individual components. As a result an entity is in fact nothing more than a collection of components. An added advantage is the ability to describe these components (and thus the entities) in XML or a similar mark-up language.

Yesterday I actually had a discussion with Nick about Component Oriented Entities. Initially he disagreed with me as I had some trouble explaining the “dangers” of the blob anti-pattern (a huge single class with a large amount of complex functionality). Later on, he agreed with me, but he also pointed out some things to keep in mind. One of those things was the implementation. And I really agree with that as these kind of things stand or fall based upon the implementation. Which brings me to my own implementation of Component Oriented Entities. Please note that all of the following code has been placed in the public domain and that I’ll take no responsibility or liability of any kind for any use that you may make of this code.

Read the rest of this entry »