Hallo zusammen,
Ich spinne gerade mit einem guten Informatikerfreund darüber was unser nächstes Projekt sein wird
Dabei wollten wir eigentlich ein 3d Weltraum MMORPG in java schreiben, aber wir haben die java.util.3d.space.environment nicht gefunden schade. Egal, Spaß bei seite.
Wir planen ein MMORPG, also Server/Client basiert. Das besondere daran ist, dass die Grafik vollkommen aus ASCII oder UTF-8 Zeichen bestehen soll.
Das darf man sich im Stil von ADOM vorstellen:
Gibt es so ein Grafik, vllt schon für Python? Oder müssen wir uns selber um ein kleines Toolkit bemühen? NCurses wollen wir nicht verwenden, da es ja nur für Unix verfügbar ist.
Wir planen es außerdem nicht in einer Konsole laufen zu lassen sondern als Textausgabe in einem eigenen Fenster. TKinter oder wxWidgets, dass ist ja relativ egal. Welches Toolkit unterstütz denn Textausgabe mit variablem Hinter- und Vordergrund?
Habt ihr ideen dazu?
Danke schon mal für die bestimmt vielen Responses
phxx
Ascii-Zeichen Grafikenginen für MMORPG in der Konsole
Wenn Ihr sowieso ein GUI-Toolkit verwendet, warum dann ASCII/Text-"Grafik"? Insbesondere weil Text-UIs ja nicht für GUIs sondern für die Konsole sind.
Vielleicht gibt's eine Python-Anbindung an die `libcaca` oder `libaa`. Eventuell reicht schon `ctypes` um das selber zu machen.
Vielleicht gibt's eine Python-Anbindung an die `libcaca` oder `libaa`. Eventuell reicht schon `ctypes` um das selber zu machen.
Ich hab leider grad kein Windows da ums zu testen. Aber soweit ich mich erinnern kann, kann man nur auf Vollbild schalten wobei nur die vertikale Ausdehnung sich ändert. Die horizontale bleibt wohl so wie sie ist. Man könnte evlt mit ein paar Windows System Calls rumtricksen, aber das ist keine schöne Lösung.
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Man kann auch einfach in die Eigenschaften des Fensters gehen und die Terminalgröße hochsetzen.phxx hat geschrieben:Ich hab leider grad kein Windows da ums zu testen. Aber soweit ich mich erinnern kann, kann man nur auf Vollbild schalten wobei nur die vertikale Ausdehnung sich ändert. Die horizontale bleibt wohl so wie sie ist. Man könnte evlt mit ein paar Windows System Calls rumtricksen, aber das ist keine schöne Lösung.
TUFKAB – the user formerly known as blackbird
Ah, ok ... ich hatte mich dabei auf Drag&Drop am Fensterrand beschränkt und das ging nicht
libcaca sieht echt gut aus!
Es gibt auch nen passenden Blogpost dazu, der das einbisschen präsentiert.
In welchen Toolkits gibts denn die Möglichkeit eine Konsole einzubinden? So dass wir zwar die "Engine" in einer Konsole am laufen haben, aber z.B. die Verbindungsoptionen über hübsche GUIs machen können, dass aber alles in einem Fenster bleibt. z.B. noch mit hübsch Statusbar und so weiter.
libcaca sieht echt gut aus!
Es gibt auch nen passenden Blogpost dazu, der das einbisschen präsentiert.
In welchen Toolkits gibts denn die Möglichkeit eine Konsole einzubinden? So dass wir zwar die "Engine" in einer Konsole am laufen haben, aber z.B. die Verbindungsoptionen über hübsche GUIs machen können, dass aber alles in einem Fenster bleibt. z.B. noch mit hübsch Statusbar und so weiter.
ich finde die Idee voll lustig. Ein Spiel komplett aus Ziffern.
Jap, das ist der Reiz daran.Imperator hat geschrieben:ich finde die Idee voll lustig. Ein Spiel komplett aus Ziffern.
Ich hab mir mal libcaca angesehen. Das sieht sehr gut für uns aus. Nur wären wir gerne unabhängig von der Konsole und/oder von bestimmten GUI-Toolkits.
Ich stell mir da so eine ASCII-Engine vor, die nur die verschiedenen Zeichen zurück gibt inklusive informationen zu Farbe usw ... die dann aber erst außerhalb von der Engine im Toolkit (Konsole) ausgewertet werden um den Text auszugeben oder die Farbe hinzuzufügen.
Ich finde es vor allem so schön nostalgisch.
Damals war irgendwie alles einfacher und man konnte auch mehr die Phantasie spielen lassen.
Heutzutage wird einem doch, was Phantasie betrifft, viel zu viel abgenommen.
Was die Darstellung betrifft, auf ein einfaches Fenster wird man wohl kaum verzichten können?
Immerhin sollte in dem Fall ein einfaches über all verbreitetes ausreichen.
Und auch sollte es, so meine Vermutung, kaum irgendwo dann damit Probleme geben, da so ein Fenster ja nicht sehr viel Funktionen benötigt.
Damals war irgendwie alles einfacher und man konnte auch mehr die Phantasie spielen lassen.
Heutzutage wird einem doch, was Phantasie betrifft, viel zu viel abgenommen.
Was die Darstellung betrifft, auf ein einfaches Fenster wird man wohl kaum verzichten können?
Immerhin sollte in dem Fall ein einfaches über all verbreitetes ausreichen.
Und auch sollte es, so meine Vermutung, kaum irgendwo dann damit Probleme geben, da so ein Fenster ja nicht sehr viel Funktionen benötigt.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Das ist ja bei Konsolen Anwendungen so. Du schreibst nur in den entsprechenden Stream, die Konsole oder der Konsolen Emulator stellt es dann dar.phxx hat geschrieben:Ich stell mir da so eine ASCII-Engine vor, die nur die verschiedenen Zeichen zurück gibt inklusive informationen zu Farbe usw ... die dann aber erst außerhalb von der Engine im Toolkit (Konsole) ausgewertet werden um den Text auszugeben oder die Farbe hinzuzufügen.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
ich finde, so ein Spiel muss einfach mit Curses gebaut werden. Nur dann ist es echt :) Vielleicht hilft unter Windows ja wcurses? Ich wusste noch gar nicht, dass das curses-Modul von Python nicht plattformübergreifend ist. Verflucht.
Ansonsten kann es auch nicht so schwer sein, Textzeichen - oder eigentlich ja beliebige Teilgrafiken einer größeren Grafik - in einem Canvas z.B. mit Wx oder Tk anzuzeigen. Bei Java habe ich das nicht nur einmal so implementiert. Die spezielle Pufferung von curses ist ja gerade dafür gemacht, dass man selbst auf richtig langsamen Terminals noch wahlfreien Zugriff auch alle Zeichenpositionen hat.
Und wer braucht schon Farbe? Hier ist mein Projekt vom letzten Wochenende:
(Meine Leistung besteht aber im Umschreiben des ältesten C-Codes für Rogue, den ich gefunden hatte - ich habe das nicht from scratch gebaut)
Stefan
Ansonsten kann es auch nicht so schwer sein, Textzeichen - oder eigentlich ja beliebige Teilgrafiken einer größeren Grafik - in einem Canvas z.B. mit Wx oder Tk anzuzeigen. Bei Java habe ich das nicht nur einmal so implementiert. Die spezielle Pufferung von curses ist ja gerade dafür gemacht, dass man selbst auf richtig langsamen Terminals noch wahlfreien Zugriff auch alle Zeichenpositionen hat.
Und wer braucht schon Farbe? Hier ist mein Projekt vom letzten Wochenende:
(Meine Leistung besteht aber im Umschreiben des ältesten C-Codes für Rogue, den ich gefunden hatte - ich habe das nicht from scratch gebaut)
Stefan
Sieht gut aus =)
Ich begeister mich immer mehr für libcaca. Schreib dafür gerade rudimentäre Pythonbindings. Das scheint ganz gut und einfach zu sein. Und macht Spaß =)
Muss nur noch ausprobieren ob man das evtl auf was anderes als ne Konsole ausgeben kann.
Ich begeister mich immer mehr für libcaca. Schreib dafür gerade rudimentäre Pythonbindings. Das scheint ganz gut und einfach zu sein. Und macht Spaß =)
Muss nur noch ausprobieren ob man das evtl auf was anderes als ne Konsole ausgeben kann.
So, ich hab jetzt mal Bindings für libcaca mit Hilfe von ctypes erstellt. Allerdings hab ich gerade ein Problem:
ich lade die Library mit
allerdings findet er dann natürlich die aus dem Repository installierte version. Diese ist beta1. Ich würde aber viellieber gerne die Version aus /usr/local/lib/libcaca.so.0 laden (beta13) ohne den Code zu verändern (damit er auf anderen Systemen weiterverwendbar bleibt)
Wie könnte ich das denn bewerkstelligen?
In der ctypes Doku hab ich nix gefunden.
phxx[/code]
ich lade die Library mit
Code: Alles auswählen
ctypes.cdll.LoadLibrary('libcaca.so.0')
Wie könnte ich das denn bewerkstelligen?
In der ctypes Doku hab ich nix gefunden.
phxx[/code]