# ApoStarz - Bring die Sterne nach Hause



## Apo (30. Okt 2008)

_*Aktulle Version Beta 0.94*_

Hallo,

nach langer Zeit hatte ich wieder etwas Zeit, um ein kleines Spiel zu erstellen.
Herausgekommen ist die Beta zu ApoStarz, einem kleinen innovativen Puzzlegame.

Ein paar Sterne haben ihre Haftung verloren und möchten nun zurück auf ihren angestammten Platz.
Ihr könnt den Sternen helfen, indem ihr das Level immer um 90 Grad dreht, bis die Sterne ihre Zielpunkte erreicht haben. Das klingt einfach und ist es in den ersten Levels auch, wird mit der Zeit aber immer schwieriger. =)

Eine "Kleinigkeit gibt es noch dazu zu sagen: Es ist ein Editor dabei und die Levels sind einfache kleine Strings, sodass wenn jemand Zeit und Muße zum Erstellen von Levels hat, kann er gerne hier die Strings ins Forum schreiben, sodass interessierte Mitspieler es bei sich gleich ausprobieren können. Das bedeutet kein Hochladen von Dateien oder ähnlichem ist notwendig, um sein Meisterwerk mit anderen zu teilen. =)

Ein paar Fakts zum Spiel:
* 4 verschiedene Spielmodi: vom Tutorial über den Normalen bis hin zum TimeAttack Modus
* Über 300 integrierte Level bieten genug Stoff für mehrere Stunden
* ein Editor ist integriert
* einfache Steuerung mithilfe der Pfeiltasten und/oder der Maus

Ich würde mich sehr über ein paar Tester freuen. :applaus: 

Download und Applet gibt es hier!

Screenshot:






*Verison 0.94*:
- Option für die Veränderung der Rotationsgeschwindigkeit eingebaut =)

Verison 0.93:
- Laden des Levels verändert

Verison 0.92:
- Themes mit eingebaut

Version 0.911:
- Im Editor darf nun das MouseWheel benutzt werden, um zwischen den Tiles hin und herzuschalten (geht echt VIEL schneller so ein Level zu bauen )
- Weitere Überprüfungen beim Laden eines Levels eingebaut, damit keine Exception mehr geworfen werden

last fixes in version 0.91:
- Test-Button verschwindet nun auch, wenn der Solve-Button gedrückt wird
- großer Fehler beim Solver entfernt
- Key-Logic endlich in den Logikbereich gepackt und keine direkte Bearbeitung bei Tastendruck

version 0.9:
- Mouse-Logic in den Logikbereich gepackt und keine direkte Bearbeitung bei Mausklick


----------



## trazzag (30. Okt 2008)

Schön mal wieder ein Spiel von dir hier zu finden...

Bin gerade am ausprobieren und schreibe einfach mal der Reihe nach runter, was mit auffällt.

-Tutorial: wenn ein Wort zu lang für die Zeile ist, springt es plötzlich runter statt direkt in der nächsten Zeile zu beginnen.

-Tutorial: man bekommt das Lob "Sehr gut gemacht..." auch, ohne das man den Stern ins Ziel gebracht hat, einfach auf "next Step" klicken.

Bin aber wie immer sehr angetan von deinen Spielen!

ich probiere dann mal noch ein klein wenig weiter aus...


----------



## Quaxli (31. Okt 2008)

Kann mich trazzag nur anschließen! Schönes Spiel.
Meine Erwartungen beim Lesen des Titels wurden nicht enttäsucht 

Der einzige kleine Punkt, der anzumerken wäre, ist daß die Drehung hier bei mir (Genuine Intel, 1,8 GHz, Windows XP) ein wenig flüssiger sein könnte, die ist noch etwas ruckelig.


----------



## Apo (31. Okt 2008)

Danke fürs Testen schonmal! :toll:  :applaus: 

Ich habe den kleinen Bug im Tutorial mit dem nextStep-Button entfernt.
Zu den anderen Sachen.
Ich finde das mit dem in die nächste Zeile rutschen des Wortes eigentlich sehr gut im Tutorial. Wenn ihr es aber als störend empfindet, dann kann ich das gerne noch ändern. Sind nur 2 Zeilen die geändert werden müssten. =)
Das mit dem "Laggen". Nunja ich habe es nur auf meinem Laptop und meinem Homerechner getestet und da lief es recht rund. Aber ich schaue mal, was ich noch machen kann.


----------



## Gelöschtes Mitglied 5909 (31. Okt 2008)

schönes spiel, vielleicht kannste ja noch ne webstart version davon machen


----------



## EgonOlsen (31. Okt 2008)

Nette Spielidee, wobei ich diese Art Spiele eigentlich nicht wirklich lange spielen kann. Machen mich irgendwie kribbelig...
Ich habe das Applet auf einem EEEPC gespielt...läuft ganz gut. Die Drehung ist etwas abgehakt, aber die Kiste hat halt auch nicht viel Power. Ich habe rechts auch mal durch die Level geklickt und ein paar waren sofort nach dem Erscheinen gelöst mit 0 Versuchen. Ich denke, dass soll nicht so sein...


----------



## Apo (1. Nov 2008)

Danke fürs Testen.

Ich habe erstmal im Editor einen solve-Button eingefügt. Der versucht das Level zu lösen und gibt dann die Lösung auch an. (Aber nur maximal 21 Schritte erstmal, muss den Solver noch optimieren, sonst dauert er bei mehr Schritten einfach zu lange =) Aber mit 21 Schritten lassen sich eigentlich so gut wie alle Levels lösen)

Zu dem Problem von EgonOlsen :shock: 
Ich bin gerade noch einmal alle Levels mal schnell und mal langsam mithilfe der Buttons durchgegangen. Aber es kam nie ein Level, was sofort nach 0 Schritten gelöst war. Kannst du den Fehler reproduzieren, wann und wie der auftritt? Vielleicht denke ich ja auch falsch. Denn eins steht auf jeden Fall fest, so ist das nicht geplant  :wink:


----------



## EgonOlsen (2. Nov 2008)

Apo hat gesagt.:
			
		

> Zu dem Problem von EgonOlsen :shock:
> Ich bin gerade noch einmal alle Levels mal schnell und mal langsam mithilfe der Buttons durchgegangen. Aber es kam nie ein Level, was sofort nach 0 Schritten gelöst war. Kannst du den Fehler reproduzieren, wann und wie der auftritt? Vielleicht denke ich ja auch falsch. Denn eins steht auf jeden Fall fest, so ist das nicht geplant  :wink:


Ja, das kann ich reproduzieren. Ich starte das Applet, klicke auf "normal" und klicke dann rechts in der Levelauswahl rum. Und dann passiert sowas:  www.jpct.net/stuff/apo.png


----------



## trazzag (3. Nov 2008)

kann das auch reproduzieren: auf "easy" etwa ist das Level 8 / 29 immer sofort mit 0 Schritten gelöst!

EDIT: bei Level 10 und 11 ebenso...


----------



## Apo (3. Nov 2008)

Habe eine Weile überlegt, woran es liegen könnte, weil es bei mir nicht aufgetreten ist. :?: 
Dann hatte ich glatt eine Idee :!: 

Und nun hoffe ich gehören die Fehler der Vergangenheit an!
Ich würde mich noch einmal über Feedback, ob es geklappt hat, sehr freuen.

Ich danke =)


----------



## EgonOlsen (3. Nov 2008)

Habe den Browsercache gelöscht und das Applet geneut geladen, es hat aber immer noch den Fehler. Kann ich an irgendwas erkennen,ob das wirklich die neue Version ist, mit der ich da teste!?


----------



## Apo (3. Nov 2008)

Hi,

danke erstmal fürs abermalige Tesen.

Es wäre schlecht, wenn es immer noch ist 
Aber ab jetzt steht unten links, welche Version es ist. Es müsste Beta 0.91 sein 

Fall es keine Probleme mehr gibt, dann kann ich ja damit weitermachen *g*


----------



## Marco13 (3. Nov 2008)

Jo, hab's mal kurz angestartet. Die Idee finde ich sehr gut, und die allgemeine Umsetzung und Bedienung auch. Und diese freundlich dreinblickenden Sternchen    herzig :wink:

Ein paar Fragen tauchten dann noch auf... 
1. Der "Levelcode" hat keine anschauliche Bedeutung?!
2. Ja, der "solve"-Button - dieser Gedanke kam mir sehr spontan auch. Wie ist denn dein Löser im Moment, grob, vom Ansatz her? Einfaches durchprobieren? Oder ist das geheim? (Bei mir hat er nicht funktioniert, siehe unten)
3. Hast du dir über die _Lösbarkeit_ im allgemeinen (also eher den theoretischen Teil davon) Gedanken gemacht? Es ist klar, dass man "unlösbare" Levels erstellen kann. Über die Kriterien, die darüber entscheiden, ob ein Level lösbar ist, oder nicht, könnte man wahrscheinlich ziemlich lange grübeln. Aber schon solche Fragen wie z.B. ob man ein Level durch eine "ungeschickte" Drehung "kaputtmachen" kann, oder inwieweit man bestimmte Aktionen (Dreh-Reihenfolgen) wieder rückgängig machen kann, wären ja ganz interessant...

Ja, den Solver wollte ich gleich mal testen - aber der macht bei mir erstmal nichts, außer den Levelcode auzugeben, und irgendwie hakt es danach manchmal... (auch, wenn keine Exception geflogen kommt). Zwischendrin kam dann mal eine

```
Exception in thread "Thread-267" java.lang.NullPointerException
	at apoStarz.level.ApoStarzLevel.getWidth(ApoStarzLevel.java:303)
	at apoStarz.level.ApoStarzLevelLoad.getStringForWall(ApoStarzLevelLoad.java:175)
	at apoStarz.level.ApoStarzLevelLoad.getLevelStringMethodOne(ApoStarzLevelLoad.java:120)
	at apoStarz.level.ApoStarzLevelLoad.getLevelString(ApoStarzLevelLoad.java:105)
	at apoStarz.level.ApoStarzLevel.getLevelString(ApoStarzLevel.java:245)
	at apoStarz.editor.ApoStarzEditor.thinkMouseFunction(ApoStarzEditor.java:460)
	at apoStarz.editor.ApoStarzEditor.think(ApoStarzEditor.java:587)
	at org.apogames.ApoThread.think(ApoThread.java:233)
	at org.apogames.ApoThread.run(ApoThread.java:196)
	at java.lang.Thread.run(Unknown Source)
```
(und an der gleichen Stelle auch mal aus dem Event-Dispatch-Thread). Jaaaa, sorry, diese beschissene Fehlerbeschreibung: "Das passiert manchmal..." :roll: :wink: Ggf. kann ich nochmal schaun, ob ich den _reproduzierbar_ hinkriege....

Aber der Solver ist vermutlich noch "under Construction" - der Rest ist IMHO:  :toll:


----------



## Apo (4. Nov 2008)

Huch ich hatte nicht gedacht, dass jemand den Solver wirklich nutzt :lol: 

Als Erstes eine kleine Frage: Findet ihr das Spiel so schicker?

*Zum Level selber*: Der Levelcode hat keine anschauliche Bedeutung. Ich habe versucht das Level als String zu repräsentieren und ihn dabei so kurz wie möglich werden lassen. So richtig zufrieden bin ich bei sehr großen und vollen Levels noch nicht, aber habe auch gerade keine Idee, wie ich ein mir unbekanntes, großes Level noch besser als String darstellen kann.

*Zum Fehler des Solvers*: Wahrscheinlich stand in der TextArea kein Text als du den Solver starten wolltest. (Jedenfalls hoffe ich das mal stark =), weil ich sonst nicht wüsste woran das lag) und außerdem war noch ein Fehler im Code (weil ich was verändert hatte für die Beta 0.9) *hust*

Zum Solver ... Der Button solve verschwindet, wenn man ihn drückt, weil er dann versucht das Level (was in der TextArea steht/stand) zu lösen. Zur Zeit geht er nur alle Möglichkeiten für maximal 21 Schritte durch (also 2^21). Wenn er eine Lösung gefunden hat, setzt er die maximale Suchtiefe auf die aktuelle Lösung und sucht aber noch weiter bis er wirklich alle Möglichkeiten durchforstet. Also ein einfacher lang dauernder BruteForce 
Solange unter dem Levelstring keine Lösung steht und der solve-Button noch nicht sichtbar ist, sucht er noch. Er lagert es in einen extra Thread aus, damit der Nutzer nicht soviel davon mitbekommt, aber es könnte dadurch schon etwas laggy werden.
Ist er fertig mit suchen, kommt der solve Button wieder und eine Nachricht, dass er für dieses Level entweder in 21 Schritten keine Lösung gefunden hat oder die Lösung (in der Form "llllrrrll", wobei l für left und r für right steht). Wenn er keine Lösung findet, kann das schon so 4 Minuten dauern, bis er alle Möglichkeiten durchprobiert hat (Zeit beruht auf Werten meines Rechners. Auf einem schönen eeepc kann das etwa slänger dauern. ps.: Wenn ich sehr bald endlich mal richtig Geld verdiene, habe ich auch so ein schönes Teil =)

Ein Beispiel, was bei mir zwar eine Lösung liefert, aber bestimmt fast 4 Minuten gedauert hat, war das Level *bj1#"%1#"!0"#"1!0#1"3!."0!$2!* (es ist in 20 Schritten lösbar, wie er es irgendwann herausbekommt, aber er versucht dadurch fast alle Möglichkeiten (also 2^20 + n Schritte). Wenn jemand Lust hat, der kann das Level im Editor in der textArea einfügen, per loadS-Button danach laden und versuchen lösen zu lassen. Es kann wie gesagt sein, dass es bei euch schneller oder langsamer geht, im Zweifelsfall heisst es einfach warten  ).
Ein anderes Beispiel, was nicht einmal 1 Sekunde gedauert hat, war *bf0#%#$/#/!*
Es kommt halt darauf an, wie schnell das Level lösbar ist. =) 2 Steine mehr wie im vorherigen Level, also jetzt *bf0#%#$/#-!-#*  können bedeuten, dass es mal 10 Sekunden dauert. =)
Wenn ihr euch dann das Ergebnis des Levels anschauen wollt, einfach auf test, dann auf menu, dann highscore und dort das letzte Level wählen und schauen wie genau es geht. =)
Ich habe jetzt auch mal den test-Button gleichzeitig verschwinden lassen, weil er sonst in das andere Panel gehen kann, aber den Thread nicht beendet. Das ist nicht Sinn der Sache und ich bin irgendwie auch nicht auf die Idee gekommen, wenn der Solver noch läuft, auf den test-Button zu drücken 

*Zur Lösbarkeit des Levels selber*: Naja ich habe schon darüber nachgedacht, aber der Solver war gedacht für die Levels, die ich mitgeliefert habe und die hatte ich alle (bis auf eins) in unter 21 Schritten geschafft. War mir aber nicht sicher, ob es die perfekte Lösung war und habe dadurch den Solver schnell geschrieben. Es reizt mich schon einen "richtigen" Solver zu schreiben, der ausgibt, ob ein Level überhaupt lösbar ist und welche bzw. wieviel Schritte es benötigt. Aber so einen "richtigen" Solver zu schreiben, könnte noch eine Weile dauern. =)
Und ja das letzte Tutorial-Level kann man durch das falsche Drehen "kaputtmachen" und nicht mehr lösen


----------



## Marco13 (4. Nov 2008)

Der Sternenhintergrund passt natürlich besser zum Thema - kannst ja einstellbare Themes anbieten :wink: 
Allgemein habe ich mich aber gefragt, ob die "Blockige" Grafik der Randsteine System hat, oder ob das nur "zufällig" so ist...

Ja, das Level kompakt als String zu repräsentieren ist sicher eine Herausforderung. WIE es jetzt codiert ist, weiß man natürlich nicht. Die Alternative, die Levels als "Plain Text"

```
BBBBBB
B S  B
B  T B
BBBBBB
```
zu speichern wäre natürlich nicht so kompakt, aber anschaulicher. Trotzdem ist die codierung natürlich ziemlich heikel, weil sie ja immer "abwärtskompatibel" sein muss - auch wenn (falls) es mal irgendwann mehr Items gibt (Teleporter oder sonstwas...)

Den Solver werde ich vielleicht später nochmal testen. Eine Brute-Force-Suche ist bei eine Lösung, die aus einem Bitmuster besteht, natürlich naheliegend .... sich da was geschickteres zu überlegen könnte aber schwierig werden...


----------



## Quaxli (4. Nov 2008)

Apo hat gesagt.:
			
		

> Huch ich hatte nicht gedacht, dass jemand den Solver wirklich nutzt :lol:
> 
> Als Erstes eine kleine Frage: Findet ihr das Spiel so schicker?



Ja, auf jeden Fall!


----------



## Apo (4. Nov 2008)

Marco13 hat gesagt.:
			
		

> Der Sternenhintergrund passt natürlich besser zum Thema - kannst ja einstellbare Themes anbieten :wink:



Habe ich natürlich gleich eingebaut. Nun kann man zwischen beiden Themes wählen



			
				Marco13 hat gesagt.:
			
		

> Allgemein habe ich mich aber gefragt, ob die "Blockige" Grafik der Randsteine System hat, oder ob das nur "zufällig" so ist...


Blockige Grafik? Wie ist das gemeint? Für Verbesserungsvorschläge bin ich immer offen =)



			
				Marco13 hat gesagt.:
			
		

> Ja, das Level kompakt als String zu repräsentieren ist sicher eine Herausforderung. WIE es jetzt codiert ist, weiß man natürlich nicht. Die Alternative, die Levels als "Plain Text"
> 
> ```
> BBBBBB
> ...


Der String sollte so kurz wie möglich sein -> habe ich mich gegen diesen "Plain Text" entschieden =)


----------



## Marco13 (4. Nov 2008)

Mit "blockig" meinte ich in diesem Fall "Pixelig": Bei den Randsteinen sind die "Augen" und der Mund eckig... "stört" nicht, wollte nur fragen, ob das Absicht war ...


----------



## EgonOlsen (7. Nov 2008)

Apo hat gesagt.:
			
		

> Hi,
> 
> danke erstmal fürs abermalige Tesen.
> 
> ...


Habe es eben nochmals probiert. Diesmal auf einem anderen EEEPC, wo das Spiel noch nie gelaufen ist. Unten links steht Beta 0.92, manche Level lösen sich immer noch selber in 0 Schritten. Das Problem ist also nicht behoben.


----------



## Apo (8. Nov 2008)

Das ist doch zum  :cry:  ???:L  :autsch:  :noe:   

Eine Idee habe ich noch woran es liegen könnte. Ich werde versuchen sie umzusetzen, wenn ich wieder an meinem Rechner bin und melde mich dann wieder.
Es ist auf jeden Fall sehr ärgerlich, weil es bei mir ohne Probleme funktioniert und leider nur bei einigen nicht. Aber auch das Problem kriegen wir noch in den Griff. =)


----------

