Domanda

In primo luogo, alcuni retroscena:

Sto facendo quello che può ammontare ad essere un gioco " roguelike " Così posso exersize alcune idee interessanti che ho galleggianti intorno nella mia testa. Il gameplay non sta per essere a passo d'uomo sotterraneo, ma in ogni caso, il display sta per essere fatto in un fasion simile, con semplici caratteri ASCII.

Essendo che si tratta di un esercizio di auto, mi sforzo di codificare la maggior parte di me .

Alla fine mi piacerebbe avere il gioco eseguibile su arbitrariamente grandi mondi di gioco. (Al punto in cui mi immagino havening il gioco in rete e calibrazione su molti monitor in un laboratorio di informatica).

In questo momento, ho un codice che può leggere e scrivere alle sezioni arbitrarie di una console di testo, e un sistema semplice partizionamento impostato in modo che io possa percorso da trovare in modo efficiente.


E ora la domanda:

Ho eseguito alcuni benchmark, e il più grande collo di bottiglia è la ri-disegno di console di testo.

Avere un mondo di gioco che di grandi dimensioni richiederà un aggiornamento intelligente del display. Io non voglio avere a ri-spingere tutta la mia buffer di gioco ogni fotogramma ... Ho bisogno di alcune indicazioni su come impostarlo in modo che esso disegna solo sezioni del gioco sono state aggiornate. (e non solo singoli caratteri, come ho ora)

ho manipolato la console di Windows tramite windows.h, ma vorrei anche essere interessati a ottenere l'esecuzione su macchine Linux su un client puTTY connesso al server.

Ho provato adattando alcune routine di video-elaborazione, in quanto v'è quasi un 1:. 1 tra pixel e carattere, ma non ho avuto fortuna

Davvero voglio una semplice spiegazione di alcuni dei principi dietro di esso. Ma alcuni esempi (psudo) codice sarebbe troppo bello.

È stato utile?

Soluzione

Non ho intenzione di rivendicare per capire questo, ma credo che questo è vicino alla questione alle spalle di James Gosling leggendaria Gosling Emacs ridisegnare codice. Vedere il suo articolo, intitolato appropriatamente, "un algoritmo Rivisualizza", e anche il string-a -string problema correzione .

Altri suggerimenti

Usare Maledizioni, o se avete bisogno di fare da soli, leggere i codici di controllo VTnnn. Entrambi questi dovrebbe funzionare su Windows e sui termini e console (e di Windows) * nix. È inoltre possibile consultare il codice sorgente nethack per i suggerimenti. Questo vi permetterà di modificare i caratteri sullo schermo ovunque cambiamenti hanno successo.

  

Avere un mondo di gioco che grande volontà   richiedere un aggiornamento intelligente del   Schermo. Io non voglio avere a   re-spingere tutta la mia buffer di gioco ogni   telaio ... ho bisogno di alcune indicazioni su come   per impostarlo in modo che esso disegna solo   sezioni del gioco sono stati   aggiornato. (E non solo individuale   personaggi come ho ora)

La dimensione del mondo di gioco non è davvero rilevante, come tutto quello che dovete fare è lavorare fuori l'area visibile per ogni cliente e inviare i dati. Se si dispone di un tipico display della console 80x25 allora si sta andando ad essere l'invio di soli 2 o 3 kilobyte di dati ogni volta, anche se si aggiunge a codici colore e simili. Questo è tipico della maggior parte dei giochi online di questa natura:. Aggiornare ciò che la persona può vedere, non tutto nel mondo

Se si vuole sperimentare con il tentativo di trovare un modo per ridurre ciò che si invia, quindi sentitevi liberi di farlo a fini di apprendimento, ma siamo circa 10 anni oltre il punto in cui è inefficiente per aggiornare una visualizzazione della console in qualcosa che si avvicina tempo reale e sarebbe un peccato sprecare tempo a risolvere un problema che non ha bisogno di fissaggio. Si noti che il PDF linkato sopra fornisce una soluzione di O (ND), mentre il semplice invio di tutta la console è la metà di O (N), dove N è definito come la somma delle lunghezze di A e B e D.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top