sma hat geschrieben:Selbst wenn man 50 LoC pro Stunde schafft, sind das 2000 Stunden Arbeit - oder etwa 1 1/2 Personenjahre.
Ich habe mir zwischen Weihnachten und Neujahr das ganze mal angesehen. Es sieht nicht ganz so schlimm aus als ich dachte.
Ich habe mir erstmal die Datenserver angeschaut, das sind der Gridserver, userserver, Inventoryserver und der Assetserver. Diese laufen bei mir auf einen Rechner, die sims laufen auf 2 anderen Rechnern. Da der c# Quelltext wirklich umfangreich ist, habe ich mir lieber mit ngrep den netzwerkverkehr angesehen.
Dort sieht alles relativ einfach aus, also habe ich das Projekt gestartet und ein wenig programmiert.
Der umfangreichste Teil war einfach ein tool zu schreiben, das eine Postgres-Datenbank abcheckt und ggf. Tabellen und spalten anlegt oder modifiziert.
Dav1d hat geschrieben:oder man macht etwas komplett neues ohne etwas zu portieren..
Genau das ist es, was gemacht werden sollte ! Denn
opensim ist ein fantastisches Projekt, aber zusehr darauf bedacht, alles möglich zu machen und möglichst elegant zu programmieren.
Als ein Beispiel, der userlogin:
der Viewer sendet eine xmlrpc anfrage, c# startet eine wirklich umfangreiche aktion, mehrere 100 Zeilen Code, ich schätze sogar über 1000 Zeilen. Dann werden die Ergebnisse zu anderen Types convertiert und zurückgesendet. Sehr elegant, sehr aufwendig.
Ich habe es in Python so gelöst:
Code: Alles auswählen
dicResult = self.getLoginData(args['first'], args['last'], args['passwd'], args['start'])
return dicResult
Code: Alles auswählen
def getLoginData(self, sUsername, sLastname, sPassword, sStartPosition):
sSql = "select users.uuid as uuid, users.lastname as last_nam....
result = self.db_com.xmlrpc_executeNormalQuery(sSql)
return result[0]
Im Prinzip sehe ich es so: Es werden hauptsächlich Daten aus einer SQL-Datenbank gelesen und gepseichert, ansonsten nur noch einige Überprüfungen. Das
opensim-projekt kann nur eine Untermenge an SQL Befehlen nutzen, da sie sqllite, mysql, oracle, mssql, ... usw. unterstützen. Damit wird alles sehr umfangreich und kompliziert. Wir würden hier mit ca. 10% an Code klarkommen, denn wir könnten alles auf Postgres anpassen, trigger, functions und Proceduren nutzen.
Ich habe ein wenig weiter programmiert, und die sims melden sich bei dem Python-Server erfolgreich an und der userlogin geht jetzt bis Stage 8 ( von Stage 10).
Also, ich habe das Projekt bei Berlios angemeldet und dort meine Sachen ins SVN gestellt:
http://developer.berlios.de/projects/py3dworlds/
Wie gesagt, ich finde das Projekt durchführbar und das sogar in einer akzeptablen Zeit. Vielleicht haben ja doch ein paar von euch Zeit und Lust mitzumachen.
Tschüss
Jürgen