WWDC17 Scholarship Challenge

E começa o desafio para a WWDC scholarship! E já termina também…

O final de semana passou em clima de Game Jam. Dormir ficou de segundo plano quando poderíamos concorrer a uma bolsa da Apple para o seu maior evento anual, a WWDC. O objetivo era desenvolver uma aplicação em Xcode Playgrounds, para macOS, ou Swift Playgrounds, para iPad.

Seasons — Árvore crescendo no verão

Meu Playground tem como tema as estações do ano. O objetivo inicial era fazer com que o usuário tivesse uma experiência única a cada estação, desde brincar com a queda das folhas no outono até impedir formigas carregadeiras de roubá-las no verão. Infelizmente o tempo de desenvolvimento foi bastante curto e essas interações acabaram ficando para outra hora, mas fiquei extremamente satisfeito com o resultado visual.

Seasons — Outono

O último final de semana foi uma loucura. Tivemos um pouco mais de uma semana para pensar numa ideia criativa e tirá-la do papel. Aprendemos dezenas de coisas a cada dia. Os designers foram os mais guerreiros, aprendendo desde o básico da programação até a utilização de gráficos, sons e animações. A fins de comparação, estou no 7º período de Ciência da Computação e até hoje não vimos nenhuma biblioteca gráfica. O que demorou um semestre na faculdade, para aprender o básico de programação, foi passado a eles em dois dias.

Essa semana o que mais vi eram pessoas desesperadas com o resultado diferente da lógica que tinham pensado. Ouvia por todo canto “Não tá rodando. Pega um café. Reinicia o playground. Dá Command+Z”, e eu mesmo fui protagonista deste cenário algumas vezes.

Problemas assim podem ser desesperadores no momento, mas geram conhecimentos a serem levados para futuros projetos. Eu particularmente deixei para sonorizar minha aplicação mais tarde, achando que era simplesmente dar um play no som. E adivinha? As diferentes faixas não sincronizavam e havia delay na hora de dar play. Além disso, as faixas pareciam se encaixar quando tocadas aleatoriamente por mim no iPad, mas quando esse aleatório foi gerado pelo computador, a música virou um desastre. Subestimei a dificuldade da implementação do som sem fazer testes prévios. E como resultado disso, tive que entregar o projeto cujo som pode comprometer a experiência de quem estiver brincando.

Além da sonoridade, tive um atraso muito grande quanto ao desenvolvimento da ideia. Era 18h de sábado quando tive minha ideia realmente desenvolvida, sendo que as 21h do dia seguinte era o prazo final de entrega do playground. Até então, eu tinha apenas uma árvore, uma borboleta e um balanço num cenário em branco.

Tape-tree — Projeto inspirador para o Seasons

Tive um feedback bastante positivo quanto ao visual, mas quando me perguntavam sobre como iriam interagir com o playground, eu não tinha a mínima ideia. Era apenas um playground com rostinho bonito, mas sem conteúdo. Diversas vezes me confortava com o pensamento de “logo vou descobrir uma utilidade”, mas só a encontrei quando realmente parei por algumas horas para analisar a fundo meu problema.

It’s now about waiting for hours for this moment where inspiration strikes. It’s just about showing up and getting started, and then something amazing happens or it doesn’t happen. All that matters is you enable the chance for something to happen — Christoph Niemann

Como Christoph Niemann cita em seu episódio da série Abstract, disponível na Netflix, não é interessante ficar apenas esperando. Mesmo que não tenhamos algo em mente no momento, devemos nos focar e procurar pensar em alguma solução para provocar nossa mente a encontrar uma saída. E aí que encontrei meu maior erro, e meu maior aprendizado.

Claro que também aprendi diversos assuntos técnicos, entre eles as bibliotecas AVFoundation, CoreGraphics, SpriteKit e um pouco de SceneKit. Descobri maneiras de criar e controlar uma faixa de áudio em tempo real, adicionar efeitos de reverberação, distorção e brincar com diversos parâmetros de áudio. Já SceneKit não foi utilizado neste playground, mas além de me divertir, encontrei diversas features que não conhecia e serviu para me inspirar em futuros projetos. CoreGraphics e SpriteKit foram o core do playground, uma vez que, com exceção a sombra da árvore, todos os elementos visuais foram criados com estas bibliotecas. Também, um problema de performance no iPad fez eu aprender mais sobre otimização de vetores e bitmap, descobrindo maneiras de deixar a aplicação muito mais suave. Muito mais.


Com toda correria atrás da exportação para iPad, posso dizer que virei quase um expert em Playground Books. Após ver diversas pessoas com dificuldade em utilizar os recursos do livro, iniciei o desenvolvimento do Playgrounds Book Maker.

Playgrounds Book Maker

Aí está um gostinho do que está por vir. Como o projeto encontra-se em segundo plano, aproveito do meu tempo livre para desenvolvê-lo. Mas em breve estará disponível na Mac AppStore. Aguarde :)