Codename [mujk the gutherin]
Projeto de jogo de coleção e troca de cartas multiplayer online estilo “Magick the Gathering: Arena”.
Pessoas: @Jose, @Kazuo, @JoaoG.
Encontros: thread
Sobre
Jogos são 1v1 representam uma Guerra entre facções. Cada lado usa de três recursos para invocar cartas (permanentes ou otherwise) que simbolizam Força de Trabalho; Recursos Básicos (Dinheiro/Comida) e Recursos Especializados (Infraestrutura/Peças Especiais).
As cartas permanentes se organizam em unidades ou platoons, que podem ter uma carta especial de comandante, e uma composição de artilharia, infantaria e cavalaria.
Só tem uma Main phase onde tudo acontece, por turno de jogador. Cada combate é entre platoons, os exércitos são montados, o atacante joga N_0 cartas de efeito ou táticas, o defensor joga M_0 cartas de mesmo tipo, … daí resolve a pilha.
Condições de Vitória:
- Acabar com os recursos do oponente.
- Sobreviver X turnos após acabado o baralho do oponente.
- Cartas de Objetivo
- Estas cartas determinam um par de condições, de vitória e derrota, alternativas para o jogador que a invoca. Cada jogador só pode escolher um objetivo apenas, que uma vez escolhido, fica revelado.
Technical Details
- Repositórios
- Frontend/Cliente: Godot
- Partida/Instância: C++17
- Backend/Server : Um dockerzão com um server C++?
Formas de Fazer TCP com SSL para o Projeto:
- Usar GDNative para criar soquetes etc.
- CPP and GDNative part I.
- “we chose to have a C API which is wrapping the C++ calls”
- [cries in calling-convention]
- força muito código ir para dentro da Godot, I am afraid. Não sei, mas é a impressão.
- Usar o
sys/socket.h
e deixar o UwUindows chorar por não ser POSIX.- Vantagem: punir usuários de OwOindows e não POSIX compliants.
- Aproveitar que nim compila para C++ ou C, e fazer um mini módulo na língua usando a biblioteca padrão net. Daí a gente exporta os símbolos e só linka com o resto do sistema. Deveria ser fácil e portável.
- “OpenSSL can also be statically linked using
--dynlibOverride:ssl
”. - Desvantagem: O compilador não vai poder aggressively otimizar as chamadas via
extern
s, unless we transpile to C++ antes de linkar… É uma otimização precoce? Sim.
- “OpenSSL can also be statically linked using