Welcome to IndieZen.org

High quality open source software by IndieZen's software artisans.

Zen Core - scripting framework, plugin system and general C++ library.
Zen Enterprise - enterprise SOA framework.
Zen Engine - high performance 3D game engine client framework.
Zen Spaces - in memory distributed object oriented database.
Zen Studio - integrated game development environment.
Zen Worlds - virtual worlds, online community, and massive multiplayer online game framework.

Reboot PDF Print E-mail
Written by Tony Richards   
Sunday, 12 January 2014 13:37

After 3 years of committing too much time to my day job (only to be screwed over in the end), it's time to start working on my own projects again.

I've moved the Zen Core C++ Library to github (https://github.com/SgtFlame/zen-core).

It's a little out of date, so I wouldn't consider it "production quality" anymore.  It needs to be brought up to speed with the new C++ standard as well as the new boost libraries.

I would like to update the logging so that it can use the new boost logging, and I would also like to enhance the plugin system so that it can use but doesn't require libxml2.  It would be nice if application developers could supply their own configuration system such as a Python / Lua script, or a SQLite database or even an embedded configuration hard-coded in C++.

Following Zen Core, I will be moving Zen Enterprise and Zen Spaces libraries over to github as well.

Zen Enterprise needs to be updated with a more flexible networking system.  I plan to continue using boost asio, and I would like to enhance it so that it can have more network connection styles (like pub/sub, push/pull, etc) much in the same way that zeroMQ has been designed.  I would also like to improve the protocol handling so as to be able to use Google protocol buffers (or whatever the application developer chooses).

Zen Spaces has been completely redesigned in my spare time over the past few months, and I have written a new prototype in Python.

While all of these libraries are useful for games and game development, my focus will be on modernizing enterprise software and software development.

Looking back, I've dedicated too much of my time developing software for other people, trusting that they know what they're doing, only in the end having them decide that they're going to take a different path.  I have written hundreds of thousands of lines of great software, only for it to go to waste and become abandonware.

I may be a bit thick skulled, but I've learned my lesson.  It's time to do my own thing again. 

Last Updated ( Sunday, 12 January 2014 14:12 )
Scripting framework update PDF Print E-mail
Written by Tony Richards   
Tuesday, 05 October 2010 20:25

The Zen Core scripting framework recently got some new updates.

With these new updates, it now directly supports exposing derived classes to script.  If the parent class is exposed to script then the methods on the parent class will be available in the derived class (as should be expected).

While there are still a few caveats, this framework is quickly becoming as useful as Boost.Python, except with the added bonus of supporting multiple scripting languages via the Zen Core plugin system.

Any applications you develop using this framework will be able to take advantage of new languages as they're added to our list of supported languages.

Take a look at the documentation and see how easy it is to use. 

If you have the source code, look at the updates made to Zen/tests/ScriptTest and you'll see a wide variety of examples, including asynchronous handling of events.  It also shows how to take advantage of the new dervied types code.

If you have any questions or comments, feel free to visit our forums and ask questions.




Zen Engine nearing 1.0 PDF Print E-mail
Written by Tony Richards   
Wednesday, 05 May 2010 13:32

If you've been following along with our progress lately, you'll see that we're nearing the completion of Zen Engine frameworks and mostly we're tying up loose ends and preparing for a spectacular series of software and documentation releases.

One key change is we've recently decided to pause development on the "World Builder" level editing project and focus on integrating with Ogitor.  This has allowed us to focus on other things and leverage the talented developers on the Ogitor team.

In the near future we'll be completing the integration of our Game Builder entity editor with Ogitor, starting with import/export of entity designs and eventually moving towards a tighter integration.

We have our first game engine (Indie Game Engine) developed using the Zen Engine framework coming close to public beta testing, and we're extremely excited about other developers working on their own custom game engines. 

All in all, the Zen Engine framework is proving to have a huge potential of saving professional game developers significant time and money.  Starting with a pre-built game engine using the Zen Engine framework, professional game developers have a tool for rapid prototyping a game as quickly as they could with engines like Torque or Unity3d. 

The distinguishing advantage Zen Engine has over most other game engines is our "less is more" attitude and our impressive modular design.

We've paid particular attention to what needs to be done after the prototyping stage.  With Zen Engine, progressing beyond the prototype into the final game has never been easier, giving game developers and designers more time to experiment and more time to create innovative, fun new games.

In the end it all boils down to this... innovative game development, less risk associated with technology, and faster time to market equates to better return on investment.


Last Updated ( Wednesday, 05 May 2010 17:34 )
Quality and Sales.... PDF Print E-mail
Written by Jason Smith   
Monday, 18 January 2010 06:48

    Unless you have been living under a rock or in some wonderful world that we all need to move to you know that those of us in the US are in an economic recession. Even the long rumored recession proof game industry has felt the squeeze. In this article we can see that the game market declined in this past year.


    The economic decline has put a strain on the game development world for professionals and indies alike. As such, there becomes an emphasis on quality. Producing quality games is what has lead to successes like Call of Duty: Modern Warfare 2, which raked in something close to 500 million in cash during week one. Of course, I am not implying that one can easily create such a juggernaut but this is a valid example of what quality can produce.


   So what does this mean? In my opinion, it means that we as developers need to take our time in developing our games. Make sure that what we are releasing is a good game that we are proud to say, “This is my game! I made it and you should play it!”


Then again, I could be completely off the mark, but I don’t think so…


-- Jason 

Last Updated ( Monday, 18 January 2010 06:49 )
FracU Rebooted - Week 5 PDF Print E-mail
Written by Tony Richards   
Tuesday, 22 December 2009 18:12

This week I spent the bulk of the time working with CEGUI.

I integrated the Lua scripting so that I can directly access CEGUI from FracU scripts, but I'm being careful as to not add a dependency to Lua in the common Zen scripts.

I added some functionality to the StateMachine implementation so that it'll handle nested state machines, and then I created a new state machine that handles transitioning through a series of splash screens, and you set it up by defining your own custom splash screen Lua table.  The FracU one looks something like this:

local splashScreens = 
-- State machine to which this splash screen sequence will belong
stateMachine = game,
stateName = "splashScreens",
nextState = "loginScreen",
sequence = {
-- image is the image for the splash screen, can be nil if method is not nil
-- duration is time to display the splash in seconds
-- interruptable is whether or not the
[1] = { image = "FracU.jpg", duration = 5, interruptable = false },
[2] = { image = "gbslogo.jpg", duration = 5, interruptible = true },
[3] = { image = "IndieZen.jpg", duration = 1, interruptible = true }

showMethod = function(state, splashItem)
... this method shows the splash screen
hideMethod =
function(state, splashItem)
-- Clean up in the state's onExit function

onTick =
function (state)
... this method handles fading in / out


Last Updated ( Tuesday, 22 December 2009 18:46 )
More Articles...
« StartPrev1234NextEnd »

Page 1 of 4

Who's Online

We have 5 guests online