<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-4921689152984678494</id><updated>2009-10-13T03:37:48.977-07:00</updated><title type='text'>iteration-zero</title><subtitle type='html'>Thoughts and articles on developing the free game iteration-zero.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4921689152984678494.post-4814902399459689220</id><published>2008-06-14T06:24:00.000-07:00</published><updated>2008-06-14T09:30:54.607-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DLisp'/><title type='text'>dLISP 0.100.0 Released</title><content type='html'>I am proud to release version &lt;span style="font-weight: bold;"&gt;o.100.o&lt;/span&gt; of dLISP, the LISP interpreter for D.&lt;br /&gt;&lt;br /&gt;This is still &lt;span style="font-style: italic;"&gt;experimental&lt;/span&gt; software, but is used already as a scripting language for a free game under development. During the course of using dLISP in practice a laundry list of bugs were discovered and fixed - too many to list here. Also note that dLISP is not a faithfull implementation of &lt;span style="font-style: italic;"&gt;Common Lisp&lt;/span&gt;, and isn't even trying - it's just another Lisp dialect.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Changelog&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Closure support. Functions now carry their own context with them.&lt;/li&gt;&lt;li&gt;Constructs such as (1 2 3) are not valid any more - these shadow too many bugs.&lt;/li&gt;&lt;li&gt;Ridiculously easy bindings for D classes - see iteration-zero source for example.&lt;/li&gt;&lt;li&gt;Simple object model. Prototype based class hierachy. Automatic generic functions for classes exported from D.&lt;/li&gt;&lt;li&gt;Partially covered by test cases now.&lt;/li&gt;&lt;li&gt;Added &lt;span style="font-weight: bold;"&gt;gensym&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Friendlier to debug complex code - built-in tracebacks.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Known Bugs / Missing features&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Generic function evaluation doesn't work out of the box for user defined methods.&lt;/li&gt;&lt;li&gt;The &lt;span style="font-weight: bold;"&gt;,@body&lt;/span&gt; syntax is not supported.&lt;/li&gt;&lt;li&gt;Keyword arguments are not supported.&lt;/li&gt;&lt;li&gt;Source code positions on errors are wrong.&lt;/li&gt;&lt;li&gt;Tracebacks may be misleading in places.&lt;/li&gt;&lt;li&gt;Missing function &lt;span style="font-weight: bold;"&gt;macro-expand&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;Thanks go to the original author, from whom I have taken over the codebase:&lt;br /&gt;Thank you &lt;span style="font-weight: bold;"&gt;Fredrik Olsson&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The download can be found on the &lt;a href="http://code.google.com/p/iteration-zero/downloads/list"&gt;google code page&lt;/a&gt;.&lt;br /&gt;Bug reports go to the &lt;a href="http://code.google.com/p/iteration-zero/issues/list"&gt;issue tracker&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4921689152984678494-4814902399459689220?l=iteration-zero.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/4814902399459689220/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4921689152984678494&amp;postID=4814902399459689220' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/4814902399459689220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/4814902399459689220'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/2008/06/dlisp-01000-released.html' title='dLISP 0.100.0 Released'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12154698203897360238'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4921689152984678494.post-1041400263257912012</id><published>2008-06-10T17:42:00.000-07:00</published><updated>2008-06-12T05:07:27.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WTF'/><category scheme='http://www.blogger.com/atom/ns#' term='DLisp'/><title type='text'>No closures? Rant.</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Warning&lt;/span&gt;: &lt;span style="font-weight: bold; font-style: italic;"&gt;rant mode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Taking over another codebase allways has it's risk, but today I was really annoyed by this &lt;span style="font-weight: bold;"&gt;bug ridden crash prone piece of crap&lt;/span&gt;, called &lt;a href="http://www.dsource.org/projects/dlisp"&gt;dLISP&lt;/a&gt; when I discovered that it doesn't support closures.&lt;br /&gt;&lt;br /&gt;Really, how can you declare a functional language to be nearly done, when you don't have closures?&lt;br /&gt;With my current state of agony I can only assume the original creator abandoned his creation in disgust.&lt;br /&gt;&lt;br /&gt;Wow, writing just that felt good... Though I am in no position to really complain, but well I didn't expect readyng dLISP for my use to be that much work. Right now I am considering a switch to &lt;a href="http://pyd.dsource.org/"&gt;PyD&lt;/a&gt; for the bindings - but before that I'll check how difficult it is to remove the worst problems I discover in using dLISP during my work with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4921689152984678494-1041400263257912012?l=iteration-zero.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/1041400263257912012/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4921689152984678494&amp;postID=1041400263257912012' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/1041400263257912012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/1041400263257912012'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/2008/06/no-closures-rant.html' title='No closures? Rant.'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12154698203897360238'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4921689152984678494.post-3288480232444818169</id><published>2008-06-09T07:11:00.000-07:00</published><updated>2008-06-09T09:58:50.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Iteration-Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>Game Design Document II</title><content type='html'>After a long time of silence due to being packed with work from other directions .. besides enjoying the sun .. here's another stream of thought on the game design.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Battle tactics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The tactical options in a sci-fi RPG underly different constraints than those set in the classical pseudo-medieval fantasy world. Basically three different classes in a group battle are of importance. The &lt;span style="font-weight: bold;"&gt;tank&lt;/span&gt;, the &lt;span style="font-weight: bold;"&gt;artillery&lt;/span&gt; and the &lt;span style="font-weight: bold;"&gt;supporter&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The tank is usually used to stop the other groups tanks, which have equally good hit points and armor while they deal large amounts of close range damage.&lt;br /&gt;&lt;br /&gt;The artillery - the typical Fireball blasting Mages - deal damage over the distance and either give your tanks the edge or take out the other teams artillery and supporters.&lt;br /&gt;&lt;br /&gt;Apart from the usual "heal the tanks" kind of spells the supporters make the battles most interesting by supplying new tactical options.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The usual battle procedure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course these roles aren't set in stone, but the usual battle procedure is to move your tanks forward as fast as possible and build a defense line. The artillery then has the task to take out the most dangerous enemies while trying to not die by stray enemy tanks or enmy artillery.&lt;br /&gt;The supporters will disable, confuse or slow enemies and at the same time try to - well - support the tanks by healing and buffing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Translation to the future&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The key problem for translating this simple but fun design to a sci-fi scenario is that in a direct translation there are no believable close range weapons and spells.&lt;br /&gt;&lt;br /&gt;Thus the battles would consist of groups of artillery performing a shoot-out and the team with the higher firepower will win. That's &lt;span style="font-weight: bold;"&gt;boring&lt;/span&gt;. Since any advanced enough technology will resemble magic it should be possible to overcome this in a believable fashion, while not trying to just rename the priest to a psionic (or whatever) and the tank to some laser sword&lt;br /&gt;wielding super-human.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Ansatz for fun battle tactics in IZ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For iteration-zero I plan to indroduce basically three classes of weapons, one that has a decreasing damage with distance - but a large per shot damage - this would be &lt;span style="font-weight: bold;"&gt;plasma guns&lt;/span&gt;. The damage is is distributed over&lt;br /&gt;a set of smaller bullets, plasma pellets or whatever. Opposite to this are ray guns, which do the damage in a single shot and additionally a continued shot may add a damage multiplier in the next shot at the same target. Both plasma guns and&lt;span style="font-weight: bold;"&gt; ray guns&lt;/span&gt; will use up all remaining movement points for the current round, thus making hit and run techniques not feasable.&lt;br /&gt;&lt;br /&gt;The third class is just the average set of &lt;span style="font-weight: bold;"&gt;hand guns&lt;/span&gt; - future versions of modern projectile weapons doing less damage than above futuristic weapons.&lt;br /&gt;&lt;br /&gt;Apart from personal armor, which offers limited protection,&lt;span style="font-weight: bold;"&gt; personal shields&lt;/span&gt; are available, which use a constant amount of&lt;br /&gt;energy if active. These shields will damage the user continuously and slow him down (less movement points). On the other hand, they will substract a constant amount from the damage dealt by energy weapons.&lt;br /&gt;&lt;br /&gt;As an added option equipment called &lt;span style="font-weight: bold;"&gt;shader&lt;/span&gt; is available, which works as a personal cloaking device. For each effectivity there&lt;br /&gt;is a distance above which the user is not detectable, a distance where he might be detected with some probability. Those radii will depend on the perception attribute of course - and to let the player choose the risk for himself hovering over en enemy will display these radii so that the choice of risk is on the player.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;The above analysis and description of gameplay is incomplete of course and highly dependant on the actual balancing used&lt;br /&gt;in the game settings itself. However I think the Ansatz is promising.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4921689152984678494-3288480232444818169?l=iteration-zero.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/3288480232444818169/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4921689152984678494&amp;postID=3288480232444818169' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/3288480232444818169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/3288480232444818169'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/2008/06/game-design-document-ii.html' title='Game Design Document II'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12154698203897360238'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4921689152984678494.post-3696195751474880929</id><published>2008-03-23T14:16:00.000-07:00</published><updated>2008-03-23T14:28:22.452-07:00</updated><title type='text'>The weekly TPS report!</title><content type='html'>I hoped to be able to release a technology demo this weekend, but even after using most of my free time to code this didn't &lt;span style="font-weight: bold;"&gt;quite&lt;/span&gt; turn out to be feasable. Sadly I won't be able to present any new screenshots, as the visual appearance hasn't changed a lot in last days despite reaching revisions numbers in the seventies ;-).&lt;br /&gt;&lt;br /&gt;Anyway here's the feature list that needs to be implemented before releasing that 0.1.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Core Functionality: Gui Library (75% done)&lt;/li&gt;&lt;li&gt;Core Functionality: Scripting (95% done, just needs some testing.)&lt;/li&gt;&lt;li&gt;Gameplay: Running around the map, shoot at stuff (50% done)&lt;/li&gt;&lt;li&gt;Gameplay: Fly around the planet (0% done)&lt;/li&gt;&lt;/ul&gt;Doesn't look to bad. But porting &lt;a href="http://guichan.sourceforge.net/"&gt;Guichan&lt;/a&gt; took too much time and kicking the code into something worth an &lt;a href="http://www.dsource.org/projects"&gt;dsource&lt;/a&gt; entry would take even more time. So I'm ditching that idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4921689152984678494-3696195751474880929?l=iteration-zero.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/3696195751474880929/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4921689152984678494&amp;postID=3696195751474880929' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/3696195751474880929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/3696195751474880929'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/2008/03/weekly-tps-report.html' title='The weekly TPS report!'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12154698203897360238'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4921689152984678494.post-7389637436885887496</id><published>2008-03-18T10:53:00.001-07:00</published><updated>2008-12-10T22:49:03.230-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='D'/><title type='text'>Yet another GUI lib.</title><content type='html'>It took me an quite some time, but I got &lt;a href="http://guichan.sourceforge.net/"&gt;Guichan&lt;/a&gt; ported to D - at least it compiles - which doesn't mean that the port is somewhere finished ... But the tedious work is done.&lt;br /&gt;&lt;br /&gt;In order to motivate myself (a bit) I tracked the number compilation errors during my iterative adaption.&lt;br /&gt;&lt;br /&gt;Hopefully soon the gui system will be up and running so that I can finally start to implement game logic.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nY_OgxDiUIw/R-AB06Uj5iI/AAAAAAAAAAc/c47I6iSUX1k/s1600-h/Bildschirmphoto12.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 409px; height: 296px;" src="http://1.bp.blogspot.com/_nY_OgxDiUIw/R-AB06Uj5iI/AAAAAAAAAAc/c47I6iSUX1k/s400/Bildschirmphoto12.png" alt="" id="BLOGGER_PHOTO_ID_5179141579996390946" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4921689152984678494-7389637436885887496?l=iteration-zero.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/7389637436885887496/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4921689152984678494&amp;postID=7389637436885887496' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/7389637436885887496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/7389637436885887496'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/2008/03/yet-another-gui-lib.html' title='Yet another GUI lib.'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12154698203897360238'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_nY_OgxDiUIw/R-AB06Uj5iI/AAAAAAAAAAc/c47I6iSUX1k/s72-c/Bildschirmphoto12.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4921689152984678494.post-7135855693727645060</id><published>2008-03-15T07:44:00.000-07:00</published><updated>2008-03-15T13:36:38.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DLisp'/><title type='text'>DLisp</title><content type='html'>I have chosen a scripting language for my game, and after having brief uninformed looks at &lt;a href="http://www.dsource.org/projects/minid"&gt;MiniD&lt;/a&gt;, &lt;a href="http://pyd.dsource.org/"&gt;PyD&lt;/a&gt; and &lt;a href="http://www.dsource.org/projects/dlisp/wiki"&gt;DLisp&lt;/a&gt; - I choose the most obscure, least maintained of the bunch - DLisp.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;What is it?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;It's a minimal Lisp implementation in D, taking full use of the builtin garbage collector of D. Sadly the author &lt;a style="font-weight: bold;" href="http://www.dsource.org/forums/viewtopic.php?t=2028"&gt;kind of faded away&lt;/a&gt;, I just hope he is healthy and alive. So for now I &lt;a href="http://code.google.com/p/iteration-zero/source/browse/trunk/dlisp_copy"&gt;&lt;span style="font-weight: bold;"&gt;forked the codebase&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://code.google.com/p/iteration-zero/source/browse/trunk/dlisp_oop/"&gt;&lt;span style="font-weight: bold;"&gt;will try to maintain and extend it&lt;/span&gt;&lt;/a&gt;. After some fiddling around unittests run again - but the test suite is fairly limited.&lt;br /&gt;&lt;br /&gt;Since I want to use it as a scripting language for an object oriented game written in D, I decided to add builtin object orientation since I hope this will ease the exposition of game objects.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Edit: Why DLisp over the others?&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;So why did I choose the least maintained and complete scripting language available? Basically two reasons - First I started this Project to&lt;span style="font-weight: bold;"&gt; learn new stuff&lt;/span&gt; - and Python I use regularly, the languages inspired by D or simply Lua don't offer something new.  So choosing a Lisp version and a tiny one offers the opportunity to learn something completely new. Second I needed a &lt;span style="font-weight: bold;"&gt;data description language&lt;/span&gt; - I know that lua and python can be used like that (though using Python using as a DSL feels like an abuse.) - but the others didn't struck me as such.&lt;br /&gt;&lt;br /&gt;A third reason I might add, is that having &lt;span style="font-weight: bold;"&gt;intimate knowledge&lt;/span&gt; over the script languages&lt;br /&gt;implementation enables me to fix bugs and odd behaviour right away.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Status&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;DLisp is fairly usable already, although the OOP code and syntax is still under heavy development.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Syntax snippets&lt;/span&gt;&lt;br /&gt;&lt;pre lang="lisp"&gt;;; Level Data&lt;br /&gt;;; Mar. 2008&lt;br /&gt;(setf *level*&lt;br /&gt;(make-instance level-class "My Test Level"))&lt;br /&gt;&lt;br /&gt;(defun place-tile (x y name)&lt;br /&gt;"place a tile at x,y created from tile-prototype name"&lt;br /&gt;(call-method *level* place-tile&lt;br /&gt; (x y (make-instance (get-attr *dataset* name)))))&lt;br /&gt;&lt;br /&gt;(map place-tile&lt;br /&gt;((5 5 "red")&lt;br /&gt;(5 5 "red")))&lt;br /&gt;&lt;br /&gt;;; Method calling syntax?&lt;br /&gt;&lt;br /&gt;;; Explicit - Works but ugly syntax&lt;br /&gt;&lt;span style="font-size:100%;"&gt;(call-method object 'method-name args)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;;; Implicit&lt;br /&gt;;; Problem is that we need 1 lookahead&lt;br /&gt;;; and one cannot override macros.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;(method-name object args)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;;; Special syntax&lt;br /&gt;;; Looks a bit unlispy - and overriding functions&lt;br /&gt;;; would still need the implicit syntax ...&lt;br /&gt;(object:method-name args)&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Binding snippets&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;pre lang="D"&gt;  class MyClass {&lt;br /&gt;&lt;br /&gt; // Some constructors.&lt;br /&gt; this() ...&lt;br /&gt; this(string name) ...&lt;br /&gt;&lt;br /&gt; // Some methods&lt;br /&gt; void methodName(int arg1, int arg2) ...&lt;br /&gt; string returnsString() ...&lt;br /&gt;&lt;br /&gt; // BINDING CODE&lt;br /&gt;&lt;br /&gt; // Generate the core binding&lt;br /&gt; mixin BindClass!("MYCLASS");&lt;br /&gt;&lt;br /&gt; // Default constructor is autogenerated&lt;br /&gt; mixin BindConstructor!(string);&lt;br /&gt;&lt;br /&gt; // Bind the methods.&lt;br /&gt; mixin BindMethods!(methodName,returnsString);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4921689152984678494-7135855693727645060?l=iteration-zero.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/7135855693727645060/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4921689152984678494&amp;postID=7135855693727645060' title='9 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/7135855693727645060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/7135855693727645060'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/2008/03/dlisp.html' title='DLisp'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12154698203897360238'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4921689152984678494.post-4033491640348899603</id><published>2008-03-12T11:35:00.000-07:00</published><updated>2008-03-12T11:58:12.565-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Iteration-Zero'/><title type='text'>Game Design Document I</title><content type='html'>The goals of &lt;span style="font-weight: bold;"&gt;iteration-zero &lt;/span&gt;are to create an role playing game with a simple interface and gameplay in a closed world.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;blockquote&gt;You are playing a space marine, cyber assassing or something like that who lands on a new planet and has to fullfill a mission. You are supplied with a glider, an aircraft enabling you to travel accross the planet to different locations of interest. Accompanying you is robot with an A.I. and up to 6 other compagnions you can invite into your traveling party. Your party will earn experience and find new technology through overcoming enemies and fullfilling missions given by locals.&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There will be &lt;span style="font-weight: bold;"&gt;two major game modes&lt;/span&gt;. With your glider you can travel over the planet and visit known places or try to find hidden areas. You will be able to land nearly everywhere, but most landing areas will be devoid of anything of interest.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;You will have to refill your fuel supply and make sure your glider can carry all your equipment. Upgrades to the glider can be bought at several locations.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So the exploratory radius is constrained by the fuel supply and the player has to make a choice between different equipment available. The random levels at each possible landing location give the planet a feeling of space, while not interfering with smooth gameplay. Hidden areas can be revealed simply by riddles giving out coordinates upon solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;You will explore alien ruins, infiltrate military outposts and hunt down delinquents. Hostile encounters have to be resolved by &lt;span style="font-weight: bold;"&gt;tactical skill&lt;/span&gt; and using your resources wisely. Upgrading your bodies and minds with the technology of the future might help you to survive the more dangerous missions.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Basically combat will be turn based, starting after an enemy has been encountered. As with other RPGs your party members levels and your equipment will determine the outcome of attacks. The RPG system will be designed in more detail later on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4921689152984678494-4033491640348899603?l=iteration-zero.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/4033491640348899603/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4921689152984678494&amp;postID=4033491640348899603' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/4033491640348899603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/4033491640348899603'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/2008/03/game-design-document-i.html' title='Game Design Document I'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12154698203897360238'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4921689152984678494.post-7041376976892769095</id><published>2008-03-11T09:15:00.000-07:00</published><updated>2008-03-11T09:25:34.294-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WTF'/><category scheme='http://www.blogger.com/atom/ns#' term='D'/><title type='text'>SDL_ClearError WTF?</title><content type='html'>&lt;span class="postbody"&gt;&lt;span style="font-family: courier new;"&gt;Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;[Switching to Thread -1210607424 (LWP 22207)]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;0x082917ec in SDL_ClearError ()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;(gdb) quit&lt;/span&gt;&lt;br /&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="postbody"&gt;&lt;br /&gt;If using &lt;a href="http://www.dsource.org/projects/derelict"&gt;Derelict&lt;/a&gt; with &lt;a href="http://www.dsource.org/projects/dsss/wiki/Rebuild"&gt;rebuild&lt;/a&gt; ever gives you spurious errors&lt;br /&gt;in the SDL init code ... here's the solution.&lt;br /&gt;&lt;br /&gt;BE SURE TO GET RID OF -rdynamic IN REBUILD'S CONFIG FILE.&lt;br /&gt;&lt;br /&gt;From the &lt;a href="http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html"&gt;man page&lt;/a&gt;:&lt;br /&gt;&lt;/span&gt;&lt;dt&gt;&lt;code&gt;-rdynamic&lt;/code&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a name="index-rdynamic-873"&gt;&lt;/a&gt;Pass the flag &lt;samp&gt;&lt;span class="option"&gt;-export-dynamic&lt;/span&gt;&lt;/samp&gt; to the ELF linker, on targets that support it. This instructs the linker to add all symbols, not only used ones, to the dynamic symbol table. This option is needed for some uses of &lt;code&gt;dlopen&lt;/code&gt; or to allow obtaining backtraces from within a program.       &lt;/dd&gt;&lt;br /&gt;&lt;br /&gt;Seems like a classic trivial but hard to debug problem :)&lt;br /&gt;&lt;br /&gt;Also &lt;span style="font-weight: bold;"&gt;btw. &lt;/span&gt;I have set up an &lt;a href="http://code.google.com/p/iteration-zero/"&gt;svn repository&lt;/a&gt; for the project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4921689152984678494-7041376976892769095?l=iteration-zero.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/7041376976892769095/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4921689152984678494&amp;postID=7041376976892769095' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/7041376976892769095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/7041376976892769095'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/2008/03/sdlclearerror-wtf.html' title='SDL_ClearError WTF?'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12154698203897360238'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4921689152984678494.post-5730573471323855830</id><published>2008-03-11T05:26:00.001-07:00</published><updated>2008-12-10T22:49:03.342-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='D'/><category scheme='http://www.blogger.com/atom/ns#' term='OPENGL'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>EHLO World</title><content type='html'>So ... this is supposed to be my hello world post on the blogspot.&lt;br /&gt;Why another blog? Well, since I started programing for profit my personal pet projects got lost in the noise - so I took a break from business coding and revived an old idea of mine, and decided to start a blog while I'm at it on a whim.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Idea:&lt;/span&gt; Lets write a small and simple CRPG in the spirit of &lt;a href="http://www2.lut.fi/%7Eakuukka/helherron/main.htm"&gt;Helherron&lt;/a&gt;, &lt;a href="http://ivan.sourceforge.net/"&gt;IVAN&lt;/a&gt; and rogue likes in general. I have played some rogue-likes and Diablo (I and II) of course, and what always annoyed me is how difficult it is to get going in those games and how antiquated the user interface is. So my contribution to the opensource gaming world might be this project.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Graphic Display&lt;/li&gt;&lt;li&gt;Click and Play Interface&lt;/li&gt;&lt;li&gt;Simple Gameplay&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;... and so I got started.&lt;br /&gt;&lt;br /&gt;I decided to use OpenGL as getting OK artwork is simpler for a 3D game. This sadly rules out using &lt;a href="http://www.fifengine.de/"&gt;F.I.F.E&lt;/a&gt; - but opens up the opportunity to play around with different approaches to programming.&lt;br /&gt;&lt;br /&gt;Since I always wanted to check out the &lt;a href="http://digitalmars.com/d"&gt;D Language&lt;/a&gt; after my experiences with C++ and Python - and it's really nice to get something going.&lt;br /&gt;&lt;br /&gt;And of course here's a screenshot of a pre 0.1 version of the game.&lt;br /&gt;As you can see a simple testing level is loaded, some md2 models stand around and picking with the mouse already works. The ugly gui uses just another unmaintained project from &lt;a href="http://dsource.org/"&gt;dsource&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nY_OgxDiUIw/R9Z6saUj5gI/AAAAAAAAAAM/wn1yRW8EoUU/s1600-h/Bildschirmphoto11.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_nY_OgxDiUIw/R9Z6saUj5gI/AAAAAAAAAAM/wn1yRW8EoUU/s320/Bildschirmphoto11.png" alt="" id="BLOGGER_PHOTO_ID_5176459725107357186" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4921689152984678494-5730573471323855830?l=iteration-zero.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iteration-zero.blogspot.com/feeds/5730573471323855830/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4921689152984678494&amp;postID=5730573471323855830' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/5730573471323855830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4921689152984678494/posts/default/5730573471323855830'/><link rel='alternate' type='text/html' href='http://iteration-zero.blogspot.com/2008/03/ehlo-world.html' title='EHLO World'/><author><name>phoku</name><uri>http://www.blogger.com/profile/12067621123008652431</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12154698203897360238'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_nY_OgxDiUIw/R9Z6saUj5gI/AAAAAAAAAAM/wn1yRW8EoUU/s72-c/Bildschirmphoto11.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>