<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7141432593100470479</id><updated>2012-01-27T18:36:28.528Z</updated><category term='specular hacks'/><category term='monad?'/><category term='deferred shading'/><category term='scotland'/><category term='futures'/><category term='skills'/><category term='combat'/><category term='ai'/><category term='game database'/><category term='clojure'/><category term='lighting'/><category term='handles'/><category term='bugs'/><category term='suck'/><category term='magic'/><category term='blender'/><category term='xibalba'/><category term='projects'/><category term='instancing'/><category term='shadows'/><category term='types'/><category term='particles'/><category term='weapons'/><category term='job'/><category term='water'/><category term='procedural'/><category term='entities'/><category term='turns'/><category term='opengl'/><category term='clutter'/><category term='type erasure'/><category term='functional'/><category term='mechanics'/><category term='attributes'/><category term='hexes'/><category term='viewpoint'/><category term='source control'/><category term='performance'/><category term='code'/><category term='rant'/><category term='linux'/><category term='curses'/><category term='rendering'/><category term='magic items'/><category term='scala'/><category term='roguelike'/><category term='gothic'/><category term='camera'/><category term='gratuitous crystals'/><category term='programming'/><category term='plants'/><category term='games'/><category term='game'/><category term='immutability'/><category term='move'/><category term='state'/><category term='mutability'/><category term='properties'/><category term='post processing'/><category term='Haskell'/><category term='exponential shadow maps'/><category term='game design'/><category term='post procesing'/><category term='gnomon'/><category term='promises'/><category term='transparency'/><category term='shaders'/><category term='hacks'/><category term='monsters'/><category term='hiatus'/><category term='terrain'/><category term='new project'/><category term='ssao'/><category term='ubuntu'/><category term='redundancy'/><category term='maps'/><category term='dungeon generation'/><title type='text'>The Oblong</title><subtitle type='html'>A place for rambling about code and games</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>84</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3037625291245183903</id><published>2012-01-26T00:14:00.003Z</published><updated>2012-01-27T18:33:10.085Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='maps'/><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><title type='text'>Oh, that performance thing...</title><summary type='text'>Sooo, via this fascinating post and confirmed by my own dirty timing efforts, there's another excellent reason to not define structures that naively implement clojure.lang.IFn.

That being, it's really rather slow.

Using an AABB tree-node I've been messing with, extracting a single argument from a node defined with defrecord 106 times takes roughly:

TimeForm
15 ms(:key node)
135 ms(node :key) (</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3037625291245183903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3037625291245183903' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3037625291245183903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3037625291245183903'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2012/01/oh-that-performance-thing.html' title='Oh, that performance thing...'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-4174754294297319095</id><published>2012-01-25T17:19:00.001Z</published><updated>2012-01-25T19:54:29.436Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='handles'/><category scheme='http://www.blogger.com/atom/ns#' term='functional'/><category scheme='http://www.blogger.com/atom/ns#' term='futures'/><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='promises'/><title type='text'>A Year Of Clojure</title><summary type='text'>Bloody hell, more than a year evaporated.

What happened in that time? Mostly, a lot of Clojure, at least with respect to home stuff. It finally clicked something like nine months ago, in that I suddenly felt much happier writing in this language than pretty much any other. It was also marked by the crushing realisation that I didn't really know how to elegantly structure a program the size of </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/4174754294297319095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=4174754294297319095' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4174754294297319095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4174754294297319095'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2012/01/year-of-clojure.html' title='A Year Of Clojure'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-4632774165610876155</id><published>2010-11-23T01:39:00.000Z</published><updated>2010-11-23T01:39:18.475Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='specular hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='gratuitous crystals'/><title type='text'>Gratuitous Crystal Thingies</title><summary type='text'>See title. Experimenting with getting the material properties buffer working reliably again, seems to be going well.

</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/4632774165610876155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=4632774165610876155' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4632774165610876155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4632774165610876155'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/11/gratuitous-crystal-thingies.html' title='Gratuitous Crystal Thingies'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/TOsT8lcACFI/AAAAAAAAARA/hphWK4KwKec/s72-c/Gratuitous_Crystals.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-391130560605212967</id><published>2010-11-22T01:03:00.000Z</published><updated>2010-11-22T01:03:26.147Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='camera'/><category scheme='http://www.blogger.com/atom/ns#' term='viewpoint'/><category scheme='http://www.blogger.com/atom/ns#' term='water'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Camera Angles For Roguelike-likes: Discuss.</title><summary type='text'>
Nothing new this time, save that the magical technology of alpha testing is sort-of working. Hence ugly water-lily pads in the picture. I cannot for the life of me get them to render shadows properly, to the point where I'm wondering if my hardware just doesn't do alpha testing when rendering to f32 render targets. Regardless, I quite liked this shot and it fits what I've been thinking.

I spent</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/391130560605212967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=391130560605212967' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/391130560605212967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/391130560605212967'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/11/camera-angles-for-roguelike-likes.html' title='Camera Angles For Roguelike-likes: Discuss.'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/TOm-uzQx0_I/AAAAAAAAAQ8/WQ4enj74MiY/s72-c/ThirdPersonRL.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5845203121760338032</id><published>2010-11-20T02:16:00.000Z</published><updated>2010-11-20T02:16:03.968Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='deferred shading'/><category scheme='http://www.blogger.com/atom/ns#' term='water'/><category scheme='http://www.blogger.com/atom/ns#' term='transparency'/><title type='text'>Water! Again!</title><summary type='text'>I've been off discovering the joys of Bitbucket, but after some friendly discussion of various crazy rendering schemes I decided to do a litle shader work with respect to water rendering. The spare channels of the blur mask render target now store distortion and detail values, which are applied during the blur pass to add a bit more detail back into the freshly-blurred areas.

Looking a bit </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5845203121760338032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5845203121760338032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5845203121760338032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5845203121760338032'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/11/water-again.html' title='Water! Again!'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/TOctW4aSRXI/AAAAAAAAAQM/ExAw3Yon9bs/s72-c/DefWater_Distort_Detail_Angle.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2649474749805170952</id><published>2010-10-20T13:55:00.000+01:00</published><updated>2010-10-20T13:55:52.020+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='particles'/><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='transparency'/><title type='text'>Further Transparency</title><summary type='text'>Particle systems using the new translucency-faking also work now.

So what do they do well?

Completely order independent
Lit (with fully deferred light sources)
Shadowed
One rendering method for all translucent objects

And what do they do badly?

Look like arse when the camera is inside the smoke volume
Perform like arse when the camera is near the smoke volume (fill rate bound? Yick!)
Hideous </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2649474749805170952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2649474749805170952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2649474749805170952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2649474749805170952'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/10/further-transparency.html' title='Further Transparency'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/TL7mYiChwzI/AAAAAAAAAPs/p8-FchbpXfg/s72-c/StippleSmokeShadowed.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3537589774465484395</id><published>2010-10-18T20:35:00.000+01:00</published><updated>2010-10-18T20:35:25.676+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='specular hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='transparency'/><title type='text'>Status Update</title><summary type='text'>And boom! New job, somewhere even further north and colder than Dundee. I've actually had the job for a couple of weeks now, but what with the chaos of moving and settling in I figured The Oblong could rest for a few days.

I've even updated the code a little bit in the interim.

See, I was getting really very annoyed at the way transparency doesn't work in my deferred shading system. I don't </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3537589774465484395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3537589774465484395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3537589774465484395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3537589774465484395'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/10/status-update.html' title='Status Update'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/TLygSHPznKI/AAAAAAAAAPo/cmU74xBBtLQ/s72-c/StippleWater.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7405330220726945430</id><published>2010-08-27T14:51:00.000+01:00</published><updated>2010-08-27T14:51:14.169+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='xibalba'/><category scheme='http://www.blogger.com/atom/ns#' term='deferred shading'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Side Projects: Xibalba</title><summary type='text'>This is actually the project around which this blog formed, a turn based roguelike-like game of procedural dungeons, faint mesoamerican stylings, dice rolls, and general geekery.

So far it's seen more use as a rendering playpen than an actual game, although messing around with various representations of immutable game state has been fun.

Oh, and for the curious, I did indeed mis-spell the name </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7405330220726945430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7405330220726945430' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7405330220726945430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7405330220726945430'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/08/side-projects-xibalba.html' title='Side Projects: Xibalba'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_b9nVgiGlZXQ/SMFPRoxXLGI/AAAAAAAAAII/v8Lj5BuVHxk/s72-c/DeferredTentacles.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-1203916962596907045</id><published>2010-08-21T15:14:00.002+01:00</published><updated>2010-08-21T16:31:39.331+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='gnomon'/><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Side Projects: Gnomon</title><summary type='text'>As I'm frantically running around doing stuff, I figured it'd be a good time to dump some of the small projects I've worked on in my spare time.


First up, the little Clojure/Scala interop project tentatively called Gnomon. Nothing to see here graphically, the fun part is just having a little space in which to evaluate Clojure directly. Rendering commands are pushed from the Edit Window thread (</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/1203916962596907045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=1203916962596907045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1203916962596907045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1203916962596907045'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/08/side-projects-gnomon.html' title='Side Projects: Gnomon'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/TG_ezgy8GEI/AAAAAAAAAOY/ddWGbhhPKI8/s72-c/Gnomon.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-1634363113447906431</id><published>2010-08-18T19:28:00.000+01:00</published><updated>2010-08-18T19:28:53.542+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='redundancy'/><title type='text'>Bad Game, Bad Reviews, Bad Sales, Bad Business.</title><summary type='text'>Yup, things have been pretty slow on this blog. The main reason? The game that I helped develop at my day job launched a little while ago (hooray!), to critical derision and poor sales (boo!). A couple of months on, and... well, we're (almost) all redundant.

Now a really annoying thing from my point of view is that I managed to completely nuke my little game/testbed's content. I have backups, </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/1634363113447906431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=1634363113447906431' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1634363113447906431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1634363113447906431'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/08/bad-game-bad-reviews-bad-sales-bad.html' title='Bad Game, Bad Reviews, Bad Sales, Bad Business.'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-8273234912401783751</id><published>2010-04-26T20:37:00.000+01:00</published><updated>2010-04-26T20:37:09.856+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Extra Things</title><summary type='text'>
Not actually a huge number of changes, but the creatures in the dungeon now actively - if unintelligently - chase the player. They also have attached (red!) lights. The player can create rolling fireball thingies, again with dynamic (yellow!) lights.

The fireballs started off inheriting the random motion and solidity of the mobs, but after tweaking they no longer collide with anything and just </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/8273234912401783751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=8273234912401783751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8273234912401783751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8273234912401783751'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/04/extra-things.html' title='Extra Things'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/S9Xq1UxTHvI/AAAAAAAAAOQ/ZH9pm-StjD0/s72-c/Motion.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-773483107198605797</id><published>2010-04-22T20:21:00.000+01:00</published><updated>2010-04-22T20:21:37.759+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entities'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Not Worth A Screenshot</title><summary type='text'>It's not, but yer getting one anyway.


What's the significance of the arrows (ignore the inter-penetrating fungi)? That - right there - is some honest to goodness game logic! Green arrows are successful move actions, red ones are forced movement after failing an opposed test.

After months of being nothing but a rendering sandbox, there's actually a tiny bit of game in my game. Whoa.

Things to </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/773483107198605797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=773483107198605797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/773483107198605797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/773483107198605797'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/04/not-worth-screenshot.html' title='Not Worth A Screenshot'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/S9CcKT0_3gI/AAAAAAAAAOI/gIrRihVWXTE/s72-c/GameLogicHooray.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7573957628732490625</id><published>2010-04-19T13:22:00.000+01:00</published><updated>2010-04-19T13:22:19.884+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='particles'/><category scheme='http://www.blogger.com/atom/ns#' term='entities'/><category scheme='http://www.blogger.com/atom/ns#' term='shadows'/><category scheme='http://www.blogger.com/atom/ns#' term='exponential shadow maps'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Wibble!</title><summary type='text'>Mmm, lunchtime blogging.

First off, have a screenshot:


I've been playing with exponential shadow maps, and they're kinda fun. Not sure whether I'll use them over variance shadow maps, but it's tempting. I've also been messing with lit particles, although this has not been superbly successful. The image shows some alpha-tested jobbies that interact nicely with the deferred lighting, cast </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7573957628732490625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7573957628732490625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7573957628732490625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7573957628732490625'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/04/wibble.html' title='Wibble!'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/S8xIkv_fR1I/AAAAAAAAAOA/NJgskg2SIyI/s72-c/PclSpheresTwo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-4537281484811092606</id><published>2010-03-23T20:43:00.000Z</published><updated>2010-03-23T20:43:38.647Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='types'/><category scheme='http://www.blogger.com/atom/ns#' term='monad?'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Ehm, a monad perhaps?</title><summary type='text'>Disclosure: I know nothing about monads, or category theory in general, to an amazingly good approximation. I apologise in advance for any botched terminology or shoddy thinking.

Also, this kind of thing is a wonderful antidote to days staring at C++. Really. That's why I'm blogging about it, even though progress is pitifully slow.

Anyway, continuing with the code in previous entries, I ended </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/4537281484811092606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=4537281484811092606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4537281484811092606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4537281484811092606'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/03/ehm-monad-perhaps.html' title='Ehm, a monad perhaps?'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2207588343166847964</id><published>2010-03-22T13:18:00.002Z</published><updated>2010-03-22T13:49:19.682Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='entities'/><category scheme='http://www.blogger.com/atom/ns#' term='types'/><category scheme='http://www.blogger.com/atom/ns#' term='type erasure'/><category scheme='http://www.blogger.com/atom/ns#' term='properties'/><title type='text'>Type Frustrations III - Implicitly Manifest</title><summary type='text'>Apologies for the title. It is bad.

I found this incredibly helpful, though, and set about stealing the ideas therein.

So, how's about this for a solution:

  case class Var[A]( name: String, tag: String )

  abstract class Env {
    def apply[A]( v: Var[A] ) : A
    def get[A]( v: Var[A] ) : Option[A]
    def extend[A]( v: Var[A], x: A ) : Env = new Env {
      def apply[B]( w: Var[B] ) : B = </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2207588343166847964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2207588343166847964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2207588343166847964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2207588343166847964'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/03/type-frustrations-iii-implicitly.html' title='Type Frustrations III - Implicitly Manifest'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-6992545112860996504</id><published>2010-03-18T20:15:00.000Z</published><updated>2010-03-18T20:15:02.370Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='type erasure'/><category scheme='http://www.blogger.com/atom/ns#' term='properties'/><title type='text'>Type Frustrations II : Return of the Erasure</title><summary type='text'>Work is currently sucking up every single scrap of energy I have. Work does this. Sweet, sweet release is on the distant horizon though. In order to not go completely insane, I have been continuing to fiddle with my own stuff, and here's another irritated braindump:

This seems interesting. Where by 'interesting' I mean 'very frustrating'.

I found a lovely little implementation of the </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/6992545112860996504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=6992545112860996504' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6992545112860996504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6992545112860996504'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/03/type-frustrations-ii-return-of-erasure.html' title='Type Frustrations II : Return of the Erasure'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-575873718117402221</id><published>2010-01-18T18:57:00.002Z</published><updated>2010-01-18T19:13:12.630Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='particles'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='turns'/><title type='text'>May Have Been Driven Mad By Sparkles.</title><summary type='text'>OK, I deliberately pushed the particles way into HDR territory to get the bloom filter to explode. And there are too many particles to start with, this was supposed to be a collection of gently background fluff (fireflies, dust, magical plankton... that kinda thing).I was playing with the property browser thing for the particle material and accidentally changed the wrong digit in a colour (0.9 -&gt;</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/575873718117402221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=575873718117402221' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/575873718117402221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/575873718117402221'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2010/01/may-have-been-driven-mad-by-sparkles.html' title='May Have Been Driven Mad By Sparkles.'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/S1SvLAj6FXI/AAAAAAAAANU/VAA02oN63wo/s72-c/Sparklepony.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2674955523119185329</id><published>2009-12-22T11:31:00.007Z</published><updated>2009-12-22T13:07:36.049Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='source control'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>::tap-tap:: Is this thing still on?</title><summary type='text'>Oh! Hi there.Amazingly, I have been working on this little project. It's been slow going.The rendering system has been refactored considerably. It is very much still a nasty mass of imperative wrongness, but its also a bit more consistent and less fragile. I've been experimenting with different methods of generating the world geometry. I've tried half a dozen implementations of a game-entity </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2674955523119185329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2674955523119185329' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2674955523119185329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2674955523119185329'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2009/12/tap-tap-is-this-thing-still-on.html' title='::tap-tap:: Is this thing still on?'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/SzDESqRClGI/AAAAAAAAANA/RYRaZYqSe9U/s72-c/RandomlyGenerated.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-1666234911073991697</id><published>2009-03-10T13:17:00.002Z</published><updated>2009-03-10T13:23:02.494Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='post processing'/><category scheme='http://www.blogger.com/atom/ns#' term='ssao'/><category scheme='http://www.blogger.com/atom/ns#' term='suck'/><title type='text'>SSAO again</title><summary type='text'>Because I suck, I haven't done any real work on the game again. As usual, I did waste some time messing with useless stuff though!Behold the power of the resurrected SSAO fakery. I really like the way it looks from a top-down perspective... probably a best-case use of this kind of hack, as the view-dependence is not readily apparent.The starry-bloom is turned off again... somehow I've introduced </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/1666234911073991697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=1666234911073991697' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1666234911073991697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1666234911073991697'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2009/03/ssao-again.html' title='SSAO again'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b9nVgiGlZXQ/SbZop99SGlI/AAAAAAAAAMI/Yp4G7ub4bU8/s72-c/SSAO_TopDown.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2038072837104205076</id><published>2009-02-18T13:07:00.004Z</published><updated>2009-02-18T13:19:20.937Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='post procesing'/><title type='text'>Still here...</title><summary type='text'>Eek, no updates for yonks! In my defense, the day job is winding up towards some serious deadlines, and I'm still wrestling with immutable entities rather than making gameplay progress. Despite my desire to learn, I'm not sure I'm capable of using it in this project. I may admit defeat and return to the world of imperative updates on mutable state, but it'll make me sad if I have to.Anyway, one </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2038072837104205076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2038072837104205076' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2038072837104205076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2038072837104205076'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2009/02/still-here.html' title='Still here...'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b9nVgiGlZXQ/SZwKM1pwkVI/AAAAAAAAAMA/PUQL2SxBMlQ/s72-c/OverGlow3.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-6203373095999869590</id><published>2009-01-16T12:55:00.004Z</published><updated>2009-01-16T13:25:17.269Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='entities'/><category scheme='http://www.blogger.com/atom/ns#' term='types'/><category scheme='http://www.blogger.com/atom/ns#' term='type erasure'/><category scheme='http://www.blogger.com/atom/ns#' term='properties'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Type Frustrations</title><summary type='text'>Warning: this entry is largely a rant about my own ignorance.I should have remembered this, but there's a big annoying thing that crops up whenever I try to get overly-generic in Scala.Type erasure.My understanding of this is that it's a pain in the arse. It has something to do with brutally discarding useful type information at runtime, such that List[Int] has the type List (or possibly List[</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/6203373095999869590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=6203373095999869590' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6203373095999869590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6203373095999869590'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2009/01/type-frustrations.html' title='Type Frustrations'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-8610900232365331192</id><published>2009-01-13T16:40:00.001Z</published><updated>2009-01-14T13:03:00.774Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional'/><category scheme='http://www.blogger.com/atom/ns#' term='immutability'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>More references</title><summary type='text'>I sometimes (often) feel the Internet is too damn big to be useful.But it is possible to find some really good stuff...Like these fascinating posts dealing with writing retro games in functional languages. I linked the last part in the mini-series, because it posits a solution to one of my many current problems. Rather than allowing game logic to modify game state directly, emit a list of '</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/8610900232365331192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=8610900232365331192' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8610900232365331192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8610900232365331192'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2009/01/more-references.html' title='More references'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-1696066199939140863</id><published>2009-01-12T22:02:00.004Z</published><updated>2009-01-13T15:32:03.126Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='properties'/><category scheme='http://www.blogger.com/atom/ns#' term='immutability'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>More Entity Broken-ness</title><summary type='text'>Haskell is weird.Having dispensed with that, I got some great comments about ways to approach entity composition after my Doing it Wrong post a couple of days ago. Something which I'd given little attention was brought up, and I'm thinking I should give it a second chance: representing entities as name/value pairs.A bit of stumbling around later, and I found this huge post by Steve Yegge talking </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/1696066199939140863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=1696066199939140863' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1696066199939140863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1696066199939140863'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2009/01/haskell-is-weird.html' title='More Entity Broken-ness'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-4276055039579113437</id><published>2009-01-10T15:55:00.003Z</published><updated>2009-01-10T16:00:59.849Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='curses'/><category scheme='http://www.blogger.com/atom/ns#' term='functional'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='Haskell'/><title type='text'>Meanderings</title><summary type='text'>The festive season never seems to be a good time to get any coding done...With that out of the way, I'm going to press on with my crazy schemes. Over the past few days, I've been trying to recreate the skeleton of my game in Haskell using Nanocurses (this was mostly an excuse to learn Haskell, having tried and failed many, many times already).I still think in altogether too imperative a fashion </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/4276055039579113437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=4276055039579113437' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4276055039579113437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4276055039579113437'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2009/01/meanderings.html' title='Meanderings'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/SWjFyrwL3PI/AAAAAAAAALg/tWeKOlCg8Lg/s72-c/hs-rl.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3064400628294352757</id><published>2008-12-17T10:02:00.003Z</published><updated>2008-12-17T11:36:29.910Z</updated><title type='text'>Entity Composition: Doing It Wrong</title><summary type='text'>So, despite the lack of updates I've been working on this quietly. Unfortunately recent progress has been entirely on the game logic and architecture, rather than anything readily screenshotable, hence no real drive to blog.But here I am, writing a new post. This can only mean one thing: rambling, waffly code-oriented braindump!My current obsession is the structure of entities, going right back </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3064400628294352757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3064400628294352757' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3064400628294352757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3064400628294352757'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/12/entity-composition-doing-it-wrong.html' title='Entity Composition: Doing It Wrong'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7441086864329031288</id><published>2008-11-27T15:37:00.005Z</published><updated>2008-11-27T15:45:00.027Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='shadows'/><category scheme='http://www.blogger.com/atom/ns#' term='plants'/><category scheme='http://www.blogger.com/atom/ns#' term='clutter'/><title type='text'>When in doubt, add random useless stuff</title><summary type='text'>New bit o'fluff. I'm beginning to think that I'll need a better way of scattering general clutter - maybe something based around blue noise, there's a nice paper on using such point sets for placement of objects. A data driven way to specify new clutter objects also seems increasingly logical.Shadows on meshes are behaving weirdly, with lots of banding and acne despite using the same algorithm as</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7441086864329031288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7441086864329031288' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7441086864329031288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7441086864329031288'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/11/when-in-doubt-add-random-useless-stuff.html' title='When in doubt, add random useless stuff'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SS6_y-MhdnI/AAAAAAAAALY/dShXgFO2TzY/s72-c/Planting.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2189055806598772833</id><published>2008-11-21T18:18:00.002Z</published><updated>2008-11-21T18:30:18.546Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='water'/><title type='text'>Flanges With Everything</title><summary type='text'>Can't say I like the turquoise colour, but it'll do for the moment. Refraction and depth blending seem to work acceptably well, and the water is not too bad looking in motion. Still pondering the best way to integrate the dynamic lights.I reworked the way texture types are distributed over the cavern, so it biases the moss (purple!) around the water with the 'shrooms. Said shrooms are currently </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2189055806598772833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2189055806598772833' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2189055806598772833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2189055806598772833'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/11/flanges-with-everything.html' title='Flanges With Everything'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/SSb7syP4jWI/AAAAAAAAALQ/twGUFrQQixY/s72-c/WaterFloatingShrooms.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3483451229450045321</id><published>2008-11-20T13:26:00.003Z</published><updated>2008-11-20T13:38:11.476Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='water'/><title type='text'>Splish... splish...</title><summary type='text'>Hey, WoW hasn't consumed my soul entirely! Or maybe it's just not finished digesting it.Or possibly a darker entity already laid claim on it, in exchange for a Mars bar and some ruled paper in an unholy pact outside a lecture theatre many, many years ago.Anyway, li'l update. I added water tiles and subsequently a crappy water shader (it can and will be much better... no refraction, no depth-based</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3483451229450045321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3483451229450045321' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3483451229450045321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3483451229450045321'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/11/splish-splish.html' title='Splish... splish...'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b9nVgiGlZXQ/SSVoC3iDucI/AAAAAAAAALI/5YWFu7JAcIg/s72-c/BrokenWaterNewShroom.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7500021460321444204</id><published>2008-10-07T18:42:00.005+01:00</published><updated>2008-10-08T12:27:40.449+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='particles'/><category scheme='http://www.blogger.com/atom/ns#' term='hiatus'/><category scheme='http://www.blogger.com/atom/ns#' term='shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='lighting'/><title type='text'>Whoops, massive lack of updates</title><summary type='text'>So, many deadlines at work combine with a resurgence of my WoW habit to completely destroy my hobby-code productivity...With the next expansion looming very near (and a pre-expansion patch apparently within a week), Wowcrack is undergoing some very bizarre changes. I may splurge about the design decisions later, because they're quite interesting even if mostly specific to the online genre.In the </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7500021460321444204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7500021460321444204' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7500021460321444204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7500021460321444204'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/10/whoops-massive-lack-of-updates.html' title='Whoops, massive lack of updates'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b9nVgiGlZXQ/SOughvjWG3I/AAAAAAAAAKI/Q_CXt3xFHeY/s72-c/Shroomicles.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2339089634685500588</id><published>2008-09-08T14:21:00.004+01:00</published><updated>2008-09-08T14:28:31.226+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='ssao'/><category scheme='http://www.blogger.com/atom/ns#' term='shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='shadows'/><category scheme='http://www.blogger.com/atom/ns#' term='deferred shading'/><category scheme='http://www.blogger.com/atom/ns#' term='lighting'/><title type='text'>Even more deferred tentacles</title><summary type='text'>Just a quicky today.These are lighting-only shots showing the same scene with and without screen-space ambient occlusion, the latest hacktastic post process to take the rendering world by storm. Unfortunately I have to concede that even my less than stellar implementation does add a lot to the rendering, for a moderate cost, so I guess I'll be jumping on the bandwagon. It's an especially useful </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2339089634685500588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2339089634685500588' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2339089634685500588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2339089634685500588'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/09/even-more-deferred-tentacles.html' title='Even more deferred tentacles'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SMUnsfV4ACI/AAAAAAAAAJA/7CcVlFg6Kn0/s72-c/DeferredSSAO_Before.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2469022143726971142</id><published>2008-09-05T16:14:00.007+01:00</published><updated>2008-09-05T18:28:12.292+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='ssao'/><category scheme='http://www.blogger.com/atom/ns#' term='shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='shadows'/><category scheme='http://www.blogger.com/atom/ns#' term='deferred shading'/><category scheme='http://www.blogger.com/atom/ns#' term='opengl'/><category scheme='http://www.blogger.com/atom/ns#' term='lighting'/><title type='text'>Deferred Tentacles</title><summary type='text'>Further work on the deferred rendering side. I finally found an example online using FBOs with a stencil buffer, and thereby discovered that despite using a combined depth-stencil renderbuffer it needs to be attached to the frame buffer object twice, once as a depth attachment and once as a stencil attachment. Sigh.That done, efficient rendering of small lights via z-and-stencil-tested spheres </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2469022143726971142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2469022143726971142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2469022143726971142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2469022143726971142'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/09/deferred-tentacles.html' title='Deferred Tentacles'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SMFPRoxXLGI/AAAAAAAAAII/v8Lj5BuVHxk/s72-c/DeferredTentacles.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5146221710372293896</id><published>2008-09-02T13:21:00.003+01:00</published><updated>2008-09-02T13:29:43.409+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='instancing'/><title type='text'>Hordes</title><summary type='text'>Nothing important today, just been sounding out the pitfalls and quicksand that abound in OpenGL. This time it's so-called 'pseudo-instancing', providing more or less the equivalent of DX9's SetStreamSourceFreq-style instancing for geometry. I'm testing it with the anemone mesh, because I still have yet to get around to authoring more models. I'm lazy and emacs is more friendly than </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5146221710372293896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5146221710372293896' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5146221710372293896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5146221710372293896'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/09/hordes.html' title='Hordes'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/SL0xLJ2QxCI/AAAAAAAAAHo/GDCR1SxTQdU/s72-c/HordesOfTentacles.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5181827114136252704</id><published>2008-08-27T18:51:00.004+01:00</published><updated>2008-08-27T19:02:48.952+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='ssao'/><category scheme='http://www.blogger.com/atom/ns#' term='shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='shadows'/><title type='text'>Visual fluffs</title><summary type='text'>As my other post is waffly and dull, I thought I'd post some equally dull screenshots.First, we have soft shadows and a general framerate improvement. I found I wasn't using buffer objects for my mesh streams (bad!), switched to position-only streams for shadow rendering when possible and changed the shadow buffer format to rgba16f. All this has reduced the frame time hugely, even after I started</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5181827114136252704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5181827114136252704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5181827114136252704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5181827114136252704'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/08/visual-fluffs.html' title='Visual fluffs'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b9nVgiGlZXQ/SLWUwM4y53I/AAAAAAAAAHg/-gKfYO-RG3w/s72-c/SofterShadows.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-1283722052310685601</id><published>2008-08-27T14:23:00.009+01:00</published><updated>2008-08-27T16:43:01.274+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Functional Update Musings</title><summary type='text'>Recently I've been focussing a lot on the rendering part of this project. Quite fruitfully at times, but it certainly wasn't my intention.The reason for this is simply when I sat down to work on some gameplay stuff, I found a hard problem, and the solutions I've arrived at so far have not been... nice.As fair warning, this is a brain dump, and a long, boring one at that. It contains much </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/1283722052310685601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=1283722052310685601' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1283722052310685601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1283722052310685601'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/08/functional-update-musings.html' title='Functional Update Musings'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3261432728596824041</id><published>2008-08-15T13:13:00.004+01:00</published><updated>2008-08-15T13:19:25.672+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='shadows'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Baby Steps</title><summary type='text'>No big changes, but:Hex floor generation cleaned upBlock-edge normals much less brokenMipmap brokenness caused by discontinuous texture coordinates fixedShadow res bumped up (shadows are currently a huge rendering bottleneck, hence terrible frame rate)Shadow acne removed with a teeny epsilonThe mipmap fixes have also introduced a LoD bias, but I quite like the way it looks. Textures do repeat too</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3261432728596824041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3261432728596824041' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3261432728596824041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3261432728596824041'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/08/baby-steps.html' title='Baby Steps'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SKVy7zVamjI/AAAAAAAAAFg/acuZDUuM5v4/s72-c/BabySteps.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-8383072620118783848</id><published>2008-08-14T13:03:00.005+01:00</published><updated>2008-08-15T13:12:57.810+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mutability'/><category scheme='http://www.blogger.com/atom/ns#' term='state'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='opengl'/><title type='text'>GLState Snippet</title><summary type='text'>Nothing particularly big and clever, just something that seems to work quite well for slightly wrapping up OpenGL state in Scala (complete with manual and probably incomplete syntax highlighting): trait Bound {  def unbind: Unit}trait Bind {  protected def bind: Bound  def boundWith( p: =&gt;Unit ) = {    val b = bind    p    b.unbind  }  def &amp;&amp;&amp;(other: Bind) = new Bind {         class </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/8383072620118783848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=8383072620118783848' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8383072620118783848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8383072620118783848'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/08/glstate-snippet.html' title='GLState Snippet'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-6912047760931961955</id><published>2008-08-07T13:21:00.004+01:00</published><updated>2008-08-08T15:19:27.413+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monsters'/><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Monsterous</title><summary type='text'>Many bugs to fix, but instead of fixing 'em I've been dithering between the best way to represent my world using immutable state (I suspect monads may be involved, and these horrors just won't fit in my brain) and... getting a model in game!In this case, a very crappy monster has made the long and torturous transition from Blender to screen. Behold, the Cave Anemone (the five-tentacled starfish </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/6912047760931961955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=6912047760931961955' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6912047760931961955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6912047760931961955'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/08/monsterous.html' title='Monsterous'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SJrpgmFGbfI/AAAAAAAAAFY/4vN3gmprcRA/s72-c/FierceCaveAnemone.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-4391692889214061945</id><published>2008-07-31T22:28:00.003+01:00</published><updated>2008-07-31T22:32:21.054+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Floors melt, I boggle</title><summary type='text'>Sometimes, you just can't win. Other times, the floor inexplicably melts and you're left wondering... just what is going on in this code?This wasn't intentional, but it might look quite good over lava or acid or something. Don't slip!</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/4391692889214061945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=4391692889214061945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4391692889214061945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4391692889214061945'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/07/floors-melt-i-boggle.html' title='Floors melt, I boggle'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SJIvGtl2DNI/AAAAAAAAAFQ/xrrc958w-XM/s72-c/TheFloorIsMelting.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5811113125583622325</id><published>2008-07-30T12:48:00.003+01:00</published><updated>2008-07-30T12:56:22.448+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='shadows'/><category scheme='http://www.blogger.com/atom/ns#' term='hexes'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Hexy texture madness</title><summary type='text'>Testing out the sub-texture stuff with normal maps and shadows. Right hand images apply textures on a per-hex basis, whereas the others just have random perlin smeariness.Interpolation between hexes is still enborkinated, so the hex edges display some very rough geometry and there're no smooth variations. Also, the ugliness of the shadows is getting to me...</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5811113125583622325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5811113125583622325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5811113125583622325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5811113125583622325'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/07/unrelated-picture.html' title='Hexy texture madness'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SJBVYKiawSI/AAAAAAAAAD8/1nioyxxaIk4/s72-c/SubTextureMadness.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5765529100718080981</id><published>2008-07-29T13:27:00.008+01:00</published><updated>2008-07-30T12:48:02.767+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mechanics'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Core Mechanics</title><summary type='text'>Design is hard. Design is even harder when instead of focusing on it, you waste time playing a big heap of gaming goodness, but that aside...For the moment, I'm not (overly) displeased with the technical aspects of my code. I really want to get on and implement some gameplay stuff, get the combat working, stick some kind of character advancement in there. Y'know, nudge it towards being a game. </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5765529100718080981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5765529100718080981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5765529100718080981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5765529100718080981'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/07/core-mechanics.html' title='Core Mechanics'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-4775296743162532310</id><published>2008-07-15T14:04:00.000+01:00</published><updated>2008-07-15T14:15:44.770+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hexes'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Hexy fun</title><summary type='text'>Things have been a bit slow recently. I'd like to say I've got a heap more stuff done on the RL, but to be honest it's mostly been refactoring and trying to smooth out issues with running it under Ubuntu, when I've had time and energy to devote to the game at all.I have been spending many cycles on converting the grid to a hex representation, though, and today actually implemented a bit of it </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/4775296743162532310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=4775296743162532310' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4775296743162532310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4775296743162532310'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/07/hexy-fun.html' title='Hexy fun'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/SHyhF3fJtiI/AAAAAAAAAD0/dwURTDbe1TM/s72-c/HexTastic.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-4202910774515892350</id><published>2008-07-07T22:08:00.000+01:00</published><updated>2008-07-07T22:20:39.401+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monsters'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Messing with Blender</title><summary type='text'>Using the sculpt tool with high tesselation via multires occasionally causes this poor ailing laptop to crash, with varying degrees of severity. Still, managed to convert one of my concept sketches into a rough hi-poly model, ready for conversion to a game mesh via the lovely retopo tool.I still think Blender has a pretty abysmal interface, but I am at least getting more used to it's craziness. </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/4202910774515892350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=4202910774515892350' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4202910774515892350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4202910774515892350'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/07/messing-with-blender.html' title='Messing with Blender'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SHKHIewXemI/AAAAAAAAADs/2H_KAVPasLY/s72-c/BlenderMonster_Hi.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3999083258068790684</id><published>2008-07-06T16:15:00.001+01:00</published><updated>2008-07-24T13:48:24.662+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Mit Ubuntu</title><summary type='text'>For fun, I installed Ubuntu the other night whilst slightly drunk, and it's now happily dual-booting alongside Vista.Apart from a few teething difficulties with getting Scala and an absurdly pretty version of Emacs running, it's working wonderfully... and the game runs!I can't quite express my amazement that using the JVM (and the LWJGL, without which this project wouldn't even have started) </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3999083258068790684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3999083258068790684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3999083258068790684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3999083258068790684'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/07/mit-ubuntu.html' title='Mit Ubuntu'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-8025378444888425680</id><published>2008-07-04T18:37:00.000+01:00</published><updated>2008-07-04T18:48:53.923+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='procedural'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Sub-textures</title><summary type='text'>I apologise for the lack of lighting, but as I haven't gotten around to making the normal map equivalents it seemed best. This is just a simple way to add extra variation to the dungeon, by doing a crazy version of texture splatting basically lifted wholesale from here (the post on the 10th April, can't find a direct link to the appropriate post).At the moment, the blend weightings (violent </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/8025378444888425680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=8025378444888425680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8025378444888425680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8025378444888425680'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/07/sub-textures.html' title='Sub-textures'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/SG5gF7APP5I/AAAAAAAAADk/dUR2B_mtyL8/s72-c/SubTex.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7180482658597234002</id><published>2008-06-30T12:02:00.000+01:00</published><updated>2008-06-30T12:31:57.062+01:00</updated><title type='text'>New toy breaks game, and not much other news</title><summary type='text'>I have a new laptop!This is good, as it means less sharing of the home PC with my better half and consequently more time to play and write games. However, I have learnt two things from my weekend spent with the new toy:Vista is really, really horribleI bought the wrong laptopThe first is something I can work on, the second is interesting. I intended to buy a model with a relatively competent ATI </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7180482658597234002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7180482658597234002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7180482658597234002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7180482658597234002'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/new-toy-breaks-game-and-not-much-other.html' title='New toy breaks game, and not much other news'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-1530597071474953972</id><published>2008-06-24T08:02:00.000+01:00</published><updated>2008-06-24T08:17:09.132+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Shadows!</title><summary type='text'>Yay! It took quite a bit of wrestling with formats, but it seems to work now. At least on one PC.I greatly reduced the ambient lighting and removed all other light sources for testing, so the shadows are rather stark and flat. Also there are a metric fuckload of subtle problems - light bleeding where the depth complexity is even moderately high (the downside of using VSM), speckles due to depth </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/1530597071474953972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=1530597071474953972' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1530597071474953972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1530597071474953972'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/shadows.html' title='Shadows!'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/SGCcI97ZMYI/AAAAAAAAADc/1c00lPSwoic/s72-c/ShadowsWithNasty.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2567920305470035761</id><published>2008-06-19T15:34:00.000+01:00</published><updated>2008-06-19T15:39:05.565+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='magic'/><category scheme='http://www.blogger.com/atom/ns#' term='magic items'/><category scheme='http://www.blogger.com/atom/ns#' term='attributes'/><title type='text'>Attributes, skills, magical items, cake</title><summary type='text'>Attributes and skills are a tricky bunch, of which I've waffled before.Nontheless, I need some kind of framework to start thinking about these things, so here's the seed. I'm trying for the usual balance between flavour, mechanical clarity and balance, and separation between the attributes tied closely to the host body and those inherant to the servitor.I think it's quite important that the mind </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2567920305470035761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2567920305470035761' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2567920305470035761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2567920305470035761'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/attributes-skills-magical-items-cake.html' title='Attributes, skills, magical items, cake'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3859270042570035971</id><published>2008-06-18T18:43:00.000+01:00</published><updated>2008-06-18T18:49:10.027+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='procedural'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Chasm++</title><summary type='text'>A very very small change, but a nice one. Although there are nashty, nashty evils going on where the higher-res terrain hits the lower-res chasm geometry, they're not so visible form this PoV.Hooray!</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3859270042570035971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3859270042570035971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3859270042570035971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3859270042570035971'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/chasm.html' title='Chasm++'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b9nVgiGlZXQ/SFlJllKMb2I/AAAAAAAAADU/CO0QpLztP0Q/s72-c/Chasmeriffic.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-4408656382341683550</id><published>2008-06-18T13:25:00.000+01:00</published><updated>2008-06-18T13:37:49.959+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='procedural'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Bridges and chasms</title><summary type='text'>Not a huge amount of change recently. Binding keys to console commands now works relatively well, and I've fiddled with the map to allow for chasms (tiles with no floor at all), and with that bridges, spurs and ledges. There are a couple of niggles with it (witness the raised lips around chasm tiles, also the strange shelf on the pillar) but it's a start.Bridges and things are implicit at the </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/4408656382341683550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=4408656382341683550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4408656382341683550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/4408656382341683550'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/bridges-and-chasms.html' title='Bridges and chasms'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/SFj--KhZWrI/AAAAAAAAADM/HHNMAaVMyU8/s72-c/BridgeOverTroubledLackOfWater.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7562497831106581536</id><published>2008-06-13T18:26:00.000+01:00</published><updated>2008-06-13T18:36:40.983+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Minor improvements</title><summary type='text'>A few additional tweaks to things.Items! They don't do anything beyond have a name, bulk, owner and position. But you can pick them up and drop them. They're currently all rendered as little purple spheres, making the game look like an overengineered, underfeatured turn-based pacman clone.Console commands! Swapped away from hard-coded key associations to binding keys to console strings. This </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7562497831106581536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7562497831106581536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7562497831106581536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7562497831106581536'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/minor-improvements.html' title='Minor improvements'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/SFKuJmCIZKI/AAAAAAAAADE/eNyrliFXvwE/s72-c/BetterTextAndPills.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5415475545078895645</id><published>2008-06-11T17:55:00.000+01:00</published><updated>2008-06-11T18:50:05.824+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game database'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>A database, a database, my select * from Kingdom for a database</title><summary type='text'>Databases make me all tingly, in a nice way.Finally started using SQLite in the main game. There's now an attribute database as a kind of test for the concept, covering skills and inherent attributes. The nice thing about this so far is that it's very easy to modify at runtime, as I have a debug console command that allows for arbitrary query execution.My current thinking is that attributes will </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5415475545078895645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5415475545078895645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5415475545078895645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5415475545078895645'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/database-database-my-select-from.html' title='A database, a database, my select * from Kingdom for a database'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/SFAPp5ZW8gI/AAAAAAAAAC8/SEsbEuPRPZo/s72-c/DatabaseAt.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-6332057762652440062</id><published>2008-06-09T20:21:00.000+01:00</published><updated>2008-06-09T20:39:51.331+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>By Eris' golden underthings, it's a wild @!</title><summary type='text'>Yeah, it's upside down and the triangles are using the wrong winding order. What's yer point?It's the first real mesh in the game, so I'm happy it worked at all. Should be easy enough to fix the borked conversion to right-handedness, and then... all will be well. At least that's what I'm telling myself. I'll probably stick with .obj format for now, despite the lack of useful things like tangents,</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/6332057762652440062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=6332057762652440062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6332057762652440062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6332057762652440062'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/by-eris-golden-underthings-its-wild.html' title='By Eris&apos; golden underthings, it&apos;s a wild @!'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/SE2De_Hsn-I/AAAAAAAAAC0/V1N40GbJtT4/s72-c/CavernNewWithAt.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-865743639778351589</id><published>2008-06-06T13:16:00.000+01:00</published><updated>2008-06-06T13:56:42.818+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dungeon generation'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Do you dais?</title><summary type='text'>New textures, and removed much of the complexity from the walls and floor. Added some cheese to handle raised areas - with some ramps and fiddling, I want ziggurats! Beginning to like the result anyway, at least as a framework for more interesting stuff. Coarse wall features can be added fairly easily later, and it's definitely a good contrast to the natural rock.Note the very annoying black </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/865743639778351589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=865743639778351589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/865743639778351589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/865743639778351589'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/do-you-dais.html' title='Do you dais?'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/SEkymPMgVwI/AAAAAAAAACs/P0ePRgzMcGc/s72-c/RoomWallsNew.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2500957221934097519</id><published>2008-06-05T13:28:00.000+01:00</published><updated>2008-06-05T13:40:27.831+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dungeon generation'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Built dungeon areas</title><summary type='text'>Fiddling with the density function for walls to try to get nice big blocks. This may not be that useful in the long run as it's entirely possible that some nice textures will entirely suffice, leaving the density function to handle larger features. Good practise though.I also changed the way normals are calculated. Rather than using the gradient of the density function, vertex normals are </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2500957221934097519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2500957221934097519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2500957221934097519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2500957221934097519'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/built-dungeon-areas.html' title='Built dungeon areas'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b9nVgiGlZXQ/SEfeCcDnGgI/AAAAAAAAACk/MNnvGVLlLlk/s72-c/RoomWalls.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3740793394863687583</id><published>2008-06-04T13:33:00.000+01:00</published><updated>2008-07-29T13:27:16.672+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='procedural'/><title type='text'>Rooms and stuff</title><summary type='text'>Natural caverns do not a varied environment make. With this in mind, terrain generation now creates two sets of geometry. One is the natural cavern, the other encompasses built features. Both use the same marching cubes set and are generated from the text file map format, but the 'built' portions use much more boring density functions and will eventually have matching textures.I'm increasingly </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3740793394863687583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3740793394863687583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3740793394863687583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3740793394863687583'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/rooms-and-stuff.html' title='Rooms and stuff'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SEaOU_TxLSI/AAAAAAAAACc/RywVZQbUNYs/s72-c/CaveWithRoom.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-594539348393585347</id><published>2008-06-03T12:59:00.000+01:00</published><updated>2008-06-03T13:07:52.125+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>More screenies o'doom</title><summary type='text'>So, because we all know how fascinating empty caves are, here's some more screenshots. Of course, I got no modelling done at all over the weekend, electing instead to laze about and play games. D'oh. Just pretend that green sphere is some neat player model, and the yellow ones are hideous monsters. Do it.Anyway, specular! It's overdone for testing purposes, but it does make the surfaces more </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/594539348393585347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=594539348393585347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/594539348393585347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/594539348393585347'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/06/more-screenies-odoom.html' title='More screenies o&apos;doom'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b9nVgiGlZXQ/SEUzJSA9vMI/AAAAAAAAACM/Ngh_nooGbe8/s72-c/CaveWithSpecular.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7323096128673589507</id><published>2008-05-30T22:18:00.000+01:00</published><updated>2008-05-30T22:31:13.765+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='procedural'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Cavern discoveries</title><summary type='text'>One thing I love about procedural content in a project, is that you discover little things that just look... interesting. Of course, making them actually interesting, or even consistently aesthetically pleasing, is a huge challenge.I discovered this little shelf in the cavern ceiling and thought it was interesting enough to screenshot. Maybe I'm weird.Regardless, it's a bit easier to see the </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7323096128673589507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7323096128673589507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7323096128673589507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7323096128673589507'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/05/cavern-discoveries.html' title='Cavern discoveries'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/SEBvrIWWs8I/AAAAAAAAACE/WfM0BevoUnM/s72-c/FPRL_Ceiling.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3605532670237888457</id><published>2008-05-29T19:39:00.000+01:00</published><updated>2008-05-29T19:42:49.009+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>FPRL Again</title><summary type='text'>Just a teeny update. At lunch and after work I got normal mapping mostly working, added some basic fog to help with showing depth in the screenshot, and tweaked a few of the generating parameters.So without further ado, here be another screenshot. Please ignore the gibberish where once there was text, trying out a new font and got the texture coords wurblinated.</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3605532670237888457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3605532670237888457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3605532670237888457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3605532670237888457'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/05/fprl-again.html' title='FPRL Again'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/SD740IWWs7I/AAAAAAAAAB8/QMAMFyrgFTA/s72-c/ProceduralCavern2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5663248041542283152</id><published>2008-05-29T10:16:00.000+01:00</published><updated>2008-05-29T10:45:04.424+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>FPRL</title><summary type='text'>So, after implementing some good 'ol procedural cavern geometry, here's the result as of last night. It's using the free debug camera for a first-person view. This is a really rough pass, lots of issues with the nature of the functions used etc. Plus normal mapping is currently broken, and the textures are very blargh. Lit by a yellow point light, with no falloff or shadowing, located behind the </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5663248041542283152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5663248041542283152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5663248041542283152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5663248041542283152'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/05/fprl.html' title='FPRL'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/SD53ZIWWs6I/AAAAAAAAAB0/Rswb_v9rD28/s72-c/ProceduralCavern.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2794026916078986819</id><published>2008-05-21T19:10:00.001+01:00</published><updated>2008-05-21T19:20:18.148+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Reinvigoration</title><summary type='text'>Eventually, I got bored at fiddling half-heartedly with the planning AI and decided to do something with more immediate results.So now the action and timing stuff are wodged into the game! I can now pilot a little green blob about a level, hacking at little orange blobs that immediately respawn, and... well, that's about it actually.Suprisingly, this lack of progress took quite some time. I </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2794026916078986819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2794026916078986819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2794026916078986819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2794026916078986819'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/05/reinvigoration.html' title='Reinvigoration'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3038822391498158377</id><published>2008-05-19T09:42:00.000+01:00</published><updated>2008-05-19T11:39:26.022+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='magic'/><title type='text'>Themed magic</title><summary type='text'>That was a very pleasant week away from work, largely spent indulging in gaming. Unfortunately this included quite a bit of WoW. Sigh. I thought I'd kicked that habit for good.Regardless of my recurring bad taste in MMOs, one particular design topic has been nipping at my hind-brain all week. As the title subtly hints at, it's magic.So magic in many (computer) games is very dull and... </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3038822391498158377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3038822391498158377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3038822391498158377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3038822391498158377'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/05/themed-magic.html' title='Themed magic'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-689461295055239035</id><published>2008-05-07T10:35:00.000+01:00</published><updated>2008-05-19T09:42:12.664+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gothic'/><category scheme='http://www.blogger.com/atom/ns#' term='terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Further thinks</title><summary type='text'>Gothic III again. Just pondering it from a graphical point of view this time. I've always appreciated the 'clutter' in the Gothic series, especially in wilderness areas. Much like Oblivion, there's a certain mushroom-picking joy to be had wandering around in the pleasantly lush undergrowth harvesting herbs, berries, fungi and the occasional wolf pelt.But more interesting is the shape of the world</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/689461295055239035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=689461295055239035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/689461295055239035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/689461295055239035'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/05/further-thinks.html' title='Further thinks'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-6834051370388545520</id><published>2008-05-06T12:28:00.000+01:00</published><updated>2008-05-06T12:32:23.813+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>I live!</title><summary type='text'>State of the SnutEh, long hiatus there. I'm trying to keep this more up to date than previous efforts, but... well, I'm easily distracted.I'm still working on the Roguelike, but I'm marginally stumped as to the direction of the AI now. Although the planning prototype worked after a fashion, as soon as the number of planning actions started creeping higher the complexity and space requirements of </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/6834051370388545520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=6834051370388545520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6834051370388545520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6834051370388545520'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/05/i-live.html' title='I live!'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7758871659207538466</id><published>2008-03-10T10:52:00.000Z</published><updated>2008-03-12T08:28:01.419Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Belated title edit</title><summary type='text'>This blog has languished of late. Between being ill (damn colds); looking for a flat; and my native bone-idleness taking over much of my time; it's fallen by the wayside.I must confess, over the past weekend I've also been indulging in Dwarf Fortress and DDO. It's research, damnit!The (still un-named) roguelike does ooze forward, however.SettingAfter a great deal of deliberation, the mesoamerican</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7758871659207538466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7758871659207538466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7758871659207538466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7758871659207538466'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/03/this-blog-has-languished-of-late.html' title='Belated title edit'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-2551002635198715927</id><published>2008-02-27T17:23:00.001Z</published><updated>2008-02-27T17:37:17.895Z</updated><title type='text'>Overengineering taken to wobbly extremes</title><summary type='text'>At lunch today I sketched out a concept for a remote console. This is a simple console app that can connect to a debug version of the game and permits selective echoing of output to said app. Initially I thought this might be useful simply because it's frequently handy to have vast swathes of debug information being spat out of a game, but neither game interfaces nor standard output streams give </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/2551002635198715927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=2551002635198715927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2551002635198715927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/2551002635198715927'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/overengineering-taken-to-wobbly.html' title='Overengineering taken to wobbly extremes'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-193372607316425331</id><published>2008-02-27T12:26:00.001Z</published><updated>2008-02-27T12:39:33.421Z</updated><title type='text'>Text rendering</title><summary type='text'>Text rendering started working last night, after I chased down a few more GLSL peculiarities. I'm using the alpha-tested magnification stuff from Team Fortress 2, although my font texture is not quite as nice as theirs. I should probably use a bigger, shinier base texture and spend more time on my signed distance field generation, but it's good enough for now.Now I desperately need some kind of </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/193372607316425331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=193372607316425331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/193372607316425331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/193372607316425331'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/blog-post.html' title='Text rendering'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5320631440364882437</id><published>2008-02-26T02:29:00.001Z</published><updated>2008-02-26T02:42:04.615Z</updated><title type='text'>More graphs! Contain thy excitement.</title><summary type='text'>Got a little particle swarm optimiser going, and now searching for near-optimal stances is a lot quicker.After quite a bit of tweaking, I think the combat system is resembling what I want. There are a few non-linearities in the system, but I quite like them. They add a little mystery to the system without really getting in the way of the transparency.I also fiddled with the nomenclature a bit, </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5320631440364882437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5320631440364882437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5320631440364882437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5320631440364882437'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/more-graphs-contain-thy-excitement.html' title='More graphs! Contain thy excitement.'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/R8N6zLdNr_I/AAAAAAAAABs/-dxKYWA6ePY/s72-c/NewGraphs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-23477054614610278</id><published>2008-02-22T17:04:00.000Z</published><updated>2008-02-22T17:54:44.008Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Event handlers</title><summary type='text'>The fascinating details of JADE's event handlers started another mental ball rolling.The post specifically (but not exclusively) concerns 'pluggable' enhancements to equipment, which in many games manifest themselves as prefixes (flaming pig-poker, holy maguffin) and suffixes (stick of southwesternesse, crown of monobrow inducement).Of course, the general implementation of event handling using </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/23477054614610278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=23477054614610278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/23477054614610278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/23477054614610278'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/event-handlers.html' title='Event handlers'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5838210857224046693</id><published>2008-02-22T11:32:00.000Z</published><updated>2008-02-22T12:29:34.339Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='combat'/><title type='text'>Brute forcing a solution</title><summary type='text'>Combat.It should be fun. That means it should be interesting. That means there should be choices, and those choices should be meaningful. It has to last long enough that choices can be made on the timescale of a turn based game. It has to be short enough that it doesn't degrade into a boring repetitive action. Ideally, a tough fight should see both participants gain and lose the upper hand a few </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5838210857224046693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5838210857224046693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5838210857224046693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5838210857224046693'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/brute-forcing-solution.html' title='Brute forcing a solution'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/R764prdNr-I/AAAAAAAAABk/yxCn6JLuI-U/s72-c/CombatGraphs2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-8529399216943732327</id><published>2008-02-19T18:26:00.000Z</published><updated>2008-02-19T20:36:45.942Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='weapons'/><category scheme='http://www.blogger.com/atom/ns#' term='attributes'/><category scheme='http://www.blogger.com/atom/ns#' term='combat'/><title type='text'>On the nature of weapons...</title><summary type='text'>A quick discussion with that most ominous source of Great Game Ideas turfed up this little concept, which I record here for posterity. Or myself after having slept and clean forgotten.Weapons in RPGs typically have a big pile of attached stats. In the shoddier systems, these are basically a disguise for a ranking from 'small, bad, cheap, use only for rats (small ones)' to 'big, expensive, the </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/8529399216943732327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=8529399216943732327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8529399216943732327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8529399216943732327'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/on-nature-of-weapons.html' title='On the nature of weapons...'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-148814329118270182</id><published>2008-02-18T14:15:00.000Z</published><updated>2008-02-19T15:59:32.817Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='attributes'/><title type='text'>Attributes - background waffle</title><summary type='text'>Via the wise ramblings of the Rampant Coyote, I came across this interesting discourse on attributes in (C)RPGs.This got me thinking about things. Sloooowly of course, because I'm dumb, but thinking regardless. One thing I'm keen to experiment with is making all attributes useful in some fashion, and all combinations of skills and attributes, well, as far from stupid as possible.So here's a long,</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/148814329118270182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=148814329118270182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/148814329118270182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/148814329118270182'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/attributes-background-waffle.html' title='Attributes - background waffle'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-345201888898000744</id><published>2008-02-13T01:16:00.000Z</published><updated>2008-02-19T16:36:11.885Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='game database'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Basic asset support</title><summary type='text'>Huzzah! Primitive Texture, Shader and Material objects are implemented. In the end I gave up trying to work out where the GL -&gt; Java -&gt; Scala chain was breaking down with glGetInfoLogARB, and just started checking the shaders by hand with the GLSL Syntax Validator (which, by the way, is rudimentary to say the least).That done, it was but a short head/wall reciprocatory interlude before DevIL was </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/345201888898000744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=345201888898000744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/345201888898000744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/345201888898000744'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/basic-asset-support.html' title='Basic asset support'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b9nVgiGlZXQ/R7JHiE4JfEI/AAAAAAAAABU/YQ_pyRE-hiI/s72-c/Scala_LWJGL_5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-750431638842036371</id><published>2008-02-10T19:19:00.000Z</published><updated>2008-02-19T16:40:06.269Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='opengl'/><title type='text'>Natural terrain</title><summary type='text'>More OpenGL wrestling occurred, but eventually I bent it to my will and managed to get VBOs working.The dungeon now has a floor and ceiling that varies in height, and a very rough first stab at a continuous mesh:Now, there are many things wrong with the implementation so far, not least of which is the lack of textures and shaders. Those will require me to gird my loins and head back into the </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/750431638842036371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=750431638842036371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/750431638842036371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/750431638842036371'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/natural-terrain.html' title='Natural terrain'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b9nVgiGlZXQ/R69Qyk4JfDI/AAAAAAAAABM/4zlOkFsMCjg/s72-c/Scala_LWJGL_3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-6513199299450229998</id><published>2008-02-09T19:26:00.000Z</published><updated>2008-02-09T19:34:49.717Z</updated><title type='text'>Screenshottery</title><summary type='text'>I made some initial attempts at a map generator today, messing around on a quiet saturday. Although the rendering's not been touched at all, I did add the facility to load a .txt file to the Hello Scala app and a quick radius cull.And so, because there hasn't been a screenshot for too long:Nothing else to report, really. If I got off my arse and implemented basic text rendering, I could put in </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/6513199299450229998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=6513199299450229998' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6513199299450229998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/6513199299450229998'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/screenshottery.html' title='Screenshottery'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/R63_p04JfCI/AAAAAAAAABE/x8vGgiKfxvw/s72-c/Scala_LWJGL_2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7913258772112552551</id><published>2008-02-08T20:03:00.000Z</published><updated>2008-02-08T22:17:16.797Z</updated><title type='text'>An... Idea? cont'd</title><summary type='text'>The previous malformed waffle mostly concerned small, human-ish things and the gods that play with them. Here's my current thinking in the world outside, and the mechanism through which mortals sense their puppet masters:ElementalsThe world comprises elements and forces that endlessly interact, a chaotic dance that will have repurcussions for the brief lives squirming above and through it. These </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7913258772112552551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7913258772112552551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7913258772112552551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7913258772112552551'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/idea-contd.html' title='An... Idea? cont&apos;d'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5596742362764330603</id><published>2008-02-08T12:01:00.000Z</published><updated>2008-02-08T19:04:51.727Z</updated><title type='text'>An... idea?</title><summary type='text'>Further discussion with a column of extremely well-formed and precisely applied Evil produced the following ideas for the game's theme and introduction. I've bent and warped them further from the initial premise we batted around, and I've no doubt they'll be further distorted under my clumsy hands in the future.Basic premiseThe player is an emissary, a servitor to a deity. The gods of the world </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5596742362764330603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5596742362764330603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5596742362764330603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5596742362764330603'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/idea.html' title='An... idea?'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-1877154501328682314</id><published>2008-02-08T00:40:00.000Z</published><updated>2008-02-08T01:30:08.931Z</updated><title type='text'>Gods and their names</title><summary type='text'>NamesRandom names are fun, and not something I'd implemented before.A few minutes with Scala and a few hours of debugging and disposing of edges cases later, I have a bit of code that eats a list of gods purloined from Wikipedia and spits out new names generated from the old. It's very basic and takes ages to cobble together the initial digest, but it does more or less work, and at least tries to</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/1877154501328682314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=1877154501328682314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1877154501328682314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1877154501328682314'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/gods-and-their-names.html' title='Gods and their names'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-618743273925706833</id><published>2008-02-06T09:22:00.001Z</published><updated>2008-02-07T09:22:49.032Z</updated><title type='text'>Mumble mumble mechanics mumble</title><summary type='text'>TimingTiming is a tricksy beast, but here are my thoughts so far. Each action has an associated cost which represents the time required to execute that action. Some actions may have an additional 'lead in' cost, and these may or may not also be flagged as interruptible.In execution, this is fairly simple apart from all the horrible edge cases. Acting creatures (including the player character) </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/618743273925706833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=618743273925706833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/618743273925706833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/618743273925706833'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/mumble-mumble-mechanics-mumble.html' title='Mumble mumble mechanics mumble'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-8099168709406959780</id><published>2008-02-03T12:40:00.000Z</published><updated>2008-02-03T13:12:04.151Z</updated><title type='text'>Dice!</title><summary type='text'>Mindful of the desire to have human readable input where possible, and expose information to players at all times, I wrote a simple parser for dice strings. I'm quite pleased at how well it (eventually) worked, as this is the first time I've created a recursive descent parser in any language.There's an annoying bug in my grammar, though, which is mandating the top level expression has to be a </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/8099168709406959780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=8099168709406959780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8099168709406959780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/8099168709406959780'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/dice.html' title='Dice!'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-1637969250587500646</id><published>2008-02-01T16:51:00.000Z</published><updated>2008-02-01T23:37:10.123Z</updated><title type='text'>Design and tech choices</title><summary type='text'>A certain column of inchoate evil asked me today what plans I had with respect to the combat, leveling and other game systems. As I waved hands and blathered, the realisation that perhaps some planning would be good slowly dawned.Continuing my own tradition of using a blog with no readers as a brain-dumping site, here are the kernels of the design. I reckon I'll just drop things in as and when </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/1637969250587500646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=1637969250587500646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1637969250587500646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/1637969250587500646'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/02/design-and-tech-choices.html' title='Design and tech choices'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5606334572997953282</id><published>2008-01-31T22:48:00.000Z</published><updated>2008-01-31T23:36:07.511Z</updated><title type='text'>Scala and the LWJGL</title><summary type='text'>So! Wending slowly through Scala has been very fun. After a little tinkering (I never did much with Java before) I managed to import the lightweight Java game library and get some primitive graphics on screen!Now, I may loathe OpenGL's extension mechanism, but I'm forced to admit that using the basics is, well, basic. Granted, it took a little headscratching and blowing the cobwebs off some </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5606334572997953282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5606334572997953282' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5606334572997953282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5606334572997953282'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/01/so-wending-slowly-through-scala-has.html' title='Scala and the LWJGL'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/R6JTbJULIrI/AAAAAAAAAA8/dCZcSFC3kmw/s72-c/Scala_LWJGL.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-5715658749481029850</id><published>2008-01-28T01:18:00.000Z</published><updated>2008-06-30T11:46:39.148+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scotland'/><category scheme='http://www.blogger.com/atom/ns#' term='new project'/><category scheme='http://www.blogger.com/atom/ns#' term='move'/><title type='text'>Well, that was exciting.</title><summary type='text'>Not really, of course, but I have now moved the length of this sordid little Isle. In search of gainful and satisfying employment, we have dragged ourselves from Cornwall to Warwickshire and finally to the city of Dundee. I sincerely hope this'll prove a nice spot to sit for a while, as we're sick of moving.A positive mark in this sense: Scotland is altogether nicer than England. The drink is </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/5715658749481029850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=5715658749481029850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5715658749481029850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/5715658749481029850'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2008/01/well-that-was-exciting.html' title='Well, that was exciting.'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-3574021825096348358</id><published>2007-03-08T20:33:00.000Z</published><updated>2007-03-08T21:21:12.660Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='shadows'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Progress! Of a sort...</title><summary type='text'>A bit further on; some experimentation with Blender (one of the most agressively counter-intuitive programs I've ever used) and lots of frustration eventually lead to very slightly more interesting dungeon walls. After a bit of fiddling with the data, they even cast nice shadows.Given that the major view point is always going to be top-down, I figure the z-pass stencil shadow algorithm is a win, </summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/3574021825096348358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=3574021825096348358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3574021825096348358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/3574021825096348358'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2007/03/bit-further-on-some-experimentation.html' title='Progress! Of a sort...'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b9nVgiGlZXQ/RfB9h2JhfoI/AAAAAAAAAAY/erGqlk5i_0I/s72-c/Screenshot01_%2808-03-07%29.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7141432593100470479.post-7681547461835527008</id><published>2007-03-01T18:39:00.000Z</published><updated>2007-03-01T19:50:12.104Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>The stage is set...</title><summary type='text'>printf( "Hello, world" );Let's set the tone; this will (hopefully) track the course of my attempts at writing home-grown games. As a professional codemonkey, sometimes the very last thing I want to do of an evening is stare at an IDE and write yet more code, so I'm thinking this will be sporadically updated.Still, the goad of updating this journal may help push along development of ideas when the</summary><link rel='replies' type='application/atom+xml' href='http://oblong-code.blogspot.com/feeds/7681547461835527008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7141432593100470479&amp;postID=7681547461835527008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7681547461835527008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7141432593100470479/posts/default/7681547461835527008'/><link rel='alternate' type='text/html' href='http://oblong-code.blogspot.com/2007/03/stage-is-set.html' title='The stage is set...'/><author><name>Snut</name><uri>http://www.blogger.com/profile/06737686885066577411</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b9nVgiGlZXQ/RectAbJRVtI/AAAAAAAAAAM/eXZkA5YiIAo/s72-c/Screenshot00_%2801-03-07%29.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
