domingo, 16 de setembro de 2018

PRIMEIRA FASE DO SISTEMA DE MODS DE ÔNIBUS

TODOS OS TESTES DE MODS NESTA FASE SÃO EXPERIMENTAIS. O RECURSO MUDARÁ UM POUCO E OS MODS PODERÃO PARAR DE FUNCIONAR, PRECISANDO SER BAIXADOS NOVAMENTE OU REFEITOS DEPOIS. SÓ BAIXE SE COMPREENDER E CONCORDAR COM ISTO. VOCÊ ESTÁ BAIXANDO ALGO INCOMPLETO, EM DESENVOLVIMENTO, PARA FINS DE TESTE. O SISTEMA DE CONVERSÃO FICARÁ MAIS FÁCIL EM ALGUNS ASPECTOS (CASO DAS COORDENADAS DOS PASSAGEIROS). OS PRIMEIROS MODS SÃO APENAS PARA SE HABITUAR AO PROCESSO. É NECESSÁRIO TER CONHECIMENTOS PRÉVIOS DE BLENDER.

-----------

Download experimental para Windows:
http://www.mediafire.com/file/hctqn68c9ctfcf6/ProtonBus186-Windows-2018-09-16.zip

Download experimental para Android (versão lite):
(aguarde, carregando daqui uns dias depois dos testes no Windows...)

Mod de exemplo: (Mi2 Scania K270)
http://www.mediafire.com/file/c0t3aegvb9jip52/Mi2_Scania_000.zip/file

---------------

PASTA PARA COLOCAR OS MODS:
No PC, coloque os ônibus dentro da pasta "Proton Bus Mods/buses", que fica dentro da Documentos.
No Android a pasta "buses" fica dentro da pasta de dados do aplicativo, normalmente em armazenamento > Android > data > com.viamep.protonbus... > files
Os primeiros mods envolvem um arquivo e uma pasta. Ambos precisam ser extraídos para a pasta "buses". Futuramente o arquivo de configuração ficará na pasta do mod, facilitando o uso. Por isso futuramente os mods precisarão ser alterados, depois do final do teste da primeira fase. Quem for jogar precisa estar ciente disso, poderá ser necessário recolocar o mod.
---------------

Tutoriais de conversão em vídeo:
https://www.youtube.com/watch?v=SXvhpwSrIrw&list=PLLYFgjkWst1p1MYNM28-LCH6450NPFweG
NUNCA CONVERTA UM MOD SEM AUTORIZAÇÃO, pergunte aos autores antes, e sempre cite os créditos! Não use arquivos de imagem ou som de nenhum outro jogo. Pessoas que violam isso poderão ser banidas dos grupos maiores. Antes de compartilhar o mod revise o arquivo de créditos na pasta dele. Evite problemas para você e para os jogadores.
LEMBRE-SE QUE OS MODS NAS FASES INICAIS NÃO SÃO "PROTEGIDOS", AO FAZER MOD VOCÊ ESTÁ CIENTE QUE OUTRAS PESSOAS PODERÃO MODIFICÁ-LOS TAMBÉM. Esperamos respeito de todos com os mods alheios, mas sempre tem os foras da lei, né?

Plugin do Blender alterado para exportar (arquivo do Blender 2.79):
http://167.99.55.217/teste/export_3ds_279.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, pois ele limita a 12 caracteres por padrão os nomes dos objetos e texturas.
Vídeo tutorial disso em breve. É bem simples.

Use apenas texturas PNG! As bitmap, tga ou jpg podem não funcionar no jogo. Se for converter algum mod, atualize os materiais para referenciar a nova textura em png.

CTRL + ENTER recarrega o mod no jogo, mas pode não funcionar sempre. Tente de novo, se o erro persistir feche o jogo e o reabra. Algumas coisas só funcionam assim por enquanto.

Ao jogar com um mod e carregar outro na mesma sessão, talvez algumas texturas não sejam carregadas. Feche e reabra o jogo. Durante o desenvolvimento isto ocorrerá às vezes.

Sobre suporte dos mods:
No momento não é possível fazer uma documentação detalhada, pois as especificações estão sendo ajeitadas para ficarem mais práticas e consequentemente irão mudar um pouco no decorrer do processo. A melhor forma é explorar um mod de exemplo.

NÃO É POSSÍVEL OFERECER SUPORTE/AJUDA NA CONVERSÃO O TEMPO TODO, assista aos tutoriais e tente por você mesmo. Devido o volume de jogadores se torna impossível atender um a um individualmente. O sistema de mods está sendo produzido, a prioriade geral é trabalhar na estabilização dele. Mais vídeos e tutoriais serão postados com o tempo. Por favor, não fique chateado se não pudermos responder aos seus questionamentos. Há realmente muita coisa para fazer ainda.

Bugs e relatos podem ser enviados para:
bugs@viamep.com
Agradecemos a participação, isto ajuda na construção do jogo! Mas não espere uma resposta individual!
Este e-mail é exclusivo para o controle de erros dos bugs, nenhuma outra mensagem será considerada nele. Eles vão para uma planilha dos desenvolvedores e editores do jogo.
O objetivo é coletar os dados e tentar resolver os principais problemas, mas não é possível retornar a um a um individualmente devido o volume de mensagens recebidas. Ao relatar um bug informe o máximo de detalhes possível, dando pistas de como reproduzir a situação (não só falando o que ocorreu, mas onde e como).

---------------

É NECESSÁRIO SABER UM POUCO DE BLENDER. SE NÃO SABE NADA NADA, VEJA OS TUTORIAIS DE BLENDER PARA INICIANTES PARA SE HABITUAR AO PROGRAMA PRIMEIRO.

IMPORTANTE: AS COORDENADAS Y E Z SÃO INVERTIDAS ENTRE O BLENDER E A UNITY:

  • Y NO BLENDER É PARA FRENTE/TRÁS MAS NA UNITY É PARA CIMA/BAIXO.
  • Z NO BLENDER É PARA CIMA/BAIXO, MAS NA UNITY É PARA FRENTE/TRÁS.
AO COPIAR ALGO DE Y NO BLENDER, COLE NO Z DA UNITY (NOS MODS), E VICE-VERSA. O X SE MANTÉM NO MESMO SENTIDO, ESQUERDA/DIREITA.

---------------

ESTUTURA DE ARQUIVOS:

Dentro da pasta buses ficam arquivos de texto com descrições dos ônibus, e uma pasta com o conteúdo. Cada ônibus tem sua pasta, se for criar um, crie uma que dificilmente outra pessoa criaria com o mesmo nome, para evitar substituir sem querer outro mod.

Para criar um novo mod, copie a pasta e o arquivo ini de algum ônibus e altere o nome deles. Dentro do .ini você deve alterar o nome da pasta para a sua duplicada.

O arquivo ".ini" é o arquivo principal de definições. Ele referencia os demais arquivos usados por este ônibus. Atualmente ele fica direto na pasta buses, mas futuramente ficará dentro da pasta do mod, para facilitar o compartilhamento.

Dentro dele há a configuração baseDir, que tem o nome da pasta que ele usa. Futuramente isto será eliminado.

[config]
baseDir=nome da pasta do mod em questão
lights1=arquivo de texto com as definições das luzes
engine1auto=configuração do motor para câmbio automático
engine1manual=configuração do motor para câmbio manual
wheels1=configurações das rodas
sounds1=configurações dos sons
models1=configurações dos modelos 3D

O número 1 no final da propriedade indica que é o arquivo referente à primeira parte do veículo, pensando no futuro suporte a articulados e biarticulados. No caso os articulados terão um 2 para a parte de trás, e um 3 para a última do biarticulado. Não há suporte a estes ônibus e não haverá tão cedo, é algo só para o futuro.

[folders]
skins=skins
textures=textures

Esta seção folders lista os nomes das pastas de skins e texturas do ônibus em questão. São pastas que devem ficar dentro da pasta base do ônibus. Caso você use um modelo com duas variações que compartilham texturas, sons, etc, pode usar a mesma pasta base para ambos, mudando somente a pasta de skins e os arquivos específicos que forem diferentes. Isto permite ocupar menos espaço, por exemplo, imagine uma versão de um modelo com e sem portas esquerdas. A maioria das coisas podem ser as mesmas, só mudando a pasta de skins. Cada um usaria a mesma pasta base e scripts, porém com arquivos .ini diferentes referenciando as pastas de skins específicas. É melhor do que deixar todos os sons e texturas duplicados, o que ocuparia mais espaço. Mas se achar confuso, duplique a pasta toda, não tem problema também.

[doors]
rightdoor1=arquivo de configuração da porta 1 da direita
rightdoor2=configuração da porta 2 da direita
rightdoor3=configuração da porta 3 da direita
leftdoor1=configuração da porta 1 da esquerda
leftdoor2=configuração da porta 2 da esquerda
leftdoor3=configuração da porta 3 da esquerda

A seção doors lista os arquivos de configuração das portas. Eles têm informações sobre a animação das portas e também sua localização, bem como se são de entrada ou saída. Remova as linhas referentes às portas que seu ônibus não tem.
Na fase 1 dos mods somente são suportadas até três portas de cada lado, e somente uma de entrada (pode ser qualquer uma das três, não necessariamente a primeira). Futuramente isto será expandido, são necessárias alterações maiores no sistema de passageiros do jogo.

[data]
template=tipo interno do modelo de ônibus a ser configurado
mass1=massa do corpo rígido para a engine física do jogo

A seção data contém detalhes importantes mais genéricos sobre o mod, que não se encaixam nas demais seções. Mais itens serão adicionados em versões futuras.
O template indica qual arquivo interno usar para o ônibus. Atualmente só são suportados 6x2 e 4x2. Futuramente terá mais opções, incluindo os articulados.
O item mass1 se refere à massa (em kg) do veículo (mass2 seria da parte de trás do articulado, futuramente). Um bom valor é um número próximo ao PBT das especificações do modelo real, menos o peso das pessoas do ônibus lotado (o que varia de modelo para modelo, dependendo da quantidade de passageiros). As pessoas adicionam o peso no veículo quando entram e liberam quando saem.
A massa define o "peso" do ônibus real, digamos assim. Um bom valor para os urbanos 4x2 fica entre 12000 e 18500. Micros e midis podem ser um pouco mais leves, enquanto os 15m um pouco mais pesados. Esse valor afetará a dirigibilidade, visto que afeta as forças que os eixos de tração precisam exercer para mover o veículo.

[posCenterOfMass1]
posX=0
posY=1
posZ=-0.736832

IMPORTANTE: várias propriedades no Proton Bus usarão posX, posY e posZ. Algumas usam rotX, rotY e rotZ, ou scale, ou size. Estes nomes devem ser escritos exatamente assim. pos em minúsculas e a letra do eixo em maiúscula. Se não for assim o jogo não identificará, retornando 0 para o valor.

A posição do centro da massa do veículo é definida pelo item posCenterOfMass1, no sistema de coordenadas da engine Unity 3D. X é o sentido lateral, da esquerda para a direita, aqui geralmente será zero (o meio do ônibus, senão ele ficaria pendente para um dos lados). Y é vertical, de cima para baixo (0 = no chão, 1 = a um metro do chão, 0.1 = 10 centímetros do chão, etc). É bom estar um pouco acima do piso do salão dos passageiros nos modelos de piso baixo, ou próximo ao piso no caso dos piso alto. Um valor entre 0.5 e 2 geralmente será bom. Se for muito para cima afeta a suspensão negativamente, o modelo pode ficar mole. Muito para baixo pode deixar ele "pesado", mais colado ao chão. A posição Z define no sentido do comprimento, de trás para frente. Do meio para trás é negativo, do meio para a frente é positivo. Um bom valor para este item é na posição entre os eixos. Se deixar muito para trás ou muito para a frente ele poderá ficar arqueado. É como se a carga se concentrasse nesse ponto.

Um bom valor seria mais ou menos aqui:


Adicione um objeto do tipo empty no Blender para pegar a posição. Deixe o x em 0, mova ele um pouco acima do piso e deixe bem no meio dos eixos, testando valores no jogo e fazendo ajustes necessários.

[collision1]
posX=0
posY=1.89149
posZ=-0.711644
sizeX=2.4812
sizeY=2.63857
sizeZ=14.8242

Este item collision1 define o box de colisão. É um cubo esticado, um paralelepípedo, pegando a forma geral desta parte do veículo. Não deixe muito colado ao chão senão pode raspar nas calçadas ao fazer conversões, ou travar facilmente em valetas. Geralmente posX sempre será zero.
Para acertar os valores, veja os tutoriais em vídeo. A forma mais prática é adicionar um cubo, deixar ele no 0 em x, alterar as dimensões até preencher toda a parte externa do veículo um pouco acima do final do parachoque traseiro. Depois mova o pivot da peça para o centro (ctrl + shift + alt + c no Blender, origin to center of mass). Sendo assim, posX, Y e Z será a posição do objeto do Blender, e o tamanho a dimensão, também informada no Blender.

Esta propriedade é fundamental para a física do ônibus. Junto com o centro da massa, se mal configurada pode colocar tudo a perder, dando um comportamento inesperado (batendo em coisas invisíveis, pulando, saindo do chão, etc).

[leftMirror]
posX=-1.36912
posY=2.25939
posZ=6.07493
rotX=
rotY=
rotZ=

[rightMirror]
...

[middleMirror]
...

Define as posições das capturas dos espelhos. Geralmente é um ponto no espaço próximo de onde está o espelho. left é o da esquerda ou o principal (próximo do motorista, que roda com mais fps que os demais), right o da direita, middle o do meio. A rotação permite girar um pouco ele, caso apenas a posição não seja suficiente. Atualmente não é possível configurar opções da câmera de captura do espelho, como campo de visão, tamanho da textura renderizada ou distância. Estas opções são controladas automaticamente pelo jogo.

[posDriverHead]
posX=-0.704755
posY=2.05155
posZ=5.27634

Posição da cabeça do motorista. Geralmente um pouco acima do final do banco do motorista. O valor em x deve ficar centralizado com o volante, para não ficar estranho no jogo. É basicamente a posição da câmera interna na visão principal.

[posPassengerCam1]
posX=0
posY=2.70811
posZ=-7.31122

Posição da câmera do passageiro. Futuramente terá mais configurações, mas por um tempo será só esta. Pode ser no fundo do salão, no meio, em qualquer parte.

[posDriverHumanoid]
posX=-0.704755
posY=1.3566
posZ=5.55762

Posição do boneco do motorista. As posições de pessoas sentadas ficam bem na "bunda" da pessoa. Deixe no meio da superfície do banco, levemente mais para cima ou para baixo caso fique flutuando ou afundado no jogo.

[posTicketTakerHumanoid]
enabled=1
posX=0.801177
posY=1.21393
posZ=1.90512
rotX=
rotY=-90
rotZ=

Posição do cobrador. Se não quiser o boneco do cobrador, deixe enabled=0, assim ele não será carregado. Para aparecer, enabled deve ser 1 (0 = falso, 1 = verdadeiro) e o jogador deve ter escolhido jogar com cobrador, caso contrário não aparecerá.
A rotação mais importante é no eixo vertical, a Y (Z no Blender). Para a esquerda é negativo, para a direita positivo. O Y em -90 gira o boneco para a esquerda, ideal para cobradores que ficam na lateral direita do ônibus. Se o posto está na parte esquerda, deixe em 90, para que fique girado para a direita.

[posSmoke1]
enabled=1
posX=-1.15142
posY=2.94137
posZ=-8.08688
rotX=0
rotY=0
rotZ=0

Posição da fumaça do escapamento da primeira parte do veículo. Atualmente não é possível alterar cor, força, intensidade etc. Somente a posição. Deixe enabled=0 para desativá-la (será útil futuramentre com o articulado, onde só uma parte terá a fumaça e as demais não).

[pathTurnstile1_1]
enabled=1
posX=-0.05282
posY=0.468294
posZ=2.06439

Posição do lugar da catraca. Não da peça física da catraca, mas do ponto onde as pessoas vão parar. Precisa estar bem próximo ao caminho onde os passageiros andam. Quando chegam ali vão parar um pouco, tocar o som de validador e catraca e então prosseguir. Deixe enabled=0 caso não queira usar catraca ou caso o ônibus não tenha.
Atualmente só é possível usar uma catraca no ônibus. Futuramente poderão ter mais. O primero 1 no nome da propriedade se refere ao "vagão" do ônibus (primeira parte), o segundo 1 ao número da catraca. Uma segunda catraca no mesmo ônibus seria pathTurnstile1_2, por exemplo. No momento isto não é suportado, deixe apenas uma.

[aeroSurface1_1]
posX=0
posY=0.5
posZ=4.07
drag=0.1
downforce=0.4

O item aeroSurface define uma propriedade para a física do ônibus. É um ponto onde será aplicada uma força para baixo com maior intensidade conforme o veículo se move em maiores velocidades. Isto dá mais estabilidade em altas velocidades, simulando efeitos de aerodinâmica, onde o ar faz uma pressão no veículo. Geralmente terá dois itens destes, posicionados bem nos eixos do ônibus. No caso dos trucados, um só para os eixos traseiros basta, não é necessário usar três. Alterando os valores drag e downforce o comportamento do veículo em altas velocidades será afetado. Vale experimentar com bastante paciência outros valores, testando exaustivamente em diversas condições. Os valores padrões parecem razoáveis para a maioria dos casos.
Geralmente a posição x será 0 para ficar bem no meio, enquanto y e z correspondem à posição aproximada dos eixos das rodas.

[specialTextures]
cockpitLightsOn=textura acesa do painel
pointersLightsOn=textura acesa dos ponteiros
externalLightsOn=textura acesa das lâmpadas externas (farol, seta, freio)
internalLightsOn=textura acesa das luzes extras internas (validador, cuidado degrau etc)
stopRequestLightsOn=textura acesa do indicador de parada solicitada do salão
passengerLightsOn=textura acesa das lâmpadas do salão

Estas texturas são as versões acesas, geralmente com fundo preto, destacando a parte que será iluminada nas peças referidas. São referenciadas como nightmap, emission... As imagens devem ficar na pasta de texturas do ônibus. Atualmente cada grupo de peças requer uma textura única. Se a luz de farol estiver numa textura separada da seta, não dará para animá-las usando a textura, no caso... Ambas serão iluminadas com o comando externalLightsOn. Você deverá editar o ônibus para deixar todas as luzes externas numa mesama imagem, ou então animar as luzes de outra forma, com as texturas extras que são adicionadas por cima do modelo.

TUTORIAL EM PRODUÇÃO... ACOMPANHE OS VÍDEOS NA PLAYLIST INDICADA LÁ EM CIMA. MAIS DETALHES SERÃO PUBLICADOS COM TEMPO DEPOIS.

Tutoriais de conversão em vídeo:
https://www.youtube.com/watch?v=SXvhpwSrIrw&list=PLLYFgjkWst1p1MYNM28-LCH6450NPFweG

---------------

REFERÊNCIAS DOS NOMES DAS PEÇAS ANIMADAS
(mais explicações virão futuramente, aguarde o vídeo sobre os caminhos dos passageiros ou veja o mod de exemplo)

_emissive_ Texturas que acendem em geral (shader emissivo), como o letreiro eletrônico
_transparent_ Texturas de vidro, ou com transparência

_skin001_ Peças com a skin 001, idem para 002 etc

_wheel_fl_
_wheel_rl_
_wheel_rl2_

_wheel_fr_
_wheel_rr_
_wheel_rr2_

_mirror1_
_mirror2_
_mirror3_

_steering_wheel_
_speed_
_rpm_

_cockpit_panel_
_cockpit_blinkers_combined_
_cockpit_left_blinker_
_cockpit_right_blinker_
_cockpit_battery_
_cockpit_handbrake_
_cockpit_low_beam_
_cockpit_high_beam_
_cockpit_stop_request_
_cockpit_brake_

_tex_electric_
_tex_external_lights_
_tex_high_beam_
_tex_low_beam_
_tex_right_blinker_
_tex_left_blinker_
_tex_reverse_
_tex_brake_
_tex_light_1_
_tex_light_2_
_tex_light_3_
_tex_stop_request_

_display_front_
_display_back_
_old_display_route_
_old_display_destination_
_plate_route_small_

_rdoor_1x1_ Comando das portas: folha 1 da porta 1... Veja os videos.
_ldoor_1x1_


OBJETOS DE POSICIONAMENTO (múltiplos comandos)

_pp_ ped_place
_teleport_ teleport
_release_ release
_waitdoor_ wait_open_door
_le_ left exit

_r1a1_ paths de entrada, pra frente, porta direita 1
_r1b1_ paths de entrada, pra trás, porta direita 1
_r2z1_ paths de saída, de frente pra trás, porta direita 2
_r2y1_ paths de saída, de trás pra frente, porta direita 2 //isso permite add mais dps

5 comentários:

  1. oi marcos o brt simulator é o proton bus ?

    ResponderExcluir
  2. Vc poderia colocar o Caio Millennium IV da Mercedes Benz no mods

    ResponderExcluir
  3. eu coloquei o mod na minha pasta mas n pegou

    ResponderExcluir
  4. marcos no futuro vai dar pra colocar biarticulados no proton

    ResponderExcluir