Hi there guys so its finally here a new version of Genome2D. First thing that comes to your mind is probably why the version number 0.9.0? Wasn’t the last one 0.3.5? Yep it was but since Genome2D is becaming more clear and polished I decided to go for the final 1.0 version. So why didn’t you, you ask. Simple this version is not much about new features as it is about refactoring, polishing, class structure changes etc. I just want all of you out there that use Genome2D to try it out if there are any major flaws with the structure and API, if I get a nod from most of the guys I am talking with the version 1.0 may come very soon. So this is just a preemptive versioning step from my side just to be safe there isn’t anything major I overlooked when it comes to API structure.

Lets take a closer look at what changed, as I said this is not much about new features as there are hardly any as it is about refactoring and removal/change of some of the API.

There is only single renderer now and that is Stage3D
As I already said the viability of custom software fallback has diminished with AIR 3.2 and especially Adobe pushing for Stage3D to support older drivers. When we count into the incredible overhead of managing and implementating my own custom software renderer I think it was a no brainer. With it removed I can fully focus on new features you people are asking for without worrying about implementation apects of software renderer. This also means I was able to get rid of some of the abstract layers in the engine, it has not much of an impact on performance but it sure simplified things.

Linked lists everywhere
Even though I used linked lists in previous versions as well for best performance possible there were some redundant array references used as well for functionality that I deemed necessary back then. For example child nodes are in a linked list but as I wanted to have getChildAt/setChildIndex they would be really slow so there was an array reference for childs created as well. This introduced overhead in other areas as anytime you manipulated a list you worked on both structures. I finally decided to get rid of the arrays. This means you have no longer access to familiar api as getChildAt/setChildIndex but I don’t find them necessary at all. For iteration purposes you should work directly on a list which is way faster than getChildAt and scenarios where you would use setChildIndex can almost always be implemented using swapChildren. For unique cases like sorting I decided to implement them natively, so now you can call native Genome2D sorting methods to sort your children in a node based on X,Y or a custom userData property. These sorts are ultra fast and were designed to work with linked lists, way faster than native flash array sort. ;)

What the hell are these names.
First thing that you may notice is that package and class names were changed. Now everything is in com.genome2d package instead of my old com.flash-core for more convenience but whats more the G2D prefix was substituted for simple G as many people requested this.

Factories are the future.
Next refactoring step was to move most of the constructing methods outside of their classes as I found them to be chaotic. New factory classes were created that contain these, it simply brings peace to my mind and its way more understandable. There are now three factories GTextureFactory, GTextureAtlasFactory and GNodeFactory which you will work with. Its recommended to work with factory even if you can use constructor directly such as new GNode() should be GNodeFactory.createNode() as there may be some dependency involved in the future so it may spare you headache and refactoring issues if you stick to using factories now.

I had to mention this here, its a new domain I activated that will be specially dedicated for the Genome2D framework. At the moment it still redirects to my blog but there will be just framework related information and stuff in near future. As many of you know I hate all this non-coding stuff and if someone volunteers with examples, documentation, tutorials or pretty much anything I am all for it.

Yes I know many asked this and I didn’t have final answer but I do now. Genome2D will be open source, the sources will come with the 1.0 version. This is crucial to some of you out there that port games to my framework and as I promised this I will keep my promise. Hopefully we will see more and more awesome games using it.

New examples are on GitHub: https://github.com/pshtif/Genome2D
Latest version of the library is there as well: https://github.com/pshtif/Genome2D/downloads
ASDoc documentation can be found here: http://www.genome2d.com/docs/

If anyone has any questions or need to ask something specific about their project they are maybe thinking about porting to G2D I am all ears and always willing to help. Many people did so and hopefully found me pleasant and helpful so don’t worry. :) This communication is a two way street and many changes may come from such discussions. Also please if you are porting your game or creating a new game using Genome2D let me know even if you don’t need any help, maybe we can get some gallery going ;)

Thanks to all of you that are providing feedback through mail, forum or skype. And even more thanks to all the donators its nice to feel appreciated ;)