# Breakout-Klon (Applet!)



## Guest (6. Sep 2005)

Hi!

Ich arbeite an einem Breakout-Klon. Ich wollte nur mal wissen, was ihr davon haltet (ist wie gesagt noch in Arbeit; bis jetzt hab ich ja noch nicht so viel).

Klick mich!


----------



## Beni (6. Sep 2005)

Sieht eigentlich schon gut aus. Aber: mir ist es gelungen den Ball so zu Schiessen, dass er immer zwischen zwei unzerstörbaren Elementen hin und her geht...


----------



## Soulfly (6. Sep 2005)

bei mir auch! *g*


----------



## Guest (6. Sep 2005)

Oh, tut mir leid. Das stimmt, ich weiß nicht so genau was ich dagegen machen soll. Ihr könnt Enter drücken, um den Ball zurück aufs Paddel zu holen (kostet natürlich ein Leben :?  :wink: )


----------



## Beni (6. Sep 2005)

Die Flugbahn leicht zufällig abändern? Dann würden sich die Fehler irgendwann soweit aufaddieren, dass sich der Ball löst (ohne Garantie :bae.


----------



## Guest (7. Sep 2005)

Echit nicht sclehct, war auch recht viel Arbeit oder?
Mir ist dies im übrigen auch passiert?

Mit was berechnest du eigentlich geau den Winkel der Flugbahn?
Berechnest du nur immer +1/-1 auf x oder y drauf oder wie machst du das?


mfg GagamehlO


----------



## Guest (7. Sep 2005)

> Die Flugbahn leicht zufällig abändern? Dann würden sich die Fehler irgendwann soweit aufaddieren, dass sich der Ball löst (ohne Garantie ).


Gute Idee, muss ich mal versuchen.


> Mit was berechnest du eigentlich geau den Winkel der Flugbahn?
> Berechnest du nur immer +1/-1 auf x oder y drauf oder wie machst du das?


Wenn du vom Paddel sprichst: Erst ermittle ich die Mitte des Balles und die Mitte des Paddels, dann berechne ich die Entfernung in Pixeln und multipliziere das so, dass für die x-Geschwindigkeit eine Zahl zwischen -1 und 1 rauskommt. Danach berechne ich die y-Geschwindigkeit.


----------



## Lucky Luc (7. Sep 2005)

Juhu, es hat funktioniert!!! Danke!!!!!

Also, jetzt müsst ihr nur noch lang genug warten und der Ball befreit sich von selbst. 

Jetzt muss ich _nur_ noch Bonuse einfügen (und zuerst mal zeichnen :cry: ), mehr Levels machen, eine Funktion um die Levels zu wechseln, und, falls es zu viele Levels werden, Passwörter und Passworteingabe machen und vielleicht noch ein paar andere Sachen, und mein Spiel ist fertig... :?  :wink:


----------



## 0xdeadbeef (7. Sep 2005)

1) Maussteuerung!
2) Ball hängt immer noch fest (auch > 30 Sekunden helfen nichts).

Die Idee mit der Zufallskomponente ist im Prinzip gut, weil sie quasi die chaotische Natur solcher Vorgänge (mangels Einblick in alle Parameter) simuliert. Eventuell muß die Zufallskomponente einfach nur stärker gewichtet werden, denn viel ist nicht davon zu spüren.
Problem hierbei allerdings: es ist nicht vorhersehbar, wie lange der Ball braucht, um sich zu befreien. Wenn man Pech hat, bekommt man für 10 Minuten genau solche Zufallszahlen, die in Summe dafür Sorgen, daß der Ball in der Falle bleibt. Allerdings ist das eher ein akademischer Einwand...

Ich glaube eh, daß das Problem noch woanders liegt. Ich habe die Situation jetzt mehrfach reproduziert und jedesmal reflektiert der Ball zwischen der rechten oder linken oberen Ecke eines unzertörbaren Block und der Unterseite eines unzerstörbaren Block hin und her. Bei beiden Reflektionen wird der Ball nicht gemäß üblicher Reflektionsgesetze reflektiert, sondern genau in die Richtung, aus der er kam. Während das bei der Ecke noch irgendwie denkbar wäre, ist es bei der Unterseite einfach 100% falsch. 

Überhaupt scheinst Du bei Treffern in der Nähe der Ecken immer in die Ursprungsrichtung zu relektieren, was ich für falsch halte. Ein Eckentreffer sollte eine relativ chaotische Komponente haben, aber auch nur, wenn man wirklich die Ecke trifft. 
Das erklärt aber auch noch nicht, warum auch ein mittiger Treffer der Unterseite zumindest in den "Deadlock"-Situationen fälschlich mit dem Einfallswinkel zurückgeworfen wird. Ich meine auch, das im "normalen" Spiel beobachtet zu haben. IMHO ein Bug.


----------



## Lucky Luc (7. Sep 2005)

0xdeadbeef hat gesagt.:
			
		

> 1) Maussteuerung!
> 2) Ball hängt immer noch fest (auch > 30 Sekunden helfen nichts).
> 
> Die Idee mit der Zufallskomponente ist im Prinzip gut, weil sie quasi die chaotische Natur solcher Vorgänge (mangels Einblick in alle Parameter) simuliert. Eventuell muß die Zufallskomponente einfach nur stärker gewichtet werden, denn viel ist nicht davon zu spüren.
> ...



1 ) Was hast du gegen Tastatursteuerung?
2 ) Tut mir leid, da ist etwas mit dem Upload schiefgelaufen.
3 ) Ich weiß, dass das mit den Ecken sehr extrem ist, aber würde ich den Bereich verkleinern, könnte es passieren, dass der Ball ganz durch den Stein durchgeht (somindest so wie ich das gemacht hab).
4 ) Du darfst von so einem Spiel keine realistische Physik erwarten (vor allem nicht bei mir). Es ist auch nicht besonders realistisch, das man ein Paddel ist, das man steuert, um einen Ball zu treffen, damit der Steine abträgt.
5 ) Auch wenn das jetzt eingebildet klingt: Schau dir ein paar andere Breakout-Klon-Applets an (zum Beispiel aufwww.onlinespiele1.de). Die haben vielleicht eine bessere Physik als meines, aber sind zum Teil auch sehr langweilig.
6 ) Bin ich noch nicht so erfahren mit Java (kein blutiger Newbie, aber trotzdem noch ein Anfänger). Ich hab keine Ahnung, wie ich eine bessere Physik hinkriegen soll.
7 ) Auch wenn das mit den Ecken nicht so extrem wäre, könnte es passieren, das der Ball so hängen bleibt.
8 ) Ich hab grad entschieden, dass ich vielleicht doch noch mal was an der Physik änder.
9 ) Das reicht mal für heute.


----------



## 0xdeadbeef (7. Sep 2005)

Lucky Luc hat gesagt.:
			
		

> Was hast du gegen Tastatursteuerung?


Ich habe nichts dagegen, aber Breakout ist DAS Paradebeispiel für eine sinnvolle Maussteuerung.

Du bist gar nicht hierauf eingegangen:


> Das erklärt aber auch noch nicht, warum auch ein mittiger Treffer der Unterseite zumindest in den "Deadlock"-Situationen fälschlich mit dem Einfallswinkel zurückgeworfen wird. Ich meine auch, das im "normalen" Spiel beobachtet zu haben. IMHO ein Bug.


Hast Du das jetzt geändert? 

BTW: Niemand will eine "perfekte Physik" in einem Breakout-Klon. Aber Die Reflektionen an den Blöcken/Wänden usw. sollten schon einigermaßen plausibel sein, weil genau das das Spiel ausmacht. Sind sie bei Dir ja auch meistens. Bis auf diese merkwürdigen Fälle, bei denen der Ball genau in die Richtung zurückfliegt, aus der er kam - und zwar halt nicht nur an Ecken.

Allerdings hast Du Recht, daß die meisten Breakout-Clones schwach sind. Ich finde es immer erschütternd, wenn Spiele mit teils aufwendiger Grafik dann nur 45°-Winkel verwenden.


----------



## Lucky Luc (7. Sep 2005)

Ich wollte gerade eine Begründung schreiben, warum das passiert und ich es nicht ändern kann, als mir aufgefallen ist, dass das gar nicht stimmt. Konnte die "Ecken-Seiten-Überlappung" jetzt immerhin um 25% verringern (allerdings noch nicht neueste Version hochgeladen)

EDIT: OK, jetzt ist sie hochgeladen


----------



## 0xdeadbeef (8. Sep 2005)

Zumindest solltest Du das Verhalten an den Ecken nur dann benuzten, wenn der Block an dieser Ecke freisteht.
Bei einer Reihe von Blöcken ist es nicht sinnvoll, die innenliegenden Ecken wie außenliegende zu betrachten.


----------



## na-oma (9. Sep 2005)

habs level ma durchgespielt...am ende wirds ganz schön langwierig, weil
a) der Ball dauernd feststeckt (musste schonmal 20 sec auf einen warten...schön wie sich der Zufall immer selbst ein Schnippchen schlägt
b) die letzten Steine schwer zu erreichen sind...naja is wohl bei allen breakouts so 


Wär dafür das Spieltempo zu erhöhen (oder den User per Pfeil Hoch und Runter selbst Tempo wählen zu lassen) bzw. vorher Schwirikgeitsgrad leicht mittel hoch abfragen.

ansonsten: die idee mit den Blitzen ist lustig, hab ich noch nirgends gesehen glaub ich. muss man sich immer entscheiden ob man flieht und den ball verliert, oder ob man stehenbleibt und den ball trotzdem verliert  :lol:


----------



## Roar (9. Sep 2005)

hier gilt ürbigens der gleiche kommentar wie bei deinem pong: einfallswinkel ist bei dir != ausfallswinkel bei ruhendem balken...


----------



## Lucky Luc (9. Sep 2005)

Stimmt, Einfallswinkel != Ausfallwinkel. Das ist aber auch bei sich bewegendem Balken so. Außerdem mache ich das mit Absicht; falls du's noch nicht bemerkt hast, um so weiter der Ball von der Mitte entfernt ist, um so mehr geht er zur Seite. Ich finde das besser als ein 45°-Spiel, bei dem der Ball immer nur abprallt. Da ist dann eigentlich jeder Spielverlauf der gleiche, man muss nur den Ball treffen.
Die dritte Möglichkeit, dem Ball etwas Geschwindigkeit in die Richtung zu bewegen, in die sich der Balken bewegt, wenn der Ball aufprallt, krieg ich nun mal nicht hin (bin einfach zu schlecht).


----------



## 0xdeadbeef (9. Sep 2005)

Lucky Luc hat gesagt.:
			
		

> Die dritte Möglichkeit, dem Ball etwas Geschwindigkeit in die Richtung zu bewegen, in die sich der Balken bewegt, wenn der Ball aufprallt, krieg ich nun mal nicht hin (bin einfach zu schlecht).



Hm, was ist daran so kompliziert? Habe es doch im Pong-Thread im Ansatz beschrieben.
Wie bewegst Du den Ball denn im Augenblick? Du mußt doch bereits sowas wie Schrittweiten in X- und Y-Richtung (deltaX, deltaY) haben, um die unterschiedlichen Abprallwinkel hinzubekommen.
Bei still stehendem Schläger kehrst Du nur das Vorzeichen der Y-Komponente um ( deltaY = -deltaY), bei bewegtem Schläger addierst Du noch einen Offset auf die X-Komponente, dessen Vorzeichen von der Bewegungsrichtung abhängt.
Also sowas wie:


```
// Schläger getroffen
deltaY = -deltaY
if (schlaeger.richtung == LINKS)
    deltaX -= OFFSET;
else if (schlaeger.richtung == RECHTS)
    deltaX += OFFSET;
// Geschwindigkeit beschränken
if (deltaX > MAX_SPEED)
    deltaX = MAX_SPEED;
else if (deltaX < -MAX_SPEED)
    deltaX = -MAX_SPEED;
```

Oder so...
Bei Pong mußt du eigentlich nur deltaX und deltaY vertauschen und OBEN/UNTEN statt LINKS/RECHTS verwenden.


----------



## Solour (11. Sep 2005)

1. nice
2. bei mir hat sich der ball befreien können
3. gibts mehr features als man nach 50% des 1. levels sieht?
4. ball schneller
5. richtungen müssen sich viel öfter ändern
6. maybe blinkende klötze
7. enter drücken raubt leben?
8. das ganze muss schwerer werden oder wenns erst später schwerer wird dann das 1. level kürzer
9. mehrere bälle? speed mode?

bye


----------



## Lucky Luc (11. Sep 2005)

1) Danke
2) Na bitte, wenigstens bei einem funktioniert es
3) Es wird neue geben (hast du die Blitze schon gesehen?)
4) Eine Option zum Wählen der Geschwindigkeit wird eingefügt
5) Was meinst du damit? Wann?
6) Gute Idee, da ich aber weder der begabteste Grafiker bin, noch so genau weiß, wie ich das am besten mach, wird das zumindest in nächster Zeit nicht gemacht.
7) Bald nicht mehr, hab ich nur gemacht als der Ball sich nicht selbst befreien konnte
8 ) Das erste Level ist jetzt viel kürzer; das Level, das im Moment da ist, soll nur mal zeigen was im Moment möglich ist zu machen.
9) Mehrere Bälle sind eingeplant. Speed Mode?

An alle:
Das Spiel hat inzwischen (auf meinem Rechner zumindest) ein paar Fortschritte gemacht:

Was schon gemacht ist:
- 4 Tutorial-Levels
- Dementsprechend eine Funktion zum Levelwechsel
- Eine Option zum Aussuchen der Geschwindigkeit
- Eine Option zum Aussuchen des Startlevels

Was in Planung ist:
- Boni (im Moment folgende: Ball schneller, Ball langsamer, Ball "teilt" sich, Extraleben, Bonuspunkte, vielleicht Paddel größer/kleiner, vielleicht "klebendes" Paddel, vielleicht "schießendes" Paddel, vieleicht vertauschte Steuerung)
- Sich bewegende Steine
- Ein Abschlussbildschirm
- Neue Gegner
- Vielleicht reine "Gegner-Level", in denen man nicht Steine abtragen, sondern einen Gegner treffen muss.

Was (im Moment) nicht in Planung ist:
- Blinkende Steine
- Bessere Physik

EDIT: OK, ich hab jetzt mal was hochgeladen


----------

