Scrumcard com salas em tempo real

https://www.youtube.com/watch?v=bR7o4Dl1MGI&ab_channel=Megamil

A ideia do projeto

Com a demanda de homeoffice vejo alguns amigos que são desenvolvedores compartilhando sua rotina de planning, normalmente de forma desorganizada, onde a pontuação das tarefas não era feita de uma maneira inteligente, com isso vi a necessidade de mercado de uma aplicação assim. Embora existam outras, a maioria não é tão simples e conectada, no scrumcard as salas são criadas e compartilhadas sem necessidade de cadastro, login etc. As votações são em tempo real e também é gerenciado o momento de exibir o resultado.

Descrição simplificada do App

Pare de realizar as votações na Planning com pontuação via chat, áudio ou vídeo.
crie e controle sua sala, permita que as pessoas pontuem no seu tempo, e o no final será revelado para todos a pontuação dada.
Você pode criar uma sala tanto pelo app quanto pelo site, ao digitar sala e senha ou colar o convite, entrará automaticamente na sala.
Selecione o estilo de sua carta e a pontuação a ser dada, então é só aguardar!

Por que Unity?

Embora eu trabalhe majoritariamente com desenvolvimento de sites, backend e apps. já havia tido contato com Unity na faculdade, desenvolvi meu TCC usando ele. de forma simplificada resolvi revisitar o Unity porque gostei de desenvolvedor com ele, também acho o C# similar a Java o que facilitaria o desenvolvimento da aplicação.

Depois disso, novamente, criei um outro projeto em Unity, embora não seja um jogo de fato usa bem os conceitos de gameficação. Projeto anterior em Unity.

Por fim, não tratei essa aplicação como um app mesmo, por que tenho planos futuros com ela, no qual devo transformar num jogo realmente 😉

Problemas no desenvolvimento

O Desenvolvimento acabou demorando alguns meses, por conta principalmente da conexão com sockets e um servidor próprio que eu queria fazer. O desenvolvimento do servidor para mim não era problema, já havia feito antes e consegui subir rapidamente no docker um projeto em node, inclusive fiz o site primeiro, que já se conectava ao socket e estava 100% funcional.

Já no desenvolvimento em C# no Unity não tive muitos problemas, até chegar na conexão com socket…
usei algumas bibliotecas de terceiros e tive os seguintes problemas:

  • Uma das libs não conseguia se conectar com o socket de maneira nenhuma, porém não apresentava erro. Descobri depois de uns dias que era a versão do socket do meu servidor, estava usando a 4 e a lib só funcionava com a versão 2. Por ser mais antiga eu não quis fazer esse downgrade no meu servidor e abandonei a biblioteca.
  • Depois acabei achando outras libs, uma delas não conseguia se conectar a minha aplicação quando eu subia no docker, só enxergava direto no servidor ou local (Sim, eu nem imagino o porquê disso até hoje…).
  • Depois, finalmente, achei uma que conectou, porém ela não trazia as respostas do servidor, foi então que vi que ela não aceitava comandos básicos como .on ou .emit, era um pouco mais baixo nível, então eu abandonei depois de umas tentativas.
  • Depois consegui com uma outra Lib fazer funcionar, porém precisei de uns arquivos de DLL pesquisando no Google, somente com eles ele conectou sem problemas….. Maaaas ainda assim na hora que atualizar elementos na tela nada acontecia e nenhum erro era exibido no log.
  • Foi então que descobri que o unity não trabalha muito bem com thread de ui, depois de muito pesquisar achei uma classe em um fórum, uma função que faz esse papel das thread de ui, e com isso, finalmente, consegui finalizar o projeto =D.

Bom, depois de toda essa jornada criei um projeto aberto no github reunindo todas as libs que usei no final, as dlls, código para gerenciar thread etc. tudo já testado, vou deixar abaixo, no mesmo projeto tem um exemplo em node também, é um app de chat.

Site / Download

Site: https://scrumcard.app/
Download Direto (Android/iOS): https://scrumcard.app/download

Projeto para ajudar quem deseja usar Sockets em seus projetos na Unity

  • .net 4.x ✅
  • Conectado ao servidor com Node.JS usando Socket.io (4.0.1) ✅
  • Servidor rodando em docker ✅
  • Comunicação usando nome de funções customizadas (.On(“name”)) e (.Emit(“name”)) ✅
  • Recebendo e enviando Json ✅
  • Build iOS 14 ✅ (Deve funcionar em versões anteriores)
  • Build Android 9 ✅ (Deve funcionar em versões anteriores)
  • Atualizar elementos na tela em tempo real ✅

Exemplo: Socket.IO Unity / Node.JS: https://github.com/Megamil/Socket.IO-Unity

Espero conseguir ajudar 😉
Obrigado por ler até o fim.

Related Posts

1 Comment

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *