<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - blox'n'balls NG</title>
		<link>https://www.blitzforum.de/worklogs/483/</link>
		<description>Worklog von SEDM</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Thu, 02 Feb 2012 21:16:35 +0100</pubDate>
		<lastBuildDate>Thu, 02 Feb 2012 21:16:35 +0100</lastBuildDate>

		<item>
			<title>Mal etwas praktisches...</title>
			<link>https://www.blitzforum.de/worklogs/483/#3468</link>
			<guid>https://www.blitzforum.de/worklogs/483/#3468</guid>
			<author>Farbfinsternis</author>
			<description>W&amp;auml;hrend ich mich zuletzt um Sachen gek&amp;uuml;mmert habe die dem Spiel nichts hinzuf&amp;uuml;gen, habe ich mich jetzt um die Verbesserung der Steuerung gek&amp;uuml;mmert und ein wenig an den States innerhalb des Spiels gebastelt. So kann ich nun der Klasse &amp;quot;Ball&amp;quot; die maximale Anzahl der B&amp;auml;lle &amp;uuml;bergeben und die Methode Ball.update() gibt mir zur&amp;uuml;ck ob alle B&amp;auml;lle verspielt sind oder nicht. Die verbleibende Anzahl der B&amp;auml;lle wird nun angezeigt und wenn kein Ball mehr verf&amp;uuml;gbar ist wird ein wahnsinnig schlechtes MP3 Sample abgespielt.&lt;br /&gt;&lt;br /&gt;Das alles wird so nicht in bnb implementiert, es sind alles Sachen die das Framework auf die Sachen die da kommen vorbereiten. Wichtig war jetzt dass man mit dem Paddle den Ball exakter steuern kann und dass es m&amp;ouml;glich ist ein Spielende zu definieren.&lt;br /&gt;&lt;br /&gt;Abschliessend noch ein Link zum aktuellen Status in Flash: &lt;a href=&quot;http://www.sedm.de/monkey/bnb/flash/&quot; target=&quot;_blank&quot;&gt;http://www.sedm.de/monkey/bnb/flash/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
			<pubDate>Thu, 02 Feb 2012 21:16:35 +0100</pubDate>
		</item>

		<item>
			<title>Partikel</title>
			<link>https://www.blitzforum.de/worklogs/483/#3423</link>
			<guid>https://www.blitzforum.de/worklogs/483/#3423</guid>
			<author>Farbfinsternis</author>
			<description>Ein wichtiger Aspekt von b'n'b waren immer die Partikel. Ich habe deshalb nun zwei Klassen (&amp;quot;ParticleEmitter&amp;quot; und &amp;quot;Particle&amp;quot;) implementiert um das in der NG Version fortzusetzen. Partikel werden stets &amp;uuml;ber den Emitter gesteuert, es ist nicht anzuraten Methoden der Klasse &amp;quot;Particle&amp;quot; direkt zu verwenden.&lt;br /&gt;So erzeugt man einen neuen Emitter ganz klassisch mit New() und &amp;uuml;bergibt ihm die ImageRef des ResourceManagers und die Position des Emitters. Zur Laufzeit darf die Position jederzeit mit der Methode &amp;quot;setPosition()&amp;quot; ge&amp;auml;ndert werden.&lt;br /&gt;Das nicht direkt ein Image, sondern ein Object vom Typ &amp;quot;ImageRef&amp;quot; &amp;uuml;bergeben wird hat den Grund dass die Targets &amp;quot;HTML5&amp;quot; und &amp;quot;Flash&amp;quot; nicht immer gleich alle Daten zur Verf&amp;uuml;gung haben. So muss man warten bis alle Bilder geladen wurden. Das Modul &amp;quot;class_particle.monkey&amp;quot; stellt somit selbst sicher dass erst etwas gezeichnet wird wenn alle Daten verf&amp;uuml;gbar sind.&lt;br /&gt;Der Emitter erzeugt kontinuierlich Partikel. Das Verhalten der Partikel wird nach dem Erzeugen des Emitters festgelegt, kann aber zur Laufzeit ge&amp;auml;ndert werden. Derzeit kann man die Beschleunigung (Velocity), die Streuung (Scattering) bestimmen sowie festlegen ob die Partikel in ihrer Lebenszeit ein- oder ausgeblendet werden sollen. Es fehlt noch die M&amp;ouml;glichkeit die Partikel zu skalieren oder das Fading zu kombinieren (bspw. das Partikel eingeblendet und zu ihrem Lebensende wieder ausgeblendet werden). Zudem fehlt noch die M&amp;ouml;glichkeit am Lebensende oder zu einer bestimmten Zeit neue Partikel zu erzeugen. Bspw. ein Feuer dessen Partikel am Lebensende zu Rauch werden etc.&lt;br /&gt;Monkey zwingt uns leider dazu das Update und das Rendering der Partikel zu trennen, was bedeutet dass die Liste der Partikel doppelt iteriert werden muss. Au&amp;szlig;erdem ist es nicht m&amp;ouml;glich ein SingeSurface System zu programmieren weil einige Targets das nicht unterst&amp;uuml;tzen (Mojo von Haus aus &amp;uuml;berhaupt nicht). So muss man aufpassen dass man nicht zuviele Partikel erzeugt. Aus diesem Grund versuche ich ein Tweening zu implementieren welches es erm&amp;ouml;glicht mehr Partikel zu suggerieren als eigentlich zu sehen sind. Derzeit sind es einfach nur gleichgro&amp;szlig;e Images die positioniert und mit einem Alpha-Wert versehen werden.&lt;br /&gt;&lt;br /&gt;Als Demo habe ich die letzte Demo verwendet und im iDS Screen einen Partikel-Effekt angewendet der am Mauszeiger h&amp;auml;ngt.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.sedm.de/monkey/bnb/html5&quot; target=&quot;_blank&quot;&gt;HTML5 Demo&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.sedm.de/monkey/bnb/flash&quot; target=&quot;_blank&quot;&gt;Flash Demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Als n&amp;auml;chstes wird die Particle Klasse dann Gravitation, einen Boden (zum erneuten abprallen der Partikel) und Forces unterst&amp;uuml;tzen. Desweiteren werde ich den ResourceManager und die Partikel Geschichte zu einem Modul kombinieren so dass das jeder Interessierte auch f&amp;uuml;r seine Projekte nutzen kann.&lt;br /&gt;&lt;br /&gt;</description>
			<pubDate>Tue, 27 Dec 2011 21:35:31 +0100</pubDate>
		</item>

		<item>
			<title>States &amp; Resources</title>
			<link>https://www.blitzforum.de/worklogs/483/#3417</link>
			<guid>https://www.blitzforum.de/worklogs/483/#3417</guid>
			<author>Farbfinsternis</author>
			<description>In Monkey hat man oft das Problem dass man nicht wei&amp;szlig; ob schon alle Daten geladen sind die man ben&amp;ouml;tigt, darum habe ich den ResourceManager von &lt;a href=&quot;http://monkeycoder.co.nz/Community/posts.php?topic=1194#10532&quot; target=&quot;_blank&quot;&gt;clevijoki&lt;/a&gt; so umgebaut dass er Strict ist und als Module verwendbar ist. Daneben habe ich den Statemanager implementiert der die richtige Klasse zur rechten Zeit aufruft. Jeder Zustand des Programms ist eine eigene Klasse (die einzelnen Logos des Intros, das Hauptmen&amp;uuml;, das Spiel selbst und es kommen wohl noch ein paar dazu).&lt;br /&gt;Der Flow sieht derzeit so aus: iDS Logo (2sec oder MouseHit/Touch) -&amp;gt; SEDM Logo (2sec oder MouseHit/Touch) -&amp;gt; bnb Logo (2sec oder MouseHit/Touch) -&amp;gt; MainMenu -&amp;gt; Game &amp;lt;- MainMenu -&amp;gt; Game etc.&lt;br /&gt;&lt;br /&gt;Das MainMenu und der Game Screen sind noch ohne Funktion, der Switch ist ein einfaches MouseHit oder ein Touch.&lt;br /&gt;&lt;br /&gt;Die Targets Android und GLFW sorgen noch ein bisschen f&amp;uuml;r &amp;Auml;rger. Unter Android werden die Fade timings nicht eingehalten (kann daran liegen dass die Images in FullHD vorliegen) und unter GLFW gehts garnicht (kann daran liegen dass die Images nicht in einer Gr&amp;ouml;sse ^2 vorliegen. Wird noch gekl&amp;auml;rt.&lt;br /&gt;&lt;br /&gt;Hier k&amp;ouml;nnt ihr &lt;a href=&quot;http://www.sedm.de/monkey/bnb/html5&quot; target=&quot;_blank&quot;&gt;die Demo f&amp;uuml;r HTML5&lt;/a&gt; anschauen.&lt;br /&gt;&lt;br /&gt;Die Grafiken sind allesamt noch Platzhalter.&lt;br /&gt;&lt;br /&gt;Neben diesem Ged&amp;ouml;ns konnte ich dank zahlreicher geduldiger helfender Elfen die Vector-Klasse vervollst&amp;auml;ndigen. Box2D habe ich rausgeschmissen weil es einfach nicht die Performance liefert die ich mir w&amp;uuml;nsche. Nun wird die Kollision doch selbst implementiert weil es mir sehr wichtig ist dass es schnell ist und dass auch nicht rechteckige Levels m&amp;ouml;glich sind.&lt;br /&gt;&lt;br /&gt;Soviel f&amp;uuml;r heute *g&amp;auml;hn* ... seid gespannt was als n&amp;auml;chstes kommt &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;&lt;br /&gt;</description>
			<pubDate>Sun, 25 Dec 2011 22:11:34 +0100</pubDate>
		</item>

		<item>
			<title>Physik</title>
			<link>https://www.blitzforum.de/worklogs/483/#3410</link>
			<guid>https://www.blitzforum.de/worklogs/483/#3410</guid>
			<author>Farbfinsternis</author>
			<description>Im Moment bastle ich ein wenig mit Box2D herum da mir das BoxBox Kollisionssystem nicht gef&amp;auml;llt und ich auch mal Levels erzeugen will die nicht rechteckig sind.&lt;br /&gt;Herausgekommen ist ein kleines Textprogramm welches per Mausklick Kisten erzeugt welche dann physikalisch korrekt umher fliegen.&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('0')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('0')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox0&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('0');&quot;&gt;Strict&lt;br /&gt;&lt;br /&gt;Import mojo&lt;br /&gt;Import box2d.common&lt;br /&gt;Import box2d.collision&lt;br /&gt;Import box2d.dynamics&lt;br /&gt;&lt;br /&gt;Function RadToDeg&amp;#58;Int&amp;#40;rad&amp;#58;Float&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;if rad &amp;lt;&amp;gt; 0.0 Then Return &amp;#40;rad * 180.0&amp;#41; / PI Else Return 0&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;Class CEntity&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field bodyDef&amp;#58;b2BodyDef&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field bodyShape&amp;#58;b2PolygonShape&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field body&amp;#58;b2Body&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field fixtureDef&amp;#58;b2FixtureDef&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field img&amp;#58;Image&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method CreateBox&amp;#58;Void&amp;#40;world&amp;#58;b2World, x&amp;#58;Float, y&amp;#58;Float, width&amp;#58;Float, height&amp;#58;Float, static&amp;#58;Bool = False&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.fixtureDef&amp;nbsp; &amp;nbsp;= New b2FixtureDef&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.bodyShape&amp;nbsp; &amp;nbsp;= New b2PolygonShape&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.bodyDef&amp;nbsp; &amp;nbsp;= New b2BodyDef&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;If static = True&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.bodyDef.type = b2Body.b2_staticBody&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Else&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.bodyDef.type = b2Body.b2_Body&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;endif&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.fixtureDef.density&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= 1.0 &lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.fixtureDef.friction&amp;nbsp; &amp;nbsp;= 0.3&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.fixtureDef.restitution&amp;nbsp; &amp;nbsp;= 0.1&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.fixtureDef.shape&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= Self.bodyShape&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.bodyDef.position.Set&amp;#40;x, y&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.bodyShape.SetAsBox&amp;#40;width, height&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.body = world.CreateBody&amp;#40;Self.bodyDef&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.body.CreateFixture&amp;#40;Self.fixtureDef&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.bodyDef.allowSleep&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= True&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.bodyDef.awake&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= True&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method CreateBox&amp;#58;Void&amp;#40;world&amp;#58;b2World, img&amp;#58;Image, x&amp;#58;Float, y&amp;#58;Float, static&amp;#58;Bool = False&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.img = img&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.img.SetHandle&amp;#40;Self.img.Width&amp;#40;&amp;#41; / 2, Self.img.Height&amp;#40;&amp;#41; / 2&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.CreateBox&amp;#40;world, x, y, img.Width&amp;#40;&amp;#41; / 2, img.Height&amp;#40;&amp;#41; / 2, static&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method SetFriction&amp;#58;Void&amp;#40;friction&amp;#58;Float = 0.5&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.fixtureDef.friction = friction&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.body.CreateFixture&amp;#40;Self.fixtureDef&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method SetDensity&amp;#58;Void&amp;#40;density&amp;#58;Float = 1.0&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.fixtureDef.density = density&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.body.CreateFixture&amp;#40;Self.fixtureDef&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method SetRestitution&amp;#58;Void&amp;#40;restitution&amp;#58;Float = 0.1&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.fixtureDef.restitution = restitution&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.body.CreateFixture&amp;#40;Self.fixtureDef&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method SetMass&amp;#58;Void&amp;#40;mass&amp;#58;Float&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Local md&amp;#58;b2MassData = new b2MassData&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.body.GetMassData&amp;#40;md&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;md.mass = mass&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.body.SetMassData&amp;#40;md&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method SetImage&amp;#58;Void&amp;#40;img&amp;#58;Image&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.img = img&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method Draw&amp;#58;Void&amp;#40;ratio&amp;#58;Float = 1.0&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if Self.img &amp;lt;&amp;gt; Null&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Local x&amp;#58;Float&amp;nbsp; &amp;nbsp;= self.body.GetPosition&amp;#40;&amp;#41;.x&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Local y&amp;#58;Float&amp;nbsp; &amp;nbsp;= self.body.GetPosition&amp;#40;&amp;#41;.y&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Local r&amp;#58;Float&amp;nbsp; &amp;nbsp;= RadToDeg&amp;#40;Self.body.GetAngle&amp;#40;&amp;#41;&amp;#41; * -1&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;DrawImage&amp;#40;Self.img, x, y, r, 1.0, 1.0, 0&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;EndIf&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;End&lt;br /&gt;&lt;br /&gt;Class CWorld&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field world&amp;#58;b2World&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field m_velocityIterations&amp;#58;int&lt;br /&gt;&amp;nbsp; &amp;nbsp; Field m_positionIterations&amp;#58;int&lt;br /&gt;&amp;nbsp; &amp;nbsp; Field m_timeStep&amp;#58;Float&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field ratio&amp;#58;Float&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field entities&amp;#58;List&amp;lt;CEntity&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method New&amp;#40;ratio&amp;#58;Float = 1.0, gravityX&amp;#58;Float = 0.0, gravityY&amp;#58;Float = 10.0&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.ratio = ratio&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.world = New b2World&amp;#40;New b2Vec2&amp;#40;gravityX, gravityY&amp;#41;, True&amp;#41;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.world.SetGravity&amp;#40;new b2Vec2&amp;#40;gravityX, gravityY&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.m_velocityIterations&amp;nbsp; &amp;nbsp;= 3&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.m_positionIterations&amp;nbsp; &amp;nbsp;= 3&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.m_timeStep&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= 1.0 / 10.0&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.entities = New List&amp;lt;CEntity&amp;gt;&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method update&amp;#58;Void&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.world.TimeStep&amp;#40;self.m_timeStep, self.m_velocityIterations, self.m_positionIterations&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.world.ClearForces&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method render&amp;#58;Void&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if Self.entities.Count&amp;#40;&amp;#41; &amp;gt; 0&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;For Local e&amp;#58;CEntity = eachin self.entities&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if e &amp;lt;&amp;gt; Null e.Draw&amp;#40;self.ratio&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Next&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;EndIf&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method CreateBox&amp;#58;CEntity&amp;#40;x&amp;#58;Float, y&amp;#58;Float, width&amp;#58;Float, height&amp;#58;Float, static&amp;#58;Bool = false&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Local entity&amp;#58;CEntity = new CEntity&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;entity.CreateBox&amp;#40;Self.world, x, y, width, height, static&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.entities.AddLast&amp;#40;entity&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Return entity&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method CreateBox&amp;#58;CEntity&amp;#40;img&amp;#58;Image, x&amp;#58;Float, y&amp;#58;Float, static&amp;#58;Bool = False&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Local entity&amp;#58;CEntity = new CEntity&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;entity.CreateBox&amp;#40;Self.world, img, x, y, static&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.entities.AddLast&amp;#40;entity&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Return entity&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;End&lt;br /&gt;&lt;br /&gt;Class CTest extends App&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field world&amp;#58;CWorld&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field player&amp;#58;Image&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field playerEntity&amp;#58;CEntity&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field groundEntity&amp;#58;CEntity&lt;br /&gt;&amp;nbsp; &amp;nbsp;Field ratio&amp;#58;Float&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method OnCreate&amp;#58;Int&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.ratio&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= 640.0 / DeviceWidth&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.world &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= New CWorld&amp;#40;Self.ratio&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.player&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;= LoadImage&amp;#40;&amp;quot;player.png&amp;quot;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.groundEntity&amp;nbsp; &amp;nbsp;= Self.world.CreateBox&amp;#40;0, DeviceHeight&amp;#40;&amp;#41; - 10, DeviceWidth&amp;#40;&amp;#41;, 10, True&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;SetUpdateRate&amp;#40;60&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Return 0&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method OnUpdate&amp;#58;Int&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.world.update&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if MouseHit&amp;#40;&amp;#41; Or TouchHit&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Local mx&amp;#58;Float&amp;nbsp; &amp;nbsp;= MouseX&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Local my&amp;#58;Float&amp;nbsp; &amp;nbsp;= MouseY&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Local e&amp;#58;CEntity = self.world.CreateBox&amp;#40;self.player, mx, my&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;e.body.SetAngularVelocity&amp;#40;Rnd&amp;#40;-0.1, 0.1&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;EndIf&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Return 0&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Method OnRender&amp;#58;Int&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Cls&amp;#40;90, 120, 200&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;#if TARGET = &amp;quot;android&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;DrawText&amp;#40;&amp;quot;touch to spwan a new crate&amp;quot;, DeviceWidth&amp;#40;&amp;#41; / 2, 20, 0.5&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;#Else&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;DrawText&amp;#40;&amp;quot;left click to spwan a new crate&amp;quot;, DeviceWidth&amp;#40;&amp;#41; / 2, 20, 0.5&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;#EndIf&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Self.world.render&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Return 0&lt;br /&gt;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;End&lt;br /&gt;&lt;br /&gt;Function Main&amp;#58;Int&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;New CTest&amp;#40;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Return 0&lt;br /&gt;End&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://www.sedm.de/monkey/bnb/box2d.jpg&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Das kleine Testprogramm hat auch gleich die Idee mitgebracht Box2D noch ein klein wenig mehr zu wrappen um es benutzerfreundlicher zu machen. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.sedm.de/monkey/bnb&quot; target=&quot;_blank&quot;&gt;Flash Version&lt;/a&gt;&lt;br /&gt;Die Flash Version zeigt einen QR Code f&amp;uuml;r die Android Version an.</description>
			<pubDate>Mon, 19 Dec 2011 20:49:25 +0100</pubDate>
		</item>

		<item>
			<title>let's go</title>
			<link>https://www.blitzforum.de/worklogs/483/#3409</link>
			<guid>https://www.blitzforum.de/worklogs/483/#3409</guid>
			<author>Farbfinsternis</author>
			<description>vor gef&amp;uuml;hlten 100 Jahren habe ich ein Spiel namens &amp;quot;blox'n'balls&amp;quot; mit Blitz3D entwickelt. Es handelte sich dabei um einen Breakout Clone. Jetzt baue ich das Game mit Monkey neu und werde es f&amp;uuml;r diverse Plattformen ver&amp;ouml;ffentlichen.&lt;br /&gt;&lt;br /&gt;Wer sich das Original Spiel anschauen m&amp;ouml;chte kann es sich gerne &lt;a href=&quot;http://www.colorflow.de/pub/download/bnb.zip&quot; target=&quot;_blank&quot;&gt;herunterladen&lt;/a&gt; (ca. 14MB), wer das ganze Paket, inklusive Entwicklerdaten, Rohdaten, Photoshop-Dateien etc. m&amp;ouml;chte kann sich das fette Paket &lt;a href=&quot;http://www.colorflow.de/pub/download/bnb_full.zip&quot; target=&quot;_blank&quot;&gt;http://www.colorflow.de/pub/download/bnb_full.zip&lt;/a&gt; herunterladen (ca. 117MB).&lt;br /&gt;&lt;br /&gt;F&amp;uuml;r Vista und Windows7 User: Blitz3D hat ordentlich Macken. &amp;Ouml;ffnet bitte die Datei &amp;quot;blox.ini&amp;quot; mit dem Texteditor Eures geringsten Mi&amp;szlig;trauens und f&amp;uuml;gt am Ende ein: &amp;quot;windowed&amp;quot; ... nur im Fenstermodus l&amp;auml;sst sich bnb unter Vista oder Win7 problemlos spielen.&lt;br /&gt;&lt;br /&gt;Das neue bnb wird vorrangig f&amp;uuml;r Mobiles entwickelt und setzt somit auf Touchscreens. W&amp;auml;hrend man auf Mouse-basierten Systemen die Maus nach links und rechts bewegt um das Paddle zu steuern, wischt man auf Mobiles das Paddle mit dem Finger nach links und rechts. Die Bwegung des Paddles im Moment der Kollision des Balls mit dem Paddle beeinflusst die neue Flugrichtung des Balls.&lt;br /&gt;&lt;br /&gt;Alles was das originale bnb konnte wird nat&amp;uuml;rlich auf die NG Version &amp;uuml;bertragen: Items welche manuell verwendet werden, Items welche automatisch beim einsammeln ausgel&amp;ouml;st werden, der Shop um Items zu kaufen, die Online Highscore &amp;quot;iScore&amp;quot; ... &lt;br /&gt;&lt;br /&gt;Wer schonmal einen Ball durch die Gegend schiessen will darf das unter &lt;a href=&quot;http://www.sedm.de/monkey/bnb/html5/&quot; target=&quot;_blank&quot;&gt;http://www.sedm.de/monkey/bnb/html5/&lt;/a&gt; tun.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://www.sedm.de/monkey/bnb/shots/01.jpg&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;</description>
			<pubDate>Sun, 18 Dec 2011 22:42:59 +0100</pubDate>
		</item>


	</channel>
</rss>
