void masters();


More Braaains

Continuando o assunto sobre Inteligência Artificial, vou hoje falar um pouco sobre algo que implementei no meu antigo projeto de RPG Maker XP: a habilidade de personagens não controláveis aprenderem quais os melhores ataques contra cada  tipo de inimigo.
Num primeiro nível, para poder dar a possibilidade do personagem escolher qual o ataque mais eficaz contra certo inimigo, este tinha que ter a possibilidade de testar todos os seus possíveis ataques, e conseguir estabelecer um padrão. A primeira atitude “inteligente” do personagem é usar aleatoriamente qualquer um dos seus possíveis ataques (que geralmente eram 4), e memorizar um histórico desses ataques. Este histórico guarda, para cada inimigo diferente, o tanto de dano tirado por cada ataque num determinado número de vezes no passado.
Para a segunda parte, um tanto mais complicada, decidi usar uma rede neural. A idéia aqui era que o personagem pudesse avaliar suas decisões e estabelecer novas prioridades para seus ataques, no intuito de adaptar-se e chegar ao ponto de usar apenas os ataques realmente efetivos.
O modelo de rede neural que usei foi um Multilayer Perceptron (MLP), usando um algoritmo de Backpropagation. Não explicarei a fundo como funcionam estas técnicas porque meu entendimento sobre o assunto não chega ao nível de poder ensinar, mas o objetivo dessa utilização é poder testar as ações, verificar seus resultados, e adaptar a rede para que suas próximas ações cheguem mais próximas do seu objetivo.
A modelagem da rede foi a seguinte: Usei 4 entradas, que correspondem cada uma a um dos 4 ataques possíveis dos personagens. Os valores de entrada eram sempre a divisão de 1 pela média do dano geral já causado por cada ataque. A camada escondida possui 3 nodos, e saída possui novamente 4 nodos, correspondentes aos mesmos ataques da saída. Os valores desejados para a saída são a média do dano geral causado por cada ataque, dividido por 100 (portanto, é sempre equivalente a entrada).
Durante o jogo, a cada ataque que o personagem dá, sua rede é treinada. Quando os valores da entrada são calculados e chegam na saída, duas coisas acontecem: a primeira, é aplicar o algoritmo de backpropagation para levar o erro da saída até os pesos das entradas.  A segunda coisa, que é a mais importante, é usar o valor das saídas, desconsiderando o erro, para decidir se o ataque é efetivo ou não.
Sendo os valores da saída sempre entre 0 e 1, é possível obter-se uma porcentagem apenas multiplicando as saídas por 100. É definido que todos os ataques com pelo menos x% de efetividade podem ser usados contra o inimigo, mas ataques com maiores porcentagens tem maior probabilidade de serem usados. Com uma taxa de aprendizagem bem ajustada, os valores de porcentagem de todos os ataques permanecem dentro dos limites por tempo suficiente para que os ataques realmente efetivos sejam elevados à percentagens bem altas, devido ao ajuste dos pesos que ocorre. Neste ponto, os ataques menos efetivos começam a dimiuir sua percentagem de uso a ponto de passarem usar raramente, ou até mesmo nunca, se os valores das saídas ficarem abaixo do valor de ativação.
E então tem-se um personagem que fogo derrete gelo e água apaga o fogo!

Aqui vão alguns gráficos que mostram os avanços dos valores de pesos, entradas, saídas, erros e saídas desejadas para testes usando um ataque altamente efetivo contra certo inimigo, em 3 estágios de testes: Após ter lutado contra 3, 15 e 25 inimigos iguais, usando os mesmo ataques.

inputweightoutputtargeterror

Para descobrir um pouco mais sobre os perceptrons e redes neurais em geral:
http://en.wikipedia.org/wiki/Perceptron
http://www.ai-junkie.com/ann/evolved/nnt1.html
Aceitando feedback, como sempre!

Um passeio evolutivo pelo Night Sunrise

Enviado em game design, night sunrise, projetos por Felipi no Fevereiro 12, 2009
Tags: , , , , , ,

Talvez muitos saibam, talvez poucos saibam, mas eu tenho um projeto de jogo no qual venho trabalhando há… Bem, muito tempo.
Hoje, após ter trabalhado novamente no layout de tela do gameplay principal do jogo, acabei relembrando velhas imagens que tenho desde o início do projeto. E decidi compartilhar para mostrar como as coisas acabam mudando com o tempo (e como é bom quando muda pra melhor!)…

1 – Night Sunrise ainda com o nome cliché Dark Quest 

2 – Primeiras imagens com o nome de Night Sunrise

3 – Personagens maiores e outras melhorias

4 – Mais melhorias

5 – Imagens mais recentes

luzclimb_fun2bg_1fog_1fg

6 – Versão iPod Touch/ iPhone (tela de loading, layout 1, layout 2, layout 3 defintivo)

02-loading

layout1

Feedback??

Braaains

pinky_brain

  [estive mais um bom tempo sem postar hein? >.<]

  O assunto que venho abordar dessa vez é um tanto abrangente, então possivelmente irei continuar em outros posts futuros. O assunto em questão provém de idéias que tive para a criação de um jogo singleplayer que focasse grande parte da jogabilidade na interação com os NPCs. Para isso, comecei a desenvolver a idéia da criação de um “cérebro”, que estaria presente em todos os personagens do jogo, e que guardariam as mais diversas informações sobre as ações do jogador, e os rumos que o jogo estaria tomando em função destas.
   O projeto inicial desse cérebro estava baseado em uma entidade que possuiria algumas categorias de conhecimentos e estados, e cada uma dessas categorias estaria responsável por uma parte do processamento das informações que seria trocadas com o ambiente, com o jogador e com os outros NPCs. Essas categorias deveriam ser auto-adaptáveis, ou seja, deveriam estar prontas a aprender novos comportamentos em caso de serem submetidas à novas experiências, e também mudar este comportamento quando as respostas deixassem de ser as desejadas. Exemplificando, imagine que uma dessas categorias do cérebro seja o controle das emoções do personagem. Essa categoria deveria estar pronta para aprender a rir, caso algo engraçado acontecesse, mas também deveria estar disposta a parar de rir, caso o contexto passasse a não aceitar mais as risadas (risadas num velório??).
  As categorias base que imaginei para o desenvolvimento de um cérebro para os personagens seriam:

  •  Percepção do Ambiente: capacidade de entender o cenário e se adaptar, além de aprender as funções dos objetos em cena e entender possíveis mudanças no ambiente. Exemplos:  descobrir pontos do cenário para se proteger de tiros/flechas, aprender que pedras podem ser pegadas e arremessadas, aprender que certas distâncias podem ou não ser alcançadas com um pulo, aprender que na hora da chuva deve-se voltar para casa.
  • Resposta ao Jogador: capacidade de dar Feedback para as ações do jogador, ou adaptar comportamento devido a essas ações. Exemplos: contra-atacar o jogador, caso for inimigo, se afastar e fazer perguntas do tipo “por que está fazendo isso?”, caso for amigo, brigar com o jogador caso este quebre alguma coisa que era de posse do NPC.
  • Aprendizagem e Adaptação: capacidade de mudar os comportamentos padrões do NPC. Enquanto os itens anteriores tratavam de respostas mais instantâneas e que podiam não durar para sempre, este tipo de adaptação prevê que mudanças no comportamento serão tidas como padrão até que haja uma nova mudança relevante. Como exemplos, leve em consideração que um caixeiro NPC viajante sempre toma um caminho para ir de um lugar ao outro.  Em certa ocasião, esse caminho passa a ficar bloqueado (uma rocha gigante talvez). Na primeira viagem do NPC após esse acontecimento, ele deve aprender que este caminho não é mais válido, e então deve passar a sempre usar um caminho alternativo.
  • Emoções e FSM: dois tipos de máquinas de estados diferentes, que devem controlar os diversos estados do NPC, como situação de combate, se está dormindo ou acordado, humor do dia e etc. O diferencial da Finite State Machine que controlaria esses estados para o controle de emoções estaria em que o controle de emoções seria uma Fuzzy State Machine que aceita diferentes emoções ao mesmo tempo, e também aceitaria diferentes respostas para as mesmas ações, como numa situação de batalha ficar muito bravo e violento, e em outra covarde (devido a um número maior de inimigos, por exemplo). Além disso, o controle de emoções deveria ter um controle de afinidades entre o NPC e certas ações ou entre os NPCs ( NPC “A” gosta de conversar com “B”, mas não com “C”, e gosta de pescar, mas somente com chuva).

  Bom, tendo aí a idéia base do que seria o cérebro dos NPCs, alguém pergunta: isso é fácil de implementar?
  A resposta é simples: não. Muitos conceitos de Inteligência Artificial estão englobados nesse projeto, portanto muita coisa poderia não funcionar, ou ser deixada de lado, num cenário real de desenvolvimento de jogos (talvez não no profissional, mas provavelmente aconteceria com desenvolvimento independente).
  Mas de qualquer forma, é uma idéia interessante de se trabalhar, então num próximo post irei falar sobre um exemplo de sistema que já desenvolvi e que pode ser considerado como uma parte desse sistema grandioso.

Até mais, aceito feedback \o/

[PS: Caso alguém não saiba o que é um NPC, significa Non-player Character, um personagem não controlável pelo jogador, podendo ser tanto um parceiro controlado pelo computador, um inimigo, um cachorro, ou o tiozinho que vende poção na lojinha.]

Onde Você Guarda Tudo Isso?

Enviado em design, experimental por Felipi no Novembro 16, 2008
Tags: , , ,

Eu adoro pegar ítens em jogos. Ítens para colecionar, ítens para vender, ítens para usar, simplesmente gosto dos ítens. Mas nem sempre eu sou feliz em minhas árduas jornadas de caça a ítens para minhas coleções: se meu inventário não permitir que eu carregue esses ítens, todo o esforço foi em vão.
Pensando nos tais inventários, resolvi comentar alguns dos tipos de inventários mais comuns em jogos, e quais são suas vantagens e desvantagens.

O Inventário Gato Félix

felix

castlevania

O exemplo acima (Castlevania Aria of Sorrow) mostra o que eu estou chamando de inventário Gato Félix: um inventário que permite que o jogador adicione ítens infinitamente, sem restrições. Esse tipo de inventário é um dos mais utilizados em jogos que misturam algum gênero qualquer com o RPG ( e alguns RPGs puros também), e são ideais quando o fato de estar carregando todos os ítens possíveis não interfere no gameplay. Esse tipo de inventário não é muito interessante nas ocasiões onde os inventários citados a seguir se encaixam melhor.

Economize

re2re3

Os inventários acima (Resident Evil 2 e Resident Evil 3) são inventários com um número bastante limitado de ítens para carregar. O espaço em forma de grade, contendo 8 quadrados (mas se eu bem me lembro, havia uma forma de aumentar para 10 no RE2) forçava o jogador a escolher bem que ítens carregar: armas pesadas e mais poderosas costumavam ocupar mais espaço no inventário (2 quadrados, mais a munição, que num mesmo quadrado poderia conter vários tiros, mas a munição das armas leves podia guardar mais tiros no mesmo espaço); além disso, ítens de recuperação, como ervas e sprays, apesar de gastar apenas um quadrado, não podiam ser agrupados no mesmo quadrado, e geralmente deveriam ser carregadas em grandes quantidades. Ainda era preciso guardar espaço para os ítens importantes, como chaves ou peças para quebra-cabeças, e alguns ítens menos importantes, como as fitas para salvar o jogo, que poderiam agrupar muitas em um mesmo espaço. Desta forma, o jogador deveria saber carregar somente o necessário para a sua sobrevivência no jogo, o que aumentava o clima de terror e tensão.

re4

O inventário do Resident Evil 4 (acima) segue a mesma idéia dos anteriores, mas com algumas modificações: embora o inventário tenha aparentemente bem mais espaço, algumas armas que antigamente ocupavam apenas 2 espaços agora ocupam muito mais. Também há a opção de rotacionar os objetos para melhor organizá-los.

Cada Macaco no Seu Galho

zelda

O inventário do jogo The Legend of Zelda: Ocarina of Time não tem muito mistério: cada ítem ocupa seu espaço certo no inventário. O jogador nunca vai pegar mais ítens do que o inventário suporta, e mesmo que alguns ítens ocupem o mesmo espaço, o jogador nunca vai pegá-los ao mesmo tempo. Simples, funcional e bonito.

Para a Dor nas Costas

oblivion

O inventário acima vem do jogo The Elder Scrolls IV: Oblivion. Confesso que parei de jogar esse jogo antes de entender direito o inventário, mas o que eu pretendo falar é apenas sobre a forma como ele limita os ítens que o jogador carrega: por peso. Assim como alguns outros RPGs mais modernos (Ragnarök, se não me engano), cada ítem tem seu determinado peso, e o personagem pode carregar um determinado peso total (fixo ou variável conforme os atributos do personagem). Eu particularmente acho esse tipo de inventário abominável porque se torna matemático demais ter que ficar calculando pesos. Deve ser legal pra quem trabalha em fruteiras ou lugares do tipo…

Frio

Por último, vou falar dos inventários de dois jogos da Blizzard Entertaiment que eu gosto muito: Diablo 2 Lord of Destruction e World of Warcraft.

diablo2

O inventário do Diablo 2 segue um esquema parecido com o do Resident Evil, só que aqui há mais espaço, mas sem a oportunidade de rotacionar os ítens (o que às vezes seria interessante). Os ítens podem ocupar os mais diversos tamanhos na grade, e muito poucos deles podem ser agrupados em um quadrado só (gemas, poções para se arremessar, flechas e facas são os que eu lembro no momento). O interessante do inventário é que ele tem o tamanho ideal: Enquanto não se está usando nenhum Charm, ele consegue carregar uma boa quantidade de ítens. Quando se começa a usar Charms, que são ítens que dão vantagens para o jogador apenas por estarem no inventário, tem-se a contravantagem de ter cada vez menos espaço para as outras coisas, mas isso ainda mantém equilíbrio no jogo.

wow

O inventário do World of Warcraft também segue o sistema de grades, porém nenhum ítem ocupa mais de um quadrado. O que pode acontecer é que alguns ítens podem ser agrupados em apenas um quadrado, outros não. Além disso, o jogador começa com apenas uma bolsa de 16 quadrados, e mais 4 espaços que podem ser ocupados com bolsas de tamanhos variáveis. Não preciso dizer que bolsas com menos espaço são bem mais fáceis de se encontrar…

Bom, nem preciso dizer que comentários sempre são benvindos ^^

-http://felixthecat.com/index.htm
-http://www.konami-data.com/officialsites/castlevania/
-http://www.capcom.com/ResidentEvil/
-http://www.zelda.com/universe/game/zelda/
-http://www.elderscrolls.com/games/oblivion_overview.htm
-http://www.blizzard.com/diablo2/
-http://www.worldofwarcraft.com/

Dificuldade é tão Difícil >_<

Enviado em design, experimental por Felipi no Novembro 6, 2008
Tags: , ,

Houve um tempo, há milhões de anos atrás (talvez nem tanto), onde os jogos possuíam apenas um nível de dificuldade – que geralmente era algo em torno do “praticamente impossível”. Depois de um tempo os jogos começaram a se usar da idéia de ajuste de dificuldade: o jogador escolhia, ao iniciar a partida, se queria jogar no nível fácil, médio ou difícil.
Ok, isso parece algo bem simples e óbvio, mas ainda tem uma questão que ninguém costuma pensar: Como o jogo – ou a equipe que o fez – sabe dosar a dificuldade? Como sabem que o difícil é realmente difícil e o fácil é realmente fácil, e como conseguem equilibrar as diferenças relativas que há entre alguém que joga muito mal e alguém que joga muito bem?
Logicamente, ninguém sabe a dificuldade do jogo antes de realmente jogá-lo, mas existem algumas técnicas e padrões de design que visam, já na fase de projeto, controlar a dificuldade do jogo para que as coisas fáceis sejam realmente fáceis, as coisas difíceis sejam realmente difíceis, e que a progressão e a curva de dificuldade sejam suaves.
Eu, como um mero estudante de game design, não venho dizer exatamente como funciona o controle de dificuldade nos games, nem venho mostrar exemplos que sejam aceitos como padrão na indústria atual, mas venho mostrar certos padrões que já percebi em games e estudos, e idéias do que eu acho que possam ser formas alternativas de dificuldade.

1 – Curva Côncava
curva côncava
Esta primeira curva de dificuldade é uma das mais comuns em games: não importa qual a dificuldade que se inicia o jogo, essa irá aumentar exponencialmente, tornando-se cada vez mais difícil na medida que se chega perto do final do jogo.

2 – Curva Convexa
convex
Esta curva de dificuldade é a clássica de jogos como Castlevania: no início do jogo a dificuldade aparenta ser muito maior do que no final. Isso geralmente acontecia porque no início o jogador, além de estar ainda aprendendo a jogar, está com poucos equipamentos e habilidades. No final, embora os inimigos e o jogo num todo tenha aumentado a dificuldade, o personagem evoluiu mais do que o ideal para manter a dificuldade balanceada. Eu pessoalmente acho que todos devem manter uma distância de muitos quilômetros desse tipo de curva de dificuldade quando criando um game: o jogador sempre se frustra, seja no início porque está muito difícil, ou no fim porque ficou fácil demais…

3 – Curva “Serra”
saw
Este estilo de curva é comum em jogos que tenham seu fluxo quebrado em missões ou fases, que acabam tendo suas próprias curvas de dificuldade. Cada fase inicia num nível de dificuldade que aumenta gradativamente até o final, onde geralmente existe um chefe ou quebra-cabeça mais complicado, e ao terminar a fase e iniciar a próxima, o nível de dificuldade geral aumentou, porém essa nova fase sempre inicia um tanto mais fácil que o final da anterior. Esse tipo de curva é interessante porque, além de equilibrado, constrói também uma curva de tensão em cada fase, já que os picos de dificuldade surgem e desparecem frequentemente.

4 – Iniciando num mesmo ponto
startequal
Este primeiro projeto de curva de dificuldade segue a idéia da escolha do nível de dificuldade por parte do jogador, mas com o diferencial de que, aqui, todos os níveis irão iniciar iguais, porém quanto mais difícil for o nível escolhido, mais difícil será a aprendizagem no decorrer do jogo. Isso possibilita que o jogador comece igual em qualquer dificuldade de jogo que escolher, porém são suas aptidões no jogo que permitirão que ele consiga ou não avançar em determinado nível.

5 – Curvas diferentes
different
Esta outra idéia sugere que cada nível de dificuldade que o jogador possa escolher tenha sua própria curva de progressão. Desta forma, o jogador que começa o jogo mais difícil irá avançar de dificuldade lentamente, e o que começa mais fácil terá uma progressão mais acentuada no decorrer do jogo. Todos os níveis começa e terminam com uma diferença bem menor do que no decorrer do jogo. Pode não ser aplicável, mas ainda é interessante…

6 – Curva definida pelo jogador
player
Esta última idéia teria apenas uma dificuldade de jogo inicial, mas que iria mudar de acordo com a habilidade do jogador: se ele joga “bem”, o jogo fica automaticamente mais difícil, se o jogador joga “mal”, o jogo ficaria automaticamente mais fácil. A dificuldade também poderia ser filtrada por elementos no jogo: Se o jogo permite lutar e dirigir, a dificuldade poderia ser auto-ajustável tanto para os desafios de luta como para os desafios de corrida, afinal, um jogador pode conseguir fazer uma atividade com maior facilidade do que a outra.

Comentários são aceitos ^^

God Save the Queen, You Save the Game

Enviado em design, experimental por Felipi no Outubro 31, 2008
Tags: , ,

[foi um baita tempo sem postar hein?]

Salvar o progresso do jogo é algo vital para o jogador. Quanto mais vezes o jogo puder ser salvo, melhor. Até mesmo remakes de jogos antigos que não podiam ser salvos dão a possiblidade de salvar os jogos a cada minuto. Cranky provavelmente acha que todos esses saves são dispensáveis e para fracos, porque ele certamente terminaria o jogo sem usá-los. E alguns jogos realmente tem save-points demais. E alguns tem um número ideal, mas nos piores lugares e nos piores momentos. Decidi, então, fazer uma análise de alguns tipos comuns de save-points, seus lados positivo e negativo, e criar alguns tipos diferentes de save-points, sejam eles bons ou ruins.

Quick Save, Quick Load, Quick Do-it-all-again

O quick save é bastante utilizado em jogos de ação e shooters onde o jogador provavelmente vai morrer muito e ter de jogar novamente muitos trechos. É algo muito útil, porém pode ser muito perigoso: como é o próprio jogador que define onde e quando salvar e carregar, o mesmo pode salvar em uma má hora, ou passar de algum ponto difícil e carregar um save anterior por engano. Tendo isso em mente, torna-se óbvio que nenhum jogo pode ter apenas o Quick Save, ou então o jogador iria passar a ter mais ódio pelo sistema de saves do que dos próprios inimigos. E ninguém quer isso.

Auto Save, Checkpoint

Chekpoints são lugar-comum em jogos onde o save-point propriamente dito não costuma aparecer com frequência. Se o jogador deverá passar por uma missão de duas horas antes de poder salvar novamente, nada mais justo do que salvar o jogo automaticamente em pontos estratégicos para que ele possa retornar de algum lugar não muito longe de onde falhou a missão. Mas deve se ter muito cuidado com alguns detalhes: os checkpoints devem estar em pontos totalmente seguros, ou então pode ser totalmente inútil salvar o jogo num ponto de risco onde torna-se mais vantajoso voltar muito atrás, no save, do que tentar continuar do checkpoint; também não é vantagem usar um número elevado de checkpoints se o jogador não puder sair do jogo sem que esses checkpoints se percam e o obriguem a reiniciar a partida do último save – ou as missões devem ser mais curtas, divididas em capítulos que possam ser salvos ao fim de cada um, ou os chekpoints servem como saves automáticos propriamente ditos. No caso de checkpoints atuando como saves automáticos, é importante diferenciar os saves na hora de carregar o jogo: o jogador tem de saber se ele está carregando o save dos capítulos, ou o auto save das missões. Costuma-se usar algo como “Carregar” para o primeiro e “Continuar” no segundo, mas muitas outras nomenclaturas podem ser utilizadas.

Touch me to save

Comum em RPGs mais abertos e dinâmicos, os Save Points são lugares no espaço do jogo onde o personagem deve estar situado para poder gravar o seu progresso. Este estilo de save é não linear, já que se o personagem pode visitar o mesmo lugar várias vezes, ele pode salvar no mesmo ponto tendo feito certas ações no jogo ou não, e também é independente de tempo, já que o jogador vai poder voltar para o save point novamente em dez minutos ou uma hora, e o efeito será o mesmo. Sendo assim, uma regra básica para utilização de Save Points é posicioná-los corretamente: não deixá-los muito distantes um do outro, de forma que se o jogador estiver em lugar muito longe de um save, ele não tenha que voltar grande distâncias para o primeiro, e sim percorrer um menor caminho para um segundo. Alguns jogos ainda costumam posicionar save points sempre perto de chefes ou outros grandes desafios. Faz total sentido.

See ya Tomorrow

Em alguns jogos, o fato de não existirem muitos saves points acontece com o propósito de aumentar a dificuldade do jogo. Mas mesmo com o fator dificuldade, deve-se sempre pensar no jogador, e jogar horas e horas sem poder salvar o jogo para descançar é muito egoísmo por parte dos game designers. Por isso, um sistema interessante consiste em permitir que, em qualquer momento, o jogador salve o jogo instantanemente, e logo após saia do jogo. Assim ele vai poder jantar, dormir, estudar, e então carregar o jogo desse mesmo ponto, e ser feliz novamente. O save temporário será excluído logo após retomar a partida, garantindo que ele só usou o save para descançar, e não para jogar, morrer, reiniciar, jogar, morrer…

A Lotta Slots

É comum jogos onde o jogador tem, além da oportunidade de escolher quando salvar (seja por save points ou qualquer outra forma), escolher onde salvar: um conjunto de espaços onde saves diferentes podem ser armazenados. Isso possibilta que o jogador salve várias vezes em espaços diferentes, e à partir desse ponto, consiga tomar diferentes decisões e mudar rumos do jogo, fazendo uma espécie de árvore de novos jogos, iniciados no mesmo jogo. Portanto, isso dá uma grande liberdade ao jogador de explorar todas as características do jogo, porém, se você quer que o jogador jogue todo o jogo novamente para poder explorar novas estratégias, esse tipo de save deve ser banido do mundo do seu jogo.

Worth Saving

Jogos como Resident Evil traziam um sistema de saves onde era necessário fazer uma certa “economia”: o jogador recolhia itens que eram necessários para salvar, então, se salvasse demais em situações desnecessárias, ficaria sem itens para salvar o jogo em situações perigosas. Isso é útil para o aumento da tensão e da dificuldade do jogo, portanto é importante fazer um bom controle de onde estão os itens para salvar, e quantos são. Resident Evil cuidava disso muito bem também: quanto meno a dificuldade escolhida para o jogo, mais chances o jogador teria para salvar (o RE3 dava infinitos saves na dificuldade mais fácil), mas também recompensava o jogador se ele salvasse menos vezes.

Progress here, Character there

Essa idéia de save, idealizada para RPG ou outros jogos que permitem avanço nas características dos personagens, propõe que o jogador possa salvar o progresso do jogo e o progresso dos personagens separadamente. Dessa forma, seria possível que o jogador tivesse dois ou mais personagens diferentes que poderiam ser usados no lugar de apenas um personagem no jogo, sem ter que fazer as mesmas tarefas com cada personagens. Além disso, o jogador poderia usar personagens de outras pessoas (que poderiam ser baixados da internet, por exemplo) sem influenciar no seu avanço nas missões ou na história. Porém, alguns controles deveriam ser feitos em questão da dificuldade: ou o jogador só pode usar personagens de até determinado nível, conforme o progresso que teve no jogo, ou a dificuldade do jogo será sempre relativa ao nível do personagem, ou então haveria uma quebra de dificuldade ao iniciar um novo jogo carregando um personagem de nível elevado.

Breaking Lines

Essa idéia de save seria ideal para puzzles ou qualquer estilo de jogo divido por missões ou pequenos desafios que não sejam lineares, ou poderia ser usada para salvar apenas esses pequenos desafios dentro de um jogo maior. A proposta seria que o jogador possa salvar suas missões que já foram concluídas e possa carregar qualquer uma delas, além de poder sempre jogar em novas missões. O save não guardaria, então, um progresso geral, nem uma sequência de jogo, apenas o que foi feito e o que não foi feito.

Saving the Branches

Esse tipo de save propõe que o jogador, ao salvar um jogo, salve também a sua situação no jogo caso tivesse seguido por caminhos paralelos. Dessa forma, quando carregar o jogo, o jogador poderia escolher se iria continuar o caminho que percorreu, ou se iria tentar um diferente. Esse tipo de save deveria, no entanto, proibir que o jogador mude diversas vezes o seu caminho (o ideal seria apenas uma vez). Esse tipo de save pode ser interessante em situações onde os caminhos escolhidos sejam diversos, mas que não influenciem demais no jogo (algo como pequenas submissões que possam apenas dar itens diferentes ou passem por cenários diferentes), se for o caso de dois caminhos que levam a finais diferentes do jogo, por exemplo, o ideal é não usar esse tipo de save, porque a idéia é que o jogador jogue novamente até o fim, tentando chegar a este outro final.

Agora, o Feedback! =]~
(deem suas idéias de saves ou comente sobre o que foi dito!)

Por que Link não fala?

Enviado em design por Felipi no Setembro 11, 2008
Tags: , , ,

Muitas vezes, no decorrer de minha vida, ouvi (e li) pessoas reclamarem de personagens que não falam – sendo essas pessoas na sua maioria fãs daqueles RPGs onde mais se lê do que se joga. Muitas vezes ouvi pessoas dizerem que não gostavam do Link, e de outros personagens que não me surgem na cabeça no momento, pelo simples fato de que nunca falavam, e achavam que um bom personagem é aquele que é capaz de declamar poesias com um belo inglês aracaico, ou aquele que tem um bom repertório de palavrões.
O que acontece é que essas pessoas estão acostumadas demais com os extremos estilos de personagens: Aquele que já foi todo moldado, pré-programado, que poderia muito bem estar num filme ou livro, já que seus atos e sua personalidade são bastante próprias do mesmo, e não refletem a personalidade do jogador; e o clássico avatar de MMORPGs e outros, que não passa de um objeto gráfico sem nenhuma história ou personlidade, servindo apenas de corpo para a “alma” do jogador.
Personagens como o Link estão no meio-termo entre esses dois. São personagens que tem sua história, sua personalidade, seu mundo, mas que deixam uma espécie de vazio que não está lá por pobreza ou preguiça do Character Designer: este vazio é o espaço reservado para que o jogador se sinta dentro do seu personagem, que também é um avatar. Desta forma, o jogador se sente como sendo o personagem, sente as emoções do jogo na pele e se identifica como sendo o Herói, e não apenas vê o personagem do jogo como algo distante que ele deve controlar, mas que ainda assim é alguém distante no seu mundo. Os personagens convencionais podem sim ter muito carisma e cativar os jogadores, mas são apenas como os personagens de um filme ou desenho animado, onde o jogador vai se sentir, muitas vezes, apenas como um espectador. No caso de Link e os outros “personagens que não falam”, o jogador tem um personagem como os de desenho animado, que ao mesmo tempo é um reflexo dele mesmo.
Então quando ele não fala, é porque você deveria estar falando por ele. Interpretação de papéis, ainda não entendo porque alguns jogadores de RPG não gostam…

Rolefusion

Enviado em design por Felipi no Agosto 13, 2008
Tags: , , ,

Todo profissional que trabalha na área que sempre desejou, logicamente adora estar envolvido com o que produz. Adora utilizar os serviços, se não próprios, que outras empresas parecidas produzem. Na indústria de games, isso não é diferente: um game designer/ developer entra nesse ramo justamente por gostar de jogar video-games.
Essa fusão de papéis (quem faz – quem usa) pode ser muito bem utilizado para ambas as funções: o desenvolvedor pode jogar melhor sabendo como o jogo foi feito, imaginando situações que ele mesmo teria criado para cada obstáculo no jogo, e os jogadores podem criar a partir de um jogo qualquer.
Rollings e Adams dizem que um jogo nada mais é do que fingir ser outra pessoa, dentro de um mundo, definido por eles como o “Magic Circle”, onde as regras e costumes diferem do mundo real. Sendo assim, ao jogar estamos imersos num mundo imaginário, e dependendo da situação, mesmo as regras do jogo podem ser facilmente quebradas sem quaisquer punição. Jogos de tabuleiro são consideravelmente fáceis de se quebrar estas regras, mas os jogos eletrônicos também dão essa possibilidade.
E agora, deve surgir a pergunta: Por que quebrar as regras, se o jogo depende delas para existir? Eu respondo que essas regras são, sim, fundamentais, porém a imaginação humana pode seguir muito além do que essas regras definem no mundo do jogo. Não estou sugerindo quebrar as regras para poder trapacear o outro jogador, ou para conseguir terminar o jogo mais rápido. Sugiro a quebra das regras como um exercício de criação, uma forma de se criar novos jogos e novas maneiras de se jogar, dentro de um mundo imaginário, ou ao redor de regras pré-existentes de jogos já conhecidos.
Quando eu era mais novo, costumava fazer esse tipo de coisas quando enjoava dos jogos que eu tinha, ou não tinha ninguém para jogar comigo os jogos de vários jogadores. Alguns jogos tem idéias tão sólidas e bem estruturadas que permitem que o jogador possa criar um jogo totalmente novo dentro do mesmo mundo imaginário, ou permite que o jogo mantenha-se bastante similar ao original, porém com uma “expansão” das regras, o que pode o tornar mais divertido e complexo (o que para alguns é bom, para outros é ruim).
Alguns dos jogos de mesa que eu costumava mudar as regras frequentemente eram o War, onde eu adicionava missões, centros de compras de unidades para o exército, diferentes tipos de armas e soldados, e as vezes até um storyline surgia; Xadrez, onde eu explorava a jogabilidade misturando peças e regras de outros jogos, como damas, trilha ou até mesmo cartas para controlar as peças do tabuleiro; Baralho, que é um sistema simples, e por isso permite grandes possibilidades de criação, tanto que existem, realmente, inúmeros jogos usando o mesmo tipo de baralho.
Muitas idéias também surgiam jogando alguns jogos de video-game, tanto single-player como multiplayer. Embora nos jogos eletrônicos as regras sejam muito mais fixas para modificação, alguns sistemas mais abertos permitiam filtrar as ações e criar novas possibilidades dentro das padrão. Muitas foram as vezes que eu aluguei jogos para nintendo 64 e, junto com o meu primo, criei praticamente novos jogos, com novos storylines e gameplays.
Um dos jogos de video-game que eu lembro ter brincado muito foi o Super Smash Bros., do nintendo 64, onde o muliplayer de quatro jogadores, dos quais eu geralmente deixava um ou dois como controlados pela CPU, e os diversos cenários e ítens permitiam criar missões, histórias, desafios, heróis e vilões, e tudo isso surgia quebrando a regra básica do jogo que era derrubar os personagens para fora do cenário.
Acredito que quebrar as regras dos jogos e deixar a imaginação tomar conta será sempre um bom exercício de Game Design, para aqueles dias onde todos os jogos que você tem já foram terminados com 100% dos objetivos.

Questões de vida (artificial), apenas

Enviado em desenvolvimento por Felipi no Julho 26, 2008
Tags: ,

Andei nos últimos dias estudando e desenvolvendo uma inteligência artificial para o meu jogo, até agora está em uma fase bastante inicial, mas já envolve bastante conceitos e definitivamente não é fácil de implementar. Achei que seria interessante falar de alguns dos principais tópicos sobre Inteligência Artificial para games, para dar uma introdução para quem quer ter personagens ou sistemas mais naturais e reais nos seus jogos e quem quer saber como toda essa coisa funciona.

State Machines

O uso de State Machines é uma das técnicas mais utilizadas na IA para games. As Finite State Machines seguem a lógica que um dado sistema tem um determinado número de estados, do qual ele pode estar em algum deles e mudar para outro conforme certas ocasiões.
Um exemplo de Finite State Machine é termos um inimigo que não está vendo o herói. Ele está no estado Normal. Neste estado, ele pode fazer coisas como andar de um lugar para outro ou ficar parado. Se o herói entra no campo de visão do inimigo, este muda de estado para Seguindo Herói. Neste estado, o inimigo passa a executar outras ações, como seguir o herói ou atacar se estiver bastante próximo. Se o herói se afasar o bastante, o inimigo volta para o estado Normal. Caso o herói ataque o inimigo, este pode entra num estado Machucado. Neste estado, o inimigo poderia fugir do herói, recuperar a vida e retornar ao estado Normal ou Seguindo Herói, dependendo da distância atual. Caso no estado Seguindo Herói, o inimigo ataque o herói, ele pode então entrar num estado Euforia, onde o inimigo estaria de baixa guarda por alguns segundos, dando chance para o herói contra-atacar.
Uma evolução do sistema de Finite State Machines é o Fuzzy State Machines, onde o dado sistema pode não apenas estar em um estado ou em outro, mas sim estar parcialmente em certos estados. Aplicado no exemplo anterior, poderiamos ter o inimigo com uma porcentagem variável no estado Seguindo Herói, onde quanto mais próximo o herói chega, mais rápido o inimigo o segue, e conforme se afasta, o inimigo reduz sua velocidade e vai voltando ao ponto de repouso dele.

Fuzzy Logic

O conceito da Fuzzy logic é que algo que originalmente deveria ser considerado apenas como “Verdadeiro ou Falso”, “Ligado ou Desligado”, “Longe ou Perto”, possa ter valores intermediários, como “Meio verdadeiro”, “27% ligado”, “consideravelmente perto”. A idéia disso é ter pré-determinados estados, determinar as condições para que cada um seja verdadeiro, e então fazer com que o sistema, dada a situação do momento, calcule qual dos estados é o mais relevante.

Flocking

Flocking é um sistema de comportamento. A idéia do flocking é ter uma movimentação de um grupo, este constituído de seres independentes. Com isso, pode-se criar multidões de pessoas, cardumes de peixes, grupos de pássaros, entre outros. Cada indivíduo consegue se adequar ao grupo seguindo 4 regras: evitar colisão com os vizinhos, alinhar-se em relação aos vizinhos, mover-se de acordo com o posicionamento dos vizinhos e desviar de obstáculos.
Um exemplo clássico do flocking é o grupo de pássaros. Pode-se ter, inicialmente, vários pássaros voando em diferentes velocidades e direções, mas conforme se aproximam de outros pássaros, vão se agrupando aos poucos, e logo todos os pássaros estão agrupados.

Pathfinding – A*

O algoritmo A* ( pronunciado “A Star”) é um algoritmo bastante utilizado para calcular o melhor caminho entre um ponto inicial e um ponto de chegada. Para funcionar, o algoritmo necessita que o terreno esteja divido de alguma forma, o que torna o algortimo difícil de implementar, porque existem muitas formas de divisão de terrenos, e cada uma se adapta melhor a certas exigências, e para cada divisão o algoritmo vai ser mais ou menos eficiente em certos fatores.
O que esse algortimo faz é pegar a posição inicial, e para cada divisão adjacente, verificar se o personagem pode se mover até lá ou não. Fazendo isso recursivamente, o algoritmo vai encontrar certos caminhos possíveis, e então vai escolher o que for mais rápido para chegar até o destino.

Neural Nets

As redes neurais são um dos sistemas de inteligência artificial mais complexos, mas ao mesmo tempo mais interessantes. As redes neurais funcionam através de neurônios artificiais criados com base nos neurônios reais. Esses neurônios interligam-se em camadas, criando a rede. Através de valores que são passados como entrada, e determinados pesos para cada valor, é produzida uma saída. Através desse processo de informações, é possível treinar um sistema, e fazer com que ele aprenda através das suas ações e resultados.
As possibilidades do que se pode fazer com uma rede neural são infinitas: inimigos que reconheçam padrões de luta do jogador e aprendam a “contra-lutar”, NPCs que mudem sua personalidade conforme suas interações com o jogador, equipamentos que se adaptem ao jogador e às batalhas…

Com esses conceitos apresentados, acredito que algumas pessoas já tenham começado a entender como funcionam alguns sistemas inteligentes, e até talvez já saibam quais sistemas usar e não usar para determinadas ocasiões que queiram criar em seus jogos. Não vou postar nenhum link sobre os assuntos, mas pesquisando se acha bastante coisa. Até mais!

My Beloved Cliché

Enviado em design por Felipi no Julho 19, 2008
Tags: ,

Quando eu ando pelos forums por aí, a palavra que eu mais leio é cliché. Nossa, é incrível como as pessoas amam essa palavra. Mas eu, sinceramente, não gosto do jeito que as pessoas tratam essa palavra. Na verdade, eu acho que dizer que algo é cliché da forma como essas pessoas costumam dizer chega a ser algo tão vazio como não ter dito nada.

De que forma, você deve estar se perguntando. Considerando tudo o que já foi visto alguma outra vez na vida como sendo um cliché. Acho que o termo cliché deveria ser usado apenas para idéias realmente passadas, como o garoto de 15 anos que é acordado pela mamãe para salvar o mundo ou algo do tipo.
Mas então, quando que se deve pegar leve e deixar de considerar uma idéia cliché? Acredito eu que quando essa idéia tem um forte valor na questão semiótica, o fato de já estar muito usado ou não não interfere mais na qualidade.
Para os que não sabem, a semiótica é a ciência que estuda o significado das coisas que rodeiam o ser humano. Quando eu digo “forte valor na questão semiótica”, eu quero falar sobre o fato de uma idéia já estar tão batida a ponto de já ser referência, e não apenas uma idéia se repetindo.

Pra começar com um exemplo simples, vamos imaginar uma situação onde “inimigo vermelhos são de fogo e azuis são de gelo”, ou “inimigos grandes são fortes e inimigos pequenos são rápidos”. Isso pode ser considerado por muitos algo bastante chavão, mas também há o valor simbólico. Estamos acostumados a encontrar um inimigo vermelho e grande e então pegar nossas armas de gelo e um bom escudo. Se você quer que o jogador passe mais tempo em outras situações do jogo do que morrendo por perceber que o inimigo vermelho grande na verdade era um demônio elétrico super rápido imune à água, é válido levar em conta esse “cliché”.

Logicamente, contrariar essas “regras” sempre é original, mas deve-se saber quando e onde utilizar esses elementos já conhecidos para facilitar a vida do jogador e mantê-lo mais ocupado nas tarefas relamente originais e que interessam. E também vale lembrar que todo artista de vanguarda iniciou na forma tradicional, então explore todos os signos já conhecidos antes de tentar criar novos!

Semiótica na wikipedia

Próxima Página »