Portal SAMP
[Open.MP] Experiência de conversão - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: Comunidade (https://portalsamp.com/forumdisplay.php?fid=15)
+--- Fórum: Off topic (https://portalsamp.com/forumdisplay.php?fid=19)
+--- Tópico: [Open.MP] Experiência de conversão (/showthread.php?tid=3434)

Páginas: 1 2


[Open.MP] Experiência de conversão - Dr Editor - 16/03/2023

Sobre:

Com a vinda do OpenMP e a título de minha própria curiosidade e experiência, acabei realizando a 'conversão' de um gamemode inteiro SA:MP para OpenMP e é sobre isso que irei fazer meu relato.
Eu possuo um gamemode que venho desenvolvendo há um bom tempo e que no momento está pegando poeira. Estava aguardando o encerramento da versão beta para fazer a conversão do gamemode para OpenMP.


As mudanças:

Sim, houve inúmeras mudanças.
Se você pensa em baixar o servidor do OpenMP e jogar em cima do seu servidor SA:MP para dar aquele upgrade, esqueça! Terá bastante trabalho e será realmente cansativo.
Se alguém disser o contrário então não estamos falando de um grande script.

Foram correções, parâmetros renomeados, funções adicionadas, funções que serão removidas (provavelmente no próximo release), novas versões de plugins... 
Foi adicionado também novas tags para tipificar enumeradores e parâmetro e isso, se mantido, inviabilizará a conversão de um script muito grande caso mantenha os 'moldes' do OpenMP.

Sinceramente, essas tags vieram como um coice pra quem não estava acostumado a trabalhar com elas visto que as únicas tags do SA:MP eram para tipos de dados.
(Não estou mistificando o uso delas, apenas afirmando que o SA:MP não trabalhava com elas da mesma forma que o OpenMP)


Começando a conversão:

Etapa 1: Instalação

O início da conversão é como vocês já imaginam. Baixei o servidor, joguei a livraria na pasta do compilador, ajustei o nome da include no script e realizei a primeira compilação.
Confesso que nunca tinha visto tantos erros e avisos na tela. Os erros se limitam aos 26 por compilação, porém os avisos... Bom, foram em torno de 900!!
Alí já bateu o desânimo, porém comecei estudar as includes e entender o motivo dos avisos para ter certeza se iria continuar ou parar.


Etapa 2: Estudando os problemas

Ao comprender melhor o motivo dessas dezenas de erros percebi que a maior parte deles era em função de callbacks com hook, pois era o erro clássico de que a função era diferente da nativa por conta das novas e incríveis tags adicionadas e outras por conta de parâmetros renomeados.
Os avisos eram apenas em função das tags mesmo.


Etapa 3: Estudando a viabilidade

Nas primeiras impressões não senti que ajustar as novas tags no servidor seria algo impossível, mas não achei que seria o melhor caminho.
Estamos falando de mais de 1000 ajustes MANUAIS que não seria possível através de uma ferramenta externa sem o risco de comprometer ainda mais o script.


Etapa 4: Em busca da solução

Queria converter sem perder tanto tempo, mas ao mesmo tempo sem comprometer todo o gamemode.

Então resolvi não aderir aos moldes do OpenMP e manter a estrutura mais próxima do SA:MP, ou seja, eliminar as tag!
No braço de fato eu demoraria um tempo, mas bem menos que realizar as modificações no gamemode visto que o projeto foi feito em módulos.


Etapa 5: Mãos a obra

Pensando mais a frente e me colocando num cenário em que venho a perder as includes modificadas manualmente ou até mesmo para futuros updates onde é adicionado novas funções, desenvolvi um programa para remover as tags personalizadas do OpenMP e foi um sucesso.


Etapa 5: Ajustes finais

Como nem tudo são flores, apesar do programa fazer todo o trabalho pesado ainda resta fazer algumas alterações no código.
Algumas funções que originalmente não possuíam um valor booleano, mas que logicamente deveria ter e isso foi implementado no OpenMP eu atualizei.


Conclusão:

Foram algumas horas perdidas ao longo do dia, mas no fim valeu a pena e o servidor iniciou sem qualquer problema.
Não é um processo rápido, mas se você tem um projeto sólido e que vale a pena esse tempo, então espero que meu relato sobre como foi minha experiência realizando esse procedimento possa te dar um norte.
Reforço que tudo o que descrevi foi a minha forma de como lidei com a atualização. Você pode optar por qualquer outra que achar viável.


Dica e reflexão:

Não tem muita esperiência com programação ou mesmo com Pawn? Não perca seu tempo!
Não sabe o que são tags, como implementar e quais são relevantes ou não? Não perca seu tempo!
Não compreende muito bem os erros e avisos do compilador? Não perca seu tempo!

Caso ainda assim queira se arriscar, faça um backup e realize o procedimento.
Não é burrice tentar algo novo e as perguntas acima não devem ser um fator desmotivador. Apenas se certifique de investir seu tempo em algo que valha a pena.


Sua opinião:

Já tentou ou realizou com sucesso a conversão de algum script para OpenMP? Conte como foi a experiência.


RE: [Open.MP] Experiência de conversão - Eddye - 14/05/2023

Minha experiência:


Eu comecei hoje um projeto do 0, estava utilizando o samp padrão, mas eu vi um post sobre o openMP e seus beneficios e vi também que eles estão focados e dispostos a colaborar com a comunidade no geral, então optei por converter meu gamemode para ele.



(Meu GM só possui um sistema de login com o MySQL R41-4 e 3 comandos de admin)


quando coloquei os arquivos necessários para o funcionamento do OpenMP foi instantaneo os erros do compilador, foi incrivelmente rápido, para comparar o SAMP com o OpenMP podemos dizer que quando o bom e velho pawno compila, ele é um HD de 250GB com seus 5000RPM e o OpenMP é um SSD NVME 4.0 com seus 5GBs+ de velocidade.



Pontos Positivos:

Meu GM está totalmente modularizado, com isso eu estava tendo uns problemas de #include "../../pasta dos modulos/arquivo.pwn" estava complicado otimizar o código, fiz uma organização meio porca com o SAMP e rodou bem, quando migrei para o OpenMP ele automaticamente broncou com meus "imports" dos arquivos .pwn, quando removi eles e deixei apenas no main.pwn ele incrivelmente compilou tudo e eu consegui otimizar de forma mais organizada e bonita visualmente (identação), isso me aliviou de uma forma que vocês não tem idéia.

Pontos Negativos:

Por enquanto não me aprofundei no openMP mas creio que até semana que vem tenha passado por alguns problemas ou algo que me atrapalhe e venho compartilhar com vocês;



RE: [Open.MP] Experiência de conversão - xbruno1000x - 15/05/2023

Eu tinha um gamemode em que criava algumas profissões, anti-cheaters e outras coisas e fazia uma espécie de compilado, apenas para deixar preparado para importa-los para qualquer lugar facilmente e ter um ambiente de testes mais próximo ao de um servidor real. A minha maior dificuldade ao tentar migrar, foi na verdade a ausência de alguns plugins. Existem plugins extremamente úteis, como o FCNPC que não tem versão para o Open-MP. O próprio SampVoice e Pawn.CMD, não tinham versões no ínicio. Então, ao invés de abrir um leque de opções interessantes de programar, foi um retrocesso para aquele gamemode, visto que ele perderia diversas funções. Hoje já lançaram a portabilidade de alguns desses plugins e acredito que em breve teremos todos a disposição. Acredito que se for possível iniciar o projeto desde o inicio no Open-MP, seria muito bom. Agora se você já tem um projeto e deseja migrar, requer uma analise para saber quais recursos sofreriam downgrade e tal...


RE: [Open.MP] Experiência de conversão - DiegoLBC1 - 13/08/2023

Muito obrigado à todos pelos relatos aqui apresentados. Li todos os repositorios relacionados, e confesso que ainda estava confuso, eu precisava realmente desse "resumo" pra entender melhor o que me espera futuramente. Eu já estava a ponto de criar um topico perguntando "se vale a pena" fazer o porte para o OpenMP no momento, ou se espero mais um pouco.

Minha GM tem como base o PPC_Trucking, creio que vcs conheçam, é a base da maioria (se não todos) os servidores de caminhoneiro. Como é de se imaginar, tal qual o original, a GM é toda modular, com varias includes, por exemplo, chamadas da GameModeInit, missões separadas por profissões, comandos e etc.

Como cada atualização do servidor eu realizo um backup, estou pensando em fazer uma "copia" da GM atual, e ir trabalhando nela aos poucos, portando cada arquivo, atualizando o que for necessário, até a conclusão do porte.

Aproveito o ensejo para fazer um "pedido", caso possivel. Peço, por gentileza, que me indiquem as ferramentas para auxilio na conversão, para que eu possa pesquisar por aqui, ou me indiquem os topicos relacionados.

"Não tem muita esperiência com programação ou mesmo com Pawn?" Malemá o suficiente pra editar/corrigir algumas coisas.
Não sabe o que são tags, como implementar e quais são relevantes ou não?" Não tenho certeza, mas procurarei aprender.
"Não compreende muito bem os erros e avisos do compilador?" Isso aprendi na marra, como falei acima, não sou programador, mas aprendi a me virar.

Enfim, tenho tempo e força de vontade, qualquer direcionamento será bem vindo de qualquer forma.

Grande abraço a todos.


RE: [Open.MP] Experiência de conversão - White_Blue - 13/08/2023

(13/08/2023 20:10)DiegoLBC1 Escreveu: Muito obrigado à todos pelos relatos aqui apresentados. Li todos os repositorios relacionados, e confesso que ainda estava confuso, eu precisava realmente desse "resumo" pra entender melhor o que me espera futuramente. Eu já estava a ponto de criar um topico perguntando "se vale a pena" fazer o porte para o OpenMP no momento, ou se espero mais um pouco.

Minha GM tem como base o PPC_Trucking, creio que vcs conheçam, é a base da maioria (se não todos) os servidores de caminhoneiro. Como é de se imaginar, tal qual o original, a GM é toda modular, com varias includes, por exemplo, chamadas da GameModeInit, missões separadas por profissões, comandos e etc.

Como cada atualização do servidor eu realizo um backup, estou pensando em fazer uma "copia" da GM atual, e ir trabalhando nela aos poucos, portando cada arquivo, atualizando o que for necessário, até a conclusão do porte.

Aproveito o ensejo para fazer um "pedido", caso possivel. Peço, por gentileza, que me indiquem as ferramentas para auxilio na conversão, para que eu possa pesquisar por aqui, ou me indiquem os topicos  relacionados. 

"Não tem muita esperiência com programação ou mesmo com Pawn?" Malemá o suficiente pra editar/corrigir algumas coisas.
Não sabe o que são tags, como implementar e quais são relevantes ou não?" Não tenho certeza, mas procurarei aprender.
"Não compreende muito bem os erros e avisos do compilador?" Isso aprendi na marra, como falei acima, não sou programador, mas aprendi a me virar.

Enfim, tenho tempo e força de vontade, qualquer direcionamento será bem vindo de qualquer forma.

Grande abraço a todos.



Na minha opinião, atualmente não parece ser vantajoso migrar para o Open.MP, considerando que o projeto ainda está em estágios iniciais. No momento, temos apenas o servidor que roda em compatibilidade com o cliente do SA-MP.

Acredito que valerá a pena considerar a migração para o Open.MP somente após o lançamento do cliente, uma vez que as funcionalidades prometidas são realmente promissoras para nós, desenvolvedores, e especialmente para os proprietários de servidores.
As várias vantagens incluem suporte nativo e um cliente oficial para Android, além da compatibilidade com o SA-MP(pelo menos temporariamente, para permitir que os desenvolvedores migrem seus projetos para o Open.MP). Além disso, o projeto permitirá a importação de texturas e animações personalizadas(assim como o SAMP 0.3DL faz). Dessa vez, acredito que também será possível importar texturas e animações personalizadas para a versão Android do Open.MP, algo que não é permitido no SA-MP mobile devido à sua base em código vazado de uma versão anterior.

Com um cliente oficial para Android, espera-se resolver diversos problemas do SA-MP mobile, como crashes frequentes, dessincronização com jogadores de outras plataformas e outros bugs. Além disso, o Open.MP, ao contrário do SA-MP descontinuado por Kalcor, receberá atualizações regulares, o que deverá abordar muitos dos problemas do SA-MP, na minha opinião.


Uma vantagem adicional é que o Open.MP será completamente open-source, permitindo que a comunidade corrija falhas e bugs, e que os desenvolvedores criem suas próprias versões personalizadas do Open.MP. Isso abrirá a possibilidade para servidores implementarem recursos que eram complicados com o SA-MP, como sistemas anti-cheat do lado do cliente.


De qualquer forma, estou ansioso pela próxima atualização do Open.MP e espero sinceramente que o projeto não seja abandonado. Recentemente, muitos desenvolvedores do Open.MP saíram, o que gerou rumores sobre um possível cancelamento ou pausa no projeto(conforme mencionei neste tópico que criei sobre o assunto).


RE: [Open.MP] Experiência de conversão - DiegoLBC1 - 13/08/2023

Sim, White, tbm estou ansioso pelas proximas atualizações, por isso queria adiantar alguns "processos" e já trabalhar em cima do porte. De qualquer forma não farei isso por agora, preciso estudar melhor isso tudo, pois se pessoas experientes já enfrentaram problemas, imagine eu, um mero "fuçador".

PS: li diversos topicos, inclusive esse seu que vc indicou. Eu acredito que estão à passos lentos "polindo" algumas coisas que faltam, visto que a parte mais "grosseira" (apenas força de expressão) já está rodando e se mostrou compativel com as 3 principais vertentes (Mobile, PC e Definitive Edition), acredito que não irão abandonar justo agora que falta "tão pouco".


RE: [Open.MP] Experiência de conversão - DiegoLBC1 - 15/08/2023

(16/03/2023 17:13)Dr Editor Escreveu: Etapa 1: Instalação

O início da conversão é como vocês já imaginam. Baixei o servidor, joguei a livraria na pasta do compilador, ajustei o nome da include no script e realizei a primeira compilação.
Confesso que nunca tinha visto tantos erros e avisos na tela. Os erros se limitam aos 26 por compilação, porém os avisos... Bom, foram em torno de 900!!
Alí já bateu o desânimo, porém comecei estudar as includes e entender o motivo dos avisos para ter certeza se iria continuar ou parar.


Boa noite à todos.

Tô procurando uma dor de cabeça pra chamar de minha. Poderiam me ajudar? hahahaha

Se não for pedir muito, poderiam me mostrar como iniciar essa etapa do modo correto? Baixei o servidor, compilei até arquivo de exemplo a nivel de teste, mas ainda estou em duvida quanto a "estrutura" de pastas e etc. Sei que ainda é cedo pra isso, mas gostaria de ao menos "iniciar" o processo de conversão de uma GM simples que tenho aqui, pra ir me habituando. O server samp ao menos já me mostrava uma "estrutura pronta", até com algumas includes e gamemodes de exemplo, era mais "intuitivo" nesse ponto, mas no Open ainda estou perdido, não sei se necessito das pastas "include" e "gamemode" por exemplo.

PS 1 : Iniciei no Samp da mesma forma, primeiro como Player, depois resolvi aprender mais sobre a codificação. Por fim não virei um scripter ao ponto de criar algo do zero, mas aprendi muitas coisas, o suficiente pra "me virar" de acordo com os erros que aparecem no compilador.

PS 2: Apenas a nivel de exemplo, não sou scripter, mas consegui adicionar o Texture Studio à minha GM. Após muitas tentativas e erros, versões de plugins divergindo de includes e etc, agora tenho uma versão da minha GM que posso editar "in loco" com o Texture Studio, em resumo, se eu quiser jogar, a GM tá ali, se eu quiser editar, os comandos pra isso tbm estão todos ali.


RE: [Open.MP] Experiência de conversão - xbruno1000x - 15/08/2023

O Open-MP é compatível com o SA-MP. É só jogar os arquivos do Open-MP na pasta do SA-MP e já será o primeiro passo da conversão. Um detalhe interessante é que o Open-MP vem com uma pasta chamada components, que é novidade. Dentro dessa pasta serão colocados os plugins de Open-MP. Os plugins normais do SA-MP permanecem na pasta plugins normalmente.


RE: [Open.MP] Experiência de conversão - DiegoLBC1 - 15/08/2023

(15/08/2023 21:05)xbruno1000x Escreveu: Um detalhe interessante é que o Open-MP vem com uma pasta chamada components, que é novidade. Dentro dessa pasta serão colocados os plugins de Open-MP. Os plugins normais do SA-MP permanecem na pasta plugins normalmente.

Muito obrigado, Bruno.

Por isso é bom perguntar, essa questão da pasta Components eu nem fazia ideia. Vou tentar aqui, qualquer coisa peço ajuda de novo, e vou fazendo pequenos "relatórios" sobre como as coisas estão indo (pelo bem ou pelo mal).

Agradeço novamente.


RE: [Open.MP] Experiência de conversão - DiegoLBC1 - 16/08/2023

Aff, desisto (por enquanto).

Mesmo usando o tradutor do google ainda estou confuso com muitas coisas, muita coisa via linhas de comando, instalei o sampctl e etc, mas ainda não entendi como executar linhas como "./upgrade --scans const ../qawno/include", entre outras coisas. Vou estudar mais, mas tentar mudar um pouco o foco por hora, to meio saturado e não to pensando direito.