Sempre gostei de computador e sempre me dei bem em matemática, mesmo que não gostasse de estudar pra isso.
Quando chegou o segundo grau, a hora de decidir um curso para a faculdade, não tinha outro caminha além de informática. No entanto, a minha "revolta" com a matemática me fez escolher cursar Comunicação Social, fiz um período mas não rendeu. Aceitando meu destino, fui cursar Sistemas de Informação.
Dai, tive: Matemática Discreta I, II, Cálculo, Probabilidade...
Por fim, acabei fazendo as pazes com a matemática. Isso por que comecei a entender para que serviam todos aquelas formas, aplicando-as em algo concreto.
Isso não foi para contar o meu relacionamento com a matemática e sim, ilustrar a quem quer lidar com as áreas que envolvem informática, como tem que se dar bem com a matemática.
O motivo por trás deste post é:
A alguns dias estou pesquisando sobre algoritmos de jogo como colisão e movimento e tudo que se encontra, são fórmulas de geometria, trigonometria e física. Aquelas que vimos no segundo grau, quando o professor passava uma fórmula no quadro para descobrir a tangente e pensávamos: "Legal, assim eu sei a tangente, e dai?" ou "O gráfico da equação de 2o grau é uma parábola... minha vida mudou!". Experimente fazer um ponto andar na diagonal sem seno e cosseno. Um tiro de canhão sem usar equação de 2o grau? Ou uma query sem a mínima noção de teoria de conjuntos!
Para quem pretende trabalhar com jogos, o buraco é mais embaixo.
Matemática, geometria, trigonometria e física mecânica de ensino médio precisam ser tão, ou mais, fluentes!
Pesquisando, me deparei com coisas como quadTree, quaternion, e vários outros termos sendo falados tão regularmente nos artigos que me toquei que saber fazer uma integral bem não é mérito nenhum, pelo ao menos para quem quer entrar para a área de produção de games.
Se você pretende trabalhar com games, saiba que matemática deverá ser fluente como português ou inglês. Saber plenamente a matemática, geometria e física de ensino médio e estudar esses conceitos mais avançados são requisitos mínimos para a área, e é exatamente isso que vou fazer daqui pra frente. Matemática no café, geometria no almoço, física no jantar e uma cervejinha mais a noite, afinal, ninguém é de ferro.
quinta-feira, 20 de março de 2008
E você reclamando de cálculo?
terça-feira, 18 de março de 2008
Primeiras experiências
Esse final de semana, uma chuva absurda e eu a pé! Foi a deixa pra começar a estudar o XNA.
Abrindo Visual Studio, criar novo projeto, Xna Windows Game... Abre um dos n textos que peguei na internet e vamos lá!
A primeira parte é entender os métodos da classe principal do jogo, a Game1.
Simplificaram bastante as coisas, uma para carregar conteúdo, outra para carregar grafico, uma para descarregar, um loop de lógica e um loop de impressão. Tudo bem organizado mesmo.
O próprio xna já vem configurado de tal forma que ele mesmo cuida de gerar uma janela, o tipo de coisa que você passa horas fazendo em outras linguagens. Lá basta definir a altura, largura e se é fullscreen, e só! Mais que isso é detalhe. Até ai, ok.
Legal, vamos começar agora... mas por onde?
Provavelmente essa é a parte mais difícil de todas. Por fim, escolhi importar e exibir uma imagem na tela. Depois de algumas horas lendo e pesquisando, consegui e cheguei a conclusão de que é mais idiota que imaginava.
O mais dificil ali é o pontapé inicial, já que não é o tipo de estrutura que está acostumado a ver, principalmente eu que venho de web, onde os programas: começa, executam e terminam em ate 1 ou 2 segundos!
Depois, comecei a me meter a besta lendo as teclas: apertar esc e fechar o jogo, molezinha.
Sendo assim, por que não movimentar o meu desenho com as setinhas do teclado pela tela?
Incrementa o x e o y... Movimento feito!
E se eu aplicasse aceleração no movimento?
Ah, tranqüilo, pega o incremento, multiplica pela aceleração... Aceleração feita!
E nesse ritmo foi: aumento de aceleração, rotação do sprite.
Pronto, ele ja andava, acelerava e parava, e rodava mas ele não fazia uma curva, simplesmente rodava e andava de lado.
Como fazia pra ele andar na diagonal? Já que eu conseguia andar pra cima e pra baixo alterando o Y, esquerda e direita alterando o X, mas diagonal... ai bateu o estalo, momento flashback a aula da tia maricota lá no segundo grau, trigonometria!
Rezando pra São Google por mais uns minutos, tudo clareou: X*cos(angulo) e Y*sin(angulo)!
Perfeito! Num é que funcionava mesmo?!
Fui me empolgando, a chuva não dava trégua e quando vi, já entrava pela madrugada até que a cama começou a exercer uma gravidade e, o que a principio era uma barata (sim, o sprite que eu usava pro teste era uma barata), tornou-se um borrão marrom andando sobre um borrão azul. Bom, era hora de dormir.
Resultado final:
- Básico de XNA
- Importação de imagem
- Leitura de Teclas
- Movimentação
- Aceleração
- Rotação
- Movimento em diagonal
- Inércia
- Desaceleração por atrito
quarta-feira, 5 de março de 2008
O nome!
Depois de tanto apanhar, arrumamos o maldito nome. Nada como o bom e velho brainstorm (valeu Ota)!
O grande problema era arrumar um nome neutro já que o jogo não possui história, ainda.
O único certo é que será um jogo de luta, então, seguindo essa linha, saiu o nome: Kenpachi.
Aos que conhecem Bleach, qualquer semelhança não é coincidência. Claro que não é uma referencia direta mas sim ao significado. Segue um trecho do texto da Wikipédia sobre ele que explica isso:
"Ele também se deu um nome: Zaraki Kenpachi, sendo Kenpachi um título dado ao guerreiro mais forte, ou seja, o guerreiro mais forte de Zaraki."
Sendo assim, o nome se encaixa bem no contexto do jogo.
A urgência do nome era para fechar o anexo I, que deve ser entregue hoje!
Outra coisa interessante são os notes que Vitor e eu pegamos, que vai adiantar nossa vida em muito, principalmente eu que, trabalhando no rio, fica bem difícil de usar o pc em casa.
Agora com a entrega do anexo I, vai o cronograma. Assim, depois da entrega, comça oficialmente o projeto. Primeira parada: Descrição do projeto!
Para quem não conhece o personagem, texto sobre Zaraki Kenpachi está aqui.
domingo, 24 de fevereiro de 2008
A Busca por um nome.
Achar um nome para uma coisa é sempre a parte mais difícil, seja achar um nome para uma banda, uma musica, UM JOGO ou qualquer coisa relacionada. Começamos a decidir sobre, com a premissa de que o jogo seria de plataforma e luta. Com isso, bolamos um mini enredo para ter uma noção, e criar um nome que tenha haver.
O mini enredo é mais ou menos o seguinte:
“O jogo seria uma luta entre nações, onde cada personagem, que seria importante para aquela nação e provavelmente um heroi ou vilão, lutaria buscando dominar o território (nação) do adversário. Praticamente um torneio onde os territórios estão em cheque”.
Queríamos um protótipo para mostrar, partindo dessa idéia que pode ser alterada, surgiu está lista de nomes:
O Confronto.
Dominação.
D.O.N – Domination of Nation.
O Duelo.
Duelo.
Queríamos abrir uma enquête por aqui para ver qual nome seria o escolhido, mais como o movimento é baixo poderia demorar um pouco. Com isso decidimos adotar o nome “D.O.N – Domination of Nation”, para ser o nome do nosso jogo, mas ate quarta feira tudo pode mudar, vindo da gente é fácil, sempre surgi idéia nova.
Acho que é isso... Vamos estudar as opções e ate quarta feira vamos ter uma resposta concreta para o nome do jogo. Quem estiver a fim de dar uma opinião ou sugestão será muito bem vindo.
Só comentar =D
Flw.
quinta-feira, 21 de fevereiro de 2008
Quem?
"Amigos da rede globo, começa oficialmente a corrida pelo projeto final!"
Ontem, começou enfim o projeto com a entrega do rascunho do Anexo I, onde definimos o orientado e o tema do projeto.
A boa notícia é que temos um orientador, Rodrigo Luis. Não tinha orientador melhor para o projeto porque ele é f*** em computação gráfica! Mesmo que, a princípio, não vamos usar 3D, ele entende muito do assunto e de projeto final em geral.
A má notícia é que chegamos a segunda parte mais difícil de todo projeto: escolher o nome!
Essa só perde para escolher o projeto em si. Afina, existe coisa mais complicada que escolher nome de qualquer coisa? Ainda mais se levar em conta que os PFs costumam ter nomes que mais lembram um carro alegórico de escola de samba:
"Desenvolvimento de aplicações interativas de sistema informativo sobre plataformas de tempo real" ou "Protótipo de aplicação para integração entre sistemas monolíticos por redes assíncronas". Não fique surpreso caso encontre um projeto com algo como: "Aves do paraíso na visão do trabalhador proletariado do nordeste de Botsuana"!
Como o Rodrigo havia sugerido, o nome poderia ser algo como: Nome do jogo: Protótipo de game sobre a plataforma Xna. Beleza... e qual o nome do jogo? Só Deus sabe! (ou nem ele)
Nota mental: "Só Deus sabe" é um ótimo nome para jogo...
quarta-feira, 20 de fevereiro de 2008
Grand Chase
Para quem não conhece o Grand Chase, que será o jogo base para o nosso projeto, vai um vídeo de apresentação dele:
terça-feira, 19 de fevereiro de 2008
Um pouco do projeto
Pouca coisa está certa ainda. O que foi definido até agora, é:
- O projeto será um jogo.
- O framework escolhido é o XNA da Microsoft. Como é um framework feito justamente para o desenvolvimento de jogos, nada mais natural.
- Seguindo a linha de pensamento, a linguagem para esse caso será o C#. Poderia ser o VB, mas eu ainda não estou usando crack pra isso! :)
- Ferramenta de desenvolvimento: Visual Studio 2005.
- O jogo será semelhante ao Grand Chase. Para quem não conhece, esse é um mmog de luta, onde até 4 jogadores se enfrentam em um cenário 2D, com muitas plataformas.
- A temática do jogo: desenho, sons, musicas, personagens, história... Essa parte não é tão relevante no momento, já que isso fica na etapa de implementação, ou seja, em Projeto Final II (junho 2008 em diante).
- Vamos colocar multiplayer em rede? Isso o deadline dirá. Afina, será mais um caso de um caso de uso, mais algumas classes, diagramas de seqüencia, implantação... já viu o tamanho da brincadeira, não?
- Rodar o projeto no Xbox 360? Se estiver tudo certinho, porque não? Na verdade, a meta é essa. Não sei ao certo se existe alguma dificuldade de passar o jogo de Windows para Xbox360.