Category

Uncategorized

By | Uncategorized | 3 Comments

Olá internet! Aqui quem fala é seu programador favorito da BitCake (ok.. forcei a barra não é? D:) novamente! Enfim, estou aqui para concluir o já postado: Networking Code: Runas, Buzios, e Tarot (Parte 1). Aproveito para agradecer a vocês que têm lido todas as nossas postagens e, ainda por cima, comentado em alguma delas! Bom, onde paramos… alguns detalhes ainda ficaram por ser explicados desde o último post.

Primeiramente, vamos rever nossa fórmula de “prediction”:

float dt = Time.timeStamp - photonMessageInfo.timestamp;
Vector3 posNova = pos + vel * dt;

Existe uma melhora muito interessante que podemos fazer nessa formula. Lembram-se do ping? Aquele atraso entre o envio e recebimento da mensagem? Então! Por que não levar em conta esse tempo na equação? Afinal, a mensagem nos trás informações sobre um player há um ping no PASSADO. :O Logo, o nosso “dt” seria mais algo do tipo:

float dt = Time.timeStamp - ( photonMessageInfo.timestamp + meuPing );

Meu ping pode ser calculado (novamente, aproximado 😉 ) com o Photon através da função: “PhotonNetwork.GetPing()”

Mas atenção! “GetPing()” do Photon retorna um número inteiro que representa o ping em milisegundos. Entretanto, nossas contas são feitas em segundos. Logo, é necessário multiplicar o valor por 0.001f; Assim, podemos obter o próprio ping com:

float meuPing = PhotonNetwork.GetPing() * 0.001f;

Ótimo! Agora nosso “prediction” ficará bem mais preciso e suave! uhul!

(Retirado de http://3dgep.com/?p=4609)

Mas repararam? Nosso código apenas lida com situações onde estamos num tempo à frente do player que mandou a mensagem. Isto é: o que aconteceria caso “Time.timeStamp” fosse menor que “( photonMessageInfo.timestamp + meuPing )”? Então! O que significa um “dt” negativo? Isso mesmo. Que a mensagem veio de um player que está em um tempo mais à frente que o nosso, do futuro!

There’s the catch!

Nesse caso, estaríamos NÃO tentando prever a posição do player no FUTURO, mas no PASSADO!

Ok, mas qual o problema? Bom, não problema, mas sim uma forma de melhorar os casos quando isso ocorre. Como, você diz? Acontece que se o player a ser sincronizado está no futuro, então ele já passou pelo “time stamp” quando nos encontramos atualmente. Dessa forma, regularmente (a cada frame, por exemplo), podemos salvar o estado desse player num buffer para que quando for o momento de sincronizar a posição do outro player, iremos acessar as posições nesse buffer.

O Buffer consiste de uma lista de estados. Enquanto que um estado consiste de uma estrutura que contém uma posição (Vector3), uma velocidade (Vector3) e um “time stamp” (float). Sempre mantemos essa lista ordenada por “time stamp” para que possamos buscar facilmente o estado desejado. Essa busca refere-se a achar o estado com o maior “time stamp” que seja menor que o “time stamp” atual do player local. Uma vez com esse estado em mãos, pegamos o estado seguinte (com o “time stamp” justamente maior).

Agora sim! Sabendo esses dois estados, poderemos INTERPOLAR entre eles (isto é, tirar uma média ponderada) para descobrir enfim a posição do player remoto. Isso será mais preciso do que apenas aplicar nossa antiga fórmula já que não estaremos prevendo um valor no futuro mas sim usando uma espécie de “histórico” por onde o jogador remoto passou.

Para fazer a média (interpolação) usaremos como peso a diferença entre o “time stamp” atual e o do primeiro estado. Isto é:

Estado primeiro = EncontraPrimeiroEstado(buffer);
Estado segundo = EncontraSegundoEstado(buffer);

float deltaTime = segundo.timestamp – primeiro.timestamp;
// Ainda levamos o ping em consideração para melhorar o resultado!
float peso = (Time.timeStamp – meuPing) / deltaTime;

Vector3 novaPos = Vector3.Lerp(primeiro.position, segundo.position, peso);
// Podemos fazer o mesmo com a velocidade para que leve em consideração
// a velocidade que o player tinha naquele “time stamp”
Vector3 novaVel = Vector3.Lerp(primeiro.velocity, segundo.velocity, peso);

É isso ae! Espero que isso melhore o netcode de vocês! ;D Vale ressaltar que agora vocês terão de fazer algum tipo de “if” para checar se estão no primeiro caso (player a ser sincronizado está no passado) ou no segundo (ele está no futuro) e então aplicar as respectivas técnicas. 😀

Agora é a vez de vocês testarem tudo isso em casa e depois comentarem por aqui se conseguiram fazer tudo funcionar com sucesso! Não se assustem, façam com calma cada pedaço do código. Pois ao final, serão compensados com um networking de qualidade. 😉 Claro, sempre há maneiras de melhorar, e conforme nós formos melhorando o nosso código iremos postar novidades!

Para verificar tudo isso implementado em um jogo, não esqueça de conferir as atualizações de Tilt. Os Srs. leitores podem se tornar Closed Testers se inscrevendo no grupo de Facebook: bitcakestudio.com/testers/. Depois de se inscreverem no grupo (é insta-accept!), poderão jogar direto no Facebook através do link: bitcakestudio.com/tilt/.

Keep calm and happy testing!

By | Uncategorized | 4 Comments

E ai galera!

Estou aqui hoje para começar uma seção de  posts um pouco diferente, o tema dessa vez é Game Design. Não vou falar necessariamente de Game Design do Projeto Tilt (apesar de eu poder sim falar dele em algum post mais pra frente), vim aqui agora pra falar um pouco sobre algo que é – estranhamente – muito ignorando em vários, e vários jogos por aí (até mesmo em Triple As e Indies lá de fora!) e que não deveria ser ignorado por ninguém, que é o “Feel” do seu jogo.

Disclaimer: Bom, primeiramente o que vamos tratar aqui é algo COMPLETAMENTE subjetivo, não existe formula correta nem maneira certa de fazer e tudo que eu escrevi aqui é baseado em experiências minhas. O ideal é que você tenha esse conceito na sua cabeça na hora que estiver “designando” o seu jogo pois você verá seu design com uma outra ótica. Fortes agradecimentos ao Marcos Venturelli da Critical Studio por ter destrinchado esse assunto na minha cabeça.

Mas o que é “Feel” em termos de Game Design?

Feel é o sentimento que você quer passar com seu jogo em termos de jogabilidade. Você tem um personagem que é um robô gigante super poderoso? Então provavelmente você vai designar ele de forma que se mova mais lento, tenha ataques lentos e pesados que dão muito dano. Seu jogo é sobre um garoto feito de carne que pula plataformas impossíveis no menor espaço de tempo possível? Então provavelmente seu controle deve ser trabalhado pra ser ultra responsivo durante qualquer momento de jogo (seja no ar, ou na terra ou na parede). Você tem um jogo de puzzle misturado com RPG pra iOS? Então a resposta ao toque e o feedback tátil talvez seja seu foco para tornar o jogo o mais suave possível, fazendo o jogador sentir que o jogo é super fluido.

Até agora eu falei dos controles, mas o feel é o todo. O feel vai desde o tempo de resposta do apertar de seu botão até a animação do personagem (se houver) tocar e você obter a resposta de feedback até o flow de interface do seu jogo ser bem planejada.

Vamos a um estudo de caso: Killzone vs. Call of Duty

Killzone

Movimentação do Personagem em Killzone

Gameplay de tiro no Killzone

Execuções e sprint em Killzone

Call of Duty

Movimentação e tiros no CoD

Tempo de resposta da arma em CoD

Observando os dois jogos será que você consegue responder qual a diferença do Feel entre os dois?

Killzone é um jogo mais pesado e mais lento enquanto Call of Duty tem um feel dinâmico e rápido, menos tático.

Se você perceber nos GIFs acima, tem detalhes que destacam os princípios de design de ambos os jogos. Primeiro nós podemos ver o contraste de velocidade entre os personagens de ambos os clipes. No Killzone a movimentação do personagem é bem mais lenta, existe até um pequeno aumento do tempo de resposta entre o movimento do analógico do controle até o personagem começar a se movimentar (apesar disso você só perceber jogando). Outras coisas que denunciam a velocidade e o peso do jogo é a quantidade de frames de animação durante um tiro, deem uma olhada no gif 2 do Killzone e percebam a diferença que demora pra metralhadora do jogador disparar, em contraste com a do COD (tudo bem, cada arma tem uma qualidade diferente! mas não é isso que estamos discutindo) perceba como os movimentos tanto de atirar quando de entrar no “Iron Sights” é BEM mais lenta que nos GIFs do CoD.

Além disso tudo tem um elemento presente aqui que talvez vocês nunca imaginariam que seria um fator: os Gráficos. Não estamos falando de mais polígonos ou textura melhor, estamos falando de Frame Rate (frame rate é a quantidade de quadros que o console desenha por segundo). O Call of Duty se preza como um shooter (jogo de tiro) que é produzido desde o início com 60 Quadros por Segundo (FPS) em mente, já o Killzone planeja atingir os melhores gráficos possíveis no console, então eles sacrificam um pouco de Frame Rate pra poder utilizar o processamento restante em melhores texturas, IA melhor, mais polígonos, etc. O que isso influencia no peso e no feel do jogo? Com menos quadros pra se desenhar as animações são tocadas com menos fluidez, o jogo passa se tornar um pouco mais lento por natureza (Battlefield também é feito em 30 FPS). Veja bem, nenhuma das opções são boas ou ruins! Isso é uma escolha de DESIGN, isso foi pensado pelos designers e pela equipe, não foi algo que eles começaram a fazer e aí falaram: PUTZ! O jogo agora tá com 30 FPS, tem que ver isso aí! Podem ter certeza que se alguém quis fazer alguma cena ou adicionar alguma mecânica de jogo que era impossível de reproduzir em 60 FPSs no Call of Duty ela foi cortada ou modificada para não perder a experiência  de jogo.

Também existem coisas que eu não tratei nem demonstrei nesses jogos em termos de Gameplay. No Killzone 2 existe uma mecânica de cobertura onde o jogador é incentivado a se esconder atrás de objetos do cenário pra conseguir sobreviver (nos Killzones mais novos eles deixaram ela bem mais rápida). O Call of Duty tem uma mecânica de se agachar duas vezes (agachado e deitado) mas que pode ser usada rapidamente no meio de um sprint, mais versátil e efetiva como Run & Gun (Correr e atirar) do que como mecânica de cobertura atrás de objetos – veja ela em ação no GIF  acima. Então podemos ver que ambos os jogos possuem uma ou mais mecânicas parecidas mas que foram desenhadas pelos Designers para agirem de maneira a dar suporte ao Feel do jogo.

Ou seja: o Feel do jogo é algo delicadamente trabalhado e deve ser pensado desde o início da producão, tenha sempre em mente o objetivo que você quer atingir com as mecânicas que estiver desenvolvendo pois é melhor um jogo feio ou sem todas as features mas com um Feel FODA (Minecraft) do que uma sequencia de um jogo FODA que tem um feel de merda, e é com isso que vamos pro meu segundo ponto.

Onde mais eu posso entender sobre Feel de jogos?

O Egoraptor tem uns vídeos onde ele destrincha alguns jogos maravilhosamente bem com uma visão de Game Designer. Vale MUITO a pena assistir todos, só precisa saber inglês!

Tudo bem, mas issaí são jogos Triple A e eu que sou indie, comofaz?

Meu segundo ponto virá na Parte 2, onde eu vou fazer mais um estudo de caso. Dessa vez de um jogo que me decepcionou bastante pois eu esperava que fosse tão bom quanto seu precursor.

 

Aguardem!

Enquanto esperam a parte 2 e agora que vocês estão refletindo sobre o assunto, aproveitem para jogar e estudar o feel do nosso jogo: o Projeto Tilt. O jogo está em Closed Pré-Alpha mas vocês podem se tornar Closed Testers se inscrevendo no grupo de Facebook: bitcakestudio.com/testers/. Depois de se inscreverem podem jogar no Facebook mesmo através do link: bitcakestudio.com/tilt/.

Até a próxima!

Presenting: Project Tilt!

By | Uncategorized | 2 Comments

Hello readers!

My name is Eduardo Lamhut and I’m BitCake Studio’s Game Designer, you must be asking yourself: What the hell is BitCake Studio? Do you guys make this video game stuff the hip kids talk about? Where’s the “Give you guys money” button? CALM DOWN, calm down… I’m here for the first time in order to present you guys our humble studio and the game we’re developing, as we grow and improve upon it there’ll be more posts detailing the game’s development process. All this so that hopefully you guys can learn a bit with our mistakes.

So… Who the hell is BitCake again?

In order to talk about us we must first talk a little bit about Critical Studio (developers of Dungeonland, a little game that managed to climb to the Top 3 most sold on an unknown plataform called Steam).

H-hmm…

Once upon a time in a grand place called Critical Studio – where people were happy and gran wizards long to teach what they knew to young aspires the old and untraditional art of ludic development – there was a group of Archmages who were developing a new form of magic. Time passed and those wizards went on developing this new… thing, which they called “Dungeonland” (a theme park for grand adventurers), they went on on their tasks but at the same time, the longing felt for teaching younglings about this art continued to grow inside them. So they had an idea: “What if we call upon 7 crazy great warriors to come here to our castle and give them the opportunity to develop their own techniques, and teach them what we know?”. Hastily everyone gathered information on the best talent available and called those 7 brave guys to the studio Castle, but (and there’s always a but) they ended up stuck in the middle of Dungeonland! The Dungeon Maestro (whom was still being taught how to run things) locked them inside a giant prision and said: “Hey NERDS, give me a new game or I’ll never release you!” and so, our warriors with nowhere to run or hide started developing a new game inside Crtical Studio’s prision walls – good thing they had the help of the Archmages, wich gave them wisdom, some confort and lots of awesome advices, for they would need all the help they could get in order to finish up that game….

But the truth is, we’re still developing it!

Since we’ve started working inside Critical’s walls as a company inside a company, we’ve had many changes in our staff, a game cancelled and, since January, we’ve been working on a new kind of experience that we feel has great potential to be awesome. And this is what bring us to the second point of this post:

What the hell is Project Tilt?

If I were to give our high pitch it would be:

Mario Kart meets Quake, on Facebook.

Project Tilt is a 2d Shooter in the grounds of Soldat. Thought from the ground up to be a mix of Quake and Mario Kart, the game brings a type of uninterrupted action with crazy weapons, random Items that give you different powers like eletrifying everyone around you or even infinite ammo and crazy fast fire rate!

Our choice of publishing was first on Facebook because we feel there’s a lot of potential there for non-farming-candy-birds-sims experiences, also we wanted to kill our friends in real time without leaving Facebook.

But enough bob-lob-law! What you’re interested is in PLAYING the game and experiencing by yourself the amazing thing we’re developing!

“So hey you guys, how do I play your game?” – You about our game

Tilt is in its infancy, we’re still on Pre-Alpha but we have arrived on a moment were we feel we need to open the game a little more in order to learn about what people think of our game and really understand if what we’re building is a trully great game, so we want to invite you!

Because of this we’d like to ask you guys just one thing: what we need of you is feedback! We just want to know what you think about the game, be it bugs, suggestions, critiques, anything is good! So after you finish up playing and killing your friends, hop on our Facebook group and leave a comment telling us what you feel about your experience, things like: “Shotgun is overpowered because of this thing…” “Well, I don’t really feel the jetpack is any good because of this and this” or “I’d like to see this awesome feature implemented in future releases because I miss this thing on the game”. Trying to tell us why you think what you think will help us understand the game even more.

Ok, so… Things you guys need to learn about Project Tilt:

  • – You’ll need a Facebook account in order to play
  • – Tests are always done on thursdays from 20 – 21h (GMT -3)
  • – Even if we gather everyone to test on a single day the game is open 24/7 for everyone to play
  • – We still don’t have art implemented, even if any feedbacks are good we’ll just ask you guys not to focus on this for now because we’ll still be implementing it in the future.
  • – Please use our Facebook Group in order to give us feedback, because that can generate healthy discussions with our community!
  • – Have in mind that we reserve the decision to change the game based on any and all feedback, so don’t suggest something thinking it’ll get in the game, because we won’t implement or change everything people ask. We’ll try to change things based on what we feel is more important to the core of the game. This is because we don’t want the game to become a hot mess of crazy features that don’t work with eachother.

What should I do if I want to become a tester?

  • 1) You obviously need a Facebook account 🙂
  • 2) Access our Facebook Group though the link bitcakestudio.com/testers  and ask to be invited in!
  • 3) After you get access to the group you are free to play! Just use this link: bitcakestudio.com/tilt or if you prefer just click on the Tilt app on your Facebook apps
  • 4) Call a friend to play! You just need to send him those links 🙂

Last but not least:

Thank you for your interest in our game, we’re working very hard to build something special that we’ll be proud to show the world! Your help will be essential in building this amazing game so I just wanna tell you guys good luck, we’re all counting on you!

Hope to shoot you guys in the next test!

Eduardo Lamhut
Game Designer @ BitCake StudioOlá galera!

Meu nome é Eduardo Lamhut e eu sou o Game Designer da BitCake Studio e você deve estar se perguntando: Quem raios é a BitCake Studio? Vocês fazem esses tais “joguinhos”? Onde tá o botão pra dar dinheiro pra vocês? CALMA, calma… Estou aqui pela primeira vez para apresentar o estúdio e o jogo que estamos fazendo e, ao longo do tempo, mais posts virão procurando detalhar o nosso processo de desenvolvimento. Para que você, caro leitor, possa aprender um pouco com nossos erros e acertos!

Então, quem diabos é a BitCake?

Pra falar da BitCake a gente precisa antes falar um pouquinho da Critical Studio (os desenvolvedores de um joguinho aí qualquer que ficou entre os Top 3 de um tal de Steam chamado Dungeonland).

H-hum…

Era uma vez, um belo lugar chamado Critical Studio – lugar este onde pairava uma forte paixão por repassar conhecimentos, ensinar pessoas, falar das grandes batalhas do desenvolvimento e inspirar jovens aspirantes a se tornarem grandes developers. O tempo foi passando e eles foram desenvolvendo Dungeonland, mas o desejo de ensinar nunca desapareceu e foi só crescendo; até que no 9º mês do ano de MMXII a corte resolvera fazer algo inesperado: Como recebiam várias e várias cartas de apresentação de todas as partes do reino resolveram juntar 7 malucos jovens – os quais haviam sido julgado como os menos piores mais dignos – a se reunir ao redor da tão falada távula redonda da sala de gastronomia e relaxamento do castelo. Ao chegarem no local, os 7 bravos cavalheiros descobriram que haviam sido enganados e estavam numa enrascada: acabaram sendo capturados dentro do calabouço inimigo com uma só ordem de seus captores: “Desenvolvam um jogo, vocês terão acesso a nossa equipe, esta sala a partir de agora será sua prisão até acabarem de desenvolver! O  jogo é de vocês, mas suas almas são nossas!”. E agora? O que aconterá com nossos herois?

Bom, a verdade é que nós continuamos a desenvolver o projeto até hoje!

De agosto pra cá nós tivemos 1 jogo cancelado, algumas mudanças de equipe e resolvemos no inicio do ano mudar o nosso foco para a produção de um novo jogo com uma proposta e plataforma completamente diferentes. O que me leva ao segundo ponto deste post:

Que raios é o Projeto Tilt?

Se eu fosse dar meu high-pitch do jogo pra vocês eu falaria assim:

Mario Kart com Quake, no Facebook.

Projeto Tilt é um Shooter 2d multiplayer no melhor estilo Soldat. Pensado desde o início como uma mistura de Quake e Mario Kart, o jogo traz um gameplay de ação ininterrupta com armas de efeitos diferentes e itens  espalhados pelo cenário que te dão habilidades especiais randômicas, como: raios que eletrocutam todos os oponentes que estiverem por perto ou alto poder de fogo com munição infinita!

Nossa escolha de plataforma para o lançamento foi o Facebook, pois acreditamos muito no potencial do jogo de proporcionar uma experiência rápida e gratificante para o público que estiver sem tempo de investir em algo que demande muito de suas horas vagas. Nós também queríamos matar os nossos amigos em real-time sem ter que sair do Facebook.

Mas chega de blá-blá-blá! Você está mesmo interessado em JOGAR e ver com seus próprios olhos essa pérola que estamos criando com muito carinho para todo mundo!

“Bottini, Bottini, como eu faço para jogar, Bottini?” – Você sobre o nosso jogo

O Tilt está em sua versão Pré-Alpha e chegamos a um momento no qual estamos confiantes o suficiente para abrir o jogo e acomodar mais pessoas, gostaríamos muito de ter vocês leitores como convidados!

Porém há um motivo de estarmos convidando mais pessoas para entrar no seleto grupo de Closed Alpha testers: o que queremos com isso é que vocês nos enviem feedback de tudo que vocês pensam sobre o projeto, por exemplo: a movimentação tá ruim? O tempo de Jetpack ta legal? Tá muito lag? A Shotgun é overpower? “Eu acho que deveria ter um Item que fizesse essa parada irada aqui!”, etc… Para que possamos melhorar o jogo de acordo com os desejos da comunidade, afinal de contas o jogo é pra vocês!

Algumas coisas que vocês precisam saber sobre o Tilt:

– Vocês precisam de uma conta no Facebook pra jogar
– Todos os testes são realizados às Quintas-feiras das 20 – 21h
– Apesar dos testes serem na quinta o jogo fica aberto 24h todos os dias. Quem quiser jogar é só usar o link do app
– Nós não temos arte implementada, porém feedbacks são sempre bons sobre qualquer aspecto do jogo pra futura consideração quando começarmos a implementar os graphix. Então não se incomodem em questionar o que tiver de arte (só não foquem nisso por enquanto, por favor)
– Estamos abrindo o jogo tão cedo pra testes pois estamos tentando ao máximo aprimorar nossa aprendizagem e melhorar ao máximo o jogo em cima de feedbacks 🙂
– Por favor usem o grupo do Facebook: Tilt Testers para enviar seu feedback (pois assim geramos discussões saudáveis entre todos os testers)
– Nem todas as sugestões ou críticas vão acarretar em mudanças no jogo, a equipe avalia tudo que vocês comentam e iteramos em cima do que acharmos que pode melhorar a experiência, então nada de sugerir um item e achar que ele vai automaticamente entrar no jogo.

Como fazer se você quiser ser tester?

1) Como o jogo está no Facebook vocês obviamente precisam de uma conta 🙂
2) Acesse o grupo de testers do jogo através do link: bitcakestudio.com/testers e façam um pedido para se inscrever no grupo!
3) Após serem aceitos dento do grupo de Testers, vocês estarão liberados para jogar o jogo através deste outro link: bitcakestudio.com/tilt ou clicando diretamente no jogo dentro dos seus APPs do Facebook!
AH! Se vocês quiserem chamar um amigo para testar é só enviar esse post pra eles poderem se inscrever (ou só manda os links pra eles que dá no mesmo)!

E por último:

Muito obrigado a todos pelo interesse, estamos trabalhando duro para criar algo especial e que temos orgulho de mostrar pelo mundo afora! A ajuda de vocês é essencial para atingir esse objetivo, estamos contando com todos vocês, participem!

Um forte abraço e espero dar uma surra em vocês todos no próximo teste!

Eduardo Lamhut
Game Designer @ BitCake Studio