[lisp-game-dev] [POST-MORTEM] Engine Troubles over Tentacle Planet

Erik Winkels aerique at xs4all.nl
Mon Aug 9 11:51:27 UTC 2010


Blogificated here: http://aerique.blogspot.com/2010/08/ilge-2010-post-mortem-engine-troubles.html

This is a ASCII repost of the above link:

1 Progress
~~~~~~~~~~

I have made very little progress since the last report, mainly due to
the little time that was available to me.  Only two things were done:

1. The source code was cleaned up a little.
2. A windows binary was made (OpenGL only).

In the short term I will not work on ETOTP anymore but perhaps for ILGE
2011 or another challenge or expo I'll continue where I left off.


2 What Went Right
~~~~~~~~~~~~~~~~~

- Making wrapper functions in C for Ogre's C++ methods and adding them
  to ECL from C using ECL's API.  I used this approach because the
  inverse (making the C wrapper code from Lisp) gave me segmentation
  faults and didn't get me very far about 2 years ago.  (Note: this was
  using ECL functionality, not CFFI for which there's Okra.)

- Compiling a C program on both Linux and Windows that was (dynamically)
  linked to ECL, Ogre and OIS.  This C program can, for example, start a
  game right away and quit back to the OS but it can also provide a CL
  REPL (like ECL's `si:toplevel') so one can interactively play with a
  3D scene.  Since it's just a plain CL one can load extra packages and
  perhaps start Slime.


3 What Went Wrong
~~~~~~~~~~~~~~~~~

- Compiling a statically linked binary on Linux.  This didn't go as
  easily as I had hoped and was starting to eat into my time budget.

- ManualObjects and shadows.  I had to resort to Ogre's prefab entities
  to get shadows working the way I wanted in the time that I had
  available.


4 What I Learned
~~~~~~~~~~~~~~~~

- ECL is a really good option for embedding a CL implementation in C(++)
  programs.  Juanjo has been working on ECL for years now and he's still
  going strong.  Questions on the mailing-list are generally answered
  within hours.

- One doesn't just add "-static" to a build rule and be done with it :-)

- Perlin noise is usable to animate objects with.  Definitely for
  prototyping since it's so easy and quick to implement.

- I should brush up on my maths.


5 Source & Binary
~~~~~~~~~~~~~~~~~

The source code and the Windows binary are available here: http://www.aerique.net/software/etotp/.

I have not given the source code its separate GitHub repository since it
will be added to Okra.

5.1 Linux Dependencies
======================

ECL (10.4.1) configured "--with-cxx".  (Feel free to try without it, I
haven't.)

Debian: libogre-dev libois-dev ogre-plugins-cgprogrammanager

5.2 Windows Dependencies
========================

I develop on Linux but the build is checked and tested on Windows using
MinGW and MSYS.  Either MSYS 1.10 or 1.11 was used, it doesn't really
matter.  The MinGW release that was used is TDM-GCC 4.4.1 but I see
there's a 4.5.0 release out now.

Ogre SDK 1.6.1 for MinGW (there's no later 1.6.x SDK for MinGW).  You
can try the 1.7.x SDK for MinGW since the Ogre API is pretty stable, but
I can make no guarantees that it will work.




More information about the Lisp-game-dev mailing list