quarta-feira, 19 de setembro de 2018

E para Android? E para PC? O jogo morreu?

Para quem sempre reclama que as versões PC e Android não são sincronizadas, reafirmamos uma mensagem que sempre divulgamos de outra forma:

NUNCA TEVE LANÇAMENTOS SIMULTÂNEOS.
NUNCA TERÁ. NÃO ESPEREM ISSO!
NEM EMPRESA GRANDE FAZ ISSO COM SEUS BETAS, IMAGINE UM DESENVOLVEDOR INDEPENDENTE COM UMA EQUIPE MINÚSCULA...

As versões mais experimentais ou imediatas sempre serão feitas para uma plataforma só até corrigir os principais problemas dela! Depois vai para as demais quando estiver mais ajeitada. Assim corrigimos tudo em uma e lançamos para todos depois, em vez de ter que corrigir todos, todas as vezes...

Cada geração de atualização geral (Windows, Mac, Linux, Android) leva no mínimo TRÊS DIAS DE TRABALHO onde nenhuma outra coisa pode ser feita no jogo, somente a preparação da atualização e upload. Dependendo dos bugs inesperados que sempre dá em um Android ou outro, temos que gerar uma na sequência, perdendo uma semana ou mais...

Três atualizações de teste num mês tomariam QUASE DEZ DIAS! Poxa, o mês só tem TRINTA! Se toda versão de teste fosse feita para todas as plataformas o jogo levaria quase 30% a mais de tempo para ser feito, adicionando alguns anos no final do projeto que já é complexo por natureza...

Não rola, nunca vai rolar, podem reclamar à vontade que não terá lançamento de teste simultâneo para PC e Android NUNCA. Quem não compreende o processo e só reclama ou xinga: por favor, jogue outros jogos e volte ao Proton quando estiver pronto, daqui uns anos. É melhor do que ficar gerando frustração para você e para nós.

Algumas vezes o Android recebe primeiro, veja que a maioria dos ônibus saiu pro Android primeiro! Outras o PC recebe primeiro. Nessa fase os mods são mais úteis no PC, por ser a plataforma de desenvolvimento, não só consumo. É impraticável fazer o mod do zero no Android, com tela pequena e sem mouse...

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 de PC aqui (Windows/Linux/Mac):
http://blog.protonbus.com.br/2017/06/download-pc.html

Download experimental para Android (versão LITE):
http://167.99.55.217/pub/proton187lite-ok5.apk

Download experimental para Android (versão COMPLETA):
APK (34,6 MB): http://167.99.55.217/pub/proton190.apk
OBB (688 MB): http://167.99.55.217/pub/main.190.com.viamep.protonbussimulator.obb
Instale o APK normalmente primeiro! Ele tem só a cena inicial do jogo (o menu da entrada). O OBB contém os mapas e ônibus nativos. Baixe e coloque na pasta correta de OBBs usando um gerenciador de arquivos. Se você não sabe instalar OBB, pesquise tutoriais no YouTube como instalar apk e obb. O jogo ficou grande e não dá mais para gerar o apk gigante, por isso tivemos que dividir.
São dois arquivos: o apk pequeno (tela de entrada) e o obb grande (mapas e ônibus). O obb deve ser colocado na pasta certa dos obbs, no caso do Proton será:
armazenamento - Android - obb - com.viamep.protonbussimulator 
Se a pasta com.viamep.protonbussimulator não existir dentro da pasta obb, você precisará criá-la manualmente. Se atualizar de uma versão antiga, os obbs antigos podem ser apagados para liberar espaço. As pastas do lite e do completo são separadas, um não interfere com o outro. A pasta buses dos mods pode ser movida para a pasta de dados do completo, para não ficar duplicada.
AVISO: se desinstalar o LITE o Android apaga a pasta dos ônibus dele. Mova ela para o completo antes de desinstalar o lite!

OS MODS SERVEM TANTO NO ANDROID COMO NO PC, vai depender do seu aparelho:

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

Mod de exemplo (UrbanusS OF-1721)
http://samodelagens.cf/2018/09/16/urbanuss-98_pb/

Mod de exemplo (Mondego H Scania K310) (ainda sem as portas esquerdas funcionais)
http://www.mediafire.com/file/a3av2htx2mtw3pn/MondegoH-15m-Scania-Beta0+%28sem+portas+esquerdas%29.zip

Para extrair RAR, recomendamos o RAR da mesma fabricante do WinRAR de PC. Ele funciona como gerenciador de arquivos e extrator. Baixe o RAR de Android na Play Store aqui.


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

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 (setas, freio e luzes gerais no painel)
cockpitBackgroundOn=textura acesa do fundo do painel (velocímetro, RPM) v188+
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

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

MODS DE ARTICULADOS (recurso da versão de colaborador)
A partir da versão 195 são suportados mods de articulados, porém sem a animação da "sanfona" devido a uma dificuldade técnica na importação dos bones/armaduras em runtime.

Os mods de articulados seguem o mesmo padrão dos ônibus "normais", apenas são adicionados alguns novos comandos.

Assista este vídeo para entender como organizar o articulado:
https://www.youtube.com/watch?v=UVWoO60_AVM

Posicionamento de peças:

Tudo que for do vagão de trás fica com _t1_ no nome da peça, menos nos caminhos dos passageiros andantes (as posições deles sentados ou em pé precisam disso, os caminhos não porque ficam juntos das portas).



Recomendo deixar um pedaço da sanfona na frente, outro atrás, meio sobrepostas puxadas pra dentro... Como fazem no GTA/PTTM/Haulin/etc.

Alterações no arquivo INI:

[data]
template=tipo de onibus
mass1=massa da parte 1 (sem o peso dos passageiros)

mass2=massa da parte 2 (sem o peso dos passageiros)

O template pode ser um desses:

articulated_pusher (articulado motor traseiro, comum nos Mercedes)
articulated_pusher_double (articulado motor traseiro de 2 eixos atrás, tipo o UDA/MDA/Capacity)
articulated_puller (articulado tipo Volvo com motor na frente, ou motor dianteiro)

OBS: o articulated_puller funcionará somente na v196+, não pega na 195!

O arquivo .ini dos articulados deve ter uma nova configuração do centro da massa do vagão traseiro (o que determina se ele pende mais pra trás ou fica equilibrado), e também o box de colisão dele, calculado da mesma forma que da parte da frente. Duplique e adicione um 2:

[posCenterOfMass2]
...

[collision2]
...

E no .ini também tem uma seção nova:

[posJoint1]
posX=0
posY=0.380604
posZ=0.102769

Este define o ponto de junção das partes, bem no meio do piso da sanfona (tecnicamente onde fica o ponto de giro das partes, levemente abaixo do piso). Por exemplo, seria a coordenada deste ponto:



Rodas:

As rodas seguem a configuração normal, só adicionando um 3 ou 4 depois do leftwheel ou rightwheel.

[leftwheel3]
... configuracoes da roda esquerda do terceiro eixo...

[rightwheel3]
... configuracoes da roda direita do terceiro eixo...

E no caso do UDA tem uma quarta, referente ao último eixo (o direcional).

Os modelos 3D das rodas devem ser nomeados com um 2 (terceiro eixo) ou 3 (quarto eixo), depois do último "r" ou "l". Assim:

_wheel_rl2_           roda esquerda do terceiro eixo
_wheel_rr2_           roda direita do terceiro eixo
_wheel_rl3_           roda esquerda do quarto eixo
_wheel_rr3_           roda direita do quarto eixo

Note que o 2 se refere à roda traseira #2, e o 3 à roda traseira #3, por isso ficou diferente (2 e 3 e não 3 e 4, como seria se fosse considerar o número do eixo).

Portas:

Na primeira seção do arquivo da porta que ficar atrás, fica isso:
articulated_part=2

Isso deve ficar no conjunto de comandos do primeiro grupo, perto de onde ficam posX, Y... ou depois do anim_rotate, mas nunca depois do [anim1_door1]. Por exemplo:


Sons:

Na configuração de cada som que ficar na parte de trás (portas, ré, motor caso seja traseiro etc), também fica um

articulated_part=2

Motor:

O motor será carregado e posicionado de acordo com o template escolhido. No txt do motor (engine) deve ter um [pos_ackerman_2] com a posição do ackerman que afeta o giro dele, geralmente a posição em y e z corresponde ao eixo traseiro. Não é necessário se use_ackerman for zero.

IMPORTANTE: em alguns articulados o eixo de direção gira um pouco mais do que nos ônibus normais! Configure isso alterando o item max_steer_angle na seção [steering]. Um bom valor para o UDA é 42. Isso se refere ao giro da roda da frente, não à articulação.

Posições especiais:

Algumas peças não podem ser posicionadas duas vezes, como a fumaça do escapamento ou as luzes do painel. Normalmente tudo do painel fica na parte da frente. A fumaça do escapamento ficará associada à parte dependendo do template (se o motor fica na frente ou atrás).

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

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

Trocar r por l (L minúscula) para as portas esquerdas

sexta-feira, 14 de setembro de 2018

Tutoriais de conversão pro Proton Bus

Estou gravando tutoriais de conversão dos mods de ônibus para o Proton Bus, segue aqui:

https://www.youtube.com/watch?v=SXvhpwSrIrw&list=PLLYFgjkWst1p1MYNM28-LCH6450NPFweG

O recurso ainda não foi lançado mas está bem perto de ser! Serão feitos testes no computador neste ano, e um pouco depois no Android, quando tudo estiver mais estabilizado.

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

Sorry but all these tutorials are in Brazilian portuguese, I'll try making some in English after I finish the most basic in Portuguese, but cannot estimate when.

quarta-feira, 5 de setembro de 2018

Perguntas e respostas sobre os mods!

USAR MODS SERÁ GRÁTIS PARA TODOS OU SÓ PARA COLABORADORES? O recurso de mods de ônibus do jogo será grátis para todos! Assim mais gente pode entrar no mundo da modelagem e conversão, proporcionando muitos ônibus novos para todo mundo! Mas cada autor de mod que decidirá sobre a liberação do seu mod. Terá tanto mods grátis como pagos. O suporte a mods no jogo não terá restrições quanto a isso. SE SERÁ GRÁTIS, COMO O JOGO VAI SE MANTER? O jogo terá conteúdo adicional para os colaboradores num modelo híbrido, incluindo alguns ônibus exclusivos e, futuramente, áreas da cidade reservadas para eles ou expansões de mapas. Preferimos deixar os mods livres para que tenha uma boa quantidade de ônibus feitos por mais pessoas, sem a barreira financeira. Será bom para todo mundo! VAI TER MOD PAGO? Terá tanto mods gratuitos como pagos! Fica a cargo do criador do mod. Será algo livre, sem ligação com o jogo! É como produzir uma arte, miniatura, fotografia... Cada um faz do jeito que quiser. Inclusive a responsabilidade sobre a propriedade intelectual dos mods é de cada um, será um trabalho artístico sem ligação com o jogo. Exatamente como o pessoal faz em outros jogos. VAI TER MOD CRIADO PELA EQUIPE DO JOGO? Sim! Iremos criar alguns mods gratuitos e outros "patrocinados"! VAI TER PROTEÇÃO DOS MODS PARA NINGUÉM ROUBAR O 3D? Proteção 100% não existe! Todo jogo pode ser hackeado para pegar os modelos, ladrão tem em todo lugar... Em última instância é possível "roubar" os modelos injetando código intermediário no driver da GPU, capturando diretamente os pontos no espaço 3D gerido por ela. Historicamente o pesoal acha que protege, mas não protege, sempre tem um jeito de desbloquear mods de outros jogos. Portanto, sejamos sensatos! Não é possível prometer uma proteção que não tem como existir. Até empresas grandes têm suas criptografias quebradas... Inicialmente os mods serão todos abertos, com o 3D puro direto na pasta do jogo. Quem não se sentir confortável com isso não precisa fazer os mods. Futuramente poderemos ter um formato criptografado para implementar alguma segurança, mas nada é efetivo, sempre tem um jeitinho (vide o OMSI onde o pessoal abre os O3D, ou no GTA em que desbloqueiam facilmente os arquivos...). Iremos alimentar uma comunidade de mods "open source" saudável, focando mais no hobby mesmo, pensando primeiro nas pessoas de bem. Não podemos liberar todos os modelos livremente, mas alguns serão fornecidos para modificação e estudo. QUANDO LANÇA? Assim como tudo no projeto, não tem previsão. Sabe-se que está chegando a hora, a próxima grande atualização já deve ser a dos mods! É esperado para o final de 2018 ou começo de 2019, podendo ser adiado caso ocorram problemas graves. SERÁ UM RECURSO PESADO? Depois de carregado o mod se comporta como um ônibus do jogo. Pelo menos nos testes no computador, não foi observado nenhuma perda de desempenho ao jogar com um mod ou com um ônibus nativo. Todavia, o processo de carregamento do mod é mais lento e precisa de muito mais memória RAM, pois o modelo é lido e montado na hora. Celulares de pouca memória RAM não conseguirão rodar os mods mais pesados. Ainda não sabemos quais serão os requisitos, iremos descobrir todos juntos na prática. O recomendável seria um aparelho atual com bastante RAM. Será possível fazer mods leves ou pesados, a cargo de quem estiver criando... Um modelo simples com cinco texturas e dois sons será bem mais leve do que um modelo com 500 MB de texturas e sons. VAI TER PRO CELULAR? Fazer os mods provavelmente exigirá um PC porque não tem o Blender funcional para celular, ao que parece. Mas para jogar sim, funcionará nos celulares Android! Só que, devido as limitações de hardware dos celulares, só modelos com mais RAM conseguirão carregar os mods, senão o jogo fechará por falta de RAM. Vamos esperar para ver. QUE PROGRAMAS SERÃO NECESSÁRIOS PARA FAZER OS MODS? Basicamente o Blender (software livre, grátis) e um editor de textos puro, como o bloco de notas. Eventualmente algum programa compactador de ZIP. Quem modela em outros programas talvez precisará abrir no Blender na hora de exportar. Optamos pelo Blender por sermos fãs dele e por todo o mérito que ele conquistou ao longo dos anos: poderoso, gratuito e de código aberto! QUE CONHECIMENTOS SERÃO NECESSÁRIOS? Conhecimentos de modelagem 3D e uma certa prática com arquivos, pastas e números... Fazer os mods é algo específico, quase um trabalho de artista, especialmente quem desenha em 3D (não deixa de ser um desenho). Não é algo para todo mundo. Mas para quem quiser aprender, há muitos tutoriais e cursos grátis na internet!

terça-feira, 7 de agosto de 2018

Por que as texturas das ruas ficam borradas nos aparelhos Samsung?

Nos Samsung em todos fica assim com essas ruas, é algo sem solução ainda. =/

Quanto mais distante as GPUs usam uma textura em menor resolução, é uma otimização que fazem. Tem uma configuração na textura do asfalto pra aliviar isso (filtro anisotropico) mas os aparelhos da Samsung não reconhecem ou não lidam tão bem com o padrão que a Unity colocou, fica assim em vários modelos dela há muito tempo, infelizmente.

Ainda estudo um jeito de desativar isso para ficar com a textura do asfalto em alta resolução independente da distância, mas quando testei no passado ficou ruim, ficava piscando ao longe.

Essas ruas antigas do jogo complicam mais ainda porque quando foram criadas a ferramenta não era tão boa, o mapeamento da textura fica bem pequeno pras faixas, faz elas ficarem borradas bem mais cedo. Talvez só terá solução efetiva quando essas ruas forem trocadas (algo sem previsão).

Quanto a skin com textos e logotipos ilegíveis, é normal especialmente quando está mais longe da cena. Uma tentativa é usar imagens maiores (2048x2048, 4096x4096 etc), mas podem ficar pesadas e/ou não funcionarem tão bem também, tem GPU que carrega elas em 2048x2048 no máximo. Os textos menores na skin fica difícil de deixar nítido, se usar uma imagem muito grande usa mais RAM, complicaria o uso nos demais aparelhos. Nem no OMSI e em vários outros jogos de PC dá pra ler bem os textos pequenos. Só se fizesse uma base para cada lado do ônibus numa imagem separada (os logos e textos ocupariam mais espaço da imagem)... Mas aí complicaria bastante o uso de memória, não seria viável, em vez de duas imagens (frente/traseira) o articulado usaria umas 8 (cada lado separadamente, frente e traseira, teto etc).

quarta-feira, 18 de julho de 2018

LITE! Uma versão menor do Proton Bus para o Android!

Vem aí uma versão especial do PBS para aparelhos onde o espaço está crítico! TL;DR: só com o PBC, T14 e o mapa Aricanduva. There will be a lite version of PBS for devices with low free space, including only two buses (PBC and T14) and the Aricanduva map! https://play.google.com/store/apps/details?id=com.viamep.protonbuslite
(o link ficará disponível em algumas horas) --------- Mais informações: Já foi enviada para Google Play Store, se nada der errado em algumas horas aparecerá lá como Proton Bus Lite. Muita gente teve que parar de jogar o Proton porque o jogo foi ficando pesado, não em desempenho (que geralmente melhorou) mas em tamanho. É complicado fazer um jogo desse porte pequeno para sempre, especialmente com o mapa crescendo e com cada vez mais ônibus. Então teremos uma versão extra onde o objetivo é não passar dos 500 MB, deixando espaço para o mapa crescer um pouco (essa primeira versão tem cerca de 360 MB). Embora daqui um ou dois anos ela poderá estar maior que isso, mas até lá quem sabe já tenham trocado de celulares :) Se puderem, evitem comprar os de 8 e 16 GB de armazenamento, não sobra espaço pra quase nada depois de usar por algumas semanas... E de preferência foquem em bastante RAM também, 3 ou 4 GB pensando no futuro ;) A decisão de remover ônibus para versão lite é muito difícil! Qualquer escolha jamais agradará a todos! Então teremos que ser firmes, com certeza o pessoal irá reclamar da escolha, mas paciência, ninguém tem como agradar a todos. Deixando 4 ou 5 ônibus o app fica com quase 500 MB, independente dos modelos escolhidos. 500 MB não é tão bom pra versão lite, visto que o mapa ainda irá crescer. Então faremos assim: ficarão somente dois! O PBC e o T14. Há jogos de PC que têm apenas dois ônibus inclusos e o pessoal curte, sendo os demais addons pagos... Não é tão mal assim ter só dois ônibus, ainda mais numa versão especial onde o fator "tamanho" é primordial. No momento não temos como deixar os ônibus opcionais onde cada um baixa só os que quer, tecnicamente isso envolve alterações radicais e adiciona um custo operacional inviável para a nossa realidade. Vamos com calma, um dia chegará a isto. A ideia da versão lite é oferecer a experiência completa do mapa Aricanduva, o mapa base do nosso protótipo. Ela só terá o Aricanduva. As atualizações desta versão serão mais espaçadas: só depois que as versões normais de teste forem estabilizadas e irem para todos é que a lite será atualizada, para otimizar o tempo de produção e a estabilidade. A versão completa é e sempre será a "principal", afinal é ela que oferece tantos ônibus e tantas possibilidades. A versão lite não é necessariamente mais leve em desempenho, é só no tamanho. Os ônibus e o mapa mantém a mesma qualidade. Publicaremos a versão lite na Google Play numa listagem à parte, com outro identificador. Desta forma ele não interfere com o completo. Quem é colaborador precisará da senha para remover os vídeos, é só tocar no número de versão na tela de entrada. Quem não tem ainda pode mandar um e-mail no atendimento@viamep.com com uma cópia do número do pedido do Google (GPA...) referente à versão completa. O retorno no email pode levar um ou dois dias úteis, sem o GPA original não temos como proceder.

sexta-feira, 6 de julho de 2018

Novidades da v170

Lista de mudanças da v170:

* VIP1 1721 para os colaboradores, com duas variações de portas! Um de duas portas na direita e outro com duas de cada lado (padrão São Paulo para corredores). Quem não é colaborador também pode jogar, porém ficará com a mensagem ocasional na tela. Ela poderá aparecer menos se assistir os vídeos até o fim (no Android).
* MiBRTS agora é grátis (sem a mensagem na tela).
* Animações no PBC e T14: agora eles funcionam com a chuva e outras coisas mais, incluindo alguns botões e janelas! Receberam também a suspensão melhorada.
* Melhorias experimentais na estabilidade dos ônibus em alta velocidade (somente os últimos com a nova suspensão: Mi2M, MiBRTS, pbc, t14, vip14p e vip12p)
* Skins variadas no tráfego no mapa Aricanduva: cada região usará skins próprias, dividindo a cidade com cores. É possível trocar as imagens para as suas favoritas, consulte o tutorial no site. Usar isto gera maior uso de memória RAM, deixe desmarcado caso seu aparelho tenha pouca RAM ou o jogo fique fechando.
* Savegames: no mapa contínuo (Aricanduva) é possível salvar o ônibus, skin e lugar para retornar depois. Este recurso será aprimorado com o tempo. No PC aperte CTRL + S, no Android clique no ícone de salvamento.
* Integração dos mapas antigos (MOBILE1_cidade e Terminal Shaze) ao Aricanduva: agora é possível dirigir de um ponto a outro! Com isso chegaram novas linhas aproveitando a extensão, incluindo uma bem extensa do Jd das Rosas ao Metrô Carrãozinho (7700-51). Beta: falta adicionar os pedestres e detalhes menores nas áreas integradas.
* Novos mapas de corridas para testar controles, velocidade e curvas (menos variações no Android para poupar espaço).
* Novo sistema de som para os motores que trará mais qualidade assim que conseguirmos as gravações boas (atualmente no pbc, Mi2U11, Mond08 e t14).
* Trens no cenário: na região da Vila Sabrina há um trem experimental. Isto será aprimorado e levado a outras partes do mapa futuramente. Desative nas opções caso seu aparelho tenha pouca RAM.
* Nova tela de km/h e fps: muito mais leve para renderizar do que aquela mensagem no meio da tela. No PC, use a tecla de menu de contexto para desativá-la (uma que geralmente fica perto do Ctrl da direita). No Android no momento ela só fica oculta ao esconder os controles.
* Novos carros do tráfego na versão PC: eles são mais bonitos e detalhados, porém muito mais pesados. Beta: falta animar as rodas e luzes de alguns deles. Estes carros não devem ir pro Android agora por conta do peso.
* Os passageiros não irão mais bugar no teto ao andar no corredor com um ônibus sem portas esquerdas.
* Melhorias na frequência da reclamação de baixa velocidade.
* Melhorias no tráfego em algumas curvas e fusões em Y (na Radial e na rodovia). Beta: ainda há bugs consideráveis nos semáforos.
* Os passageiros não devem mais cumprimentar o motorista ao embarcar pela esquerda (é bem raro na vida real)
* Mais sons de freio dos BT5 no VIP4 e T14
* Pré carregamento dos carros e pedestres na versão PC (para otimizar o tempo de carregamento, visto que os carros novos são mais pesados). Configure na tela Extras. Fazer isso pode usar mais RAM no início, mas alivia o tempo de carregamento do mapa em alguns segundos. Desative se encontrar problemas ou se usar os carros leves.
* Correção do neutro no controle de câmbio (Logitech), antes não voltava para o neutro ao desengatar a marcha, fazendo o ônibus morrer facilmente (verifique a marcha atual pressionando Z, temporariamente, quando estiver no modo manual).
* Correção da chuva no vidro do MiBRTS
* Opção de chuva moderna no PC, permitindo desativá-la em PCs fracos
* Várias outras correções menores

Bugs mais graves da v170:

* Carros estacionados somem ao reposicionar o ônibus (o pool deles precisa ser refeito do zero)
* Ao passar de 99999m o floating origin forçado pode fazer o ônibus pular (talvez ficará só para o ônibus parado mesmo). Depois de dirigir por alguns km é bom parar totalmente o ônibus para resolver isso (bug/limitação antiga da Unity com mapas grandes).
* Em alguns semáforos os veículos não param ou não respeitam as fases de bloqueio
* O efeito bloom do Beautify pode ficar muito forçado em determinados horários, a calçada fica branca. Se isso incomodar, temporariamente escolha os efeitos da Unity na tela Extras, em vez do Beautify.

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

Changes in v170:

* VIP1 for donors, with two door variations! One with two right doors and one with two on each side (like in São Paulo). Non-donors will be able to play with a message on the screen. It would not appear sometimes when player watches a complete ad (on Android).
* MiBRTS is now free (without that message).
* Animations on PBC and T14: now they can be used with rain and more things, including buttons and windows! They got also the new suspension.
* Better vehicle handling in high speeds (only for the ones with the new suspension: Mi2M, MiBRTS, pbc, t14, vip14p and vip12p).
* More skins for traffic AI on Aricanduva: each region will use its own color. It is possible replacing the repaints (mod), check the tutorial at our website. By using this the game needs more RAM memory. Do not use it if it keeps crashing due to low RAM.
* Savegames: on the continuum map (Aricanduva) it is possible now saving where the bus is, to load the game later. This feature will be improved over time. On PC, press CTRL + S. On Android touch the save icon.
* Old maps are now integrated on Aricanduva (MOBILE1_cidade and Terminal Shaze). It is possible now driving from one place to another there! We have more routes now, including a very large one from Jd das Rosas to Metrô Carrãozinho (7700-51). Beta: pedestrians and more details will be added later.
* New race track maps to practice and test controls, speed and curve handling (less samples on Android to save space).
* New sound system for engines that will bring much more quality once we get good recordings (currently on pbc, Mi2U11, Mond08 and t14).
* Trains: at Vila Sabrina there will be some trains (AI). This is experimental and will be improved later, also appearing in new areas. Disable it if your device has low memory.
* New screen showing speed and fps: much better than the old message on the middle of the screen. On PC, use the context menu key to disable it (it stays close to the right Ctrl key). On Android it is not possible hiding just it for now, but it won't be shown if you hide all the controls.
* New traffic cars for PC (AI): they are much more detailed, and uses more textures and sounds. Beta: some cars are still not completely animated. They won't be on Android due to RAM memory usage increase.
* Passengers won't go to the roof anymore if you drive on the left corridor with a bus without left doors.
* Improvements for low speed complaints.
* Improvements on traffic at some curves and Y junctions (at Radial and on the highway). Beta: there are some problems with traffic lights.
* Passengers won't say hi anymore when entering on left doors (this is very rare on real life here)
* More brake sounds for VIP4 and T14
* Preload for cars and pedestrians on PC (to optimize the loading time, since the new cars are more expensive to load). Set it up at Extras screen. This may use more RAM at the start, but it will decrease the loading time of the maps. Disable it if you find any severe bug with traffic.
* Fixes for physical manual gearbox (Logitech), it was not getting to neutral before.
* Fixes for rain on MiBRTS
* Option to disable the modern rain, good for old PCs
* Many smaller fixes.

Worst bugs of this version:

* Parked cars may disappear when repositioning the bus
* After driving for more than 99999m without any stop there may be a bug with physics. This is a very hard problem due to floating point precision, we're studying how to fix that with Unity.
* At some traffic lights cars will go even on red lights.
* Bloom effect is a bit exagerated. If you don't like it due to brighter sidewalks, please use the default Unity effects at Extras screen instead of Beautify.

O download do APK ficará disponível por alguns dias aqui:
http://blog.protonbus.com.br/2017/04/apks-de-teste.html

segunda-feira, 4 de junho de 2018

Vem aí... Skins personalizadas no tráfego!

Etapa muito importante do jogo sendo programada... A personalização de skins do tráfego :D
Lembrando, NÃO TEM DATA para a atualização, pode ser de 1 a 2 ou 3 meses (tem um aviso na tela de carregamento, mas todo dia perguntam).

Abaixo um ctrlc/ctrlv do documento "interno" sobre o tema, só para fins de curiosidade. ESTUDOS: SKINS VARIADAS NO TRÁFEGO Definição da estrutura de organização das skins do tráfego. Cada região do mapa poderá ter as skins alteradas pelos usuários, substituindo as nativas do jogo. As áreas atuais do mapa Aricanduva irão compor a área azul, e a área do Corredor e Jd Noronha a área vinho. Conforme o mapa crescer teremos as áreas laranja e verde. A Vila Octavia é uma região intermunicipal. Nas municipais, usaremos as quatro as cores de SP que não foram usadas no mapa Savoy do OMSI. Os jogadores poderão trocar as skins dos grupos para suas pinturas personalizadas, podendo ter três regiões ou empresas (substituindo as áreas intermunicipal, azul e vinho), ou até mesmo mais de uma empresa na mesma região, usando múltiplas pinturas para o mesmo grupo. Exemplo de organização: (Atualmente só tem o pbc, mas a estrutura é feita pensando no futuro) Intermunicipal: skinsAI/Aricanduva/0/pbc/... skinsAI/Aricanduva/0/t14/... Azul: skinsAI/Aricanduva/1/pbc/... Vinho: skinsAI/Aricanduva/2/pbc/... skinsAI/Aricanduva/2/Mond08/... (incluindo as t1_...) E por aí vai... Cada ônibus do tráfego ou estacionado recebe uma id referente ao grupo ao qual pertence. ID numérica (int) ou string organizada por número. Isso permite criar grupos diferentes para cada linha ou mapa. Com números facilita a organização e permite milhares de possibilidades. Estrutura provável das pastas: pasta skinsAI/ pasta do Nome do Mapa/ pasta do Nome do Grupo/ pasta do Nome do Ônibus/ Arquivos de skins variados (todos os que estiverem na pasta serão usados, permitindo mais de uma skin por ônibus, por grupo). OPÇÕES Usar skin única (mais leve, comportamento atual) Usar skins do mapa Usar skins personalizadas FACILIDADES Basta usar um gerenciador de arquivos e copiar a skin para a pasta do grupo desejado. Não precisa editar textos ou arquivos de configuração. CONTRAS As imagens ficarão diretamente nas pastas, podendo ocupar um pouco mais de espaço caso queiram repetir as skins. Exemplo ruim: uma skin única significaria repeti-la nas três pastas (intermunicipal, azul e vinho). Se fosse um arquivo de configuração usaria menos espaço para skins repetidas, porém aumentaria demais a dificuldade para os usuários. Colocar na pasta já é difícil para muitos, imagine editar um cfg cheio de parâmetros com o caminho da imagem original... DECISÃO PARCIAL Como a ideia de personalizar por áreas ou cores é bastante aceita, a maioria não terá tantas skins repetidas assim. No máximo ficarão duas vezes no sistema, uma na pasta de skins selecionáveis pro jogável e outra na pasta do AI. Dado o estado beta do jogo onde o custo de tempo x benefícios é primordial, esta parece ser a melhor solução. FASE ATUAL: Skins nomeadas por grupos internos no jogo. A FAZER: Mudança para número da região, com atualização de todos os ônibus estacionados já posicionados. Spawner: buscar configurador do mapa para obter uma id da região. O padrão é 0. PREVISÃO DE LANÇAMENTO: Skins das áreas do Aricanduva, com as cores fixas do mapa: próxima atualização (170+) Skins personalizadas pelos jogadores no tráfego: podem ficar para a posterior, caso comprometa a meta de três meses do ciclo. OBSERVAÇÃO: Carregar muitas imagens soltas exige mais memória RAM, pode fazer o jogo ficar fechando em aparelhos de menos memória. Recurso idealmente desejado para PCs e celulares de muita RAM. Talvez colocar um aviso ou limite ao ativar este recurso em aparelhos de menos de 2 ou 3GB. Futuramente com mais ônibus no tráfego pesará mais ainda.

sábado, 14 de abril de 2018

Problemas crônicos do jogo: a precisão dos números float na Unity

Um comentário do João Victor Lucas no grupo do Proton no Facebook me chamou a atenção, por questionar algo que pouca gente observou. Vamos lá:

Esses bugs persistem desde umas versões mais antigas do jogo. Talvez não dê para alterar tudo agora, mas se for possível, agradeço.

Mi2M continua com o pontilhado no lado direito do parabrisa, perto da divisória.


As manchas vermelhas e verdes no modelo do Mi2M reduziram drasticamente, embora persista algum ranço verde na tampa interna do itinerário e nos pneus. Um detalhe curioso é que quanto mais qualidade eu ponho nas configurações, mais essas manchas reduzem e vice-versa.


O Invisibus está com controles estranhos, tem chaves de manual e botões de automático misturados. E não mostra a velocidade dele quando se desloca.


O N do câmbio manual funciona mesmo, pois o veículo segue numa velocidade constante. Já o N do automático faz o veículo reduzir a velocidade e parar num ritmo bem lento (não sei se na vida real é assim, mas enfim).


Na câmera interna traseira do MiBRTS, quando dou a volta usando as setas, ela "atravessa" um pedaço da carroceria... Tá, eu sei que o carro tem balanço traseiro curto, mas os outros Mis do jogo também têm, nem por isso acontece com eles.


Minha resposta:

---------

Algumas das coisas citadas são meio crônicas, de difícil solução... Teremos que conviver com elas por um bom tempo. São coisas pertinentes que acho que não comentei amplamente ainda, vamos lá:

Trechos verde ou rosa no Mi2M


Isso ocorre mais ao jogar com qualidade baixa. A textura é menor nesse modo, os quadros das cores pintados nele ficam mais próximos e a GPU perde precisão na seleção, assim acaba pegando as bordas do quadro ao lado. Ele usa uma textura cheia de quadrinhos com cores, quanto menor a qualidade, menores eles ficam, ficando bem apertados... Fiz um experimento nele usando uma textura só para todo o interior exceto as coisas que acendem, o resultado não foi tão bom quanto o esperado, provavelmente é algo que não vou repetir nos demais (usar poucas texturas sim, sempre é bom, mas sem a intenção de usar uma só para todo o interior).



Invisbus problemático


O invisbus acabou não recebendo algumas alterações dos demais (não testei mais), provavelmente ele será removido. Usava ele para testar o desempenho do jogo quando não tinha certeza sobre até que ponto posso ou não detalhar os demais. Mas já tiramos conclusões, os outros detalhados funcionam bem na maioria dos aparelhos, já deu para ter uma base.

O neutro não funciona como deveria


O câmbio manual usa um código bem complexo, ele é mais realista em vários sentidos, ainda que algumas coisas não estejam bem ajustadas porque não entendi (caso da embreagem). O automático é bem simples, fica mais tipo um arcade ou GTA, o neutro nele se tornou apenas uma forma de não ir pra frente nem dar ré. Não é e nem tem como ser tão realista. Futuramente usarei algum outro código para os automáticos.

A câmera não mostra as coisas próximas / fica vazada ao girar



E o problema da câmera interna ao girar... Esse é um que quase me fez desistir do jogo há uns anos.

É porque a distância mínima de renderização da câmera está configurada em 0.3 metros (ela não pega nada mais perto do que 30cm). Isso é uma eterna encrenca com mapas grandes na Unity, por conta da precisão dos números que ela usa para os posicionamentos dos objetos... Quero fazer mapas para percorrer vários km e a engine não oferece um meio nativo para isso. Se a distância da câmera for menor que 30cm a perda da precisão dos números quando está longe (depois de ter andado bastante) faz com que a câmera fique piscando, as sombras, luzes e tudo fora de lugar... Isso é perceptível ao ficar dirigindo sem parar, dá pra ver bem na rodovia, depois de 10km percorridos as coisas ficam tremendo. Ao parar o ônibus ele move tudo pro ponto central e o problema é "corrigido" (até os próximos 10km). Se eu deixar a distância da câmera menor (10cm ou menos, como seria o ideal) as piscadas começam a acontecer muito mais cedo, logo depois de 1km, em vez de 10. Isso acontece porque ela usa apenas sete dígitos para guardar as posições dos objetos, movendo a vírgula entre os 7 dígitos. Ao passar de 1km ou seja 1000 unidades, ficam 3 casas decimais (dá para ter uma precisão de milímetros). Ao passar de 10km, ou 10.000 metros, sobram só duas casas decimais. Aí a coisa fica feia, o jogo fica com precisão nos centímetros, coisas muito próximas e pequenas ficam tremendo, fora de lugar, a sombra pisca também etc. A solução "gambiarra" encontrada foi mover tudo para o ponto 0,0,0 quando o jogador passa de algumas centenas de metros, antes de chegar a 1km. Mas se faço isso com o ônibus em movimento ele girava e saía do controle, zoando toda a física... Então configurei para mover e resetar a origem só ao parar. É naquela hora que o GPS dá uma "bugada" (ele move tudo, o GPS mostra a posição anterior e é refeito).

Essa limitação da Unity por várias vezes quase me fez desistir do jogo, mas decidi encarar assim mesmo, sofrendo as consequências (tendo que ter essa distância grande na câmera e mover o jogador para o 0,0,0 quando ele passar de 999 metros). Por isso outros games sofrem também, caso do HBS/HTS que param tudo pra carregar cenário (além do peso de ter tudo carregado de uma vez, tem o problema da precisão dos números float). Eu não quis fazer mapas pequenos com pausas para carregar, decidi encarar um mapa grande mesmo com esses contratempos.

Se eu aumentar a distância mínima da câmera para 1m a coisa melhora de um lado na questão do mapa grande (não precisaria mover a cada 10km, mas sim a cada 100)... Mas prum jogo de direção com câmera interna não dá pra manter a câmera renderizando só de um metro pra frente de onde está o jogador, iria pular muita coisa.

É um tema complexo, não sei se deu pra entender rs mas se tiver interesse pesquise por floating point precision na Unity ou em games em geral.

Para fins de testes internos, aquele DO que aparece nas mensagens ao mostrar os fps é a distância da origem, a distância da câmera ao ponto 0,0,0. Quando ela passa de 999 fica com 3 casas decimais, aí começa a tremedeira. Aí ao parar move tudo pro 0,0,0 (dá um pequeno travamento) e o problema é resolvido por mais 999 metros.

sábado, 7 de abril de 2018

Erro DX11 could not switch resolution (800x600 fs=1 hz=0)

Algumas pessoas enfrentaram este erro ao abrir o jogo no Windows:

Switching to resolution 800x600 failed, trying lower one
Switching to resolution 800x600 failed, trying lower one
All resolution switches have failed
Screen: DX11 could not switch resolution (800x600 fs=1 hz=0) 

Pesquisando na web vi este erro é comum em outros jogos, não é algo específico do Proton. No meu PC não aconteceu, mas seguindo relatos de outros jogadores que passaram por isso em outros jogos, vale fazer estas tentativas:

O MOTIVO MAIS COMUM É O WINDOWS 7 DESATUALIZADO. POR FAVOR, VÁ AO WINDOWS UPDATE E INSTALE AS ATUALIZAÇÕES IMPORTANTES DO SISTEMA, ESPECIALMENTE O ÚLTIMO SERVICE PACK DELE.

Use outra API gráfica


  • A versão PC para Windows é oferecida com outras APIs gráficas suportadas pela Unity. O ideal na plataforma é se manter no DirectX, mas se o problema persistir, experimente usar o Vulkan ou OpenGL (na pasta do jogo há atalhos para iniciar ele nesses modos). O Vulkan é suportado somente em placas de vídeo mais recentes, enquanto que o OpenGL funciona com muitas outras. Dependendo da placa de vídeo e/ou dos drivers, o jogo pode apresentar artefatos gráficos ou comportamento inesperado. Sempre mantenha seus drivers de vídeo atualizados, bem como o sistema operacional. Experimente os atalhos que vieram na pasta para ver qual funciona melhor no seu computador.

Rode no modo janela

  • Outra tentativa é marcar o modo Windowed na primeira tela do jogo, aí ele roda em modo janela (pode ser maximizada).


Tentativa no Windows 7:

  • Certifique-se de ter o Windows e os drivers de vídeo atualizados.
    Seu Windows é atualizado? As versões mais velhas podem ter problemas que já foram solucionados nas mais novas, veja no Windows Update se está tudo em dia. Vi em alguns fóruns o pessoal recomendando esta atualização da Microsoft caso use o Windows 7:
    https://www.microsoft.com/en-us/download/details.aspx?id=36805

Alternativa que talvez pegue:

Na primeira tela de seleção do jogo, marque o modo Windowed (janela). O jogo não abrirá em tela cheia assim, mas talvez pelo menos abra. Você pode maximizar a janela ou redimensioná-la livremente.

Tentativa mais fácil:
  • Clique com o botão direito no ícone do jogo, vá em Propriedades, aba Compatibilidade, e marque a opção Desabilitar otimizações de tela inteira:


    Será necessário fazer isso de novo caso você baixe uma atualização do jogo ou extraia ele novamente depois.

Tentativa com placa de vídeo da Nvidia:
  • Abra o painel de controle da Nvidia clicando com o botão direito na área de trabalho, depois vá em Monitor > Ajustar o tamanho e a posição da área de trabalho > Marque o item Sem Escala, clique no botão Aplicar... E tente abrir o jogo novamente. Veja na imagem:

  • Outra tentativa é marcar também a opção "Substituir o modo de escala definido por jogos e programas" na mesma tela acima.


É bom notar que o Proton Bus requer uma placa de vídeo com suporte a DirectX 11 (exigências da engine). Ele não vai funcionar nas placas mais antigas que só aceitavam o DirectX 9, nem nas integradas muito fracas. Quem não tem placa de vídeo até consegue rodar o jogo se o processador tiver uma GPU integrada boa (os recentes têm), mas notebooks e PCs fracos de uns anos atrás podem sofrer mais ou nem conseguir abrir.

Outra tentativa é usar a API gráfica Vulkan, se suportada pela sua placa de vídeo. Nesse caso, para abrir o jogo use o atalho .bat que tem Vulkan no nome, ele estará próximo ao ícone dele. Aparecerá uma janela preta do prompt de comando mas é normal. Você pode usar o parâmetro -force-vulkan ao executável, se quiser criar um atalho personalizado desta forma. Note que dependendo da placa de vídeo o desempenho pode ser pior ou melhor, ou nem funcionar.

terça-feira, 27 de março de 2018

Lista de bugs e recursos


Compartilho aqui uma lista de bugs e tarefas que tenho para o projeto. Esta lista é resumida, em detalhes há mais de 500 itens... Algumas coisas levarão bastante tempo, lembrando que o jogo tem alguns anos de desenvolvimento pela frente (entre 2 a 4, ou mais, se precisar).

Lista sujeita a alterações sem aviso prévio, é provável que algumas coisas citadas serão substituídas por outras depois.

Estas mudanças devem ocorrer de 1 a 3, 4 anos ou mais. Não espere tudo em 2018 nem 2019 não. Só depois de programar toda essa base é que darei atenção aos mapas definitivos realistas que pretendo ;)
  • Os automáticos estão rebaixados na dianteira (bug já identificado no centro da massa)
  • Passageiros se mexendo quando parados (indesejável, tem que desativar como era antes)
  • Posicionamento 3D dos sons, e redução de volume (setas, portas etc)
  • Fundo do T07 interno e pés dos bancos faltando no VIP4 (virão quando forem animados)
  • Passageiros com as costas para trás dos bancos (TGV e outros)
  • Skins não aparecem em alguns ônibus do tráfego ou estacionados (ficam brancos)
  • Android: ao voltar das telas de opções às vezes não salva (bug reproduzido porém não identificado, só vi no Moto G1, nos mais novos não deu aqui... parece treta de desempenho)
  • Bug gráfico na GPU Mali T830-MP2 (J7 Prime e similares, bug bem louco e difícil de achar o que causou =/)
  • Reduzir uso do GC.Collect nas funções das luzes dos ônibus (meta/sonho: zerar o GC um dia)
  • Som de freio raspando às vezes toca em momentos inadequados
  • Embreagem desregulada em todos os manuais (vai demorar até entender/estabilizar, recomendo jogar sem embreagem)
  • Fumaça do escape: configurar cor por ônibus (mais novos = mais fraca)
  • Passageiros que travam na porta do meio ao ficar um de frente pro outro (bug difícil de resolver, é mais perceptível na porta do meio)
  • Passageiros devem ir pra calçada depois de descer e continuarem caminhando (depende de infraestrutura na via)
  • Passageiros devem parar pro ônibus do jogador passar nas faixas/cruzamentos (colisor frontal talvez)
  • Articulado no tráfego (com possibilidade de carretas etc...? Talvez dependerá do tráfego com física, pode demorar muito)
  • Melhor deteção do tráfego caso o jogador esteja perto (otimizar vendo a distância, usar triggers na dianteira, impedindo que o ônibus entre na curva por cima do ônibus do jogador... uma esfera grande na dianteira deve resolver)
  • Suavizar freagem e aceleração do tráfego
  • Opção para não desligar a seta automaticamente
  • Suporte a controles de volante baratos (talvez uma opção de inverter valores nos pedais deve resolver)
  • Suporte a controles de joystick no PC e Android
  • Câmera livre no Android
  • Ciclo dia noite no Android (complexidade pelo peso e intregração com as demais áreas)
  • Relógios no cenário
  • Temperatura simulada (para o relógio estilo SP)
  • Controle de ar condicionado funcional nos ônibus (aumentar/reduzir, passageiros reclamando etc)
  • Efeitos gráficos no Android (não sei se vai funcionar bem, é só pra aparelhos tops)
  • Trocar sons dos carros do tráfego para algo melhor (mais variações = mais RAM, ir com cautela)
  • Boneco do cobrador aleatório (randomizar motorista também, quem sabe)
  • Mais passageiros na versão PC (de 100 a 1000 bonecos diferentes)
  • Mais carros na versão PC (de 50 a 1000 veículos diferentes)
  • Otimizar função Update dos objetos repetidos, pessoas, carros, passageiros (chamando um só pra tirar o overhead dos updates)
  • Outros ônibus estacionados e no tráfego, configuração para skin individual neles aleatória (futuramente será por linha... talvez a configuração será feita via arquivo na pasta, é muita tela para criar)
  • Carros estacionados na faixa exclusiva no sentido contra fluxo
  • Taxistas no corredor e em faixas exclusivas
  • Velocidade mais alta para polícia e ambulância (sonho inatingível a curto prazo: ultrapassagem)
  • Ônibus quebrado no caminho, para pegar os passageiros deles (e às vezes não, só quebrado mesmo)
  • Sons de veículos do tráfego (polícia, ambulância, bombeiro, carro do ovo, pamonha, churros, gás, etc)
  • Colisão básica no tráfego (complexa para evitar acidentes causados pelo AI)
  • Tráfego mais realista com física (colisões nas rodas, giro suave etc)
  • Ônibus parando nos pontos e pegando passageiros (depende do tráfego estável nas curvas)
  • Ônibus fazendo rotas específicas (com letreiro e tal)
  • Opção de GPS no painel (útil na versão PC, já que a tela do Android tem os montes de controles mesmo)
  • Opções de letreiros digitáveis e/ou mais fases (não prioritário, prefiro que aprendam a usar as pastas)
  • Opção para inserir letreiro pelo número, sem precisar passar por todos (provavelmente terá um painel próprio do Proton para isso, alternando os personalizados e os do mapa)
  • Ônibus e carros que somem na junção dos terrenos na Radial/Aricanduva (simples na teoria, na prática continuou bugado)
  • Opção para passar todos os letreiros do mapa pelo controle no ônibus
  • Opção de rolar letreiro de lona, quem sabe (vai ser difícil, não é prioritário)
  • Melhorias locais no mapa Aricanduva (áreas faltando prédios, muros, passarelas, aumentar a qualidade)
  • Mais detalhes no Aricanduva (bancas, postes com fios, lixos, passarelas etc)
  • Calçada vazada na guia no Metrô Carrão
  • Asfalto molhado em mais mapas (complexo, cada um foi feito de um jeito e o piso de um não pega no outro)
  • Seta indicativa no GPS em curvas antecipadas (na entrada do Carrão)
  • Garagem decente no Aricanduva
  • Estudar uma ligação de um mapa no outro com tela de carregamento (segurar o ônibus com quem estiver dentro e colocar no outro mapa)
  • Opção de alterar o destino ao chegar no final, com tela perguntando ou aviso discreto (caso a linha tenha rota de volta, sugerir inverter TS-TP)
  • Tentativa no PC: ligar um mapa no outro no modo contínuo, ignorando o tamanho dos tiles, com distância personalizada na desativação (já que serão maiores do que 3km2).
  • Animais no mapa Longeee e em áreas adequadas (peso++)
  • Pequenos mapas de desafios (curvas na neve, balizas etc)
  • Analisar possibilidade de embarque traseiro sem passar na catraca, para terminais e áreas de pré embarque (não prioritário, dará um trabalhão fazer para todos os ônibus por conta dos caminhos)
  • Vozes dos passageiros: reclamar em curvas e subidas na calçada (detectar variações bruscas de altura entre um frame e outro... pode dar zica em baixos fps)
  • Vozes dos passageiros: editar e incluir as que estão salvas aguardando (processo demorado)
  • Refatorar scripts de controle, unificando todos eles (deixar um controlador só, com câmera, tráfego, passageiros, pools diversos etc... ou não!)
  • Isolar pool de carros e pessoas do mapa, para carregar no início do jogo e reaproveitar depois (reduzirá o tempo de loading com cenas persistentes, sem ter que carregar todos os carros de novo na abertura do mapa, por exemplo)
  • Versão PC: mapa de teste com o City Scape (ideal pro Expresso Tiradentes)
  • Mais árvores 3D detalhadas, configurar no Aricanduva
  • Talvez unir o mapa do Term Shaze ao mapa continuo (ele usaria 2 tiles só... o do corredor fica inviável pela falta de cruzamentos e forma de construção das peças)
  • Mapa do Expresso Tiradentes
  • Mapa conceito com o BRT da Radial
  • Sistema de mods dos ônibus (complexo, o tempo total será variável...)
  • Gerador de strings para as placas dos carros (RAM++, pode ser dispensável)
  • Em pontos finais, terminais etc os passageiros não devem reclamar de velocidade lenta.
  • Pedestres: randomizar um pouco para lá ou para cá, um certo raio dos waypoints originais... Para dar maior dinamismo nos movimentos. E então fazer no caminho inverso também.

quarta-feira, 21 de março de 2018

Nova configuração do anti-aliasing na tela Extras

Na próxima versão de PC terá um item para escolha do tipo de anti-aliasing (anti-serrilhado) desejado ao usar os gráficos avançados. Isso deve aliviar o "borrão" que algumas pessoas enfrentaram nas últimas versões do jogo para PC. No modo com gráficos extras o anti-aliasing tradicional via hardware não pode ser usado (o MSAA não funciona no modo Deferred da Unity, mas não liga pros termos ténicos não...). O modo TAA (Temporal) estava ativado de forma fixa. Nos vários testes aqui ele foi o que mostrou a melhor qualidade. Porém ele pode deixar os objetos em movimento um pouco borrados. Agora com a escolha dará para reverter ao FXAA, que deve funcionar melhor nesses casos, apesar de não suavizar tão bem quanto o temporal faz em algumas linhas. Esta configuração não ficará disponível no celular por não ter tanta serventia, visto que os efeitos não são usados no celular - fizemos inúmeros testes no ano passado e em todos os casos a tela ficava branca, ou rosa, ou toda borrada. No celular valerá a configuração MSAA já que usa a renderização no modo Forward. Ela depende de suporte do hardware, em alguns aparelhos baratos não funciona, mas também não causa nenhum problema. Espero que algum dia seja possível ativar os efeitos nos celulares para igualar os gráficos, quem sabe...