Performancetest: ISO-Editor

Status
Nicht offen für weitere Antworten.

Steev

Bekanntes Mitglied
Hallo liebe Forengemeinde,

ich bin gerade dabei ein kleines isometrisches Strategiespiel zu schreiben. Weil ich keine Lust habe, meine Karten über ein Notepad zu erstellen habe ich einen kleinen Editor geschrieben, mit dem ich die Maps erstellen kann. Später will ich diesen Editor dann mit dem Spielchen ausliefern, damit sich die Spieler auch selbst Karten erstellen können. Daher will ich nun wissen, ob der Editor auch auf anderen Systemen / Plattformen performant funktioniert.

2009-10-24_IsoEditor_01.gif


Den Editor könnt Ihr euch unter folgendem Link herunter laden:

http://steev.st.ohost.de/ISOEditor/ISOEditorV1.rar

Das RAR-Archiv müsst Ihr dann nur noch irgendwo entpacken und die enthaltenen JAR-Datei ausführen.
In dem Archiv ist auserdem schon eine Test-Map enthalten. Die kann einfach über den "Laden-Button" geladen werden.

Ich hoffe das der Editor bei allen funktioniert.
 
Zuletzt bearbeitet:

musiKk

Top Contributor
/tmp/foo/ISOEditorV1$ java -jar ISOEditorV1.jar
Exception in thread "main" java.lang.RuntimeException: No tilepath found!
at com.steevcitiy.editor.PlugInLoader.loadPlugIns(PlugInLoader.java:24)
at com.steevcitiy.editor.Editor.loadPlugIns(Editor.java:183)
at com.steevcitiy.editor.Editor.startEditor(Editor.java:75)
at com.steevcitiy.editor.Editor.<init>(Editor.java:70)
at com.steevcitiy.editor.EditorMain.main(EditorMain.java:20)

Java 6, Ubuntu 9.04.
 

Steev

Bekanntes Mitglied
Hast du den Ordner "editor" in denselben Ordner kopiert, wie die JAR-Datei?

Probier vieleicht mal folgenden Link, vieleicht funktioniert das ja besser bei dir.

http://steev.st.ohost.de/ISOEditor/ISOEditorV1_1.rar

Ich glaube das Problem liegt an folgendem Code:

[Java]File fTiles = new File(editor.getTilePath());
if (!fTiles.isDirectory())
throw new RuntimeException("No tilepath found!");

File[] fTile = fTiles.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
name = name.toLowerCase();
return name.endsWith(".ini");
}
});

for (File f : fTile) {
[...]
}[/Java]

Der Code soll ini-Dateien in dem angegebenen Ordner suchen und diese dann auslesen.
 
Zuletzt bearbeitet:
G

Gastredner

Gast
Also, Performance-mässig läuft der Editor auf XP SP3 sehr gut.
Was mir nur auffiel: Dem Brush-Editor fehlten die Icons der Buttons, was zu purem Rätselraten bezüglich der Funktion führte. Sollte man vielleicht durch Tooltips ergänzen.
Desweiteren wird beim Versuch, etwas anderes als eine Karte in den Editor zu laden, folgende Exception:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: JOptionPane: type must be one of JOptionPane.ERROR_MES
SAGE, JOptionPane.INFORMATION_MESSAGE, JOptionPane.WARNING_MESSAGE, JOptionPane.QUESTION_MESSAGE or JOptionPane.PLAIN_MES
SAGE
        at javax.swing.JOptionPane.setMessageType(Unknown Source)
        at javax.swing.JOptionPane.<init>(Unknown Source)
        at javax.swing.JOptionPane.showOptionDialog(Unknown Source)
        at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
        at javax.swing.JOptionPane.showMessageDialog(Unknown Source)
        at com.steevcitiy.components.BrushEditor$12.actionPerformed(BrushEditor.java:261)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
 

Marco13

Top Contributor
Wenn du's nochmal als JAR oder ZIP hochlädst, kann ich's an der alten Kiste, an der Ich gerade sitze, einen echten Härtetest unterziehen :D
 

Steev

Bekanntes Mitglied
Das mit den Icons habe ich wieder behoben. Ich habe aus versehen den Pfad gelöscht,...

Die Fehlermeldung ist höchstwahrscheinlich auf deine Java-Version zurückzuführen, ich verwende jdk_1.6.0_11
 

Steev

Bekanntes Mitglied
@Marco13:
Ich habe die Version 1_1 nochmal hochgeladen. Viel Spaß :D

Ich denke, dass die Performance erst in die Knie gehen wird, wenn du viele Overlays (Strand, usw.) und gleichzeitig viele verschiedene Bäume verwendest.
 

javimka

Top Contributor
Windows 7, 64-Bit, Core2 Duo 2.5 GHz, 4GB RAM, java 1.6.
Bei mir funktioniert es super. Die Auslastung pendelt zwischen 18 und 25%, auch wenn ich wie wild zeichne oder auf der Karte rumscrolle übersteigt es nicht 25% und sieht flüssig aus. Ich habe einige Strassen und Landstriche gezeichnet und der Speicherbedarf liegt nun bei 60MB, also kein Problem.
Die Graphik sieht übrigens hervorragend aus, ich frue mich ja schon auf das Erscheinen der ersten Spiel Version :D
 

Steev

Bekanntes Mitglied
Die Graphik sieht übrigens hervorragend aus, ich frue mich ja schon auf das Erscheinen der ersten Spiel Version :D

Danke für die Blumen ;)

Das Erscheinen kann allerdings noch etwas dauern, weil ich vorerst noch einige Modifikationen an der Engine vornehmen will. Dankeschön schonmal für´s testen.

Jetzt ist halt nur die Frage, ob der Editor auch unter Linux läuft.
 

Marco13

Top Contributor
WinXP, Athlon 1.4 GHz, GeForce2 - Läuft im Prinzip problemlos - könnte natürlich schneller sein, aber ob sich das auf den Rechner oder das Programm bezieht, weiß ich jetzt nicht ;)

Ansonsten:
- Das Layout der Fenster könnte am Anfang gleich z.B. wie im Screenshot gemacht werden
- Ist der Standard-Hintergrund absichtlich animiert? Wieso?
- Eine Hilfe/Anleitung wäre nicht schlecht - Die Icon-Buttons sind schön, aber nur, wenn man weiß, was sie bedeuten ;) Hat eine Weile gedauert, bis ich so einen Turm setzen konnte....
- Wenn man das Hauptfenster vergößert oder verkleinert stimmt das "aspect ratio" nicht mehr (d.h. wenn man es z.B. sehr breit macht, wird alles horizontal verzerrt)

Ansonsten: :toll:
 

Steev

Bekanntes Mitglied
Hallo Marco, dankeschön, dass du dir die Mühe gemacht hast, das zu testen.

Dass das Seitenverhältnis durch die Skalierung nicht beibehalten wird, ist vorerst noch "standard" meiner Engine für isometrische Perspektiven. Ich arbeite allerdings zur Zeit daran, dass bei einer Skalierung einfach die Kameragröße mit skaliert wird. Dass würde dann bedeuten, dass man mehr sieht, wenn man das Fenster größer zieht. Zur Zeit funktioniert dies aber nur für 2d-Perspektive.

Der Hintergrund ist absichtlich synchron animiert, weil er Wasser darstellen soll. Falls das stört, kann ich das natürlich auch abändern.

Mit dem Layout bin ich mir noch nicht im klaren, wie ich das ganze final machen will, man könnte die ganzen Elemente ja auch mit im Fenster aufnehmen. Das Problem was ich dabei nur sehe ist, dass man dann auf kleineren Bildschirmen fast keine Spielfläche mehr zur Verfügung hat, weil alles mit irgendwelchen Komponenten überdeckt wird. Hier bin ich für jede Anregung dankbar.
 
Zuletzt bearbeitet:

javimka

Top Contributor
Ich würde auf jeden Fall alles in dasselbe Fenster legen. Im Moment hat man nämlich 5 Tasks in der Taskleiste, das stört ein bisschen. Um die kleinen Bildschrime würde ich mir weniger Sorgen machen. Lieber ein schönes Design für 90% aller Anwender, als ein halbschönes für 99% ;)
Hilfreich könnte die JSplitPane sein, mit der kann sich jeder den Platz nach eigenem Belieben einteilen.

Lass dir bloss Zeit bis zur Veröffentlichung, mach dir da ja keinen Zeitdruck, das wäre schade :D
 

Marco13

Top Contributor
Ach so - wenn das Wasser ist, ist das mit der Animation ja plausibel (und dass ich da keine Bäume draufsetzen konnte ;) ). Vielleicht sollte das lieber blau sein...
 

Steev

Bekanntes Mitglied
Blaues Wasser gibt es ja auch, ich habe einfach einen ganzen Zoo von Wasser-Tilesets gemacht, damit man die verschiedenen Abstufungen der Wasserfarbe machen kann.

Bei mir sieht das Wasser eigendlich recht blau aus. Manchmal liegt das auch an dem Monitor, den man verwendet. Ich habe einen 25" Monitor mit einer recht guten Farbwiedergabe. Da ist das Wasser blaugrün. Wenn ich mir das Wasser dann auf meinem Notebook mit Energiespaarmodus ansehe, dann ist das Wasser nicht so gut als Wasser zu erkennen.

Deshalb habe ich immer probiert so zu zeichnen, dass man auf beiden Systemen erkennen kann, was es sein soll.
Ich weis halt nicht so recht, woran ich mich da orientieren soll.

PS: An alle Linux-, Apple- oder Sonstwas-User: Funktioniert der Editor bei euch jetzt auch?
 
Zuletzt bearbeitet:

Steev

Bekanntes Mitglied
Hallo, ich schon wieder :)

Ich habe jetzt schon mal die Änderung hinsichtlich der Kameragröße ausprogrammiert. Wenn man jetzt die Fenstergröße verändert, dann wird die Kameragröße automatisch angepasst. Das Seitenverhältnis wird dabei nicht mehr verändert. Die Veränderung der Kameragröße ist zusätzlich auf der Minnimap ersichtlich.

Die neue Version steht ab sofort unter folgendem Link zum Download bereit:

http://steev.st.ohost.de/ISOEditor/ISOEditorV1_2.zip

Ich hoffe das auch diese Version noch bei euch allen funktioniert, da ich einige Änderungen in der Tiefe der Engine (Renderlogik und Bildressourcenverwaltung) durchgeführt habe.

Insbesondere würde mich interessieren, ob einer von euch Linux-Usern irgendeine der Versionen zum Laufen bringen konnte.
 

musiKk

Top Contributor
Ne, gleicher Fehler. Du gibst die Dateipfade mit [c]\\[/c] an. Mach daraus einfach mal einen einfachen [c]/[/c]. Das klappt auch unter Windows.

Unter Windows XP habe ich das aber auch mal ausprobiert, da ging es wie bei allen anderen auch. Mir gefällt die Grafik auch gut, hat mich an Rollercoaster Tycoon erinnert, welches ich viel gespielt habe. Ich bin gespannt, was daraus noch alles wird. :)
 

Steev

Bekanntes Mitglied
Oh, es stimmt tatsächlich, das ich die Dateipfade mit \\ angegeben habe. :(

Ich werde das gleich mal abändern und nochmal hochladen...

Dankeschön für den Tipp
 

HoaX

Top Contributor
Also hier unter Ubuntu 9.04 64bit, Sun Java 1.6.0_16 hab ich mit der 1.3 das Problem, dass ich nicht sehe was ich gerade gemacht hab auf der Karte, d.h. das Fenster aktualisiert sich nicht, auch nicht wenn ich scrolle. Ich sehe meine Änderungen allerdings auf der Minimap. Erst wenn ich das Editorfenster in der Größe ändere wird der Inhalt neu gezeichnet.

Edit: Wo findest man Wasser? Tooltips zu den ganzen Knöpfen und Symbolen wären nicht schlecht ...
 
Zuletzt bearbeitet:

Steev

Bekanntes Mitglied
Hi, danke für die Mühe die du dir gemacht hast, Wasser findest du im TileChooser.
Das mit dem aktualisieren des Fensters ist komisch, ich habe einen Panel, in den ich zeichne. In diesem Panel habe ich dann einen Thread, der die repaint-Methode aufruft.
Keine Ahnung warum das bei dir nicht geht...
Das blöde ist nur, dass ich kein Linux-Testsystem habe, bei dem ich das mal nachstellen könnte...
Hat jemand eine Idee, warum der Fehler auftreten könnte?
 

javimka

Top Contributor
Könntest du dir nicht ein virtuelles Linux installieren? Dazu brauchst du z.B. VMware (nimm nicht MS Virtual PC). Mit dieser Software kannst du innerhalb deines Windows einen virtuellen Computer starten und Linux drauf installieren, ohne dass deinem Windows ein Haar gekrümmt würde.
Sonst änderst du jetzt was bei dir, jemand muss es wieder testen und dann funktioniert es doch immer noch nicht, also musst du wieder drauf losraten... wäre aufwendig ^^
 

Steev

Bekanntes Mitglied
Das weis ich, das Problem ist nur, dass ich nichts herunterladen kann, da ich nur per Web&Walk-Stick im Internet bin.
 

Steev

Bekanntes Mitglied
Hm, einen Verdacht warum das unter Linux nicht läuft habe ich schon. Ich erstelle beim Starten ein VolatileImage in das ich dann renderer. Wird die Größe des Panels verändert, so wird ein neues VolatileImage erstellt. Ansonsten wird das bestehende VolatileImage zur Renderung verwendet.

Aber das müsste doch eigendlich auch unter Linux funktionieren. ContentLost frage ich immerhin ab...

Hat da jemand Erfahrungen?
 

Noctarius

Top Contributor
Hab neulich in nem Buch etwas zum Thema Linux und VolatileImage gesehen, da gabs ne Besonderheit. Müsste ich aber Morgen noch mal nachlesen.
 

Steev

Bekanntes Mitglied
Das wäre nett, ich weis nur, dass es da in einer der früheren JDKs mal einen Bug unter Linux gab. Ich dachte aber eigendlich, dass der behoben wäre.

Hier mal ein Code-Ausschnitt aus dem Rendermodell:
[Java]
/**
* Erstellt nach Bedarf ein VolatileImage-Objekt um den GrabageCollector
* nicht unnötig zu belasten.
*
* @param comp
* die Komponente die das VolatileImage initialisieren soll
* @param width
* die Breite des VolatileImage
* @param height
* die Höhe des VolatileImage
*/
private synchronized void calcVolatileImage(Component comp, int width, int height) {
if (renderedMap1 == null || renderedMap1.getWidth() != width || renderedMap1.getHeight() != height || renderedMap1.contentsLost()) {
renderedMap1 = comp.createVolatileImage(width, height);
graphics1 = renderedMap1.createGraphics();
}
}

// Implementierte Methoden
public synchronized VolatileImage render(Component comp) throws Exception {

// Speichern des aktuellen Camera-Zustandes
saveCameraData();

// Berechnen eines Bildes im Grafikkartenspeicher
calcVolatileImage(comp, ccam.getWidth(), ccam.getHeight());

// Rendern der Stage der Camera
try {
camera.getStage().render(graphics1, ccam, renderedMap1, null);
} catch (Exception e) {
e.printStackTrace();
}

// Zeichnen der Effekte
for (Effect effect : camera.getEffects())
if (effect != null) {
graphics1.setTransform(Constants.EMPTY_TRANSFORM);
graphics1.setStroke(Constants.DEFAULT_STROKE);
effect.renderEffect(graphics1, camera, renderedMap1);
}

return renderedMap1;
}[/Java]
 

musiKk

Top Contributor
Erfahrung damit habe ich nicht, dafür mehr zu meckern. ;)

Wobei: Bei mir wird unter Linux ein Core (2 * 1.66GHz) komplett ausgelastet. Vielleicht ist irgendwo eine Endlosschleife. Unter Windows (2 * 2.66GHz) konnte ich jedenfalls keine bemerkenswerte CPU-Last feststellen. Für die Linux-Nutzer wäre vielleicht noch eine interessante Angabe, ob Compiz aktiviert ist, da das bei Grafik-Kram doch mal Probleme machen kann. Ich habe es jedenfalls aktiviert.

Es ist prinzipiell eine gute Idee, die Fenster automatisch so anzuordnen wie sie auf Deinem Screenshot sind. Auf meinem Notebook habe ich jedoch nur eine 1024er Auflösung und die Fenster rechts neben dem Hauptfenster verschwinden zum Großteil neben dem Desktop. Ich persönlich würde es -- wie ein Vorredner schon angedeutet hat -- auch für besser halten, das ganze in ein Fenster zu packen und dieses aufzuteilen. Ich kann mir natürlich vorstellen, dass das einiges an Änderungen nach sich zieht...
 
G

Gastredner

Gast
Man könnte das Programm womöglich relativ einfach in ein Fenster quetschen, indem man JInternalFrames verwendet.

Zu den VolatileImages kann ich einen Blick in "Killer Game Programming in Java" empfehlen, da wird dies besprochen:
Chapters 5-6. Images, Visual Effects, and Animation
Den entsprechenden Abschnitt findest du im PDF auf Seite 17. Allerdings steht dort interessanterweise, dass die Unterstützung von VolatileImages unter Linux besser liefe als unter MS Windows...allerdings basiert das Buch auch auf Java 1.4.2 und teilweise 1.5, da könnte sich vielleicht was geändert haben.
 
Zuletzt bearbeitet von einem Moderator:

Steev

Bekanntes Mitglied
Ich habe jetzt erst einmal der einfachheit halber JDialog verwendet, da ich ja nur den Namen von JFrame in JDialog ändern musst :)

Ich habe geplant später das ganze mithilfe von JSplitPanes aufzubauen, das finde ich persönlich am schönsten, weil man dann die Größen so anordnen kann, wie man will.

Ich bin gerade dabei mir einen Linux-Rechner aufzusetzen, dann lässt sich vieleicht besser feststellen, woran jetzt genau die Fehler liegen. Ich vermute aber einfach, dass Linux nicht so recht mit VolatileImage umgehen kann und stattdessen im Hintergrund BufferedImage verwendet. Das würde dann auch erklären warum das so langsam ist.
Eine andere Möglichkeit währe aber auch, dass die lostContent-Methode bei jeder Zeichnung true zurückgibt. Das würde dann bedeuten, dass pro Zeichnung (60x/Sekunde) ein VolatileImage erzeugt würde. Da hätte der GarbageCollector dann so viel zu tun, dass die Prozessorauslastung sehr hoch würde.
 

Steev

Bekanntes Mitglied
@Gastredner:
Ich habe den Nachfolger von dem Buch "Advanced Java Game Programming", da wurde das auch erläutert.
Die meisten Beispiele aus dem Buch konnte man allerdings erst nach einer gehörigen Konvertierung zum laufen bringen. Ich gucke mir noch mal das Kapitel an, bin mir aber keiner Schuld bewusst :p
 

hdi

Top Contributor
Also ich hab's auch grad versucht.
Performance ist 60fps konstant (win 7 ultimate x86)

Ich hab mir jetzt nicht den ganzen Thread durchgelesen, daher verzeihe mir evtl. schon genannte Punkte. Was ich nicht gut fand:

- beim start werden alle Fenster übereinander ins linke obere Eck des Desktops gequetscht, und man muss sie sich erstmal zurechtlegen.
- Tooltips bei allen Buttons bitte, ich hab es in den ersten 10 Minuten nicht geschafft ein Objekt zu platzieren
- Das Wasser hab ich erst als solches nicht wirklich erkannt. Okay es hat sich etwas bewegt, aber es war sehr grün ;)
- Eine Platzierungshilfe wäre gut: Das Gitter sollte sich rot färben wenn man etwas nicht platizeren kann, und grün wenn man es platzieren kann
- Die Höhen sind z.T. noch sehr schwer zu erkennen. Ich finde da fehlt eine Umrandung von einem Bereich, der tiefer oder höher liegt als der Rest. Also eine komplette 1px Umrandung denke ich würde das ganze viel intuitiver als 3D erkennen lassen

Aber Performance wie gesagt top.
 

Steev

Bekanntes Mitglied
- beim start werden alle Fenster übereinander ins linke obere Eck des Desktops gequetscht, und man muss sie sich erstmal zurechtlegen.
- Tooltips bei allen Buttons bitte, ich hab es in den ersten 10 Minuten nicht geschafft ein Objekt zu platzieren
- Das Wasser hab ich erst als solches nicht wirklich erkannt. Okay es hat sich etwas bewegt, aber es war sehr grün ;)
- Eine Platzierungshilfe wäre gut: Das Gitter sollte sich rot färben wenn man etwas nicht platizeren kann, und grün wenn man es platzieren kann
- Die Höhen sind z.T. noch sehr schwer zu erkennen. Ich finde da fehlt eine Umrandung von einem Bereich, der tiefer oder höher liegt als der Rest. Also eine komplette 1px Umrandung denke ich würde das ganze viel intuitiver als 3D erkennen lassen

Aber Performance wie gesagt top.

Hallo hdi,

das Problem mit den Fenstern habe ich bereits behoben, da du nicht den gesamten Thread durchgelesen hast konntest du natürlich nicht wissen, dass dies in der Version 1.3 zum Download bereit steht.

http://steev.st.ohost.de/ISOEditor/ISOEditorV1_3.zip

Die anderen Punkte werde ich dann mal probieren umzusetzen, das dürfte eigendlich kein großes Problem sein :)

Wo ich eher ein Problem sehe ist, ist bei dem Linux-Render-Problem mit VolatileImage. Hat da vieleicht jemand eine Idee. Vieleicht auch im Bezug auf meinen o.g. Quellcode?
 

Steev

Bekanntes Mitglied
Ok,

ich habe die neuen Vorschläge mal eingebaut. Den Höhenmodus habe ich vorerst nicht geändert, da ich noch nicht weis, ob ich im Spiel tatsächlich Berge brauche, oder nicht. Vielleicht lösche ich den Höhenmodus wieder raus.

http://steev.st.ohost.de/ISOEditor/ISOEditorV1_4.zip

Zu den Wasser-Tiles:
Im TileChooser gibt es ja noch ein paar Wasser-Tiles mehr. Sind die auch alle zu grün, oder gibt es da welche, die euren Vorstellungen entsprechen? Dann müsste ich nämlich nur die Standardeinstellung abändern...
 
T

tuxedo

Gast
Fehler gefunden:

Ich arbeite mit einem Dual-Monitor System mit Windows XP SP3 und hab meine Taskleiste am linken Bildschirmrand. Die linken zwei Fenster des Editors verschwinden da komplett unter meiner Taskleiste.

Vielleicht solltest du die Koordinaten der Fenster noch Checken oder das ganze an der Bildschirmmitte (
Code:
setLocationRelativeTo(null)
) ausrichten?!

Ansonsten aber super performant. GUI reagiert sehr gut und schnell, auch wenn man das System stresst.

- Alex
 

Steev

Bekanntes Mitglied
Guten Morgen,

Fehler gefunden:

Ich arbeite mit einem Dual-Monitor System mit Windows XP SP3 und hab meine Taskleiste am linken Bildschirmrand. Die linken zwei Fenster des Editors verschwinden da komplett unter meiner Taskleiste.

Vielleicht solltest du die Koordinaten der Fenster noch Checken oder das ganze an der Bildschirmmitte (
Code:
setLocationRelativeTo(null)
) ausrichten?!

Ich werde mir die GUI nochmal ansehen und die Fenster relativ zur Bildschirmgröße berechnen.

Der Link zur 1.4 geht übrigens nicht.

http://steev.st.ohost.de/ISOEditor/IsoEditorV1_4.zip

Ich habe den Link repariert, jetzt müsstet Ihr die Datei runterladen können.
Folgende Änderungen habe ich vorgenommen:
1. Tooltips für die Buttons im BrushChooser
2. Die Mausmarkierung wird grün, wenn man platzieren kann und rot, wenn das Platzieren nicht möglich ist.

Kleine Zwischenfrage: Kannst du das empfehlen? Sieht ja sehr schön aus, was du da programmierst :)

Das Buch ist nicht schlecht und erklärt auch gut die entsprechenden Logiken. Das Problem ist halt, dass man den meisten Quellcode und die meisten Beispiele nicht ohne Konvertierung ausführen kann.
Aber um das Prinziep zu verstehen ist das Buch gut.
 
Zuletzt bearbeitet:

HoaX

Top Contributor
Mit der 1.4 ist immernoch eine CPU auf 100% und es wird nicht aktualisiert, FPS zeigt auch 0 an.
 

Steev

Bekanntes Mitglied
Hm, das ist dieses komische Linux-Problem mit VolatileImage.
Ich gucke heute abend mal zu Hause auf meinem Test-Linux-Rechner nach ob ich das Problem nachstellen kann. Dann hätte ich es nämlich leichter, das Problem zu beheben.

Hast du dir mal meinen Quellcode für die Renderklasse angeguckt? Findest du da einen offensichtlichen Fehler? Wenn du Linux hast, dann machst du das doch sicher irgendwie anders als ich, weil deine Programme bei dir doch sicher funktionieren.
 

Steev

Bekanntes Mitglied
Sehr eigenartig, ich habe mir jetzt mal jdk jdk1.6.0_16 installiert. Jetzt habe ich das Problem mit dem Neuzeichnen des Fensters auch. Hmm, komisch. Außerdem bekomme ich jetzt einen Fehler beim Laden von Sounds über Clip.

Mal sehen, was da wieder verändert wurde. Abwärtskompatibilität scheint für sun ja ein Fremdwort zu sein...
 

musiKk

Top Contributor
Das ist auch eine gute Gelegenheit, das Open Source-Modell anzupreisen. ;) Wenn die Quellen offen wären, würde sich vielleicht jemand finden, der helfen will. (Aber nicht falsch verstehen, ich bin kein OS-Fanatiker, sondern respektiere die Entscheidung, die der Autor trifft.)
 

Steev

Bekanntes Mitglied
Ich habe nichts gegen Open Source. Das Problem hierbei ist allerdings, dass ich für die Programmierung eine Engine verwende, die ich vollständig selbst geschrieben habe. Da ich mit meinen Spielen die Engine so ein bisschen auf Herz und Nieren teste will ich die Engine erst releasen, wenn ich einen Stand erreicht habe, wo ich nicht umbedingt täglich eine Änderung mache. Damit würde ich nur die wenigen Leute ärgern, die sich mein Gschreibsel antuen wollen :D
 

Steev

Bekanntes Mitglied
Hm, vorher hat dieser Code für die Sounds in meiner Engine funktioniert. Jetzt geht er nicht mehr mit demselben Sound. Das komische ist nur, dass er bei anderen Sounds desselben Typs funktioniert. Könnt Ihr da einen Fehler entdecken? Macht man das jetzt vieleicht mit der neuen Java-Version aners?

[Java]
/*
* Wenn der aktuelle Puffer-Eintrag initialisiert werden soll, so
* soll dies über den Thread geschehen, damit andere Aufgaben
* nebenläufig erledigt werden können, da hier eine Datei von der
* Festplatte gelesen wird.
*/
if (init) {
URL url = sound.getAudioFile();

/*
* Erstelle einen neuen Audio-Stream, für das abspielen.
*/
try {
// AudioInputStream öffnen
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
AudioFormat format = ais.getFormat();

/*
* ALAW/ULAW samples in PCM konvertieren da diese Formate
* nicht unterstützt werden.
*/
if ((format.getEncoding() == AudioFormat.Encoding.ULAW) || (format.getEncoding() == AudioFormat.Encoding.ALAW)) {
AudioFormat tmp = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, format.getSampleRate(), format.getSampleSizeInBits() * 2, format.getChannels(), format.getFrameSize() * 2,
format.getFrameRate(), true);
ais = AudioSystem.getAudioInputStream(tmp, ais);
format = tmp;
}

int bufferSize = ((int) ais.getFrameLength() * format.getFrameSize());
DataLine.Info info = new DataLine.Info(Clip.class, format, bufferSize);
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(ais);
clip.setFramePosition(0);

// Zuweisen der erstellten Daten
try {
if (clip.isControlSupported(FloatControl.Type.PAN))
panControl = (FloatControl) clip.getControl(FloatControl.Type.PAN);
} catch (Exception e) {
e.printStackTrace();
}

try {
if (clip.isControlSupported(FloatControl.Type.MASTER_GAIN))
volumeControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
} catch (Exception e) {
e.printStackTrace();
}

this.clip = clip;
setState(INITIALIZED);
} catch (Exception e) {
e.printStackTrace();
}

/*
* Aktualisieren der Audio-Eigenschaften des Sounds.
*/
try {
setVolume(sound.getVolume());
setPan(sound.getPan());
} catch (Exception e) {
e.printStackTrace();
}

// zurücksetzen des init-Flags
init = false;
}[/Java]
 

Steev

Bekanntes Mitglied
So, das Problem mit Renderung habe ich (glaube ich) behoben.

Dann bleibt nur noch mein Sound-Problem. Da fällt mir leider auch keine Lößung mehr ein. Die wav-Datei lässt sich mit dem obigen Quellcode unter jdk.6.0_11 problemlos ausführen. Unter jdk.6.0_16 geht das plötzlich nicht mehr... :?:

Die neue Version findet Ihr unter folgendem Link:

http://steev.st.ohost.de/ISOEditor/ISOEditorV1_5.zip

Bitte testet doch mal, ob Ihr eine Performanceveränder feststellen könnt.

Ich habe einen AMD Phenom II X4, 8 GIG RAM, Windows Vista SP2, NVDIA Gforce GTX 260 1920 x 1600 (32 Bit)
Wenn ich die Standardmap lade und mir so die Insel angucke, dass ich fast alle Bäume und Häuser sehe, dann habe ich eine Prozessorauslastung von 45% und ich habe das Gefühl, dass es etwas stockt.

Wie funktioniert diese Version bei euch?
Geht diese Version jetzt auch unter Linux?
 

Steev

Bekanntes Mitglied
Hmm, das Soundproblem besteht weiterhin. Andere Sounds kann ich ohne Probleme abspielen, nur eben diesen einen Sound kann ich nicht mehr abspielen. Wenn ich dann einfach eine andere jdk verwende, dann funnktioniert es wieder.
Kennt jemand das Problem oder weis sogar wie man das Problem abstellen kann?
Wurde da irgendetwas geändert oder mache ich etwas falsch?

PS:
Klappt der ISO-Editor jetzt bei allen? Wenn ja, dann kann ich nämlich weiter machen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben