Orbital Ape

Um blog sobre um grupo de desenvolvimento de jogos indie em constante e vagaroso crescimento.

Category: Uncategorized

Os pensamentos de Amit sobre Grades [Parte 6: Transformação das Coordenadas]

Em ambos os sistemas gráficos 2D e 3D, nós temos que transformar as coordenadas do “mundo” em coordenadas da “tela” e vice versa. Com grades, nós também temos que transformar as coordenadas da “grade” em coordenadas do “mundo” e vice e versa. Transformações ocorrem em pontos. De grades para coordenadas do mundo, nós transformamos vértices e ocasionalmente os centros das faces. Do mundo para as coordenadas da grade, nós podemos ou escolher encontrar o ponto anexado da face, a borda mais próxima à um ponto, ou o vértice mais próximo à um ponto.

Quadrados

Quadrados são fáceis de se trabalhar. Se um dos lados do quadrado possui comprimento “s” e as bordas deste quadrado são alinhadas com os eixos “x” e “y”, você pode simplesmente multiplicar as coordenadas do vértice da sua grade por “s” para obter a coordenada do mundo.

Agora fazendo o contrário, nós queremos determinar qual vértice é mais próxima de um ponto no espaço do mundo. Simplesmente divida as coordenadas do mundo por “s” e arredonde para cima a float para uma interger para obter o vértice mais próximo. Se ao invés você quer determinar que face se anexa a um ponto no espaço do mundo, arredonde para baixo ao invés de para cima.

Hexágonos

Figura 1: Medidas do Hexágono

Hexágonos são só um pouco mais complicados de se trabalhar do que quadrados. Computar o centro da face é simples. Na Figura 1, há um vetor “i” e um vetor “j” indo das coordenadas hexagonais às coordenadas do mundo é uma multiplicação de matriz(bem simples):

⎛ x ⎞     ⎡ ix jx ⎤ ⎛ u ⎞
⎝ y ⎠  =  ⎣ iy jy ⎦ ⎝ v ⎠

Expandido ficaria:

x = ix * u + jx * v
y = iy * u + jy * v

O diagrama mostra que “i” é (hexagon_narrow_width, 0.5*hexagon_height) e “j” é (0, hexagon_height), então isto nos da valores para “ix”, “iY”, “jx”, “jy”. O código resultante é:

# Centro da Face
x = hexagon_narrow_width * u
y = hexagon_height * (u*0.5 + v)

Computar vértices também é algo um tanto simples. No resto dos artigos eu rotulei as vértices do hexágono de “L” ou “R”. Esses dois vértices ocorrem da metade da largura do hexágono para a esquerda ou direita do centro da face do hexágono(veja a Figura 1), então tudo o que nós temos que fazer é somar ou subtrair hexagon_wide_width * 0.5:

# Se x,y são o centro da face, nós podemos ajustar para encontrar um vértice
case side
  when :L
    x -= hexagon_wide_width * 0.5
  when :R
    x += hexagon_wide_width * 0.5
end

Quando estiver trabalhando com hexágonos, trate o centro das faces como primário e os vértices como secundário.

Ir de coordenadas hexagonais (u, v) para coordenadas do mundo (x, y) foi uma multiplicação de matriz. Para ir de coordenadas do mundo de volta para hexágonos, você pode resolver a equação para (u, v). Eu vou pular a álgebra; aqui está o resultado:

u = x / hexagon_narrow_width
v = y / hexagon_height - u * 0.5

Isto funciona se você começar com (x, y) no centro de uma face. Se você tiver arbitrariamente (x, y) é um pouco mais trabalhoso. A maneira mais simples(porém não mais eficiente) é de considerar o calculado (u, v) mais todos os vizinhos e determinar qual é o mais próximo da dada coordenada do mundo. Esta abordagem funciona com qualquer um dos três tipos de grades. Se você estiver utilizando esta forma para seleção por mouse, está é bastante rápida. Pode ser melhorada mais ainda ao se ter mais atenção com os polígonos.

Triângulos

Triângulos são quadrados distorcidos e divididos. Converter as vértices de um triângulo das coordenadas da grade para coordenadas do mundo simplesmente envolve multiplicá-las pelos vetores do eixo, assim como as coordenadas da face do hexágono:

⎛ x ⎞     ⎡ ix jx ⎤ ⎛ u ⎞
⎝ y ⎠  =  ⎣ iy jy ⎦ ⎝ v ⎠

Converter as coordenadas da face triangular para coordenadas do mundo é fácil, envolve um ajuste. O “L” do centro da face triangular é (0.25*i, 0.25*j) do vértice inferior esquerdo. O “R” do centro da face triangular é (0.75*i, 0.75*j) do vértice inferior esquerdo.

Para converter de coordenadas do mundo para vértices do triângulo é fácil. Esclareça para (u, v) usando álgebra. Para determinar qual face o ponto do mundo está, considere a borda que está dividindo os dois triângulos dentro do quadrado retorcido; esta borda é rotulada “E”. Se o seu ponto é à esquerda desta linha, o ponto está na face “L”; se estiver na direita, o ponto está na face “R”. Acredito que seja “R” quando frac(u) + frac(v) >= 0.5.

Quando trabalhar com triângulos, trate as vértices como primárias, e o centro das faces como secundário. Este é o oposto de como tratamos os hexágonos.

Teoria em política básica para jogos digitais

Até que nível a política pode ser aplicada em jogos e mundos virtuais?

Para respondermos esta pergunta primeiro temos que conhecer um pouco mais sobre o termo política. O que significa essa palavra, que ultimamente tem sido tão mal vista pelo mundo?  A palavra política deriva do grego antigo politeía, que ao pé da letra significa cidade-estado, ou cidades com assembleias de cidadãos que tomam parte nas decisões quanto as melhores formas de administração. Atualmente o termo política designa a arte ou ciência da organização, direção e administração de estados ou nações, o que se precisa saber é que este termo é passível de mudança, dependendo do tipo de regime e forma de governo empregado por uma nação. No caso do Brasil, uma democracia, a política é tida como a ciência executada por seus cidadãos a partir do voto ou sua luta. Certo… mas onde queremos chegar com todo essa assunto de política?

Bem… esta primeira estrofe nos deixa claro que para haver política é necessário que, em primeiro lugar, haja uma nação, estado ou cidade, e que esta nação, estado ou cidade, precisa ser governada por alguém ou um grupo de pessoas, que serão responsáveis pela tomada das decisões que influenciarão na convivência de todo o resto. Este alguém, ou este grupo de pessoas deve ser auto proclamado ou escolhido pelo povo através do voto, e seu maior objetivo para com seu povo no que diz respeito ao governo interior e exterior seria o de servir como voz do povo, executando as ações desejadas pela maioria… ao menos ere como deveria ser.

Certo, cortando o papo e indo direto ao foco, que é jogos e mundos virtuais, a política é aplicável?

Se haver necessidade, e haver possibilidade a política ela poderá existir sim, se pegarmos, por exemplo, Eve Online, o maior universo já criado para um MMOG*, você verá que ele é completamente baseado em politicagem, propaganda, militarismo, economia e estratégia, tudo isso envolve de certa forma e tem como centro a política, o que torna a política algo completamente possível e de certa forma algo magnífico dentro de mundos virtuais, se for bem retratada.

Mas espera ai, Eve Online é um jogo gigantesco, desenvolvido pela CCP, uma companhia multimilionária, blá, blá, blá… sim, você tem razão, eles têm os recursos(diga-se dinheiro e profissionais) para desenvolver uma galáxia gigantesca, completamente aberta, e dar a liberdade de escolha ao jogador de fazer o que quiser com ela. Você tem toda a razão, então vamos pegar um jogo menor, que foi desenvolvido por uma única pessoa, utilizando a linguagem LUA junto com Java e que provavelmente não precisou de R$: 0,01, para ficar pronto, e que hoje em dia é uma das maiores febres, que possui constantes atualizações e implementações, além de não criar fans, e sim uma religião cheia de seguidores, sim, eu estou falando do Minecraft.

Em Minecraft você possui tudo o que é necessário para a criação de uma política real, uma economia real e um sistema social real. Isso porque Minecraft não é somente a encarnação do termo Sandbox* como jogo, mas porque além dele ser completamente aberto, sua engine de criação de mapas através da geração procedural* é capaz de desenvolver mapas com áreas perfeitas para o plantio, desenvolvimento residencial, etc… enquanto ao mesmo tempo desenvolve um terreno totalmente acidentado onde seria necessário grande esforço para a terraplanagem com a finalidade do plantio, desenvolvimento residencial, etc… logo nós temos a necessidade de se governar um grupo para administrar espaço, isso se não tivermos dois grupos separados, que estarão constantemente lutando por domínio deste espaço privilegiado, só ai nós temos duas necessidades para a existência de governo, ou pelo menos uma hierarquia. Além disso todo o plano de construções, desenvolvimento, teria de ser orquestrado por uma única cabeça, para não acabar em bagunça, como membros de um mesmo grupo voltando-se uns contra os outros com alegação de invasão de privacidade ou furto. Desta forma, o cabeça ou governador de um grupo poderia criar taxas para servir como impostos para o desenvolvimento do grupo como um todo, e os jogadores de um mesmo servidor, até mesmo os inimigos, poderiam concordar, por motivos de fair play*, que a moeda corrente seriam as barras de ouro, ou diamantes, e que com esta moeda, os governos poderiam comprar e vender recursos necessários para o desenvolvimento de seus patrimônios, tendo em vista que, por delimitação geográfica, nem todos teriam todos os recursos disponibilizados pelo jogos. Ex.: Alguns teriam seus grupos formados próximo de uma grande zona florestal, enquanto outros teriam seu grupo formado em um grande descampado, com a grande possibilidade da agricultura. Aqueles poderiam muito bem vender madeira para estes, enquanto estes poderiam vender alimentos para aqueles, mas tudo isso, é claro, é uma teoria que é completamente dependente da maturidade dos jogadores.

Por outro lado, alguns jogos, por maiores que sejam, não deixam espaço para a existência de política, como é o caso de World of Warcraft, um mundo imenso, povoado por milhares de jogadores, mas onde não se pode votar nem escolher um jogador para liderar uma nação. Em World of Warcraft, a única menção de política só pode ser feita e direcionada aos donos de clãs*, mas estes não exercem nenhum papel importante que vá influenciar ou mudar drasticamente a vida dos outros jogadores, e estes líderes não são votados nem regidos, nem mesmo autoproclamados, eles simplesmente são os líderes porque foram os responsáveis pela existência de tal clã.

Com isso concluímos que a política, por mais que seja rara, complicada e muito instável, ela existe em alguns jogos e mundos virtuais. E que muitas vezes, como é o caso do Eve Online, a política exerce um papel primordial no desenvolvimento financeiro, militar e espacial de um grupo, facção, nação ou aliança.

*

MMOG – Massively Multiplayer Online Game ou Jogo Online de Multijogadores Massivos.

Sandbox – Mundo aberto, jogos onde o jogador é capaz de levar o personagem a qualquer área observável, além de fazer modificações ao ambiente através do uso de ferramentas ou armas.

Geração Procedural – Refere-se ao desenvolvimento de conteúdos através de algorítimos que geram conteúdos aleatórios ou baseados em uma semente.

Fair play – No português, jogo justo, significa ser honrável e respeitoso para com as regras e para com os outros jogadores, sejam estes parceiros ou adversários.

Clãn – Grupo geralmente pequeno formado e liderado por um único indivíduo, e que vagam sob o mesmo nome e estandarte.

Teoria em economia básica para jogos digitais

A economia é algo que está em alta nos jogos atualmente, e é um item obrigatório na maioria dos subgêneros de MMOGs*, mas como saber quando a economia é realmente boa, viável e estável dentro de um mundo virtual?

MMOGs geralmente possuem economias com seus produtos de compra e venda baseados na coleta de recursos, dropping* de itens, dropping de moeda, recursos e itens e moeda como recompensas por missões e no artesanato. Mas até que ponto a economia é viável?

A viabilidade da economia em jogos digitais pode ser posto a prova com algumas perguntas.

  1. Como a moeda é gerada no mundo virtual?
  2. Há inflação* e deflação*? Por quê?
  3. Os mercados são criados por NPC*s ou jogadores?
  4. As missões dão como recompensa moedas, recursos e itens?
  5. As missões são criadas por NPCs ou jogadores?
  6. Há algum tipo de taxação?

Se você parar para analisar a economia de algum jogo online como World of Warcraft, prestará atenção que nos primórdios da fase Alpha do jogo, quando o jogador original, ou o Player 1 logou, não existia se quer uma moeda no jogo, imagine que se houvesse uma variável responsável por controlar o valor total de moedas em jogo esse valor seria 0(zero). Assim assumimos que a primeira moeda ou foi gerada através de dropping ou foi recompensa por uma missão completa. Isso faz com que haja um fluxo constante de moedas em crescimento proporcional a entrada de novos jogadores no jogo e esse fluxo constante pode abalar a economia, uma vez que o número de jogadores comportados pelo jogo é finito, sendo pelos servidores ou, em termos mais extremos vamos pegar o valor de sete bilhões de jogadores, as moedas continuariam a ser geradas pelo dropping, enquanto o número de jogadores estaria fixo. Isto desencadearia uma inflação gradual, e logo todos os jogadores teriam tantas moedas que o mercado simplesmente perderia seu sentido.

Agora peguemos uma piscina e deixemos ela largada ao sol por algumas semanas chuvosas. A chuva entra e entra até que a piscina fica cheia, mas com o tempo a água fica suja. E agora, como tirar toda essa água dai? Simples, puxamos a rolha e deixamos a água sair.

Se pegarmos novamente World of Warcraft, vamos notar que uma das únicas formas de “vazar” moedas do jogo é na compra e no uso de itens consumáveis, ou na compra de itens de NPCs, ou simplesmente no ato de jogar moedas fora, mas mesmo assim, ainda há mais moedas entrando do que saindo do jogo e o fim é o mesmo, inflação.

Desta forma os itens comprados têm seus valores aumentados para manter o lucro em um mundo onde as pessoas cada vez tem mais e mais dinheiro, e quando isso não ocorre, o trabalho dos artesãos acaba sendo desvalorizado e no final se torna desusado, a não ser que este artesanato dê como frutos itens consumáveis como poções de vida, poções de energia, pergaminhos e outros itens que são destruídos após o seu uso. Aqui vemos outro problema, a constante entrada itens duráveis derivados do artesanato e do dropping no mercado. Imagine o item mais raro do jogo, agora imagine este item sendo dropado inúmeras vezes e sendo inserido no mercado, de inicio este item estaria à valores inconcebíveis, mas a partir do momento que mais itens idênticos fossem inseridos no mercado, aumentando a competição, seu valor iria caindo aos poucos, vagarosamente, até que em certo momento, vários e vários itens exatamente iguais e “raros” existiriam no mercado, desvalorizando-os por completo. Isto pode ser facilmente corrigido aplicando-se limitações às quantidades de itens iguais existentes no jogo, e criando uma espécie de durabilidade de uso para estes itens, de forma que os tornasse inúteis com durabilidade zero, mas que não fossem destruídos como entidades, e que pudessem ser consertados com algum esforço e gasto. Isso daria mais um caminho a economia ao mesmo tempo que resolveria um problema.

Vamos agora pegar o artesanato… a grande maioria dos itens consumíveis, quando não são dropados, são obra de artesãos que injetam seus trabalhos no mercado de forma a obter lucro com suas vendas. Estes itens, por sua vez, são a mais útil forma de fazer girar a economia, já que os itens consumíveis são os mais adquiridos por jogadores, pois servem de manutenção para seus personagens em suas aventuras e em combate. Mas nem tudo são flores, devemos lembrar que os artesãos também são um dos maiores responsáveis pela inflação nos jogos, pois eles são a base de todo o mercado. Seus itens duráveis, enchem as prateleiras rapidamente e de forma desordenada, não respeitando as regras de oferta e demanda, isso acontece porque os recursos utilizados no artesanato destes itens estão ai, disponíveis e em fácil acesso aos artesãos, e o pior de tudo, estes recursos são, quando não deveriam ser, infinitamente renováveis, este é mais um, e o pior dos motivos da inflação nos jogos.

Agora vamos ao que interessa, como combater esta inflação.

Há duas formas de combater a inflação de uma economia virtual, a primeira é limitar as moedas à obtenção de um recurso de difícil acesso, abundante, porém finito, dessa forma uma quantidade finita e lenta de moedas seria bombeada à economia virtual, provinda do mais baixo nível da economia, os coletores de recursos, e abrindo espaço para a adoção de moedas secundárias pelos próprios jogadores e até mesmo a prática do escambo*. A outra forma seria criar taxas, muito bem calculadas, que seriam aplicadas a diversos segmentos da economia fazendo “vazar” moedas da economia e mantendo-a estável.

Pode-se observar que economias simuladas tendem a fracassar, por isso, a melhor forma de se desenvolver esta ideia é deixando-a acontecer, deixar a economia nascer, deixando os próprios jogadores a criarem, uma economia real, e não uma simulação. Algo possível em Minecraft, mas isso fica para o próximo artigo.

*

MMOG – Massively multiplayer online game ou jogo online de multijogador massivo.

NPC – Non-player character ou personagem não jogáveis.

Inflação – O evento da desvalorização da moeda.

Deflação – O evento da supervalorização da moeda.

Imaginar é o pr…

Imaginar é o princípio da criação. Nós imaginamos o que desejamos, queremos o que imaginamos e, finalmente, criamos aquilo que queremos.

George Bernard Shaw