This week I made some contributions to EaselJS project. These contributions were simple pull requests to the official repository, but I’ve never did such things on Github or other version control systems, so it was a bit confusing. This post just register the steps I took to do this.

1. Create a fork of the project you want to contribute. This can be made on github interface:


2. Clone the forked repository, for example:

git clone<username>/EaselJS.git

3. Create a new branch to make the changes. A branch is an isolated version of the project which will contain all modifications you made.

git checkout -b <branch_name>

4. Make the changes and commit it:

git add -A

git commit -m “<description>”

5. Push the changes to your forked project:

git push origin <branch_name>

6. Pull request the branch to the official repository. In the Github interface, all branches will created will be highlighted on the page of the forked repository together with a “Pull Request” button. Just press this button and send it.

You can send multiple pull requests, just adding new branches.

Read more

In my opinion, knowing the tools you work and knowing how to set them up to operate together is an important step to keep yourself productive, efficient and mentally healthy =). In this post I will talk a little bit about the tools I am currently using to develop my games.

I’m sharing the essential items of toolbelt and I hope some of the programs I cite here can be useful for you. Notice that, all tools of this list can be used in any OS, such as Windows, Linux and Mac.

Programming Tools

As a programmer, I think the core of my work tools is Sublime Text 3, a powerful, beautiful, fast, elegant, awesome, demigod editor that I use to write code, texts, notes, and anything else. Sublime has several built-in addictive features that make you love the editor, such as the multi selection, the distraction free mode, the command palette and the plugin system. Sublime Text 3 costs USD $70, however, it is free for evaluation (you will see a notification to buy it, occasionally, but it is far from being a problem).

With Package Control, you can easily add new plugins to Sublime, just press ctrl+shift+p to open the command palette, chose the install package option and select the plugin you want to install. My must-have plugins:

  • Dictionaries: it adds a lot of dictionaries (press F6 to use the spell check). This package is pretty useful for people who write common texts, documentation, code comments, in English or other 28 languages. In fact, I am writing this post in Sublime right now and using this plugin.
  • Nettuts + Fetch: an awesome plugin that let you add remote files or complete boilerplates to your project folder. Just press ctrl+shift+p to open the command palette, type “fetch” and select the target file or package you want and they will be automatically added to your project. It is highly recommended, specially if you have a common structure that you use in several projects. It is also useful to add common libraries automatically, such as jQuery or normalize.css.
  • Sidebar Enhancements: adds a lot of options to the sidebar menu (when you press the right mouse button on sidebar files or folder). With this plugin you can delete, open, run and copy files and folder, and much more. It is a must have that can be useful for all cases.

I use the default theme, Monokai, which can be seen at the image below, but you can add more themes with package control. I made just a few changes on the default configuration: I have added two rulers lines to the columns 0 and 80, and set the translation of tabs to spaces to true.

Sublime Text 3 - Screenshot

I am a Python guy, and I use this language to help me in practically any project or task that I do, such as to create a simple web server to run my CreateJS projects. I am using Python 2.7 provided by Anaconda. Anaconda is a super package for scientific computing which includes a python distribution within a lot of useful libraries, such as Numpy, Scipy, Matplotlib, and Flask.

Flask is a Python micro-framework for web development that I use to create simple web servers when I need one. This is the case for several HTML5 game engines, such as the CreateJS. For example, you can create a basic web server with this:

from flask import Flask
from flask import render_template
app = Flask(__name__)
def index():
    return render_template('index.html')
if __name__ == "__main__":, port=5051)

Image Editing

For image editing I basically use Inkscape and Gimp, two powerful open source programs that some people may hate, but I love them.

Inkscape is a vector graphics editor similar to Corel Draw or Illustrator, and uses the Scalable Vector Graphics (SVG) format natively. Inkscape has a lot of features and an intuitive interface, great for noobies and pros.

GIMP is an image editor that replaces the Photoshop. With GIMP you can use plugins, brushes, patterns and other components that were originally destined to Photoshop, without spend any money. It is constantly updated by community and also has a lot of features and an intuitive interface.

Audio Editing

At this moment, I don’t have any tool for create musics or sound effects, but for general audio edition I use Audacity. I can’t really say anything about Audacity because I rarely use it and when I do, it is just for simple tasks.

Other Tools

Git is my choice of version control system. It is easy to use and hard to messing things up. I use Github to host my open projects and Bitbucket for my private ones.

Dropbox is essential, sometimes I use three different computers and I don’t want to sync my code with Git before I finish some feature of fix some bug. All my projects are in the dropbox folder, thus, I can save a file in my Desktop and open it in my Notebook without any effort from my part.

Finally, I use Firefox and Chrome to test my web games. I don’t really care about IE.

Read more

Work For It

For a long time I’ve been reading several discussions, tutorials and posts trying to answer the question “how do I start to develop games?”. In general, the answer is “study hard, develop something, study harder, develop more, …”.

I believe this is true a even more, I think the process “study, develop” has no end. Regardless of your level of expertise, there are always more things to learn, more ideas to develop, more problems to come, more solutions to think.

Currently, I’m a researcher in artificial intelligence field and I can say I’m proficient in the programing languages that I work and the fundamental concepts of computing theory. In my free time, I’m aspiring to be game developer.

I have some knowledge about several aspects of the game development and I also have some projects in my curriculum. My goal now is to transform a hobbie into a profession and I want to register this transmutation process in this blog.

I chose to start the “serious” development with simple HTML5 games. I want to work in all aspects of a game, including the design of rules and gameplay, programming, graphics, musics and sound effects, etc. I hope to improve my abilities over time, making games more and more interesting and complex.

Read more