ChaosBreaker

Kommentare anzeigen Worklog abonnieren

Worklogs ChaosBreaker

Release Candidate 1 für Windows & Linux!

Sonntag, 3. Februar 2008 von D2006
Für den Fall, dass der geneigte Interessent es noch nicht wissen sollte: Ich hab ChaosBreaker nun veröffentlicht. Version "RC1" ist allerdings nur für Windows erhältlich. (Nachtrag: Nun auch für Linux!)

Links:
SHOWCASE https://www.blitzforum.de/showcase/197/
THREAD https://www.blitzforum.de/foru...hp?t=27060


Die Online-Highscore

Bis tief in die Nacht hab ich gestern noch programmiert und was dabei rauskam, lässt mich bei aller Bescheidenheit schon ein wenig stolz sein. Das Highscoresystem ist fertig und äußerst bequem. Ach meine Ziele, eine hohe Cheatsicherheit zu erreichen, habe ich denk ich ausreichend geschafft. Ohne mich diesmal zu sehr in Details zu verlieren möge ich folgende Worte an potentielle Cheater richten: Ohne Assemblerkenntnisse werdet ihr nicht weit kommen. Falls sich in den nächsten Tagen der Schutz als zuverlässig erweist, werde ich vielleicht ein bisschen aus dem Nähkästchen plaudern, wie das ungefähr gemacht wird.

Danke für die Aufmerksamkeit und viel Spaß beim Spielen!


Nachtrag

Ohje ist das peinlich. Da posaune ich hier noch groß rum, dass das Spiel cheatsicher ist und es dauert keine Viertelstunde, bis Coffee den ersten getürkten Wert in die Online-Highscore einträgt. Beim besprechen des Vorgangs kam ich dann nach einer Weile dem Fehler auf die Schliche: Ich schrieb in der Schutzfunktion jeweils "And", wobei "&" korrekt gewesen wäre. Nun hab ich den Fehler beseitigt und der vorgesehene Cheatschutz funktioniert nun. Klar kann man auch den umgehen, aber der Aufwand ist nicht unerheblich größer und den Nutzen, so ein kleines unbedeutendes Spiel gehackt zu haben, nicht wert.

Dennoch vielen Dank an Coffee, der sicher auch die neue Version mal hacken wird. Smile

Apropos ... Neue Version

Hab gleich ein paar Bugs beseitigt und eine neue Version hochgeladen ... und die auch für Linux!
Viel Spaß beim Testen! Smile

Ich bin noch dran!

Donnerstag, 31. Januar 2008 von D2006
Nur ein kleines Lebenszeichen von mir...

Die lokale Highscore funktioniert soweit ganz gut. Hab jetzt auch größtenteils die Anzeige fertig und einen kleinen Texteffekt eingebaut, damit es nicht zu schnöde wird. Aus Langeweile hab ich mal fix ein Video draus gemacht, obwohl das qualitativ jetzt nicht so toll ist, will ich es euch nicht vorenthalten:
http://youtube.com/watch?v=rQxRQnNblU0

Bin mit dem Userinterface insbesondere nach einem Spiel noch nicht wirklich zufrieden. Da muss ich mir mal noch was geschicktes einfallen lassen. Danke für die Aufmerksamkeit!

Es geht voran, wenn auch schleppend

Sonntag, 27. Januar 2008 von D2006
Dieses Wochenende bin ich nicht so vorangekommen, wie ich es mir gewünscht hätte. Aber immerhin ist der Levelmodus so ziemlich fertig und nach einem Game Over geht's schon weiter. Und die nächsten Schritte sind fest im Blick...

Punkte im Levelmodus

Wie ich schonmals beschrieben hatte, ist es ja schon wichtig, für das Wegklicken von Steinen in hohen Levels mehr Punkte zu kriegen. Quasi als "Belohnung" für das lange Überleben. Erst dachte ich, dass es zu schnell zu viel wird, wenn man die Punkte einfach mit der Levelnummer multipliziert. Dennoch habe ich mir eine Übersicht angefertigt, wie viele Punkte es bei den verschiedenen Größen der Steingruppe in steigendem Level geben würde. Und dabei kam heraus, dass es doch recht geeignet ist. Mit höheren Level ist es ja eh schwerer große Gruppen von Steinen auf einmal wegzuklicken und so kann man den Spieler ja ruhig mal belohnen, wenn er's dennoch schafft. So sieht es also aus: Für das Entfernen einer Gruppe von z.B. 7 Steinen gibt's im ersten Level 49 Punkte, im 5. Level 245 Punkte und im 10. sogar 490 Punkte.

Ebenfalls bereits angesprochen hatte ich ein Bonussystem. Dies ist nun auch implementiert und sieht folgendermaßen aus: Sollte es dem Spieler gelingen, innerhalb eines Intervalls alle oder fast alle Steine zu entfernen, gibt's Bonuspunkte. Die zugrundeliegende Rechnung lautet: Level * 500 - verbleibende Steine * 250. Mit dem Zusatz, dass wenn bei dieser Formel 0 rauskommt, gibt's 100 Punkte und wenn was negatives rauskommt, gibt's natürlich keinen Bonus. Am praktischen Beispiel sieht das dann so aus:

Level 1:
Entfernt der Spieler alle Steine, bekommt er 500 Bonuspunkte.
Verbleibt 1 Stein, bekommt er 250 Punkte.
Bleiben 2 übrig, bekommt er 100 Punkte.

Level 3:
Entfernt der Spieler alle Steine (was eine echte Kunst ist, bei vier Farben), bekommt er 1500 Bonuspunkte.
Verbleiben 2 Steine, bekommt er 1000 Punkte.
Bleiben 6 übrig, bekommt er wieder 100 Punkte.

Und so nimmt die Anzahl der Steine, die übrig bleiben können um noch Bonuspunkte zu kriegen, pro Level um 2 zu. Es vermag allerdings gesagt sein, dass es im 4. Level nur im Glücksfall gelingen sollte Bonuspunkte abzustauben und im 5. schon nahezu unmöglich. Es sei denn man hat allerhand Glück mit Bomben.

Das bisher nur im Kopf existierende Highsoresystem

ChaosBreaker wird intern 14 Highscorelisten verwalten. Es gibt drei Spielmodi (3), von denen die ersten beiden jeweils drei Schwierigkeitsgrade haben (2*3 + 1 = 7). Und selbstverständlich wird das Programm lokale Highscore und Onlinehighscore trennen (2*7 = 14). Nach jedem Spiel wird der Spieler gefragt, ob er seinen Punktestand online abgleichen möchte. (Allein weil ich es recht frech finde, wenn "Offline"-Spiele sich einfach mit dem Internet verbinden.) Sollte er dies tun, wird ihm dann gleich angezeigt, wo er sich befindet. Das ganze wird "seitenweise" gehandhabt, mit zwischen 10 und 20 Einträgen pro Seite. Das Programm wird dann später (bei vorhandener Internetverbindung) alle Highscores aller Listen vom ersten bis zum letzten Platz anzeigen können. Man wird quasi schön durchblättern können.

Lokal gespeichert wird allerdings nur die lokale Highscore. Diese wird zwar nicht im Klartext-Format gesichter, sondern binär, aber auch nicht verschlüsselt. Selbst betrügen können sich die Spieler meinetwegen, soll mir recht sein. Ein Abgleich der lokalen Highscore mit der Onlinehighscore wird nicht möglich sein.

Ich hoffe, dass ich in den nächsten Tagen diese Gedanken in die Quellcode übertragen kann und melde hier die weiteren Fortschritte. Danke für die Aufmerksamkeit.

Mein erstes Spiel unter Linux

Dienstag, 22. Januar 2008 von D2006
Von allzu großen Fortschritten kann ich nicht berichten. Das "Game Over" im Levelmodus war sehr schnell eingebaut und seitdem testete ich viel und behob einige Bugs. Da ich mit dem Balancing recht zufrieden bin, war es Zeit mal ein Release bereitzustellen und meine tapferen Gefährten bei Chaos Interactive nach ihrer werten Meinung zu fragen. Vorab: Nein, es ist kein öffentliches Release. Ich plane vor endgültiger Fertigstellung nur einen Release, den ich dann in guter Microsoftmanier "RC1" nennen werte. Aber bis dahin wird sicher noch ein wenig Zeit vergehen.

Dabei kam mir noch eine andere prima Idee. Da ich das Spiel ohnehin plattformunabhängig machen will, kann ich ja auch endlich mal probieren, dieses Release (Beta 0.75) unter Linux zu kompilieren. Nun denn, nach ewig langer Zeit mal wieder von Ubuntu gebootet und mit Hilfe von Wild-Storms toller Schritt-für-Schritt Erklärung BMax eingerichtet. Der erste Kompilierungsversuch wurde dann aber leider gleich mit einem wirren Fehler bedankt. "CreateWindow" maulte rum. Ich gab bei parent "Desktop()" an, weil ich das bei BlitzPlus mal so gelernt hatte, auch wenn ich schon damals schnell erfuhr, dass "Null" völlig ausreicht. Setzte ich das ein, verschwand der Fehler. Aber: Versucht man die Fenstergröße zu verändern, stürzt die aktuelle Session ab und man wird wieder gebeten, sich einzuloggen. Keine Ahnung woran das liegt. Wenn ich diese Ahnung auch nicht baldig in Erfahrung bringe, muss der Linux-Port wohl leider auf das Resize-Feature (siehe unten) verzichten. Fokussieren wir uns auf die guten Seiten: Der Rest funktioniert tadellos, was auch Blitzcoder bestätigen konnte, der mir freundlicherweise diesen Screenshot zur Verfügung stellte:

user posted image

Das Resize-Feature

In der Windows (und drücken wir die Daumen für die MacOS-) Version ist das Spielfenster vergrößer/-kleinerbar. Ändert man also die Fenstergröße, werden alle Grafiken entsprechend skaliert und man kann sofort weiterspielen. Sinnvoll kann das beispielsweise bei Monitoren mit einer sehr hohen Auflösung sein, wenn man dadurch die kleinen Steinchen kaum mehr treffen kann. Oder gerade umgedreht, wenn jemand mit einer Desktopauflösung von 800x600 das Spiel nutzen möchte und von den Riesenkugeln förmlich erschlagen wird. Jeder, wie er will. Ich hab schnell ein kleines Bild zusammengestellt, was das Feature veranschaulicht:

user posted image

Der Sound

Bei all den letzten Einträgen hier habe ich eins leider ganz außer Acht gelassen. Das Spiel soll natürlich noch ein paar Soundeffekte bekommen, damit der Gesamteindruck abgerundet wird. Ich hatte dafür vor Urzeiten schon selbsterstellte "Blop"-Sounds verwendet. Ich weiß allerdings nicht so recht, ob die nun noch prima passen und werde die Entscheidung bzw. Erstellung neuer/zusätzlicher Sounds auf die lange Bank schieben. Da es nur ein kleines Desktopspiel ist, wird es auf jedenfall keine Musik haben.

Wir immer reichlich Dank für die Aufmerksamkeit.

Der Levelmodus

Sonntag, 20. Januar 2008 von D2006
Heute kümmerte ich mich wie angekündigt um die Implementierung des Levelmodus und musste dabei feststellen, dass Balancing mitunter schwieriger ist als das Programmieren an sich. Im Quellcode festzulegen, ab welchen Level was gültig ist und wie lange es dauert, bis neue Steine nachkommen, ist ja relativ einfach. Dagegen genau auszutüfteln, welche Zeiten bei wie vielen Wiederholungen innerhalb eines Levels ein gutes Balancing machen, ist Arbeit, die jeden Perfektionisten in den Selbstmord treiben würde. Ist es am Anfang zu langweilig? Wird es zu schnell zu schwierig? Ob ich jetzt nun die endgültige Lösung drin habe, weiß ich noch nicht.

Das Intervall, in dem neue Steine von unten nachrücken, verringert sich nun nichtliniear von Level 1 mit 2840 Millisekunden bis Level 10 mit 500 Millisekunden. Es wird zwar sicher möglich sein, höher als Level 10 zu kommen, aber ich denke das hält man nicht allzu lange durch. Außerdem finde ich es doof, in einem bestimmten Level das Spiel so zu gestalten, dass garantiert keiner weiterkommt.

Ansonsten steigt der Schwierigkeitsgrad natürlich noch durch die Anpassung der Spielparameter an. Zu Beginn sind nur drei verschiedene Farben auf dem Feld zu finden und man kann Gruppen ab zwei zusammenhängenden Steinen wegklicken. In Level drei kommt blau als vierte Farbe hinzu. Ab der Stufe vier tauchen auch besagte, unklickbare Felsen auf, welche man dann aber mit grauen Bomben, auftauchend ab Level fünf, zerstören kann. Im sechsten Level kommen noch die farbigen Bomben hinzu, die das Spiel sehr einfacher machen. Allerdings sinkt in diesem Spielabschnitt auch die Intervallzeit rapide und die Krönung ist dann ab Level sieben die Erhöhung der Mindestanzahl wegklickbarer Steingruppen auf drei.

Aktuell funktioniert soweit alles bestens. Der Fortschrittsbalken geht wie geschmiert und ohne den Code groß anzupassen, kann man jederzeit das Spiel pausieren. (Dann wird einem aber der Blick auf die Steine vergönnt.) Das Nachrücken der Steine von unten klappt auch sanft animiert und die Levelwechsel werden angezeigt. Was noch eingebaut werden muss: Game Over; Anpassung der Punktzahlen, wo man doch in höheren Levels auch mehr Punkte für das wegklicken der Steine (=Überleben) bekommen sollte und nicht zuletzt ein Bonussystem, was einem Extrapunkte gibt, sollte man es schaffen (fast) alle Steine wegzuklicken, was insbesondere am Anfang noch recht einfach ist.

Damit man sich das ganze visuell besser vorstellen kann, ein hochaktueller Screenshot:
user posted image

Hier gibt's auch einiges zu sehen: Das große "LEVEL 7" steht da, weil wir das so eben erreicht haben. Die Anzeige verschwindet nach kurzer Zeit wieder. Der rote Fortschrittsbalken ist noch weit am Anfang, weswegen auch die unterste Steinreihe noch so klein ist. Die wurde gerade eben nachgeschoben. Rechts oben ist eine permanente Levelanzeige erkennbar. Die Zahl in Klammern gibt an, wie viel "Steinnachschübe" noch bis zum nächsten Level kommen. (Diese Zahl steigt mit jedem Level, sodass die erforderliche Zeit pro Level ungefähr gleich bleibt. Insiderinfo: Sind etwa 25-30 Sekunden. Ab dem 10. Level immer 20s) Auf dem Spielfeld selbst sehen wir so ziemlich alle Steine die es gibt. Eine graue Bombe und drei farbige. Dieser Strich ist animiert und beim Spielen fällt es überhaupt nicht auf, dass alle Bomben immer den gleichen Anim-Frame anzeigen. (Was man in so einem Standbild natürlich sofort sieht.) Ebenfalls sieht man sehr gut einige graue Fels und vorallem die Tatsache, dass ich kurz nach dem Screenshot verloren hätte, würde es ein Game Over in diesem Modus schon geben.

Wie man sieht, rücken alle Steine sofort von unten nach. Ich hatte zwischendurch mit einer etwas extravaganteren Animation rumprobiert, bei der die Steine von innen nach außen hochgeschoben kamen, was auch recht gut aussah, allerdings nicht mehr in hohen Levels, wenn der Nachschub schneller kam.

Das war's erstmal wieder, ich bedanke mich für die Aufmerksamkeit.

Spielmodi und Balancing

Samstag, 19. Januar 2008 von D2006
Um das süchtigmachende Klickprinzip voll auszureizen, wird das Spiel nach der Fertigstellung drei Spielmodi besitzen, damit für möglichst viele Spieler das richtige Verhältnis zwischen Geschicklichkeit und Schnelligkeit dabei ist.

user posted image

Classic Modus

Im klassischen Modus hat man alle Zeit der Welt, aber nur eine bestimmte Anzahl von Steinen, aus denen man die maximale Punktzahl ausschöpfen muss. Denn je mehr Steine man gleichzeitig wegklickt, desto mehr Punkte gibt's ja auch. Man kann aus 3 Schwierigkeitsgraden auswählen, welche sich durch die Anzahl der verschiedenen Farben, der Mindestanzahl zusammenhängender Steine zum wegklicken und der Anzahl der Reihen, die von der Seite nachgeschoben kommen, unterscheiden.

Turbo Modus

Wie der Name erahnen lässt geht es hier um Schnelligkeit. Man hat 2 Minuten Zeit so viele Punkte wie möglich zu machen. Allein die Maustaste zum Glühen zu bringen reicht aber nicht: Man sollte schon noch ein Auge für große Gruppen von Steinen haben und mit dem ein oder anderen Klick dafür sorgen, dass viele gleichfarbige Steine zusammenfallen. In diesem Modus entfernen sich die Sterne sofort bei Klick, so dass man nicht schauen kann, wie viel Punkte man bekommen wird. Und jeder weggeklickte Stein wird sofort oben nachgeschoben. Es gibt abermals drei Schwierigkeitsstufen mit ähnlicher Abstufung wie im Classic Modus.

Level Modus

Hier entgegnet dem Spieler ein Fortschrittsbalken, welcher immer ankündigt, dass von unten eine neue Reihe Steine nachgeschoben wird. Man kann es schon erahnen: Mit höherem Level kommen neue Steine immer schneller und das Spiel ist verloren, sobald eine Spalte bis obenhin gefüllt ist. Da somit die Schwierigkeit kontinuierlich ansteigt, gibt es keine vorher auswählbare Schwierigkeitsstufe. In höheren Levels kommen mehr Farben hinzu. Bis hin zu grauen Felsen, die gar nicht weggeklickt werden können. Dafür gibt's dann aber auch zwei verschiedene Bomben: Eine schwarze, die in einem Umkreis alle Steine wegsprengt (auch Felsen), und eine farbige, die bei Klick alle Steine der entsprechenden Farbe vom Spielfeld sprengt. Durch Bomben gesprengte Steine bringen keine Punkte, können einen aber vor der Niederlage retten. Bonus bekommt man, sollte man innerhalb eines Levels alle oder fast alle Steine entfernen können, was gerade am Anfang noch sehr leicht sein wird.

Aktueller Fortschritt

Soviel zu den Modi. Spielbar sind derzeit schon die ersten beiden Modi und derzeit kümmere ich mich um den letzten. Der Fortschrittsbalken wurde soeben eingebaut und die Anzeige klappt schon. Haken wird noch sein, die entsprechenden Variablen für Level, Fortschritt usw. cheatsicher zu machen, so dass sich kein Cheater mal eben ins 10. Level "hacken" kann. Das wird das Spiel dann mit einem Absturz bedanken.

Was noch zu tun ist

Das komplette Highscoresystem. Die ersten beiden Spielmodi enden zwar auch schon, aber nach dem Game Over kommt nichts. Später wird man nach einem Spiel die Möglichkeit haben, seinen Punktwert mit der Onlinehighscore abzugleichen. Dies ist nur unmittelbar nach einem Spiel möglich, da nur so die Cheatsicherheit gewährleistet werden kann. Die lokale Highscore erfährt keinen Cheatschutz, weil die Spieler sich dann ja nur selbst betrügen.

Ansonsten werde ich noch so einige Codezeilen umschreiben müssen, um das Spiel multilingual zu machen. Es wird wie auch schon GoBang auch auf englisch erscheinen, zusätzlich plane ich aber auch mit Franzosen Kontakt aufzunehmen, um erstmals auch eine französische Sprachunterstützung zu gewährleisten.

Nebenbei werde ich wohl oder übel mich demnächst mal wieder mit Linux abquälen, dort BMax installieren und mich um die Lauffähigkeit kümmern. Kontakte zu Leuten aus der Community, die sich um die MacOS Portierung kümmern, hab ich auch schon. Sowohl auf PPC, als auch auf Intel-Architektur.

Man möge zwar anzweifeln, dass all dieser Aufwand für ein kleines Spiel eventuell ein wenig unnötig ist, aber für mich ist es wichtig, mal wieder ein Spiel von vorn bis hinten durchzuziehen. Nicht selten scheitern gute Spiele mit Potential an der Hürde, dass noch zu viele Kleinigkeiten gemacht werden müssen. Die sind zwar nicht schwer unzusetzen, erfordern aber meist viel Ausdauer und Motivation. Das ist wohl auch ein Grund, warum ChaosBreaker immernoch nicht erschienen ist und ich mittlerweile schon längst "Projekt des Monats Januar 08" abhaken musste. Aber es wird, es wird!

Danke für die Aufmerksamkeit.

1. Worklogeintrag \o/

Samstag, 22. Dezember 2007 von D2006
Hallo Welt,

hiermit möchte ich die Entwicklung meines Projekts "ChaosBreaker" vorstellen. Da das Projekt ja bissl älter ist, als dieses brandneue, oberaffengeile Worklogs-Feature hier, werde ich also fix die bisherige Entwicklung umreißen.

Die Idee kam mir, als ich das PDA mit Windows CE meines Bruders in den Händen hielt. Darauf war das Spiel "Jawbreaker" und ich fand es recht cool, weil es ein recht simples, aber süchtigmachendes Spielprinzip hat. Also machte ich mich im Jahre 2004 an eine Umsetzung mit BlitzPlus. Damals ganz allein, was sich vorallem grafisch bemerkbar machte:

user posted image

Im Jahre 2006, nachdem zusammen mit d-bug ein anderes Projekt (GoBang) fertigstellte, beschloss ich mit Hilfe seines grafischen Talents den "BlitzJawbreaker" aufzupolieren und vorallem zu vollenden. Irgendwann entstand dann dieser Screenshot, den ich auch hier ins Portal stellte:

ChaosBreaker
ChaosBreaker


Zu dem Zeitpunkt hatte ich schon den Code zu BlitzMax portiert. Naja, dann kam eine lange Pause geprägt von Motivationslosigkeit, Zeitmangel oder anderen Projekten (vorallem das Portal und BB-Poker). Vor kurzem entschloss ich mich, endlich mal weiter zu machen und setzt mir ein Ziel: "Projekt des Monats Januar 2008". Es mag ehrgeizig klingen, aber ich will ja auch voran kommen. Hier noch zwei aktuelle Screenshots:

user posted image
user posted image

So viel erstmal zur Vorgeschichte. Alsbald werde ich einen weitern Eintrag zum aktuellen Stand veröffentlichen.