Configuração e limitações
Esta página fecha a seção com o que você precisa configurar dos dois lados e onde o desenho encontra suas paredes. Os exemplos de config usam placeholders de propósito — os valores reais da bancada (IPs, chaves, credenciais) nunca vão para um repositório, e os seus também não devem ir.
Configuração do client
Seção intitulada “Configuração do client”O client precisa saber a qual servidor conectar. Isso vai no init.lua, na lista de servidores. Use o seu IP público no lugar do placeholder.
-- init.lua (client) — VALORES DE EXEMPLOServers = { MeuServidor = "SEU_SERVIDOR_IP:7171:854" -- ip : loginPort : protocolVersion}
-- Deixe o updater vazio para nao travar o login.Services = { updater = ""}O formato de cada entrada é ip:loginPort:protocolVersion. Aqui, 7171 é a porta de login e 854 é a versão de protocolo (client 8.54). O Services.updater fica vazio de propósito: um updater apontando para lugar nenhum trava a tela de login.
Configuração do servidor
Seção intitulada “Configuração do servidor”Do lado do servidor, o config.lua do TFS controla IP e portas. O ponto que mais causa dor de cabeça é o ip: ele precisa ser o IP público.
-- config.lua (servidor TFS) — VALORES DE EXEMPLO, NAO OS REAISip = "SEU_SERVIDOR_IP" -- IP PUBLICO. O TFS devolve este valor ao client no login.loginPort = 7171gamePort = 7172
-- ... credenciais de banco, etc. ficam aqui e NAO vao para o repositorio ...sqlHost = "127.0.0.1"sqlUser = "<seu-usuario>"sqlPass = "<sua-senha>"sqlDatabase = "<seu-banco>"Bancada vs entregável
Seção intitulada “Bancada vs entregável”Vale ter clareza sobre o que, do case, você de fato leva para o seu servidor e o que fica na bancada como referência:
- O módulo de client
game_lootfy— a pasta que você solta emmodules/. Sanitizado, portável, instala sem recompilar. - O patch de engine
doLootfyDeliver— os quatro arquivos-fonte C++ que você aplica e recompila (ou o equivalente, se a sua engine é outra). - A forma do Lua de servidor — como o
opcode.luavalida contra ocide delega ao Agent. Referência de desenho, adaptada ao seu servidor.
- O servidor OpenTibia da bancada em si — com IPs reais, credenciais de produção, dumps de player e histórico com dívida de segurança. Nunca é publicado.
- O binário pré-compilado da engine — específico da toolchain e arquitetura da bancada.
- Qualquer arquivo de config com valor real (
config.luapreenchido,bench.staging.json, chaves.pem). Fora do portal, fora do repositório.
As limitações reais
Seção intitulada “As limitações reais”Estas não são pendências que serão resolvidas — são restrições do ambiente OpenTibia antigo, e cada uma explica uma decisão do desenho.
-
O client 8.54 não seta header HTTP customizado. A chamada HTTP dele não aceita headers, e a assinatura viaja no header
X-Lootfy-Signature. Consequência: o client não pode carregar o envelope assinado, então o servidor assina e envia (o ramo B). É a razão de o Agent e o opcode 221 existirem nesse desenho. -
O binário da engine é x86-64 / Debian, sem build Windows. A bancada roda um binário pré-compilado para Linux x86-64. Não há build Windows pronto; rodar em Windows exigiria portar a toolchain.
-
Recompilar o TFS 0.3 é um projeto à parte. Aplicar o patch de entrega exige compilar a engine com a toolchain antiga (container
debian:bullseye-slim, autotools, bibliotecas-dev). Se você não compila a sua engine hoje, reserve tempo para esse passo — ele é independente do resto da integração. -
IP público obrigatório dos dois lados. Como visto acima, tanto o
config.luado servidor quanto oinit.luado client precisam do IP público, ou o jogador não entra no mundo.