quinta-feira, 1 de dezembro de 2016

Teve bom

Ultraaaaaaaaa!!!
Deu certo pessoal.
O processo de integração foi um sucesso.
O jogo funcionaaaaa!!! Significa que tudo o que foi especificado no início do projeto está ok.
De repente um bando de alunos de graduação e até mesmo o professor pareciam crianças no
parque de diversão.
Ifelizmente não tenho fotos aqui, mas vamos publicar um video da aula de hoje com os melhores momentos e entrevista dos participantes no canal
da disciplina no youtube.
Vale muito a pena conferir.
Bom galera, chegou ao fim.
O semestre acabou e provavelmente as atualizações sobre o jogo também.
Mas existem rumores que
ainda iremos apresentar na mostra de profissões da UFMG, espero que sim.
Ja estou com saudade de todos...
É como se o mundo fosse um desenho animado e cada pessoa ali um personagem de desenho, com suas características, cada um
com seus traços que te torna único.
Todos indispensáveis. Marcou.
BrigadÚ!!!

Agradecimentos especiais:
- Professor Bruno que orientou o projeto.
- Diana sempre solícita e que esteve sempre ali garantindo que não iriamos fugir.
- Javier López, autor do código que utilizamos como referência pra criar o SuperTetris.
- Lazy Foo' Productions que disponibilizou tutoriais de SDL que salvaram muitas vezes.
- SoundJay de onde retiramos alguns audios

tec tec tec tec tec tec tec tec tec...
O som do ventilador continua
h h h
Vlw

quinta-feira, 24 de novembro de 2016

O android estava com problema para identificar a rotação do smartphone, devido a forma de leitura dos dados do giroscopio, foi utilizado um pacote de orienações do aparelho, presento no android, o qual mapeia as 4 posições de tela:
  • Normal
  • Tela de cabeça para baixo
  • Landscape Normal
  • Landscape invertido
As 4 configurações de posição são codificadas nos valores 0,1,2 e 3.
As posições 1 e 3, configuram posições de landscape, então foram definidos em:
  • 1-0 sentido horário
  • 1-2 sentido anti-horário
  • 3-2 sentido horário
  • 3-0 sentido anti-horário
Com base nesses movimentos, foi feita a conexão com o servidor TCP, e foi enviado para este os movimentos de acordo com o que foi pre definido no protocolo de envio de dados.
Foram feitos os testes no servidor, e este está recebendo perfeitamente os dados.

Não foram feitas alterações no OpenCV, pois este já está no seu funcionamento de acordo com os requisitos especificados, e enviando os dados nos padrõs pre definidos

No lado do servidor de rede, foi implementado o Socket de envio de dados para a máquina a qual irá conter o jogo rodando, este socket foi testado durante a aula e identificado alguns problemas quanto a recepção dos valores por parte da máquina hospedando o jogo.

Ultimo passo para finalizar o projeto será com relação a máquina do jogo, a qual deve ser modificada afim de receber as entradas, pois os movimentos para cada entrada como descritas no protocolo já está desenvolvido.

E o árbitro dá mais 3 minutos de acréscimo...

É com muita emoção entre os membros da equipe que esse post vem trazer as novidades da penúltima semana de trabalho.

O quê? Penúltima? Como assim? Já tá acabando?

É isso mesmo, galera! O semestre voou e a última semana do projeto se aproxima. Na próxima quinta-feira (01/12) faremos a última entrega, apresentaremos todos os resultados obtidos e nos despediremos do tão querido Super Tetris. Há rumores de que haverá uma competição onde o grande recordista da noite será agraciado com 10 pontos extras na disciplina. (necessita confirmar fonte)
Mas se o tempo é implacável, mais feroz ainda é o Super Tetris New Edition Completely Remastered Very Colorful with Special SoundTrack GREATEST HITS! Oh yeahhh!

É isso mesmo pessoal, nosso jogo está de cara nova e com sonorização profissional! Olha só que belezura!!!


Estamos muito satisfeitos com os avanços obtidos ao longo do semestre. O projeto evoluiu bastante, vários ciclos de desenvolvimento foram trabalhados e aceditamos ter cumprido com as principais metas que foram traçadas lá em Agosto.

Pra terminar de vez o projeto, só resta a conclusão da integração com a equipe 100Nome. Nossos colegas estão trabalhando a todo vapor para concluírem a comunicação dos dados e, assim que o último bit for transmitido com sucesso, nosso jogo estará disponível na PlayStore muito muito próximo de ser concluído.

Para coroar o trabalho de toda a equipe, adicionamos no menu do jogo uma pequena homenagem aos alunos que estiveram envolvidos no desenvolvimento do SuperTetris.





Na próxima semana faremos os últimos reparos pertinentes e estaremos prontos para O GRANDE DIA!

Fiquem ligados porque ainda vamos vir aqui para contar os bastidores do que rolou na última semana do projeto.

Fiquem em paz e uma boa noite!

quinta-feira, 17 de novembro de 2016

Novidade: Estamos também no LINUX

Boa noite galera!

Você que usa Linux com certeza vai se alegrar com a notícia de hoje. Como o título da postagem já diz, a nossa principal evolução do dia foi disponibilizar o tão sonhado Super Tetris para o Sistema Operacional Linux. É isso mesmo galera! Agora chegamos para todos os gostos ;)

Além dessa novidade, como está chegando o dia da inauguração do game mais esperado do ano, fizemos uma homologação pesada em todas as funcionalidades para garantir a completa felicidade dos nossos clientes. Encontramos alguns bugs no ranking de maior pontuação que, prontamente, foram corrigidos, além de termos aproximado as conversas com a nossa equipe parceira 100Nome, avançado no processo de integração entre o trabalho até então desenvolvido e inserir efeitos sonoros na nossa aplicação.

Então é isso pessoal, estamos chegando ao fim, mas ainda garantimos algumas surpresas antes da grande inauguração. Então fiquem ligados e nos acompanhem para não perderem nada.

Forte abraço e até semana que vem.

Falta Pouco!

Hoje a equipe 100Nome chegou nos finalmentes do projeto.

Conexão OpenCV -> Servidor ###### DONE
Conexão App -> Servidor ###### DONE
Layout App ###### DONE
Codificação dos movimentos esquerda e direita em colunas do jogo ######## DONE

O que falta:

* Codificar a rotação que se apresentou diferente do esperado nos testes utilizando um celular
* Finalizar conexão Servidor -> Jogo

Abaixo, o layout da tela inicial do App:

quinta-feira, 10 de novembro de 2016

Show do futebol!

Bem amigos da Rede UFMG,

Falamos aqui ao vivo do estádio dos manipuladores, a temperatura é de 22 graus Celsius. Tivemos um bom jogo aqui hoje e agora vamos aos melhores momentos:

Primeiro tempo
10 minutos
 A equipe entrou com um desfalque mas o time ainda está bem armado com Lucas jogando de Verificador e caindo pra Monitor, André jogando de Relator e Gustavo na frente jogando de Coordenador.

15 minutos
Gustavo e Lucas trabalham na implementação de efeitos sonoros no jogo. Achou-se uma plataforma na website com efeitos sonoros de graça: www.soundjay.com
Enquanto isso André trabalha a bola estudando a implementação de sockets para a comunicação com o controlador do jogo e tabelando com o Vitor tirando dúvidas sobre a função de cliente do socket.

30 minutos
GOOOLL!! Lucas cruza a SDL_mixer pra área e Gustavo bota a cabeça na biblioteca e joga ela pro fundo do código. Agora a biblioteca já está linkada ao projeto.

Intervalo
"A gente trabalhou muito durante o primeiro tempo. Durante o intervalo agora é combinar com a equipe o protocolo de comunicação entre o jogo o e servidor e partir pra implementação de um código base para testar a comunicação com o servidor." Disse André na saída do campo indo pro vestiário.

Segundo tempo
2 minutos
Gustavo e Lucas trabalham a bola lá atrás tentando implementar o código no Linux. Enquanto isso, André já sabe que serão 3 bytes de comunicação: um para identificar qual dos dois jogadores, um para identificar qual movimento e outro para identificar a distância do movimento.

15 minutos
GOOOOOOLL!!! André em jogada individual faz a comunicação com o servidor recebendo e enviando dados e bota a bola para o fundo do gol. Confira comigo no replay ao lado!



40 minutos
Gol da Alemanha! Lucas e Gustavo até tentaram compilar o código mas o Linux pegou a linkagem das bibliotecas desprevinidas e botou a bola pra rede levando Gustavo e Lucas ao desespero por não terem conseguido resolver o problema.

Confira agora a coletiva após jogo:
"O mais importante foi que a gente conseguiu o resultado positivo. Embora a gente foi infeliz no fim do jogo mas a gente conseguiu produzir bons resultados aqui hoje. Agora é trabalhar durante a semana pra no próximo jogo a gente conseguir implementar o código no Linux resolvendo o problema de linkagem, fechar os efeitos sonoros no jogo, terminar a classe para modular o uso do socket e adicioná-los no código do jogo". Falou Gustavo, coordenador da equipe.

Então é isso amigos, boa noite e vocês ficam agora com o jornal da Globo com as últimas notícias da noite. UFMG, a gente se vê por aqui!
AP_OpenCV_APPFluxogram.png
Nova fase no desenvolvimento do tradutor de mensagens para controlar o jogo. Testamos a comunicação entre o OpenCV e o roteador de comandos, enquanto desenhando o protocolo de comunicação com o jogo em si, que agora é capaz de se comunicar com o servidor central. O único imprevisto foi a cor utilizada pelo OpenCV para reconhecimento dos movimentos, que era a mesma da camisa do tester =/
Na próxima fase será confeccionado o commander, que executará as instruções recebidas no jogo, fechando o circuito entre o OpenCV e o game em si. 

quinta-feira, 3 de novembro de 2016

Super Tetris versão COMBOOO!

Fala galera bonita, estamos aqui com novidades mais uma vez.
Hoje a coisa rendeu por aqui. Como já estamos na reta final (faltam só três semanas galera) fomos além dos limites.

Eis então que surge a versão COMBO do SuperTetris. Durante a execução de cada espiral do projeto foram criados modos de jogo distintos. Decidimos inclui-los na versão final e portanto agora teremos os modos SINGLE PLAYER, MULTIPLAYER e  EVIL PIECE em um único jogo.

Além do processo de integração dos modos de jogo, concluímos hoje a função de leitura e armazenamento do RECORD em um arquivo txt  nosso banco dados e a exibição do mesmo em tela por meio da renderização de texto.


Aguardem pois o próximo encontro será do barulho.
;)



Conexão com servidor e primeira release de telas

Foi solucionado o ploblema de algumas aulas atras com a implementação do envio de movimento do OpenCV, via socket para um sevidor socket qualquer, apenas como teste.

Os dados enviados via socket, seguem a modularização pré definida, contendo 4 bytes, sendo o primeiro qual aplicação está enviando tal dado (OpenCV/Servidor), o segundo qual player está jogando, o terceiro qual o código do movimento e por último qual o valor do movimento.

Com base nos movimentos acima, o servidor irá decidir o que deve ser feito com cada dado e enviar para seu referido destinarátio.

Evoluimos no design das telas do aplicativo, adicionando a possibilidade de escolha, de qual jogador cada um será, como abaixo:

 Como pode ser visto acima, apos o usuário escolher qual jogador será, a tela irá adquirir a cor daquele jogador especifico.
Houve um problema quanto a continuidade da elaboração das telas devido a uma atualização do MAC OS, o qual prejudicou o funcionamento de uma das máquinas, tal erro só foi constatado ao final da aula.

quinta-feira, 27 de outubro de 2016

Avante!!!

Boa noite, companheiras e companheiros!

Nunca antes na história desse projeto estivemos tão perto de consolidar a implementação do nosso aguardado SuperTetris.

A grande novidade da semana fica por conta do Menu do jogo, que já foi implementado e funciona atrelado a janela principal onde o campo de batalha cenário é apresentado. Todas as modificações pertinentes na estrutura do jogo estão sendo realizadas para incorporar essa nova tela.

Optamos por um layout simples e funcional, fiel ao projeto que foi apresentado algumas semanas atrás. Queremos, em iterações posteriores do projeto, incrementar o nível de detalhe da interface. Por ora, estamos satisfeitos com o resultado até então obtido.


Trabalhamos também na implementação das funcionalidades necessárias para o armazenamento e exibição da pontuação obtida pelo melhor dos melhores, digno de ir parar no Guinness Book  detentor da melhor pontuação de todos os tempos.

Outra novidade é que decidimos migrar da biblioteca SDL1.2 para a SDL2.0, visando obter maior flexibilidade e simplicidade na implementação de determinadas funcionalidades do projeto.

Com esse embalo todo, ninguém segura esse time...

Agradecemos a visita e esperamos vocês de volta na próxima semana, onde traremos mais novidades acerca do desenvolvimento do projeto.

Um grande abraço,

Hasta la vista, baby!

Equipe 100Nome - 27/10

Hoje o dia foi dedicado a melhorias e correções de erro.

O roteador de comandos foi refatorado. Além disso foi corrigido um erro em relação ao versionamento dos módulos.

O App Mobile apresentava problemas ao girar o celular dentro da interface do jogador. O que acontecia é que o jogo retornava para a tela inicial. Esse problema foi corrigido e o código também foi refatorado para melhorar o entendimento.

O módulo do OpenCV ainda está pendente. O objetivo da próxima aula é validar a conexão desse módulo com o roteador e acrescentar uma interface no App compatível com a do core jogo que a outra equipe está desenvolvendo.

quinta-feira, 13 de outubro de 2016

Que tal um menu?

Boa noite galera.

O dia de hoje foi muito light, afinal ainda estamos aproveitando a semana das crianças =P
mas temos algumas novidades interessantes para vocês. Começamos a criar o menu do nosso tetris. Isso mesmo pessoal! O monstrão está ficando encorpado!



Assim será a tela de apresentação do jogo.
Com um click do mouse será possível selecionar as opções de jogar (PLAY), verificar maior pontuação (RECORD) e sair (EXIT).





Aí vocês nos perguntam: "Mas equipe Mini-Game, esperamos ansiosamente a semana toda e vocês fizeram só isso?" e a gente responde: "Claro que não!!!", também randomizamos a posição X onde a famosa peça do mal cai e definimos que a mesma cairá no tabuleiro do adversário. Além disso, fizemos muitos reparos gráficos pra deixar o nosso game cada vez mais supimpa!

Esses foram os resultados de hoje pessoal. Mas semana que vem teremos muito mais!
Esperamos finalizar o desenvolvimento desse menu e já inserir essa parte fundamental do jogo. Esperamos que dê tudo certo e contamos com a sua torcida.

Forte abraço e até semana que vem!
Finalizamos a construção do roteador de comandos, responsável pela abertura do sistema que coleta mensagens na rede para serem interpretados e transmitidos ao motor do jogo. Também realizamos testes de conectividade entre o app e o roteador, tendo uma interface simples e comunicante. Contudo enfrentamos problemas com o sistema de segurança do Android a ser trabalhado na próxima aula, juntamente com os testes de conectividade do OpenCV.

quinta-feira, 6 de outubro de 2016

Chegou a hora da sacanagem

Bem amigos da Rede Globo,

Os nossos trabalhos neste dia foram dois: o primeiro foi criar uma tela de menu inicial para o jogo, conforme projetado e criar a peça do mal que vai ficar entre os dois tabuleiros e cairá em um dos tabuleiros sem que o jogador daquele tabuleiro possa controlar a peça.

Em relação ao primeiro objetivo, não obtivemos resultado. A nossa intenção era colocar uma imagem no background do menu do jogo. Para isso, seria necessário usar a biblioteca SDL_Image.h e a função IMG_load. Contudo, houveram problemas na compilação que não permitiram a realização dessa tarefa. Na próxima, vamos criar um menu sem background até conseguirmos colocar essa imagem.

Em relação ao segundo objetivo, a ordem de atividades foi:
a) Criar uma nova peça e posiciona-la no meio, entre os dois tabuleiros.
b) Identificar o evento onde o jogador 1 toca o limite direito de seu tabuleiro na altura na peça do mal.
c) Mover a peça do mal para o topo do tabuleiro 1 ao ser identificado o evento do toque do jogador 1.
d) Fazer a peça mal cair e juntar-se às peças já estáticas.
e) Repor a peça do mal no meio dos dois tabuleiros.

Essas atividades foram completadas. Na figura acima, é mostrado a peça do mal no meio dos dois tabuleiros, e na figura à direita, existem duas peças caindo ao mesmo tempo no tabuleiro 1, onde a de baixo é aquela que o jogador tem controle e a de cima é a peça do mal.

Na próxima aula, será preciso randomizar a posição X onde a peça do mal cai e também randomizar qual tabuleiro que receberá essa peça inconveniente, além de uns pequenos reparos na parte gráfica.

No mais, foi um prazer tê-los aqui conosco. Fique ligado porque na sequência temos o Jornal da Globo com as notícias do Brasil e do mundo.
Boa noite!

Equipe 100Nome 06/10

O objetivo do trabalho de hoje foi criar a conexão entre o módulo do OpenCV e o módulo principal do jogo e iniciar o desenvolvimento do App para Android.

Estamos encontrando dificuldade ao criar o socket cliente no ambiente do Windows. O problema encontrado é que a biblioteca windows.h chama a biblioteca winsock.h. Só que precisamos da biblioteca winsock2.h, e isso gera conflitos pois a winsock2.h tem funções que já existem na winsock.h.

No mais, preparamos o ambiente de desenvolvimento para o App do Android. Uma primeira versão da tela pode ser visualizada abaixo.

quinta-feira, 29 de setembro de 2016

Agora a coisa ficou séria!

Boa noite galera bonita.

Hoje demos um grande salto com o projeto. Ufa, missão cumprida pra hoje!
Como combinamos no último encontro, o objetivo da aula de hoje seria iniciar o processo de incrementar o jogo para modo multiplayer. Não só avançamos bastante nesse sentido como também adicionamos na tela a informação sobre a pontuação dos jogadores.

A tela do jogo foi dividida em duas e adicionamos novas entradas do teclado para o controle do segundo jogador, as peças continuam sendo geradas aleatoriamente para ambos.



Paralelamente atualizamos a documentação da "Engenharia Detalhada" inserindo novos protótipos para as especificações que atendem à adição do novo jogador.

Pra próximo encontro pretendemos temos uma surpresa boa. Aguardem haha :D

Ta ficando cabulosooo

Foi feita a apresentação da engenharia detalhada do projeto, como pode ser visalizada no link abaixo:
https://docs.google.com/presentation/d/1fhOozewvXWSSUQR-XHMOEbZing0NrZiEGUVbAIUGpjU/edit?usp=sharing

Na engenharia detalhada, foram descritos como serão as estruturas de comunicação entre os modulos, e as entrutura de entrada de movimento e saida de notificações.

Foi adicionado o segundo jogador ao OpenCV, sendo assim selecionadas duas cores diferentes, uma para cada smartphone, as cores selecionadas foram verde e lilas, pois apresentaram excelente constrate com o ambiente.



Como pode ser visto acima, já estão sendo detectados os centros de ambos os celulares, com base nesses centros serão calculados os movimentos, depois de futuro alinhamento com o outro grupo.

quinta-feira, 22 de setembro de 2016

Tetris Multiplayer! A new era!

O encontro do dia 22 foi marcado por muita mão na massa, mudança de planos e uma grande novidade para quem tem acompanhado nosso trabalho.

Passamos boa parte da aula aprendendo sobre os processos de execução da biblioteca SDL em diferentes ambientes operacionais. Enquanto alguns de nossos colegas arrancavam os cabelos tentando compilar tutoriais no MAC OS e Windows, outros se debatiam entre os inúmeros erros apontados no terminal do Linux. Finalmente, obtivemos êxito em compilar alguns exemplos de teste, podendo assim concentrar nossos esforços em entender algumas das funções básicas implementadas na biblioteca padrão.

Como exemplo, rodamos os tutoriais abaixo, que incorporam funções que serão posteriormente úteis no desenvolvimento do SuperTetris. A figura da direita mostra a execução de um programa simples que indica qual tecla foi pressionada pelo usuário. A figura da esquerda, por sua vez, indica a execução de um programa que implementa um timer. 







No decorrer da aula surgiram algumas discussões a respeito de novas funcionalidades que poderiam ser incorporadas ao jogo. Dentre as propostas levantadas, temos a seguinte novidade para vocês:

"Se com um jogador já era bom, com dois vai ficar ainda melhor."

Encontramos uma implementação básica da proposta que havia sido discutida até então, livremente disponível na internet (acesse aqui), e decidimos usar algumas ideias já propostas como base do nosso projeto. Tal decisão implica numa maior agilididade na fase incial de desenvolvimento do projeto e abre espaço para que novas funcionalidades sejam incorporadas no trabalho, dentre as quais, a função multiplayer.

 

Aguardem as cenas dos próximos capítulos.

Relatório 100Nome - 22/09




Hoje a equipe 100Nome trabalhou em três frentes distintas e elas serão detalhadas a seguir:

Engenharia Detalhada


A engenharia detalhada está 80% pronta. Foi definido o OSGi para implementar a estrutura de forma modularizada da maneira como havia sido definido previamente.
A comunicação entre os módulos será através de sockets de comunicação cliente-servidor utilizando protocolo TCP.

Foi também definido um protocolo de comunicação que proverá pela troca de informações entre os módulos.
Uma apresentação está sendo montada para organizar as informações. Abaixo uma figura para deixar um gostinho do que está por vir:


OpenCV


Já temos uma boa leitura da tela do celular que irá representar o movimento do jogador. Os ruídos foram removidos, uma cor de captura foi definida e o centro da tela já está mapeado. O próximo passo é detectar a porcentagem de movimento que o jogador fez em relação ao quadro que a câmera está visualizando. Abaixo uma figura com os resultados.



Estruturação dos módulos


Também já foi definida a estruturação dos módulos utilizando OSGi. O código do nosso projeto está disponível de forma pública no link: https://github.com/victorlima02/Super-Tetris

Próximos passos: Finalizar Engenharia Detalhada (faltando diagrama de classes) e finalizar comunicação OpenCV - Commander.

quinta-feira, 15 de setembro de 2016

"fatal error undefined reference"

Durante uma discussão entre o grupo surgiu a ideia de se utilizar um soquete como acoplamento entre principais blocos do projeto utilizando comunicação TCP
e foi tomada a decisão de que o movimento do bloco no jogo se dará através de uma proporção de tela.

Agora vamos falar de coisa boa:
"Aqui nós constrói Fibra!!"

BIRLLLL

Começamos a colocar a mão na massa e logo tivemos dificuldades com a nova biblioteca SDL, o que ja era esperado.
Mas com algumas pesquisas e seguindo tutoriais, conseguimos executar os primeiros códigos exemplos que serviram como base para darmos esse primeiro passo.

Como inspiração o primeiro código a ser executado será apresentado abaixo:



Após esse exemplo partimos para tutoriais mais elaborados, contudo encontramos dificuldades em relação às bibliotecas.

Para proxima aula definimos temas a serem estudados previamente por cada membro do grupo, de forma a obter maior fluidez e entendimento da ferramenta SDL no desenvlvimento do projeto. Ficou dividido em Video e IO, as duas grandes areas a serem estudadas para começar.

Não fiquem tristes, na verdade avançamos mais do que isso, mas estamos aguardando para apresentar o que fizemos de melhor nas próximas semanas.