Comments (13)
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.
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.
hahahhahah sensacional!!!
from meu-primeiro-jogo-multiplayer.
A ideia é fazer do jeito mais pragmático possível ou rola usar libs como RxJS?
from meu-primeiro-jogo-multiplayer.
@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.
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.
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.
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.
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.
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.
from meu-primeiro-jogo-multiplayer.
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.
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)
- usar variável socket globalmente HOT 2
- Turma, vou começar a reorganizar esse repositório HOT 1
- Como abrir a tela de admin? HOT 2
- Diferentes cores para pontuações mais altas HOT 1
- Usar .env para a porta do servidor HOT 1
- Apenas um esclarecimento HOT 5
- Um protocolo?
- COMO STARTA ESSE JOGO HOT 2
- socket.io não prove um export padrão HOT 1
- Hk
- Como rodar no navegador o meu-primeiro-jogo-multiplayer
- [NPX] SyntaxError: Unexpected token '?'
- Como posso trocar os quadrados por imagens (Ícones)
- Como dar deploy disso na Vercel?
- Aqui Está O vídeo Onde Ele cria esse jogo:
- Fluidez de animação, usando o anti-aliasing HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from meu-primeiro-jogo-multiplayer.