Archiv verlassen und diese Seite im Standarddesign anzeigen : A3, new scripting technology
Für diejenigen die es noch nicht wissen, BIS wird die Scripting Engine erweitern mit Java.
Siehe: Take On Java - Bohemia Interactive Forums (http://forums.bistudio.com/showthread.php?t=128800)
Eine erste Version sollte schon in dem kommenden Take On Helicopters Patch 1.03 aufschlagen (dort wird es getestet) hat es aber nicht mehr geschafft.
- the engine should be be able to run code written in any programming language that can compiled for Java Virtual Machine but we did not experiment with it so far ( quite few, Logo anyone )
for now, bridge to all existing scripting commands is present
- it is possible create new scripting commands to take full advantage of JVM (performance, nicer interface)
- Arma 3 is going to build upon this technology, so if you can, Take On Java now and help us to shape it up
Xeno
Xeno, kannst du dir vorstellen, dass das Vorteile bringt?
Oder eine neue Baustelle dazu?
Minecraft meets ArmA :zahn:
Tolle News, auch wenn ich wohl nie ein Coder werden sollte :-(
Hoffentlich wird es nicht was sql etc angeht zu sehr eingeschränkt.
Alles über directx hacks machen zu müssen, ist zwar toll aber wieder ein
Flaschenhals mehr.
Mich überrascht BIS, nach den ganzen Jahren immer wieder. :daumen:
Ich hoffe Xeno meinte das mit der extremen Veränderung bezüglich Modding, das Thema neue Scripting-Engine hab ich im BIF auch schon etwas verfolgt,
aber das es Java wird war mir noch neu. ;)
Wie das mit neuen Scriptbefehlen funktionieren soll ist mir allerdings etwas schleierhaft, derzeit viele mir dazu eine ähnliche Anwendung ein wie bis Dato mittels Funktionen.
Hoffentlich kann man das auch für eine gescheite Schnittstelle in und aus ArmA3 nutzen, denn dann stehen wirklich enorme Möglichkeiten offen ! :daumen:
flickflack
16.12.2011, 13:14
Wenn sie schon Java nutzen *würg* und nicht .Net(/Mono), sollte man gleich mal vorschlagen, sich von den D3D-Renderpfaden zu lösen und OGL einzusetzen, dann klappts auch mit Arma³ für den Pinguin :)
...hät's LUA nicht auch getan?!
Pinguin :)
...hät's LUA nicht auch getan?!Wer braucht schon son Federvieh ohne Flügel. :angel:
Was die Leute alle nur mit Lua haben ?
Java ist da doch wesendlich weiter verbreitet und ganz nebenbei auch noch für andere Dinge zu gebrauchen. :daumen:
Wenn sie schon Java nutzen *würg* und nicht .Net(/Mono)
Mono wäre auch mein Wunsch gewesen (als Mono Contributor :p) und det wird in vielen Spielen mittlerweile ja nu auch genutzt. Aber wer weiß, eventuell wird es auch dafür noch Unterstützung in Zukunft geben ;)
Java fällt mir ad hoc kein Titel ein der das als Scripting Engine benutzt (rede jetzt nicht von sowas wie Minecraft was komplett in Java geschrieben ist).
Ich hoffe Xeno meinte das mit der extremen Veränderung bezüglich Modding, das Thema neue Scripting-Engine hab ich im BIF auch schon etwas verfolgt,
aber das es Java wird war mir noch neu. ;)
Das meinte ich damit :)
Java kennen ein paar Leute mehr als sqf, mal abgesehen davon das Java wesentlich schneller in der ArmA Engine laufen wird als sqf.
Wie das mit neuen Scriptbefehlen funktionieren soll ist mir allerdings etwas schleierhaft, derzeit viele mir dazu eine ähnliche Anwendung ein wie bis Dato mittels Funktionen.
Momentan gibt es eine Bridge. Denke über kurz oder lang wird diese Bridge mit den Scripting Befehlen verschwinden und alles in Klassen aufgehen (wäre zumindest wünschenswert). So in der Art "class Group" mit Methoden und Feldern die für diese Klasse interessant sind z.B.
Hoffentlich kann man das auch für eine gescheite Schnittstelle in und aus ArmA3 nutzen, denn dann stehen wirklich enorme Möglichkeiten offen ! :daumen:
^this
Xeno
flickflack
16.12.2011, 13:45
Mono wäre auch mein Wunsch gewesen (als Mono Contributor :p) und det wird in vielen Spielen mittlerweile ja nu auch genutzt. Aber wer weiß, eventuell wird es auch dafür noch Unterstützung in Zukunft geben ;)
Joar so wie Unity bspw., wo du mit C# gegenharken kannst...
Das heißt ich brauch für Arma³ jetzt ne installlierte JVM auf meiner Box? Das riecht doch :)
Wer Lust hat sich in Java einzuarbeiten dem hilft möglicherweise folgender Link:
Arbeitsgruppe Autonome Intelligente Systeme - Lehre - WS11/12 - Informatik I (http://ais.informatik.uni-freiburg.de/teaching/ws11/info/folien.php)
Dort gibt es unter "Vorlesungsaufzeichnungen" auch die gesamten Lesungen als Aufzeichnung.
Ich empfehle außerdem: Eclipse ( http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/indigosr1 )
Es ist nicht so schwer wie man denkt. Aber man muss etwas Zeit investieren.
Snevsied
03.01.2012, 11:07
Viel wichtigerer wäre es, dass sie Java wirklich komplett unterstützen und nicht, dass es dann ein kastriertes etwas kommt, wo man nur die Strings und Integer ausgeben kann*.
*sehr vereinfacht ausgedrückt
flickflack
03.01.2012, 13:14
Ich kann mir vorstellen, dass "lediglich" Sprach-Bindungen hergestellt werden. Bin auf die Architektur gespannt. Gibt's da schon Details, die ich vllt überlesen/ignoriert habe?! Nen Python-Binding hät's ja vllt auch getan, oder eben LUA (http://lua-users.org/wiki/BindingCodeToLua). Die Sprach-Features von Java können da nicht der überzeugendste Punkt gewesen sein...so iwi. Und das Lizensierungshickhack sicher auch nicht. Und da sie schon die Boost-Libs (http://www.boost.org/) nutzen frage ich mich wirklich nach dem Grund, für diese Entscheidung.
"Delegates/Function Pointers over Observers" sag ich ja immer :)
So sieht das z.B. aus:
package mypackage;
import com.bistudio.JNIScripting.RVEngine;
public class MyClass {
public static Object outputHelloWorld(Object[] args) {
RVEngine.hint("Hello world");
return null;
}
}
Xeno
flickflack
03.01.2012, 13:37
K, Binding/Mapping also.
Edith: Exceptionhandling wie?! Werden die Exceptions in die RVE gebubbelt?
Edith²: @Lester: Weil man auch mit Kanonen auf Spatzen schießen kann :)
Snevsied
03.01.2012, 13:38
Gibt es eigentlich schon eine API zum reinschnuppern?
Take On H. 1.04 abwarten, dann wissen wir wie es implementiert ist und wie die API aussieht.
(Java wird es nicht für A2/OA geben).
Xeno
Snevsied
03.01.2012, 14:02
Also wenn es dann auch Serversachen dabei sind, dann ist doch Cheaten usw. als offiziell freigegeben oder? Den man könnte ja z.B. eine App für Tables schreiben, die die Postionen aller Mitspieler anzeigt usw.
Wenn der Umfang der API wirklich so groß sein wird.
flickflack
03.01.2012, 14:07
Das kannste schon seit OFP machen :)
Edith: Das mit der API hat natürlich den Vorteil, dass sie damit DLL-Injection/D3D-Hooks unterbinden können.
Snevsied
03.01.2012, 14:10
Aber nicht so bequem wie es wird oder?
flickflack
03.01.2012, 14:13
Kommt drauf an wo man sich als Coder wohlfühlt. Beim Prügeln von APIs oder eben low-level :)
Snevsied
03.01.2012, 14:17
Ja, das stimmt. Aber für Low-Level brauchst du gewisses Interesse :D Bei API ist es doch etwas einfacher.
flickflack
03.01.2012, 14:19
Unser Interesse hieß damals TKKG (Name verändert, aber den Eingefleischten ist die Bande unter dem richtigen Namen bekannt) :)
Snevsied
03.01.2012, 14:31
Du alter Cheater! :naughty:
flickflack
03.01.2012, 14:32
Das war eher Counter-Cheating :lol:
Nachdem jetzt die erste Java Implementation in TOH drin ist kann ich nur sagen, darauf hätte man getrost verzichten können.
Um ein Hint auszugeben ist das Overkill. Der Debugger und simpelste Ausgaben ist alles was geht.
Es ist noch nichtmals möglich Klassen Instanzen zu erstellen und Methoden und Felder eben dieser anzusprechen, es funktionieren nur statische Methoden die auch noch exakt immer die gleichen Paameter und Rückgabewerte haben müssen (mal davon abgesehen das eine Rückgabe an die Engine mit return exakt gar nichts tut).
Der Versuch die anderen Spiele Objekte anzusprechen funktioniert entweder gar nicht oder endet zu 99% in CTDs.
Summa sumarum: Eventuell hätte man sich mal professionelle Hilfe an Bord nehmen sollen (und eventuell nicht Java weil es einfach nicht für sowas gemacht ist).
Setzen, 6
Xeno
MrCharles
26.02.2012, 11:50
Hätte man es anders erwartet :ugly:
Vielleicht finden sie ja noch jemanden der bereit ist mit glühenden A3 Steinchen + Förmchen zu jonglieren? Es ist doch noch sooooooo viel Zeit bis zum Release!! Ob dann alles konsistent ist und paßt steht auf einer (oder mehreren) anderen Seite des Buches mit den BIS Siegeln. :D
Sorry Xeno, aber erwartest du von BIS echt noch, dass die mal ordentliche Arbeit abliefern? ;)
Die Hoffnung habe ich spätestens seit ArmA 2 komplett verloren. :zahn:
INNOCENT&CLUELESS
26.02.2012, 15:22
Wie kann sich eine neue Methode durchsetzen wenn sie nicht im ersten Wurf 99% des bestehenden Umfanges ersetzt?
@Xeno
wie schaut es dann mit einer sauberen bidirektionalen Schnittstelle nach "Draußen" a la Datei Ein-/Ausgaben aus ?
Gibt es da jetzt via Java bessere Möglichkeiten oder wird man weiterhin mit glühenden Nadeln gestrickte System nutzen müssen die "von hinten durch die Brust ins Auge" arbeiten ?
Snevsied
27.02.2012, 08:31
Also wenn ich Xeno richtig verstanden habe, dann geht wohl nur ein "hint" und mehr nicht. Das errinert mich an die alte Firma, große Versprechen für geile Produkte und dann wurde doch nichts daraus.
@Xeno
wie schaut es dann mit einer sauberen bidirektionalen Schnittstelle nach "Draußen" a la Datei Ein-/Ausgaben aus ?
Hab das leider nicht ausprobiert, sehe aber ehrlich gesagt keinen Grund warum das nicht gehen sollte (aufgrund des fehlenden Zugriffs auf den Source der Java VM kann BIS Datei Operationen dieser nicht unterbinden, wobei ich nicht gecheckt habe ob sie irgendwelche Java VM IO Dateien gelöscht haben; das einzige was sie selbst in der BIS jni jar machen ist den Zugriff auf class Files auf das Spiele-, Missions- und User-Directory zu beschränken, das Ganze ist in Java geschrieben, also sollte IO für alles andere auch noch möglich sein).
Die Oracle JRE 7 ist übrigens Bestandteil des TOH Beta Patches und liegt in dem Verzeichnis jre im Beta Folder. Nur wenn man selbst was entwickeln möchte mit Eclipse/whatever Editor braucht man auch eine JDK Installation.
Gibt es da jetzt via Java bessere Möglichkeiten oder wird man weiterhin mit glühenden Nadeln gestrickte System nutzen müssen die "von hinten durch die Brust ins Auge" arbeiten ?
Ehrlich gesagt, es gibt im Moment noch nicht mal ansatzweise einen Grund irgendwas mit Java zu machen, die Implementation des Ganzen ist momentan einfach nur grottig schlecht.
Bessere Möglichkeiten, niente. Was man jetzt hat ist eine schlecht gemachte Bridge zu den Scripting Befehlen im Spiel, Beispiele (ausm Kopf geschrieben):
RVEngine.sideChat(RVEngine.player(), String.valueOf(irgendeineintegervar));
oder
public static Object getAliveUnits(Object[] args) {
if (args.Length == 0) return null;
if (!(args[0] instanceof RVEngine.GameGroup)) return null;
int result = 0;
for (Object unit: RVEngine.units((RVEngine.GameGroup)args[0])) {
if (RVEngine.alive((RVEngine.GameObject)unit)) result++;
}
RVEngine.hint(String.valueOf(result));
// Edit: return null hier weil man nix an den aufrufenden jCall Scripting Befehl
// zurückliefern kann, geht einfach nicht
return null;
}
Ein "{alive _x} count units group" ist wesentlich simpler, in der Java Implementation ist man nur am casten...
Spiele Objekte, egal welche, werden per Java Serialzation hin und her übertragen (in Java geschrieben mit Zugriff auf native). Das kostet mit Sicherheit a. Performance und b. klappt das vorne und hinten nicht.
Kannst noch nicht mal in Java ein GameObject erstellen wie z.B. eine neue Gruppe (sofortiger CTD ohne irgendeine Fehlermeldung und keine Crash Dumps).
Was komplett fehlt ist das was man von Scripting Engines in anderen Spielen kennt, nämlich das Spiele Objekte als richtige Klassen darstellbar sind, also richtiges OO, und auch so vom Spiel an die Scripting Engine und zurück ins Spiel übertragen werden können (und ich bezweifle das sich das wegen fehlendem Zugriff auf den Java VM Source auch bewerkstelligen lässt).
Es gibt zwar die sogenannten gameXXX Klassen, diese sind aber durchweg alle von NativeObject abgeleitet welches eben nur die o.a. Serialisation zur Verfügung stellt und für alle Game Objekte, egal ob Units, Gruppen, Vehikel, etc, gleich sind.
Ein Ableiten von diesen Klassen funktioniert zwar aber man kann exakt gar nichts damit anfangen da es halt kein wirkliches game Objekt in diesem Moment ist sondern nur eine Java Klasse die nix im Spiel erzeugt und Du auch keinen Bezug auf das entsprechende Objekt innerhalb von NativeObject hast.
Also sowas wie:
player().getDamage()
ist nicht möglich.
Was noch in der BIS jni jar drin ist sind Klassen für die GUI (Java AWT) und FSM, aber keine Ahnung ob und wie das funktioniert. Man braucht für die GUI JPanel und die FSM Geschichte scheint daraufhin hinauszulaufen das die States und Conditions in Linked Lists von Java Code abgearbeitet werden.
Desweiteren funktionieren natürlich Eventhandler nicht und die ganze Java Kiste ist auf Missionen und Kampagnen limitiert, also man kann Java nicht in Addons benutzen und halt die Limitierung das man wirklich nur static Methoden der Klassen mittels jCall aufrufen kann.
Ein Aufruf sieht so aus:
The_Class = jLoad "MeinClassFile";
Ist_sowieso_immer_null = The_Class jCall ["Meine_statische_Methode", [irgendwelche_Parameter]];
Summa summarum, momentan ist Java nicht mehr als ein 5. Rad am Wagen.
Xeno
Snevsied
27.02.2012, 10:25
Als was wird dieser "Java-Zustand" im Patch bezeichnet? Alpha, Beta oder Sonstiges?
Als was wird dieser "Java-Zustand" im Patch bezeichnet? Alpha, Beta oder Sonstiges?
"Nutzlos" passt am besten (man merkt mir schon an das ich ziemlich enttäuscht bin :D)
Xeno
Snevsied
27.02.2012, 11:14
Also quasi Ressourcenverschwendung, die man besser in "andere Projekte" stecken können.
Naja, es hätte ja mehr sein können für den Anfang, aber damit haben die eigentlich alles wohl viel schlimmer gemacht.
Ich hab mal gelesen das die ihre vorhandene scriptsprache komplett durch Java ersetzen wollen.
Deshalb denk ich mal werden die noch "etwas" arbeiten darein stecken.^^
Quelle werd ich mal versuchen rauszusuchen.
Edit:
OK komplett doch nicht, aber ich kann mir nicht vorstellen das die sowas nutzloses einbauen und als tolles neues Feature verkaufen... Sind ja nicht EA.^^
Hieraus hatte ich das: Arma 3 to release ?Community Alpha,? posts new screenshots, exclusive Q&A with the devs, seriously just come read this | PC Gamer (http://www.pcgamer.com/2012/02/23/arma-3-community-alpha/)
OK komplett doch nicht, aber ich kann mir nicht vorstellen das die sowas nutzloses einbauen und als tolles neues Feature verkaufen... Sind ja nicht EA.^^
Richrig, BIS ist nicht EA. EA hat sich vorher z.B. für Sims 3 die Mühe gemacht und abgechckt was Sinn macht als Scripting Engine zu benutzen und ist bei Mono gelandet.
BIS benutzt lieber als einziger was das niemals für eine solche Anwendung designed wurde und liefert etwas ab was immer crashed.
Aber, der Debugger geht, nicht so wichtig das der Rest unbenutzbar ist.
Xeno
Is doch sicher auch nur ein Feldtest für VBS und dessen weiterem Ausbau für Drittanbieter ... oder? :D
vBulletin® v3.7.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.