por Marcos Elias
Programar um sistema de tráfego AI para uso em jogo é uma tarefa beeem complicada. Os conceitos são simples, mas há tantas questões envolvidas… Bom, encarei o desafio! Preciso disso para tornar um sonho realidade: um simulador de ônibus. Não qualquer um, mas o meu! Como não achei nenhum sistema de AIs para carros em Unity que desse para usar de boa, fui estudar e fazer o meu próprio.
Quero fazer nada mais, nada menos do que O MELHOR SISTEMA DE TRÁFEGO AI PARA UNITY, OPEN SOURCE E GRÁTIS. Mas preciso do seu apoio também, leia até o final, caso um sistema de tráfego AI lhe interesse ;)
A coisa tá ficando bem interessante :D
https://www.youtube.com/watch?v=_7j-CE08liU
Esse vídeo tem o progresso atual. O sistema conta com menos de duas semanas de trabalho! É tão chato ver as ruas vazias nos jogos… Precisam ganhar vida! Mesmo se seu jogo não for sobre carros ou sistemas de direção, é legal ter carros passando nas ruas, estradas…
Meu sistema de tráfego de carros AI para Unity 3D deverá ser open source e praticamente grátis, se tudo der certo. Vou pedir contribuições por ser um sistema bem difícil de fazer, todos os que existem são pagos ou são muito ruins… ou ambos, rs. Você contribuiria financeiramente com um projeto desses? Meu sistema é bem promissor pois NÃO HÁ ALTERNATIVAS grátis e completas. Ele deverá fazer um certo barulho na comunidade de Unity assim que for lançado. Preciso de dinheiro para financiar o tempo gasto, quanto mais dinheiro = o projeto sai mais rápido; caso contrário pode demorar meses, pois não terei tempo para me dedicar diariamente ao mesmo. Mas calma, você terá algo concreto!
Antes de tudo, devo lembrar: os modelos 3D dos carros que aparecem no vídeo NÃO fazem parte: depois de lançado, cada um deverá usar seus próprios carros ou comprar assets por aí. Vários ônibus são meus e os carros são de um asset pago da Asset Store, que naturalmente não posso redistribuir. Aproveitando, tenho tutoriais de Blender mostrando como fiz os ônibus brasileiros ;) O que está em jogo é o sistema de tráfego AI. Você pode baixar carros grátis em sites de modelos 3D, se não tiver nenhum.
Vamos aos detalhes!
Algumas características principais do MEP AI TRAFFIC para Unity 3D:
* Sistema leve, sem usar física! Os AIs seguem fielmente o path delimitado. Quem quiser usar física para mover os carros poderá trabalhar nisso, já que será open source… Basta deixar os rigidy body como não-knematic e aplicar força/torque. Em testes preliminares, o uso de física para os AIs não me pareceu muito útil: o sistema fica muito pesado ao usar muitos carros. Então não pretendo implementar isso tão cedo. Seria útil para ruas com poucos carros, mas meu sistema é projetado para simular vias de cidades grandes, movimentadas.
* Extremamente fácil de usar! Basta colocar as ruas e cruzamentos, o vertex snapping do Unity ajuda muito… Criar seus próprios prefabs de ruas e cruzamentos próprios é bem fácil. Além disso, os paths podem ser usados em qualquer área do terreno ou outras ruas feitas com qualquer sistema! Você deixa o sistema de AIs trabalhar sozinho e gasta seu tempo fazendo o melhor: programando seu jogo e elaborando seu cenário.
* Implementação RÁPIDA: não é necessário ficar marcando paths no caminho todo, nem usar nenhuma ferramenta especial integrada ao editor! Basta usar os prefabs de ruas e cruzamentos ou os paths isolados, caso for colocar num terreno ou rua feita em outro sistema. Os carros vão aparecer sozinhos! Você só precisará fazer os paths marcando pontos ao usar objetos de cruzamentos e ruas próprios, mas isso será feito uma só vez. É coisa de 10 minutos ou menos, e disponibilizarei um manual e tutoriais em vídeos. Uma vez pronto o modelo 3D da rua com os paths associados, basta salvar o prefab e unir um ao outro para construir sua malha rodoviária!
* Sistema de spawn automático, que sorteia um carro aleatório numa lista… Ou manual, para dar spawn em carros específicos (útil para usar com ônibus, trens, aviões, etc).
* Sistema para matar os AIs num certo ponto (por ex, ao final de uma rua sem saída…), dando uma otimizada na quantidade de carros carregados.
Coisas ainda não desenvolvidas, mas que eu quero que estejam presentes:
* Sistema de semáforos (em desenvolvimento, logo logo mostro nos vídeos).
* Sistema de pedestres caminhando nas calçadas e talvez travessias.
* Controle de velocidade nas pistas (ideal para deixar as pistas expressas com velocidade maior).
* Cruzamentos com conversões à direita e esquerda (no momento os AIs seguem na via principal, lembre-se de que está em desenvolvimento!)
* Opção para limitar o número máximo de carros (o ideal é que isto seja configurado pelo player).
* Opção para alternar a quantidade de carros dependendo do horário (isto pode funcionar alterando a variável anterior, chamando ela em scripts próprios).
* Alguns outros modelos de cruzamentos, rotatórias, etc.
* Animação nas rodas (pelo menos nos veículos próximos do player, nos distantes seria desperdício de recursos!).
Nos meus testes o código suporta facilmente mais de 500 carros sem grandes perdas de desempenho em PCs modernos. Tenho um Core i3, 8 GB de RAM e uma GTX 460 de 1 GB. Com PCs mais parrudos acredito que dê para suportar mais de mil ou 1500 carros, pois o meu já tem alguns anos nas costas… Naturalmente isso dependerá de vários fatores: dos modelos 3D, LOD, do cenário, efeitos visuais, occlusion culling etc. Para um jogo com ruas comuns uns 100 carros já estará de bom tamanho! O código é o mais leve possível. Para testar seu peso você pode usar carros simples, com objetos de cubo, por exemplo.
Também recomendo um sistema de otimização que só deixe aparecer carros num certo raio próximo do player – e ao sair dele, os carros são eliminados. Assim poupa-se recursos gráficos, memória e processamento. Um script para isto será incluso! No meu jogo só irão aparecer os carros num raio de uns 600 a 800 metros do player – a distância é configurável, claro. Eles não podem dar spawn muito próximo, pois seria irritante; nem muito longe, já que seria desperdício de recursos. Isso já foi pensado ;)
Este projeto tem potencial para ser pago, mas quero liberar grátis!
Muita gente não tem como pagar $30 ou $100 dólares que seja por um sistema de AIs para Unity. E pior: os sistemas mais bem elaborados são caros, extremamente caros, podendo chegar a algumas centenas de dólares. Muitos baratos não incluem o código fonte, impossibilitando personalizações e limitando suas capacidades na resolução de bugs.
O meu sistema será totalmente OPEN SOURCE, a comunidade poderá utilizar e melhorá-lo, revertendo os benefícios para todos!
Mas ao mesmo tempo… Eu preciso de dinheiro. Será que rola uma ajuda mútua?
Sim, eu preciso de dinheiro!!! Quem não? Ajude este projeto a se tornar realidade!
Eu poderia vender esse sistema por uns R$ 100 ou mais, vendo a média de preço de outros sistemas parecidos. Ele completo, quando finalizado, poderia ser ainda mais caro. E pela facilidade de implementação e spawn automático, acredito que meu sistema tenha até mais valor do que muitos que já estão bem estabelecidos na Asset Store. Mas eu quero viabilizar o projeto também para desenvolvedores indie, que não têm como pagar 30 dólares (hoje mais de cem reais) por um sistema de AI. Amo software livre, como o próprio Blender, que me trouxe ao mundo 3D… Adoraria contribuir com a comunidade de desenvolvedores Unity também – e vou. Afinal o Unity libera muita coisa de graça e facilita imensamente a realização dos nossos sonhos! A Unity 5 então, melhor ainda…
Bem, a crise está aí, emprego está difícil, tantas coisas fechando… Será que rola receber uma força com contribuições pelo projeto? Você provavelmente NÃO VAI ACHAR de graça um script de AIs como o meu pronto para uso em nenhum outro lugar. Quanto você acha que ele vale?
Vou deixar o valor em aberto: se você puder pagar R$ 30 reais, ótimo! Encare como uma breja ou um almoço num bar para alguém que lhe ajudou… Se o seu jogo for bem avaliado e o sistema de tráfego AI for importante para ele (caso seja um game com ruas e tal…), poderia pagar uns R$ 500, caso faça lucro? Você que sabe. Quanto sua consciência dizer que o sistema vale e você estiver disposto…
Bem, o sistema será liberado de graça, pois sei que muitos precisam testar para ter certeza, e muita gente também não tem como pagar porque programa apenas como hobby. Eu quero acreditar que dá para fazer dinheiro com Unity sem precisar cobrar uma fortuna. Então pague o quanto você puder!
Com o pessoal financiando o desenvolvimento eu vou ter tempo para me dedicar ao projeto, implementar melhorias e aceitar as correções ou sugestões de outras pessoas. Eu realmente preciso de dinheiro, aceito até equipamentos de hardware usados em troca ou como parte, pois me auxiliam nos testes – como notebooks ou tablets e smartphones variados, pois também estudo desenvolvimento de games mobile.
Como falei, eu poderia vender o meu sistema de AIs assim que finalizado por uns $ 30 dólares que muitos pagariam na Asset Store. MAS EU QUERO LANÇÁ-LO GRÁTIS E ABERTO, acreditando no poder da comunidade open source. Com mais gente vendo o código e mexendo, ele vai ficar bem melhor!
NÃO HÁ NENHUM SISTEMA GRÁTIS DE AI PARA CARROS PRONTO PARA USAR PARA UNITY. O meu tem potencial, modéstia a parte, para desbancar muitos dos pagos por aí.
Enfim, espere eu lançar o primeiro preview, logo vou publicar um demo do jogo ou o WebPlayer com ele. Quero terminar algumas outras coisas ainda, e lançar o projeto nesse estado será ruim pois não terei como implementar imediatamente as modificações feitas pela comunidade. Acho que não sou um bom gerenciador de projetos, hehe. Lidar com commits, testes… Vou fazer, publicar na Asset Store ou um GitHub da vida e ir atualizando como puder.
Se não rolarem contribuições em volume expressivo, não terei tanto tempo para continuar o projeto (pois terei que trabalhar em outras coisas), e acabarei desenvolvendo apenas para uso próprio mesmo… Ou optarei por fazer uma versão comercial, o que sinceramente não estou muito afim pois quero ajudar a galera que faz games indie também. Amo ônibus, tem vários projetos de jogos de ônibus por aí, mas sem AIs não rola… E sei que, assim como eu, eles não poderiam pagar pelo sistema. Talvez possam depois que for lançado e venderem, mas antes, durante o desenvolvimento… Sei bem como é.
Quer dar uma força já?
Se você gostou da ideia, acredita no projeto e já quiser dar uma força, agradeço! Os colaboradores serão os primeiros a receber os betas.
Lembre-se de que é no formato DOAÇÃO: não é uma compra, nem garanto suporte dedicado – farei de tudo para ajudar, mas meu tempo é limitado. Pague o que puder por acreditar no projeto! Se seu jogo fizer sucesso e o sistema de AIs for essencial para ele, volte e colabore um pouco mais, pode ser? ;-)
As doações ainda não foram abertas, preciso finalizar o código básico para publicar e liberar aos colaboradores primeiro! ;-) Obrigado desde já pelo interesse!
O que você estará financiando ao pagar?
Basicamente, o meu tempo de desenvolvimento e os meus projetos de games. Estou trabalhando todos estes dias nesse projeto! Eu quero comprar vários assets na Asset Store para usar com meus jogos, incluindo prédios e cidades, mas não tenho dinheiro disponível para investir nisso por agora… Não vivo de jogos, não tenho nenhum jogo lançado… Suas contribuições ajudarão a tornar os meus games reais também!
Na verdade até tenho algo publicado, mas é um projeto zoeiro, não conta: o Parada Solicitada Simulator). E tem um game de terror que comecei para estudos, mas não terminei: Projekt 407. Vale conferir uns gameplays dele no YouTube, o hospital é um asset pago que comprei porque admirei muito!
Enfim, o sistema será open source, mas como preciso da força financeira…. Quem não puder ou não quiser, tudo bem, o sistema vai ser concluído de qualquer jeito, afinal faço com empolgação para uso próprio também.
Fique ligado que logo logo virão mais vídeos, e assim que o download for liberado, informarei no meu canal no YouTube:
http://www.youtube.com/marquinhosxp
Não pode pagar nada? Contribua de outra forma!
Se você modelar carros, ou cruzamentos e ruas que se encaixam, poderia estar liberando elas de forma livre para que outras pessoas utilizem em seus jogos? Pode ser uma alternativa também ;-) Ou vendo o código e caçando bugs, aprimorando o desempenho, fazendo as coisas que faltam…
Mais vídeos do desenvolvimento!
Estou fazendo vários vídeos com um pouco do desenvolvimento do meu projeto, toda semana tem um novo! Confira os mais recentes no meu canal no YouTube:
http://www.youtube.com/marquinhosxp
Alguns interessantes, como o início do sistema de semáforos:
https://www.youtube.com/watch?v=3xX0oNUWtT0
Olá Marcos retorne contato pelo e-mail cadastrado aqui no blog que preciso conversar com você sobre simulador de jogos. Forte abraço e tudo de bom!