<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Glow</title>
	<atom:link href="http://www.black-chronos.com/glow/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.black-chronos.com/glow</link>
	<description>The freeware action game</description>
	<lastBuildDate>Mon, 02 Jan 2012 20:58:26 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pac-Man in 140 Bytes</title>
		<link>http://www.black-chronos.com/glow/2012/01/pac-man/</link>
		<comments>http://www.black-chronos.com/glow/2012/01/pac-man/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 20:58:26 +0000</pubDate>
		<dc:creator>Thiemo</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.black-chronos.com/glow/?p=983</guid>
		<description><![CDATA[Ich kann ein weiteres kleines Spiel in die Liste meiner Kreationen aufnehmen: Pac-Man im Webbrowser. Es gibt Gegner, die man anders als im Original aber nicht auffressen kann, und sechs Levels, von denen der letzte absichtlich so schwierig ist, dass ich ihn selbst nur mit viel Geduld schaffe. Eine Zeitanzeige oder gar Bestenliste gibt es [...]]]></description>
			<content:encoded><![CDATA[<p>Ich kann ein weiteres kleines Spiel in die <a href="http://maettig.com/?page=Spiele">Liste meiner Kreationen</a> aufnehmen: Pac-Man im Webbrowser. Es gibt Gegner, die man anders als im Original aber nicht auffressen kann, und sechs Levels, von denen der letzte absichtlich so schwierig ist, dass ich ihn selbst nur mit viel Geduld schaffe. Eine Zeitanzeige oder gar Bestenliste gibt es nicht. Das Spiel soll für sich selbst stehen. Spielt es, habt Spaß, und das soll auch reichen.<br />
<span id="more-983"></span></p>
<ul>
<li><a href="http://maettig.com/code/javascript/pac-man-in-140byt.es.html">Pac-Man spielen</a>.</li>
<li><a href="https://gist.github.com/1384306">Zur Diskussion bei GitHub</a>.</li>
<li><a href="http://twitter.com/#!/maettig/status/153863474475315200">Jüngster Tweet zum Thema</a>.</li>
</ul>
<p>Entstanden ist das Spiel im Rahmen von <a href="http://140byt.es/">140byt.es</a>, einer Art Wettbewerb, bei dem es darum geht, nützliche JavaScript-Funktionen auf Tweet-Größe, also auf maximal 140 Bytes zu schrumpfen. Das Ganze erinnert sehr an meinen <a href="http://wildmag.de/compo/">256b.htm-Wettbewerb von 2002</a>, hat aber nicht direkt etwas damit zu tun, auch wenn <a href="http://www.p01.org/">p01</a> bei beidem zu den Führenden gehört.</p>
<p>Zwei Dinge haben mich an meinem kleinen Pac-Man-Projekt fasziniert:</p>
<ul>
<li>Das Spiel besteht fast ausschließlich aus Elementen, die 140 Bytes oder kleiner sind. Das betrifft die GIF-Grafiken, vor allem aber den JavaScript-Quelltext. Es klingt vielleicht seltsam, aber aus Sicht des Programmierers steht hier tatsächlich die <em>Schönheit</em> des Quelltextes im Vordergrund.</li>
<li>Aus Sicht des Spieleentwicklers war die Entwicklung der Gegner-KI (selbstverständlich auch in 140 Bytes) am interessantesten. Ich hatte mit zufälligen Bewegungen experimentiert und war damit sehr unzufrieden. War die Bewegung komplett zufallsgesteuert, zappelten die Gegner nur wild auf der Stelle herum. Konstante Vorwärtsbewegung mit zufälligem Abbiegen an Kreuzungen war auch nicht viel besser. Die Gegner sprangen viel zu häufig zwischen zwei Kreuzungen hin und her und bewegten sich zu selten von dort weg. Es war einerseits zu leicht, ihnen aus den Weg zu gehen, andererseits entstand schnell Frust, wenn sich ein Gegner unerwartet plötzlich doch umentscheidet und die Spielfigur tötet. Die Lösung: Gar kein Zufall. Jede Bewegung ist streng deterministisch: Die Gegner bewegen sich stur geradeaus, bis es nicht mehr geht, und dann biegen sie links ab. Das ist alles, und das macht erstaunlicherweise am meisten Spaß, sowohl beim Spielen als auch beim Konstruieren der Levels. Denn man kann dank dessen Levels konstruieren, in denen jede Gegnerbewegung genau festgelegt ist. Man kann Ruhezonen konstruieren, in die sich garantiert nie ein Gegner verläuft. Man kann mehrere Gegner auf verschiedenen Pfaden durcheinander laufen lassen, so dass alles völlig chaotisch wirkt, obwohl es das in Wirklichkeit nicht ist. Der Spieler kann Tastenkombinationen einüben und wird dafür belohnt, da sich der Level auch beim nächsten Versuch mit den selben Handgriffen lösen lässt.</li>
</ul>
<p>Bei der Weiterentwicklung von Glow 1.5 zu Glow 1.666 habe ich dieses erstaunlich wirkungsvolle Prinzip ein wenig missachtet: Die Gegner laufen verschieden schnell und drehen auch mal um. Allerdings ist Glow auch wesentlich komplexer als Pac-Man und kann etwas mehr Komplexität gut vertragen. Zumindest, wenn sie nicht zu Frust führt. Deshalb ist das zufällige Umdrehen inzwischen auch wesentlich entschärft: Es passiert nur noch sehr selten und wird dem Spieler klar angekündigt. Der Gegner wird sichtbar langsamer, bleibt stehen, dreht um, wartet noch kurz und läuft erst eine Sekunde später wieder los. Und so sind die Gegner am Ende doch wieder genauso deterministisch und vorhersehbar wie die Geister in Pac-Man. Hauptsache, es macht Spaß.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.black-chronos.com/glow/2012/01/pac-man/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PNG-Optimierung extrem</title>
		<link>http://www.black-chronos.com/glow/2011/10/png-optimierung-extrem/</link>
		<comments>http://www.black-chronos.com/glow/2011/10/png-optimierung-extrem/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 20:40:06 +0000</pubDate>
		<dc:creator>Thiemo</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.black-chronos.com/glow/?p=966</guid>
		<description><![CDATA[Heute bin ich auf einen interessanten Beitrag im ZFX-Forum (dem offiziellen &#8222;Nachfolger&#8220; von Developia) aufmerksam geworden. Der Autor Krishty versucht, die Kompression von PNG-Grafiken ins Extrem zu steigern, noch weiter als es mit den gängigen PNG-Optimierern pngcrush, OptiPNG oder dem von mir bevorzugten PNGOUT möglich ist.

Die genannten Werkzeuge stecken unheimlich viel Rechenaufwand in die Analyse [...]]]></description>
			<content:encoded><![CDATA[<p>Heute bin ich auf einen <a href="http://zfx.info/viewtopic.php?f=7&#038;t=59">interessanten Beitrag im ZFX-Forum</a> (dem offiziellen &#8222;Nachfolger&#8220; von Developia) aufmerksam geworden. Der Autor Krishty versucht, die Kompression von PNG-Grafiken ins Extrem zu steigern, noch weiter als es mit den gängigen PNG-Optimierern pngcrush, OptiPNG oder dem von mir bevorzugten <a href="http://advsys.net/ken/utils.htm">PNGOUT</a> möglich ist.<br />
<span id="more-966"></span></p>
<p>Die genannten Werkzeuge stecken unheimlich viel Rechenaufwand in die Analyse einer PNG-Grafik und versuchen, ein <a href="http://de.wikipedia.org/wiki/Extremwert">globales Minimum</a> für den komprimierten Datenstrom zu finden. Das Ergebnis kann trotzdem weiterhin mit jedem Webbrowser oder Bildbetrachter geöffnet werden.</p>
<p>Krishty wirft diese Zwänge über Bord und eröffnet sich damit zwei interessante Lösungsmöglichkeiten:</p>
<ol>
<li>Er analysiert die PNG-Grafik nur, findet den perfekten <a href="http://de.wikipedia.org/wiki/Portable_Network_Graphics#Vorfilter">Vorfilter</a> und speichert die PNG-Datei völlig <em>ohne</em> Kompression ab. Die Kompression überlässt er anschließend <a href="http://de.wikipedia.org/wiki/7-Zip">7-Zip</a>. Das lohnt sich vor allem bei vielen gleichartigen Grafiken. Diese werden nicht mehr einzeln betrachtet sondern 7-Zip hat die Möglichkeit, ein &#8222;solides&#8220; Archiv über alle Dateien zu bilden.</li>
<li>Er tauscht den Datenblock innerhalb der PNG-Dateien durch einen eigenen aus, der eine <a href="http://de.wikipedia.org/wiki/Prediction_by_Partial_Matching">wesentlich aufwändigere Kompressionsmethode</a> nutzt. Diese PNG-Dateien sind dann mit keinem anderen Programm mehr lesbar, nur innerhalb des Spiels, für das sie gemacht wurden.</li>
</ol>
<p>Für Glow kommt nichts davon in Frage. Interessant ist es aber allemal.</p>
<p>Zum Vergleich fasse ich einmal meine wichtigsten Erkenntnisse zusammen, die ich während der Arbeit an unserem Spiel gewonnen habe. Daraus wollte ich schon lange einen eigenen, extralangen Artikel machen. Das ist er also.</p>
<ul>
<li>Ich benutze nur noch <a href="http://advsys.net/ken/utils.htm">PNGOUT</a>, keinen anderen Optimierer mehr. OptiPNG liefert auch ganz gute Ergebnisse, aber im Vergleich habe ich festgestellt, dass PNGOUT unsere 32-Bit-RGBA-Rendergrafiken meist effektiver eindampft. Deshalb spare ich mir den Aufwand, mehrere Tools durchlaufen zu lassen, jetzt ganz.</li>
<li>Ich lassen PNGOUT immer mit mindestens zwei verschiedenen Filtern durchlaufen. Einmal mit der Automatik <code>/f5</code>, bei der PNGOUT versucht, eine optimale Filtermethode für jede Bildzeile zu finden. Und einmal mit <code>/f0</code>, das heißt ganz ohne <a href="http://de.wikipedia.org/wiki/Portable_Network_Graphics#Vorfilter">Vorfilter</a>. Und eventuell noch einmal mit <code>/f1</code>, dem Filter, der immer das jeweils vorhergehende Pixel zum Vergleich heran zieht. Meist produziert <code>/f5</code> die besten Ergebnisse, aber bei manchen Bildern sind Durchläufe ohne Vorfilter noch ein paar Prozentpunkte besser. Die Filter 2, 3 und 4 lohnen sich meiner Erfahrung nach dagegen so gut wie nie.</li>
<li>Wir arbeiten sehr viel mit 32-bittigen Bildern, also mit 24 Bit Farbtiefe und einem 8 Bit Alphakanal. Dort, wo der Alphawert Null ist, ist von den 24 Farbbits nichts zu sehen. Dummerweise speichern manche Programme trotzdem etwas dort ab, obwohl man es überhaupt nicht sehen kann. Aufgefallen ist mir das einmal, als in einer linear interpolierten Grafik plötzlich weiße Pixel an den Rändern aufflackerten. PNGOUT lässt diese unsichtbaren Daten bewusst intakt. Meine Lösung: Ich habe mir ein kleines Tool geschrieben, dass eine PNG-Datei pixelweise durchgeht und überall dort, wo A=0 ist, auch R=0, G=0 und B=0 setzt. Das hat manche Grafiken, die ganz merkwürdigen Datenmüll in ihren transparenten Bereichen enthielten, noch einmal auf die Hälfte reduziert.</li>
<li>Beim Lesen des ZFX-Beitrags fiel mir noch etwas ein: Man sollte Sprite-Animationen mit vielen gleichartigen Animationsphasen gemeinsam in einem großen PNG-Bild speichern, nicht einzeln, wie wir es bei Glow machen. Das hat mehrere Vorteile: Verringerte Zugriffszeiten auf die Festplatte, schnelleres Laden durch weniger Fragmentierung. Und der Kompressionsalgorithmus kann sein Wissen über die vorhergehende Animationsphase auf alle folgenden anwenden. Ein paar einfache Tests zeigen aber, dass diese eigentlich offensichtliche Idee in vielen Fällen erstaunlich wenig bringt. Teils werden lange Bildstreifen sogar ein paar Bytes größer als die einzelnen Dateien zusammen genommen. Bei sehr vielen, sehr kleinen Dateien kann das aber durchaus noch einmal 20&nbsp;% einsparen. Wie man die Bilder anordnet (als horizontaler oder vertikaler Streifen oder als Rechteck), ist meinen schnellen Tests zufolge ziemlich gleichgültig.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.black-chronos.com/glow/2011/10/png-optimierung-extrem/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>TTF-Schriftart Shatterboxx Extended</title>
		<link>http://www.black-chronos.com/glow/2011/10/ttf-schriftart-shatterboxx-extended/</link>
		<comments>http://www.black-chronos.com/glow/2011/10/ttf-schriftart-shatterboxx-extended/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 18:31:20 +0000</pubDate>
		<dc:creator>Thiemo</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.black-chronos.com/glow/?p=950</guid>
		<description><![CDATA[Heute möchte ich eine weitere Kleinigkeit an die Allgemeinheit übergeben, nämlich die Hausschrift unseres Spiels: Shatterboxx stammt ursprünglich von einem unbekannten Autor namens R.B., der den Font als Freeware uneingeschränkt freigegeben hat. Leider ist es ganz typisch für solche Schriftarten, dass Umlaute und andere Sonderzeichen fehlen. Deshalb habe ich die Schrift im Laufe der Entwicklung [...]]]></description>
			<content:encoded><![CDATA[<p>Heute möchte ich eine weitere Kleinigkeit an die Allgemeinheit übergeben, nämlich die Hausschrift unseres Spiels: Shatterboxx stammt ursprünglich von einem unbekannten Autor namens R.B., der den Font als Freeware uneingeschränkt freigegeben hat. Leider ist es ganz typisch für solche Schriftarten, dass Umlaute und andere Sonderzeichen fehlen. Deshalb habe ich die Schrift im Laufe der Entwicklung von Glow mehrmals erweitert und überarbeitet. Das Ergebnis sieht so aus:<br />
<span id="more-950"></span></p>
<p><a href="/glow/upload/Shatterboxx-extended.ttf"><img src="/glow/wp-content/uploads/2011/10/shatterboxx-ttf-font-extended.png" alt="Shatterboxx TTF Font Extended Version" title="Für Glow 1.666 stark erweiterte Version der Shatterboxx-Schriftart" width="500" height="260" class="alignnone size-full wp-image-952" /></a></p>
<p><a href="/glow/upload/Shatterboxx-extended.ttf"><strong>TTF-Schriftart Shatterboxx Extended herunterladen</strong></a> (42 KB).</p>
<p>Das Original, das man an vielen Stellen im Web findet, sah so aus:</p>
<p><a href="/glow/wp-content/uploads/2011/10/shatterboxx-ttf-font-original.png"><img src="/glow/wp-content/uploads/2011/10/shatterboxx-ttf-font-original.png" alt="Shatterboxx TTF Font Original Version" title="Originalversion der Shatterboxx-Schriftart" width="500" height="260" class="alignnone size-full wp-image-951" /></a></p>
<p>Die wichtigsten Unterschiede:</p>
<ul>
<li>Ich habe alle Kleinbuchstaben durch Kopien der Großbuchstaben ersetzt. Nur so sieht der Text vernünftig und einigermaßen lesbar aus, ohne dass man wirklich alle Texte in Großbuchstaben wandeln muss (so wurde es noch in Glow 1.0 gemacht).
<li>Ich habe versucht, die Umlaute und alle gängigen Zeichen des Zeichensatzes <a href="http://de.wikipedia.org/wiki/ISO_8859-1">ISO 8859-1</a> bzw. des zweiten <a href="http://de.wikipedia.org/wiki/Unicode-Block_Lateinisch-1,_Ergänzung">Unicode-Blocks Lateinisch-1, Ergänzung</a> zu ergänzen. Damit ist die Schrift für die meisten westeuropäischen Sprachen brauchbar geworden, einschließlich Französisch, Spanisch, Portugiesisch, Norwegisch usw.</li>
<li>Der Zeichenabstand, also die Lücken zwischen den Buchstaben, ist etwas höher. Das macht den Text noch einmal etwas besser lesbar. Vor allem die Satzzeichen heben sich nun deutlicher vom restlichen Text ab.</li>
<li>Der Zerstörungseffekt war bei einigen Buchstaben etwas übertrieben. Dort fehlten ganze Teile. Diese Lücken habe ich aufgefüllt.</li>
</ul>
<p>Diese Mühe habe ich mir hauptsächlich deshalb gemacht, weil wir Glow <a href="/glow/2010/12/sprachen-verbinden-ubersetzerin-gesucht/">in viele andere Sprachen übersetzen wollten</a>. Theoretisch lässt sich unser Spiel sogar <a href="/glow/2009/02/level-bossgegner-zaubersteine/">ins Japanische übersetzen</a>. Sogar ein komfortables Online-Tool gibt es dafür. Nur gemeldet hat sich leider niemand.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.black-chronos.com/glow/2011/10/ttf-schriftart-shatterboxx-extended/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vierte Preview veröffentlicht</title>
		<link>http://www.black-chronos.com/glow/2011/10/fourth-preview/</link>
		<comments>http://www.black-chronos.com/glow/2011/10/fourth-preview/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 21:30:54 +0000</pubDate>
		<dc:creator>Thiemo</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.black-chronos.com/glow/?p=916</guid>
		<description><![CDATA[Viel ist in den vergangenen Monaten nicht passiert, aber genug, um unsere schon veröffentlichte Vorschauversion zu aktualisieren. Wie die erste, zweite und dritte Preview enthält auch diese immer noch die selben vier Levels. Nur die Technik haben wir auf den neusten Stand gebracht.


Die wichtigsten Änderungen in Kürze:

Bildschirmauflösung und Sprache werden beim Start automatisch erkannt.
Der Spieler [...]]]></description>
			<content:encoded><![CDATA[<p>Viel ist in den vergangenen Monaten nicht passiert, aber genug, um unsere schon veröffentlichte Vorschauversion zu aktualisieren. Wie die <a href="/glow/2009/12/glow-preview-released/">erste</a>, <a href="/glow/2010/01/zweite-preview/">zweite</a> und <a href="/glow/2010/12/dritte-preview-veroffentlicht/">dritte Preview</a> enthält auch diese immer noch die selben vier Levels. Nur die Technik haben wir auf den neusten Stand gebracht.<br />
<span id="more-916"></span></p>
<p><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/hky58D91zPI" frameborder="0" allowfullscreen></iframe></p>
<p>Die wichtigsten Änderungen in Kürze:</p>
<ul>
<li>Bildschirmauflösung und Sprache werden beim Start automatisch erkannt.</li>
<li>Der Spieler startet komplett ohne Waffen ins Spiel.</li>
<li>Das Einsammeln von Items wird klarer animiert.</li>
<li>Nach dem Benutzen eines Zauberspruchs wird immer zurück zur vorigen Waffe gewechselt.</li>
<li>Man kann einfacher kämpfen, während man an einer Leiter hängt.</li>
<li>Der Spieler wird nicht mehr so einfach von Fahrstühlen zerquetscht.</li>
<li>Die Gegner drehen nicht mehr ruckartig mitten auf ihrem Weg um sondern bleiben kurz stehen.</li>
<li>Die Helligkeit einiger Gegner und andere grafische Feinheiten wurden verbessert.</li>
<li>Das Trigger- und Event-System wurde weiter verbessert und flexibler gemacht.</li>
</ul>
<p>Von den neuen Gegnern und vor allem Bossgegnern sieht man in dieser Demo absichtlich noch nichts. Das heben wir uns für das fertige Spiel auf.</p>
<p><a href="http://www.sven-gramatke.de/downloads/downloads/spiele/Glow-1.666-Preview/">Hier geht es zum Download</a> (ZIP, 55&nbsp;MB).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.black-chronos.com/glow/2011/10/fourth-preview/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Inspiration und Motivation</title>
		<link>http://www.black-chronos.com/glow/2011/10/inspiration-und-motivation/</link>
		<comments>http://www.black-chronos.com/glow/2011/10/inspiration-und-motivation/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 08:03:05 +0000</pubDate>
		<dc:creator>Yamm</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.black-chronos.com/glow/?p=944</guid>
		<description><![CDATA[Momentan bin ich dabei meine letzten Grafiken für Glow fertig zu stellen. Zumindest denke ich, dass es die letzten sind, außer Thiemo hat noch Wünsche. Auf jeden Fall ist der Soundtrack von Quake 2 ein sehr guter Motor dafür.
]]></description>
			<content:encoded><![CDATA[<p>Momentan bin ich dabei meine letzten Grafiken für Glow fertig zu stellen. Zumindest denke ich, dass es die letzten sind, außer Thiemo hat noch Wünsche. Auf jeden Fall ist der Soundtrack von <a href="http://de.wikipedia.org/wiki/Quake_II">Quake 2</a> ein sehr guter Motor dafür.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.black-chronos.com/glow/2011/10/inspiration-und-motivation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

