GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


[Desempenho] Obter maior desempenho do PC no jogo

3 participantes

Ir para baixo

[Desempenho] Obter maior desempenho do PC no jogo Empty [Desempenho] Obter maior desempenho do PC no jogo

Mensagem por machosupremo Seg 29 Abr 2013, 17:08

[INTRODUÇÃO]
Estou fazendo um MMO em cima do meu "POKEDOTA" no qual o funcionamento do servidor vai permitir varias Partidas simultâneas .

Em vista disso, durante minha experiencia percebi que muitos objetos com os eventos "BEGIN STEP; STEP; END STEP", torna o pc mais lento podendo até travar o jogo.

[Sobre um jogo MMO] Meus primeiros estudos, me permitiu criar um jogo no qual seu funcionamento se deriva dos seguintes componentes(objetos):
*1 para receber as novas conexões;
*1 para cada novo jogador conectado; (isto é, quando um pessoa se conectava, era criado um objeto para este novo jogador então era armazenando o valor do seu socket, então a cada passo (STEP) ele verificava se havia uma nova mensagem).

Mas como eu ja mencionei, em uma das experiencias percebi que isso compromete em muito o desempenho da maquina (fiz isso em um TD que estou desenvolvendo, cada monstro tinha o EVENTO STEP para poder andar e reagir aos eventos do jogo, mas travava quando tinha muita MOB).

Então formulei outra estrutura, na qual uso no "POKEDOTA".
SERVDOR apenas um unico objeto, com os eventos "BEGIN STEP; STEP; END STEP", e dentro deste evento eu uso:
*with(objeto_jogador_deslogado)
*with(objeto_jogador_logado)
*with(objeto_jogador_em_partida)

então quando existe uma nova mensagem, este unico objeto "CONTROLADOR" toma as decisões.

[DISCUSSÃO]
Em vista dos processadores de múltiplos núcleos, caso eu crie mais de um objeto controlador obteria um desempenho mais solido, seguindo inicialmente a estrutura:
*controlador_novas_conexoes
*controlador_jogadores_em_espera (jogadores ja logados porem não então em nenhuma partida)
*controlador_partidas (este talvez 1 para cada partida, mas penso eu em criar um para controlar todas as partidas no jogo)

Pergunta: 1 Alguem tem o conhecimento, para dizer qual a medida mais adequada? Como conseguir o melhor desempenho?

Pergunta: 2 Sobre variaveis, qual é mais eficiente? Criar uma variavel global, ou criar uma variavel em um objeto principal (objetos secundarios teriam que acessar essas variaveis Ex: variavel_temporaria = obj_Mestre.variavel).

Pergunta: 3 Dentro de um objeto, supõe-se que precise atribuir muitas variaveis e/ou comandos em outro objeto. Qual mais eficaz? Usar:
var o = objeto2;
o = var1
...
o = varetc

OU with(objeto2){ instruçãpo}
machosupremo
machosupremo

Data de inscrição : 10/10/2012
Reputação : 2
Número de Mensagens : 99
Prêmios : [Desempenho] Obter maior desempenho do PC no jogo Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.dinoup.com

Ir para o topo Ir para baixo

[Desempenho] Obter maior desempenho do PC no jogo Empty Re: [Desempenho] Obter maior desempenho do PC no jogo

Mensagem por Rodrigo Santiago Seg 29 Abr 2013, 18:28

Calma com as perguntas.
Primeiro : se no seu jogo existem vários objetos que estão 'online' não será nessesário usar todos os PCs que estiverem conectados para realizar as suas funções mais complexas, eles vão usar apenas dados da rede.
Segunda - Global - Definitivamente é melhor e mais fácil de ser assesada.Tem até uma clave especial globalvar pra vc não ter que colocar global. antes do nome. Além de não acarretar erros ao passar de rooms e usar with.
Terceira: With - concerteza

A ideia é ótima, usar um unico objeto que usará a maiorias das funções de rede e distribui-los em variáveis que serão acessadas pelas 'multidões' de instancias. Olha só um aprimoramento: Selecione um computador para realizar todos os calculos comlicados, e ele recebe simplesmente a função de click do mouse dos outros.

Assim que eu faria:

O computador fornecedor do jogo - (client) <- sim , um client
Dados da rede - interação dos outros usuários (mouse, teclado) em bit
Instancias - Realiza as ações
Objeto controlador - Envia os dados para todos os participantes

O computador recedor do jogo - (client)
Dados de rede - Valores recebidos
Objeto controlador - Valores adicionados a variáveis globais
Instancias - Ações feitas com base nas variáveis globais.
Rodrigo Santiago
Rodrigo Santiago

Games Ranking : Nota B

Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Reputação : 73
Número de Mensagens : 1281
Prêmios : [Desempenho] Obter maior desempenho do PC no jogo Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 3 Prata x 1 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Desempenho] Obter maior desempenho do PC no jogo Empty Re: [Desempenho] Obter maior desempenho do PC no jogo

Mensagem por PedroX Seg 29 Abr 2013, 20:42

Pergunta: 1 Alguem tem o conhecimento, para dizer qual a medida mais adequada? Como conseguir o melhor desempenho?
Criar instâncias seria o mais fácil. Criar uma ds_list adicionando-lhe cada socket e depois fazer um loop para verificar cada um gastaria menos memória, mas seria mais lento (ou seja, quanto menos processamento em GML, que no caso seria com loops, maior é a performance).

Pergunta: 2 Sobre variaveis, qual é mais eficiente? Criar uma variavel global, ou criar uma variavel em um objeto principal (objetos secundarios teriam que acessar essas variaveis Ex: variavel_temporaria = obj_Mestre.variavel).
Acho que usar um objeto central poderia gastar menos memória, mas seria mais lento (ou não, é uma hipótese).

Pergunta: 3 Dentro de um objeto, supõe-se que precise atribuir muitas variaveis e/ou comandos em outro objeto. Qual mais eficaz? Usar:
var o = objeto2;
o = var1
...
o = varetc

OU with(objeto2){ instruçãpo}
With é mais rápido.

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6086
Prêmios : [Desempenho] Obter maior desempenho do PC no jogo Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Desempenho] Obter maior desempenho do PC no jogo Empty Re: [Desempenho] Obter maior desempenho do PC no jogo

Mensagem por machosupremo Seg 29 Abr 2013, 21:34

Rodrigo Santiago escreveu:Calma com as perguntas.
Primeiro : se no seu jogo existem vários objetos que estão 'online' não será nessesário usar todos os PCs que estiverem conectados para realizar as suas funções mais complexas, eles vão usar apenas dados da rede.
então essa nãi ficou muito claro, porque parece que sua resposta é pensando no cliente, eu faço essa pergunta pensando no servidor. Porque ele vai ter que processar muita coisa (novas conexões, interações do usuario fora do jogo, e interações dentro das partidas, imagine 10 partidas vezes 10 jogadores vezes até 6 pokemons cada vezes as creeps, torres, NPCs).

Rodrigo Santiago escreveu:Selecione um computador para realizar todos os calculos comlicados, e ele recebe simplesmente a função de click do mouse dos outros.

Assim que eu faria:

O computador fornecedor do jogo - (client) <- sim , um client
Dados da rede - interação dos outros usuários (mouse, teclado) em bit
Instancias - Realiza as ações
Objeto controlador - Envia os dados para todos os participantes

O computador recedor do jogo - (client)
Dados de rede - Valores recebidos
Objeto controlador - Valores adicionados a variáveis globais
Instancias - Ações feitas com base nas variáveis globais.

essa aqui não ficou muito claro, a questão dos dois serem clientes.

A questão de deixar um PC exclusivo para os calculoas, porque era isso que penso estar fazendo.Eu ja pensei em fazer um servidor exclusivo para cálculos e repassar as ações, porque este não perderia performance com efeitos visuais.


Última edição por machosupremo em Seg 29 Abr 2013, 21:35, editado 1 vez(es) (Motivo da edição : caráter visual)
machosupremo
machosupremo

Data de inscrição : 10/10/2012
Reputação : 2
Número de Mensagens : 99
Prêmios : [Desempenho] Obter maior desempenho do PC no jogo Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.dinoup.com

Ir para o topo Ir para baixo

[Desempenho] Obter maior desempenho do PC no jogo Empty Re: [Desempenho] Obter maior desempenho do PC no jogo

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos