Avatar TCG é um jogo de cartas digital onde jogadores competem em partidas 1v1, utilizando estratégias baseadas nos elementos do universo de Avatar: A Lenda de Aang. O jogo foi desenvolvido com foco em desempenho e escalabilidade, utilizando WebSocket para comunicação em tempo real, ThreadPool para otimização de tarefas concorrentes e técnicas de sincronização para evitar race conditions, garantindo uma experiência fluida e justa.
Antes de começar, certifique-se de ter instalado em sua máquina:
- Docker
- Git
- Python 3.8+ (para testes de carga)
git clone https://github.com/Robson-Carvalho/avatar_tcg.git
cd avatar_tcgO projeto é composto por três componentes principais: o banco de dados PostgreSQL, o servidor backend e o cliente frontend. Siga os passos abaixo para configurar e executar cada um deles para se comunicarem em uma mesma rede local em diferentes host.
1. Banco de Dados PostgreSQL
Inicie um contêiner Docker para o banco de dados PostgreSQL:
docker run -d --name postgres-avatar -p 5432:5432 \
-e POSTGRES_DB=avatar_tcg \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-v postgres_data:/var/lib/postgresql/data \
postgres:152. Servidor Backend
Construa e execute o contêiner para o servidor backend na mesma máquina do container do banco de dados:
docker build -t avatar-tcg-server .
docker run -d --name avatar-server -p 8080:8080 \
-e JWT_SECRET=4ab47e54c2f73ad4c0eb3974709721cd \
-e HOST_SERVER=10.0.0.151 \
avatar-tcg-server"Nota: Substitua
10.0.0.151pelo IP da máquina que está executando o servidor, se necessário."
3. Cliente Frontend
Construa e execute o contêiner para o cliente frontend:
"Nota: No arquivo ./client/src/scripts/env.js, substitua o
IP_SERVERatual pelo IP da máquina que está executando o servidor, se necessário."
const IP_SERVER = "10.0.0.151" # altere para o IP da máquina que está executando o servidordocker build -t avatar-tcg-client ./client
docker run -d --name avatar-client -p 3000:3000 avatar-tcg-clientApós executar esses comandos, o jogo estará acessível em http://localhost:3000.
Para interromper e remover todos os contêineres, execute:
docker stop postgres-avatar &&
docker rm -fpostgres-avatar &&
docker stop avatar-server &&
docker rm -f avatar-server &&
docker stop avatar-client &&
docker rm -f avatar-client &&Os testes de carga ajudam a avaliar o desempenho do servidor sob alta demanda. Para executá-los, siga os passos abaixo:
- Navegue até o diretório de testes de estresse:
cd avatar_tcg/stress- Crie e ative um ambiente virtual Python:
python3 -m venv venv
source venv/Scripts/activate
# ou para linux
source venv/bin/activate- Instale as dependências necessárias:
pip install requests websocket-client- Configure o IP do servidor no arquivo
stress/main.pypara corresponder ao IP da máquina que está executando o servidor backend (definido emHOST_SERVER). - Execute os testes de carga:
python main.pyAtenção: Certifique-se de que o IP do servidor esteja corretamente configurado no arquivo
main.pyantes de executar os testes.
- Para sair do ambiente venv execute:
deactivateContribuições são bem-vindas! Para contribuir:
- Faça um fork do repositório.
- Crie uma branch para sua feature:
git checkout -b minha-feature. - Commit suas alterações:
git commit -m 'Adiciona minha feature'. - Envie para o repositório remoto:
git push origin minha-feature. - Abra um Pull Request.
Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para mais detalhes.
Para dúvidas ou sugestões, entre em contato com Robson Carvalho ou abra uma issue no repositório.