Eu sei muito pouco sobre programação de jogos, mas gostaria de aprender mais. Estou tentando entender o código para este jogo. Estou tentando entender por que o código está passando um "delta" para Shipcontrols.js, que altera a direção do navio com base na entrada do usuário.
Basicamente, o jogo calcula "delta" a cada loop ...
Aqui está uma versão abreviada da pilha que usa delta através de um loop ...
var delta = now - this.time;
this.time = now;
this.current.render.call(this.current, delta, this.renderer);
Passos para aqui ...
ctx.manager.add("game", scene, camera, function(delta, renderer)
{
if(delta > 25 && this.objects.lowFPS < 1000) this.objects.lowFPS++;
var dt = delta/16.6;
this.objects.components.shipControls.update(dt);
Passos para aqui ...
bkcore.hexgl.ShipControls.prototype.update = function(dt)
{
var pitchAng;
var yaw;
var roll;
if (undefined != hand){
O que faz coisas assim ...
if(this.key.forward)
this.speed += this.thrust * dt;
else
e isto...
if(this.key.right)
{
angularAmount -= this.angularSpeed * dt;
Qual é o objetivo do delta aqui? Está apenas tentando introduzir um elemento aleatório? O código para este jogo é muito bom. Por que esse cara usou delta?
physics
game-loop
control
motion-control
bernie2436
fonte
fonte
Respostas:
Este é o "delta do tempo". É quanto tempo se passou desde a atualização anterior. É necessário garantir que animações, física etc. funcionem na velocidade certa.
O código está sendo executado uma vez por atualização de quadro. No entanto, não há garantia de que os quadros sejam desenhados a uma velocidade constante. Um quadro pode levar 1/60 de segundo e o próximo pode levar 1/30. Se você não medir e explicar isso, o jogo será instável e ocorrerá muito rápido ou muito devagar em várias circunstâncias.
Os deltas de tempo são frequentemente aplicados na física, pois é assim que as equações são especificadas para integrações simples de Euler. A integração da velocidade na posição é definida como o
x1 = x0 + v * (t1 - t0)
que simplifica o códigox += v * dt
. Portanto, deltas de tempo são necessários para avaliar as atualizações físicas.É muito, muito normal que deltas de tempo sejam medidos e aplicados.
fonte
"Delta", "d" ou "Δ", significa "diferença" em um contexto matemático . Sempre que houver uma diferença de diferença entre dois números com significados semelhantes, essa diferença pode ser chamada de "delta" ou "d".
Deltas são muito comuns no desenvolvimento de jogos. Por exemplo, a diferença entre a coordenada X de um personagem um segundo atrás e a coordenada X agora pode ser chamada de "delta x" e é geralmente denominada como
dx
,delta_x
oud_x
.Além disso, é muito comum ter a diferença entre duas vezes, como no seu código:
Nesse caso, essa variável está denotando a diferença entre algum tempo armazenado
this.time
e o tempo armazenadonow
.Os deltas são comumente usados para representar a mudança de algo no tempo. Por exemplo, se você sabe que a coordenada X de um jogador deve mudar 5 pixels a cada quadro, você pode armazenar essa alteração como um delta:
E, em seguida, use esse delta para aplicar a alteração sempre que precisar:
Mas lembre-se de que isso é apenas uma convenção. Ninguém obriga a nomear suas variáveis "delta" ou "d", mas isso pode ajudar alguém que lê seu código ou a si mesmo, se você o ler no futuro, a entender o que a variável deve fazer.
Outras letras gregas comuns amplamente usadas na programação são:
Epsilon : por um valor muito pequeno. Comumente usado ao comparar ponto flutuante ou outras variáveis com problemas de precisão:
Pi : para a constante homônima
Teta : para representar ângulos
Lambda : para representar funções ou fechamentos anônimos
fonte
dt
significadelta time
. É usado no cálculo da taxa de quadros para garantir que o jogo seja executado na mesma velocidade, independentemente da taxa de quadros.Mais informações
framerate independence
podem ser encontradas aqui .fonte
dt (tempo delta) é o tempo entre cada quadro de ciclo / renderização (ou qualquer carimbo de data / hora desejado) do seu loop. Com esse tempo delta, podemos esticar certos valores ao longo do tempo. Assim como no mundo real, medimos certas propriedades físicas ao longo do tempo.
Digamos que rodemos nosso jogo 60 frames por segundo. Se queremos que nosso player mova 5 pixels por segundo, fazemos
ou
O personagem move 5 pixels por 60 quadros. Quanto mais tempo o seu ciclo demorar, maior será o tempo delta.
Para cada taxa de quadros (1/30, 1/25, etc), o resultado será o mesmo.
fonte