Muito bacana e eficiente, aprovado.
- Fórum
- OTServ
- Tutoriais
- Tutoriais de Programação
- Login Server com vários mundos.
ON
Login Server com vários mundos.
Por Oneshot, 18 de set. de 2013 em Tutoriais de Programação
tibia
otserv
5
4.4k
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

18 de setembro de 2013 às 12:48
info
Grupo: Infante
Registrado: 06/03/13
Posts: 1.6k
Reputação: +319
Gênero: Masculino
Char no Tibia: Lord Sorte

18 de setembro de 2013 às 17:31
Muito otimo topico bem ageitandin otimo mesmo
22 de setembro de 2013 às 17:15
Como adiciono o parametro -D__LOGIN_SERVER__?
5 meses depois...





info
Grupo: Marquês
Registrado: 05/07/09
Posts: 1.3k
Reputação: +732
Login Server com Vários Mundos
1. Introdução
Olá, pessoal. Já vi diversas vezes, sendo uma delas muito recente, uma dúvida bastante pertinente sobre a configuração do sistema de vários mundos para um único IP de servidor.
Sim, tem muita gente que não sabe fazer isso e acaba tendo que criar vários IPs, por exemplo:
Sim, é mais fácil fazer isso, mas perde toda a graça, pois o Tibia oficial, é dividido em mundos e com um único servidor de login.
1.1 Servidor de Login?
Sim, existe um servidor responsável por aceitar o login dos jogadores e distribuir o login nos servidores secundários, ou mundos, a ele damos o nome de servidor de login.
Para entender como funciona, olhe a seguinte imagem:
O jogador conecta no servidor de login, pode ir para o Mundo 1 que é o próprio servidor de login, ou ir para outros mundos como na imagem, já que conectado no primeiro servidor, ele pode ser direcionado para lá.
2. Como configurar
A configuração desse sistema é muito simples, primeiro tenha em mente que você irá precisar separar seus vários servidores, que se comportarão como mundos, em pastas diferentes. Cada executável com sua própria pasta, config.lua, pasta data/ e afins.
O primeiro servidor, que será o nosso login server, precisará ser compilado com um parâmetro a mais, OU SEJA, você precisa ter acesso as sources do seu servidor.
O parâmetro que você deverá adicionar é:
ATENÇÃO, você só deve compilar o primeiro executável, o primeiro servidor, com esse parâmetro, os outros não devem ser compilados assim.
Servidores compilados, organizados em suas pastas, configure os servidores para acessar o banco de dados MySQL (não testei com SQLite, acredito que não funciona.)
Abra o servers.xml no diretório data/XML do nosso login server, ele vai estar assim, provavelmente:
<?xml version="1.0" encoding="UTF-8"?> <servers> <server id="0" name="Example" versionMin="860" versionMax="860" address="127.0.0.1" port="7171"/> </servers>Configure seus servidores aqui, por exemplo:
<?xml version="1.0" encoding="UTF-8"?> <servers> <server id="1" name="Caramelo" versionMin="860" versionMax="860" address="127.0.0.1" port="7172"/> <server id="2" name="Biscoito" versionMin="860" versionMax="860" address="127.0.0.1" port="7173"/> <server id="3" name="Chocolate" versionMin="860" versionMax="860" address="127.0.0.1" port="7174"/> </servers>No campo address, você irá colocar o IP do servidor (Não testei com redirecionamento, IP fixo), e no campo port, todas as portas diferentes de 7171, ou seja vá aumentando de 1 em 1 para cada servidor/mundo.
Depois de configurado, vamos ao config.lua.
É mais simples, no config.lua de cada servidor, você vai mudar o campo:
Para cada valor que você colocou no servers.xml. Nosso login server pode ter o valor 1 por exemplo e os outros os valores 2 e 3.
Você vai mudar também:
Para todas as portas que usou no servers.xml, ou seja, 7172 para o primeiro servidor, 7173 para o segundo e assim em diante.
Em todos os outros servidores, com exceção do login server, você vai mudar:
Para:
Lembrando, com exceção do login server.
Depois é só desbloquear as portas 7171 e 7172 e, outras que você usar, abrir todos os executáveis (não esquecendo do que compilamos como login server) e correr para o abraço.
Não vou ensinar como configurar Account Manager para selecionar o mundo do personagem, pois são edições trabalhosas, talvez isso fique para outro release. Há também edições C++ que você pode fazer para poder deixar todos servidores em uma única pasta.
Abraços,
Oneshot
Editado Setembro 18 por Oneshot