# ApoIcejumpReloaded



## Apo (6. Sep 2010)

Hi,

da die ganze Sache mit ApoMario doch echt lange braucht und immer wieder verbessert werden muss, habe ich mir gedacht ich mache was kleines neues nebenbei zur Aufmunterung. Mir kam ApoIcejump in den Sinn, was einige vielleicht noch kennen könnten. Damals hatte es nur ein hässliches Menu und als Applet lief es auch nicht und und und ... Dadurch habe ich es mal neu gestaltet und 1 bis 2 neue Ideen mit einfließen lassen.
Ich hatte unter anderem die Idee vielleicht mal ein Netzwerkspielchen zu machen. Tja dazu hätte ich gleich mal eine Frage. Hat jemand ein gutes Tutorial für ein einfaches Netzwerkspiel? Ich brauche mehr oder weniger nur die Geschwindigkeit der Spieler über das Netz an den Anderen übertragen, was genau 1 Floatzahl wäre. Rein traffictechnisch sollte es also machbar sein. Leider habe ich mit Freund google noch nicht zufriedenstellendes gefunden. Hat jemand einen Tipp in welcher Quelle es gut beschrieben steht, damit ich das vielleicht doch noch hinbekomme? Ich danke für jeden Tipp! =)

Aber bis dahin habe ich schonmal das alte ApoIcejump hübsch gemacht. Also mir gefällt die neue Variante. Ich werde noch ein paar Goodies in den nächsten Tagen hinzufügen, um die Eisblöcke mit nur einem Sprung kaputt zu machen, oder das der Spieler kurzzeitig schneller ist, höher springt, oder durch Berührungen den Gegner kurzzeitig verlangsamt. Ideen habe ich schon genug, ich möchte sie nur halbwegs schön in Szene setzen. =)

Ach lange Rede kurzer Sinn, wäre super wenn jemand von euch es testen könnte und/oder einfach nur ein Feedback geben könnte, was man noch anders machen kann.
Ich danke euch!

Download und Applet: Klick mich

Screenshot:


----------



## Marco13 (6. Sep 2010)

Wieder mal "wie immer"  Mit neuen Fancy Zerplatzeffekten und so... Was dem ganzen IMHO noch einen besondern Reiz geben würde, wäre, wenn man den Gegner wirklich "schubsen" könnte: Wenn man ihn seitlich anditscht, könnte er die Hälfte der eigenen Horizontalbewegung aufgebrummt kriegen (unelastischer oder teilelastischer Stoß), damit man ihn von seiner letzten Eisscholle runterschnicken kann - vielleicht sogar mit einer Beschleunigung beim "Anlauf nehmen" über mehrere Sprünge hinweg.... Ist aber im Voraus schwer zu sagen, wie sich das dann im Spiel "anfühlt"... könnte auch unspielbar werden?! :bahnhof:


----------



## Apo (7. Sep 2010)

Danke Marco für das Feedback =)
Die Idee ist gut. Wenn man jemanden schubst (man muss nur definieren, ab wann es schubsen ist), dann kann dieser sich für 1 Sekunde oder so nicht bewegen und hat die Hälfte des GEschwindigkeit des Gegners ... mal testen, ob das sich gut spielen lässt. Aber an und für sich eine tolle Idee. =)

Habe jetzt schonmal 3 Goodies eingebaut. 1 Feuer (für 8 Sekunden zerstört man bei jeder berührung den Eisblock sofort), 2 Eisblock3 (es werden zufällig 3 neue Eisblöcke erstellt) und Eisblock6 (es werden zufällig 6 neue Eisblöcke verteilt). Optisch wird es noch schick gemacht und weiter Goodies werden folgen.

Hat jemand eine gute Quelle für die Netzwerksache? Ich danke =)


----------



## dzim (7. Sep 2010)

Also erst mal: ich dein Spiel gestern zum ersten mal ausprobiert und bin echt begeistert, was du hier gebaut hast!
Ein echt witziges Spiel für zwischendurch.

Bei der Netzwerksache hätte ich jetzt nicht wirklich einen konkreten Tipp, aber schau dir doch vielleicht mal die BitTorrent-Implementierung vom Standard-Java an - vielleicht läßt die sich ja dazu vergewaltigen, nur ein paar Zahlen hin und her zu schubsen...
Andere Ideen hätte ich jetzt spontan auch nicht - sorry.


----------



## Marco13 (7. Sep 2010)

Apo hat gesagt.:


> Danke Marco für das Feedback =)
> Die Idee ist gut. Wenn man jemanden schubst (man muss nur definieren, ab wann es schubsen ist), dann kann dieser sich für 1 Sekunde oder so nicht bewegen und hat die Hälfte des GEschwindigkeit des Gegners



"Nicht bewegen" klingt gemein - insbesondere, wenn zwei Gegener gleich schnell aneinanderkrachen. Im Moment ist es ja so, dass man zu jedem beliebigen Zeitpunkt durch Drücken von Links/Rechts sich mit konstanter Geschwindigkeit in eben diese Richtung bewegt. Vielleicht könnte man da so eine Art Beschleunigung einbauen, so dass jeder eine Horizontalgeschwindigkeit hat, die durch langes Drücken in eine Richtung erhöht wird. Und wenn A dann mit Geschwindigkeit vA gegen B mit Geschwindigkeit vB kracht, wird die Geschwindigkeit mit den Regeln eines (Teil)elastischen Stoßes neu verteilt. 



> ... mal testen, ob das sich gut spielen lässt.



Genau das ist das, wo noch ein dickes ? dahinter steht...



> Hat jemand eine gute Quelle für die Netzwerksache? Ich danke =)



Da du vermutlich etwas meinst, was über Lesson: All About Sockets (The Java™ Tutorials > Custom Networking) hinausgeht, erstmal nicht...


----------



## tuxedo (7. Sep 2010)

Na wenns nur wenige Daten sind, dann tut's für sowas auch RMI oder SIMON (sofern's nicht unbedingt UDP sein muss).

- Alex


----------



## EgonOlsen (7. Sep 2010)

Also ein Tutorial oder so habe ich jetzt auch nicht parat...ich kann aber den Sourcecode von Robombs anbieten (ganz nach unten scrollen): Download | Robombs 

 Da drin findest du ein Package "clientserver", welches unabhängig vom ganzen Rest ist und ein paar Klassen für einen einfachen Client-/Serveransatz enthält. Kommentiert sind die soweit auch. Ist alles keine Raketenwissenschaft da drin, aber bisher sind mir bei knapp 200.000 Downloads keine Klagen über den Netzwerkcode gekommen, also kann es so schlimm nicht sein...


----------



## Apo (7. Sep 2010)

Danke EgonOlsen. Den Source schaue ich mir später zu Hause liebend gerne an und versuche daran zu lernen.

Auch das SIMON von tuxedo scheint mir auf den ersten Blick sehr brauchbar.

Melde mich wieder, wenn ich ein bisschen mit rumgespielt habe. =)


----------



## EgonOlsen (7. Sep 2010)

Apo hat gesagt.:


> Danke EgonOlsen. Den Source schaue ich mir später zu Hause liebend gerne an und versuche daran zu lernen.


Ich habe auch mal einen Beispiel-Server und einen Beispiel-Client zusammengehackt, die den Kram verwenden. Die sind nicht kommentiert, aber auch nicht sehr komplex. Du findest sie hier: http://jpct.de/download/src/ServerImpl.java bzw. hier: http://jpct.de/download/src/ClientImpl.java
Der Server startet einfach und wartet, die ClientImpl hat ebenfalls eine Main-Methode, die 5 Clients startet und sie jeweils 5 Sek. lang unsinnige Zahlen an den Server schicken lässt. Der nimmt die entgegen und schickt sie mit zusätzlichem Text zurück. Danach melden sich die Clients ab und der Server beendet sich.


----------



## Apo (9. Sep 2010)

So ich habe mal als erstes Marcos Vorschlag umgesetzt.
Wie findet ihr es? Um den Modus zu starten, drückt beim Spielen bitte einfach "b" und ihr seht, wenn es geklappt habt, in der Mitte "acceleration mode" stehen. Dann beschleunigt ihr langsam und wenn ihr den Gegner anstosst gibt es einen elatischen Stoss.

Würde mich über viel Feedback freuen. Ist es besser? Habt ihr andere Wünsche?

Wieder "b" drücken und alles ist wie zuvor.

Ich danke euch vielmas!!!


----------



## Marco13 (9. Sep 2010)

Hm. Der Unterschied ist nicht soo groß... Wenn es ohnehin ein/ausgeschaltet werden kann, könnte man dann den Effekt (für den Test) ein bißchen verstärken? So kann man es kaum ausnutzen, um z.B. den Gegner von einem Block, auf dem er hüft, runterzuschnicken...


----------



## Apo (9. Sep 2010)

Ist gemacht. Ist jetzt verstärkt worden. 
Wenn ich ehrlich bin, fühle ich mich beim Spielen dabei fast ein bisschen "betrunken". 

Und das man es ein- bzw ausschalten kann, dient nur dem Testzwecke.
Wenn es sich bewährt, wird es nur ein System geben.


----------



## Marco13 (9. Sep 2010)

Hm. Also ich find's OK. Wirkt irgendwie ein bißchen "dynamischer". Auch wenn die KI anscheinend nicht 100% damit klarkommt. Aber mal schauen, was die anderen so dazu sagen.


----------



## Apo (25. Sep 2010)

So das Spiel lebt natürlich noch und ich habe mal einen Simulationsmodus (zum schnellen Analysieren, welche KI die beste ist) eingefügt und werde in den nächsten Tagen auf der Website noch einige kleine youtube Tutorials hochladen, wie man selber eine KI schreiben kann. Finde es positiv, dass das Spiel wieder in der Lehre eingesetzt werden wird, um einfache "if-Bots" zu erstellen und um zu zeigen, wie man an ein größeres Projekt von jemand anderem rangeht. Ich freu mich. =)

Des Weiteren bin ich grad dabei einen Netzwerkmodus zu implementieren. Die IP's habe ich schon mal rausgefunden und auf einem Rechner mit mehreren Programminstanzen schon ausprobiert und es fkt. Wenn ich es von fremden Rechnern übers Internet ausgetestet habe, kommt der Code mit rein und ich melde mich wieder. =)


----------



## Friedhelm (25. Sep 2010)

Hallo,

Ich habe das Spiel (Applet) eben zum ersten Mal gespielt. Was mir so aufgefallen ist:

- Im Applet ruckelt es öfters
- starke KI bewegt sich ruckartig nach rechts/links (sieht nicht schön aus)
- mit Modus "b" wird die Richtungsänderung/Bewegung zu träge
- Sprechblasentext in mehreren Zeilen ungünstig (sollten max. 2 Zeilen sein, besser fürs Auge: 1 Zeile)
- Evtl. wenn Sprechblasen angezeigt werden in eine Art "Slowmotion" umschalten.
- Countdown Zähler sieht nicht so schön aus (rote Zahl zu gross, tangiert Text "countdown")
- Lange Namen wie "Christopher de Burin" machen Probleme (durchbrechen Boxränder)

Anonsten unterhaltsames Spiel... ich denke mit den passenden Sounds stimmungsvoller (Seemöven, Meeresrauschen, Dampferhorn, Eis pling, ...)


----------



## Apo (1. Okt 2010)

Vielen Dank fürs Testen und für die konstruktive Kritik!

- Das Applet laggt? Mhh strange. Kann ich dir nicht genau sagen, woran es liegt. Bei meinen Rechner, auf denen ich es getestet habe, lief es einwandfrei ... Wieviel Millisekunden braucht er zum Zeichnen? Einfach "f" dürcken und unten links schauen. Thanks =)
- In der jetztigen Version verhält sich die starke KI anders und verdient langsam auch den Namen. =)
- Der Modus mit "b" bliebt erstmal unangetastet bis ich noch mehr Feedback bekomme, ansonsten fliegt er wieder raus. =)
- Countdownzähler ist angepasst worden. =)
- Namen im Menu haben einen anderen Font bekommen
- Sprechblasentext wurde nicht verändert. Ich finde es passt auch so. Zu langsam wäre suboptimal weil es den Spielfluß hemmt.
- nun kann man auch Bilder für eine Spielfigur einfügen oder alles selber Zeichnen pro KI (siehe Hard KI). =)

new TODO: - Die Idee mit der Musik wird auch noch umgesetzt. Such grad ein schönes Eis-Plonggeräusch. Kennt da jemand etwas in der Art? Bzw hat es auf seinem Rechner liegen?


----------



## Apo (6. Dez 2010)

Jetzt ist das Spielchen eine Tutoriumsaufgabe an meiner Universität in Magdeburg. Wer also Lust hat über Weihnachten mitzumachen und sich mit anderen Studenten zu messen, der kann sich das Spiel runterladen und eine kleine KI schreiben und mir dann schicken an apo@apo-games.de . Einen Wettbewerb mit Auswertung wird es im Januar dann geben.

Download und Applet: Click here

Was ist neu?
- Tutorial zur Einrichtung in Eclipse zur KI-Programmierung auf der Website
- API auf der Website
- FAQ auf der Website
- Schnee im Spiel (ist halt Weihnachten  )
- neuer Countdown, der endlich mal gut aussieht. =)
- Sourcecode in der Jar mit drin. Um an die zu kommen entweder in Eclipse mit öffnen oder einfach das JAR-File entzippen


----------

