Small game for < 3 year old kids, binds JMonkeyEngine to Clojure and thus provides a framework for 3D game development.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


 *   SofiaBA
 *   Copyright (c) Lau B. Jensen. All rights reserved.
 *   The use and distribution terms for this software are covered by the
 *   Eclipse Public License 1.0 (
 *   which can be found in the file LICENSE.txt at the root of this distribution.
 *   By using this software in any fashion, you are agreeing to be bound by
 *   the terms of this license.
 *   You must not remove this notice, or any other, from this software.


SofiaBA - 3D Game for kids < 3 years old. Its intended to provide changes in
scenary and music, adding/removing special effects, as the child slams the keyboard.

On another level, its intended to provide bindings for the JMonkeyEngine. jME
is a cross-platform Gaming Engine, which provides an abundance of features. When
Im done extending the core functionality, I plan to provide wrappers to better
utilize the power of Lisp - Currently its a JavaInterop expedition :)

This is where Clojure comes in. Clojure is a Lisp-1 which sits on the JVM, its fully
dynamic, functional and geared for concurrency. Its being heavily developed upon by
its author Rich Hickey, and is therefor my language of choice.

If you're interested in Clojure, I suggest you stop by in channel
#clojure - There you'll find Rich, myself and others - I dare say, the Clojure community
is one of the best there is. And on that note, I'd like to give a special thanks
to Chris Houser (Chouser), who is a gifted programmer with the patience of a saint!
Without his help, sparring and input... I doubt I'd be working on 3D engines in Clojure


You'll need to download JMonkeyEngine 2.0 from,
You will also need LWJGL if you want to use the same rendering engine as me.
In addition, there's a seperate library called jMEPhysics, which you need to
grab from googlecode, and compile with

ant release.all -lib /path/to/jME-2.0.jar

This will generate jmephysics.jar, which you need to put in your class-path, along


In the library path, you need to stick:


First make /..../sofiaba/classes/

(library path is where you keep LWJGL)
Start Java with it, in your library path, like:
export LD_LIBRARY_PATH==/PATH/TO/sofiaba/src/deps/native/linux/
java -cp /path/to/clojure.jar:/path/to/sofiab/src/ clojure.lang.Repl

From the Repl, start the game like this

user> (set! *compile-path* "/path/to/sofiaba/classes/")
user> (compile 'dk.bestinclass.sofiaba)
user> (use :reload 'dk.bestinclass.sofiaba)
<runs initSystem and ouputs debugger-info>
user> (in-ns '
#<Namespace>> (-main)

I'll update this...tomorrow :)