Modelagem da velocidade da propagação de informações leves no sim de combate espacial


29

Estou trabalhando em um simulador de combate espacial que ocorre em áreas relativamente vastas (um cubo de espaço ~ 20 minutos leves para o lado) e usa (principalmente) física realista. Um dos elementos principais que quero modelar é a velocidade de propagação das informações no espaço de batalha - ou seja, se o Jogador A engajar sua unidade principal em um lado do espaço de batalha, haverá um atraso de 20 minutos antes que o Jogador B a veja e pode reagir a isso

Mesmo em espaços de batalha relativamente pequenos, esse é um fator importante, dadas as velocidades envolvidas. Um navio de 500m de comprimento a 30kps se desloca por toda a sua extensão em 1/60 de segundo, portanto, mesmo mirar um oponente a apenas alguns décimos de segundo de luz será afetado por um atraso de luz.

Eu nunca vi isso antes, e estou me perguntando se existem algumas práticas recomendadas para modelar isso. No momento, estou marcando timestamp cada evento e marcando-o com um local, colocando-o em uma fila e, em seguida, cada tick verificando se algum dos objetos no mundo do jogo está recentemente na borda do cone de luz e adicionando o evento para a fila de sensores. Eu irei (mas ainda não o otimizarei) removendo quaisquer eventos que já tenham sido detectados por todos os objetos que possam senti-lo, mas, ainda assim, acho que isso ficará complicado demais rapidamente e comerei muito de ciclos se houver centenas de objetos sensores em jogo (o que é bastante rotineiro).

Existem modelos de dados que seriam mais adequados para isso que eu deveria conferir?


7
Não sei a resposta, mas vou dizer que pergunta interessante!
Tim Holt

Uau! Os jogos são principalmente sobre visualização. Preciso saber como você planeja visualizar os oponentes quando os pixels são grandes demais? Indicadores simples de HUD? Um jogo de aventura em modo texto? Por favor me esclareça!
Jonas Byström

1
Você diz que seu modelo é fisicamente preciso. Isso é newtoniano ou relativista? Isso pode fazer uma grande diferença em tais escalas.
precisa saber é o seguinte

1
Não que ele responda à pergunta, mas talvez olhar para Uma velocidade mais lenta da luz lhe dê algumas idéias.
Michael Pankov

@ JonasByström - a visão de longa distância é bastante complexa e estou tentando limpá-la. Basicamente, espero que seja uma visão probabilística de onde o alvo estará no futuro, com base no atraso de luz e nas estimativas do computador de bordo do max delta-v do alvo. Agora é um pouco menos impressionante do que isso, embora :)
John Biesnecker

Respostas:


9

Apenas brainstorming aqui ...

Curiosamente, o atraso na rede é seu amigo neste caso. Como você quer que ocorra um atraso para alguns pacotes de dados, pelo menos se for sobre desenho. Mas, em vez de um atraso de base que cada jogador normalmente teria para todos os pacotes de dados afetados apenas pela velocidade da rede, é necessário aplicar um atraso específico para cada evento a cada jogador com base no atraso da velocidade da luz.

Normalmente, o servidor envia atualizações a todos os clientes ao mesmo tempo, mas o que você precisa é que o servidor calcule o "atraso da luz" de cada evento (com base na distância do visualizador) e não envie uma atualização até que Tempo.

Portanto, para cada evento, calcule o atraso de tempo entre o evento e cada jogador e, em seguida, enfileire-o na fila para que não seja enviado para sorteio para esse jogador até que o tempo de atraso tenha passado.

Isso não aborda o efeito do jogador mudar de posição ou velocidade após a ocorrência do evento, mas você pode ajustar os eventos que foram colocados na fila com base nas alterações do jogador. Um jogador começa a se aproximar, aproximar o evento a tempo. O jogador se afasta, afasta-se no tempo.

O deslocamento do Doppler seria algo interessante de se misturar, com base no delta do movimento entre o espectador e o evento.


Eu já meio que modelo a mudança de posição e velocidade. Apesar da escala, os objetos no jogo geralmente não conseguem uma fração apreciável da velocidade da luz; portanto, os eventos os ultrapassam com relativa facilidade, mas há uma verificação em cada marca se o receptor estiver na esfera que poderia ter visto o evento, portanto, se você estiver se aproximando ou se afastando de um bom clipe, isso poderá afetar isso em alguns instantes. Doppler seria realmente interessante! Algo para investigar. :-)
John Biesnecker

2
Algo a ter em atenção: se você usar esse método, ninguém que esteja escaneando os pacotes poderá obter informações antes do que deveria. A Eve Online faz algo semelhante com navios encobertos. Quando qualquer navio se move em uma área, todos os clientes são notificados, mas quando um navio encoberto se move, os clientes não recebem nada. Caso contrário, embora o cliente não mostre a remessa, os pacotes mostrariam.
Ray Britton

5

A questão é: quão exata você precisa que sua imagem atrasada seja para como ela realmente foi reproduzida? Se você procura 100% de precisão, precisará salvar as ações ou o estado de cada objeto no mapa a cada marca e, como você diz, reproduzi-las com um atraso com base na distância. Se você não se importa tanto com a precisão, que raramente precisa em jogos, pode salvar o estado em intervalos e extrapolar entre eles quando o atraso se aproxima. Você pode otimizar não salvando atualizações idênticas.

Como alternativa, você pode vetorizar todo o movimento e salvar um caminho para cada objeto, juntamente com um horário de início visto por um observador universal. Em seguida, você pode apenas calcular a posição esperada de um objeto para cada observador com base no contador de tempo universal e o horário local com base nos nós do caminho que ele salvou. Quando o carimbo de data e hora de um nó de caminho fica atrás do ícone de luz de todos os objetos relevantes, você o descarta.

Edit: O acima pressupõe que você vai trapacear na relatividade básica por ter um observador absoluto (presumo que o jogador). Isso roubaria alguns dos aspectos mais interessantes da dilatação do tempo, mas modelá-los seria um projeto em si> _>

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.