📚 Docs

Mods de Mapas: Fase 2

Atualizado com a v252 - Abril de 2020 Por Marcos Elias

Introdução

A fase 2 do sistema de mods de mapas do Proton Bus permite ter passageiros, tráfego e outras coisas a mais no jogo! Isso eleva ele a um outro patamar, literalmente dá para separar o Proton antes e depois deste recurso. É quase que como um novo jogo!

Aviso: Devido questões de tempo, não é possível dar suporte individual no processo de conversão e edição. Recomendamos tentar por você mesmo, vendo como foram feitos os outros mapas e explorando as estruturas dos arquivos. Prefira postar dúvidas e problemas relacionados nos grupos do jogo no Facebook, assim as soluções atendem a todos, e também outros produtores de mods podem lhe ajudar.

Caso ainda não esteja inscrito, entre no canal do produtor: www.youtube.com/marquinhosxp. Alguns vídeos e tutoriais são postados lá.

Página oficial do PBSU no Facebook: https://www.facebook.com/protonbusoficial E do PBSR: https://www.facebook.com/protonbusrod.oficial/

Grupos no Facebook

Grupo exclusivo para criadores de mods: https://www.facebook.com/groups/pbsmods/ Por favor, evite entrar neste caso seja apenas jogador, para não tumultuar com postagens fora do tema (que serão excluídas)!

Grupos para usuários: Nestes sim, postagens livres de prints, dicas, vídeos, tutoriais diversos, etc, do ponto de vista dos jogadores:

Dica de um bom site de onde obter texturas para os mods: http://www.textures.com


Observações referentes à fase 1

Antes de iniciar um mapa na fase 2, é necessário ter dominado a produção do nível básico para a fase 1. Se você ainda não tem familiaridade, não se preocupe, é possível seguir com este guia acompanhando o mapa de exemplo. O maior requisito é ter conhecimentos básicos de Blender, pois usaremos ele para exportar os mapas.

A documentação antiga referente à fase 1 está aqui, para mapas: http://blog.protonbus.com.br/2019/09/experimental-mods-de-mapas-no-pbs.html

E para ônibus: http://blog.protonbus.com.br/2018/09/primeira-fase-do-sistema-de-mods-de.html

É sempre bom estar com a versão mais recente do jogo! As antigas não são mais suportadas, o beta está em constante evolução, então sempre consideramos a mais recente. Você encontra as compilações mais recentes em http://pbsu.busmods.com para o urbano e http://pbsr.busmods.com para o rodoviário.

Basicamente usamos o Blender 2.79 para produzir o cenário, exportamos o modelo no formato 3ds e criamos a estrutura de pastas e arquivos para o sistema do Proton Bus.

IMPORTANTE: USE O BLENDER 2.79! O exportador necessário para o formato atual do jogo não funciona com o Blender 2.8, aparentemente ele foi descontinuado e ninguém até hoje atualizou. Quem sabe futuramente ele volte a funcionar, tem um pessoal tentando.

Você pode baixar o Blender 2.79 aqui: https://download.blender.org/release/Blender2.79/ A versão mais recente normalmente é a que leva um “b” no nome. A plataforma é indiferente, vai depender do seu sistema (Windows, Linux ou Mac) e arquitetura (32 ou 64 bit).

Se você já iniciou o mapa no 2.8, a recomendação seria exportar para algum formato intermediário que o 2.79 possa abrir e então exportar a partir dele para o jogo.

IMPORTANTE: MODIFIQUE O EXPORTADOR DE 3DS PARA O PROTON! O exportador padrão de 3ds do Blender trunca os nomes dos objetos e das texturas em 12 caracteres. Normalmente precisaremos de mais do que isso para evitar erros nos nomes de algumas peças e/ou nas texturas.

Download do plugin do Blender alterado para exportar (arquivo para o Blender 2.79): http://proton.viamep.com/coisas/export_3ds_protonbus_blender279.zip

TUTORIAL DE COMO ALTERAR O PLUGIN: https://youtu.be/0EokFmSjGdA

Se preferir, em vez de baixar este, altere o arquivo export_3ds.py da pasta scripts\addons\io_scene_3ds do seu Blender. Procure por [:12] e troque o 12 por um número bem maior, como 999. Ele é o limite de caracteres. Sem isso a exportação para o jogo pode falhar.

DICA: AO BAIXAR O BLENDER VOCÊ PODE OPTAR PELAS VERSÕES “PORTABLE” EM ZIP, PARA MANTER VÁRIAS VERSÕES AO MESMO TEMPO.


A estrutura de arquivos do mod de mapa

O mapa no Proton é composto de vários arquivos txt (de texto puro), e algumas pastas. A estrutura primária essencial é um txt de definição do mapa e uma pasta, ambos ficando dentro da pasta maps, que por sua vez fica na pasta de mods do jogo.

Exemplo da estrutura no PC:

Estrutura de Pastas

O txt de definição do mapa deve terminar em .map.txt (ex: Estrada Longa.map.txt). Deve ser um nome único!

IMPORTANTE: JAMAIS USE ACENTOS, CE-CEDILHA OU CARACTERES ESPECIAIS NOS NOMES DE ARQUIVOS DOS MODS!

Dentro deste txt teremos a estrutura básica:

[map]
baseDir=Estrada Longe 
; A pasta base do mapa, que fica na maps junto ao .map.txt

modelsDir=Rota 1 
; A pasta dos modelos, que fica dentro da pasta tiles

textures=textures 
; A pasta das texturas

mapModVersion=2 
; Utilize o número 2 na Fase 2!

preview=preview.png 
; Imagem da tela de seleção (16:9, ex: 640x360)

Dentro da pasta base do mapa devem existir outras pastas:

Pastas Base

  • dest: Armazena letreiros e placas.
  • skins: Armazena as pinturas dos ônibus do mapa (dentro de skins/0/pbc).
  • textures: Armazena as texturas. Evite JPG, use PNG!
  • tiles: Deve ter este nome obrigatoriamente. Dentro dela fica a pasta de modelos (modelsDir).

IMPORTANTE: OS MODS DE MAPAS DO PROTON BUS SÃO CARREGADOS POR INTEIRO! NÃO PODEM SER MUITO PESADOS. CASO VÁ FAZER VÁRIAS LINHAS LONGAS, DIVIDA ELAS EM PARTES.

Dentro da pasta definida em modelsDir, ficam os arquivos exportados .3ds e configurações:

Pasta Tiles

Estrutura interna da pasta de modelos:

Subpastas Modelos

  • aipeople: Configurações dos pedestres.
  • aitrains: Configurações dos trens.
  • aivehicles: Configurações do tráfego.
  • busstops: Configurações dos pontos de ônibus.
  • entrypoints.txt: Configurações avançadas dos pontos de entrada.
  • entrypoints_list.txt: Lista simples dos pontos de entrada.

IMPORTANTE: OS MODS NÂO SÃO PROTEGIDOS! TECNICAMENTE NENHUM JOGO É. A UNICA FORMA DE NÃO TER SEU MOD EDITADO OU VAZADO É NÃO LANÇANDO ELE.


Configurando os pontos de entrada

Os pontos de entrada definem onde o ônibus aparece ao iniciar o jogo. Devem ter nomes únicos (ex: 351F-10 TP, Garagem Central).

IMPORTANTE: JAMAIS USE ACENTOS OU CARACTERES ESPECIAIS NESTES NOMES! NÃO USE BARRAS TAMBÉM.

entrypoints_list.txt

Lista simples, um nome por linha.

Lista de Entrypoints

entrypoints.txt

Define a posição e rotação física no mapa.

Configuração Entrypoints

Lembre-se: No Blender o Y é frente/trás e Z é altura. Na Unity (jogo), Y é altura e Z é frente/trás. Inverta Y e Z ao copiar coordenadas!

Para descobrir as coordenadas, use um objeto Empty no Blender:

Empty no Blender

Letreiros e Destinos

Na pasta dest, crie pastas com EXATAMENTE o mesmo nome dos entrypoints definidos no txt.

Pasta Dest

Dentro de cada pasta de destino ficam as imagens:

Imagens Destino

IMPORTANTE: EVITE IMAGENS MAIORES QUE 2048 PIXELS PARA CELULARES!

Nomes de arquivos sugeridos para letreiros:

  • 1.png, 2.png, 3.png (Letreiros eletrônicos 1024x128)
  • capelinhaDigital.png, capelinhaPVC.png (256x128)
  • lonaDestino.png, lonaLinha.png (Letreiros de lona)
  • placa1.png, placa2.png, placa3.png (Placas laterais e frontais)

Configurando os passageiros

Cada ponto deve ter um nome único no 3D (ex: zzPonto1).

No Blender (3D)

O ponto consiste em:

  1. Um cubo invisível (trigger) chamado nomedoponto_trigger.
  2. Objetos pequenos (planos/cubos) para posição dos passageiros, chamados nomedoponto.000, nomedoponto.001, etc.

Ponto no Blender

DICA: Use planos simples para os passageiros para economizar polígonos.

Trigger correto:

Trigger Correto

Exemplo de trigger bem posicionado:

Trigger Exemplo

Exemplo de trigger mal posicionado (não pode!):

Trigger Errado

Sobrepostos (não pode!):

Trigger Sobreposto

Correto em pontos opostos:

Pontos Opostos

Visualização no Debug:

Debug Mode

No Arquivo .txt (busstops)

Crie um txt na pasta busstops com o mesmo nome do ponto.

Txt Busstop

[busstop]
name=Ponto da Praça
isLeft=0
paxAmount=15

[from_3d]
readFrom3D=1
prefix=zzPonto1
maxPathsToCheck=30
defPaxRotY=90
  • prefix: Deve bater exatamente com o nome usado no 3D (antes do .000).
  • defPaxRotY: Rotação padrão dos passageiros (teste 0, 90, 180, -90).

Configurando os pedestres

Funciona similar aos pontos: uma sequência de objetos definindo um caminho (path). Exemplo: xxCalcada1.000, xxCalcada1.001, etc.

Path Pedestres Blender Pedestres

Crie um txt na pasta aipeople:

Txt Pedestres

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

[defaults]
isSpawner=1
spawnInterval=5
allowBicycle=0
  • loop=1: O último ponto liga ao primeiro (circular).
  • loop=0: O caminho termina no último ponto (linear).

Configurando os veículos do tráfego

Simplesmente igual aos pedestres! Pasta aivehicles.

Txt Trafego

  • isBusSpawner=1: Para fazer aparecer ônibus.
  • spawnInterval: Aumente para reduzir o tráfego.
  • speedMultiplier: Altere a velocidade (ex: 0.5 metade, 2 dobro).

Configurando as pinturas dos ônibus

Coloque as skins (PNG) em skins/0/pbc. O jogo escolhe aleatoriamente. Base de skin do PBC: http://omsi.viamep.com/proton/base-skins-pbc-protonbussimulator.zip


Configurando os trens

Mesma lógica, pasta aitrains. Recomendação: isSpawner=0 no defaults, e defina spawners manuais espaçados.

Txt Trens

  • randomTimeToWaitAtStart=1: Começa em tempo aleatório.
  • spawnTimeInterval: Intervalo entre trens (ex: 120 segundos).

IMPORTANTE: TRENS NÃO PARAM! ELES ATROPELAM TUDO. NÃO FAÇA PASSAGENS DE NÍVEL.


Comandos e nomes especiais nos modelos 3D

  • Transparência: Use _transparent_ no nome do objeto (ex: grade_transparent_).
  • Colisores: Use _gencol_ para gerar colisor automático (ruas, calçadas). Use com moderação!
  • Colisor Invisível: Use _gencol_invisible_ (ex: barreira_gencol_invisible_).
  • Emissive: Use _emissive_ para objetos sempre acesos.
  • Zona de Baixa Velocidade: Objeto _low_speed_zone_ para terminais (evita reclamações).

Low Speed Zone

  • Forçar Saída: Objeto _force_exit_ perto do ponto final.

Force Exit

  • Detalhes Extras: Termine o arquivo 3DS com _det1.3ds (ex: arvores_det1.3ds). Só carrega se o usuário ativar "Detalhes Extras".

Configuração das texturas cintilantes

Para evitar texturas piscando (z-fighting/flickering) no chão, crie um arquivo .config.txt junto da textura. Ex: asfalto.png.config.txt.

Config Txt


Extras - Dicas de otimização

  • Texturas Pequenas: Use 256x256 ou 512x512 para texturas repetitivas.
  • MAX 2048px: NUNCA use texturas maiores que 2048px para celular!

Aviso Textura

  • Colisores: Evite colisores complexos. Use _gencol_ apenas no chão e paredes principais.
  • Materiais: Evite muitos materiais no mesmo objeto.
  • Combine Objetos: Combine árvores próximas com o mesmo material para reduzir draw calls.

Isso é tudo por agora! Boa diversão!