[Off] Novos experimentos
#1

Olб galera, hб algum tempo atrбs eu vi o video do filterscript do NaS, desenvolvido com base no routeconnector plugin (pathfinding) do Gamer_Z e pensei comigo como seria desenvolver um sistema assim, entгo entrei em contato com o NaS, fiz uma sйrie de perguntas a ele, e como um cara legal, ele se prontificou a sanar todas as minhas dъvidas a respeito disso...

O vнdeo deste sistema й bem interessante, muita gente sonha em ter um sistema desse no prуprio servidor, mas apуs correr atrбs de algumas informaзхes acabei por descobrir que este sistema cria um bandwidth (largura de banda) enorme com a quantidade de players online, e descobri tambйm que o NaS nгo fez o release do sistema pois na йpoca nгo existiam muitas ferramentas de suporte а gangzones (como existem hoje algumas includes especнficas e atй o prуprio plugin YSF).

Entгo, depois de um tempo, parei pra perceber que a parte geomйtrica da matemбtica era um dos meus pontos fracos em relaзгo a conhecimento, observei a quantidade de ferramentas disponнveis que temos hoje comparadas com aquela йpoca, parei pra pensar na quantidade de coisas que vou enfrentar pela frente na universidade e pensei comigo, por que nгo comeзar a desafiar a mim mesmo a partir de agora?

Assim comecei a estudar sobre pathfinding e desenvolver o sistema, e estб na fase inicial ainda, mas estou trabalhando intensamente nele para poder chegar perto do GPS do GTA V. Nгo serб a mesma qualidade obviamente, tambйm nгo sei se farei release disto, mas queria que vocкs me dessem opiniхes e ideias para acrescentar/remover deste sistema, e gostaria que vocкs tambйm parassem pra pensar no que falta pra vocкs conseguirem melhorar nos seus conhecimentos pessoais.

Aqui estб o vнdeo demo sobre o inicio do desenvolvimento do sistema:


Gostaria de ressaltar que jб pensei nos obstбculos antes de comeзar a desenvolver o sistema, para o controle da largura de banda e controle do nъmero de gangzones (mesmo usando YSF e desenvolvendo meu prуprio mйtodo de stream) estou desenvolvendo um algorнtimo geomйtrico que estende o tamanho da gangzone atravйs da obtenзгo do вngulo entre nodes seguintes a serem traзados... Gostaria de ressaltar tambйm que ainda nгo hб recalculo de rota no sistema, estarei fazendo em breve. Os nodes usados na Rectline (linha reta) serгo armazenados em breve numa array para serem recalculados futuramente. Gostaria de saber o que acham deste sistema, e tambйm do que andam fazendo ultimamente... Postem ai seus projetos pessoais...
Reply
#2

Quando jogador sair do trajeto seria legal se mostrasse um novo com base na posiзгo atual dele :v
Reply
#3

Parabйns pelo modo de pensar Nominal. Vejo muitos aqui com mesmo problema, e devo dizer que as vezes atй me encaixo. Sempre tem algo que lhe desafia, e vocк deixa pra depois.

Atualmente estou a estudar Dll Inject, visando um futuro projeto a ser desenvolvido com o Luigi. Й uma бrea fascinante que sempre tive curiosidade, mas resolvi me organizar, e agora й a hora certa pra reaprender algumas coisas e fixar outras.

Continue assim, e estou no aguardo de novas atualizaзхes nesse algoritmo, abraзos.
Reply
#4

Quote:
Originally Posted by DanDRT
Посмотреть сообщение
Quando jogador sair do trajeto seria legal se mostrasse um novo com base na posiзгo atual dele :v
Й o recбlculo de rota, implementarei isso no script em breve mas por enquanto estou focando em optimizar o nъmero de gangzones atravйs do Rectiline script, estou desenvolvendo umas funзхes pra isso, em breve vou adcionar a remoзгo de trajeto percorrido e recalculo de rota...

Quote:
Originally Posted by Dolby
Посмотреть сообщение
Parabйns pelo modo de pensar Nominal. Vejo muitos aqui com mesmo problema, e devo dizer que as vezes atй me encaixo. Sempre tem algo que lhe desafia, e vocк deixa pra depois.

Atualmente estou a estudar Dll Inject, visando um futuro projeto a ser desenvolvido com o Luigi. Й uma бrea fascinante que sempre tive curiosidade, mas resolvi me organizar, e agora й a hora certa pra reaprender algumas coisas e fixar outras.

Continue assim, e estou no aguardo de novas atualizaзхes nesse algoritmo, abraзos.
Exatamente Dolby, й este feeling que quero compartilhar com as pessoas, descobrir novos ares, enfrentar o desconhecido e expandir o conhecimento, torзo por vocк e pelo William tambйm, й a hora certa pra aprender, reaprender, fixar e encararmos novos desafios, abraзo Gustavo
Reply
#5

Super apoio essa ideia, em primeiro lugar pelo que ela vai render para vocк e segundo pela motivaзгo que esse tуpico pode gerar para as pessoas que esperam por isso.

Como vocк nгo falou muito sobre a parte tйcnica do seu sistema, nгo consegui sacar a jogada que vocк estб usando para desenhar esses pontinhos, vocк poderia falar mais sobre isso?
Reply
#6

Gostei, parece interessante, bom trabalho !
Reply
#7

Уtimo! Espero que vocк consiga concluir (:
Bem interessante essa sua ideia. Boa sorte
Reply
#8

Nossa, eu tava pensando em fazer esse sistema para o meu RPG a uns dias atrбs, mas nem sabia o que usar para fazer o trajeto no radar. Realmente, essa ideia de criar as gangzones й muito interessante. Bem viбvel na verdade, vou dar uma estudada nesse plugin e vou tentar fazer um sistema para mim.
Reply
#9

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Super apoio essa ideia, em primeiro lugar pelo que ela vai render para vocк e segundo pela motivaзгo que esse tуpico pode gerar para as pessoas que esperam por isso.

Como vocк nгo falou muito sobre a parte tйcnica do seu sistema, nгo consegui sacar a jogada que vocк estб usando para desenhar esses pontinhos, vocк poderia falar mais sobre isso?
Obrigado mano O sistema basicamente pega coordenadas entre a rota gerada pelo plugin (pathfinder) e faz um cбlculo mйdio matemбtico, ou seja, ele calcula a distвncia total entre os nodes do pathfinding (GetDistanceBetweenPoints), e obtem o nъmero total de pontos usando o arredondamento entre a distвncia total entre os nodes dividido pela distвncia padrгo (20 metros), fica mais ou menos assim:

new Float: total_de_pontos = DistanciaTotal/20;

E entгo й feito um loop pra acessar cada ponto, e dentro desse loop, й gerada a coordenada x e y final para a criaзгo da gangzone atravйs de um cбlculo de porcentagem (x = distвncia atual + diferenзa entre a distвncia a ser alcanзada e a distвncia atual / pelo nъmero de pontos totais * o id do ponto), fica mais ou menos assim:

Код:
x = xAtual + (((xASerAlcanзado - xAtual) / total_de_pontos)* id do ponto);
e a mesma coisa й feita com Y, e entгo jб tenho dois pontos pra trabalhar, sу preciso diferenciar um do outro pra ser um quadrado que ocupa o espaзo da rua, entгo й sу usar

Код:
GangZoneCreate(x-(DistanciaTotal/2), y-(DistanciaTotal/2), x+(DistanciaTotal/2),y+(DistanciaTotal/2));
A equidistвncia entre o ponto negativo e o positivo cria um quadrado ao redor do ponto, e assim forma-se uma linha... Essa base quem fez foi o NaS, meu trabalho estб sendo ligar os pontos que tenham um вngulo retilнneo (90, 180, 270 ou 360°) para que se forme uma linha apenas, poupando milhares de gangzones geradas por cada ponto.

Quote:

-Mas n0minal, vocк й burro, se vai ser uma gangzone pra cada rota linha reta, como vai diminuir o tamanho da gangzone quando passar com o carro pelo ponto adequado?

-Calma meu xofem, vocк esta muito exaltado fera, eu tambйm pensei nisso. A soluзгo pra isso й: cada retilнnia terб uma array e um enumerador pra guardar o dado de cada ponto que nela contйm, e tambйm terб uma "variбvel reserva" pra ser criada, no tamanho ideal da recalculaзгo da rota enquanto a anterior й deletada para ser criada posteriormente, basicamente essas 2 variбveis farгo dois swaps entre si, enquanto uma sai de aзгo a outra entra, e entгo o player nгo deixarб de ver a rota em momento algum, mesmo enquanto o trajeto estб sendo recalculado e o tamanho da gangzone esteja reduzido, apуs isso o node que nгo й mais usado й deletado da array e as informaзхes sгo limpas para que um novo node possa usar o espaзo. Й meio complexo de se pensar mas й sу ter paciкncia pra ler e re-ler...
Reply
#10

Dei uma lida bбsica em dois tуpicos a respeito de pathfinding, e como o Gamer_Z nгo explicou ao certo as partes tйcnicas utilizadas pelo plug-in no seu tуpico de apresentaзгo, eu te recomendaria usar esse aqui: https://sampforum.blast.hk/showthread.php?tid=427227

Ele faz o processamento todo atravйs de uma heurнstica de complexidade O(|E|+|V|log|V|) sendo V o nъmero de nodes e E o nъmero de ligaзхes, apesar de nгo ser o melhor resultado, Dijkstra й um algoritmo que foi feito justamente para trabalhar com grafos densos, nessa questгo de ter muitos pontos interligados para se tratar e atravйs dessas ligaзхes encontrar o menor caminho possнvel (nгo й 100% preciso, ele encontra o melhor caminho momentвneo de acordo com a execuзгo).

Baseado nesse principio, eu te diria que esse plug-in й melhor, lembrando que eu nгo avaliei os cуdigos e tambйm nгo avaliei os demais comentбrios a respeito, entгo te recomendo analisar essa questгo mais tarde...


Achei interessante os seus calculos e a metodologia que vocк encontrou para solucionar um problema, mas eu te pergunto... Isso serб bom em casos de extremidade ? Se 50 jogadores ativarem o comando GPS, aloprando na distвncia, de LS pra outra extremidade do mapa...

Como eu tinha te sugerido antes, vocк devia apostar em desenvolver isso atravйs de um plug-in... Nгo sei se apenas usando as funcionalidades bбsicas do sa-mp, vocк irб conseguir um bom desempenho que seja eficaz em casos de extremidades assim...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)