A real-life casual game developed in Processing and Arduino, with a Wii Nunchuk, two flashlights and some LEDs.


nsimaria @ 23:12

Seg, 24/10/11

As you know, Blacklight was recently showcased at Future Places. The event took place in Maus Hábitos, Porto, and gathered projects from different universities.

 

We'd like to thank the Future Places organization, specially to Professors Heitor Alvelos and Pedro Branco, as well as Joana Lima, for the invitation, and to the Maus Hábitos crowd (Daniel, Paula, Daniel e Capucho) for the great support, help, and hosting of the event.

 

We leave you some pictures and a video from the event. If you want to check out the whole collection click here and here.

 

 

 

Hope to see you all soon!




nsimaria @ 02:42

Sex, 21/10/11

Finally we have everything up and running. Changing the system to Ubuntu's Oneiric Ocelot made us change almost all libraries we were using. We had to switch JMyron with GSCapture and Ess with Minim. We also had to change around some sun and openjdk files, and finally, Blacklight is bugs free (hopefully). The SVN has already been updated. Blacklight - Future Places Edition v.1.0 is revision 18 from the trunk if you want to check it out. 

See you tomorrow!




nsimaria @ 21:23

Qui, 20/10/11

The Future Places exhibit opens tomorrow at Maus Hábitos, Porto. Here are some pictures of the setting up:

 

Some of the welding being done...

 

The screen, which fitted perfectly! :)

 

Testing the projector...

Major crashes with Ubuntu Oneiric Ocelot.

Hopefully it'll turn out ok. :)

 

Tryin' it out...

 

Tomorrow there'll be some finishing up, and the event will start at 3PM. We hope to see you there!




nsimaria @ 02:19

Qua, 12/10/11

We’ve got the news recently that we’ll showcasing Blacklight at Future Places as well as at our university’s open week, so we decided to redo a lot of things. We’re building a new screen and improving a lot of stuff in the game itself. Overall, I think it’ll be a totally new experience, with incremented awesomeness. There isn’t much time but fortunately our friend Dinis has decided to give us a hand.

So, hopefully there will be a lot of activity in our SVN server. If you want to literally check it out at https://code.ua.pt/svn/blacklight/ (user ‘guest’, no password), go ahead or visit https://code.ua.pt/projects/blacklight/repository for a quick overview of what's going on. We’ll also post pics and videos when we start assembling the new screen.


Stay tuned!




nsimaria @ 12:50

Ter, 21/06/11

Antes de começar com a implementação do projecto propriamente dita, foi necessário fazer um estudo prático acerca das tecnologias que iriam ser utilizadas, para perceber melhor quais seriam os possíveis entraves técnicos que surgiriam ao longo do processo. O código do projecto está disponível em https://code.ua.pt/svn/blacklight/ acedendo com o utilizador 'guest' sem password.

 

Detecção de luz - Desenvolveram-se pequenos exemplos recorrendo a várias bibliotecas de captação e tratamento de vídeo, tendo-se escolhido a bibblioteca Myron desenvolvida por Josh Nimoy  (http://webcamxtra.sourceforge.net/) por várias razões, sendo a facilidade de implementação e o fácil acesso a baixo nível do input da "webcam". Implentaram-se alguns pequenos exemplos, um dos quais pode ser visto em http://nsimaria.blogs.ua.sapo.pt/3094.html.

 

Wii Nunchuk - A integração do Wii Nunchuk no projecto era uma das incógnitas que necessitava ser resolvida na fase de análise bastante cedo, já que se trouxesse alguma dificuldade poderia prejudicar o resultado final do projecto. A implementação pretendida era teóricamente simples: interpretar o sinal do Wii Nunchuk com o Arduino e fazer com que este enviasse os dados do comando para o Processing. No entanto, a execução prática deste desafio revelou ser algo complexa. Após algum trabalho de investigação, foi decidido utilizar uma aproximação ao modelo explicado por Maik Schmidt em Arduino - A Quick Start Guide. Uma implementação para prova de conceito realizada pelo grupo pode ser encontrada em http://nsimaria.blogs.ua.sapo.pt/3453.html.

 

Feedback luminoso - Para esta componente do projecto era necessário desta vez que o Processing era quem deveria enviar informação a um segundo Arduino, encarregue de mostrar um "feedback" luminoso mediante uma estrutura de LEDs a ele ligada que mostrasse a cada momento qual era o estado da batalha que estivesse a decorrer. Com a experiencia obtida no desenvolvimento da integração do Wii Nunchuk rápidamente se implentou uma solução baseada na comunicação mediante o porto de série.

 

Esquema conceptual - Uma vez concluída esta primeira fase de investigação acerca das capacidades de cada uma das tecnologias, estavam reunidas as condições para elaborar uma primeira especificação acerca do funcionamento da plataforma. Uma aplicação desenvolvida em Processing alimentar-se-ia do sinal de uma webcam e de dois comandos Wii Nunchuk ligados a ela mediante uma placa Arduino para utilizar como controladores de interacção do jogo Blacklight. Enviaria também em tempo real um sinal de saída a um segundo Arduino que se encarregaria de dar o feedback visual do jogo em tempo real mediante uma estrutura de LEDs.

 

Arquitectura de Software - Uma vez definida a etructura pretendida passou-se à implementação da aplicação de Processing propriamente dita. Após um primeiro período de abordagem à linguagem e de avaliação das suas capacidades ao nível da programação orientada a objectos, implementou-se a uma primeira versão "alpha" que esteve na base da aplicação final. A arquitectura de software concebida para a implementação do Blacklight pode ser dissecada da seguinte forma:

 

Entidades de aplicação

blacklight.pde - script de iniciacialização da aplicação, que inicializa os recursos necessários

 

Entidades de "game flow"

Game - classe responsável pelo fluxo de utilização de toda a aplicação. A classe alimenta-se de um ficheiro XML para a sua parametrização. Apesar de na implementação final ter sido pouco explorada, esta funcionalidade permite a criação de vários níveis de dificuldade sem grande esforço, parametrizando somente o ficheiro data/xml/config.xml.

Level - abstracção do ecrã de jogo com as particularidades de cada nível. Faz a articulação entre as classes Blacklord, Lightlord e Battlefield para a execução do jogo propriamente dito. Contém também uma referencia a um object Serial que faz a comunicação com o Arduino dedicado ao output luminoso.

 

Entidades de jogo

Battlefield e Cell - abstracções do campo de batalha e da sua unidade mínima respectivamente. Foi necessário dividir o campo de batalha numa matriz de elementos Cell de forma a fazer o mapeamento de coordenadas da webcam com as zonas do campo de jogo.

Blacklord e Lightlord - abstrações de cada um dos lados envolvidos na batalha. Fazem a gestão dos elementos de input de cada uma das equipas e provocam o aparecimento e/ou destruição da matéria escura e luminosa.

Blackminion e Lightminion - abstracções dos cursores de cada um dos lados. No que diz respeito à equipa da escuridão trata-se do cursor que gera a matéria negra e, para o lado da luz, cada um dos pontos brancos que se criam para cada área luminosa da "webcam".

Blackmatter e Lightmatter - abstracções da matéria escura e luminosa. Para o lado da escuridão traduz-se nos círculos negros. Para o lado da luminosidade, foi algo que se utilizou durante algum tempo mas deixou de fazer sentido quando se tomou a decisão de que apenas se geraria matéria negra e não matéria luminosa. No entanto manteve-se a classe para integridade de modelo.

 

Entidades de entrada/saída

Detector - wrapper do objecto JMyron utilizado para obtenção e interpretação da imagem da "webcam".

Input - entidade que interpreta o protocolo enviado pela aplicação do Arduino de entrada para obtenção do estado do Wii Nunchuk.

 

Entidades visuais

Intro - implenta o ecrã inicial, a sua animação, e a detecção do evento de disparo para dar início a uma nova batalha.

Winner -implementa a animação de vitória para cada uma das equipas.

Logo - implementa o logotipo animado do ecrã de jogo, que muda de côr consoante a acção no campo de batalha.

 

Arduino - Dispositivo de entrada

Com base na classe Nunchuk implementada por Maik Schmidt em Arduino - A Quick Start Guide, constrói um sinal do tipo "NK1 jx jy ax ay az bz bc" a ser enviado pelo porto série à aplicação principal implementada em Processing onde:

jx - posição do joystick no eixo horizontal;

jy - posição do joystick no eixo vertical;

ax - valor do acelerómetro em relação ao plano horizontal;

ay - valor do acelerómetro em relação ao plano vertical paralelo ao utilizador;

az - valor do acelerómetro em relação ao plano vertical perpendicular ao utilizador;

bz - valor que indica se o botão Z está pressionado ou não;

bc - valor que indica se o botão C está pressionado ou não.

Foi implementado também um mecanismo que de amostragem que não envia o valor lido directamente do controlador senão que faz uma média dos últimos valores recolhidos para suavizar a resposta do Wii Nunchuk e evitar saltos bruscos na interacção.

 

Arduino - Dispositivo de saída

Aplicação simples que interpreta o valor passado pelo Processing que traduz o balanço do actual conflito a decorrer no campo de batalha e ilumina de forma relativa uma estructura de LEDs.

 



nsimaria @ 19:24

Sab, 18/06/11

Hoje foi o dia da apresentação dos projectos de MCMM. Depois de uns dias de azáfama total finalmente podemos descansar um bocadinho. Não muito, porque ainda temos relatórios para acabar.

Fica aqui um video de uma sessão de testes na véspera da entrega. Para quem estiver interessado em aspectos mais técnicos, o código está disponivel via SVN em https://code.ua.pt/svn/blacklight. Para aceder, utilize o nome de utilizador 'guest' sem password.

Quando o relatório estiver terminado, publicaremos mais pormenores acerca da implementação.

 




nsimaria @ 17:39

Sab, 30/04/11

 Nesta versão foi substituido provisóriamente o Wii Nunchuk pelo teclado do computador. Após experimentar com vários fundos, optámos por usar fundos neutros, em escala de cinza, para dar mais destaque aos elementos importantes do jogo: os círculos brancos e negros que representam a luz e a escuridão.

 

 





nsimaria @ 17:49

Sab, 12/03/11

 Primeira implementação de controlo dos Black Minions e disparo de Black Matter com o Wii Nunchuk.




danielateixeira @ 18:23

Sex, 11/03/11

 Testes que se realizaram com LEDs para se implementar a contagem do tempo e/ou scoreboards !

 





jcuenin @ 18:18

Sex, 11/03/11

Here is the first maquete of the project, you can see the main idea with both sides. 

We will use two nunchucks connected to an arduino chip linked with a computer who will display the game on a projector. The other side will use a webcam also connected to the computer and the players will interact with the game using flashlights.

maqueta

You can also see the scale of the maquete with daniela.

daniela maqueta

 

one side (dark side) for the team playing with the nunchucks trying to make the middle screen darker 

 

dark side

 

and the other side (bright side) for the team playing with the flashlights to make the screen brighter.

light side

 

See you soon for more news about the project!


Tags: