Temas para TCC - Aviso aos navegantes

Eu tenho o livro do Norvig. E seu tema de TCC é exatamente o mesmo do meu, só que o meu é na pós. Estou fazendo uma engine de IA para jogos:

Eu recomendo que, além do Norvig, você busque os livros:
Programming Game AI By Example, do Mat Buckland e
Ai Game Engine Programming, do Brian Schwab.

Os dois são ótimos, um dos melhores da área.

Seu trabalho final é muito complexo. Especialmente para 6 meses. Você terá que se dedicar muito. Aproveite dá uma olhada nessa técnica de máquina de estados mostrada na SBGames, do César Pozzer (em anexo). Ela mostra como modelar uma máquina de estados usando também uma pilha, para reduzir a complexidade de sistemas multi-agentes.

Dá também uma olhada nesse software aqui: www.swimbots.com/

[quote=alucardeck]fiz algumas coisas…
uma delas foi implementar o algoritmo A*… (o mesmo q usa o sistema de GPS para localização de rotas)…[/quote]

O A* é realmente ótimo, mas ainda é pesado, quando se tem muitos agentes. Foi o que utilizei no Caça-a-bandeira. Na API vou colocar um módulo de pré-processamento do grafo, que deve ser útil para os casos onde o terreno é estático.

Qual a quantidade de agentes que você está pensando para o seu TCC?

O A* também tem um problema. Ele leva em conta uma premissa: A estimativa deve ser sempre menor do que a distancia real entre os dois pontos. Ou seja, ponha um teletransporte no seu jogo, e o algoritmo simplesmente para de funcionar. Nesse caso, só o algoritmo de busca radial do Dijstkra para resolver. :frowning:

Procure também se informar sobre steering behaviors e revise sua álgebra vetorial. Vai ser muito útil. :wink:

que algoritimo é esse A* ? e neste rotas que vc fez vc usou o algoritimo do caminho minimo do dijkstra???
se não usou qual foi? e qual a diferença entre o usado e o do caminho minimo?

É o algoritmo do Dijkstra, mas leva em cosideração uma função heurística e orienta a busca.

Essa função pode, por exemplo, ser a distância euclidiana entre os dois pontos. Entre uma rota com distância menor e distância maior, ele irá preferir a de distância menor.

O interessante é que o algoritmo, assim como o de Dijstkra, sempre dá o menor caminho também. Mas o problema é que a função heurística (como eu comentei ali em cima) pode quebrar, caso o domínio do problema mude.

Mais informações:

O legal da implementação do A* é que ele é funcionalmente equivalente ao Dijkstra se a função heurística sempre retornar 0.

No anexo, tem um programinha (tirado do livro do Buckland) que mostra uma comparação entre os algoritmos:

exato… utiliza o busca heuristica…

no caso do teleporte…
eu pensei em um metodo simples de adaptar o caminho… (apesar q nao vai haver teleportes no jogo)

eh soh criar uma estrada entre os 2 pontos de teleporte…
onde a distancia de “transporte” deles… sera 0… (nao vai entrar em loop, jah q o meu proprio sistema nao permite q o ator volte pela mesma estrada de q veio)…

sendo q… se existir teletransportes no mapa… bastaria informar ele para checar ambos os caminhos… (a pé e com teleporte)…

no caso do numero de atores… teria inicialmente 4…
mas poderia ter 100… ou mais…
eu jah tinha me preparado pra essa situação com outro metodo… entao os “Sims” teriam um estado chamado Pensando…
q seria o modo wait()… para o Sim terminar de processar a sua proxima ação…
entao mesmo q ele fique 1 ou 2 segundos esperando (pra dar tempo do PC processar todos os A*, considerando q todos pensassem ao mesmo tempo)…

no caso do ambiente ser instavel… eu vou juntar o util ao agradavel…
cada Sim… possuira um mapa proprio na sua “mente”… onde ele tera conhecimento apenas doq esta perto dele, ou dos lugares q ele jah visitou (e ficara gravado na sua mente oq ele viu da ultima vez)…
se por exemplo… uma ponte quebrar… ele soh vai tomar conhecimento disso qdo ele chegar na ponte… (ateh pq nao seria possivel ele saber de longe q algo aconteceu)… entao qdo ele chegar na ponte… e ver q eh impossivel prosseguir o caminho… ele atualizará o mapa na sua “mente”… e o algoritmo A* irá procurar a nova rota para o antigo destino (se ainda existir uma rota possivel)…

acho q respondi todas as perguntas heheh

A sua solução não funciona. A função heurística vai levar em conta a distância euclidiana dos pontos, e resultar em algo maior que o custo real no trecho do teletransporte.

Como isso não pode acontecer, o algoritmo vai simplesmente ignorar esse caminho.

O difícil está no fato da função que estima não saber exatamente a condição do caminho. E como esse caminho é sempre muito melhor que a estimativa, ele é sempre ignorado. Exceto no caso de Dijsktra, onde a estimativa é sempre a pior possível.

Para 4 sims, o A* não será problema.

ah agora entendi oq vc ker dizer…
mas se eu precisasse resolver… pensaria em algo heheh

ainda bem q um jogo simulando a realidade nao precisa de teleportes =P

Sim, só é bom lembrar desses detalhes por causa das famosas idéias brilhantes de meio de projeto.
A solução é simples, não usar A*.

No caso de um mapa estático, não tem nada com performance melhor do que um algoritmo pré-processado. :slight_smile:

Olá a todos, estou cursando Ciencia da Computação na Universidade de Franca - Unifran e estou no terceiro ano, o foco do curso é tecnologias em computação, ou seja, não posso desenvolver de TCC por exemplo um programa comercial por exemplo, tal como, esses programas de vendas, até posso desenvolver um programa comercial com desde que esse utilize de alguma tecnologia especifica, já tenho de apresentar o tema do meu TCC, e começar a desenvolver ele para entregar em 11/2009, ou seja, tenho mais de 1 ano para fazer ele, tenho até um tempo bastante, mas até agora ainda não cheguei em nada convicto, já passei por diversas idéias, tais como, um programa P2P, Web Semantica, algo com gráficos, um jogo 3D, entendo bastante de Java e curto muito computação gráfica, pois até tenho essa materia, onde mexemos com OpenGl, gostaria de aceitar sugestões de idéias do pessoal e ficar também a disposição de todos caso alguém necessite de algo.
Obrigado.

[]s.

jogos 3D estao virando moda heheh

ainda mais com todas essas APIs pra java…

eu nao resisti tambem xD

Todas essas para java? Já viu o tanto que tem para C++?
Gráficos, física, tudo mais… tudo de graça e de ótima qualidade.

Em Java temos muitos wrappers e praticamente nenhum integrado ao DirectX.

[quote=ViniGodoy]Todas essas para java? Já viu o tanto que tem para C++?
Gráficos, física, tudo mais… tudo de graça e de ótima qualidade.

Em Java temos muitos wrappers e praticamente nenhum integrado ao DirectX.[/quote]

sim claro, mas a qto tempo usam C pra isso?
muita gente gostaria de usar Java… mas por falta de “conteudo” fica dificil
e agora estao surgindo cada vez mais…

um passo de cada vez…

E para java qual é aconselhavel ?

com base em pesquisas…
a melhor engine q encontrei para oq eu pretendo fazer…
é a www.jmonkeyengine.com
estou estudando ela faz um tempo… e aparentemente ela possui tudo oq eu pretendo usar…

no site tem mais informações sobre engine fisica, e etc…
se vc tem mesmo um bom conceito com Java… vai ser facil usar essa engine…

lah tb tem algumas demonstrações de jogos criados nessa engine…

causou um belo impacto na banca no dia da primeira apresentação sobre o meu TCC…
(graduação de Eng. Computação)

alucardeck tem como vc me passar o seu msn para que a gente possa trocar uma idéia melhor, pois me interessei muito sobre o seu assunto, e também gostaria de poder ajudar em algo caso necessite estarei a disposição.
Obrigado.

Para Java é a JMonkeyEngine mesmo.
Já ouvi falar bem também da Xith3D, mas todo mundo que eu conheço e que testou as duas prefere a JMonkey.

E eu falei C++, não C. Mas é real, a EA já usa o C++ a bastante tempo. Eles tem até uma implementação da STL própria para jogos.

[quote=ddducceschi]alucardeck tem como vc me passar o seu msn para que a gente possa trocar uma idéia melhor, pois me interessei muito sobre o seu assunto, e também gostaria de poder ajudar em algo caso necessite estarei a disposição.
Obrigado.[/quote]

se vc tivesse visto o meu programa no fim da pagina 5… lah estaria meu MSN =P

vou passar por MP hehe

Costume de digitar C pra tudo =P

Olá pessoal,

Estou no 3º ano de Ciencia da Computação, da mesma sala q o ddducceschi e estou sem idéias tbm pro meu tcc. Já pensei em algo para TV digital, mas como o assunto é novo, é dificil achar um estudo mais especifico para realizar o tcc. :?

Curto bastante Java, Web e Computação Gráfica.

Aguardo sugestões. :lol:

Vlw.

[quote=gomarin]Olá pessoal,

Estou no 3º ano de Ciencia da Computação, da mesma sala q o ddducceschi e estou sem idéias tbm pro meu tcc. Já pensei em algo para TV digital, mas como o assunto é novo, é dificil achar um estudo mais especifico para realizar o tcc. :?

Curto bastante Java, Web e Computação Gráfica.

Aguardo sugestões. :lol:

Vlw. [/quote]

Olá Gomarin!

Eu acho TVDigital um ótimo tema. Eu não sei se tem algo ainda a melhorar quanto ao sinal, ou a engenharia social, enfim, qualquer coisa. Dá uma pesquisada que voce consegue achar e desenvolver algo bem legal. Sem contar que é um tema novo e MUITO legal. :wink: