Atualizado com a v252 - Abril de 2020 Por Marcos Elias
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/
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
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.
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:

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:

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:

Estrutura interna da pasta de 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.
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.
Lista simples, um nome por linha.

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

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:

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

Dentro de cada pasta de destino ficam as imagens:

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)Cada ponto deve ter um nome único no 3D (ex: zzPonto1).
O ponto consiste em:
nomedoponto_trigger.nomedoponto.000, nomedoponto.001, etc.
DICA: Use planos simples para os passageiros para economizar polígonos.
Trigger correto:

Exemplo de trigger bem posicionado:

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

Sobrepostos (não pode!):

Correto em pontos opostos:

Visualização no Debug:

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

[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).Funciona similar aos pontos: uma sequência de objetos definindo um caminho (path).
Exemplo: xxCalcada1.000, xxCalcada1.001, etc.

Crie um txt na pasta aipeople:

[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).Simplesmente igual aos pedestres! Pasta aivehicles.

isBusSpawner=1: Para fazer aparecer ônibus.spawnInterval: Aumente para reduzir o tráfego.speedMultiplier: Altere a velocidade (ex: 0.5 metade, 2 dobro).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
Mesma lógica, pasta aitrains.
Recomendação: isSpawner=0 no defaults, e defina spawners manuais espaçados.

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.
_transparent_ no nome do objeto (ex: grade_transparent_)._gencol_ para gerar colisor automático (ruas, calçadas). Use com moderação!_gencol_invisible_ (ex: barreira_gencol_invisible_)._emissive_ para objetos sempre acesos._low_speed_zone_ para terminais (evita reclamações).
_force_exit_ perto do ponto final.
_det1.3ds (ex: arvores_det1.3ds). Só carrega se o usuário ativar "Detalhes Extras".Para evitar texturas piscando (z-fighting/flickering) no chão, crie um arquivo .config.txt junto da textura.
Ex: asfalto.png.config.txt.


_gencol_ apenas no chão e paredes principais.Isso é tudo por agora! Boa diversão!