Wir nutzen auf der Arbeit SilverStripe das nutzt genau diese Mischung: über ein Script werden alle Dateien automatisch geparsed und die Zuordnung der Indizes zu ihren englischsprachigen default Werten weggeschrieben.
Somit hat man immer Index und den Standard Text zusammen. (Allerdings sollte man sich auf den default-text im Quellcode nicht verlassen, da er ja über die Sprachdatei überschrieben werden kann.)
Das heißt im Klartext, dass auch hebräische, chinesische, ... Funktionsnamen zulässig gewesen wären, was auch der primäre Gedanke dahinter war. Ich frage mich, wer dort so viel Rotwein gesoffen hat, um auf diese Idee zu kommen?
...
Frag mal bei Sun bzw. Oracle an. Java erlaubt das auch.
Es ist auf jeden Fall möglich, dass man in Java Funktionen und Variablen mit allen Schriftzeichen ( aus UTF-16 - außer Klammern, spezielle Steuerzeichen, \ und / ) nennen kann. Man muss dann nur drauf achten, dass man als Encoding der Quellcode-Dateien standardmäßig UTF-16 nutzt.
Ich halte mich aber an die Konvention alle Variablen und Funktionen in englisch zu deklarieren.
Übrigens muss ich mich in Rahmen eines "Praktikums" gerade mit modellgetriebene (nicht modellbasierte!) Softwareentwicklung mit EMF und Entwicklung von Plugins und Editoren mit GEF auf Basis von Eclipse rum ärgern. Die Modelle selber und den Quellcode automatisch daraus erstellen ist kein großes Ding, aber der Code den man für GEF erstellen muss ist echt schwer und umständlich.
Habt ihr schon mal modellgetrieben etwas entwickelt?
PS: Modellgetrieben != Modellbasiert
(Da will einer einen humanoiden Roboter bauen, der über Windows läuft und dessen Software von vielen Personen modulweise entwickelt werden soll, genauso wie die Hardware, was das ganze zu einem billigen "no-brainer" werden lassen soll... Tjo.)
Dieser Absatz ist ja genial:
Zitat von TESLACOIL
Some one might be into robot hands so will focus on this, another persons interest may be object recognition or speech output. By using a single physical body plan and by separating all the code into stand alone exes which share data via simple txt files it is possible to build something pretty amazing for a fraction of the time money and effort.
...
Zeigt mir bitte mal, wie man über "simple txt files" in einem humanoiden Roboter, in Realtime Daten zwischen für "robot hands" oder "object recognition" zuständige "stand alone exes" austauschen soll. ROFL.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!
[...] Zeigt mir bitte mal, wie man über "simple txt files" in einem humanoiden Roboter, in Realtime Daten zwischen für "robot hands" oder "object recognition" zuständige "stand alone exes" austauschen soll. ROFL.
...
Jede Anwendung liest zehnmal pro Sekunde die für sie zuständigen txt-Dateien. Wenn irgendeine Anwendung ihr eine Nachricht schicken will, wird die in die txt geschrieben, und die andere Anwendung liest es. It's not a bug, it's a feature!
Jede Anwendung liest zehnmal pro Sekunde die für sie zuständigen txt-Dateien. Wenn irgendeine Anwendung ihr eine Nachricht schicken will, wird die in die txt geschrieben, und die andere Anwendung liest es. It's not a bug, it's a feature!
...
Nur 10x pro Sekunde? Fail, zu langsam für anspruchsvolle Sachen. 1000x pro Sekunde? Fail, zu viele unnötige Festplattenzugriffe, außerdem kann man ja nicht gleichzeitig auf eine derartige Datei zugreifen.
Es würde funktionieren, wenn die Datei ein Memory Mapped File wäre, allerdings wäre dann "simple txt" wohl nicht das Format meiner Wahl.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!
warum überhaupt dateien? Wenns um Kommunikation geht, etwas utopisch, Messages und dann die Daten über eine mit der Message gesendeten Pipe schicken. Oder GlobalMemory.
Vorallem sollte von "simple txt" nicht etwas irgendwas mit sgml oder gemacht werden. dauert viel zu lange zum parsen. direkt vordefinierte binäre strukturen.
Nur 10x pro Sekunde? Fail, zu langsam für anspruchsvolle Sachen. 1000x pro Sekunde? Fail, zu viele unnötige Festplattenzugriffe, außerdem kann man ja nicht gleichzeitig auf eine derartige Datei zugreifen.
...
Wer sagt, dass Textdateien unbedingt auf der Festplatte liegen müssen?
Eine RAM-Disk würde auch gute Dienste machen
warum überhaupt dateien? Wenns um Kommunikation geht, etwas utopisch, Messages und dann die Daten über eine mit der Message gesendeten Pipe schicken. Oder GlobalMemory.
Vorallem sollte von "simple txt" nicht etwas irgendwas mit sgml oder gemacht werden. dauert viel zu lange zum parsen. direkt vordefinierte binäre strukturen.
...
Vielleicht, weil der Kerl, der das Projekt anstößt, noch nie von IPC gehört hat?
What is the output of this program going to look like?
"1", one would probably think.
You are wrong, it's "-1".
But mind you, this is not a bug. It's merely a result of how signed integers work. The absolute value of a number with only the highest bit set (in any kind of integer, so it applies to Byte, Short, Integer and LongInt) will be negative! Actually, Abs(x) will return x in this case.
Think about it! The range of a signed 32-bit integer goes from -2147483648 (-&h80000000, which is +&h80000000 if you cast treat it as unsigned!) to +2147483647 (+&h7FFFFFFF). The absolute value of -2147483648 would be +2147483648, but this value needs 33 bits including the positive sign bit! Thus, an overflow occurs and the 32-bit value returned by Abs() will again be -2147483648.
A variation of this pitfall is:
This code will output "Neutral number!" if you input 0, but also if you input 2147483648 or -2147483648!
Just keep this in mind. It might produce some nasty bug one day if you blindly assume that Abs(x) will never be a negative number!
Coole Sache! Mit libGDX haben wir über das letzte Jahr hinweg auch ein Projekt entwickelt, das ist echt ein schönes Framework. Bin gespannt auf deine Engine.
Aktuell macht der Entwickler Tests um zu schauen ob er das Ganze nicht auch auf Console zum laufen bringt (Android, iOS und WebGL geht ja schließlich auch so why not). Es gibt aber einige Sachen die mich stören und wo ich mit wünschte man würde mehr plattform spezifische Features einbaut (vor allem was sound angeht)
Ich arbeite eigentlich die ganze Zeit dran und man kann schon damit arbeiten, eine einfache Klasse die z.B. BasicGame oder Game implementiert und vom GameContainer verwaltet wird kann schon für einfache Sachen genutzt werden. Als Test soll auf jeden Fall ein Tetrisklon her (Will auch gleich zeigen wie man Speicher sparen kann, z.B. mit der ObjectIntMap).
Für Sound nutzen wir beim Cuina Project Paulscode Soundsystem.
Java und Sound ist immer so eine Sache.
Ich fände es schön, auch wenn man ein Konkurrenz-Projekt baut, dass man zumindest soweit zusammen arbeitet, das Maps und Spieldaten einfach von Engine X auf Engine Y portiert werden können. Ich schlage da vor zusammen einen minimalen projektunabhängigen offenen Standard zu entwickeln (und gegebenenfalls auch zu erweitern). Wie und ob man nun den Standard implementiert ist nun dem/den Entwickler/n offen gestellt.
Mein MapSystem ist komplett offen Es funktioniert weil ich raw bytes schreibe und lese und das ganze dynamische laden kann. Übrigens baue ich keinen Maker oder so. Nur eine Engine. Und diese Engine werde ich auch nicht weiter groß pushen Wer will kann sich da nehmen was er will (Ich meine, ich hab das nicht umsonst mit BSD als Lizenz gemacht). Also sie das nicht als Konkurrenz.
@Sound
Ah ja, ich würde es auch nutzen wenn es nur um Desktop ginge. Aber so einfach ist die Sache leider nicht. Allein Web ist Sound irre kacka. libgdx nutzt ein eigenes system zum abspielen von Sounds und Musik das wie auch alles andere in der Engine auf den Backends beruht. Es funktioniert durch Interfaces aber es gibt eben Sachen die nicht möglich sind. Es gibt z.B. keine setPosition method für Musik (Obwohl es für Desktop und Android nicht schwer ist zu implementieren). Diese Drawbacks muss man halt beachten.
Java und Sound ist imho keine große Sache. Wenn ich schon OpenGL und Java nutze (was auch libgdx tut), kann ich auch OpenAL nutzen (Pauscode System hat ja eine solche Implementation für LWJGL). Ich finde eher das viele Engine extrem lacken was Sound angeht. Es gibt nie Möglichkeiten Sound dynamisch zu behandeln wie in Zelda oder SSX. Das muss man selbst erledigen (auch hier bietet libgdx eine Möglichkeit über ein AudioDevice, allerdings müssen dann alle Daten selbst geladen und erstellt werden, sprich man muss Ahnung in Sachen low-level haben). Viele Engines haben auch Probleme mit mehr als einem Stream (Danke JOrbis).
Edit:
Übrigens kann man mit der Engine bereits was machen. Ich hab mal meinen Partikeltest auf die Schnelle in die neue Engine gebracht, Ergebnis: