22/10/08

Zambulléndose en Simutrans (IV): una pequeña modificación

Una vez que sabemos obtener el código, compilarlo y aplicar un parche, solo nos falta pensar en una modificación y aplicarla. Vamos a realizar una pequeña modificación que nos dará la posibilidad de tener convoys ferroviarios de más de 24 vagones, que es el límite actual.

Leer más...

Tengo que confesar que en este caso juego con ventaja, porque esto ya fue propuesto por otras personas y Prissi, el desarrollador que coordina Simutrans, dijo donde había que tocar para conseguir que los convoyes ferroviarios tuvieran más de 24 vagones.

De todas formas, como en cualquier proyecto que abordas, ya sea para modificarlo o para crear cosas nuevas desde cero, es necesaria algo de intuición. A primera vista, si pensamos donde habría que modificar para conseguir aumentar la longitud máxima del convoy, es probable que no supieramos por donde empezar....

Dando unas pocas vuelta más al asunto, podemos asociar los convoys con los depósitos o cocheras. Realmente no hay muchos más candidatos. Las estaciones no influyen en la disposición del convoy y el resto de estructuras ferroviarias como los puentes y los túneles tampoco tienen porque. ¿Los trenes en sí mismos? uhmm...podría ser, pero el juego está diseñado usando el paradigma de la orientación a objetos, por tanto los convoys no se consideran como un todo, sino como la asociación de varios objetos(instancias) de la clase tren. En ese caso, el único candidato que nos queda es el depósito de trenes.

Aunque el código de Simutrans está en alemán, gran parte de los comentarios están en inglés. En el idioma de shakespeare, cochera o depósito es depot, así que podemos empezar la busqueda por algun fichero que cuyo nombre contenga dicho término. ¡¡anda, mira por donde existe un fichero llamado simudepot.h!!

Abrimos el fichero con un editor de texto (Notepad, Vim, UltraEdit) y como podeís comprobar esta escrito en C++. El archivo contiene un conjunto de clases que representan a los distintos tipos de cocheras que existen en Simutrans (bus, camión, maglev, tren, tranvía, monorraíl, avión y ferry). Las distintas clases empiezan siempre por
class tipodepot_t : public depot_t

Como lo que nos interesa es la parte de trenes, nos situamos en la línea 219 que contiene lo siguiente:
class bahndepot_t : public depot_

No tengo ni idea de lo que significa, pero tres líneas más abajo aparecen las palabras Lokomotive y Waggon, por lo tanto supongo que esta será la parte relacionada con la cochera de trenes.

Proseguimos el rastreo. Lo que buscamos está relacionado con la longitud del convoy. Longitud en inglés es length. Si miramos unas líneas más abajo, concretamente en la 245, aparece la siguiente instrucción:
unsigned get_max_convoi_length() const { return convoi_t::max_rail_vehicle;

Parece que lo que hace esta función es obtener el valor de la longitud máxima de un convoy ferroviario. Para esto, consulta el atributo max_rail_vehicle del objeto convoi_t y devuelve su valor. Parece que hemos encontrado lo que buscábamos, ¿no?

En este punto tenemos dos opciones. Podemos poner un valor entero, como aparece en algunos de los otros depósitos, lineas 333 para bus,398 para avión y 370 para ferry. La otra opción es buscar donde se define el valor de dicho atributo max_rail_vehicle y modificarlo. Evidentemente la segunda opción supone más búsqueda en otros ficheros, principalmente los que se mencionan a partir de la línea 11, precedidos por la palabra include. Un buen candidato sería convoihandle_t.h

En este caso vamos a optar por la primera, por ser más fácil y rápida. Pues bien, sustituimos el contenido de la línea 245 por este otro:
unsigned get_max_convoi_length() const { return 30; }

que simplemente le dice que la long. máxima para un convoy ferroviario será de 30 vagones.

Ahora guardamos los cambios y solo nos queda compilar el código de nuevo. Si no sabes como, repasa este artículo sobre el tema. Una vez tenemos el ejecutable, comprobamos que los cambios han surtido efecto, creando un convoy de 30 vagones (1+29).

Como comprobareís no funciona porque aunque te deja comprar hasta 30 vagones, no los muestra cuando el vehículo sale del depósito. Eso significa, entre otras cosas, que la variable max_rail_vehicle tiene un valor fijo en algún lado, solo para cuando tiene que mostrar los elementos que componen el convoy en pantalla. Para solucionar esto, primero pulsamos deshacer para dejar esa línea como estaba y después hacemos una búsqueda del término max_rail_vehicle en todos los archivos con extensión *.cc o *.h. Entre los distintos resultados de la búsqueda, no fijamos en los relacionados con el archivo simconvoi.cc:
fahr.resize(max_rail_vehicle, NULL);
fahr.resize(max_rail_vehicle, NULL);

Esta lineas no usan un método get sino que obtiene el valor de la variable de forma directa. Además, en el fichero simconvoi.h vemos la siguiente línea:
enum { max_vehicle=4, max_rail_vehicle = 24 };

Si cambiamos ese valor 24 por 30, guardamos los cambios y compilamos de nuevo, comprobaremos que ahora si muestra los 30 vagones del convoy.

Podeís hacer otra prueba poniendo menos vagones, digamos 10, y comprobando que no te deja comprar más de dicha cantidad.

Como veís es algo sencillo y fácil de hacer. Pequeñas modificaciones como estas se pueden hacer a cientos, solo teneís que bucear un poco en el código. En futuros artículos propondremos otros pequeños cambios.

No quisiera terminar, sin agradecer la inestimable ayuda de isidoro en este tema, a la hora de resolver mis dudas. Muchas gracias.

Relacionados:
Zambulléndose en Simutrans (I): A por el código.
Zambulléndose en Simutrans (II): compilando el código fuente
Zambulléndose en Simutrans (III): aplicando un parche

20/10/08

Zambulléndose en Simutrans (III): aplicando un parche

Tras obtener el código fuente y compilarlo, vamos con un paso que se ha destapado muy interesante a la existencia de ciertas mejoras que permiten los adelantamientos en simutrans. Evidentemente me estoy refiriendo a como aplicar un parche a Simutrans.

Leer más...

Ante la gran demanda popular vamos a intentar aplicar el famoso parche de adelantamientos (overtaking fun patch) a Simutrans.

Los parches siempre se aplican al código fuente de un programa, por tanto en este caso debemos obtener el código fuente de Simutrans. Para saber como echad un vistazo a este artículo. A continuación descargamos la última versión disponible del famoso parche(enlace)

Una vez que tengamos el codigo fuente descargado del SVN y disponible en una carpeta, abrimos la misma y vamos al menú Archivo >> TortoiseSVN >> Apply Patch. Aparecerá una ventana y deberemos buscar la ubicación donde descargamos el parche, por ejemplo en el escritorio de Windows. El archivo que buscamos se llama over.r2011.v8.patch. Una vez localizado, lo seleccionamos y pulsamos sobre él.

A continuación aparecerán dos ventanas, la más pequeña con una lista de archivos con extensión .cc y .h. Seleccionamos todos, pulsamos boton derecho del ratón y pulsamos la opción Patch all. Ahora el programa procederá a aplicar los parches a dichos archivos. Es posible que te pidan nombre de usuario y contraseña, los cuales son anon y vacío. También es posible que te comente que existen conflictos y problemas, pero tu ni caso. Pulsa siempre la opción SI.

Una vez haya terminado todo, cerramos la ventana grande y volvemos a compilar todo el código, con las modificaciones del parche incluidas. Si no sabes como, echa un vistazo a este artículo.

Una vez más probamos el ejecutable, usando el resto de los archivos de alguna compilación nocturna y comprobamos si efectivamente se produce el adelantamiento.

En GNU/Linux vuelve a ser todo más sencillo, ya que basta con descargar el parche, situarse en el directorio donde tengamos el código fuente y aplicar el siguiente comando:

patch -p0 < fichero_del_parche.diff

Y listo, recompilamos, movemos el ejecutable y comprobamos si ha funcionado.

NOTA: me he enterado que en las versiones más recientes del código de Simutrans, el código correspondiente al parche de los adelantamientos ya ha sido incluido, por tanto puede dar un error al compilar. Si quereís podeís probar con cualquiera de los otros parches de la seccion Patches and Nightly Builds del foro de Simutrans. Voy a crear otro mini-artículo de como aplicar el parche para hacer más grande el mapa.

Por lo menos hemos sentado las bases, en caso de que alguien quiera disponer de las últimas novedades de Simutrans.

Relacionados:
Zambulléndose en Simutrans (I): A por el código.
Zambulléndose en Simutrans (II): compilando el código fuente

Zambulléndose en Simutrans (II): compilando el código fuente

Seguimos con la serie de artículos para meterle mano al código de Simutrans. Esta vez nos centramos en la parte de compilación del código fuente. Gracias a VS por crear la guía rápida de compilación y por arrojar un poco de luz sobre este tema para todos aquellos que tienen curiosidad y ganas. Vamos allá.

Leer más...

Estos son los pasos que debes dar:

  1. Descarga Microsoft Visual C++ Express de forma gratuita aquí

  2. Instálalo, puede llevarte unos 15-20 minutos. Es posible que tengas que descargar contenido extra (librerías y Service Pak) y también es posible que tengas que reiniciar el ordenador.

  3. Descarga las librerías precompiladas para OpenTTD, la que tiene el nombre más corto no las fuentes(sources) ni las que terminan por sum

  4. Descomprime el fichero en cualquier lado, por ejemplo en C:\ejemplo\ottd_libs

  5. Inicia el programa Microsoft Visual C++ y en el menu, ve a opciones(herramientas -> opciones), se abrirá una ventana con otro conjunto de opciones disponibles a la izquierda, y lo que queremos es cambiar los directorios (Projects and Solutions->VC++ Directories);

  6. Ve al menú desplegable de la parte superior derecha (la primera opción disponible es Executable files)- selecciona la opción Include files y añade a la lista de directorios la carpeta shared/include del archivo que hemos descargado anteriormente - ejemplo, C:\ejemplo\OpenTTD essentials\shared\include

  7. Haz lo mismo con los Library files (ficheros de librerías); añade la carpeta win32/library - ejemplo C:\ejemplo\OpenTTD essentials\win32\library. OJO, si estas usando un sistema operativo de 64 bits, cambia el 64 por el 32 y curza los dedos para que Simutrans esté preparado para arquitecturas de 64 bits


  8. Ahora lo que necesitamos es el código. Si no sabes como acceder y descargar el código de Simutrans, echa un vistazo a este artículo. Una vez que tenemos el código, vamos al meollo de la cuestión: el proceso de compilación.

  9. En la carpeta donde hayamos descargado el código desde el SVN, pongamos por ejemplos simutrans_code, veremos un montón de ficheros fuente, pero el que nos interesa es simutrans.vcproj

  10. Abrimos simutrans.vcproj desde Visual C++, menú File >> Open >> Project/Solution

  11. Es posible que ese fichero sea algo antiguo, por tanto cuando la habras aparecerá un asistente (wizard) para actualizar el projecto. Nuevamente no necesitas cambiar nada de nada.

  12. Una vez que esté completado el tema, a la izquierda debería aparecer algo en la ventana Solution Explorer, algo como Solution Simutrans. En el menú selecciona Build >> Build solution o pulsa F7

  13. Espera a que se compile la cosa....es posible que aparezcan advertencias (warnings) y cosas raras pero no te asustes..todo va bien :)

  14. El ejecutable de Simutrans aparecerá en la carpeta debug, dentro del directorio donde estan los archivos fuentes (puede aparecer también como Debug)



En este momento solo tenemos el ejecutable, así que lo más recomendable es bajarse todos los archivos de cualquier versión de la pagina de compilaciones nocturnas (ejecutable+pak+librerías) y sustituir el ejecutable que viene por el que hemos compilado. Y si todo va bien, debería funcionar.

Si estaís usando cualquier distribución de GNU/Linux la cosa es mucho más sencilla, ya que solo teneís que bajaros el código (echad un vistazo al artículo que se menciona más arriba) y basta con ir a la carpeta, y teclear al típica secuencia para compilar un programa usando makefile:

./configure
make

Esto os genera el ejecutable de Simutrans para GNU/Linux, y solo teneís que moverlo a una carpeta donde tengaís una versión de Simutrans con todos los archivos y listo. Lo ejecutaís y a jugar.

Relacionados:
Zambulléndose en Simutrans (I): A por el código.

19/10/08

Ovejas y Tiburones: la economía en Simutrans

Si le preguntaras a cualquier jugador habitual de Simutrans sobre cuál es el elemento más importante del juego, sin dudarlo la mayoría contestarían las cadenas industriales ¿Qué son exactamente? ¿como se forma y de qué se componen?¿cuáles son los problemas más habituales que surgen al gestionarlas? De esto y mucho más hablaremos en el siguiente artículo.

Leer más...

La cadena industrial consiste básicamente en una serie de elementos que se intercambian mercancías entre sí. Unos producen las mercancías y otros consumen dichas mercancías. Si alguno de ellos no está presente, la cadena obviamente no funciona. Generalmente los productores suelen estar situados fuera de las ciudades, mientras que los consumidores, especialmente los consumidores finales, suelen estar dentro de las ciudades. Entre las distintas mercancías que circulan por la cadena tenemos que distinguir las materias primas que se producen al inicio de la cadena, los productos intermedios que son el resultado de procesar materias primas u otros productos intermedios, y por último los productos finales que son consumidos al final de la cadena.

Existen dos tipos de cadenas industriales, simples y compuestas. Las cadenas simples se componen de un productor y un consumidor, y se tienen que transportar mercancías de uno a otro. En el caso de las cadenas compuestas, se introduce un nuevo elementos denominado intermediario que es al mismo consumidor y productor de mercancías.

Uno de los problemas más habituales que surgen al gestionar cadenas industriales son los cuellos de botella, es decir, elementos de la cadena que necesitan de muchas mercancías distintas para iniciar la producción, la fábrica de hormigón por ejemplo, que necesita de arena de la cantera, cemento de la cementera y carbón de la mina. Ya hemos mencionado que es posible que en una partida no aparezca toda la cadena completa, o que los elementos de dicha cadena esté muy separados geográficamente y no nos sea posible ni rentable en ese momento construir una red de transporte que conecte los elementos de dicha cadena.

Observamos que se produce un cuello de botella que bloquea el flujo de mercancías a través de los elementos de la cadena e impide obtener dinero operando una red de transporte en ella. En este caso se aconseja, primero establecer un flujo de mercancías pequeño y constante para no perder oportunidades de ganar algo de dinero. Por otro lado lo que se debe hacer es desarrollar la zona o zonas que ocupan los distintos elementos de la cadena para que propiciar la aparición de nuevos elementos gracias al crecimiento de habitantes de las ciudades de dichas zonas. Esto se traduce básicamente en transportar pasajeros a los lugares de trabajo, atracciones turísticas de la zona y de dentro de las ciudades.

Las cadenas industriales son la primera y más rápida fuente de ingresos para el jugador, pero son ingresos a corto plazo. Cada unos de los elementos de la cadena tiene establecido un máximo de mercancías a consumir y a producir. Cuando la producción de mercancías de la cadena es mayor que el consumo se produce una saturación, y esta se suele suele darse en los elementos finales de la cadena (consumidores finales) Por tanto, la producción se paraliza hasta que se consume el excedente de mercancías.

Como podéis ver en el gráfico, cuando se inicia la construcción de las redes de transporte para establecer las conexiones entre los elementos de la cadena, se experimenta una enorme ganancia hasta que se llega al máximo de mercancías que pueden procesar los consumidores finales. En ese momento, las ganancias caen en picado hasta que se recupera de nuevo la producción. Como podéis ver, se gana mucho al inicio, pero cuando se llega al tope, la red de transporte que cubre dicha cadena tiene posibilidad de entrar en pérdidas.

Es por esto que se dice que la industria es para ganar dinero a corto plazo, mientras que el transporte de pasajeros es ganancia a largo plazo, ya que al contrario que las mercancías, el crecimiento de pasajeros es en teoría infinito (las ciudades no tienen tope de habitantes)

Espero que con este artículo hayáis aprendido algo más del sistema económico de Simutrans. En futuras ocasiones hablaremos del sistema de bonificación por velocidad y otros tantos temas interesantes...;-)

13/10/08

Reciclar es muy importante

Ultimamente he estado pensando en nuevas cadenas industriales, como la del gas, que puedan plantear nuevos retos de juego y sobre todo que intenten cambiar en cierto modo la forma de juego del pak64. Pues, tras mucho pensar y pensar, he encontrado una cadena interesante, relativamente simple y que puede dar mucho juego: la cadena industrial del reciclado

Leer más...

Esta cadena se compone de dos elementos principales, el punto de reciclaje y la planta de reciclado. El primero se sitúa dentro de la ciudad y genera residuos sólidos urbanos (RSU en la terminología) Alrededor de 120 unidades diarias (43 tn). Los RSU serían una mercancía con un peso por unidad de 720 kg y un precio por unidad de 30-35 créditos (aún esta por decidir)

Tras sacar los residuos de la ciudad, estos se llevarían a la Planta de Reciclado, que tras distintos procesos conseguiría reciclar aprox. un 33% de los residuos (40 uds.) unas 4,8 tn., obteniendo unas 10 unidades de plástico(40%), 10 de acero-hierro(40%) y 5 de papel(20%). Esto podría aumentar si se le suministra energía eléctrica.

Los otros dos elementos de la cadena, la versión extendida, se incluyen debido a que los procesos a los que se ven sometidos los residuos (descomposición, decantación, etc..) generan una serie de gases, metano en este caso, los cuales son almacenados en tanques para su posterior transporte a la central de ciclo combinado (gas+turbina de vapor) Además esos residuos también pueden alimentar a la central de energía que usa la biomasa para generar electricidad.



Por tanto tenemos una cadena industrial que en su configuración básica permite tener una fuente de materias primas (papel, plástico y metal) para casos en los que las respectivas cadenas industriales no están completas (falta algún elemento) Y por otro lado tenemos la versión extendida que posibilita orientar la cadena hacia la producción de energía. En el caso de la central de ciclo combinado, incluso tiene la posibilidad de enlazar con la cadena industrial del gas.

Creo que es una cadena muy interesante tanto desde el punto de vista del diseño, muy simple, como de la jugabilidad, el hecho de disponer de materiales básicos puede dar una vuelta de tuerca más a la estrategia de juego de Simutrans. Solo queda esperar, ya que empezaré a diseñarla en unos días.

9/10/08

Simutrans como objetivo común sin fronteras

Hace bien poco, un usuario del foro en español (Silver) publicó un comentario que me hizo reflexionar acerca de la importancia de la comunidad de Simutrans. Sin duda, la variedad de intereses, idiomas y puntos de vista forma parte del atractivo del juego, pero alguna gente no llega a participar de ello por culpa de las barreras linguísticas.

Leer más...

El comentario en cuestón decía:

No dejo de pensar que el saber forear es importante cuando te gusta el lugar y sobre todo cuando existe tanta informacion importante, les aconsejo una vuelta por los otros idiomas aunque no hablen otro idioma, en todo caso pueden utilizar un traductor, aunque no creo que traduzca muy bien pero al menos entenderan de que trata.

No se trata de una cuestión baladí, pues como ya he dicho en la variedad esta parte de la fuerza de la comunidad de Simutrans. Mucha gente se pierde parte de la experiencia de juego por no ver más alla que los subforos de idioma.

No hablo solo de objetos, sino de trucos, ideas, documentación y fuentes de inspiración. En definitiva, se pierden un buen montón de información que podría mejorar en gran medida su experiencia de juego con Simutrans. Se que es difícil moverte entre información que no está en tu idioma, pero piensa en todo lo bueno que puedes obtener.

Por ejemplo, si pasas por el foro alemán de Simutrans puedes encontrar muchos objetos extra para el pak128 o puede que te apetezca seguir el desarrollo del pak96; quién sabe, incluso puede que te animes a contribuir con algúnos gráficos.

Es posible que alguna vez te hayan sugerido que leas el wiki de simutrans en alemán, para consultar cosas acerca de como crear objetos. Y estoy seguro de más de una vez te han dicho que eches un vistazo a los tutoriales del foro en portugués, por su calidad y claridad.

Si eres un amante de los trenes, y de Simutrans en general y nunca has pasado por japanese.simutrans.com, no sabes lo que te estás perdiendo. Cosas como este sistema de carreteras elevadas, que incluye paradas de autobús con ascensor estas a solo unos clics de distancia..

Y ya no es solo el hecho de tener una enorme cantidad de objetos extra disponbles, sino la cantidad de ideas y estrategias que pueden surgir con solo usarlos o verlos.

En resumen, mezclaros, participad en foros de otros idiomas, buscad información en sitios no habituales y descargad contenidos en otras lenguas, que la comunidad es mucho más grande que la pequeña isla donde se habla español. Como decía Pablo Coelho
Hay en el mundo un lenguaje que todos comprenden: es el lenguaje del entusiasmo, de las cosas hechas con amor y con voluntad, en busca de aquello que se desea o en lo que se cree.





7/10/08

Gas al mono, que es de goma

En Simutrans existen una serie de cadenas industriales orientadas a la producción de energía, tales como las centrales de carbón ó las centrales de energía solar del pak64.

Este tipo de centrales también se dan en la vida real, pero yo echo de menos las centrales de ciclo combinado (gas). Por eso voy a hablaros de una nueva cadena industrial que tengo en mente desde hace algun tiempo: la cadena del gas licuado (LNG en inglés)

Leer más...

Una cadena industrial se compone, en su forma más básica, de un productor, un consumidor, una mercancía y un vehículo para transportarla.

En este caso el productor sería el yacimiento de gas, el consumidor la central eléctrica de gas ó ciclo combinado, la mercancía sería el gas licuado y el vehículo serían las cisternas (barcos, camiones y trenes)

La ventaja que tienen las cadenas industriales de energía es que parte de sus eslabones pueden llegar a formar parte de o dar lugar a otras cadenas. Por ejemplo, en la cadena de las centrales eléctricas de carbón, la mina se usa además como parte la cadena del acero.

Mi idea es crear una cadena base con varias opciones, y después derivarla hacia el comercio de gas que será consumido en las ciudades. Estaría formada por los siguientes elementos:

  • Yacimientos de gas: estos elementos serían los principales productores de gas. Estarían situados tanto en el mar como en tierra, a semejanza de los yacimientos petrolíferos. Tendrían una producción de unas 400-500 unidades diarias.

  • Centrales eléctricas: estas formarían parte del grupo de consumidores finales. Las centrales son de ciclo combinado (combustión del gas mueve una turbina) por tanto solo consumen gas, pero se puede crear una central mixta gas-carbón. De esta manera, se implica a la cadena del carbón y la gestión supone un nuevo reto para el jugador.

  • Centros de almacenamiento y procesado: En caso de que se quiera orientar la cadena industrial hacia el comercio de gas, es recomendable que exista un elemento intermedio de la cadena que haga algo con la mercancía. En este caso dicho elemento convertiría el gas licuado en gas butano ó propano, para que sea consumido en las ciudades.

  • Centros de Distribución: como en Simutrans aún no es posible construir gaseoductos, es necesario transportar el gas tratado hasta los centros de distribución dentro de las ciudades. Tenemos que situar este elemento en las ciudades, para que actúe como consumidor final de la cadena(imagen) y consumiría un 60% de lo que produjesen los yacimientos, unas 50 unidades diarias.

  • Vehículos: En este caso necesitamos al menos un barco, un vagón de mercancías estilo cisterna y un trailer para líquidos. Es necesario al menos un vehículo para cada medio por donde se vaya a transportar la mercancía.

  • Mercancías: la principal mercancía sería el gas licuado (LNG) con un peso por unidad de 540 kg y un precio de por unidad. Este se produciría en los yacimientos y se consumiría en las centrales. En caso de optar también por la vertiente comercial, habría que introducir otra mercancía, que sería producida por el intermediario para que la consumiera el mercado/industria de la ciudad. Este nueva mercancía podría ser el gas butano o propano, con un peso algo mayor que el LNG y un precio ligeramente mayor. Ambas pertenecerían a la categoría de líquidos, ya que se suelen transportar en ese estado y en cisternas (cadena completa)

  • Infraestructuras extra: sería bueno crear algunas estructuras extra para la carga del gas en los puertos ó en las estaciones de mercancías, por ejemplo. Echad un vistazo a la imagen y comprenderíes a que me refiero.




Todo esto es un proyecto aun por definir, pero tiene puntos muy interesantes y según mi opinión introduciría nuevos retos estratégicos para el jugador de Simutrans.

Más informacion aquí

6/10/08

Como hace un autobus en dos horas (I)

Empezamos la serie de entregas acerca de como crear una autobus para simutrans en aproximadamente 2 horas. En esta primera entrega partiremos de la escena básica. Si nos sabes de que va la cosa, echa un vistazo aquí antes de seguir leyendo. También usaremos una plantilla del autobus MG MetroRider 150 (enlace), pero puedes usar cualquier otra.

Leer más...

Si no tienes mucha idea, te recomiendo que leas todos los artículos de la serie Básicos de Blender antes de lanzarte a modelar.

Bien, pues empezamos arrancando Blender y cargando la escena básica mediante el menu File >> Open. Una vez cargada la escena, pasamos a situar la plantilla como imagen de fondo, para que nos sirva de guía. Si aún no sabes cómo, echa un vistazo a este artículo. Una vez que tenemos todo listo, pasamos a modelar.

Primero, creamos un plano, pulsando espacio y seleccionando Add >> Mesh >> Plane. Nos situamos en la vista lateral (Side) y colocamos el plano sobre la vista lateral del vehículo, como se muestra en la imagen.

Lo que vamos a hacer a continuación es reconstruir el contorno del vehículo, a partir del plano mediante distintas extrusiones. Seleccionamos el plano, y en modo edición (pulsa TAB) ajustamos los vértices superiores del plano, situándolos al inicio de los parachoques del vehículo. A continuación, pasamos a modo bordes y seleccionamos el borde superior. Pulsamos E y extruimos hasta el siguiente punto de inflexión, donde el contorno del vehículo cambia. Repetimos la operación tantas como sea necesario hasta llegar al techo.

Seguidamente alineamos todos los vértices (ver resultado) y pasamos a crear los huecos de las ruedas. Para ello aplicaremos la técnica de la subdivisión. Seleccionamos TODOS los bordes horizontales del plano, no solo los del contorno, y en modo edición accedemos al menú Specials. Pulsamos en la opción Subdivide, y veremos que aparece una línea que atraviesa el plano de arriba abajo (imagen).

A continuación, seleccionamos todos los vértices de dicha línea, los alineamos respecto del eje Y (pulsa S+Y+cero) y los desplazamos hasta situar la línea en el punto medio de la rueda trasera. Ahora, para hacer el hueco de la rueda seleccionamos los cuatro primeros bordes horizontales de la parte derecha, empezando desde abajo y subdividimos de nuevo (resultado) Alineamos los cuatro vértices resultantes con la forma de la rueda.

Seguidamente pasamos al modo caras, y seleccionamos las caras de la parte superior (imagen) eliminándolas. Pasamos a modo vértices, seleccionamos los vértices situados en el contorno. Pulsamos F y vemos como han formado un borde. Volvemos al modo bordes y seleccionamos todos aquellos que no tengan cara. Pulsamos F y vemos como se ha formado una cara que ocupa la superficie de las dos anteriores.

Para terminar el hueco, seleccionamos los bordes que están entre el punto medio y el contorno de la rueda (imagen) y subdividimos. Ya solo tenemos que desplazar el grupo de vértices de la izquierda hacia la izquierda y alinearlo con el contorno de la rueda.

Por último, pasamos a modo caras y seleccionamos todas las que ocupan el hueco de la rueda. Pulsamos SUPR y las eliminamos, dejando el hueco.

Para modelar la rueda delantera hay que seguir el mismo proceso, pero esta vez subdividimos los los cinco primero bordes, contando desde abajo, situados a la izquierda de la rueda trasera. Es posible que tras subdividr, en la parte intermedia aparezcan un par de caras rebeldes (imagen). Solo teneís que eliminarlas, seleccionar los bordes que han dejado (4 bordes huérfanos) y pulsar F para reconstruir la cara. El resto es aplicar los mismos pasos dados para crear el hueco de la rueda trasera.


El resultado final tiene que ser algo parecido a esta imagen:


En la siguiente entrega veremos como modelar el perfil y como crear las ruedas, antes de lanzarnos a poner las texturas.


1/10/08

Recetas para unos objetos equilibrados

Tras realizar los gráficos para un objeto de Simutrans, uno se suele preguntar ¿y ahora qué? ¿cuáles son los valores adecuados para los distintos atributos del objeto? ¿cuales son los límites razonables? ¿en mi decisión, debe primar la jugabilidad o la diversión? ¿están reñidas una con la otra? Normalmente muchas de estas preguntas quedan contestadas con solo fijarse en los otros objetos del juego (donde fueres, haz lo que vieres) pero muchos de los objetos de pak oficial no estan equilibrados.

Vamos a comentar algunos aspectos a tener en cuenta para crear objetos "jugables" que permitan la diversión y reten al jugador para que aplique la estrategia.

Leer más...

En principio, como hay muchos objetos, voy a centrarme en dos de los tipos que he estado desarrollando en los últimos tiempos: los edificios de ciudad y los vehículos.

Los edificios de ciudad incluyen edificios residenciales, industriales y comerciales. Se podrían incluir las atracciones turísticas, pero eso lo dejaremos para otro artículo. Los edificios de ciudad se rigen por tres parámetros fundamentales, que son level, chance y build_time.

El parámetro level define el nivel que debe tener la ciudad en que se va a construir el edificio (de 0 a 30). Este nivel viene determinado por la población de la misma. El parámetros chance (o suerte) define las probabilidades de que ese edificio sea escogido frente a otros con el mismo level (0-100). Por último, tenemos el parámetro build_time, que especifica el número de habitantes que debe tener la ciudad para que se construya el edificio.

Como os habreís fijado, son tres elementos muy importantes. Por ejemplo, si quieres que tu edificio solo aparezca en ciudades grandes, porque es un rascacielos o un bloque de apartamentos, pon un valor alto en level. Si quieres que tu edificio aparezca muy a menudo, aumenta el valor de chance. Y si quieres especificar más, usa build_time. Por tanto, teniendo estos tres parámetros en mente, podremos crear edificios de ciudad equilibrados.

En el caso de los vehículos la cosa se complica, porque el número de parámetros aumenta, y sobre todo se complica la relación entre ellos. En este caso, los parámetros más importantes son los siguientes: running cost, cost, payload, weight, power y speed. Existen algunos otros secundarios como gear, pero los dejamos para otra ocasión. El primero son los costes operativos, es decir, lo que cuesta el vehículo por cada km recorrido. El segundo es el precio del vehículo y el siguiente es la capacidad en unidades. Por último, tenemos el peso y la velocidad el vehículo.

El principal objetivo al crear un vehículo es que este sea jugable, es decir que no pierdas dinero con el siempre, pero que suponga un reto para el jugador, que tenga los beneficios ajustados "forzando" a que el jugador adopte determinadas estrategias para obtener beneficios.

Una de las estrategias principales es ligar los beneficios al precio y el coste operativo. Lo que hacemos es pensar en cuanto tiempo queremos que se amortice el vehículo. Si cuesta 500.000 créditos y el coste operativo es de 100 créditos x km, suponiendo un beneficio de 50.000 créditos al mes, el jugador verá compensada su inversión en unos 50 meses (unos 4 años) Con esto fuerzas al jugador a tener que planificar algo a largo plazo, sino perderá dinero.

Otra de las opciones es jugar con la carga, el peso, la potencia y la velocidad, los cuales estan fuerte asociados con el bonus de velocidad. ¿Y de qué va esto del bonus? basicamente premia al jugador por llevar la carga de una determinada mercancía a más velocidad media de la establecida por el bonus según el medio en que se transporta. Cada periodo de tiempo del juego tiene su bonus.

Como supongo que habreís notado, cuanto mayor sea el peso, tanto de la carga (payload) como del vehículo (weight) más lento irá el convoy, y por tanto menos posibilidades tendrá dicho vehículo de obtener el bonus. Pero aún hay más, ya que si la velocidad y la potencia del vehículo tienen valores muy grandes se corre el riesgo de que ese vehículo obtenga un bonus muy alto y haga que el resto de vehículos no sean rentables. Esto da lugar a que el jugador siempre se incline por dicho vehículo, mermando la jugabilidad del conjunto del juego.

Mi consejo en este caso es ser lo más estricto posible con el precio y el coste operativo, teniendo en cuenta las fechas en que el vehículo está disponible. No es lo mismo 10.000 créditos en 1920 cuando tienes pocas oportunidades de negocio y transporte, que en 1970 con montones de posibles vehículos disponibles.

Otra recomendación es que el peso de la carga no sea nunca mayor que el doble del peso del vehículo. No tiene mucho sentido un vagon de 18 tn lleve una carga de 60 tn.

Por último, en cuanto a la potencia y la velocidad, hay que intentar ser realistas y razonables. La potencia es un parámetro muy sensible ya que dota de más o menos aceleración al vehículo, y además afecta directamente a la velocidad, por tanto hay que ajustarlas a la baja tanto como sea posible, para que el vehículo sea jugable pero no perjudique al resto.

En resumen, y sin que sirva de precedente, debeís ser bastante conservadores, tacaños y realistas con los atributos, pues está demostrado que eso repercute directamente en una mejor jugabilidad y mayor diversión.