| Descargas | F.A.Q. | Artículos | Screenshots | Comunidad | Archivo | Foro | English Info | Acerca >
Frequently Asked Questions / Preguntas Más Frecuentes

Este apartado está destinado a resolver las preguntas más frecuentes que puedan surgir en torno a Crisol. Como ocurre en todos los F.A.Q., éste se actualizará de forma continuada con aquellas dudas que vosotros me planteéis o que yo considere que son planteadas de forma insistente. En cualquier caso, si tenéis algún tipo de pregunta sobre el motor, o algo de lo que aquí expongo no queda suficientemente claro, notificármelo para que pueda trasladarlo a la web.

Los apartados actuales son:
A continuación se muestran cada una de ellos.

Generalidades
¿Qué es CrisolEngine?.

Crisol es un motor destinado a simular juegos de rol por ordenador. La principal fuente de inspiración durante el desarrollo de Crisol fueron juegos de de estilo europeo y norteamericano (Fallout, Arcanum, DarkSun, Baldur's Gate, etc).

¿Quién es el autor?.

Crisol ha sido diseñado y desarrollado por Fernando Rodríguez.

¿Crisol es distribuido bajo algún tipo de licencia especial?.

Sí, Crisol se distribuye bajo licencia GPL, lo que viene a significar que es software libre y el usuario final dispone del código fuente del motor. Al distribuirse bajo licencia GPL, los usuarios de Crisol podrán utilizar el motor para crear sus propios juegos, venderlos, redistribuir el código fuente, mejorarlo y adaptarlo a sus propias necesidades, etc. La principal obligación de éstos consistirá en que si realizan algún tipo de modificación en el código fuente de Crisol, deberán de publicarla.

El artículo Licencia para ser libre puede que aclare conceptos a mucha gente acerca de las licencias de software libre, como la GPL.

¿Cuáles son las características más importantes de Crisol?.

Para responder con mayor profundidad a esta cuestión, lo mejor es pasarse por el apartado de descripción.

¿Qué requerimientos mínimos necesita Crisol para funcionar?.

Crisol utiliza la aceleración por hardware de las tarjetas 3D para mostrar los gráficos, por lo que cualquier usuario deberá de disponer uno de estos dispositivo. No existirá compatibilidad con aquellos equipos que utilicen una tarjeta 3D y otra 2D de forma separada; será necesario disponer de una tarjeta 3D únicamente. También será necesario poseer una tarjeta de sonido y una versión de DirectX igual o superior a la 7.0a (a fecha de realización de este documento, la versión 8 es la estándar y está a punto de editarse la 9).

¿Dónde puedo encontrar un juego realizado con Crisol para hacerme una idea de lo que se puede hacer con él?.

En la sección de descarga se ofrecen todos aquellos elementos relacionados con Crisol que tienen caracter oficial (esto es, que han sido realizados por el autor de Crisol) en concreto, en dicha sección se puede descargar un juego demostración muy corto y que toca algunos de los aspectos importantes con los que cuenta el motor. En la sección dedicada a la comunidad también se colocan, entre otras cosas, enlaces a páginas con proyectos y juegos que se están realizando con Crisol.

En la distribución de Crisol ¿dónde están las herramientas visuales?.

Crisol no dispone de editores o herramientas visuales oficiales; todas las herramientas de apoyo para la creación de scripts, datos, configuración y demás, se especifican utilizando herramientas en línea.

¿Y cuáles son esas herramientas en línea?.

Las herramientas en línea de las que dispone Crisol son:
  • CrisolBuilder para procesar y validar archivos de configuración y diseño.
  • CPAKTool para gestionar el archivo "GameData.pak" encargado de empaquetar los recursos con los que funcione el juego ejecutado por Crisol.
  • CSCompiler para procesar los archivos escritos en lenguaje CrisolScript y transformarlos a código intermedio.
¿Existe alguna herramienta visual no oficial?.

A fecha de creación de este F.A.Q. Crisol dispone de la herramienta no oficial CSEdit, un editor visual para CrisolScript con sintaxis coloreada. En la sección destinada a la comunidad, se informa de todo tipo de proyectos no oficiales que puedan ir surgiendo.

¿Dispongo de algún tipo de ayuda para aprender a desenvolverme con Crisol y sus herramientas?

Sí, por supuesto. En la sección de descarga está disponible la ayuda oficial de Crisol, tanto para programadores como para diseñadores. Estos encontrarán especialmente interesante los anexos pues en ellos se comentará el manejo de las herramientas CrisolBuilder, CPAKTool y CSCompiler. Así mismo, desde esta web se podrán consultar tutoriales construidos con el objetivo de enseñar el manejo de Crisol y sus herramientas de una forma mucho más sencilla y amena que la documentación oficial.

¿Por qué los ejecutables de Crisol y sus herramientas tienen una versión con terminación "_Release" y otra "_Safe"?.

Los ejecutables con terminación "_Safe" están preparados para comprobar posibles errores o incoherencias y responder creando archivos que puedan ser útiles para encontrar los problemas. Los "_Release", por el contrario, son ejecutables que no tienen en cuenta posibles chequeos extra y, por consiguiente, funcionan a una mayor velocidad que sus homólogos "_Safe" (además de ocupar menos espacio).

Entonces, ¿qué versión de los ejecutables deberé de utilizar?.

Se recomienda que durante el proceso de desarrollo de un juego, se utilice la versión "_Safe" de Crisol, mientras que para el caso de las herramientas se acuda siempre a la versión "_Release". Esto es así porque las herramientas requerirán de una ejecución muy reiterada mientras se esté construyendo un juego y la versión "_Safe" podría hacer que el procesado de archivos fuera mucho más lento. Si por alguna razón, al utilizar la versión "_Release" de una herramienta, surgiera un error de programación siempre se podrá pasar a utilizar la versión "_Safe" para capturar el posible problema y notificarlo.

En el caso de Crisol, se recomienda utilizar la versión "_Safe" porque el descenso de velocidad no será tan apreciable y sí que será importante estar seguros de que el motor sepa notificar cualquier error interno grave que se produzca. Una vez que se finalice el juego, se deberá de pasar a utilizar la versión "_Release".

CrisolBuilder
¿Qué es CrisolBuilder?.

CrisolBuilder es la herramienta mediante la cual se validan los archivos de configuración, de diseño de áreas, de definición de animaciones, etc, con el fin de que se puedan detectar posibles errores. Además, CrisolBuilder se encarga de pasar a formato binario aquellos ficheros de configuración que requieran una mayor velocidad de proceso en el motor.

Entonces ¿tu creas los ficheros de configuración, diseño, etc y se los das a CrisolBuilde para que los valide?.

Exacto. Una vez que estén creados todos los ficheros de configuración, sólo habrá que hacer funcionar la herramienta y comprobar si hay algún error. Si no hay ningún error ya estarán listos para que Crisol pueda utilizarlos en su ejecución.

¿Y cómo se escriben los ficheros de configuración?.

Todos los ficheros de configuración se escriben utilizando cualquier editor de ficheros de texto (por ejemplo, el WordPad de Windows) pues, aunque la extensión de los mismos es ".cbt", no dejan de ser ficheros de texto normales y corrientes. Es totalmente necesario consultar la documentación oficial, anexo B, para comprender esta herramienta. En la sección de artículos, el tutorial "Comenzando a trabajar con Crisol" realiza una exposición muy sencilla sobre el uso de CrisolBuilder para poner en marcha el motor cuanto antes.

Pero esos ficheros de texto tendrán algún tipo de formato especial ¿no?.

Naturalmente, es por ello que sea completamente necesario consultar la documentación para poder aprender a utilizar CrisolBuilder. Dominando CrisolBuilder mínimamente se podrán realizar los ficheros de configuración para poder arrancar Crisol.

¿Hay alguna herramienta visual que ayude a crear los ficheros de configuración?.

A fecha de creación de este F.A.Q. no hay herramienta oficial ni no oficial.

CPAKTool
¿Qué es CPAKTool?.

CPAKTool es una herramienta extremadamente sencilla que tiene como objetivo gestionar el fichero "GameData.pak". Este fichero será un archivo empaquetado (capaz de mantener a otros archivos como los gráficos, de configuración, etc). Su uso será opcional pero siempre deberá de existir aunque se encuentre vacío, pues Crisol lo necesitará para funcionar.

¿Y qué utilidad tiene hacer uso de el fichero "GameData.pak"?.

El uso de un fichero empaquetado permite mejorar la eficiencia de Crisol a la hora de localizar datos pero, sobre todo, facilita la distribución de los juegos y los protege de ser modificados por usuarios comunes.

CrisolScript y CSCompiler
¿Qué es CrisolScript y qué es CSCompiler?.

CrisolScript es el lenguaje script con el que el diseñador podrá programar la lógica de juego y CSCompiler será el compilador que valide los archivos con código script y los transforme a un formato de código intermedio para que puedan ser procesados por Crisol.

¿Un lenguaje llamado CrisolScript?... creo que no entiendo nada.

CrisolScript es un sencillo lenguaje de programación mediante el cual, el diseñador puede asociar a los diferentes eventos que se desencadenen en el motor sucesos. Un evento puede ser el que se produce cuando se golpea a una entidad, se coge algo del suelo, se decide hablar con un personaje, se pisa una celda del escenario, etc. De esta forma, si queremos que cuando el jugador pise una celda se abra una puerta automáticamente o aparezca un monstruo dispuesto a merendársele, deberemos de utilizar CrisolScript para indicarlo.

¿Hace falta utilizar CrisolScript para hacer funcionar a Crisol?.

No. Para arrancar el motor lo único que hace falta es definir los archivos de configuración mínimos necesarios, esto es, utilizar CrisolBuilder. Al no utilizar CrisolScript no ocurrirá nada interesante (sólo las acciones por defecto).

¿Es posible hacer que un criatura siga al personaje controlado por el jugador?.

Crisol no posee ningún sistema interno que le permita llevar la gestión de una criatura que sigue al jugador. Ahora bien, de entre los eventos script, existe uno llamado OnIdle. Este evento esta pensado para que ser ejecutado tras un intervalo de tiempo (en segundos) y puede ser asociado a toda entidad. A modo de ejemplo, en el juego demostración oficial (se puede conseguir en la zona de descarga), la estatua luminosa del área exterior lleva asociado un evento OnIdle de tal forma que cuando la encendemos se produce ese efecto tan curioso de que la luz se expande y contrae pues, cada vez que se ejecuta el script, la luz se incrementa o decrementa según proceda.

Dicho lo cual, ¿como podríamos implementar la opción de que una criatura pudiera seguir al jugador?. Aplicando lo expuesto en el párrafo anterior, si la criatura tuviera asociada un evento OnIdle cada 10 o 15 segundos y dentro de dicho script comprobara la distancia del jugador con respecto a ella, se podría decidir que si éste está a X celdas no tiene porqué seguirlo pero que si se halla a Y celdas (siendo Y mayor que X) sí ha de aproximarse a él. Bastaría entonces ordenar a la criatura que se moviera a una celda cercana al jugador.

Para dar ordenes a la criatura, el jugador podría hablar con ella y mediante el dialogo suministrarle la orden pertinente. Otra opción sería la de utilizar ordenes predefinidas y ejecutadas mediante la pulsación de teclas (consultar el evento OnKeyPressed).

Diseño de reglas
¿Qué significa el hecho de que Crisol disponga de un sistema de reglas genérico?.

Significa que Crisol es capaz de adaptarse a los requerimientos o reglas que el diseñador tenga en mente. En otras palabras, Crisol no incorpora un sistema de reglas propio que obligue a que los juegos se tengan que inspirar en una época medieval fantástica o en el futuro, de igual modo que no implementa atributos para controlar la cantidad de dinero que puede llevar un personaje, o la fuerza de éste, o la cantidad de elementos que el personaje controlado por el jugador puede almacenar en su inventario. No, en lugar de todo esto Crisol incorpora una serie de conceptos lógicos que permiten construir todos estos sistemas y casos particulares sólo si el diseñador así lo requiere.

¿Cómo es posible definir un sistema de magia?.

Para implementar un sistema de magia se pueden utilizar las habilidades. Si una de las posibles habilidades está relacionada con "lanzar magia", la entidad que la escoja podrá elegir el hechizo o magia a utilizar.

Así pues, siempre que el jugador escoja la habilidad relacionada se producirá un evento denominado OnUseHability que, entre otras cosas, recibirá por parámetro el identificador de la habilidad utilizada. Con esa información, el diseñador podrá detectar que se ha utilizado la habilidad relacionada con el lanzamiento de magia, mostrando un cuadro de selección de texto. Cada posible opción mostrada responderá a una magia de las que se podrá lanzar (el diseñador podrá programar un filtro para que las opciones del cuadro de diálogo varíen en función de la entidad que va a lanzar magia y de la que la recibirá; esta información será pasada por parámetro al script). Así pues, según sea la magia escogida del cuadro de diálogo así se responderá en el universo de juego.

Diseño de interfaces
En la configuración de la pantalla de creación de personajes me piden configurar elementos relacionados con las habilidades y yo no he definido ninguna.

Es posible que en algunos interfaces se pida configurar elementos que no han sido definidos de forma explícita en el archivo de reglas (por el simple motivo de que se desea prescindir de ellos). En todos estos casos, lo que se sugiere es colocar fuera de las coordenadas de la pantalla esos elementos de interfaz, asociándoles valores de color nulos o aleatorios.

El caso de las habilidades es muy obvio; el diseñador puede descartar su uso sin embargo, en el archivo de configuración de la pantalla de creación de personajes hay que configurar una barra de porcentaje. La elección es bien sencilla, colocar las coordenadas de posición de la misma fuera de la zona visible de la pantalla.

Problemas / Bugs
¿Tiene Crisol algún tipo de bug conocido?.

Crisol es un motor medio - grande para ser dominado por una sola persona. El total de líneas de código entre motor y herramientas se acerca a las 90.000 (sin contar comentarios), eso significa que todo test realizado es poco. Además, su carácter de funcionar como motor general de juegos de rol hace que sea muy difícil controlar todas los estados en los que puede situarse al motor. Todos los problemas que se encuentren irán colocándose en la sección de descarga, junto a la versión del motor actual, para que de esta forma aquellas personas que lo descarguen tengan conocimiento de los problemas actuales.

Estoy desarrollando un juego y al ir a ejecutar Crisol se me ha devuelto al escritorio, ¿qué hago?.

Lo primero de todo es asegurarte de que posees la versión "_Safe" para que el motor pueda ofrecer la máxima ayuda posible a la hora de localizar el error.

El siguiente paso será comprobar si se ha creado un fichero de texto llamado "FatalError.txt". Este archivo indicará posibles problemas relacionados con la falta de ficheros gráficos o de sonido o cualquier otro tipo de incoherencia que se pudiera haber cometido al definir los ficheros de configuración del motor. En otras palabras, si se crea este archivo lo más probable es que la culpa sea del diseñador y no del motor.

Si no se hubiera creado el fichero "FatalError.txt" entonces es posible que sí aparezca otro llamado "Assert.txt". Este fichero ya puede indicar un problema más grave y deberá de ser notificado al creador de Crisol, pues es probable que indique algún tipo de bug interno del motor. En caso de que se creen ambos tipos de ficheros, siempre tendrá mayor importancia "FatalError.txt", así que no habrá que preocuparse en esceso.

Si pese a devolvernos al escritorio no aparece ningún fichero "FatalError.txt" ni "Assert.txt" entonces es seguro que habrá sólo uno llamado "Logger.txt" que habrá que notificar al creador de Crisol junto a toda la información posible sobre la situación en la que el motor realiza la salida al escritorio.