Question

Tout d'abord, certaines trame de fond:

Je fais ce qui pourrait constituer un jeu « roguelike » si je peux exersize quelques idées intéressantes que j'ai flottant dans ma tête. Le gameplay ne va pas être une exploration de donjon, mais en tout cas, l'affichage va être fait dans un fasion similaire, avec des caractères simples ascii.

Etant donné que ceci est un exercice d'auto, je cherche à code le plus de moi-même .

Finalement, je voudrais avoir le jeu sur runnable mondes de jeu arbitrairement grandes. (Au point où j'enVision havening le jeu en réseau et la durée sur plusieurs moniteurs dans un laboratoire informatique).

En ce moment, j'ai un code qui peut lire et écrire à des sections arbitraires d'une console de texte, et un système de simple partitionnement mis en place afin que je puisse trouver efficacement chemin.


Et maintenant la question:

J'ai couru quelques points de repère, et le plus grand goulot d'étranglement est le redécoupage des consoles de texte.

Avoir un monde de jeu grand nécessitera une mise à jour intelligente de l'écran. Je ne veux pas avoir à re-pousser tout mon tampon de jeu toutes les images ... J'ai besoin quelques conseils sur la façon de le configurer de sorte qu'il ne tire que des sections du jeu ont été mis à jour ont. (et pas seulement des caractères individuels que j'ai maintenant)

Je suis manipule la console Windows via windows.h, mais je serais également intéressé à obtenir pour fonctionner sur des machines Linux sur un client PuTTY connecté au serveur.

Je l'ai essayé d'adapter certaines routines de traitement vidéo, car il y a près d'un 1: 1. Rapport entre pixels et de caractère, mais je pas eu de chance

Vraiment je veux une explication simple de quelques-uns des principes sous-jacents. Mais quelques exemples (psudo) le code serait bien aussi.

Était-ce utile?

La solution

Je ne vais pas prétendre comprendre cela, mais je crois que c'est proche de la question derrière légendaire chaîne à problème de correction -string.

Autres conseils

Utilisez Curses, ou si vous devez faire vous-même, lisez les codes de contrôle VTnnn. Les deux doivent travailler sur les fenêtres et * nix termes et consoles (et Windows). Vous pouvez également consulter le code source nethack pour obtenir des conseils. Cela vous permettra de changer des caractères à l'écran chaque fois que des changements se sont produits.

  

Avoir un monde de jeu grande volonté   exiger une mise à jour intelligente de la   afficher. Je ne veux pas avoir à   re-pousser tous tout mon tampon de jeu   cadre ... Je besoin de quelques conseils sur la façon   pour le mettre en place afin qu'il ne tire que   sections du jeu ont eu   mis à jour. (Et non seulement individuel   personnages que j'ai maintenant)

La taille du monde du jeu est pas vraiment pertinent, comme tout ce que vous devez faire est de travailler sur la zone visible pour chaque client et envoyer ces données. Si vous avez un écran de la console de 80x25 typique alors vous allez être envoyer seulement 2 ou 3 kilo-octets de données à chaque fois, même si vous ajoutez dans les codes de couleurs et autres. Ceci est typique de la plupart des jeux en ligne de cette nature. Mettre à jour ce que la personne peut voir, pas tout dans le monde

Si vous voulez expérimenter en essayant de trouver un moyen de réduire ce que vous envoyez, alors ne hésitez pas à le faire à des fins d'apprentissage, mais nous sommes environ 10 dernières années au point où il est inefficace de mettre à jour un affichage de la console en quelque chose d'approchant en temps réel et il serait dommage de perdre du temps résoudre un problème qui n'a pas besoin de fixation. Notez que le PDF lié ci-dessus donne une solution O (ND), alors que le simple envoi d'ensemble de la console est la moitié de O (N), où N est défini comme la somme des longueurs de A et B et D.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top