31/12/08

Feliz año 2009 para todos

4 meses, más de 70 entradas y no sé cuantas visitas después seguimos por aquí dando guerra. Solo desear a todos un feliz año 2009, que en el caso de Simutrans pinta muy pero que muy bien. ¡¡a pasarselo bien y a disfrutar de estas fechas!!

14/12/08

Debes buscar sin buscar

Lo que más llama la atención de Blender en un primer momento es su interfaz, un tanto espartana. No hay barra de herramientas con menús ni iconos de acceso rápido a las tareas más comunes. Simplemente es distinto a la gran mayoría de las aplicaciones para crear 3D que existen en el mercado. Es por eso que hay un buen montón de acciones y atajos que no son obvios, no se pueden ver a simple vista. Vamos a hablar un poco de esas interesantes características que se esconden bajo la alfombra de Blender.

Leer más...

Las diferentes teclas de teclado numérico (numpad, a la derecha en el teclado de un pc de sobremesa) dan acceso a las distintas vistas de la escena. Si pulsa CTRL al mismo tiempo, accederás a la vista trasera de cada vista.

¿Sabías que existe otro modo de cámara, llamado modo volador (flying mode) que te permite navegar por la escena con total libertad usando la vista desde la cámara? Pulsa SHIFT+F para acceder a dicho modo. Para moverte usa el raton lentamente, o las teclas WASDRF. Es muy útil para ver desde otro punto de vista la escena y sus detalles.

Las escenas en Blender vienen con distintas configuraciones de escritorio por defecto para determinadas tareas (script, edición de vídeo, modelado, pantalla completa, animación) Puedes acceder a cada una de ellas pulsando CTRL+Flechas.

Blender almacena las imágenes renderizadas en dos buffers. Si has hecho un render y vuelves a pulsar F12, la imagen anterior se almacenará en el buffer secundario, al que puedes acceder (incluso durante el renderizado en curso) pulsando J. Puede ser útil para ver como han afectado los cambios a los distintos elementos de la escena, por ejemplo. Se me olvidaba, también puedes hacer zoom en la ventana de render pulsando Z o usando la rueda del ratón.

¿Has necesitado alguna vez conocer los valores RGBA de cierta zona de la imagen renderizada? La solución es bien fácil. Cuando la ventana de render esté abierta, mantén pulsado el boton izquierdo del ratón y verás como en la parte inferior de la ventana aparecen dichos valores.

Otro muy útil pero que no he probado aún sirve para aquellas superfices con zonas negras, que no deberías estar ahí. Esto parece ser debido a las normales (¿?) y para solucionarlo solo tienes que seleccionar todos las caras, pulsar CTRL+N y confirmar.

If you have a scene with a hundred mesh objects, say 50 of them have one texture and 50 of them have another.

Un truco muy bueno para cuando tienes una escena con muchos objetos, y quieres cambiar o poner la misma textura a todos. Crea un plano fuera de la vista de la cámara de la escena. Añade una nueva textura (Material) al plano. A continuación, pulsa el boton Copy to material Buffer que está en la parte superior del menu Material buttons (es el botón de flecha hacia arriba). Seguidamente selecciona un objeto del mismo tipo que quieras cambiar, abre el menú Material y pulsa en Paste from Material Buffer (botón de la flecha hacia abajo). Es una técnica que te ahorrará mucho tiempo.

Para aplicar un material a muchos objetos al mismo tiempo, selecciónalos todos, aplica el material (solo tendrá efecto en el último seleccionado) y presiona CTRL+L >> Materials para enlazar el material del último objeto seleccionado a resto

Otro muy interesante que sirve para guardar la progresión tanto de las escenas como de las imágenes. Si guardas la escena usando "Save as" pulsas la tecla +(más) podrás numerar el fichero/imagen que represente el progreso/versión del mismo. Logicamente, pulsando el -(menos) restas.

Cuando vayas a cargar una textura como imagen, si al pulsar en el botón load mantienes pulsada la tecla CTRL accederás al modo vista previa, que te permitirá ver las imágenes en miniatura.

Por último, algunas rápidas de propina:
-Shift+V, posiciona la cámara perpendicularmente a la cara seleccionada.
-Alt+S, escala los vértices seleccionados perpendicularmente a la cara seleccionada.
-Shift+ALT+Botón Derecho del Ratón(BDM), sirve para seleccionar directamente los bulces de caras, vértices y bordes.
-ALT+BDM, puedes seleccionar cualquier objeto desde una vista aunque no sea visible.
-A muestra el canal alpha en la ventana de renderizado.
-CTRL+ALT+SHIFT+T muestra el banco de pruebas de Blender, para ver cuantos fps
aguanta tu pc.
-CTRL+Arriba/Abajo maximiza y minimiza la ventana actual.
-CTRL/SHIFT+ALT+SCROLL del Ratón rota la vista respecto del eje Z/X.
-CTRL+TAB cambia el modo de selección (vértices, caras y bordes).
-CTRL+T convierte la malla del objeto en triángulos.



Teneís más trucos en CGTalk -- Cool things in Blender that aren't so obvious y la lista completa en Blender 3D: Noob to Pro/Cool Things

10/12/08

Libros, caminos y días dan al hombre sabiduría.

Supongo que mucha gente que descubre el juego tiene unas ganas enormes de crear contenidos para el mismo. Vehículos, edificios, skins, texturas, etc... A primera vista parece complicado, hasta que te enteras de como va la cosa de los ficheros dat, png y pak. Después viene el tema de encontrar ejemplos donde apoyarte. Por último, llega la prueba de fuego cuando tienes que decidir que herramientas vas a usar para crear esos contenidos graficos. Es más, aunque tengas experiencia con alguna de dichas herramientas, tienes que andar preguntando acerca de un buen montón de aspectos y formas de proceder para crear objetos....un proceso que desanima a más de uno.

Desde hace tiempo me venía rondado la idea de crear una especie de guía que arroje algo de luz sobre el proceso de creación de objetos para Simutrans, así que me decidía y le puse un nombre al proyecto: Guia para Artistas y Modeladores 3D

Leer más...


Este documento no pretende ser un manual de Blender o GIMP, ni mucho menos, ya que creo que para eso existen mejores documentos y libros como el wiki de Blender que explican con profundidad todas y cada una de las posibilidades de esta herramientas. No espereís una extensa introducción a ninguna de ellas, eso os lo dejo a vosotros.

Esta guía informal es una compilación de varios de los artículos escritos aquí, junto con relatos de mis experiencias, conocimientos y técnicas adquiridas durante todos los procesos de creación de objetos para Simutrans que he llevado a cabo, resultado de buscar mucha información, preguntar a un montón de antiguos creadores de objetos y artistas.

¿Por qué hacer una guía solo con Blender y GIMP? Básicamente por la experiencia que tengo con ellos, porque son gratis y por tanto accesibles para todos, y por último porque soy un firme defensor del software libre...:)

Aún estoy definiendo cuales pueden ser los contenidos, pero este podría ser un primer boceto del esqueleto principal.

  • Portada con logo de Simutrans entre Blender y GIMP

  • Licencia creative commons

  • Agradecimientos...a papa, mama, Hajo..

  • Modelado

    • Basicos de Blender

    • Modelado Poligonal

    • Partículas (humo) y Agua

    • Modificadores


  • Texturas

    • UV Mapping

    • Bump maps (Nor)

    • Normal

    • Transparencias

    • Nodos


  • Render

    • Blender Render Engine

    • Ambient Occlusion

    • Yafray

    • Toon Shading

    • Iluminación


  • Ejemplos simples

    • Vehículos (avión, tren, barco y camión)

    • edificios de cuidad (residencial, comercial e industrial)

    • monumentos (plazas, estatuas, atracciones turísticas)

    • extensiones (ferrocaril y carretera)


  • Ejemplos complejos

    • Animaciones

    • Vehículos múltiples

    • Edificios con planta irregular

    • Objetos móviles

    • Puentes

    • Otras ideas interesantes..


  • Herramientas

    • Shades

    • Tilecutter

    • PakHelper


  • Scripts

    • Blender (Gen3,..)

    • GIMP (..)


  • Glosario

  • Creditos de las imágenes



Como podeís ver, he intentado cubrir todos los aspectos del proceso desde el modelado hasta el uso de herramientas específicas para determinadas tareas. No he incluido apartados referentes a la composición de los archivos dat (que contienen los atributos de los objetos) porque creo que ese apartado ya está lo suficientemente bien cubierto por el wiki alemán.

Aún tengo algunas dudas acerca de como enfocar el tema de los ejemplos. No sé si usar ejemplos independientes para los distintos apartados, o ejemplos comunes a varios apartados para ir guiando al lector y enganchar unos conceptos con otros de forma sensata.

Tampoco tengo claro si sería más adecuado explicar todos los conceptos primero, y después poner ejemplos, o mezclarlo todo, explicando a la vez que muestras los resultados prácticos.

La cosa está en sus primeras etapas, pero espero tener algo para después de navidades.

2/12/08

Shades, el eliminador

Si hiciéramos un lista de las herramientas más útiles creadas por la comunidad de Simutrans, está ocuparía sin duda el segundo puesto. Su sencillez y versatilidad hacen más fáciles ciertas tareas molestas para muchos creadores de objetos. Se puede decir que existe un antes y un después de Shades alias El eliminador, obra de uno de los miembros más importantes de la comunidad de Simutrans, Vladimir Slavik más conocido como VS

Leer más...

¿Y qué es lo que hace este programa, si puede saberse? hace pocas cosas, pero las hace bien y facilmente. Por un lado nos permite eliminar los colores especiales (nocturnos y de jugador) y añadir el color de fondo que representa la transparencia en Simutrans (E7FFFF), y además podemos alinear de manera facil y sencilla las imágenes del objeto. Aqui debajo teneís una muestra del menú principal.


En la primera fila tenemos los modos y herramientas principales. Empezando por la derecha, el primer grupo se corresponde con las opciones de Abrir, Guardar y Guardar como, a continuación tenemos los botones de Zoom (+ y -) junto con la opción de Añadir imagen de fondo. Los siguientes son los tres modos de vista existentes: Diurno, Nocturno y Colores especiales. Por último tenemos los tres modos de operación/uso que son Área, Pincel y Alineación junto con los botones de rehacer y deshacer. Los dos restantes son las opciones de configuración y los créditos de programa.

Como los primeros botones tiene una función evidente, pasamos directamente a los modos de vista. Como ya hemos dicho, una de las funciones de Shades es eliminar esos colores especiales que aparecen en ciclo nocturno o aquellos que representan al color elegido por un jugador. Si cargaís la imagen de un objeto cualquiera es bastante posible que contenga algún color de este tipo. Pues bien, Shades te permite ver de forma rápida en que zonas están esos colores, simplemente pulsando en cada uno de los botones de los modos, como podeís ver en la animación.

Ya hemos dicho que existen varios modos de acción o uso para eliminar o añadir estos pixeles con colores especiales: Área y Pincel. Vamos a analizar cada uno por separado.

Podemos activar el modo Área pulsando en el boton correspondiente de la barra de menus o pulsando la tecla A. A continuación, bajo la barra de herramientas aparecerá otra nueva barra como esta (el botón de modo Área está recuadrado en amarillo)


Este modo se basa en crear zonas que contengan a los pixeles conflictivos, de esta forma nos ahorramos el tener que eliminarlos uno por uno. Si pulsamos sobre la imagen, veremos que el cursor cambia de color y se empieza a delimitar el área que ocupará dicha zona. Se pueden crear tantas áreas como queramos, una encima de otra o al lado. El área activa se muestra en verde y el resto en azul.

Una vez creada el área tenemos cuatro posibles acciones, cada una con un botón. Empezando por la izquierda tenemos:
  • Process Areas que elimina todos los colores especiales (nocturnos y de jugador) pero solo en la zona comprendida dentro del área.

  • Clean All.. que elimina los colores especiales de toda la imagen.

  • Clean New.. que elimina algunos colores especiales que se han incorporado a la lista recientemente.

  • Repare Background.. que sustituye el color de fondo de la imagen por el E7FFFF que representa la transparencia en Simutrans.

  • Flechas de siguiente y anterior que sirven para saltar de un área a otra, en caso de que haya más de una.

  • Remove y Remove All para eliminar un área concreta o todas.

  • Por último tenemos las opciones con casilla Remove glowing colors y Remove player colors que se usan conjuntamente con el boton Process Areas para indicar que acciones se deben realizar al procesar todas las areas existentes. En este caso eliminaría los colores nocturnos y/o de jugador


El modo pincel no es mucho más complicado. Es más, te permite un nivel de detalle mucho mayor. Si quieres arreglar una ventana, o solo quieres modificar un par de pixeles, este el modo adecuado para llevarlo a cabo. Para acceder a dicho modo, pulsa el boton asociado en la barra de menus o pulsa la tecla P. A continuación, bajo la barra de herramientas aparecerá otra nueva barra como esta (el botón de modo Área está recuadrado en amarillo)


Las opciones de este modo son las siguientes, de izquierda a derecha:
  • Pen que te permite pintar los pixeles uno por uno. Úsalo para los detalles.

  • Color Bucket para rellenar zonas del mismo color.

  • Special color eraser que elimina únicamente aquellos pixeles que contengan colores especiales. Si intentas pintar sobre un pixel de color normal no pasa nada.

  • Special color eraser (fill) elimina conjuntos de pixeles adyacentes que contengan colores especiales.

  • si marcas la opción Diagonal fill, podrás realizar todas las acciones anteriores sobre lineas diagonales, sin necesidad de ir pixel por pixel.

  • Por último tenemos las opciones Edit in external editor y External editor settings que te permiten usar un programa externo como GIMP, Photoshop, Paint.NET o PaintShop Pro para editar la imagen.


En la parte de abajo, de la ventana aparecen la lista de colores especiales, y para cada uno su correspondiente sustituto, que evidentemente no es un color nocturno ni especial. Es útil cuando tienes que eliminar luces de ventanas o de coches. Si sabes el código hexadecimal, vas directamente a la tabla, lo seleccionas y lo reemplazas. Por ejemplo, el color de las luces amarillas es FFFF53.


Finalmente tenemos el modo Selección que sirve entre otras cosas para mover las distintas imágenes del archivo png a nuestro gusto. Lo más habitual es usar esta función para alinear los vehículos de forma fácil y rápida. Para ello no tenemos más que pulsa el boton de dicha función o la tecla M y seleccionar cualquiera de las vistas de la imagen. El cursor cambiará de forma, y podremos mover ese elemento a nuestro antojo.

Existen algunas otras opciones menos evidentes a primera vista pero no por ello menos útiles como la posibilidad de añadir una imagen de fondo, para poder poner el cesped a un edificio o una estatua por ejemplo, o usar un programa de dibujo externo como GIMP o similar, pero esa parte de investigación os la dejo a vosotros.

No dejeís de usar esta excelente herramienta que os ahorrará mucho tiempo y más de un dolor de cabeza. Podeís descargarla en la página personal de VS. Por cierto, a día de hoy aún está sin traducir al español, así que si alguien se anima que se ponga en contacto con VS a través del Foro Internacional de Simutras

Nota: Imágenes de ejemplo cortesía de TommPa9 y graphics.simutrans.com

30/11/08

10 consejos mientras aprendes Blender

Más de uno habrá sufrido lo suyo para aprender a manejar Blender. El que tenga un interfaz atípico sin menús es una de sus señas de identidad, y algo que echa para atrás en un primer momento. Una vez te acostumbras a él, no viene mal seguir estos sabios consejos sacados de www.mathiaspedersen.com

Leer más...


Esto es una traducción de dicho artículo salpicada con experiencias propias. La gran mayoría son consejos fruto del sentido común, aún así viene bien tenerlos en cuenta.

  1. Disciplina, decisión y curiosidad deben guiar el proceso de aprendizaje. Nadie te va a dar nada echo, tendrás que aprender cosas por ti mismo. La gran mayoría de problemas tienen algún solución conocida, fruto de la experiencia, solo tienes que buscar un poco. Ten siempre en mente la idea de aprender...

  2. Usa los motores de búsqueda para encontrar lo que necesites. Parece algo evidente y conocido, pero mucha gente prefiere preguntar a otros en vez de buscar primero. Es más rápido, fácil y directo buscar el contenido usando estas herramientas que publicando un comentario o un mail, donde tienes que esperar la contestación y explicar detalladamente el problema para evitar equívocos y malentendidos.

  3. Consulta el manual de forma habitual. Debe ser una de tus primeras fuentes de información. Mucha gente pasa del manual, considerándolo inútil por largo, pesado y complicado de entender (yo estaba en ese grupo hasta hace poco) En el caso de Blender, esto no es del todo cierto. El wiki de Blender es uno de los más completos, con ejemplos, imágenes y cientos de artículos que cubren todos los aspectos del programa. Tómate tu tiempo para revisar a fondo las partes que necesites.

  4. Los foros tienen la opción de búsqueda por si no lo sabías. Muchas preguntas ya tiene respuesta. Las dudas más habituales ya han sido preguntadas y resueltas, entonces ¿por qué no usar la función de búsqueda? ¿por qué gastar tu tiempo y el de los demás preguntado lo mismo otra vez? Es posible que no encuentres lo que buscas, y en ese caso puedes acudir a gente experimentada que sabrá donde localizar lo que deseas. Pero no lo hagas por comodidad.

  5. Se realista y consciente de tus posibilidades. No te ofusques con grandes proyectos, ve poco a poco. Cosas sencillas, que puedas terminar con los conocimientos que posees. Los pequeños proyectos dan más ánimo que los grandes proyectos inacabados.

  6. La crítica y el intercambio de ideas deben guiar tu aprendizaje. Muestra tus trabajos a otros. Permite que lo evalúen destacando los punto fuertes y débiles. Otra perspectiva te ayudará a mejorar. Se flexible y no dudes en aceptar consejos y aplicar los cambios pertinentes.

  7. No seas ultracompetitivo, siempre habrá alguien mejor que tú. Por tanto, no pretendas comparar tu trabajo con los logros de otros. Cada persona es única y singular, con estilo propio. No tiene sentido emular a otros para ser igual que ellos.

  8. Observa y aprende de tu entorno. Cuando no estés frente al ordenador, fíjate en lo que te rodea, en el mundo real. Observa los detalles y comportamientos de todo lo que tienes a tu alrededor, no des nada por sentado. Esto de ayudará a reproducirlo con mayor exactitud. Busca material de referencia como fotos, vídeos o textos que describan dicho entorno.

  9. Diviértete ante todo. Si no sientes que esto es un hobby, algo que te hace pasar un buen rato, tal vez deberías reconsiderar las cosas. Nadie hace las cosas correctamente si no está cómodo. A fin de cuentas se aprende mejor y más rápido cuando te lo pasas bien.

  10. Trasmite a otros lo que has aprendido hasta el momento. Esto te puede ayudar a entender las cosas mucho mejor. Comparte tus experiencias, trucos y técnicas tanto como puedas. Difundir tus conocimientos te ayudará a ti también.



Como ya hemos dicho, muchos de los consejos son de sentido común. Otros se dan por la propia experiencia de aprendizaje. Desde mi punto de vista, son 10 máximas muy sensatas que conviene tener en cuenta en todo momento. Después de todo, para muchos de nosotros esto no deja de ser una afición personal que ocupa parte de nuestro preciado tiempo libre ¿por qué no aprovecharlo de la mejor forma posible?

Así que lo dicho: disfrutad, aprended, curiosead y enseñad a otros..

Proyectando las texturas sobre objetos

"Colocar" un textura a medida en un objeto complejo, con muchas caras y superficies, puede ser llegar a ser una pesadilla. Si intentas usar el método habitual, no obtienes el resultado deseado ya que no se adapta completamente al modelado del objeto. Si optas por el mapa UV, el objeto tiene tantas caras que es una torturas desplegarlas y manipularlas hasta que quedan como deseas. ¿Acaso existe alguna solución?.....uhmm, es posible que no sea la definitiva, pero al menos es una técnica socorrida para casos como este.

Leer más...


Este método es un modificador, es decir algo que se aplica a un objeto para modificar su estado, composición o configuración. En este caso, esta opción proyecta la imagen de un mapa UV en la malla desde un proyector.

La técnica consiste en modificar el mapa UV a partir de uno o más proyectores, consiguiendo que la textura se adapte perfectamente al modelado del objeto. El efecto se limita a las caras asociadas a ese mapa UV, por tanto debes usar UV mapping y ademas activar la opción TexFace.

Las opciones disponibles son las siguientes:
V Layer selecciona la capa UV que se verá afectada. Si no hay ninguna, se deshabilita el modificador.

AspX y AspY establecen el tamaño de la imagen proyectada, mientras que Projectors hace referencia al número de objetos que proyectaran (max. 10)

Ob es cada uno de los objetos que proyectarán la textura. Puede ser una cámara o un objeto cualquiera. Al proyectar, se usará como referencia el objeto más perpendicular a cada cara del objeto.

Por último tenemos Image, que hace referencia a la imagen usada. Override Image controla cuando se debe anular el efecto para la(s) cara(s) actual(es). Puede que nos interese aplicar el efecto solo al techo de una casa, o solo a las ventanas, mantiendo otra técnica de texturización para el resto de caras del objeto.

Para aplicar esta técnica realiza los siguientes pasos:

  • Crea un cámara nueva en la escena. Pulsa tecla Espacio >> Add >> Camera y ponle un nombre adecuado como proyector. Para ello pulsa F9 (Editing) y en el menú Links and Materials, el campo F | OB:.

  • Selecciona el objeto, pasa a modo edición. Divide la ventana y selecciona el menu de UV/ Image Editor.

  • Pulsa U en la ventana donde está el objeto y selecciona la opción Unwrapp del menu UV Calculation. Verás como aparece en la otra parte de la pantalla una zona rosa que representa el mapa UV del objeto.

  • Carga una imagen en esa ventana, pulsando en Image >> Open. Recuerda el nombre de la imagen para más adelante.

  • En la parte de la pantalla donde está el objeto, lo seleccionamos y vamos a F9 (Editing). En la pestaña Modifiers pulsamos en Add Modifier seleccionando la opción UV Project.

  • El valor del campo Ob es el nombre de la cámara (projector) y el del campo Image es el de la imagen a proyectar (en mi caso cp.png)

  • Pulsamos en Apply, renderizamos (F12) y deberíamos obtener algo como esto o parecido. El resultado puede variar dependiendo de donde hallaís colocado la cámara proyectora.

  • Si pasamos a modo representación en textura (Draw type >> Textured) y movemos la cámara que proyecta la textura veremos como la representación de la misma cambia según la posición del proyector. Si movemos el objeto, pasa lo mismo.


Se puede hacer todo tipo de combinaciones como dos proyectores sobre varias caras, varios sobre todo el objeto, etc.. las posibilidades son muchas y muy variadas. En el ejemplo de la derecha, he aplicado un textura a las caras laterales y otra a la superior. Segun la cara seleccionada se aplica una textura u otra.

Sé que es una técnica compleja y tal vez algo avanzada para la gente que está empezando. Incluso yo he tenido problemas para entenderla y aplicarla, pero creo que es bueno saber que existen otros métodos de aplicar texturas, muy útiles en determinadas situaciones.

Más información:
Artículo en Blender Wiki
Tutorial sobre el tema con ficheros de apoyo(EN)

24/11/08

Monstruos ferroviarios para Simutrans

Hace poco terminé una serie sobre locomotora de mercancías (Mtab LKAB Iore 103) y me he dado cuenta una cosa. Si te fijas en las cantidades de mercancía que se mueven en Simutrans, no hay muchas locomotoras diesel o eléctricas lo suficientemente potentes para mover tales cantidades, al menos no el pack oficial.

Estamos hablando de 1800-2200 tn de carbón que equivalen a unos 20-24 vagones de 80-100 tn cada uno. Ahora mismo no hay una máquina con potencia suficiente para mover eso a una velocidad razonable, por eso me puse a buscar y encontré una interesante discusión acerca de las locomotoras más potentes del mundo en RailPictures.net

Leer más...

En el tema de discusión original proponían el interesante juego de descubrir cual era la locomotora más potente del mundo, que potencia tiene y como és comparada con las locomotoras de vapor tipo Big-boy, unas de las más potentes que existieron en su época.

Estos son los candidatos:
  • SD90MAC-H (USA): esta locomotora diesel introducida en 1995, sirve a una de las compañías ferroviarias mas famosas del mundo, la legendaría Union Pacific. También sirvio para la Canadian Pacific Railway. Desarrolla una potencia de 4660 kW, y es una de las locomotoras de un solo vagón más largas del mundo. Esto no lleva a preguntarnos como se debería modelar: con dos vagones muy juntos, o uno solo muy largo y especificando la gran longitud en el archivo dat con el atributo lenght y valores 12 o 16

  • GE AC6000CW (USA): Esta locomotora diesel se usa desde mediados de los 90 para transportar principalmente mineral de hierro, en USA y Australia. Pesa unas 192 tn, desarrolla un potencia de 4660 kW y alcanza los 120 km/h. Es bastante fea, pero tiene unos esquemas de color interesantes, y además se pueden combinar varias para obtener mayor potencia.

  • GE E60C-21 (USA): esta locomotora eléctrica de los 80, desarrolla una potencia de 4500 kW y alcanza una velocidad de 145 km/h. Se usa para transportar ingentes cantidades de carbón desde minas hasta puertos. Es bastante larga, lo cual implica que hay que partirla en 2 vagones pero es bastante cúbica con y sin bordes ni formas redondeadas. Un buen candidato.

  • VL85 (Rusia): Es normal que en países de enorme extensión como Rusia o USA, existan locomotoras tan potentes que permitan llevar gran cantidad de mercancías a distancias medias (600-1.000 km). Este es el caso de esta potente locomotora que operaba en la linea del trans-siberiano introducida en 1983, que es capaz de desarrollar 10.000 kW de potencia (+ de 13.000 cv) permitiendo que arrastre hasta a un velocidad de 110 km/h. Su peso es de 288 tn, pero se compensa con su enorme potencia. Es una locomotora larga, de dos vagones que en Simutrans tendrían que quedar como cuatro, para guardar las proporciones.

  • SBB-CFF-FFS Re 620 (Suiza): el país transalpino, al igual que otros de europa central como Alemania son famosos por sus potentes locomotoras de mercancías, no obstante parte del transporte de las mismas se realiza mediante ferrocarril. Fue introducida en los 70 y aún existen bastantes en uso. Es eléctrica y desarrolla una potencia de 7850 kW, lo que le permite mover cantidades cercanas a las 1.300 tn en pendientes de hasta el 25% de desnivel, pudiendo llegar hasta las 1.600 tn. Sin duda una buena candidata, aunque muchos de vosotros sabreís lo caro que salen las locomotoras eléctricas en Simutrans.

  • Clyde Engineering and Walkers 3300/3400 (Australia): esta preciosidad se suele usar en parejas para proporcionar unos 6.000 kW de potencia en el arrastre de mercancías a lo largo y ancho del país. Pesa unas 113 toneladas por unidad y fue introducida en 1994. A pesar de ser actual, su diseño no es muy aerodinámico, más bien tosco y cúbico pero eso hace que sea fácil de modelar a priori.

  • Mtab LKAB DM3 (Suecia): Hay países que no son muy extensos, pero la orografái del terreno y las condiciones climáticas son muy duras y exigentes. Por este motivo los ferrocarriles de mercancías tienen que ser muy pontentes y eficientes para poder llevar la mayor cantidad de mercancía posible en cualquier situación. Este es el caso de la DM3, un locomotora sueca de los años 60. Está compuesta por tres vagones, lo cual le permite desarrollar una potencia de 7,200 kW, pero engorda su peso hasta las 274 tn. Es potente, relativamente rápida (75 km/h) y fácil de modelar ya que son tres vagones independientes.


Como podeís ver, los candidatos son variados e interesantes. La dificultad de modelado no es muy alta ya que casi todos tienen formas cúbicas toscas y muy básicas. Se ve que lo que prima no es el aerodinamismo, sino la robutez.

fotos cortesía de: RailPictures.net, Wikipedia, Wikimedia y home.railscene

19/11/08

Pak Helper, el pequeño ayudante de MakeObj

Hay que reconocer que a veces es molesto tener que usar la consola de MSDOS en Windows o GNU/Linux para compilar los archivos pak de los objetos que hemos creado. Hay veces que no te acuerdas de los comandos ni de los parametros que hay que usar con makeobj. Pues para esto existe una herramienta en Windows que hace más agradable y fácil dicho proceso. Su nombre es PakHelper..

Leer más...

Primero debemos descargar el programa de la página del autor, descomprimimos el fichero zip y obtenemos la carpeta Pak Helper cuyo contenido es el que vemos en la imagen: el ejecutable del programa, el ejecutable de makeobj, un fichero ini y un archivo readme.txt con las instrucciones de uso en inglés.

La versión de makeobj que trae el programa puede ser antigua. Si quieres actualizarla, para poder hacer uso de los últimos avances del motor del juego en tus objetos (offset, length, etc..) puedes reemplazarla por cualquier otra versión de makeobj nueva o vieja. Ve al menú Options >> Select Makeobj y selecciona el ejecutable de la nueva versión de Makeobj, normalmente makeobj.exe.

Nota: cada nueva versión de Simutrans, lleva aparejada una nueva versión de makeobj que está disponible en la sección de descargas de la página de Simutrans en SourceForge.


Tras esto, hacemos doble clic en ParkHelper.exe y nos encontramos con un interfaz bastante sencillo e intuitvo. Todas las opciones necesarias para compilar un archivo .pak están a mano en la pestaña PAK.


Primero, seleccionamos el pak para el cual vamos a crear el objeto: pak64, pak126, pak96, etc... Fijaos que podemos especificar cualquier tamaño de gráficos. Si queremos que nos notifiquen los fallos activamos al casilla Error check. Después vamos al campo de texto Select dat file y ponemos la ruta del archivo dat que queremos compilar. Otra opción es pulsar en el boton Open y buscarlo.

A continuación pulsamos en Do pak y listo. En caso de que el dat contenga los atributos de varios objetos, se crearán varios archivos pak diferentes. Si quieres juntarlos y obtener uno solo, tienes que especificar el nombre de dicho archivo en el campo de texto Merge pak file name.

El archivo pak se crea en el mismo directorio donde está el ejecutable de PakHelper. En ese mismo directorio existe un archivo llamado pak.log donde se almacenan los mensajes generados durante la compilación. Conviene echarle un vistazo por si hay algún problema (no puede acceder a la imagen, errores sintácticos, etc...)

El resto de pestañas sirven para acceder a las opciones avanzadas de makeobj. En la pestaña Merge puedes unir varios archivos con extensión pak en uno solo. Pulsa en Open y busca el archivo pak. Repite la operación tantas veces como archivos pak quieras unir. En el campo bajo Select pak files aparecerán la lista de los archivos pak que quieres unir. A continuación, rellena el campo Merge pak file name con el nombre del archivo que aglutinará a todos ellos, haz clic en Do merge y obtendrás un archivo .pak con dicho nombre.


La pestaña List te permite obtener un listado de los objetos contenidos en un fichero pak, en caso de que haya más de uno. Haz clic en Open y selecciona el archivo pak, y se añadirá a la lista Pak file list. Puedes repetir la operación para añadir más archivos. Cuando termines pulsa Do list y obtendrás una lista de objetos contenidos en dichos paks

Por último, la pestaña Extract te permite extraer ficheros pak de otros ficheros pak. En teoría te tendría que permitir obtener el contenido de un fichero pak, pero el formato pak no es reversible.
NO ES POSIBLE EXTRAER LOS ARCHIVOS DAT Y PNG DE UN ARCHIVO PAK.
Esta es la razón principal del uso de dicho formato, para proteger los derechos de los autores, aunque ahora ya están disponibles los archivos fuente de los paks de gráficos en el SVN.

El procedimiento es el mismo que antes, seleccionamos el archivo o archivos pak a procesar pulsando Open y hacemos clic en Do Extract. El programa reflejará todos los mensajes en el cuadro Extract log y pulsando en Move pak files obtendremos la lista de los ficheros extraídos.

Existe la opción de especificar el directorio donde queremos que vayan a parar los archivos pak tras compilarlos. Vamos al menú Options >> Select extract pak files folder y buscamos el directorio donde queremos tener esos ficheros pak.

Existe incluso una versión mini, cuyo interfaz solo tiene dos botones, uno para el tipo de pak y otro para hacer que el makeobj compile el archivo .pak... solo para aquellos que no quieran complicarse con la versión extendida, y solo necesiten crear el archivo o archivos pak.

Sin duda alguna, una herramienta muy recomendable para usar facilmente el makeobj en Windows. Una buena mejora sería añadir soporte para más idiomas, el español entre ellos, pero creo que la herramienta es lo suficientemente sencilla como para que el desconocimiento del inglés no suponga un impedimento para su uso.

Por cierto, no existe versión para Linux pero no he probado si con Wine se puede usar....

18/11/08

Bienvenido a la descarga 100.000 d.s

Este es un momento importante para todos. Un hito en la historia de Simutrans, y de la comunidad que lo mantiene. Un gran logro sin duda alguna que refleja el enorme esfuerzo de tanta gente por crear un juego complejo y maduro....

Leer más...

¡No te tires el rollo y di cual es la gran noticia! ya va, ya vaaaa... bueno el acontecimiento histórico es que...

¡¡Simutrans ha superado las 100.000 descargas en un año!!

Desde que el proyecto fue acogido en por el gigante SourceForge, mas de 100.000 personas han descargado simutrans, en cualquier de sus versiones.Se que llegamos un poco tarde, porque esta cifra se alcanzó a primeros de Noviembre, de hecho fue el fin de semana previo al 3 de Noviembre, pero como dicen nunca es tarde si la dicha es buena.

Hay que resaltar que en las estadísticas no se especifica si son descargas únicas, aún así tomando como referencia el ejecutable de Simutrans salen 100.000

Podemos decir que la era d.s. (desde SourceForge) promete grandes alegrías, las descargas crecen mes a mes asi que felicidades de nuevo a tod@s los que han colaborado para que Simutrans llegue a ser lo que es.

12/11/08

Te llevamos al otro lado con Mirror modifier

Normalmente, mucho de los objetos que se crean para Simutrans son simétricos. No es fácil modelar todo el objeto al mismo tiempo, prestando atención al ambas mitades a la vez. Lo que solía hacer era crear una de las mitades y duplicarla, para crear un clon que que mas tarde sería replicado (mirrored) en uno de los ejes para crear una copia perfecta. Por suerte existe otra forma de llevar a cabo dicha tarea de manera fácil y rápida, llamada mirror modifier.

Leer más...

Lo normal antes de usar dicha técnica es modelar una de las mitades del objeto, usando plantillas o blueprints a ser posible. Seguidamente aplicamos el modificador y obtenemos una copia exacta en cualquier de los ejes de referencia. El proceso de replicado se realiza tomando el centro del objeto como referencia (punto central)


El proceso de replicado se puede realizar tomando como referencia cualquier eje (X, Y, Z) o incluso todos ellos al mismo tiempo. Basta con marca la opción deseada.

A veces surgen problemas, como que el centro del objeto no está en la posición adecuada, y la parte replicada se solapa con la original. En este caso, antes de aplicar el modificador selecciona el objeto, pasa a modo edición y selecciona todos los vértices pulsando A. Después, activa el botón XXXXXXX (IMAGEN) que te permitirá mover el objeto sin desplazar el centro del mismo. Separa el objeto de su centro, y listo. No olvides desmarca el botón cuando termines.

Las opciones disponibles son:

  • Merge Limit que indica la distancia entre vértices a partir de la cual se fusionarán. Es decir, si cualquiera de los vértices de ambas partes esta a una distancia menor de su par, ambos se juntan en uno solo. Es muy útil para no tener que unir ambas vértice por vértice.

  • X,Y,Z establecen los planos de referencia para el duplicado, como hemos explicado anteriormente

  • Do Clipping evita que los vértices de un lado sobrepasen el plano de referencia usado para hacer la réplica. Ojo, si has activado esta opción y los vértices están fuera del Merge Limit, esto no se unirán (derecha) Si están dentro del límite, se combinarán pero no se podrán mover del plano de referencia usado para replicar (centro). Si seleccionas varios vértices, con diferentes distancias al plano de referencia, se combinarán uno a uno en dicho plano (izda).



Otra de las ventajas es que la mitad replicada hereda todas las características de la mitad original incluidas texturas, mapas UV y otros modificadores. Con lo cual solo tenemos que aplicar la textura a una de las mitades.


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.

27/9/08

Interesante tutorial de pixel-art

Estaba leyendo una artículo la revista de pixel-art NEWGEEK Magazine, muy recomendable por cierto, donde colabora un artista freelance de pixel-art australiano llamado Rhys Davies. El caso es que lás imágenes del artículo eran muy buenas, y explicaba alguna técnicas interesantes así que me decidí a visitar su página web y encontré este tutorial llamado "The Complete Guide To Isometric Pixel Art".

Leer más...

El tutorial es muy completo y pasa por todas las etapas necesarias para poder dibujar usando la técnica del pixel art. Va desde las herramientas necesarias(GIMP, Photoshop ó Paint) pasando por los conceptos básicos (líneas, ángulos, formas, luces) hasta cosas más complicadas como texturas, cristales y dibujar gente. Además incluye mini tutoriales. En fin, un recurso muy útil para todos aquellos que no se atrevan con Blender pero que tengan destreza con el pixel.

Fuente: Eboy - copyright 2002



Enlace: The Complete Guide To Isometric Pixel Art.