Torchlight Released

Torchlight has been released by Runic Games. It's is a hack & slash game in the grand tradition of Rogue, Diablo and Diablo 2. Key people that worked on the last two titles have also worked on Torchlight.

The reason I blog about this is because it uses Ogre for its graphics engine which is the same library Okra uses.

I played it for a couple hours last night and it is really enjoyable. So go check it out it's only $20 and can be bought from their site, Steam or any of the other online distributors.

Labels: ,


Using a 3D engine from Common Lisp with the foreign function interface

I have been using Okra for a couple of months now after having worked on it for a few weeks. Although "a couple of months" should be seen in the perspective of someone with a full-time job, a wife and a kid. While researching avenues to do games and graphics programming from CL and while working on Okra I often had this Usenet thread from comp.lang.lisp on my mind: C++ to CLOS mapping. Very disheartening. However, I'm currently prototyping a mobile game using Okra which has procedurally generated textured terrain, animated models walking on that terrain and mouse picking down to the triangle level. Let me be the first to say that I would love to have native games, graphics, physics and input libraries for CL but they are simple either not available or not mature enough. So that leaves either writing those myself in CL or talking to the outside world. Since I'm mainly interested in games programming and not engine building the latter choice was the obvious one for me, not in the least since it would take far less time (weeks versus months) to get decent results on the screen. So here are some of my observations in no specific order: Abstractions over the raw FFI calls to C++ are quickly made and once you have those the programming experience is suffiently 'Lispy' to be pleasant. Performance is good enough for prototyping and even simple games. You will not see cutting edge AAA titles released with Okra in the near future though. New minor versions of Ogre are handled well by the automatic bindings generator. Okra was started when Ogre was at 1.6.2 and it is at 1.6.4 now and I had no problems following the upgrades. Keep in mind that Ogre is a very well written and stable library. I do expect the step to 1.7 to be more problematic. I would have spent far more time doing the explorative programming projects in C++ than it took me doing them in CL. Additionally they would have been far less fun. This is also due to me being even less versed in C++ than I am in Common Lisp. Portability between Linux and Windows has not been much of a problem. I can move pretty effortlessly between different combinations of Linux / Windows Vista / Windows XP and CLISP / Clozure CL / SBCL. I did have to turn to #lisp once for a problem with SBCL on Linux (thanks pkhuong!). My main problems have been hardware related: my machine at work I use to test now and then has an old on-board Intel 910 that barfs on some Ogre material scripts which use shaders. That's it for now, I'll add more points when I remember them :)

Labels: , ,