Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Eigene Bibliothek möglich?
#1
Hallo Leute,

wäre es eigentlich möglich in C/C++ oder irgendeiner anderen Sprache eine eigene zusätzliche Funktionsbibliothek zu erstellen oder eine Existierende zu nutzen, und die dann im OS einzubinden, so daß die Funktionen der Bibliothek beim Scripting zur Verfügung stehen? Ich denke da z.B. an Bibliotheken zu den Themen KI, Neuronale Netzwerke und Genetische Algorithmen.

Ciao Jules.
[-] The following 1 user says Thank You to Jules Dreki for this post:
  • Achim (05-21-2021)
Antworten
#2
Ja das geht recht einfach in C#.
Ein Beispiel/Example für OpenSim 0.9.1 gibt es hier:
https://github.com/diva/diva-distributio...dinExample

Für KI AI und das ganze Zeug müste man Python einbinden.
Hierzu muss man aber das Modul an das heutige OpenSim anpassen.
Support for Opensimulator modules written in Python:
https://github.com/realXtend/OpensimPython
IronPython 3 gibt es hier:
https://github.com/IronLanguages/ironpython3
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
[-] The following 2 users say Thank You to Manni for this post:
  • Achim (05-22-2021), Jules Dreki (05-23-2021)
Antworten
#3
(05-22-2021, 12:32 PM)Manni schrieb: Hallo Manni,

erstmal vielen Dank für Deine Tips.

1) Die Python Lösung ist nicht so ganz meins. Ich möchte das jetzt hier nicht in einen Glaubenskrieg hinsichtlich Python ausarten lassen. Wenn jemand darüber ausführlicher diskutieren möchte, eröffnet bitte einen eigenen Thread. Ich persönlich lehne Python als Sprache grundsätzlich ab. Außerdem hatte ich eher eine kompilierte und keine interpretierte Bibliothek im Sinn. Denn gerade die angesprochenen Algorithmen können sehr rechenintensiv sein. Ja ich weiß, man kann Python in Bytecode vorcompilieren, aber die Python-Virtual-Machine muss dennoch in einem zweiten Schritt diesen Bytecode interpretieren und ausführen, wohingegen echte Binaries direkt vom Prozessor ausgeführt werden können. Allerdings mit dem Nachteil das echte Binaries nicht plattformunabhängig sind, und für jedes neue Target neu kompiliert werden müssen.

2) Die C# Variante ist mir von der Sprache her sympathischer. Allerdings sehe ich hier ähnliche Punkte wie bei Python. Es wird auch hier ein Zwischenformat beim Compilieren erzeugt und der JIT-Compiler interpretiert dieses Zwischenformat und führt es aus. Der JIT-Compiler ist damit eigentlich nichts anderes als ein Interpreter, und der Begriff JIT-Compiler ist irreführend. Daher bin ich auch mit C# als Sprache für den OS nicht glücklich. Aber das ist gegeben, und damit keiner Diskussion weiter würdig. JIT = Just in Time (also zur Laufzeit)

Zu der C# Variante habe ich aber noch eine Frage. Soweit ich es mir angesehen habe, scheint es so zu sein, das der C#-Quellcode letztlich nur die Bibliothek csvHelper.dll für den OS nutzbar macht.
---
Ehh ja, dann wäre so eine Lösung vermutlich auch mit Python Quellcode möglich, und hätte auf die Laufzeit der Bibliotheks Algorithmen keinen Einfluß, was selbstverständlich dann auch für den C#-Quellcode gilt. Python ist mir als Sprache trotzdem unsympathisch. Die Bibliothek selbst kann aber dann in C oder C++ geschrieben sein.
---
Sorry das habe ich so nicht gleich gesehen. Ok das heißt, für die eigentliche Bibliothek kann ich C/C++ verwenden, und dafür in der selben Sprache auch ein Testprogramm schreiben.

So aber jetzt bitte zu meiner Frage: Wie geht man mit dem Diva Beispiel um? Wie kompiliere ich den C# Quellcode vor? Laut dem Makefile im Beispiel wird das Script runprebuild.sh aufgerufen, welches wiederum die Prebuild.exe im Bin Verzeichnis des OS ausführt. Heißt das, man plaziert das Beispiel passend in die Struktur einer bestehenden OS-Installation und kompiliert das Modul mit dem Befehl "make prebuild" vor, so daß man später die Bibliotheksdatei und die vorkompilierten Dateien als Binary und als "Bytecode" in andere Installationen hineinkopieren kann?

Ciao Jules!

PS: Gibt es auf den Seiten des OS auch eine Interface-Beschreibung für Bibliotheks-Wrapper? Ich habe dort leider nichts gefunden.
Antworten
#4
Ja gibt es. du schauen hier: http://opensimulator.org/wiki/IRegionModule

Damit habe ich schon PathFinding und MySQL für LSL zugänglich gemacht. Währe also kein Problem auch eine KI einzubinden.
Dazu ist vielleicht auch noch folgenes Intressant: http://opensimulator.org/wiki/OSSL_Scrip...endCommand

Ein Beispiel wie du es einsetzten kannst findest du etwa hier: https://github.com/Sahrea/Chris.OS.Addit...yModule.cs und hier https://github.com/Sahrea/Chris.OS.Addit...tFinder.cs
Dort habe ich eine neue LSL Funktion eingeführt mit der du auf der Region nach Objekten suchen kannst.
Discord: Sahrea#1001
Antworten
#5
Glaubenskrieg brauchen wir nicht Wink
Mit Python steh ich sowieso im Kriegszustand wegen den Viewern,
da sollte man eine bessere Lösung finden die Viewer bauen zu können.
Bei C# sieht es aber auch nicht besser aus,
OpenSim ist für mich eine große Blackbox durch die vielen Objekte (Was ich nicht sehe verstehe ich nicht).
An Python ist gut, das es so viele Bibliotheken gibt für KI und AI, Chatbot sowie Roboter gibt.
Schau dir mal Bullet Physics an, Robotics, Neural Networks,
das ganze feine zeug fehlt im OpenSimulator und das gibt es alles für Python mit 2 Klicks.
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten
#6
Marco irgendwie fehlt mir die Dokumentation für Chris OS Additions.
Dokumentationen
Einzelnen Dokumentationen findet ihr hier:
Scriptfunktionen ( Readme )
Robust Services ( Readme )
Region Module ( Readme )

Ich teste das gerade mit der OpenSim 0.9.2.1160 DEV Master, Extra Scripte und MoneyServer.
Download Linux Version hier: https://www.mediafire.com/file/ilk3xontz...0.zip/file
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten
#7
Ja ich weiß, da hatte ich keine lust mehr zu.

Es gibt noch eine alte Changelog. Das trifft zwar nicht mehr alles zu und ist schon mehr als 1 Jahr alt. https://gist.github.com/Sahrea/9ea12a910...667eda4d04
Aber besser als garnichts.  Big Grin
Discord: Sahrea#1001
Antworten
#8
Hallo Alle Zusammen!

Vielen lieben Dank für Eure Tipps. Ich bin leider noch nicht dazu gekommen, mich mit dem Thema weiter zu befassen. Ich melde mich auf alle Fälle wieder, wenn ich etwas berichten kann.

Ciao Jules!
[-] The following 1 user says Thank You to Jules Dreki for this post:
  • Dina (06-05-2021)
Antworten
#9
Sag mal Marco
kann man nicht ein Plugin machen, um Asterisk im OpenSimulator zu nutzen
so ala AsterNet oder so?
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste