RakStar — O Maior framework para SAMP

alph4b3th
5 min readAug 10, 2023

Por muitos anos o desenvolvimento de servidores SA-MP era restrito em um ambiente de desenvolvimento limitado, difícil e lento: a compilação era extremamente demorada, o código era desorganizado, e utilizava-se uma linguagem de script estruturada ultrapassada chamada Pawn.

O péssimo workstation do SAMP:

O desenvolvimento de servidores SAMP não era uma tarefa fácil, a linguagem utilizada era extremamente restrita e utilizava-se programação estruturada — isso não é muito elegante para os mundos de hoje — sem contar os grandes problemas de desempenho, Pawn + binário do SAMP não tinha suporte para threads! Sim, normalmente linguagens de scripts não tem controle sobre baixo nível e é trabalho do software main — este que efetua a integração com os scripts externos — e vamos ser realistas, desde quando Kalcor é um bom programador? SA-MP não foi feito para ser performático! código burro, desempenho indesejável, isso é uma lei da computação que é verdadeira em todos os cenários dentro de engenharia de software: Se você não construir um código otimizado, este fará chamadas desnecessárias e lentas demais. É preciso entender o problema para que possa resolve-lo com eficiência; mas parece que o Kalcor não estava preocupado na época com isso, afinal de contas criar um malware para manipular memória heap/stack de um jogo mais velho que seu avô não é algo simples de se fazer, não podemos culpa-lo completamente já que graças a seu trabalho, eu estou aqui.

O que houve com o Kalcor?

Boa pergunta, na verdade sabemos pouco sobre isso mas podemos levantar algumas hipóteses:

  • Ele cansou do projeto: Hackear um jogo e manter a funcionalidade minimamente estável é uma tarefa quase impossível por vários desafios que serão deixados de lado neste artigo;
  • Ganhou o suficiente: SA-MP foi uma febre quase mundial, todos queriam jogar "O GTA ONLINE" e muitos entusiastas apoiaram o projeto financeiramente. Quando Kalcor obteve alguma quantia suficiente, decidiu encerrar o desenvolvimento do projeto para focar em projetos pessoais, ou simplesmente aproveitar sua quantia;
  • Surgimento do MTA: Sim, não precisamos discutir porque sabemos a verdade: MTA é incomparavelmente superior ao SAMP fazendo exatamente a mesma coisa: Injeção não autorizada de memória(hacking de memória).

Não sabemos o real motivo, infelizmente em um belo dia todos nós recebemos de surpresa o anunciamento de Kalcor: O DESENVOLVIMENTO SAMP FOI ENCERRADO; sem mais versões, atualizações ou quaisquer modificações oficiais do mantedor do projeto.

A criação do RakStar

Dito anteriormente as inúmeras desvantagens e desafios a serem enfrentados por aqueles que decidirem se aventurar aos longos caminhos do desenvolvimento SAMP, nós decidimos criar uma solução para todos os problemas e desafios enfrentados arduamente.

Inicialmente, o framework foi criado para um projeto interno do GoSeventh mas percebemos o que estávamos criando e o grande potencial para a comunidade SAMP e decidimos abrir o projeto para o público, tornando-se open-source. Ainda não há uma versão estável do projeto, no entanto você pode acompanhar o desenvolvimento: repositório github

O que é RakStar?

RakStar é um framework open-source para a linguagem de programação Go — Você pode obter mais detalhes aqui — feito para e por aqueles que desejam um ambiente agradável, produtivo e elegante para o desenvolvimento de servidores performáticos e modernos.

Quais problemas são resolvidos? — Utilização do RakStar

Desempenho extremo: Com a utilização do projeto o desenvolvimento se tornará mais produtivo e intuitivo, adeus a compilações de software lentas e boas vindas ao mundo moderno! Chega de lentidões para processar comandos: Clássico problema do SAMP, uma lentidão absurda para processar míseras solicitações de comandos por segundo; Com a utilização da linguagem Go, todos os processamentos são efetuados simultaneamente — Isso significa que qualquer ação interna pode ser executada, enquanto algumas outras ações são processadas ao mesmo tempo.

Produtividade incrível: Chega de perder tempo com complicações, criações de códigos complexos e difíceis de entender, manipulações complicadas de memória, péssima organização de código; RakStar surgiu para resolver tudo isso para você, com apenas algumas linhas de código é possível construir sistemas avançados, rápidos e elegantes.

Exemplo de criação de um comando relativamente simples:
comparação entre pawn vs go

Pawn: O grande inimigo da paciência

stock valid_text(text[]) {
static Reg:text_reg;

if (!text_reg)
{
text_reg = Regex_New("[A-Z][a-z]+_[A-Z][a-z]+");
}

return Regex_Check(text, text_reg);
}

cmd:messagen(playerID, params[])
{
static Regex:reg = Regex_New("[A-Z][a-z]+_[A-Z][a-z]+")

new targetID, message;

if (sscanf(params, "is", num1, num2))
{
SendClientMessage(playeriplayerIDd, color, "[SERVIDOR] Parametros inválidos.");
return;
}

if (playerID == targetID)
{
SendClientMessage(playeriplayerIDd, color, "[SERVIDOR] Você não pode enviar mensagem para sí próprio.");
return;
}

if (!IsPlayerConnected(targetID))
{
SendClientMessage(playeriplayerIDd, color, "[SERVIDOR] O jogador está desconectado.");
return;
}

if (!valid_text(message))
{
SendClientMessage(playeriplayerIDd, color, "[SERVIDOR] Mensagem inválida.");
return;
}

SendClientMessage(targetID, -1, message);
}
alias:help("pm")

Go: ❤ O melhor amigo do desenvolvedor ❤

command.
Builder().
Command("mensagem").
Alias("pm").
Alias("privatemsg").
Alias("direct").
Handler(func(context *command.CommandContext) {
targetID := context.ArgHandler.NextInt()
message := context.ArgHandler.NextString()

chat.
Builder().
Message(message).
Color(common.ColorSTR).
Tag("servidor").
PlayerID(targetID).
Send()
}).
Conditionals().
Index(0).
TypePlayer().
MustConnected().
MustDontSelf().
Index(1).
TypeText().
MustCompile("[A-Z][a-z]+_[A-Z][a-z]+").
EndConditionals().
Create()

Quando usar o RakStar? — Por quê?

Sempre que achar o desenvolvimento samp cansativo, estressante, frustante e nem um pouco elegante. O RakStar tem o compromisso de entregar ferramentas poderosas para alta produtividade e desempenho em tempo de execução de forma intuitiva — Não é necessário ler a documentação para começar um projeto, basta conhecer um pouco sobre fundamentos SAMP e Go para começar a por a mão na massa! — não há limites, lembre-se que somos GoSeventh e sua criatividade sempre pode ser escrita em RakStar.

Conclusão:

Ainda é cedo para utilizar o framework em linha de produção, ainda há muito pela frente e o desenvolvimento é contínuo e não para! Esperamos que nosso projeto incrível possa ter motivado de alguma forma o desenvolvimento de maneira elegante, intuitiva e divertida. Agora os desenvolvedores podem estar confortáveis enquanto criam servidores e inspiram mais desenvolvedores a fazer o mesmo. Muitos recursos estão para chegar na versão latest e nos comprometemos em entregar a melhor experiência possível para a comunidade de forma elegante e produtiva — afinal de contas, somos GoSeventh!

Se você quiser contribuir com o projeto, visite nosso repositório github.com/goseventh/rakstar ou contribua em nosso patreon: patreon.com/RakStar — Agradecemos especialmente a @alextwothousand @AliLogic @AmyrAhmad por contribuírem intensamente para nossa comunidade SAMP com suas tecnologias incríveis!

Atenciosamente,

Criador; Mantedor principal e Líder do RakStar
@alph4b3th

Co-Criador do RakStar
@Real-DavidWilson

--

--