Super Mario Bros

Hace unas semanas se celebró el aniversario 25 de Super Mario Bros. Hace unos días, alguien preguntó en StackExchange en qué lenguaje de programación estaba escrito. En Reddit surgieron varios comentarios interesantes:


Hi, I am a NES programmer! It is actually not that hard if you grok manual memory management. The 6502 instruction set is simple (but not at all orthogonal) and the NES has a lot of
hardware registers that do Interesting Things for you. The only serious limitation in my mind is the extremely limited color capabilities of the PPU, the NES’s equivalent of a GPU.

NES in a nutshell: you have 2Kb of onboard RAM. There’s an 8Kb window where your cartridge can patch more in. It can even bankswitch to have different sets of 8Kb. You have a 32Kb program
ROM window and that too can be bankswitched, usually in 8 or 16Kb sections. Graphics have an 8Kb window, two pages of 256 8×8 tiles. The remaining space in the 64Kb memory is various
hardware registers where you do your IO and configuring the graphics and sound generators. There is only one timer available, the TV refresh signal. On an NTSC NES it will raise an
interrupt 60 times a second, and on a PAL one, 50.

El CPU 6502 corría a sólo 1.79Mhz. Las limitaciones técnicas eran grandes. Aún así, Super Mario Bros no fue el mejor juego logrado para el NES. El mejor, en mi opinión, fue tal vez Super Mario Bros 3, una verdadera joya.

Creo que programar con limitaciones es más divertido, aunque no más productivo. En ese sentimiento se inspiran concursos como Java 4k o Sizehack. De vez en cuando es bueno programar por diversión, y sólo por diversión.

Por aquí está un clon de Super Mario Bros escrito en Javascript y HTML:

Me pregunto cuales serán sus requerimientos mínimos.

Humble Indie Bundle

The Humble Indie Bundle es un experimento bien interesante. Varias compañías desarrolladores de videojuegos independientes han decidido vender cinco de sus juegos en un sólo paquete. Lo interesante es los clientes pueden pagar lo que quieran por el pack de cinco juegos. Desde un centavo de dólar hasta el infinito.

Además de eso es interesante ver que los juegos no tienen DRM, se pueden descargar las veces que uno quiera una vez comprados y están disponibles para los tres sistemas operativos más comunes: Windows, Mac OS X y Linux.

Un lado interesante es que el experimento ha dado buenos resultados. En pocos días se ha recaudado más de un millón de dólares. También es interesante ver las estadísticas de ganancias, en donde Linux y Mac OS X tiene una buena tajada. Entre los dos casi se llevan el 50%. Otra cosa curiosa es que el promedio de aporte por sistema operativo es: $14.55 para Linux, 10.99 para Mac OS X y 7.98 para Windows (al momento de escribir esto). Esto es importante porque en cierto modo ayuda a derrumbar el mito que dice que los usuarios de Linux no quieren pagar por el software, excusa usada por muchos vendedores de software para no sacar versiones para Linux. También, por supuesto, se muestra que el mercado de Linux no es tan despreciable como se pensaba.

A mi me parece que está bien pagar por buen software y cobrar por hacerlo. Compré este paquete con gusto. Compraría más buen software para el sistema operativo que uso. Me gusta el software libre pero me molesta que sea difícil imaginar como combinar el cobrar por él y que sea libre. Ya sé que en la teoría se puede, pero en la práctica no parece tan fácil. De todos modos iniciativas como The Humble Indie Bundle parecen una forma de hacer este tipo de cosas. Los juegos ahora los están liberando.

También me gusta escribir software sólo por diversión. Y lo he hecho varias veces. Y muchas cosas las he abandonado. Eso también lo hacen mucho desarrolladores de software libre. Últimamente siento que Linux en el escritorio está en declive. Hay muchas cosas que se han abandonado. Y conozco muchos desarrolladores que se pasaron a Mac. Si hubiera una versión de pago de Ubuntu yo la pagaría si supiera que se está avanzando más.


PyWeek is finished. Unfortunately, I didn’t have enough time for it this year, so I’m almost a DNF. The theme for this year was Robot. My idea ended up being more like an application than a game. I wanted to create an educational environment for teaching programing to children. Something similar to Logo. The idea was to build a game where your could program a small robot. It should be interactive so children could experiment on the fly.

In other words, It should be something like this: A window with a robot and a world, bellow a Python console. The users should be able to write commands in the console and the robot should execute them. The robot should be able to interact with it’s environment and with the user too. Error, warnings, etc, should be given to the programmer in a friendly way. Additionally, there should be various challenges that the programmers should solve. This should be the fun factor for the game.

But, unfortunately, as I said before, I didn’t have more that a couple of hours every day since Thursday, so I’ve failed on most of my objectives, and the only thing I have is a barely working demo. No challenges, no fun, no objects, no cool environment. Any way, I still like the idea, and I will try to continue with this project. I would love to hear more opinions about it.

My final submission was called “PyBotLearn”. You can download it from my PyWeek 6 Entry Page.

Here is a small video of the demo:

A higher resolution video can be downloaded from here

Game bits

Making an Indie MMO
I found the video of Daniel James‘s presentation for the Game Developers Conference Independant Game Summit. Very interesting. I’m impressed to see how Puzzle Pirates was made by only six people. There are also various interesting tips for MMO developers out there.

Igda scholarships
Igda will award 25 scholarships for the Game Developer Conference 2007. It will be in San Francisco on February 18-22.

Open Liero
Liero was one of my favorite freeware games of all times. I was very pleased to see that there is an open source implementation around similar to what OpenTTD is for Transport Tycoon Deluxe.

Urban Terror
These days, I can be found playing Urban Terror, a tactical like Counter Strike. Urban Terror is based on Quake III Arena and is completely open source. My nick name is Kira. Yes is because of Death Note.

PyWeek Ended

PyWeek is over. It was absolutelly fun!. My final entry is not what I would call a finished product, but it’s not bad. A couple of hours before the challenge end, the server went down. We had to send a md5 sum of our final entries to one of the event’s coordinators via e-mail.

Video of my game:

My code and more detailed comments in my PyWeek Entry Page.


Tomorrow, I’m going to participate in the fifth edition of PyWeek. PyWeek is a challenge in which participants must develop a video game in one week using Python. I like the idea because it brings a possibility to finish a project and have some fun by the way.

Some of the games created during PyWeek are really awesome. It’s amazing the fact that they were made in only one week. My favorite games of previous editions of PyWeek are:

I also like the competition and challenge feeling that you can breath in PyWeek.s

It’s possible to participate in two categories: Individual and Team. This time I am going to participate as Individual. I am thinking in use PyGame only. Even when some people are talking about Panda3D. I also want to use Blender to create pre-rendered sprites. I have been learning it secretly for a while. The result has been exactly what I expected: I suck as a graphic artist. My models are absolutely ugly, but at least I can do something for a game. By the way, now I prefer Blender to Wings3D for 3D modelling.

Screenshots of my attempt to model an aircraft with Blender. I also tried some kind of cell-shading or toon-shading redering:

If I suck with Blender. I prefer not even talk about my talent with sounds and music.

See you in one (py)week!