Coder Social home page Coder Social logo

Comments (13)

krbastos avatar krbastos commented on August 20, 2024 4

Caramba, eu já tinha chegado em mais de mil pontos jogando lá aí do nada veio um bot fazendo praticamente teletransporte de uma frutinha a outra kkkk. Eu era o user p5mkHM..... kkkkkkkkkkkk.
Outra coisa interessante seria quicar o usuário que permanecer na mesma posição depois de um tempo, faz umas 3 verificações a cada 1 minuto e se ele ainda estiver na mesma posição aí desconecta ele.

from meu-primeiro-jogo-multiplayer.

omurilo avatar omurilo commented on August 20, 2024

Acho que tem muita coisa alí pra ser movida pro backend hein Filipe. Postei um story lá no Instagram e te marquei com uma pontuação absurda 😂😂

from meu-primeiro-jogo-multiplayer.

filipedeschamps avatar filipedeschamps commented on August 20, 2024

hahahhahah sensacional!!!

from meu-primeiro-jogo-multiplayer.

leocavalcante avatar leocavalcante commented on August 20, 2024

A ideia é fazer do jeito mais pragmático possível ou rola usar libs como RxJS?

from meu-primeiro-jogo-multiplayer.

filipedeschamps avatar filipedeschamps commented on August 20, 2024

@leocavalcante kkkk boa! Acho que agora seria um quickfix só pra deixar mais jogável pro restante da turma. Mais pra frente quero separar o repositório em pastas para cada um fazer a sua implementação/modificação assim como no repo do fogo do doom

from meu-primeiro-jogo-multiplayer.

GRFreire avatar GRFreire commented on August 20, 2024

Uma coisa que reparei é que toda atualização de dados do servidor é enviada a todos os usuários em seguida. Seria interessante implementar uma função heartbeat com um intervalo fixo, assim a cada 30 ms, por exemplo, o servidor enviaria as informações para os clients.
Acho que isso ajudaria muito a questão de performance do jogo.

from meu-primeiro-jogo-multiplayer.

leocavalcante avatar leocavalcante commented on August 20, 2024

Fui brincar disso agora aqui em casa e tava pensando:
Não é só questão de pegar a função que você já tem no cliente:

function throttle(callback, delay) {
  let isThrottled = false,
    args,
    context;

  function wrapper() {
    if (isThrottled) {
      args = arguments;
      context = this;
      return;
    }

    isThrottled = true;
    callback.apply(this, arguments);

    setTimeout(() => {
      isThrottled = false;
      if (args) {
        wrapper.apply(context, args);
        args = context = null;
      }
    }, delay);
  }

  return wrapper;
}

Copiar pro server e usar:

const game = {
    canvasWidth: 35,
    canvasHeight: 30,
    players: {},
    fruits: {},
    addPlayer,
    removePlayer,
    movePlayer: throttle(movePlayer, 80),
    addFruit,
    removeFruit,
    checkForFruitColision,
    clearScores,
  };

?

from meu-primeiro-jogo-multiplayer.

filipedeschamps avatar filipedeschamps commented on August 20, 2024

Será que isso não vai ficar aplicado de forma global?

Mas talvez colocar aqui: https://github.com/filipedeschamps/meu-primeiro-jogo-multiplayer/blob/master/source/server.js#L50

from meu-primeiro-jogo-multiplayer.

filipedeschamps avatar filipedeschamps commented on August 20, 2024

image

Deu certo, o problema é que o client e o server ficam dessincronizados, porque em nenhum momento isso é normalizado de volta ao client. Mas que bloqueia, bloqueia kkkk

from meu-primeiro-jogo-multiplayer.

leocavalcante avatar leocavalcante commented on August 20, 2024

Na verdade, acho que fica global mesmo, de ambas as formas. Afinal, ainda é o mesmo método pra todos os clients.
Teria que ter um throttle pra cada socketId. Se player for um objeto e a função move estiver nele, acho que já resolve.

from meu-primeiro-jogo-multiplayer.

filipedeschamps avatar filipedeschamps commented on August 20, 2024

from meu-primeiro-jogo-multiplayer.

phil-math avatar phil-math commented on August 20, 2024

Antes de qualquer coisa, dois palitos de tiétagem, @filipedeschamps quero parabenizar o teu trabalho, e agradecer, por reacender a minha chama da programação, pra mim os puxões de orelha que você dá cai como uma luva...
Mas voltando ao assunto em questão, num sei se é porque eu não entendi direito essa função throttle, mas não vejo função pra ela, não seria mais justo, colocar um emit, no EventListener..?
Estou estudando o ponto...

from meu-primeiro-jogo-multiplayer.

phil-math avatar phil-math commented on August 20, 2024

O próprio handlerKeydown faz o serviço, pra controlar a velocidade, é aplicar a física mesmo, player já tem score, posição cabe uma velocidade, o deslocamento = velocidade * deltaTempo, o requestAnimationFrame, da o compasso, só num sei se é justo fazer uma requisição a cada quadro, uma coisa que eu vi é que o servidor num atualiza, o cliente de sua posição, e outra coisa engraçada é tentar passar uma fração de um pixel, para o pixel seguinte, tipo player.x = player.x +0.5

from meu-primeiro-jogo-multiplayer.

Related Issues (17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.