Archer Network

ローディング!

0

Tutoriais


Ragnarok - Por que existe um limite de zeny por personagem


Nome: Cleber Santos

Discord: Zephi#2098

Sobre: Tecnólogo em Redes de Computadores, Técnico em Informática e Eletrônica, sempre apaixonado por tecnologias eletrônicas principalmente as que envolvem games viu no site uma opertunidade de juntar pessoas que compartilham dessa paixão ou que simplesmente desejam saber mais como funciona esse universo vasto e que nos diverte a tanto tempo.

Gravatar

Número de acessos: 5502

Publicado em 21/01/2021 por Zephi

Olá pessoal, bem vindos ao primeiro de uma série de artigos aprofundando alguns detalhes de funcionamento do Ragnarok, nesse em questão vou abordar o porque de existir um limite na capacidade de um personagem armazenar Zeny, o porque do valor limite e possíveis causas de o porque esse limite não ser ampliado diretamente no jogo.

 

Zeny é o nome da moeda corrente do jogo Ragnarok Online, com ele é possível comprar itens e serviço de NPCs e outros jogadores, bem como ser usado como arma em algumas habilidades como a Mamonita, você o adquire vendendo itens desnecessários para você, cumprindo quests ou ainda através de habilidades como Afanar, no entanto chega uma hora que o personagem fica impedido de adquirir mais Zenys, sendo o equivalente ao efeito de uma carteira cheia.

 

Esse valor limite é de 2.147.483.647 Zenys e isso acontece pois o servidor de personagens utiliza uma variável (espaço reservado em memória) de 32 bits de capacidade, não sendo possível armazenar nada que vá além desse valor (32 bits é maior valor possível em um aplicativo compilado em 32 bits como é o caso do Ragnarok), no entanto você poderia realizar o seguinte questionamento:

 

Ué?, mas 32 bits equivale a 2^32 que em decimal é 4.294.967.296, sendo assim esse deveria ser o limite máximo não?

 

Até seria, mas temos mais um fator a ser considerado nisso, existe dois tipos de variáveis para numero inteiros "Signed" e "Unsigned" algo como com sinal e sem sinal, inteiro do tipo Signed podem armazenar numeros positivos, negativos e zero, isso é possível pois eles dividem a variável na metade ficando uma parte para positivo e a outra para negativos, como descrito no exemplo abaixo:

 


Variável de 32 bits do tipo Signed

Decimal: 0

Binário: 0000 0000 0000 0000 0000 0000 0000 0000

 

Decimal: 2.147.483.647 (máximo positivo permitido)

Binário: 0111 1111 1111 1111 1111 1111 1111 1111

 

Perceba que ao somar mais um no binário o número em decimal se torna negativo e com isso se da inicio a metade negativa da variável:

 

Decimal: -1

Binário: 1000 0000 0000 0000 0000 0000 0000 0000

 

Decimal: -2.147.483.647 (máximo negativo permitido)

Binário: 1111 1111 1111 1111 1111 1111 1111 1111

 

O mesmo não ocorre nas variáveis do tipo Unsigned, pois não existe reserva para sinal negativo.


 


Variável de 32 bits do tipo Unsigned

 

Decimal: 0

Binário: 0000 0000 0000 0000 0000 0000 0000 0000

 

Decimal: 4.294.967.296 (máximo positivo permitido)

Binário: 1111 1111 1111 1111 1111 1111 1111 1111


 

 

Com isso é possível deduzir que a variável de inteiros que armazena a quantidade de Zeny no servidor de personagens é de 32 bits do tipo Signed pois a capacidade máxima de Zenys é de 2.147.483.647 ou (2^32)-1.

 

Particularmente não sei o que levou os desenvolvedores da Gravity a escolha de Signed, talvez alguma limitação do compilador que usaram na época ou reservaram o "Zeny Negativo" para alguma função desconhecida para os jogadores, de qualquer forma acredito que a migração dessa variável de Signed para Unsigned, seria a forma mais "simples" para quase dobrar capacidade de Zenys.

 

Contudo temos que considerar a situação de que juntar 2.147.483.647 Zenys em 2002 (data de lançamento na Coréia do Sul) era algo totalmente impensável, portanto não era algo que merecia tanto a atenção assim, além disso inflação causada por bots e bugs de farm e duplicagem de zenys contribuiram e muito para a sua desvalorização isso aliado ao fato que ainda existem servidores de Ragnarok operacionais em 2021 (algo que era imprevisivel de acontecer na época) formam a receita para isso se tornar um limitador cada vez mais sério.

 

Tanto foi assim que em 2020 a Warp Portal lançou um item chamado "Esfera de um bilhão de Zenys" o qual você troca a quantidade de 1.000.000.000 por 1 item, sendo possível assim o acumulo de dinheiro no inventário e não mais na variável de Zenys, servindo como uma forma de contornar esse limite, devido ao elevado tempo do bRO no ar (desde 2004), é provável que futuramente mais variáveis "deem seu limite" tornando o jogo problemático para seguir em frente sem uma atenção da desenvolvedora.

 

Um exemplo é a variável que armazena o dano causado pelo personagem, dano é algo que devido a updates (classes novas e equips novos) sempre sobe ao longo dos anos, o jogador Dante do servidor Thor do bRO por exemplo já foi testemunha dessa variável impactando no gameplay, como efeito colateral o personagem erra o golpe (miss) ao invés de contabilizar o dano, muito provávelmente por um transbordo da váriável, sendo impossível de ser processado pelo servidor de mapas, algo preocupamente pois eventualmente cada vez mais jogadores poderão ser impactados e isso pode colocar em xeque o futuro do jogo caso fique sem o devido cuidado da desenvolvedora.

 

 

Referências:

Nova moeda esfera de 1 bilhao de zenys

Comunicado sobre o limite de zenys por personagem

Definition of unsigned

C data types