2010.05.20

Started rencently to play with Unity 3D, a IDE/Plataform to develop games. I’ve heard about it because they recently decided that the indie version to be free. And because this version is quite similar to the Pro version and the Pro version is affordable, I decided to give it a try.

I am really impressed with the package. It is solid in features but what impressed me most is the easy user interface. Generally, programs that strive to be easy to use also make things too restrictive. Unity 3D is not one of them. It is a super intuitive IDE but also can be changed thru code.

As I discussed before, the competition of engines should be irrelevant to game makers because we have a lot data demonstrating that while the technology might help, the actual implementation is what matters. Good games with old/bad engines and Bad games with state of the art engines are quite common.

The main reason to choose one is… current knowledge. Learning things all over again is costy, and Unity address this by adopting several standard technologies. For scripting, you can use C# (very close to Java and C++), JavaScript or Boo. For 3D models, it imports the most used formats (3DS, Max, Ma, Blender…). The same goes for 2D (which also includes importing Photoshop native files), sound and music. All that means that your workflow and suite of programs will remain basically the same.

With the indie version being free, a huge increase of documentation and community support is expected. The same for professional assistance. Im happy to move from Torque (which uses several conceptual dogmas that Ive never liked) to Unity.

PS: with the web player, its possible to create games for web pages just like Flash… take a look in the demos.

2010.04.03

After creating several sites using several CMSes, one single thing still annoys me: the lack of a proper export settings feature. Puting a local testing site in the official online server is always a nightmare, since we have basically try one of the options:

  • Copy the whole database: it also copy several testing data we used.
  • Step-by-step replication: After 3 days, you will still discovery several options that were not copyed
  • Manually select DB table-by-table to copy: unless you really know of are you doing, its quite crazy

In Drupal world, one of my most admired companies, Development Seed, created both Features and Strong Arm that try to address this, but the lack of broad and ubiquitous support we still feel that we will miss something.

There are 3 types of data that a computer program might have:

  • External: the spreadsheet for Excel, html to a browser, the image for Photoshop… its the reason why the program exists.
  • Internal: the data that makes the program works. It’s the settings.
  • Temporary: stuff that the program creates in order to gain performance. It, by definition, dont need to be backed up because the program can recreate everything

Every program that is a platform should provide a Settings API. It would help on 4 big scenarios

Local / Production

There are several situations that we need to maintain a testing site for development new features without testing in the really production site. But time to time, we are satisfied with the test results and we and to apply the modification into the production site. For some business, like 3rd party site development, its the daily job, so its a must to make this workflow faster and painless.

Debug

After installing several plugins, its each to get a very unstable site, because they are changing same data. It would be much easier to monitor modifications and find solutions. A settings comparison tool would be great, so we could see what were overwritten.

Distribution / Template

Platforms, by definition, allow us to build stuff over it. But quite often projects are similar. So why not create a template for other people to use it? For a site builder like Drupal, we could create eCommerce, Blog, Forum templates for a easy deployment. Its an extraordinary feature for new comers.

Stack

If the program is settings aware, a good extra feature is to apply in a stack. Its a similar concept of CSS, cascading settings based on specific variables. Imagine, for example, a site about football teams. While the site has a main theme, each team’s page can have one and the users can have a personal one. We could enabled this cascaded settings for each settings.

Multi dimensional settings

If we have different content types in a site (ex: static pages, forum pages and news pages), we could have a page to change all settings related to each content type and have a page to change a specific settings of all content types.

As we can see, settings is a very important part in a program. We have to think it with more care to leverage its potentials.

2010.03.23

The idea of working all alone seems pretty tempting: nothing to distract your thinking process, no stress from the jerk on the cell phone. Just quiet.

Too quiet.

Sometimes my mind gets distracted by the silence – I find myself wondering where everyone is. So, like some other people who work from home I put on the television. Sometimes that does the trick, but at other times I just really wish there were some people around. Not co-workers, not people I know, but just (quiet) people as background noise. I worked from a café the other day and I got so many things done, so many ideas just popped up in my mind. The ambient noise was a catalyst of sorts.

What about you? Are you more productive at home, working alone, or when you’re around others?

2010.03.05

I could not (but i really wanted) play Heavy Rain. The core feature is the very flexible story. Players can end up with a very different experience. Its focused in the storytelling and reviews say that the lack of game over… the story always progresses.

Lack of game over? Where is the challenge?_ ;Ok, here we go: Heavy Rain is a game? A more profound question: what is a game? That is the difference between a game and a puzzle? Or a simple challenge?

So lets define:

  • movies and books are not games. Games are interactive
  • jigsaws and puzzles are not games. Games must have multiple players;(even if they have different role). Not that we could assume that a AI could be considered a player as well
  • racing and swimming are not games. Gamers must interfere in the performance;of the other players
  • toys and sandboxes are not games. Games must have rules and objectives

So, games should be interactive, multiplayer, competitive, defined by rules and they have a goal. Clark Abt defines _“A game is an activity among two or more independent decision-makers seeking to achieve their objectives in some limiting context”.

The curious thing is that if we take this concept to actual games, mane famous video games are not… games. Sim City, The Sims, Monkey Island, City Ville, Portal, World of Goo and Heavy Rain and several others fail in at least one aspect that makes a game.

Knowing this is a good way to correct position products against each other.

2010.01.15

Getting Things Done (GTD) is an organizational method created by David Allen, described in a book of the same name. The Getting Things Done method rests on the principle that a person needs to move tasks out of the mind by recording them externally. That way, the mind is freed from the job of remembering everything that needs to be done, and can concentrate on actually performing those tasks.

I read the book and love it. It balances between theoretical reasoning and practical attitudes. It says explicitly that it is not about a computer program, or a special type of note book. You are free to use any system you want. Webmail, Outlook, notebook, folders, color tags… you decide. But the book is smart enough to give you hints about using them, just for the sake of starting soon and being practical.

It at least opens the mind for being more productive in our ordinary life. Just dont go crazy to think about it all the time because, paradoxically, it can be really nonproductive.

PS: I recommend you to strive to use for 3 months, forcing yourself. Its easy to start but because it requires a new mindset, keeping using the system harder and harder with time.

2009.12.30

2009 was a great year. I had the opportunity to watch/play/read/listen several great games, films and books. This list is what I could remember.

Games

Most, but not all, I finished

  1. Braid – PC
  2. Broken Sword: Shadow of the Templars – Wii
  3. The Beatles: Rockband – Wii
  4. Dawn of Discovery – Wii
  5. de Blob – Wii
  6. Dragon Age – PC
  7. Drakensang: The Dark Eye – PC
  8. Machinarium – PC
  9. Neverhood – PC
  10. Planescape Torment – PC
  11. Race Driver: GRID – PC
  12. Torchlight – PC
  13. The Witcher – PC

Movies

  • 5cm Per Second
  • Akira
  • Amadeus
  • Army of Shadows
  • Citizen Kane
  • Cowboy Bebop
  • The Discreet Charm of the Bourgeoisie
  • Doctor Zhivago
  • Drag Me to Hell
  • Ghost in The Shell
  • The Hangover
  • Helvetica
  • Home
  • The Hurt Locker
  • Lady Vengeance
  • The Manchurian Candidate
  • Oldboy
  • The Sinning
  • Star Trek
  • Sympathy for Mr. Vengeance
  • Tokyo Godfathers
  • Up

Books

Some of them I used the audiobook

  • David Allen – Getting Things Done
  • David Allen – Making It All Work
  • Malcolm Gladwell – The Tipping Point
  • Malcolm Gladwell – Blink
  • Malcolm Gladwell – Outliers
  • Peter F. Hamilton – Fallen Dragon
  • Peter F. Hamilton – The Dreaming Void
  • Peter F. Hamilton – The Temporal Void
  • Raymond Kurzweil – The Age of Spiritual Machines
  • Stephen King – The Dark Tower: The Waste Lands
  • Stephen King – The Dark Tower: Wizard and Glass
  • Umberto Eco – Foucault’s Pendulum

And 2010 might be even better.

2009.08.11

Creating GUI is no easy task. But creating GUI creators is a even more complex task. Almost a nightmare. But the long road walked by GUI creation programs, we already know somethings that are good and somethings that are bad.

Drag and drop

Quite a long time, desktop IDE’s acknowledged that letting developers to create GUI with some kind of drag and drop interface were critical. That were because GUI were less and less created by programmers but more and more by designers, that have little knowledge and patience to deal with programming code. It also facilitate the adoption by beginners.

Designer-driven script

A too designer/beginner driven interface for creating GUI might also not be a good choice. The whole customization and generalization possible by programming is lost. Its too case-by-case development. Its not cost efficient. That’s why a middle term is needed. Some kind a language that is easy enough for designers but programmable. Drupal CMS uses the Form API, a PHP array that will be used to create HTML forms. Its quite easy to be used by newbies. I heard that QT is preparing some custom language for creating their UI too.

UPDATE (2010-10-03): Qt revealed QML.

“Lorem ipsum/123” preview

Most GUI element have a fixed set of parameters. But sometimes the GUI should be generated on the fly. Developing GUI like this is very try-and-error. To facilitate the creating phase, its important to be possible to see it working with some generic data.

Widget or data separation

The UI 101 rule is to separate the data to the layout. But it is important to let the users to chance any of them. For example, the user can enter his birth year by a textfield or a dropdown list, or some nice JS calendar. This example show how to change the widget, the GUI element. However, the user might need to change the data type. If the birth year was originally text, the user might decide to change it to integer number. The challenge here is to convert saved data. But for most cases, it is feasible.

Context

Developers of both desktop and internet applications are experiencing a quite interesting phenomenon: the same application must have several outputs, like netbook version or mobile sites. With the rise of HTML5, sites now might need multiple different outputs. Also, we must have different outputs when we are creating, viewing or update content. The concept of multiple contexts might be anticipated by the GUI creators.

Custom data structures

Integers, float numbers, strings… all developers know these data types. But they know that in some cases it is needed a more complex data types; combination of primitives. Some programming languages have structures and objects to address this idea. But GUIs can also be the combination of multiple primitives. Imagine a “password_checker” GUI element that is, in fact, two form fields that will check if the user typed the password correctly or an “address” element that is in fact a group of *country, province and city* fields. Users might be enabled to create and edit these type of custom data structures.

UPDATE (2009-10-05): I just saw a issue posted against CCK module called State of the multigroup module. It has close relationship with this post. Curious is that it is more a hack than a core idea.

Woman filling out form, close-up
2009.05.23

Views is the most popular module on Drupal. Its not a coincidence: the ability to create custom lists on any Management System is critical. Views goes even beyond by creating a display API and enabling export some options to the end users.

I’m in fact really puzzled by the fact the Drupal next version, 7, does not integrate it into core. It IS a core module, by any perspective. Several administration pages should be designed as Views from the beginning and the whole DB schema data also should be redesigned to implement integration with that.

But I still see some features that Views could still implement.

The first is external data sources. Today we know that search huge amount of data is no easy task and Drupal core does it poorly. That’s why external programs like Solr, Sphinx are becoming more and more popular among Drupal masters. Views yet does a very little integration with those tools. The whole …8220;query builder" should redesigned to control other data sources. Ideally, it could search on any known data structure. By plugins, it would be possible to search external feeds directly, or some web services' data, like Twitter, Flickr and Facebook without replicating the whole data locally.

I hope the newly created version 3 implements such abstraction.

2009.05.07

200 megabytes is the size of the entire game. And yet, probably one of the most surprisingly good games in some time.

Braid tells the story of Tim and his journey to find the princess. Its a basic platform game, with the controls just like old Mario, except one thing: you can control time. By pressing a button (and further in game, by some other situations) you can turn back time. Even after you died. If the controls are similar to the famous plumber, the game dymaics is completely different. It is a puzzle game.

Braid is an action-puzzle game about manipulating the flow of time. To rescue a princess, the player journeys through a series of worlds; in each world, time behaves differently. The game provides a mind-expanding experience that is filler-free, treating the player’s time as precious.

The puzzles are very well designed and the difficult progression is a state of art. Considering that it is a one-man work (Jonathan Blow. did it alone, except for the music, which he licensed, and graphics, which he hired a guy for the job), it’s amazingly good.

My grade: 9.50 Metacritic: 93

2009.04.12

Jesus just resurrected.

The bunny brings us chocolates. Chocolate eggs in fact.

Its birthday of: the writer Tom Clancy, my cousin André Massa and my uncle Alexandre, F1 team manager Flavio Briatore and – god was right on this one – the wonderful actress Jennifer Morrison.

Also is the day of twin saint brothers Cosmas and Damian.

Happy Easter for everyone