Blogging

As the first post of the year, I wish you all a great 2015!

This last year was crazy, lot of changes in my Ph.D., several projects, great trips. As a reminder to myself, I will summarize my activities of 2014 relevant to this blog and record the promises of new year`s resolution for 2015.

2014

In April of 2014 I created this blog with 2 things in mind: I wanted to motivate myself to keep a frequency in my Game Dev studies by forcing me to always write a new articles here; and to serve me as a development diary so I could put ideas and thoughts here and after some time, I could revisited all my steps towards game industry. After 9 months, I wrote 39 posts and got more than 11 thousands views. I received some feedback (less than I wanted and more than I expected), via comments here and email. I thank you all for the audience, feedback and discussions.

In the half of the year I finally decided what to do in my Ph.D.. After months of (almost) unfruitful areas, researches and experiments, I decided to move on and research something related to game AI development, but with the requirement to also have something to do with robotics (there is a lot of methods and models fulfill that!). After some weeks of research and lot of readings, I decided to go in the direction of Behavior Trees, once it has some nice successful applications and big support on the game industry and now its being applied on robotics.

In consequence of my developments in the Ph.D. and my studies on Game Dev, I started 2 open source projects: Creatine and Behavior3JS. Creatine is my set of tools to develop games within CreateJS, while Behavior3JS is an implementation of Behavior Trees to JavaScript. I use Creatine to create my games while I use Behavior3JS to games and to my research. B3 received a lot of attention since its release (about 2 months in this moment), it already has 32 stars and 5 forks on github (it is my most-successful project).

Talking about games, I created 3 games for ludum dare but didn’t complete a few others. I’m really happy with my games this year – despite the unfinished ones – they weren’t great games but they have their importance to me. The last game of the year was Baa-Ram-Ewe, which earned the #35 place on the competition (there were more than 2600 submissions), I am really happy with this result and I hope to do better next time.

2015

For this next year, I want to:

  • Publish some papers about BT and machine learning;
  • Update and improve Creatine and Behaivor3JS;
  • Write more than 40 posts here in the blog and receive more than 11000 visits;
  • Write more ludum dare games and finally finish some full game;
  • I plan to work on the game industry, so I decided to learn – really learn – C++.

I thank again for all comments, talks, suggestion and critiques, on this blog, reddit, github and any other mean.

Read more

Following the new milestone of CreateJS, I just released Creatine 0.2.0!

This version has some cool new additions to the library:

  • Tile Maps: now you can load maps created with Tiled by using the new TMXMap. It supports all maps projections of tiles (orthogonal, isometric and staggered) and all type of layers (tile, image and object). Check it out the examples.
  • Jukebox: a helper class to handle music and sound playback. With this class, you can set different volume setting for music and sounds, and play random sounds from a group.
  • Storage: a helper class to handle persistent data using the HTML5 localStorage. With this class you overcome the type limitation in localStorage (it only accept string variables) and , thus, can save and retrieve objects, numbers, arrays, etc.
  • Entity-Component-System: a ultra basic implementation of ECS model, I hope to provide more features in the future.

Moreover, there are some other modifications on the existing features:

  • Sizers now manage scale and registration point properties of children.
  • Fixed an initialization bug present in several transition.
  • A complete update to the class and inheritance model of creatine, following the new style of CreateJS.

Together with this new version, I also published the new website for creatine (the old one http://guineashots.com/creatine now redirects to the new site):

http://creatine.guineashots.com

Right now I’m updating my boilerplate to follow the new releases and to include a new improved architecture.

Read more

This week we finally had the new release of CreateJS, with a lot of changes, starting with the new site and new visual identity! All libraries (EaselJS, PreloadJS, TweenJS and SoundJS) have major updates that improve performance and the architecture.

Some important updates:

New class model with performance improvements:

In the old CreateJS, attributes were defined in the classes prototypes. By moving the definition from prototype to instance, EaselJS could decreases the canvas update time (by stage.update) in more than 2 times (a 100%-150% improvement).

The tick propagation was also improved with a small change: the tick event is reused for all display objects through the propagation of the tick, i.e., the tick event is instantiated only a single time. By avoiding redundant instantiation, the tick propagation has also an improvement of ~100%.

See:

New inheritance model

The inheritance model were updated following the modification of the class model. Now, if you want to inherit some class in CreateJS, you need to use createjs.extend and createjs.promote.

The createjs.extend function set up the prototype and constructor of a new class. The code is pretty simple:

createjs.extend = function(subclass, superclass) {
    function o() { this.constructor = subclass; }
    o.prototype = superclass.prototype;
    return (subclass.prototype = new o());
}

 and this function must be called right after the creation of the new class constructor.

The createjs.promote back up the superclass methods that were overridden. For example, if you create a FlexibleBitmap inheriting from Bitmap and override the method draw, createjs.promote back up the method bitmap draw by creating an alias Bitmap_draw inside the new FlexibleBitmap.

See:

All classes now implement properties for getters and setters

Some changes are pretty straightforward, e.g., Container.getNumChildren() is now replaced by Container.numChildren; but some names have been updated too, e.g., Ticker.getFPS() is now Ticker.framerate. Using properties instead of getters and setters is a good practice, nice to see that on CreateJS.

See:

Other updates

See https://github.com/CreateJS/EaselJS/blob/master/VERSIONS.txt for a full list of changes.

Read more

So, I’m back from USA, where I visited Disney Orlando and Las Vegas.

Orlando is a great and beautiful city, with a lot of lakes and parks. The traffic flows so well, the food is so good (I’m in love for the Irish pub at downtown Disney), Disney is perfect. I’ve spent 7 days in Orlando and I really loved the city.

After that, we went to Vegas, which is kind of disappointing, especially after the greatness of Orlando. The casinos are so decadents, only good if you are looking for sex, cigars, drinks and losing money. On the other hand, Grand Canyon and Flagstaff (a small city near of Grand Canyon) are so cool. The Canyon is awesome, despite the temperature of -6°C and Flagstaff is so cute with all that nice people.

Both Orlando and Vegas have nice RPG stores. The Sci-Fi City in Orlando and the Little Shop of Magic in Vegas, both have great sections of board games. I think I spent more than 200 bucks on them. I bought some nice games, expansions, and dices (a lot of dices). I really recommend both stores.

Finally, we went home at Friday, the black Friday. Man, that is crazy, 32″ televisions for 89$, 60″ televisions for 490$, several kitchen appliance for 5$-10$. How could a man leave USA at black Friday without spend all its money on it? So, I bought a PS4 (for 349$, four times less than in Brazil), Shadow of Mordor (for 25$) and a lot of other little things. Man, Shadow of Mordor… What a game!

I’m back now and I hope to keep posting things here every week.

Note: this weekend will happen the last ludum dare of the year!

Read more