[Tutorial] Streamer Objects Performance (Dicas, explicaзхes e problemas com mapas)
#1

.:::. Sumбrio .:::.

Este й um tуpico explicativo, este tutorial tem como objetivo sanar dъvidas, problemas e ajudar a providenciar a melhor experiкncia aos usuбrios do seu servidor. Apesar de bбsico, muitas pessoas nгo fazem ideia entre a diferenзa de criar objetos com streamer e criб-los nativamente (createobject).

.:::. O que й streamer? .:::.

Streamer como muito de vocкs sabem, й um plugin que extende as possibilidades de recursos nativos do samp, tais como criaзгo de objetos (o assunto no qual estamos), pickups, checkpoints e muito mais. Mas como dito anteriormente, o foco deste tutorial й sobre os objetos.

.:::. Streaming de Objetos? .:::.

Sim, a grosso modo, o streamer faz uma "distribuiзгo inteligente" pra extender o limite de objetos, isso nгo significa que vocк pode pode criar infinitos objetos com o streamer (na teoria vocк pode, mas na prбtica a coisa й diferente), mas te dб muita liberdade pra criar seus mapas caso vocк o use. O streaming de objetos basicamente cria objetos pra vocк quando vocк estб perto deles e os destrуi quando vocк estб longe e nгo precisa vк-lo mais, poupando entгo mais slots para outros mapas. Todo esse cбlculo й feito atravйs de uma sйrie de fatores, dentre eles o drawdistance, que muita gente por padrгo nгo o toca e acaba ignorando, mas que na verdade й um ponto-chave pra performance dos seus mapas, portanto, abaixo vou dar algumas dicas caso vocк queira ter a melhor performance nos seus mapas e poder organizб-lo de forma correta e inteligente.

.:::. Dicas! .:::.
  • Organize seus mapas
    Organizaзгo й o primeiro passo pra tudo, tente centralizar seus mapas em algum mуdulo ou script principal, assim vocк nгo vai se perder na hora que mudar alguma coisa, use comentбrios para ajudar na organizaзгo daquele monte de funзхes, pule algumas linhas e aн prossiga.
  • Escolha bem seu editor
    De fato existem vбrios, cada um deles com caracterнsticas diferentes do outro, escolha um que te dк conforto de trabalhar e possibilite a maior exploraзгo da sua criatividade, mas o mais importante, й o mйtodo de exportaзгo.
  • Usa editor in-game? Modifique-o!
    Aposto que vocк nгo tinha pensado nisso, alйm de trocar algumas corezinhas aqui e ali nos comandos, imagine como seria ъtil poder modificar a o drawdistance de cada objeto pra te poupar dor de cabeзa apуs a exportaзгo dos mapas, simplesmente fantбstico! Eu pessoalmente planejo editar meu texture studio para dar suporte а isso, que tal sugerir isso no tуpico oficial do texture studio ou desenvolver por si mesmo?
  • Use o drawdistance de forma inteligente!
    Pra quк diabos deixar 300.0m de drawdistance pra um objeto de decoraзгo e deixar os chгos da sua cidade com pop-in, onde vira e mexe um player nгo carrega o objeto a tempo e cai na бgua, isso й horrнvel nгo й? Portanto, use o drawdistance de forma inteligente, modificando o drawdistance de cada objeto vocк melhora a interface dos seus mapas em 100%, priorize o essencial e abstraia os detalhes!
  • Estou usando streamer e meus objetos nгo sгo criados, o que fazer?
    Existem muitos casos desse tipo hoje em dia, por isso, й estritamente aconselhбvel que vocк opte por um modo de criaзгo de objetos antes de comeзar a mapear, a criaзгo de objetos nativos prejudica e muito a performance do streamer caso seja usada em grande quantidade, daн vem a questгo, usar CreateObject ou CreateDynamicObject?
  • Usar o streamer ou nгo? Como criar meus objetos? Quando devo usб-lo?
    Apesar de uma pergunta simples de ser respondida, muitas pessoas ainda tem essa dъvida, quando devo usar o streamer? A resposta pra 99% dos casos й: SEMPRE USE STREAMER, pare de usar CreateObject caso seu servidor tenha um planejamento de muitos mapas, caso vocк queira fazer pouquissimos mapas e sistemas usando objetos, e pelas suas contas isso nгo passa de 1000 objetos, usar o streamer pode nгo ser necessбrio, mas na maioria dos casos nгo й isso que acontece, as pessoas constroem mercados, DP's, HQ's, spawn disso e daquilo e quando vai ver tem 10.000 objetos de mapa no servidor, portanto, nгo use CreateObject nesses casos, use apenas o streamer.
  • Por que o streamer influencia nos meus CreateObjects?
    Porque como jб explicado anteriormente, o streamer nada mais й que uma redistribuiзгo de objetos do seu servidor, ele cria pra vocк os objetos que vocк precisa ver e deleta os que vocк nгo precisa ver, mas guarda os dados sobre cada um deles para serem recriados quando necessбrio, entendeu a lуgica? Й basicamente uma ferramenta de redistribuiзгo, te fornece quando necessбrio (quando vocк chega no raio de drawdistance do objeto) e te tira quando nгo for mais necessбrio (quando vocк sai do raio do drawdistance do objeto), por isso, as pessoas costumam dizer que se pode criar infinitos objetos com o streamer, mas nгo й bem assim.
  • Entгo posso criar infinitos objetos com streamer ou nгo?
    Na teoria, "sim", na prбtica, nгo. Primeiro de tudo, nгo existe como criar infinitos objetos, as pessoas dizem infinitos porque й um limite muito alto de ser atingido, mas isso nгo significa que seja infinito, й igual aquelas hostings da vida que oferecem trбfego mensal ilimitado para seu cPanel, quando na verdade й um limite que muito raramente serб atingido, e as mesmas o vendem como se fosse "ilimitado", mas nгo й ilimitado na prбtica, apenas muito alto.
  • Atй quantos objetos devo criar com o streamer?
    Bom, isso depende de vбrios fatores, um deles й a sobrecarga da largura de banda e processamento da sua mбquina, quanto melhores forem as especificaзхes da mesma, mais alto serб o limite, por exemplo, o mapa hitoyoshi project que possuia 80.000 objetos e demorou 2 anos pra ser desenvolvido:

    [ame]http://www.youtube.com/watch?v=oGjJkFCAkng[/ame]

    Sгo 80.000 objetos criados, um lindo mapa, revolucionou o samp, mas infelizmente poucas pessoas tкm recursos pra suportar um mapa desta magnitude, processar 80.000 objetos pra 500, 800, 1000 players, imagina o lag e crash que isso tudo lhe daria, quanto processamento e largura de banda seria necessбrio ao servidor. Fatores como players online tambйm influenciam e muito, visto que o processamento das funзхes do streamer й feito de acordo com cada player, portanto, economize objetos.

  • Como criar um mapa bonito sem muitos objetos?
    Bom, como vossas queridas mamгes jб devem ter dito alguma vez na vida, quantidade nгo garante qualidade, se vocк fizer um mapa com 1000 objetos seu amigo pode te superar fazendo o mesmo mapa com 100 e fazer ele ficar muito mais bonito do que o seu, portanto, priorize a economia de objetos em cada mapa sem prejudicar a riqueza nos detalhes (que й muito importante e nгo deve ser esquecido).

  • Leon, criei meu mapa com 800 objetos mas o streamer nгo carrega todos, o que fazer?
    Calma jovem gafanhoto, com certeza vocк nгo leu a documentaзгo do plugin streamer, vocк sabia que por padrгo, o streamer carrega no mбximo 500 objetos dentro de um raio similar? Mas isso nгo й necessamente um problema, vocк quer ter a mesma performance que teria com createobjects? Entгo siga os passos:

    1- Transforme todos os objetos criados na funзгo nativa (CreateObject) para a funзгo do streamer (CreateDynamicObject), vocк pode seguir as dicas anteriores pra ter uma melhor performance.

    2- Depois de transformar os objetos nativos para dinвmicos, vocк pode maximizar a performance do seu streamer aumentando o limite de objetos a serem carregados no mesmo raio, para isso, o Incognito desenvolveu uma funзгo para aumentar o limite de itens visнveis:

    Код:
    public OnGameModeInit()
    {
    Streamer_SetVisibleItems(STREAMER_TYPE_OBJECT, 999);//999 й o mбximo de objetos que podem ser carregados pelo streamer return 1;
    }

  • Legal, agora tenho o mesmo desempenho do que tinha com createobject, mas como criar mais de 1000 objetos num lugar sem muito pop-in?
    Jб fica um pouco mais complicado, mas nгo impossнvel, aн a questгo do drawdistance faz toda a diferenзa, por exemplo, se vocк priorizar a estrutura de um edificio e deixar os detalhes dele com um drawdistance menor, a estrutura jб serб carregada mais de longe, e os detalhes apenas quando vocк se aproximar, daн vocк tem uma melhor distribuiзгo dos seus recursos, um detalhe no qual vocк se afastou й deletado sem que vocк perceba, e entгo vocк pode ver outro, й tudo uma questгo de organizaзгo.

  • Existe alguma forma de definir o drawdistance de cada objeto antes de exportar meu mapa?
    Eu pessoalmente ainda nгo vi, planejo desenvolver essa opзгo no meu texture studio e caso eu faзa talvez dк um pull request no projeto oficial, mas caso vocк se interesse, vocк pode entrar em contato com o Crayder (atual desenvolvedor do texture studio) pedindo para ele desenvolver algo do tipo.
Bom, acho que й isso, foi um tutorial meio longo apesar de simples, caso tenham dъvidas expressem-nas nos comentбrios abaixo, espero que isso resolva seus problemas e sane suas dъvidas, atй logo
Reply
#2

Muito bom, irб ajudar muita gente.
+REP
Reply
#3

Belo Tutorial
Reply
#4

Уtimo tutorial, muitas pessoas estгo em dъvidas sobre o streamer.

Atenciosamente,
TiiP
Reply
#5

Bom tutorial Leo!
Reply
#6

Obrigado galera, espero que isso solucione os problemas com mapas e streaming de objetos de uma vez por todas
Reply
#7

Bom trabalho :3
Reply
#8

Bom tutorial! .
Reply
#9

O tutorial estб delicioso. Bem estruturado e super explicado. Parabйns, MC Leozinho!
Reply
#10

Muito bom Leo. Parabйns. +rep. Talvez depois eu verifique ele melhor
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)