Herramientas para el Indie

Siguiendo en la línea del artículo sobre motores para el indie haremos un repaso a algunas herramientas muy útiles para el programador indie que además son gratuítas o en el peor de los casos, baratas. Si estáis más interesados en herramientas para grafistas os recomiendo este otro artículo de la antigua Edevi Magazine.

Source Version Control

Aunque todavía queden algunos programadores que se resisten a hacer uso de programas de control de versiones de código la verdad es que esto aporta grandes ventajas aún cuando se trabaja en equipos reducidos. Yo personalmente trabajo sólo y hago uso de ello, tanto para código como para otros recursos, y no en pocas ocasiones me ha salvado la vida. Sincronización vía Internet del mismo código en varios ordenadores, creación de branches para crear versiones derivadas o experimentales, tags para etiquetar revisiones clave (Release 1.0, Beta pública, etc.), posibilidad de deshacer cambios o volver a una versión antigua de un fichero… los beneficios son muchos, y un script que zipee el código de un proyecto y lo guarde en una carpeta no le llega ni a la suela del zapato a un sistema de SVC, os lo digo por experiencia. Hay gente que cree que utilizar uno de estos sistemas es muy engorroso, y aunque es cierto que no es tan simple como no utilizarlos, se ha mejorado mucho en este aspecto. Hoy en día existen aplicaciones como TortoiseCVS o TortoiseSVN que funcionan como clientes visuales integrados en el navegador de Windows (ignoro si hay programas similares para otras plataformas o si este mismo es multiplataforma) y sólo tienes que utilizar la línea de comandos para cosas muy concretas, como crear branches, algo que se hace muy de tanto en tanto.

CVS

CVS es el sistema de SVC por autonomasia. Además de ser gratuito es libre, por lo que es el más utilizado en proyectos de código abierto. Tiene prácticamente todo lo que puedas necesitar, aunque tiene algunas desventajas respecto a productos comerciales como Microsoft SourceSafe.

Subversion

Subversion es, al igual que CVS, gratuíto y libre. Fue creado por la empresa CollabNet, que lo mantiene actualizado constantemente, para ser “un mejor CVS†para la comunidad de código abierto. Es el sistema de SVC con el que tengo más experiencia y no puedo decir nada malo de él, pero sí muchas cosas buenas. Además de no costar nada, que ya es una gran ventaja para el desarrollador indie, funciona igual que CVS mejorando en todas las áreas posibles. Podría traducir directamente las lista de características de la web oficial, pero podéis leerlos vosotros directamente.

Perforce

Perforce es un sistema de SVC comercial muy conocido, aunque no precisamente barato ($500 - $800 por usuario). Se jacta de ser el sistema más rápido, y efectivamente lo es. La razón por la que está incluído en esta lista es que también es útil cuando el desarrollador indie trabaja sólo o en pareja, pues hasta dos desarrolladores pueden utilizar este software de forma gratuíta. En GameDev.Net hay una review de Perforce que quizá os interese.

Librerías

Además de motores de juegos o engines de render, también hay librerías de uso variado que nos pueden resultar muy útiles a la hora de afrontar un proyecto de software de grandes magnitudes y con un equipo de personas muy limitado, donde todo aquello que podamos ahorrarnos será bien recibido.

Boost

Boost es un conjunto de librerías de todo tipo que pueden resultarnos muy útiles. Diez librerías de Boost han sido incluídas C++ Standards Committee’s Library Technical Report (TR1), como un primer paso antes de ser parte del futuro C++ Estándar, y hay más librerías propuestas para el TR2. Tengo que decir que Boost es una librería tan amada como odiada, esto último normalmente por que su ingente cantidad de código (muchas veces basado en templates) suele hacer aumentar rápidamente los tiempos de compilación si se usan extensivamente según qué librerías. Sin embargo hay partes de Boost con una innegable utilidad: expresiones regulares, signals y slots, binding de funciones, grafos, quaterniones, serialización, threads… y la lista no acaba.

SmartWin++

Hace poco conocí esta librería por casualidad, y cada día doy gracias por ello. Es algo así como “lo que MFC debería haber sidoâ€. Una librería para creación de interfaces para Windows, muy ligera, basada en templates, bien diseñada y fácil de usar. Además hay un usuario de su comunidad que está haciendo un editor visual que está bastante avanzado, pero la verdad se que no es demasiado necesario, teniendo en cuenta su facilidad de uso. Si tenéis que hacer una aplicación para Windows con interfaz gráfica, echadle un vistazo.

wxWidgets

El único y gran problema que tiene SmartWin++ es que no es portable, aunque si lo fuera no funcionaría tan bien bajo Windows. Si necesitas hacer algo en Linux, Mac OS X o, por qué no, Windows; ahí está wxWidgets, la librería últimamente de moda para crear interfaces multiplataforma. Además existen wrappers para otros lenguajes como Python, y editores visuales gratuítos como wxGlade y comerciales como wxDesigner.

TinyXML & eXpat

Cada vez es más común el uso de XML en cualquier tipo de software, y los juegos no son una excepción. Si necesitas leer archivos XML hay varios gratuítos y de código abierto, dos de los más conocidos y ligeros son TinyXML y eXpat. El primero está escrito en C++ y es orientado a objetos, mientras que el segundo está escrito en C. Además funcionan de forma muy distinta. TinyXML utiliza el modelo DOM, lo que quiere decir que lee un fichero XML entero y crea una representación del mismo en memoria en forma de árbol, que puedes consultar a placer. Por otro lado, eXpat sigue el modelo SAX, con lo que el programador registra una serie de callbacks que son llamados en determinados momentos durante el parseo (cuando se encuentra una etiqueta, cuando se cierra una etiqueta, etc.). Para todos los gustos, oiga.

libCURL

Esta librería nos proporciona la funcionalidad de la herramienta de línea de comandos curl, que no es otra que facilitarnos la transferencia de datos a través de multitud de protocolos, incluyendo FTP, FTPS, TFTP, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE y LDAP. Además soporta certificados HTTPS, HTTP POST, HTTP PUT, upload mediante FTP, upload mediante formularios HTTP, proxies, cookies.. la lista es interminable. Es una librería muy útil a la hora de transferir datos entre tu juego y un servidor, para cosas como descarga de actualizaciones (FTP), sistema de compra y desbloqueo in-game (HTTPS), gestión de tables de puntuación on-line (HTTP), obtención del estado de una partida en juegos de estrategia por turnos y muchas otras cosas.

zlib

Es la librería de compresión y descompresión de ficheros más conocida, aunque hay otras, como RARlib. Muy útil para leer recursos empaquetados en la distribución final de un juego, pues también permite utilizar contraseñas a los archivos para mayor seguridad.

Integración de lenguajes de script

Cada vez es más común el uso de lenguajes de script para aspectos de un juego que no requieran mucha velocidad de proceso, como definiciones de datos (GUI, estado de partidas grabadas, paquetes de recursos..), lógica de juego o IA. Con esta creciente necesidad han aparecido una serie de herramientas para ayudarnos a generar el código intermedio necesario para poder exponer nuestro motor, escrito en C/C++, a algunos de los lenguajes interpretados más conocidos.

Luabind

Es uno de los generadores de bindings para Lua más conocido y fácil de usar. Muy recomendado si decides utilizar Lua en tu proyecto.

SWIG

SWIG es un gran programa que nos permite crear, como su propio nombre indica, wrappers de programas escritos en C/C++ para otros lenguajes de más alto nivel. Actualmente hay una larga lista de lenguajes soportados: TCL, Python, Perl, Java, Ruby, OCaml y C# son sólo algunos de ellos. Si quieres crear bindings para Python te aconsejo SWIG antes que otras alternativas como el extrañamente más popular Boost.Python, pues la experiencia me ha enseñado que SWIG da muchos menos problemas al exponer grandes cantidades de código y además no tienes que tratar con las malditas “policies†de Boost.Python para toda función que tome o retorne punteros.

Otros

Microsoft Visual C++

Aunque es una aplicación comercial y no precisamente “barataâ€, comparado con el presupuesto de un indie, hay dos versiones del famoso compilador de Microsoft que son muy apetitosas. La primera es el Visual C++ 2003 Toolkit, que incluye el compilador y optimizador incluído en Visual Studio .NET 2003 así como las STL, aunque no el IDE; y todo eso gratis. Por otro lado tenemos Visual C++ 2005 Express, la versión light de la nueva versión de Visual C++. Actualmente se encuentra en su versión beta 2, descargable gratuítamente desde la web de Microsoft. Sin embargo, cuanto salga al mercado la versión comercial pasará a costar menos de $100, una miseria por uno de los mejores entornos de desarrollos para C++ sobre Windows. La versión completa (no Express) del mismo contendrá otras cosas que no son indistipensables como el sistema de SVC de nueva generación de Microsoft (Team System), acceso a bases de datos y cosas por el estilo. Para los dinosaurios que aún estéis usando la versión 6, no podéis dejar escapar esta oportunidad de pasaros a esta nueva versión que se ciñe perfectamente al estándar C++ y proporciona numerosas mejoras al IDE, una pena que Visual Assist no soporte (todavía) esta versión.

ToDo List

Después de utilizar muchos programas para gestionar mis tareas personales, dividir proyectos en milestones, éstas en tareas y éstas a su vez en subtareas, creo que al final lo que más importa es la simplicidad de uso. He probado de todo. Aplicaciones offline y web, comerciales y gratuítas, minimalistas y grandes suites de gestión de proyectos. Y creo que al final me quedo con esta sencilla aplicación que encontré por casualidad. Le sobran la mayoría de campos, pero pueden personalizarse cuáles se muestran desde el menú de Opciones.

Hasta aquí el repaso que he hecho a muchas de las herramientas que utilizo asiduamente. Si sabéis de alguna otra aplicación que os haya sido de utilidad en el pasado no dudéis en darle algo de publicidad en los comentarios.

2 respuestas a “Herramientas para el Indie”

  1. Pogacha dice:

    Que tal Manuel, no te falto el mingw o el gcc o algo de eso?
    Muy interesantes las herramientas esas!

  2. Manuel F. Lara dice:

    La verdad, “nunca” he usado un compilador que no fuera Visual C++ (6, 2003 y 2005 Express), así que no podría decir mucho de ellos. Como digo en el artículo, si alguien quiere escribir algo sobre herramientas sobre las que no he escrito, que lo haga.

Deja una respuesta