📚 Docs

Mods de Mapas: Fase 2

Actualizado con la v252 - Abril de 2020 Por Marcos Elias

Introducción

¡La fase 2 del sistema de mods de mapas de Proton Bus permite tener pasajeros, tráfico y otras cosas más en el juego! Esto lo eleva a otro nivel, literalmente se puede separar el Proton antes y después de esta característica. ¡Es casi como un juego nuevo!

Aviso: Debido a cuestiones de tiempo, no es posible dar soporte individual en el proceso de conversión y edición. Recomendamos intentar por usted mismo, viendo cómo se hicieron los otros mapas y explorando las estructuras de los archivos. Prefiera publicar dudas y problemas relacionados en los grupos del juego en Facebook, así las soluciones atienden a todos, y también otros productores de mods pueden ayudarle.

Si aún no está suscrito, entre al canal del productor: www.youtube.com/marquinhosxp. Algunos videos y tutoriales se publican allí.

Página oficial de PBSU en Facebook: https://www.facebook.com/protonbusoficial Y de PBSR: https://www.facebook.com/protonbusrod.oficial/

Grupos en Facebook

Grupo exclusivo para creadores de mods: https://www.facebook.com/groups/pbsmods/ ¡Por favor, evite entrar en este si es solo jugador, para no saturar con publicaciones fuera del tema (que serán eliminadas)!

Grupos para usuarios: En estos sí, publicaciones libres de capturas de pantalla, consejos, videos, tutoriales diversos, etc., desde el punto de vista de los jugadores:

Consejo de un buen sitio de donde obtener texturas para los mods: http://www.textures.com


Observaciones referentes a la fase 1

Antes de iniciar un mapa en la fase 2, es necesario haber dominado la producción del nivel básico para la fase 1. Si aún no tiene familiaridad, no se preocupe, es posible seguir con esta guía acompañando el mapa de ejemplo. El mayor requisito es tener conocimientos básicos de Blender, pues usaremos este para exportar los mapas.

La documentación antigua referente a la fase 1 está aquí, para mapas: http://blog.protonbus.com.br/2019/09/experimental-mods-de-mapas-no-pbs.html

Y para autobuses: http://blog.protonbus.com.br/2018/09/primeira-fase-do-sistema-de-mods-de.html

¡Siempre es bueno estar con la versión más reciente del juego! Las antiguas ya no son soportadas, la beta está en constante evolución, así que siempre consideramos la más reciente. Puede encontrar las compilaciones más recientes en http://pbsu.busmods.com para el urbano y http://pbsr.busmods.com para el de carretera.

Básicamente usamos Blender 2.79 para producir el escenario, exportamos el modelo en formato 3ds y creamos la estructura de carpetas y archivos para el sistema de Proton Bus.

IMPORTANTE: ¡USE BLENDER 2.79! El exportador necesario para el formato actual del juego no funciona con Blender 2.8, aparentemente fue descontinuado y nadie hasta hoy lo actualizó. Quién sabe si en el futuro vuelva a funcionar, hay gente intentándolo.

Puede descargar Blender 2.79 aquí: https://download.blender.org/release/Blender2.79/ La versión más reciente normalmente es la que lleva una “b” en el nombre. La plataforma es indiferente, dependerá de su sistema (Windows, Linux o Mac) y arquitectura (32 o 64 bits).

Si ya inició el mapa en el 2.8, la recomendación sería exportar a algún formato intermedio que el 2.79 pueda abrir y entonces exportar a partir de él para el juego.

IMPORTANTE: ¡MODIFIQUE EL EXPORTADOR DE 3DS PARA PROTON! El exportador estándar de 3ds de Blender trunca los nombres de los objetos y de las texturas en 12 caracteres. Normalmente necesitaremos más que eso para evitar errores en los nombres de algunas piezas y/o en las texturas.

Descarga del plugin de Blender alterado para exportar (archivo para Blender 2.79): http://proton.viamep.com/coisas/export_3ds_protonbus_blender279.zip

TUTORIAL DE CÓMO ALTERAR EL PLUGIN: https://youtu.be/0EokFmSjGdA

Si prefiere, en vez de descargar este, altere el archivo export_3ds.py de la carpeta scripts\addons\io_scene_3ds de su Blender. Busque [:12] y cambie el 12 por un número mucho mayor, como 999. Es el límite de caracteres. Sin esto la exportación para el juego puede fallar.

CONSEJO: AL DESCARGAR BLENDER PUEDE OPTAR POR LAS VERSIONES “PORTABLE” EN ZIP, PARA MANTENER VARIAS VERSIONES AL MISMO TIEMPO.


La estructura de archivos del mod de mapa

El mapa en Proton se compone de varios archivos txt (de texto puro), y algunas carpetas. La estructura primaria esencial es un txt de definición de mapa y una carpeta, ambos quedando dentro de la carpeta maps, que a su vez queda en la carpeta de mods del juego.

Ejemplo de estructura en PC:

Estructura de Carpetas

El txt de definición del mapa debe terminar en .map.txt (ej: Estrada Longa.map.txt). ¡Debe ser un nombre único!

IMPORTANTE: ¡JAMÁS USE ACENTOS, CE-CEDILLA O CARACTERES ESPECIALES EN LOS NOMBRES DE ARCHIVOS DE LOS MODS!

Dentro de este txt tendremos la estructura básica:

[map]
baseDir=Estrada Longe 
; La carpeta base del mapa, que queda en maps junto al .map.txt

modelsDir=Rota 1 
; La carpeta de los modelos, que queda dentro de la carpeta tiles

textures=textures 
; La carpeta de las texturas

mapModVersion=2 
; ¡Utilice el número 2 en la Fase 2!

preview=preview.png 
; Imagen de la pantalla de selección (16:9, ej: 640x360)

Dentro de la carpeta base del mapa deben existir otras carpetas:

Carpetas Base

  • dest: Almacena letreros y placas.
  • skins: Almacena las pinturas de los autobuses del mapa (dentro de skins/0/pbc).
  • textures: Almacena las texturas. ¡Evite JPG, use PNG!
  • tiles: Debe tener este nombre obligatoriamente. Dentro de ella queda la carpeta de modelos (modelsDir).

IMPORTANTE: ¡LOS MODS DE MAPAS DE PROTON BUS SE CARGAN POR COMPLETO! NO PUEDEN SER MUY PESADOS. CASO VAYA A HACER VARIAS LÍNEAS LARGAS, DIVÍDALAS EN PARTES.

Dentro de la carpeta definida en modelsDir, quedan los archivos exportados .3ds y configuraciones:

Carpeta Tiles

Estructura interna de la carpeta de modelos:

Subcarpetas Modelos

  • aipeople: Configuraciones de los peatones.
  • aitrains: Configuraciones de los trenes.
  • aivehicles: Configuraciones del tráfico.
  • busstops: Configuraciones de las paradas de autobús.
  • entrypoints.txt: Configuraciones avanzadas de los puntos de entrada.
  • entrypoints_list.txt: Lista simple de los puntos de entrada.

IMPORTANTE: ¡LOS MODS NO ESTÁN PROTEGIDOS! TÉCNICAMENTE NINGÚN JUEGO LO ESTÁ. LA ÚNICA FORMA DE NO TENER SU MOD EDITADO O FILTRADO ES NO LANZÁNDOLO.


Configurando los puntos de entrada

Los puntos de entrada definen dónde aparece el autobús al iniciar el juego. Deben tener nombres únicos (ej: 351F-10 TP, Garagem Central).

IMPORTANTE: ¡JAMÁS USE ACENTOS O CARACTERES ESPECIALES EN ESTOS NOMBRES! NO USE BARRAS TAMPOCO.

entrypoints_list.txt

Lista simple, un nombre por línea.

Lista de Entrypoints

entrypoints.txt

Define la posición y rotación física en el mapa.

Configuración Entrypoints

Recuerde: En Blender Y es frente/atrás y Z es altura. En Unity (juego), Y es altura y Z es frente/atrás. ¡Invierta Y y Z al copiar coordenadas!

Para descubrir las coordenadas, use un objeto Empty en Blender:

Empty en Blender

Letreros y Destinos

En la carpeta dest, cree carpetas con EXACTAMENTE el mismo nombre de los entrypoints definidos en el txt.

Carpeta Dest

Dentro de cada carpeta de destino quedan las imágenes:

Imágenes Destino

IMPORTANTE: ¡EVITE IMÁGENES MAYORES QUE 2048 PÍXELES PARA CELULARES!

Nombres de archivos sugeridos para letreros:

  • 1.png, 2.png, 3.png (Letreros electrónicos 1024x128)
  • capelinhaDigital.png, capelinhaPVC.png (256x128)
  • lonaDestino.png, lonaLinha.png (Letreros de lona)
  • placa1.png, placa2.png, placa3.png (Placas laterales y frontales)

Configurando los pasajeros

Cada parada debe tener un nombre único en el 3D (ej: zzPonto1).

En Blender (3D)

La parada consiste en:

  1. Un cubo invisible (trigger) llamado nombredelaparada_trigger.
  2. Objetos pequeños (planos/cubos) para posición de los pasajeros, llamados nombredelaparada.000, nombredelaparada.001, etc.

Parada en Blender

CONSEJO: Use planos simples para los pasajeros para ahorrar polígonos.

Trigger correcto:

Trigger Correcto

Ejemplo de trigger bien posicionado:

Trigger Ejemplo

Ejemplo de trigger mal posicionado (¡no puede!):

Trigger Errado

Superpuestos (¡no puede!):

Trigger Superpuesto

Correcto en paradas opuestas:

Puntos Opuestos

Visualización en el Debug:

Debug Mode

En el archivo .txt (busstops)

Cree un txt en la carpeta busstops con el mismo nombre de la parada.

Txt Busstop

[busstop]
name=Parada de la Plaza
isLeft=0
paxAmount=15

[from_3d]
readFrom3D=1
prefix=zzPonto1
maxPathsToCheck=30
defPaxRotY=90
  • prefix: Debe coincidir exactamente con el nombre usado en el 3D (antes del .000).
  • defPaxRotY: Rotación estándar de los pasajeros (pruebe 0, 90, 180, -90).

Configurando los peatones

Funciona similar a las paradas: una secuencia de objetos definiendo un camino (path). Ejemplo: xxCalcada1.000, xxCalcada1.001, etc.

Path Peatones Blender Peatones

Cree un txt en la carpeta aipeople:

Txt Peatones

[automatic_setup]
enabled=1
loop=0
reverse=0

[defaults]
isSpawner=1
spawnInterval=5
allowBicycle=0
  • loop=1: El último punto conecta al primero (circular).
  • loop=0: El camino termina en el último punto (lineal).

Configurando los vehículos del tráfico

¡Simplemente igual a los peatones! Carpeta aivehicles.

Txt Trafico

  • isBusSpawner=1: Para hacer aparecer autobuses.
  • spawnInterval: Aumente para reducir el tráfico.
  • speedMultiplier: Altere la velocidad (ej: 0.5 mitad, 2 doble).

Configurando las pinturas de los autobuses

Coloque las skins (PNG) en skins/0/pbc. El juego elige aleatoriamente. Base de skin del PBC: http://omsi.viamep.com/proton/base-skins-pbc-protonbussimulator.zip


Configurando los trenes

Misma lógica, carpeta aitrains. Recomendación: isSpawner=0 en defaults, y defina spawners manuales espaciados.

Txt Trenes

  • randomTimeToWaitAtStart=1: Comienza en tiempo aleatorio.
  • spawnTimeInterval: Intervalo entre trenes (ej: 120 segundos).

IMPORTANTE: ¡TRENES NO PARAN! ELLOS ATROPELLAN TODO. NO HAGA PASOS A NIVEL.


Comandos y nombres especiales en los modelos 3D

  • Transparencia: Use _transparent_ en el nombre del objeto (ej: grade_transparent_).
  • Colisionadores: Use _gencol_ para generar colisionador automático (calles, aceras). ¡Úselo con moderación!
  • Colisionador Invisible: Use _gencol_invisible_ (ej: barreira_gencol_invisible_).
  • Emissive: Use _emissive_ para objetos siempre encendidos.
  • Zona de Baja Velocidad: Objeto _low_speed_zone_ para terminales (evita quejas).

Low Speed Zone

  • Forzar Salida: Objeto _force_exit_ cerca de la parada final.

Force Exit

  • Detalles Extras: Termine el archivo 3DS con _det1.3ds (ej: arvores_det1.3ds). Solo carga si el usuario activa "Detalles Extras".

Configuración de las texturas centelleantes

Para evitar texturas parpadeando (z-fighting/flickering) en el suelo, cree un archivo .config.txt junto a la textura. Ej: asfalto.png.config.txt.

Config Txt


Extras - Consejos de optimización

  • Texturas Pequeñas: Use 256x256 o 512x512 para texturas repetitivas.
  • MAX 2048px: ¡NUNCA use texturas mayores que 2048px para celulares!

Aviso Textura

  • Colisionadores: Evite colisionadores complejos. Use _gencol_ solo en el suelo y paredes principales.
  • Materiales: Evite muchos materiales en el mismo objeto.
  • Combine Objetos: Combine árboles cercanos con el mismo material para reducir draw calls.

¡Eso es todo por ahora! ¡Buena diversión!