Jump to content

Metin2 - Geral


Mário.
 Share

Recommended Posts

LhIkOJp.png

(Desculpa pela demora)

 

Já há algumas semanas tinha sido abordado por um membro chamado @IronPower, ele gostaria de saber detalhadamente o conceito da programação por volta do Metin2 e como acredito que existem pessoas curiosas para entrar no background, decidi criar o tópico que irá retratar tudo desde o começo.

 

Índice

1. O que são serverfiles?

1.1 Quais as melhores serverfiles?

2. O que é a source?

2.1 Qual(is) a melhor(es) source(s) disponível?

3. Qual a diferença entre versões?

3. Conclusão

 


O que são serverfiles?

Como o nome próprio indica, são ficheiros que fazem a totalidade de um servidor (server em inglês).

As primeiras serverfiles saíram em 2006 num fórum chamado mcncc.com por um rapaz chamado Rain que supostamente fez parte da equipa metin2.kr (Coreia do Sul).

A partir daí, foram e ainda são feitas milhões de cópias modificadas a gosto de cada um:

Sem-Titulo.png 

Cada pasta tem o seu propósito e o seu objetivo pode variar consoante a pessoa que o utiliza, mas em termos gerais é isto:

  • canal_1 -> Pasta que contém tudo o que é necessário para deixar o canal 1 ligado;
  • share -> Pasta que contém ficheiros que fazem a ligação para o cliente, mapas e missões (quests em inglês);
  • auth -> Pasta que contém o que é necessário para entrares no jogo;
  • canal_99 -> Pasta que contém tudo o que é necessário para os mapas secundários estarem ativos;
  • db -> Pasta que contém tudo o que é necessário para a ligação do servidor a base de dados.

 

canal_1/canal_99

Sem-Titulo751cb2b7060b5ac4.pngSem-Tituloe8510240003adb52.png

(Ignorem os 5MB e 19MB de syserr e syslog, foi tirado num cenário real)

 

Na primeira imagem a contar à esquerda, conseguimos ver 4 pastas. Elas fazem ligação para a base de dados (cores em inglês) existem por uma razão particular: Eficiência e desempenho. 

De forma a não deixar tudo concentrado num só sitio de forma existir N erros (caída, crash, X quantidade de ram a ser usada, volume acentuado de erros e avisos - syserr e syslog -, etc.), é repartido em pastas de forma a deixar o jogo em si mais leve e com melhores resultados.

"Dá-me um exemplo disso!"

Por exemplo, um dos meus cores é dedicado especialmente as cidades, ou seja, se por algum motivo esse core caísse e eu estivesse no Mapa do Deserto, não seria desconectado nem levaria com nenhum tipo de latência* enquanto que as pessoas que estavam dentro das cidades teriam sofrido com isso.

* Varia muito do problema que possas ter.

"Como é que isso é possível?"

Tal como tinha dito, elas fazem ligação para a base de dados através do CONFIG:

-- cidades
PORT: 19001
P2P_PORT: 14001

-- primeiro_nucleo
PORT: 20001
P2P_PORT: 10051

-- base de dados
DB_PORT: 13943
  • PORT -> Ligação entre o servidor e o cliente;
  • P2P_PORT -> Segunda ligação necessária para eventos p2p;
  • DB_PORT -> Ligação entre o servidor e a base de dados.

A core das cidades e do primeiro_nucleo podem e devem de ter as portas diferentes desde que a porta da base de dados seja igual.

 

share

Sem-Titulo59e5bf5ca8f6bc15.png

A pasta share não tem muito que dizer, têm 3 pastas:

  • package -> todos os ficheiros encriptados que fazem a comunicação para o cliente (.dat);
  • data -> Ficheiros** que fazem a comunicação para o cliente;
  • locale -> mapas, missões e ficheiros necessários para o servidor ser iniciado.

** Não são todos, também é forma de diferenciar dois ficheiros com o mesmo nome para um objetivo, tal como exemplo as dungeons que são postas na pasta devido ao regen.txt (e para melhor organização).

 

auth

O auth tem a mesma estrutura que o canal_1 no entanto diferencia-se pelo facto de ser usado apenas para a ligação ao entrarem no servidor (login em inglês).

 

db

Sem-Titulo0ed77b6fc1300a77.png

A pasta db faz a ligação para a base de dados através do ficheiro conf.txt:

SQL_ACCOUNT = "123.456.789 account lsm2 tlthings 0" 
SQL_PLAYER = "123.456.789 player lsm2 tlthings 0"
SQL_COMMON = "123.456.789 common lsm2 tlthings 0"
SQL_HOTBACKUP = "123.456.789 homepage lsm2 tlthings 0"
  • SQL_ACCOUNT -> Ligação para a tabela account onde guarda-se as contas do servidor;
  • SQL_PLAYER -> Ligação para a tabela player onde toda a informação referentes ao jogador individual e/ou coletivo estão;
  • SQL_COMMON -> Ligação para a tabela common que é conhecido especialmente para meter um jogador a GM no entanto só é de importância a tabela locale e locale_bug para o servidor;
  • SQL_HOTBACKUP -> Ligação para a tabela homepage que é usada para websites. Naturalmente é pouca usada mas há quem utilize.

 

"O que é e qual a importância do item_proto/mob_proto?"

O item_proto e o mob_proto é necessário para o cliente saber a qual o ID de um item/monstro/NPC corresponde ao do servidor, para alterarem o nível permitido para ser usado, o dano que um monstro dá, o yang ao venderem um item, meterem um monstro agressivo ou não, entre outros tipos de edições.

Antes de finais de 2013, tudo isto era feito estritamente num cliente que fazia a ligação entre a base de dados e o servidor (navicat como exemplo) através de querys.

Agora terão a possibilidade de escolherem entre isso e editar em pleno texto, tal como podem ver na segunda imagem acima a contar de baixo, que utilizo a última opção.


Quais as melhores serverfiles?

Isto é algo debatido até ao dia de hoje, várias pessoas dizem que X é o melhor e outras dizem que o Y mas na realidade depende bastante do tipo de servidor que queiras ter.

És fã de newschool? Então X vai ser o melhor

És fã de oldschool? Y é a opção ideal

 

Por isso é algo que só varia de acordo com os teus gostos, tira 1 semana e vai navegando pelos fóruns que tens disponível até encontrares um que siga o teu padrão.

Se não encontrares, começa por ti mesmo do fim. Vais ver que não há nada mais satisfatório que acabares e veres o teu trabalho a ser elogiado e jogado por outros.


O que é a source?

Citar

Como de certeza não irás ler o que mandaram (ou se leres, irás continuar com a mesma duvida), eu explico (falando no cenário do Metin2).

 

A source do Metin2 representa os códigos que fazem o jogo funcionar, desde acções simples (como um movimento de uma personagem) até uma acção complexa (integração de uma personagem em cima de um cavalo, por exemplo).

Todos esses códigos são compilados e transformados em dois ficheiros chamados 'game' e 'db', que podem ser encontrados no winscp/filezilla.

 

Existem várias sources públicas, pois cada um representa uma diferenciação de uma outra.

A mais "usada" tem como o nome de mainline_released.

 

Também saliento que todos os códigos são feitos por cplusplus, por isso se não tiveres conhecimento sobre a linguagem (como eu), não vale a pena aventurares.

Isto foi dito por mim em 2016, no entanto gostaria apenas de acrescentar mais umas coisas:

  • Existe a source do game/db (ficheiro game/db) e a do binário (metin2client.exe);
  • É necessário terem o gcc instalado na vossa máquina (pkg install gmake | pkg install gcc | pkg install gcc49***) para compilarem a source do/a game/db;
  • É necessário uma IDLE (Visual Studio 2015 como exemplo) para compilarem a source do binário.

A source foi leaked finais de 2013 a inícios de 2014 por um rapaz chamado nico_w? (alguém que me corriga se estiver mal) que pertencia a equipa do metin2.sg - que neste momento é considerado um privado -. Desde lá foram feitas milhões de modificações, desde criações de novos sistemas a correções de vários erros internos.


Qual(is) a melhor(es) source(s) disponível?

Tal como referido nas serverfiles, também vai muito ao que tu queres no entanto eu recomendo sempre a começarem nas oficiais e irem modificando a partir de lá porque nunca se sabe que tipo de backdoor ou timebomb a source (e as files também) possam ter.


Qual a diferença entre versões?

Em termos oficiais, as versões (do game) que mais são conhecidas e comuns são:

  • 2089M -> É a versão pelo qual se deu o leak que o Rain fez;
  • r34k ou 34083 -> Versão pré-masterizada e melhorada do 2089M;
  • 40250 -> Versão "final" pelo qual se deu o leak da source****.

 

Existem muitas mais versões que foram feitas (404, 2019, 27969, etc.) mas não tiveram tanto nome como as que citei.

"Porquê que existem versões?"

As versões (para o game e o binário) existem de forma a dar a conhecer o trabalho que foi feito comparando com o do passado.

Um exemplo disso é o sistema de cintos, na versão 2089M não há esse sistema enquanto que no r34k está implementado.


Conclusão

O objetivo deste tópico é ajudar no enriquecimento do conhecimento do metin2, não de ajudar a decidir que serverfiles ou que source utilizar.

Levem as coisas com calma, demorem o tempo que precisarem a chegar aos vossos objetivos, de nada compensa quererem abrir um servidor sem conhecimento das coisas.

Se realmente querem seguir isto, aprendam sobre c++, python e lua. Posso dar-vos o meu exemplo, em 2016 sabia rigorosamente nada de c++ e agora consigo entender tudo o que está na source.

 

Que tenha ajudado alguém com isto, abraços!

Link to comment
Share on other sites

  • 4 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...