Immer wieder aktuell

:   Bots für City4All
Von 14 bis 0 Uhr VRT streunen in Bellevue einige Bots von mir rum
Auch da bin ich selten und unter dem Nickname Haksi unterwegs.


Warscheinlich fragt ihr, was ich mit den Bots in Bellevue mache:


Die ganze Sache begann mit meinen Testbots, der Möve Jonathan und dem Hund Hasso:
Diese Bots schrieb ich vor langer Zeit, als ich begann mich in die Materie einzuarbeiten. Zuerst in Visual Basic mit einem AW-SDK-OCX von Mr.Grimm.

Jonathan flattert vor den Augen des Users herum, der sich als letzter bewegt hat. Hasso folgte seinem Herrchen Bagder in würdevoller Entfernung, der zu der Zeit seine ersten Avatar-Experimente begann.

Auch spätere Bots entstanden meist so, das Badger einen speziellen Wunsch hatte und mich die Umsetzung faszinierte. Leider fehlt es mir meist am Durchhaltevermögen, um dann herausragende Ergebnisse zu erzielen.
Das liegt auch an der Fülle meiner sonstigen Projekte: z.B. meine zwei Kinder, mein Gewerbe für Softwareentwicklung/Computertechnik - denn mit 3D kann man ja bekanntlich kein Geld verdienen :( - der Hagviewer und meine Webprojekte: www.schachduell.de und www.kreckow.de. Jetzt wo ich endlich diese Seite in Arbeit nehme und um Mithilfe bitten kann, wird hoffentlich alles anders..

***

Die erste Version von Bellevue bestand aus einem Groundobjekt, das ein unterirdisches Höhlensystem darstellte: zwei lange Gänge, die sich in der Mitte kreuzten, dort gab es jeweils einen grossen Raum.
Noch eine ebene tiefer schuf ich ein zweites Höhlensystem, aus identischen Gewölben, die Badger bereitstellte: Gänge mit geschlossenen Türen, mit offenen Türen, ohne Türen, quadratische Eckelemente, die Abzweige in 2, 3 bzw.4 Richtungen zuliessen.

Ein "dungeon-bot" überwachte das inventury der user.

Klickt dieser auf
- eine offene bzw. geschlossene Tür (door objekt: door*.rwx) bzw. einen Hebel (hebel*.rwx), so wird diese/r geschlossen bzw. geöffnet oder der Hebel umgelegt, wenn sich mindestens eines der key objekte die in der description aufgezählt sind in seinem inventury befinden oder die description leer ist.
Alle door- und Hebelobjekte, die in der decription aufgezählt sind, werden ebenfalls geöffnet/geschlossen/umgelegt,
Öffnen, schliessen bzw. umlegen erfolgt durch XOR 1 des letzen chars vor dem .rwx des objektnamens: aus door1.rwx wird door0.rwx und umgekehrt.
- ein "nimm" objekt, so wird dieses zu seinem inventury hinzugefügt und aus der Welt gelöscht (z.B. Schlüssel).

- show-objekt, so wird es nicht aus der Welt gelöscht, aber trotzdem zu seinem inventury hinzugefügt, natürlich nur, wenn es sich dort noch nicht befindet (so eine Art an die Wand geschriebener Zauberspruch).

In Zusammenarbeit mit Teleportern und unsoliden Wänden und Fussböden, lassen sich damit einige interessante dungeons gestalten, für den richtigen Spielspass bedarf es allerdings noch einer interessanten Spielidee und einem anstrebenswerten Ziel.
Ausserdem sollten Elemente eingebaut werden, die zur Zusammenarbeit anregen und das Onlinespielrecht fertigen - das Projekt hatte ich in VB mit dem erwähnten OCX von Mr.Grimm gechrieben, es befindet sich auf irgendeiner meiner Sicherungs-CDs in den Tiefen meinens Schreibtischs. Ich kann nicht sagen, in welchem Zustand ich es hinterlassen habe. Inzwischen hat sich Bellevue auch gewaltig verändert. Die beschriebenen Aufgaben soll eigentlich Nathan übernehmen. Mit Hilfe dieses Engine ein interessantes Spiel zu bauen, sollte eigentlich machbar sein; ich mach das warscheinlich nicht, wenn sich aber dafür jemand finden würde, wäre ich sehr froh.

***

Badger wünschte sich schon immer eine Uhr. Eine Forderung aus dem alten German, dass man eine Uhr braucht und eine Jukebox, die es naturlich als freie Scripte im Netz gibt.
In TRAV hatten wir das erste grössere botprojekt, bei dem ich diese Wünsche miteinbaute.
Wir hatten dort eine Digitaluhr vor der GSD-Zentrale und eine grosse Bahnhofszeigeruhr auf dem Landepunkt, beide gestellt nach MEZ, weil sich die VRT in C4A noch nicht so etabliert hat.

Einige Synchronizitäts-Probleme gibt es mit der Jukebox und mit Filmsequenzen in der Diashow.
Bild und Muke werden nach festem Rhytmus des Servers gewechselt. Der Ablauf wird aber durch den Browser gesteuert, unabhängig von der Serverzeit. Das gibt Verschiebungen, wenn der Clientrechner zu tun hat, z.B. weil der user sich gerade umdreht und deshalb die Filmsequenz angehalten wird bzw. weil noch geladen wird.

Diese Probleme liessen und lassen sich nicht lösen, jedenfalls nicht durch bot-scripts, ein Einbau in den Browser und die model-action-scripte ist allerdings vorstellbar. Vielleicht sieht das die Herstellerfirma in der 7.8er Version des Browsers mal vor:) - eine Alternative stellt die update-Funktion dar, über die im allgemeinen Webcams und MTV angezeigt wird, vorstellbar wäre aber auch, dass ein cgi z.B. die Digitaluhr als *.gif ausspuckt. Was Server und Browser mehr belastet, neu laden per update und cgi alle 60 sek. oder das Ersetzen des Models, was möglicherweise nicht neu geladen werden muss und noch im cache steckt ...
However, bei unserem trav-event erfüllte ich diese U(h)rwunsche. Die an der Decke fahrende Einschienenbahn stellte die Uhren, wechselte die Diashow und bediente die Jukebox, sonst tat sie nichts, als nur herumzufahren.

Konkret für TRAV wollte Badger einen Roboteraufstand in der TRAV-Zentrale inszenieren. Das sah dann so aus: im Raum gegenüber des Hauptquartiers der Terrestrischen Raumaufklärungsverbände waren 5 Modelle der Raumpatrouille-Roboter abgestellt. Betritt jemand diesen Raum, loggen sich an der Position der vorderen Roboter 3 Bots ein, die Spezialavatare anhaben, die wie die oben gennaten Modelle aussehen und dazu strahlenpistolen tragen. Sie schiessen wild um sich bzw. auf den Eintretenden. Da das aber in C4A nicht besonders wehtut, haben wir uns noch was anderes ausgedacht:
Der User wird in die Unterwelt teleportiert. Dort ist es logischerweise schwarz und leer und wenn man nach oben blickt, sieht man dort TRAV immer kleiner werden.
Da damals das von mir verwendete vb-ocx von Mr. Grimm noch kein Zwangsteleportieren unterstützte, musste ich an der Stelle etwas improvisieren:
Die schiessenden Roboter erzeugten eine unsichtbare Box um den eintretenden user. Das klappte nicht immer, auch wurde die Box nicht immer sauber gelöscht, was dazu führte, das manch einer teleportiert wurde, ohne zu wissen warum. Andere wieder "reizten" absichtlich die Roboter um sich "abschiessen" zu lassen.
Aus diesem event zog ich einige Schlussfolgerungen, was für die Besucher in TRAV interessant war bzw. hätte sein können und so planten wir ein weiteres Event in TRAV, mit einigen Zusatzfunktionen:
Per klick auf die Einschienenbahn kann man mitfahren, indem einen die Bahn immer auf ihre neue Position teleportierte (das konnte ich inzwischen ohne unsichtbare Box), Die Fahrt war etwas ruckelig.
TRAV war zwar sehr kein, bestand aber fast nur aus dem Ground-objekt. Deshalb konnte man mit der Einschienenbahn durch viele TRAV-ähnliche Welten fahren. Irgendwann nach der x-ten Wiederholung wendete sie dann und setzte einen im "richtigen" TRAV wieder ab. Nach dem Absetzten war die Bahn wieder frei und der nächste konnte per Klick auf die Bahn mitfahren, solange aber war die Bahn besetzt, und wer drauf klickte, bekam die entsprechende Mitteilung per Flüstern im Chat.

Auch neu bei diesem zweiten event war der "Zentralcomputer TRAV", der versteckt in einer neu gebauten Ecke war und einen grossen Roten Hebel als einziges Eingabeelement besass. Seine Funktion war die Überwachung der "Lebenspunkte". Wenn man sich nämlich dicht vor jemanden stellte und auf den shot-button drückte (auf denjenigen zu Klicken erschien mir zu einfach), dann schoss man auf ihn und wenn Entfernung und Winkel stimmte, wurde der getroffen und verlor einen Lebenspunkt. Das galt sowohl für Roboter als auch für User. Wer keine Lebenspunkte mehr hatte, wurde aus der Welt gekickt.
Die Roboter putzten wie immer die Landebahn, hatten aber eine Besonderheit: sie konnten zurückschiessen. Ünd das taten sie auch, wenn zu viel geschossen wurde in TRAV. Und nicht nur das, ab da verliessen sie auch die Landebahn über den üblichen Zugang und begannen systematisch die ganze untere Ebene abzulaufen und alle aus der Welt zu schiessen. Gedacht war, dass die Roboter gewinnen. Da die User sich aber immer wieder mit frischen Lebenspunkten an der Startposition einloggen können, sollten sie nach erfolgreicher Vertreibung anschliessend diese Startposition überwachen. Die einzige Chance, sie wieder zu befrieden ist, den roten Hebel am Zentralcomputer umzulegen. Dazu muss man den aber erst mal finden und das muss man auch erst mal wissen...

Leider hat dieses zweite trav-Event nie stattgefunden, trotzdem JayDee bei einem meiner Tests höchstpersönlich vorbeikam, um die Landebahn von Robotern zu reinigen (er hatte allerdings zu hohe Privilegien, als dass ihn der Zentralcomputer hätte kicken können). Die beschriebene Funktionalität war mehr oder weniger vorhanden, auch wenn ich wegen ständig neu auftauchender Ideen ein endgültiges Release immer wieder hinauszögerte.
Ich war auf die Universumsadministration angewiesen, um dort den Bot laufen zu lassen, zu der Kontakt aufrecht zuerhalten, mir schwer fiel. Ausserdem wollte die Administration nach dem ersten TRAV-Event keine VB-Bots mehr bei sich laufen lassen. Ich wiederum hatte keine Lust solange online zu bleiben... und bastelte an meinen Pläne immer weiter (z.B. sollten beim Roboteraufstand auch 2 Frogs vorbeikommen...).
Irgendwann wurde aus Platzgründen TRAV abgeschaltet und ich war zu stolz um zu sagen: Moment mal, ich wollt doch da noch ein Event machen... Jetzt wo ich das hier schreibe, bekomme ich allerdings Lust, dieses zweite Event doch noch mal duchzuführen, was auch dadurch erleichtert wird, dass mensch jetzt eigene Welten mieten kann, meine Bots um Nathan vollständig als C++Konsolenanwendungen geschrieben sind und ich jemanden habe, bei dem ich meine Bots des nachts an der Flatrate laufen lassen kann.

Als Kombination aus Jonathan, dem Dungeon-Bot, Einschienenbahn und "Zentralcomputer TRAV" entstand dann Nathan, der z.Zt. die Nachstunden in Bellevue verbringt. Er kombiniert die beschriebenen Funktionen bzw. soll das mal tun.
Jonathan ist allerdings jetzt nur noch für die Namensvergabe verantwortlich. Das Herumgeflattere war einfach zu nervig, auch ignorierte er sämtliche Gebäude, Felsen und Wände. Nathan flattert nicht wie Jonathan herum, z.Zt. steht er still, irgendwo in den Tiefen von Bellevue direkt neben UO12 was der User-Online-Bot des Universums ist (vermutlich ein Xela, der nichts weiter tut, als zu registrieren, wer, wann, warum die Welt betritt und verlässt).

Neuester Wunsch von Badger ist ein Adler, der bedächtig gelegentlich durch das Blickfeld eines Users gleitet und ein Bär, der einsam spazieren geht. Warscheinlich wird Nathan demnächst in den Körper eines dieser beiden schlüpfen - wenn ihn das nicht zu sehr von seiner Arbeit abhält.

Während der Arbeit mit Nathan und noch konkreter mit Eliza, verfolgte mich das Ziel die meist trostlos, langweiligen 3d-Landschaften zu beleben. Solche Versuche gibt es viele (animierte Windmühlen, Fahnen usw. Bots mit Standartsprüchen, die als Auto die Strasse langfahren oder den User kopieren). Die einzig gelungenen Versuche, User zum verweilen zu bewegen sind wohl die Spielebots: persuit, tictactoe, schach, dame, kegeln usw. die zu zweit spass machen. Alles andere ist auch wieder eintönig, da Programme zu Wiederholungen neigen.
Ich wünsch mir jedoch Bots, die interagieren und die die Landschaft ergänzen und im ganzen zum Entdecken einladen, wozu Bellevue - wie ich denke - wunderbar geeignet ist.
Diese Welt ist voll von einzigartigen Gebäuden, versteckten Höhlen und Pfaden, ausgefallen Landschaften, Pfaden und Gewässern. Nirgendwo sah ich bisher eine solche Anzahl an Bars und Kneipen beieinander. Ich meine, der Barkeeper sollte ein paar Sprüche drauf haben und sich womöglich wie Eliza als Seelendoktor aufspielen und soweit möglich auf die sprüche der User reagieren (Oh, wer schreibt mir nur all diese Barkeeper-Dialoge). Ich meine man sollte mit der Bahn auch mitfahren können, wenn sie da schon stoiisch hin und herfährt und der Kutscher sollte bei der Gelegenheit auch etwas über die Landschaft erzählen können, auch sollten sich Bewegungs- und Chat-abläufe frühestens nach dem fünften Mal wiederholen, wegen oben genannter Eintönigkeiten.

Durch Eliza entstand der Wunsch, sämtlich Räume, Höhlen und Plätze zu beleben und dabei einem grösseren Gedanken folgen, der "die Welt zusammenhält", eine Art Spiel, das einen durch alle Ecken von Bellevue führt, zum Verweilen bewegt, kulturhistorische Zusammenhänge erklärt und zu verschiedensten Chats und Aktionen verleitet. Dann wär was los und dann lohnt sichs ein Haus zu betreten, nicht nur um die einzigartige Einrichtung aus dem 16ten Jahrhundert zu betrachten und sich zu wundern, wie klein Zwerge sein müssen, wenn sie so kleine Betten haben :)

Nathan ist für das alles eine Art Server, der z.Zt. folgende Aufgaben erfüllt:

1) Digital-Uhren stellen
2) Analoguhren stellen
3) Musik in den Jukeboxen wecheln
4) Bilder der Diashows wechseln
5) User teleportieren auf Wunsch
6) Bots starten nach Bedarf

1) Digital-Uhren stellen
alle rwx-Objekte die uhr*.rwx heissen, bekommen im Description-Feld die aktuelle Uhrzeit in dem Format hh:mm, diese Objekte sollten also die Description auch anzeigen. (60 Sekunden Update)

2) Analoguhren stellen
zeig*.rwx sind die grossen Zeiger der Analoguhren: sie werden ersetzt und zwar durch andere objekte, deren Namen wie folgt gebildet wird: Alle Ziffern vor dem Punkt werden gelöscht und durch die aktuelle Stunde ersetzt. Dadurch werden verschiedene Zeigerarten ermöglicht, ich wünsche ich mir da noch eine Dali-Uhr, bei der es verschieden lange Zeiger geben sollte. Es müssen zu jedem Uhr-Typ 12 zeig*.rwx Objekte vorhanden sein. (60 Sekunden Update)
zeik*.rwx sind die kleinen Zeiger: sie werden ersetzt, wenn sich jemand in der Nähe befindet und zwar durch andere Objekte, deren Namen wie folgt gebildet wird:
Alle Ziffern vor dem Punkt werden gelöscht und durch die aktuelle Minute ersetzt, Es müssen von jeder Art 60 zeik*.rwx-Objekte vorhanden sein.

3) Musik in den Jukeboxen wechseln
Im Description der Jukebox stehen die Musiken, die abgespielt werden und die Zeiten, wie lange sie spielen sollen. Nathan wechselt sie nach Ablauf dieser Spielzeit, aber nur, wenn sich auch jemand in Bellevue befindet.

4) Bilder der Diashows wechseln
Im Description der Jukebox stehen die Bilder, die angezeigt werden und die Zeiten, wie lange sie bleiben sollen. Nathan wechselt sie nach Ablauf dieser Zeit, es sind auch animierte GIFs für kleinere Filmsequenzen möglich. Aber Vorsicht, die Ladezeit kann Nathan nicht einschätzen, er wechselt auch, wenn die GIF-Sequenz noch nicht abgelaufen ist.

5) User teleportieren auf Wunsch
Sagt mensch zu Nathan: "Bringe mich nach ...", wird er dorthin teleportiert. Vorausgesetzt natürlich, dass Nathan den Platz kennt. Bekannt macht man Nathan solche Orte, in dem man dort unsichtbare Objekte versteckt, die Treffpunkt.rwx heissen, und in der Description den Namen des Ziels tragen. Sie sind das Gegenstück zum Teleporter, der den Ausgangspunkt markiert, der Treffpunkt ist das Ziel. Gedacht sind sie für Spiele, damit man bestimmte Wege, die man schon kennt nicht hundert mal laufen muss (weil der admin Fliegen und User-Teleport verboten hat) sondern man merkt sich einfach die Description des Treffpunkt. rwx und sagt zB: "Natahn, bringe mich zur Stadt" und schon ist man da.
Ausserdem kann man damit Newbies die mit Laufen, Teleportieren und Joinen nicht klarkommen, die Welt zeigen.

6) Bots starten nach Bedarf
Wie der Treffpunkt.rwx liegt auch der Botstarter.rwx unsichtbar in der Welt herum. Bei jeder Userbewegung wird der Abstand zu diesem Objekt überprüft und bei Unterschreitung bestimmter definierter Werte ein entsprechender Bot gestartet. Bot- und Exe-Name sowie die Abstände stehen in der Description des Botstarter-Objektes. Möglicherweise muss man für echte Spiele auch andere Kriterien für Bots finden, mich bewegt dabei der oben beschriebene Gedanke, Räume und Landschaften zu beleben.

Derzeit existieren schon einige dieser Botstarter in Bellevue und die entsprechenden Bots an der Flatrate:

1) spiegel1
2) spiegler
3) spiegelkabinett
4) wache
5) kurier
6) eliza


1) spiegel1
der klassische Spiegelbot, der nip aus C4A, der ortsfeste Imitator, der klassische erste Versuch. In Bellevue steht er z.B. in einem Spiegelschrank in der Burg, er zieht den selben Avatar an wie du, macht die selbe Gestik und dreht sich immer um 180 weiter als du, verlässt aber nie seinen Schrank.

2) spiegler
der Spiegler ist für weite Landschaften gedacht, sein Verhalten ist meist schwer zu verstehen, man sieht da immer jemand rumrennen, manchmal rennt er an einem vorbei:
Eigentlich ist der Spiegler auch nur ein Spiegel, nur etwas echter, als der oben, nämlich nicht ortsfest. Er dreht sich immer um 180 grad dir entgegen, zieht den selben avatar an, steht auf der selben Höhe, macht die selbe Gestik wie du und behält den selben Abstand zu seinen Botstarter-Objekt wie du. Deshalb sieht man ihn immer herumlaufen, wenn man selber läuft. In Bellevue befinden sich die beiden Spiegler Brad und Pit.

3) spiegelkabinett
Eine weitere Variation des Spiegel-Bots gefindet sich im Spiegelkabinett des Rathauses in der Stadt. es sind ihrer 3e "ich", "selbst" und "du". Das spieglekabinett ist ein raum mit 3 spieglewänden, hinter jeder befindet sich ein bot, der sich bemüht, dich maximal zu kopieren. das ihm das nicht immer gelingt macht das spiegelkbinett nur um so komischer.

4) wache
wegen jüngster zwischenfälle hat die stadt jetzt eine geheimpolizei, die die gäste uberwachen soll. und dassieht so aus.
in alle 4 eingangstoren ist ein botstrter versteckt, der die unauffallige stadtwache startet. dieser folgt deinen wegen und kontrolliert alle hauser, in denen du warst. dabei bemuht er sich, einen gewissen abstand zu dir zu waren und moglihst unaufallig zu wirken, wenn du dich umdrehst. letzteres fallt ihm besonders schwer, wenn du an mehreren toren vorbeokommst, und dir deswegen mehrere stadtwachen folgen. da es in der ersten version zu "vergnubbelungen" der stadtwachen kam, habe ich sie angewiesen immer etwas auseinander zu stehen, was sie nicht wirklich unauffallig macht.

5) kurier
der kurier ist ein bote seiner majestat, der auf der kustenstrasse erledigungen besorgt, er hat es dabei meist eilig und schubst hemmungslos jeden von der strasse. der sich in den weg stellt.

6) kutscher
der kutscher fährt von den toren der stadt bestimmte wege ab und kann dich mitnehmen, wenn du ihn dazu aufforderst. ausser dem wegescan habe ich fur den kutscher noch nichts fertig, aber auch der ist hinfällig, wenn badger bellevue in tolculda umbaut. deshalb weiss ich noch nicht, wie man dort einsteigenwird, undwann ich damit weitermachen werde.

7) eisenbahn
wie auch der kutscher ist die eisenbahn bishernur eine idee, das gleisbett liegt schon, wird aber nicht liegen bleiben, da es mehrere bahnhofe entlang des gleisbettes gibt und wohl auch geben wird, muß es aber auch die möglichkeit geben, das man aussteigen kann.

8) eliza

***

eliza stammt von... diese infos und die deutschen dialoge von www.ymir.de und ich habe versprochen für die Verwendung einen Link nach www.allcuma.de zu setzen..

***

Diese Art der dialoge laßt sich beliebig erweitern und auch meine art der reaktionen kann sich über das blosse antworten hinaus erstrecken. So könnten Gegenstände in das Inventury des Users hinzugefügt, Wande versetzt, Teleports ausgelöst, Objekte erzeugt oder gelöscht werden. Das habe ich zwar noch nicht drinne, liese sich aber durch Erweiterung der Syntax ohne weiteres einben.
Spannend wäre es sicher auch, wenn sich auf entsprechende Stichworte hin das Dialog-Script ändert: So könnte man sich im Laufe des Gespräches vorarbeiten, in etwa wie bei einem Rollenspiel-Solo, oder einfach nur Stichworte hinzufügen wie bei Ultima..

***

hilfeaufruf...

***

ich schaffe es nicht alleine, sämtliche räume mit eliza-derivaten zu beleben, deshalb nun mein hilfeaufruf:
wer hat lust in bellevue die patenschaft über einen bot zu überbehmen und ihm das chaten beizubringen?

***

beschreibung der eliza-dialoge

...

 







Hagen Meutzner Softwareentwicklung-Computertechnik

[ zur startseite ]