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.
October 28th, 2005 a las 1:40 am
Que tal Manuel, no te falto el mingw o el gcc o algo de eso?
Muy interesantes las herramientas esas!
October 28th, 2005 a las 8:21 am
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.