Kollisionserkennung bei Jump'n'Run

Status
Nicht offen für weitere Antworten.

Apo

Bekanntes Mitglied
Hi,

ich habe mal wieder etwas programmiert. Mein Ziel war/ist ein SuperMario Klon. Jetzt versuche ich die Kollisionserkennung gut hinzubekommen. Aber so richtig zufrieden bin ich nicht. Ich muss es einfach perfekt hinbekommen, weil es wie immer nicht nur für mich ist, sondern ich noch etwas mehr damit vorhabe. =)

Wie gehe ich vor bei der Kollisionserkennung?
Alle Objekte im Spiel sind Rechtecke. Ich überprüfe, ob sich zwei Sachen schneiden, wenn sie sich bewegen. So weit die Theorie und klappt auch ganz gut. Bloss leider nicht immer perfekt so wie ich es gerne möchte.
Zum Beispiel bei einer Situation wie:
##########
###SSS####
######P###
##S###P###
##SSSSSSSS

S ist ein Stein und P der Spieler. Wenn ich jetzt nach links SCHNELL laufe und im richtigen Moment springe komme ich noch zwischen die Steine nach links. Was suboptimal ist. Das finde ich unschön. Wenn jemand Zeit und Lust hat, würde ich mich freuen wenn ihr mal in den Code schauen könntet. Die Kollisionserkennung ist in der ApoMarioEntity-Klasse.

Habt ihr vielleicht eine andere Idee der Kollisionserkennung?


Applet und Download der aktuellen Alpha Version: Klick mich
Der Source ist in der Jar dabei. Einfach die Jar entzippen.

Es besitzt Zufallslevels. Wenn euch eins nicht gefällt oder zu schwer ist einfach "n" drücken. Ich finde bis Schwierigkeitsstufe 150 geht es, danach werden einige Levels recht "schwer" :D

Ich danke euch!
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Hab mal kurz draufgeschaut ... es geht um thinkCollision!? Ist jetzt ein bißchen schwer nachzuvollziehen ... ob das jetzt an der Uhrzeit, fehlenden Kommentaren oder so leicht irritierenden Zeilen wie
Code:
if ((cut.width > [b]0 * [/b]ApoMarioConstants.SIZE) || (cut.height > 0 * ApoMarioConstants.SIZE)) {
liegt, weiß ich nicht.

Aber ganz allgemein: Du überprüfst die Rechtecke am ANFANG und am ENDE des Schrittes auf Überschneidungen? Kann es sein, dass man auch ("continuous collision detection") den Weg auf mögliche Kollisionen testen muss? (Oder ein bißchen gestochert: Inwieweit hängt die Häufigkeit des Auftretens des Problemes mit der Größe des 'delta' zusammen?)
 

Apo

Bekanntes Mitglied
Danke schonmal fürs reinschauen. =)
Oh die 0*Size hatte ich zu Testzwecken implementiert und immer mal variiert (mal mit 1 mal 1.5f usw), deshalb stehen die noch drin. *hust*

Das Delta ist mit 10 schon sehr klein und auch fest. Ich habe es mit kleineren Werten schon versucht, aber das Problem bleibt. Deshalb bin ich etwas überfragt derzeit.

Was mache ich genau. Als erstes teste ich, ob eine Kollision mit einem unteren Tile vorliegt. Falls ja setze ich die Geschwindigkeit in y-Richtung auf 0.
Danach teste ich, ob das Objekt mit Sachen links, rechts und darüber kollidiert. Und falls ja dann setze ich es so zurück, damit keine Kollision mehr vorliegt.

Ich kommentier den Code aber mal (hast ja recht Papa Marco :D ) und melde mich dann wieder. =)
 
Zuletzt bearbeitet:

Apo

Bekanntes Mitglied
Hi,

sorry das ich mich jetzt erst wieder melde. War unterwegs und hatte leider keine Zeit und kein Internet.

Ich habe nun den Code in der ApoMarioEntity Klasse kommentiert und die wichtigsten Sachen aus ApoMarioPlayer und ApoMarioEnemy auch. Desweiteren habe ich die Updatezeit halbiert in der Hoffnung, das dies die gewünschten Verbesserungen mit sich bringt.

Ich würde mich immer noch freuen, wenn ihr mir helfen könntet. Den "sinnlosen" Code habe ich erstmal drin gelassen, da ich damit immer noch ein bisschen rumspiele.

Würde mich auch sehr freuen, wenn ihr es testen könntet. Läuft das Spiel? Macht es irgendwelche Probleme? Was würdest ihr euch noch wünschen Gameplaytechnisch? Applet und Download gibt es wie immer hier

Ich danke!
 

Steev

Bekanntes Mitglied
Hi Appo,

das Spiel läuft wunderbar und flüssig. Was ich mir noch wünschen würde währe ein Level-Editor und die Möglichkeit, aus erstellten Leveln eine Art Kampagne zu erstellen. Das dürfte auch technisch gar nicht so schwer sein, man müsste ja nur eine Startposition und eine Endposition bestiimmen können und bei der Endposition sagen können, welcher Level als nächstes geladen werden soll.
Was in dem Zusammenhang vieleicht nicht schlecht ist, ist eine Art Triggerbox, die man im Level platzieren kann. Wenn der Spieler in diese hineinkommt, dann könnte zum Beispiel ein Text als Untertitel erscheinen.

Ansonsten kann ich nur sagen: :toll:
Aber das ist ja bisher bei allen deinen Spielen so gewesen ;-)
 

OliverKroll

Aktives Mitglied
Das Spiel ist großartig.:toll:
Das Springen ist etwas ruckelig. Im Programmtext sind "links-rechts"-Steuerung und Springen tatsächlich an unterschiedlichen Stellen.
Es sollte eine Mindest-Sprunghöhe geben.
Eine feinere Kollisionsprüfung als mit einem Rechteck sollte zu schaffen sein.
 

Apo

Bekanntes Mitglied
Danke fürs Testen!

Das Spiel ist erst im Alpha-Stadium und wird ständig weiterentwickelt. Als nächstes wird ein Menu folgen, wo der User selber einstellen kann, wie schwer das Level sein soll und wie lang.

Level-Editor wird noch folgen. Ein Storymodus ist bis jetzt nicht geplant, sondern ein Duell mit einer KI, die durch das Level läuft. Wer aus dem Bildschirmbereich fliegt verliert bzw. wer als erster im Ziel ist gewinnt. =) Das ist der sehr abstrakt gefasste Plan. Die Idee mit der KI kam mir durch diesen Contest. Ich wollte erst mitmachen, hatte aber leider keine Zeit und habe mich jetzt entschieden es selber zu programmieren. Und ein Freund von Wettbewerben bin ich auch. ;)

Das mit der Triggerbox ist auf jeden Fall aber eine Idee. Habe ich auf meine ToDo-Liste mit aufgenommen.

Zum Springen: Eine Mindesthöhe wäre möglich. Ich wollte es einer KI nur ermöglichen so genau wie möglich zu springen und laufen, deshalb gibt es bis jetzt keine Mindesthöhe. Für den menschlichen Spieler würde es sich anbieten (ist beim Original ja auch so)

Zur Kollisionserkennung: Inwiefern eine feinere Kollisionsprüfung? An was hast du gedacht? Man könnte die Bilder nehmen und schauen, ob sie sich wirklich bildmäßig schneiden.

Ich werde mal versuchen die Kollisionserkennung neu zu schreiben, weil sie immer noch Löcher hat und das nicht sein darf/soll. Falls wie gesagt jemand eine Idee zur Umsetzung hat, würde ich mich darüber sehr freuen. =)
 

Steev

Bekanntes Mitglied
@Appo - Kollisionserkennung:
Ich würde für die Spieler eine Pixelgenaue Kollisionsüberprüfung machen. Dazu würde ich eine Interface "Hitable" programmieren in der du mithilfe einer Methode "boolean hitAtRGB(Object source, int x, int y, int rgba)" überprüfst, ob an einer bestimmten Position mit einem bestimmten Alpha-Wert eine Kollision vorliegt. Dann würde ich in deinem Player-Objekt (ich habe mir deinen Code jetzt nicht angeguckt, denke aber, das du es so gemacht hast ;-)) eine Methode "boolean hitAt(int x, int y)" machen, in der ich mithilfe der Interface und der aktuellen Bitmap überprüfe, ob an der enstprechenden Position (absolute Position) in deinem Spiel eine Kollision mit deinem Spielerobjekt vorliegt. Auserdem würde ich dann noch eine Methode "hitWith(Spielobjekt target)" programmieren, in der du überprüfst, ob dein Spieler mit irgendeinem anderen Spielobjekt kollidiert. Dafür würde ich erst eine Bounding-Box-Kollision prüfen. Sollte diese erfolgreich sein, so würde ich eine Pixelgenaue kollision überprüfen. Das würde ich folgendermaßen tun: errechne für jeden sichtbaren Pixel des Spielerobjektes die absolute Position, rufe dann mithilfe dieser absoluten Position die "hitAt"-Methode des Spielobjektes auf. Gibt diese "true" zurück, so liegt eine Kollision vor und du kannst "true" zurückgeben.

Pseudocode:
[Java]
public class Hitable {
public boolean hitAt(Object source, int x, int y, int rgba);
}
[/Java]

[Java]
public class YourHitableAdapter implements Hitable {
public boolean hitAt(Object source, int x, int y, int rgba) {
int alpha = (argb >> 24) & 0xff;
int red = (argb >> 16) & 0xff;
int green = (argb >> 8) & 0xff;
int blue = (argb) & 0xff;
return alpha == 255;
}
}
[/Java]

[Java]
public class Gameobject {
Hitable hitable = new YourHitableAdapter();
// [...]
public boolean hitAt(int x, int y) {
int relativeX = x - camera.getX() - this.getX();
int relativeY = y - camera.getY() - this.getY();
return hitable.hitAt(this, relativeX, relativeY, getCurrentImage().getRGB(relativeX, relativeY));
}
// [...]
}
[/Java]

[Java]
public class Player extends Gameobject {
// [...]
public boolean hitWith(Gameobject target) {
int absoluteX = 0;
int absoluteY = 0;
if (this.hitWithBoundingBox(object.getBounds()) {
for (int x = 0; x < this.getCurrentImage().getWidth(); x++)
for (int y = 0; y < this.getCurrentImage().getHeight(); y++) {
if (!this.hitable.hitAt(this, x, y, this.getCurrentImage().getRGB(x, y))
continue;
absoluteX = x + camera.getX() + this.getX();
absoluteY = y + camera.getY() + this.getY();
if (target.hitAt(absoluteX, absoluteY))
return true;
}
}
return false;
}
// [...]
}
[/Java]

Das ist jetzt natürlich nur ein Konzept :)

Ich würde vieleicht noch, bei dem verschieben eines Spielers diese Kollisionsabfrage pro Pixel durchführen. Wenn du also deinen Spieler um 5 Pixel verschiebst, dann würde ich für jeden Pixel (Zwischenschritte) überprüfen, ob eine Kollision vorliegt.
 
Zuletzt bearbeitet:

Apo

Bekanntes Mitglied
Hi,

sorry für die späte Antwort. Ich habe bald mal wieder Zeit und werde mich mal darum kümmern können. Die Idee mit dem Testen jeder Pixelbewegung ist eine gute Idee. =) Ich muss nur mal schauen wie lange so etwas dauert und ob es für mein Konzept umsetzbar ist.

Ich habe mich gegen eine Pixelperfektkollisionserkennung ausgesprochen, weil es später ein Wettbewerb werden soll, wo jeder einfach die Möglichkeit hat zu berechnen, wo er genau in X-Millisekunden bzw. Schritten ist. Deshalb finde ich die Rechteckvariante verständlicher. Was denkt ihr?

Ich habe jetzt erstmal ein paar kleine Sachen verändert (Fallgeschwindigkeit verkleinert, Kollisionsbetrachtung mit den Gegnern vereinfacht, Punktezähler verbessert etc.) und einen Optionsbutton hinzugefügt. Jetzt könnt ihr bestimmen, wie schwer und lang das Level sein soll.
 

fastjack

Top Contributor
Sieht very nyce aus :) Da soll mal noch jemand sagen, das man mit Java keine vernünftigen Action-Spiele machen kann.
 

w0ddes

Bekanntes Mitglied
Also ich hab grade mal etwas "getestet" ;D
Spiel ist schon sehr cool, jedoch is die Steuerung noch etwas verwirrend .... Springen würde ich auf "Space" erwarten und so kam ich des öfteren n bisschen durcheinander :D
Und (klar, es ist eine Alpha) es sind noch einge Bugs drin :D

An sich ein sehr interessantes Projekt .. vorallem da es Erinnerung an "Früher" mit dem SNES wieder aufkommen lässt :D
 

Apo

Bekanntes Mitglied
Danke fürs Testen. =)

Also für Bugs bin ich immer zu haben. Also ruhig her damit. =) Würde mich freuen.

Die Steuerung habe ich an den Emulator angepasst, da ist die Standardkonfiguration auch: Pfeiltasten und a und s. Aber ich habe zusätzlich noch Space für Springen und Shift für Sprinten eingebaut.
Desweiteren passen die Untergrundtiles nun auch wirklich zu ihren Nachbarn und die Menupunkte können nun auch mithilfe der Tastaturen erreicht werden. (Also Beenden mit ESC, weiter mit Enter usw.)
 
Zuletzt bearbeitet:
T

tiger

Gast
hi,

bei der suche nach einem kollisionsabfragekonzept (falls es sowas gibt) bin ich auf diese seite gestoßen und habe es mir nicht nehmen lassen, das spile mal zu testen. es ist gut geworden, nur bin ich bei einem level an einer stelle angekommen, wo die breite eines abgrundes zu groß ist um darüber springen zu können und auch keine gegner in der nähe sind, auf die man springen kann, um über den abgrund zu kommen. und somit ein unschaffbares level kreiert wurde... keine ahnung ob sowas beabsichtigt wurde, aber falls es ein bug ist, wollte ich es mal erwähnen.

gruß tiger
 

Apo

Bekanntes Mitglied
Danke für den Bug. Er kann theoretisch immer noch auftreten.
Jetzt wurde erstmal die "Engine" die dahinter steht verändert und dadurch würde ich mich freuen, wenn es noch einmal kurz getestet werden könnte, ob es nun flüssig läuft?
Danke =)

Werde mich in nächster Zeit mal damit beschäftigen, das Spiel fertig zu stellen. Melde mich dann wieder.
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Es läuft flüssig, aber der Rechner ist auch nicht der langsamste. Aber es ist frustrierend. Ich hab' eben bestimmt 15 mal versucht, ein und dasselbe Level zu lösen. Die sind wohl gar nicht dazu gedacht, gelöst werden zu können? ???:L
 

Quaxli

Top Contributor
Bezüglich der Animationen und Bewegungen habe ich auch keine Beanstandungen. Allerdings bin ich schonmal nicht über die ersten beiden Abgründe gekommen. ;( Daher kann ich das nur für den Anfang des Spieles beurteilen.
 

Apo

Bekanntes Mitglied
Naja es sind ja Zufallslevels. Wenn der Schwierigkeitsgrad bei > 300 ist, dann wird es für einen Menschen recht schwer. Aber in der Theorie sollte es möglich sein. ;) Bei den Options kann man ein Level mit Schwierigkeitsstufe 0 und Levellänge von 100 einstellen. Wer das nicht schafft ... der .. nunja ;)
Auch die Levellänge ist wichtig. Bei einer Levellänge von 100 habe ich selbst schon ein Schwierigkeitsgrad von 500 geschafft. Aber je länger desto schwieriger ist es.

Falls es ein Level gibt, was ich schwer lösen kann, dann drücke ich einfach "n" und lasse mir ein neues Zufallslevel erstellen. Der Zufallsalgorithmus kann es derzeit in seltenen Fällen noch schaffen, dass er Abgründe erstellt die man zwar überspringen könnte, da er aber noch eine Kanone am anderen Ende aufstellt, schafft man den Sprung dann doch nicht. Wird noch verbessert. =)
 

Apo

Bekanntes Mitglied
So ich habe mal aus Spaß an der Freude nun die ersten "KI"'s mit eingabaut. Die ihren Namen natürlich noch nicht verdient haben.
Die erste besteht aus 2 Zeilen (player.runRight; und player.jump()) und die zweite besteht aus 3 Zeilen (wie davor + player.runFast()). War zu Testzwecken, ob es fkt. Und es ist ein Wunder, dass bei einfachen Levels die KI es häufig schafft ins Ziel zu kommen. :D
Ich werkel mal ein bissl an den KI's rum, damit man Spaß hat. Zum derzeitigen Einstellen der KI's einfach auf die Pfeilbuttons gehen.

Eine Frage noch. Derzeit verliert der Spieler der aus dem Bildschirm gedrängt wird ... Aber bei schnellrenenden KI's passiert das sehr schnell. Habt ihr andere Ideen, wie man das machen könnte? Welche Gewinnbedingungen würdet ihr gut finden?

Ich danke euch!
Zum ausprobieren einfach hier drauf klicken
 
Zuletzt bearbeitet:

ne0n2005

Mitglied
Hi,
erstmal möchte auch ich mein Lob für deine wirklich guten Spiele aussprechen. Auch der Mario Clone ist meiner Meinung nach sehr gut geworden. Mir ist nur aufgefallen das sich das Hintergrundbild des Levels teilweise ändert, jedoch kann ich nicht sagen ob es sich hier um einen Bug handelt, da ich nie Mario gespielt hatte (ich hatte Sega).
Was ich jedoch äußerst gewönungsbedürftig finde, ist die Tatsache, dass wenn ich die Leertaste ganz kurz antippe einen nur sehr kleinen Sprung mache. Eventuell würde ich die "Grenze" für den kleinst möglichen Sprung ein wenig erhöhen oder gar eine Taste binden, welche unabhänging von ihrer Drückzeit immer einen höchstmöglichen Sprung veranlasst.

mfg neon
 

U2nt

Bekanntes Mitglied
Ich finde die Anzahl an Blumen ein bisschen zu hoch, ich würde für die Maps sogar eher ein neues Teil wie G für Großmachteil (xD) machen, weil in dem Spiel bin ich eigentlich DURCHGEHEND mit einer Blume ausgestattet :p

Ansonsten gefällts mir richtig gut.

PS: Für die, die nicht über abgründe kommen: Man sprintet mit Shift! xD
 

Apo

Bekanntes Mitglied
Vielen lieben Dank fürs Testen. =)

... Mir ist nur aufgefallen das sich das Hintergrundbild des Levels teilweise ändert, jedoch kann ich nicht sagen ob es sich hier um einen Bug handelt, da ich nie Mario gespielt hatte.

Naja das war für Performancesachen gedacht. Wenn er länger als 10 ms zum Zeichnen braucht im Schnitt über 100 mal Malen, dann soll er einfach den Mittelhintergrund ausblenden, was einige Frames bringt. Habe das mal leicht angehoben.

... Was ich jedoch äußerst gewönungsbedürftig finde, ist die Tatsache, dass wenn ich die Leertaste ganz kurz antippe einen nur sehr kleinen Sprung mache. Eventuell würde ich die "Grenze" für den kleinst möglichen Sprung ein wenig erhöhen oder gar eine Taste binden, welche unabhänging von ihrer Drückzeit immer einen höchstmöglichen Sprung veranlasst.

Im Original gibt es nur 2 Varianten. Ein kleiner Srpung und ein großer Sprung. Ich habe mir überlegt es flexibler zu gestalten und dem Spieler die Entscheidung zu lassen, wie hoch er springen will. Da es aber wieder ein Wettbewerb für 1tis an der FIN wird, werde ich es wahrscheinlich noch umschreiben und nur einen kleinen und großen Sprung ermöglichen.

... Ich finde die Anzahl an Blumen ein bisschen zu hoch, ich würde für die Maps sogar eher ein neues Teil wie G für Großmachteil (xD) machen, weil in dem Spiel bin ich eigentlich DURCHGEHEND mit einer Blume ausgestattet :p

Jaein. Es richtet sich nach dem Schwierigkeitsgrad wieviel Blumen bzw. Pilze versteckt sind. Kann aber sein, dass die Verteilung prozenttechnisch noch zu hoch ausgefallen ist. Ich spiele mal damit rum. =)

... Für die, die nicht über abgründe kommen: Man sprintet mit Shift! xD

Nicht nur mit Shift auch mit 'a' wie im Emulator kann man sprinten und mit der Leertaste oder 's' springen. ;)


So ich habe mal ein paar kleiner Fehler bei den Kanonen usw entfernt. Als nächstes folgt nun eine Simulation der KI (vor dem eigentlichen Abspielen wird das ganze schon durchgerechnet und danach einfach per Replay wiedergegeben).
 

Apo

Bekanntes Mitglied
Ich habe jetzt mal viele Kleinigkeiten verbessert und ein bisschen mit den KI's rumgespielt.
Dabei sind 2 schöne Videos entstanden. Wer Lust hat kann sie sich gerne anschauen. =)
Video 1 und Video 2. Vor allem das zweite Video macht mir selber immer wieder Spaß zuzuschauen. :D Ich glaube das Programm kann wirklich ganz gut werden :D
 

cz3kit

Bekanntes Mitglied
Könntest du vielleicht die Source Dateien hochladen? Ich würde da gerne einfach mal aus neugier reinschauen, wenn es dich nicht stört.

Ansonsten muss ich mich den anderen anschließen. Ich finde das es super gelungen ist, es macht Spaß zu spielen :p Was mir gefällt ist, das unten die Map klein eingeblendet ist, da weiß man wie weit man es noch hat. Echt cool
 

matze8426

Mitglied
Ich habe jetzt nicht jeden Eintrag gelesen. Aber bei Java ME gibt es Sprites, die eine pixelgenaue Kollisionserkennung bieten. Evlt. kann man deren Verhalten ja nachprogrammieren.
 

Apo

Bekanntes Mitglied
Könntest du vielleicht die Source Dateien hochladen? Ich würde da gerne einfach mal aus neugier reinschauen, wenn es dich nicht stört.

Wird natürlich gemacht. Aber erst wenn ich zufrieden bin. Derzeit arbeite ich noch an einer besseren Unterstützung für die Leute, die mal eine KI schreiben wollen. =)
Wenn das alles steht, lade ich alles mit hoch. Bloss derzeit wird wie erwähnt noch viel hinzugefügt und auch verändert, sodass sich die Source Dateien nicht lohnen bzw noch fehlerhaft sind. =)

Ist ja schonmal beruhigend, daß Du selbst auch in die Abgründe stürzt. :D:D:D

lol :D ja irgendwie schon ;)


So heute das Symposium der Telemedizin in Mitteldeutschland genutzt und mir Gedanken gemacht, was ich noch hinzufügen könnte. Ich habe ich ein paar Fehler verbessert, ein Debug-Fenster hinzugefügt und mit "p" kann man das Spiel nun pausieren. Die KI darf nun auch Rechtecke, Kreise und Linien malen, wenn sie mag. Ein Replay wird intern nun auch schon gespeichert ... doch war ein erfolgreicher Tag :D Mal schauen was ich am Wochenende dann noch schaffen kann, einige Ideen sind noch offen. =)
 
Zuletzt bearbeitet:

Apo

Bekanntes Mitglied
So nun gibt es ein einfaches Analysetool, damit man sich die Spiele nicht anschauen muss :D und Replay speichern und laden fkt auch. =)
Außerdem ein wie immer tolles Feature und zwar Speed einstellen (oder einfach "q" bzw. "e" drücken im Spiel). Das Spiel 5 mal langsamer, da erkennt man viele schöne Fehler.
Des Weiteren einige Fehler beseitigt, sodass bei einem restart nun wirklich das gleiche Ergebniss immer rauskommt. =)
Es wird sag ich mal =)
 
Zuletzt bearbeitet:

Apo

Bekanntes Mitglied
So mal wieder ein Zwischenstand von mir!

Ich habe mal das Optionsmenu verbessert und nun kann man seine Lieblingslevel immer wiederholen (indem ihr euch einfach nur die Breite, den Schwierigkeitsgrad und die Zufallszahl merkt und sie beim nächsten mal wieder einstellt). Ich hoffe es ist intuitiv genug.
Dann kann man noch Spiele simulieren und den Debugmodus einstellen. Im Spiel sieht man die Kollisionsboxen und in der JFrame-Version öffnet sich ein Analyseframe.
Die Spielgeschwindigkeit kann wie erwähnt mit den Pfeilbuttons während des Spiels verändert werden (oder halt mit q und e).
Außerdem kann die JFrame-Version auch schon class Datei laden (also externe KIs).
Auch die Punktevergabe und einige kleine optische Sachen wurden verändert bzw. verbessert.

Des Weiteren geht die A*-KI gut voran, aber bevor ich die mit online stelle, muss erstmal die Kollisionserkennung komplettiert werden.
Das ist mein nächster geplanter Milestone. Das könnte ein großer werden, denn dann bleiben in der Theorie nur noch optische Verbesserungen und einarbeiten der Wünsche der User. Das Grundgerüst müsste dann fertig sein.

Eine Frage habe ich noch. Weiß jemand wie ich an den Zwischenspeicher (Stichwort strg + v) rankomme? Dann kann ich mein eigenes "Textfield" weiter verbessern. Ich danke! =)

Die neuste Version ist wie immer hier zu erreichen.
 

Apo

Bekanntes Mitglied
So noch einmal vielen Dank für den Tipp, Marco13. ;) Im Textfeld kann man nun per Strg + c, x oder v seine zwischengespeicherten Werte einfügen bzw löschen.

Eine neue stark verbesserte Version ist online. Neben viele kleinen Bugs (irgendwann müssten doch mal alles raus sein ...), müsste jetzt die Kollisionsbetrachtung so hinhauen, wie ich es möchte. ;) Derzeit ist nur noch Walljump an ... da bin ich mir noch nicht sicher, ob ich das drin lasse oder nicht.
Des Weiteren gibt es nun eine halbwegs ordentliche Website (wird noch weiter ausgebaut in den nächsten Wochen). =)
Außerdem kann man nun Replays speichern, laden und abspielen. (wobei noch ein KLITZEKLEINER Fehler drin ist ...)
Und last but not least kann man nun in einem extra ausgelagerten Propertiesfile Sachen, wie die Größe des Frames und ob man im Debug Modus spielen möchte, einstellen. (ob man in 320x240, 640x480 oder 960x720 spielen will z.B.).

Es wird ... ich sage mal es wird. Wer es ausprobieren möchte, der möge hier klicken oder für immer schweigen. =)
 

Marco13

Top Contributor
Ja, hab's mal kurz angesehen - das nähert sich inzwischen schon Copyrightverletzungsverdächtig dem Original an :D Ist es eigentlich Absicht (bzw. war es im Original so) dass man nicht zurücklaufen kann?
 

Apo

Bekanntes Mitglied
Bei einigen Teilen konnte man wirklich nicht zurück laufen. Aber hier ist es so geplant, damit man leicht gegen die Gegner-KI gewinnen kann. =)

Ich habe Nintendo schon angeschrieben und gefragt wie es aussieht. Das Programm hat ja das Ziel einen lehrenden, forschenden Charakter zu haben und "nur" ein Wettbewerb an der Universität ist. Das heißt es wird kein Geld verdient und ist eher positive Publicity für Nintendo. Ihre Antwort war ein Standardblabla, dass sie gegebenenfalls dagegen vorgehen werden ... Da das Programm aver nicht so bekannt werden wird und einen positiven Effekt für Nintendo hat, glaube ich nicht, dass sie dagegen vorgehen werden.

ABER ich habe schon Computervisualisten an meiner Uni angefragt, ob sie nicht Lust haben neue Zeichnungen/Charaktere zu entwerfen. Sieht ganz gut aus, aber wird noch einige Zeit dauern. Kann also sehr gut sein, dass es später anders aussieht. =)
 

Marco13

Top Contributor
Notfalls kannst du ihnen ja sagen, dass sie sich erstmal die ca. 1 Million Google-Ergebnisse ansehen sollen, die erscheinen, wenn man nach "Super Mario Clone" sucht :D Eigentlich ist das ja "Abandonware". Aber als Grundlage für ein Uniprojekt, und insbesondere nicht-kommerziell, sollte das ja OK sein.
 

Apo

Bekanntes Mitglied
So nun habe ich einiges verändert. Was auffallen könnte, nun verliert man beim Duell nicht mehr, nur weil man aus dem Bildschirm rutscht. Es wird einfach ein Player mit der Kamera zentriert. Wenn ihr euch den anderen anschauen wollt, drückt einfach 'c'.

Des Weiteren wird grad ein neues TileSet gezeichnet. Wenn ihr im Menu mal auf 't' drückt, seht ihr den derzeitigen Stand (einige Gegner und der eigentliche Spieler fehlen noch und wurden deshalb noch nicht geändert, aber man erkennt es schon sehr gut, was das Ziel ist denke ich mal). Über Meinungen und Feedback zum TileSet würde ich mich sehr freuen. Ein gewisse "Sozialkritik" wollte ich üben. Erkennt man es? ;)
 

Apo

Bekanntes Mitglied
Ich wollte mal ausprobieren wie schnell am die Jump And Run Engine in andere Spiele implemntieren kann und ich muss sagen 3 Stunden Arbeit und man bekommt ein völlig neues Spiel. Wäre super wenn es jemand mal Testen könnte. Ich will gar nicht viel mehr sagen. Vielleicht ist es ja selbererklärend. Ich werde es die Tage mal weiter ausbauen und extra Levels dafür bauen.

Testen: Bitte klick here
 

Marco13

Top Contributor
Hm. Als demo ganz lustig, aber "Fun und Action" ist was anderes. (Wenn man gegen eine Wand läuft, beendet es sich?! Ansonsten könnte es ja sogar interessant sein...)

Beim Original:
Exception in thread "Thread-12" java.lang.NullPointerException
at apoMario.game.panels.ApoMarioGame.mouseButtonReleased(ApoMarioGame.java:98)
at apoMario.game.ApoMarioPanel.mouseButtonReleased(ApoMarioPanel.java:333)
at apoMario.ApoMarioComponent.think(ApoMarioComponent.java:442)
at apoMario.game.ApoMarioPanel.think(ApoMarioPanel.java:390)
at org.apogames.ApoThread.think(ApoThread.java:239)
at org.apogames.ApoThread.run(ApoThread.java:211)
at java.lang.Thread.run(Unknown Source)

Das mit dem 't' scheint auch nichts zu bewirken... :bahnhof:
 

Apo

Bekanntes Mitglied
Vielen lieben Dank fürs Testen.

Im "Kommando"spiel habe ich mal die fehlenden Kommandos hinzugefügt und es mal ausgestellt, dass man gleich stirbt bei einem Aufprall. Ich muss nur mal überlegen wie man den Spieler ansonsten fordern kann. Ich habe die Zeit mal etwas runtergesetzt. Vielleicht ist es ja jetzt besser. Jetzt hat der Schwierigkeitsgrad auch direkten Einfluß auf das eigentliche Spiel, das Level und die Geschwindigkeit.

Zum "Original": Danke für den Fehler. Wurde verbessert. Er sollte nicht mehr auftauchen. Des Weiteren einfach im Startmenu selber einfach 't' drücken. Nur dort klappt es mit dem Umstellen.
 
M

MiDniGG

Gast
Hm. Also Kommando ist stressig da jedes mal eben das Kommando zu tippen. Aber sehr lustige Idee. :-D

Beim Original finde ich den neuen Hintergrund lustig! Mc Donald's Coins :-D Fehler hab ich in meiner 2 Minuten Testphase keine gefunden :-D
 

Apo

Bekanntes Mitglied
Danke fürs Testen.
Zu ApoCommando: Irgendwie sind doch alle gleich. Ich hatte aus Spaß ein paar sinnlose "Befehle" hinzugefügt und die Leute haben echt versucht alle herauszufinden. Aus diesem Grund habe ich noch wesentlich mehr hinzugefügt. Es ist einiges dabei ... von sinnfreien Sachen, wo man einfach nur eine Antwort vom System bekommt (wie z.B. 'woman') über informative ('stats') bis hin zu spielentscheidenen versteckten Sachen.
Als nächstes möchte ich ein Achievement-System mit integrieren. Mal schauen wie man das am Besten umsetzt, damit es in den Stil passt.
Findet ihr den Zeitdruck ausreichend, um das Spiel anspruchsvoll zu machen? Ich hatte ja erst wie Marco es getestet hat, noch die Kollision mit Wänden drin um zu verlieren. Aber so richtig gewünscht war es ja nicht.

Zum Wettbewerb: Super, wenn es einwandfrei fkt hat. =) Und auch hier danke fürs Testen!
 

Apo

Bekanntes Mitglied
So nun ist beim Commando-Spiel ein einfaches Achievementsystem dabei und 3 speziell angepasste Level. Es werden weitere Levels folgen, aber so kann man es auf jeden Fall spielen. =)
 
Zuletzt bearbeitet:

Apo

Bekanntes Mitglied
Ein letztes Mal zu ApoCommando. Irgendwie kam das gut an in anderen Foren, was mich wirklich motiviert hat ein paar weitere Levels zu machen und die Ideen der anderen umzusetzen.
Jetzt gibt es einen Schwierigkeitsgrad, wo es keinen Zeitdruck gibt. Außerdem gibt es nun 9 Levels und viele versteckte Kommandos, die entdeckt werden wollen.
Würde mich auf jeden Fall freuen, wenn ihr es nochmal testen könntet, ob es auch bei euch gut läuft.
Ich danke euch.

Achtung Spoiler: Wer keine Lust hat alle Level durchzuspielen, kann sich mit 'levelcodes' die Codes der einzelnen Levels anschauen. =)
 

Apo

Bekanntes Mitglied
Ich habe mal wieder an ApoMario weitergearbeitet.

Was ist neu?
- neues verbessertes Menu
- neue Punkteberechnung
- komplettes neues Tileset ingame

Wäre wie immer super, wenn es jemand testen könnte und über Feedback (was ich gut, was nicht?).

Vielen lienen Dank!

Link zum Game: Click here
 

Quaxli

Top Contributor
Ich hatte hier auf der fast 4 Jahre alten Büro-Möhre immer wieder mal Lags. Die FPS lagen eigentlich konstant bei ca. 60 FPS (eigentlich kein schlechter Wert) aber trotzdem blieb der Spieler immer wieder mal hängen - mein Eindruck war, daß das vor allem beim Springen passiert - allerdings habe ich nur 5 Minuten auf den Test verwendet, bin also nicht 100%ig sicher ;)
Was mir gut gefällt ist die Anzeige am unteren Bildschirmrand, wie weit es noch bis zum Levelende ist.

Das Menü gefällt mir persönlich gut. Die kleinen Animation sieht auf jeden Fall besser aus, als ein einfaches Klick-Menü. Das rundet das Ganze meiner Ansicht nach schön ab.

Das einzige was mir nicht gefallen hat ist das vollgefressene Männchen. Spricht mich optisch einfach nicht an. Als "Anzeige", daß man jetzt "Munition" zur Verfügung hat, finde ich die Idee gut, nur die grafische Umseztung gefällt mir persönlich halt nicht. ;)
 

Apo

Bekanntes Mitglied
Danke fürs Testen! =)

Ich hatte hier auf der fast 4 Jahre alten Büro-Möhre immer wieder mal Lags. Die FPS lagen eigentlich konstant bei ca. 60 FPS (eigentlich kein schlechter Wert) aber trotzdem blieb der Spieler immer wieder mal hängen - mein Eindruck war, daß das vor allem beim Springen passiert - allerdings habe ich nur 5 Minuten auf den Test verwendet, bin also nicht 100%ig sicher ;)
Leider muss ich dir recht geben, aber ich weiß nicht so richtig warum. =( Ich habe verschiedene Sachen ausprobiert (BufferedStrategy, nur Offscreenimages oder wirklich bösaritg Swing mit paint malen lassen), aber nichts hat wirklich geholfen und das frustriert mich etwas. Deshalb habe ich mich mit den "Mikrorucklern" abgefunden, weil ich es auch einfach nicht herausgefunden habe, wann und wieso sie auftreten. Das mit dem Springen war es leider nicht ...

Was mir gut gefällt ist die Anzeige am unteren Bildschirmrand, wie weit es noch bis zum Levelende ist.

Das Menü gefällt mir persönlich gut. Die kleinen Animation sieht auf jeden Fall besser aus, als ein einfaches Klick-Menü. Das rundet das Ganze meiner Ansicht nach schön ab.
Danke schön. Finde auch, dass das neue Menu besser passt.

Das einzige was mir nicht gefallen hat ist das vollgefressene Männchen. Spricht mich optisch einfach nicht an. Als "Anzeige", daß man jetzt "Munition" zur Verfügung hat, finde ich die Idee gut, nur die grafische Umseztung gefällt mir persönlich halt nicht. ;)
Mir gefällt der Dicke ganz gut, aber wie du geschrieben hast, ist das wirklich eine subjektive Sache. Im Menu kann mit noch auf 't' drücken und so auf das Original Mario zurückschalten.
 

Sonecc

Gesperrter Benutzer
wirds dazu auch nen Download Link geben?

Edit: vl machst du mal ein Sammelthema mit deinen Spielen auf, sind ja nicht wenige und sie sind qualitativ hochwertig ;)
 

Apo

Bekanntes Mitglied
Wird auf jeden Fall einen Download samt Source geben, aber erst wenn der Wettbewerb an der Universität startet. Ende Januar ist es soweit. Wird ein Pflichtwettbewerb für alle Erstis und eine Klausurvoraussetzung für das 2te Semester werden. Dadurch werden auch genug mitmachen *freu* Bis dahin möchte ich es noch verbessern, mehr und bessere KI's hinzufügen, das Replay zum Laufen bekommen, einige Ideen zur Unterstützung einer KI einbauen, die Website mit mehr und besseren Infos vollstopfen, weitere Sponsoren ranholen und und und ... Also noch ein bisschen zu tun über Weihnachten.

Das mit dem Sammelthread ist eine Idee.
Pro: - weniger Threads von mir und eine gute, zentrale Anlaufstelle zum Schauen, was gibt es neues
Contra: -vlt werden dann einige Spiele eher misachtet und das wäre ja auch doof, obwohl ich in letzter Zeit eh schon nicht mehr alle Spiele hier veröffentliche, um euch nicht zu nerven. =)

Naja mal schauen. =)
 

Sonecc

Gesperrter Benutzer
Ich denke in einem sammelthread wären sie sogar weniger missachtet als hier^^
ApoCommander hab ich z.B. nur durch Zufall entdeckt
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Jump 'n' Run-Spiel Kollisionserkennung Spiele- und Multimedia-Programmierung 3
L Kollisionserkennung und -behandlung Spiele- und Multimedia-Programmierung 3
N Kollisionserkennung Spiele- und Multimedia-Programmierung 5
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
Cromewell JavaFX Kollisionserkennung Spiele- und Multimedia-Programmierung 6
S Kollisionserkennung in Slick2D... Mal wieder Spiele- und Multimedia-Programmierung 4
C Java Kollisionserkennung Spiele- und Multimedia-Programmierung 4
Androbin Pixel-genaue Kollisionserkennung Spiele- und Multimedia-Programmierung 5
Kenan89 Kollisionserkennung - Idee Spiele- und Multimedia-Programmierung 5
T Kollisionserkennung mit AABBs und Spielerobjekt Spiele- und Multimedia-Programmierung 4
P Kollisionserkennung Spiele- und Multimedia-Programmierung 6
R Java3D Kollisionserkennung und Schwerkraft Spiele- und Multimedia-Programmierung 17
B Kollisionserkennung bei gezeichneten Objekten Spiele- und Multimedia-Programmierung 2
M Kollisionserkennung optimieren Spiele- und Multimedia-Programmierung 7
M Kollisionserkennung Spiele- und Multimedia-Programmierung 4
E Probleme mit Kollisionserkennung ! Spiele- und Multimedia-Programmierung 2
P Kollisionserkennung Spiele- und Multimedia-Programmierung 3
R Kollisionserkennung funktioniert nicht Spiele- und Multimedia-Programmierung 3
C Kollisionserkennung Spiele- und Multimedia-Programmierung 3
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
E Möchte Jump and Run programmieren Spiele- und Multimedia-Programmierung 2
N Jump and run Spiel - wo anfangen / weitermachen? Spiele- und Multimedia-Programmierung 11
F Jump'n Run Background wiederholen Spiele- und Multimedia-Programmierung 3
E Java Jump and Run Map zu groß Spiele- und Multimedia-Programmierung 14
Finalspace Entwicklung eines Jump & Run Spiels Video-Tutorial Spiele- und Multimedia-Programmierung 12
C Doodle Jump Sprung Physik? Spiele- und Multimedia-Programmierung 4
M Jump 'n' Run Game - Blöcke? Spiele- und Multimedia-Programmierung 7
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
M Empfehlungen für ein 2D-Jump'n'run Spiele- und Multimedia-Programmierung 4
W Doodle Jump Spiele- und Multimedia-Programmierung 6
H Jump&Run Tutorial Spiele- und Multimedia-Programmierung 3
D Jump'n'run Kollision bei Blöcken Spiele- und Multimedia-Programmierung 10
K Jump'N'Run Hügel Spiele- und Multimedia-Programmierung 11
T Jump and Run - Unklarheiten Spiele- und Multimedia-Programmierung 5
Arcus Jump and Run etwas komplizierter - Benötige Starthilfe Spiele- und Multimedia-Programmierung 12
T Ist meine Jump and Run Engine zu genau? Spiele- und Multimedia-Programmierung 4
N Grundlagen für ein Jump&Run Spiele- und Multimedia-Programmierung 3
F "Doodle Jump" Projekt Spiele- und Multimedia-Programmierung 8
U Jump n' Run 2D Geometrie und Kollisionsabfrage? Spiele- und Multimedia-Programmierung 11
L Jump-n-Run Auslastung verringern Spiele- und Multimedia-Programmierung 16
F jump and run idee Spiele- und Multimedia-Programmierung 2
T Umsetzung eines 2D Jump and Runs Spiele- und Multimedia-Programmierung 7
K Jump n Run Keylistener und Schleifen Spiele- und Multimedia-Programmierung 8
F DJADD Jump and Run Spiele- und Multimedia-Programmierung 10
D Jump 'n run die 2. [spielerbewegen mit zeit] Spiele- und Multimedia-Programmierung 6
D Jump and Run Game -- Kollisionsabfrage Spiele- und Multimedia-Programmierung 30
S Kollisionsprob bei Jump&Run Spiele- und Multimedia-Programmierung 9
S Jump'n'Run: Probleme mit Kollision Spiele- und Multimedia-Programmierung 13

Ähnliche Java Themen

Neue Themen


Oben