Pergunta

Primeiro, alguns backstory:

Eu estou fazendo o que pode equivaler a ser um " roguelike " jogo para que eu possa exersize algumas ideias interessantes que eu tenho flutuando na minha cabeça. A jogabilidade não vai ser um dungeon, mas em qualquer caso, o visor vai ser feito em um fasion similar, com caracteres ASCII simples.

Sendo que este é um exercício de auto, eu me esforço para código mais do que me .

Finalmente, eu gostaria de ter o executável do jogo em arbitrariamente grandes mundos do jogo. (Até o ponto onde eu imagino havening o jogo em rede e span ao longo de muitos monitores em um laboratório de informática).

Agora, eu tenho algum código que pode ler e escrever para as seções arbitrárias de um console de texto, e um sistema simples de particionamento configurado para que eu possa caminho-encontrar de forma eficiente.


E agora a pergunta:

Eu corri alguns pontos de referência, e o maior gargalo é o re-desenho de consoles de texto.

Ter um mundo de jogo que grande exigirá uma atualização inteligente do display. Eu não quero ter que re-empurrar buffer inteiro meu jogo cada frame ... Eu preciso de algumas dicas sobre como configurá-lo para que ele só chama seções do jogo já foram atualizados. (e não apenas personagens individuais como eu tenho agora)

Eu tenho manipular o console do Windows via windows.h, mas eu também estaria interessado em fazê-la para rodar em máquinas Linux sobre um cliente Putty conectado ao servidor.

Eu tentei adaptar algumas rotinas de processamento de vídeo, como há quase um 1: 1. Relação entre pixels e personagem, mas não tive sorte

Realmente eu quero uma explicação simples de alguns dos princípios por trás dele. Mas alguns exemplo de código (psudo) seria muito bom.

Foi útil?

Solução

Eu não estou indo a reivindicação de entender isso, mas eu acredito que isso é perto da questão por trás lendário Gosling Emacs redesenhar código. Veja o seu papel, intitulado apropriadamente, "um algoritmo Reexibir", e também o geral Cadeia de caracteres -string problema correção .

Outras dicas

Use Curses, ou se você precisa fazer isso sozinho, ler sobre os códigos de controle VTnnn. Ambos devem trabalhar em janelas e em termos * nix e consoles (e Windows). Você também pode consultar o código fonte nethack para sugestões. Isso permitirá que você alterar caracteres na tela sempre que mudanças aconteceram.

Ter um mundo de jogo que grande vontade exigem uma atualização inteligente do exibição. Eu não quero ter que re-empurrar tampão cada todo o meu jogo quadro ... Eu preciso de algumas dicas sobre como configurá-lo para que ele só chama seções do jogo ter sido Atualizada. (E não apenas individuais caracteres como eu tenho agora)

O tamanho do mundo do jogo não é realmente relevante, como tudo que você precisa fazer é trabalhar para fora a área visível para cada cliente e enviar esses dados. Se você tem uma tela típica 80x25 consola, então você vai ser o envio de apenas 2 ou 3 kilobytes de dados de cada vez, mesmo se você adicionar códigos de cores e assim por diante. Isto é típico da maioria dos jogos on-line desta natureza:. Atualização o que a pessoa pode ver, nem tudo no mundo

Se você quiser experimentar com a tentar encontrar uma maneira de reduzir o que você envia, então sinta-se livre para fazer isso para fins de aprendizagem, mas estamos prestes 10 anos além do ponto onde é ineficiente para atualizar a exibição do console em algo que se aproxima em tempo real e seria uma pena desperdiçar tempo corrigindo um problema que não precisa de fixação. Note-se que a PDF ligada acima dá uma O solução (ND), enquanto que simplesmente enviar toda a consola é metade de O (N), onde N é definido como a soma dos comprimentos de A e B e D.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top