Langsames laden der Maps, bitte testen

Status
Nicht offen für weitere Antworten.
P

Polli86

Gast
Hallo an alle,

da ich hier schon oft weitergekommen bin mit meinem Projekt,
wollte ich mal mein Projekt hier reinstellen um zusehen ob ich
noch Performence verbessern und Fehler ausmerzen kann.

ein kleines Problem was noch besteht ist das wenn ein Mapwechsel
folgt es relativ langsam gezeichnet wird. Vielleicht weiß da jemand
etwas was da hilft.

Projekt bekommt ihr hier zum runterladen:

GameEditor

Zum testen benötigt ihr mind. jre1.6.0

einfach ins /bin Verzeichniss gehn und die test.bat ausführen damit wird es gestartet.
wenn ihr nur sehn wollt wies spiel aussieht dann einfach enter drücken,
wenn ihr Maps erstellen wollt dann müsst ihr in der Konsole "Editor" eingeben.

im /src Verzeichniss liegen die java-codes

könnt das projekt auch in Eclipse einfügen, inkl. Ant Build file

Würde mich auf Verbesserungsvorschläge freun, da das mein Schulprojekt werden soll
und ich schon ein bischen Arbeit da reingesteckt habe.

Vielen Dank schonmal an alle die reinschaun.

Gruß Polli

PS: die .rar hat noch ein paar dateien die unnötig oder doppelt sind, einfach nicht dran stören :)
 

Marco13

Top Contributor
Klassennamen schreibt man Groß
Fields sollten private sein
Arrays sollte man i.a. nicht mit get-Metoden nach außen führen
Die Klasse "GamePanel" scheint zu fehlen - und vermutlich ist das die wichtigste Klasse...
 
P

Poll86

Gast
hallo Marco,

also wegen den Klassennamen habe ich eigentlich immer aufgepasst sie groß zu schreiben,
ich glaube ich habe nur die editor-Klasse klein geschrieben, warum weiß ich nicht ;)

aber wenn du die GamPanel.class aus dem bin Verzeichniss nimmst wie ich erwähnt habe dann müsste es klappen,
weiß leider nicht warum die GamePanel.class im src Verzeichniss fehlerhaft ist :( habe eben mal
die rar entpackt und der meldet bei der class nen fehler... voll banane...

aber schonmal danke fürs code anschauen, wie könnte ich denn die benannten fehler mit arrays und
fields anders lösen ?!

Gruß Polli
 

Marco13

Top Contributor
Ich habe es (noch) nicht laufen lassen - (hatte beim Entpacken ein paar Fehler) - selbst wenn man dann sehen würde, dass es langsam ist, könnte man den Grund schwer aufspüren, wenn die GamePanel.java fehlt.

Zu den Arrays: Das Problem ist, dass damit sehr viele Implementierungsdetails nach außen gegeben werden. (Evtl. sollte z.B. auch bei einigen dieser Arrays kein schreibender Zugriff erlaubt sein usw...)

Statt
Code:
class Foo
{
    private int bar[];
    public int[] getBar() 
    { 
        return bar; 
    }
}
kann man z.B. schreiben
Code:
class Foo
{
    private int bar[];

    public int getBarCount() 
    { 
        return bar.length; 
    }

    public int getBar(int index) 
    { 
        return bar[index]; 
    }

    public void setBar(int index, int value) // NUR wenn unbedingt nötig!!!
    { 
        bar[index] = value; 
    }
}

Bei 2dimensionalen Feldern eben entsprechend
Code:
class Foo
{
    int bar[][];

    public int getBarCount() 
    { 
        return bar.length; 
    }
    public int getBarCount(int index) 
    { 
        return bar[index].length; 
    }

    public int getBar(int x, int y) 
    { 
        return bar[x][y]; 
    }
}

Der Vorteil ist, dass man später die Implementierung ändern kann, ohne dass die Schnittstelle sich ändert. (Das gilt in ähnlicher Form für ALLE Fields, die ALLE private sein sollten - siehe auch die FAQ).

Wenn du dich später z.B. enscheidest, statt eines Arrays eine List zu verwenden, damit du leichter Objekte hinzufügen und entfernen kannst, musst du nur in EINER Klasse 2..3 Zeilen ändern....
Code:
class Foo
{
    List<Integer> bar; // List statt array

    public int getBarCount() 
    { 
        return bar.size();  // Size statt length
    }

    public int getBar(int index) 
    { 
        return bar.get(index); // Get statt [...]
    }
}
und die übrigen Programmteile bleiben unverändert.

Wenn du aber überall davon ausgehst, dass du dort einen Array bekommst (und vielleicht sogar (ganz schlecht: ) davon ausgehst, dass es eine Referenz auf genau DEN Array ist, der in der Klasse liegt :autsch: ), musst du alle Stellen ändern, wo du diesen Array verwendest... Dass man in diesem Fall auch keine Zustandsänderungen registrieren könnte (z.B. für's Logging), ist nur ein weiterer von vielen Nachteilen...
Code:
class Foo
{
    int bar[];
    public int[] getBar() 
    { 
        return bar; 
    }
}
...
int theBar[] = foo.getBar();
theBar[4] = 123; // 'foo' kriegt nicht mit, dass der Arrayinhalt geändert wurde!
vs.
Code:
class Foo
{
    private int bar[];
    ...
    public void setBar(int index, int value)
    { 
        System.out.println("Aha, da verändert jemand was an meinem Array!");
        bar[index] = value; 
    }
}
 
P

Polli86

Gast
Hallo marco,
danke schonmal für die Beschreibung wie ich mein Quelltext noch ändern kann :)
man lernt ja immer dazu. Habe hier jetzt ne Version die Funktionieren dürfte.
Beschreibung gilt die selbe wie bei der anderen .rar Datei, also einfach nach
oben scrollen und nachschauen. Der andere Link ist nun nicht mehr nutzbar

GameEditor


Hoffe das ihr es jetzt mal probieren könnt,

Gruß Polli
 

Marco13

Top Contributor
Das Archiv scheint immernoch "corrupt" zu sein, und ohne die GamePanel.java. Bevor du es jetzt nochmal upladest: Du solltest ggf. einen eigenen Upload machen, der NUR die .java-Dateien enthält. Aber als ich nachgesehen habe, warum das Archiv denn 15MB Daten enthält, ist mir auch aufgefallen, dass Bilder im Format von 300x16000 (!!!) Pixeln doch eher unhandllich sind, und EIN Grund für eine Lange Ladezeit sein KÖNNTEN. Bedenke, dass EIN solches Bild alleine schon ca. 20 MB belegt - und mit 4 solcher Bilder (wo du dann evtl. munter unter-Bilder rauskopierst) ist der Rechner natürlich schon ziemlich am Rödeln....
 
P

Polli86

Gast
Hi und danke für die Antwort,

also ich checks überhaupt nicht warum die scheiß datei als fehler hat?!
dat iss die genaue Kopie von meinem Eclipse-Projekt... irgendwas
läuft da schief... aber was

Ja also aus den großen Dateien werden die einzelnen Tiles in ImageArrays gespeichert
wie du vieleicht in der Ressource.java erkennen konntest. Leider weiß ich nicht wie
ich das anders realisieren soll. Jedes Tile (32*32) aus der großen Datei einzeln abspeichern is
schon nen großer Aufwand oder gibts dafür nen tool?

Bist wohl irgendwie der einzige der mir hier hilft,
dafür schonmal ein großes Danke :)

Versuche die .rar heut abend mal bei Rapidshare zu uppen, hab da nen ProLogin

Gruß Polli
 
P

Polli86

Gast
Ok dann sorry ;)

aber iss voll blöd, das muss an der upload seite liegen,
denn wenn ich die rar-datei so entpacke klappts wunderbar :(
 

Marco13

Top Contributor
@Quaxli: Mit WinRar konnte ich die nicht-Fehlerhaften Teile auspacken, aber die Wichtigste Klasse scheint zu fehlen...
@Polli86: Du könntest - wie gesagt - ggf. mal NUR die .java-Dateien hier im Forum unter "Eigene Dateien" uploaden...
 

Wildcard

Top Contributor
Ich denke die meisten hier würden es vorziehen wenn du einfach den Eclipse Export Wizard verwendest um dein Projekt als Archiv zu exportieren anstatt mit korrupten Dateien in proprietären Formaten um dich zu werfen, die dann noch nichtmal vollständig sind :wink:
 

Polli86

Mitglied
So danke nochmal an Marco, hab jetzt die javas extra nochmal hochgeladen,
aber hier unter eigene Dateien, ich hoffe es funzt jetzt :D

@ wildcard : bis jetzt hat das mit winrar immer funktioniert, irgendwas stimmt mit der upload seite
nicht, denn wenn ich die rar nach dem packen ausführe sind die Dateien in top zustand.
naja jetzt dürfte es aber funzen :)

PS: ich verteile keine korrupten Dateien :p

edit: der link :D hab gedacht das geht über den Nickname oder so ;)

http://www.java-forum.org/de/userfiles/user12583/GameEditor.rar
 

Marco13

Top Contributor
Hm. habs nur mal kurz angestartet.... Wenn man mit java Xmx1000m startet (ansonsten eben OutOfMemory) dann dauert das Laden hier gerade mal 3 Sekunden... Was heißt "langsam"?
 

Polli86

Mitglied
Also ich habs immer mit 256m oder 512m gestartet, hat gereicht.
(mein Arbeitsrechner gibt auch nicht mehr her ;) )

Hab nur gedacht da es ja ne 2D anwendung ist, wäre es
zu langsam. Hatte irgendwie gedacht man könnte die Maps
die als nächstes kommen evtl. vorzeichnen damit der Mapwechsel
schneller geht, wusste aber nicht wie.
Aber anscheinend sind 3 Sek. nicht zu viel ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Hatsi09 Libvlc laden Spiele- und Multimedia-Programmierung 0
E TMX - Dateien in Java laden Spiele- und Multimedia-Programmierung 1
R Fehler beim Laden eines 2D-Bildes Spiele- und Multimedia-Programmierung 3
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
D [JOGL] bibliothek aus jar laden Spiele- und Multimedia-Programmierung 3
D Minecraft Config in andere Class laden/Minecraft Plugin Spiele- und Multimedia-Programmierung 1
R LWJGL: Object Loader -> .obj, .c4d, ... laden Spiele- und Multimedia-Programmierung 3
J Images laden in static Methode Spiele- und Multimedia-Programmierung 8
J Java3D - Textur laden geht nicht Spiele- und Multimedia-Programmierung 9
A Welche chunks im vorraus laden? Spiele- und Multimedia-Programmierung 9
CookieSoft Slick Texture laden Fehler Spiele- und Multimedia-Programmierung 6
A Speichern un Laden mit Serializable Spiele- und Multimedia-Programmierung 4
S Sounds abspielen, ohne sie jedesmal neu zu laden Spiele- und Multimedia-Programmierung 8
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
D JOGL2 eigene mipmaps laden Spiele- und Multimedia-Programmierung 13
P .obj-Datei in Java3D laden: ParsingErrorException Spiele- und Multimedia-Programmierung 7
aze Problem beim Laden von Obj File Spiele- und Multimedia-Programmierung 3
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
B Teile eines Bildes laden - BitBlk und drawImage Spiele- und Multimedia-Programmierung 3
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
G Laden von 3D-Modellen Spiele- und Multimedia-Programmierung 3
S Image will nicht laden Spiele- und Multimedia-Programmierung 3
J Opengl Texture laden Null Pointer Exception Spiele- und Multimedia-Programmierung 6
H Bild von Webcam laden Spiele- und Multimedia-Programmierung 4
M Directx Datei laden Spiele- und Multimedia-Programmierung 3
G Textur laden auf ein eingelesenes 3D Objekt Spiele- und Multimedia-Programmierung 4
G Bilddatei laden Spiele- und Multimedia-Programmierung 4
D TextureLoader - Textur von Url laden Spiele- und Multimedia-Programmierung 2
M Seltsames Flackern bei Laden von Grafiken Spiele- und Multimedia-Programmierung 4
F Texturen laden? Spiele- und Multimedia-Programmierung 3
M Laden von Texturen nicht möglich Spiele- und Multimedia-Programmierung 11
T 3D-Objekte Laden Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben