From: ·······@gmail.com
Subject: LISP Implementation of Doom Engine
Date: 
Message-ID: <1172473137.397926.16610@j27g2000cwj.googlegroups.com>
  I've discovered the beauty and elegance of LISP and I want to do
something to evolve my skills with the language. I'm looking at a Doom
engine (lxDoom specifically) and looking to use this as a model for a
Doom engine in Lisp, considering the lack of projects of this sort.
I'm curious if anyone would have any suggestions, comments, or
criticisms about taking on this project. Its still in the planning
stages at this point so I'm not sure where it will go from here but it
would be nice to get some input before I attempt it.

From: Ken Tilton
Subject: Re: LISP Implementation of Doom Engine
Date: 
Message-ID: <xzyEh.861$z42.486@newsfe12.lga>
·······@gmail.com wrote:
>   I've discovered the beauty and elegance of LISP and I want to do
> something to evolve my skills with the language. I'm looking at a Doom
> engine (lxDoom specifically) and looking to use this as a model for a
> Doom engine in Lisp, considering the lack of projects of this sort.
> I'm curious if anyone would have any suggestions, comments, or
> criticisms about taking on this project. Its still in the planning
> stages at this point so I'm not sure where it will go from here but it
> would be nice to get some input before I attempt it.
> 

Why port the whole thing? Do you have a lot of value to add, or would it 
be close to a literal port? That sounds tedious. Educational, perhaps, 
but you'll learn more if you are having more fun, so it is not a clear win.

Does a Doom engine have callbacks? ie, can you extend it or customize 
NPCs with custom code without diving into internals?

What I would do is take the C (guessing) version and add callbacks 
wherever I saw an opportunity to extend lxDoom in fun ways. Then write 
the callbacks in Lisp. If some subset of the engine cried out for an 
overhaul, I would do it in Lisp instead of working on the C. Call it a 
rolling/partial/as-needed port.

That approach strikes me as more fun and also gets you into CFFI early, 
which opens up a worl of possibilities.

hth,kt

-- 
Well, I've wrestled with reality for 35 years, Doctor, and
I'm happy to state I finally won out over it.
                                   -- Elwood P. Dowd

In this world, you must be oh so smart or oh so pleasant.
                                   -- Elwood's Mom
From: justinhj
Subject: Re: LISP Implementation of Doom Engine
Date: 
Message-ID: <1172500091.233899.65930@j27g2000cwj.googlegroups.com>
On Feb 26, 5:24 am, Ken Tilton <·········@gmail.com> wrote:
> ·······@gmail.com wrote:
> >   I've discovered the beauty and elegance of LISP and I want to do
> > something to evolve my skills with the language. I'm looking at a Doom
> > engine (lxDoom specifically) and looking to use this as a model for a
> > Doom engine in Lisp, considering the lack of projects of this sort.
> > I'm curious if anyone would have any suggestions, comments, or
> > criticisms about taking on this project. Its still in the planning
> > stages at this point so I'm not sure where it will go from here but it
> > would be nice to get some input before I attempt it.
>
> Why port the whole thing? Do you have a lot of value to add, or would it
> be close to a literal port? That sounds tedious. Educational, perhaps,
> but you'll learn more if you are having more fun, so it is not a clear win.
>
> Does a Doom engine have callbacks? ie, can you extend it or customize
> NPCs with custom code without diving into internals?
>
> What I would do is take the C (guessing) version and add callbacks
> wherever I saw an opportunity to extend lxDoom in fun ways. Then write
> the callbacks in Lisp. If some subset of the engine cried out for an
> overhaul, I would do it in Lisp instead of working on the C. Call it a
> rolling/partial/as-needed port.
>
> That approach strikes me as more fun and also gets you into CFFI early,
> which opens up a worl of possibilities.
>
> hth,kt
>
> --
> Well, I've wrestled with reality for 35 years, Doctor, and
> I'm happy to state I finally won out over it.
>                                    -- Elwood P. Dowd
>
> In this world, you must be oh so smart or oh so pleasant.
>                                    -- Elwood's Mom

The game play code in Doom is written in a simplified C style
language. One thing that might be fun would be to write an interpreter
and/or compiler that dumps out quake C. For added fun make it so you
can reload the quake C while the game is running.

Justin
From: ·······················@googlemail.com
Subject: Re: LISP Implementation of Doom Engine
Date: 
Message-ID: <1172664079.816918.29190@k78g2000cwa.googlegroups.com>
On Feb 26, 7:58 am, ·······@gmail.com wrote:
>   I've discovered the beauty and elegance of LISP and I want to do
> something to evolve my skills with the language. I'm looking at a Doom
> engine (lxDoom specifically) and looking to use this as a model for a
> Doom engine in Lisp, considering the lack of projects of this sort.
> I'm curious if anyone would have any suggestions, comments, or
> criticisms about taking on this project. Its still in the planning
> stages at this point so I'm not sure where it will go from here but it
> would be nice to get some input before I attempt it.

I you want to write a game, do 2d first. I would start with Invaders
(not Tetris, Tetris is fairly complicated) this works with almost no
brain graphic code. You don't want to have to deal with lisp and with
a graphic engine.

The problem with games is they have 2 distinct parts (actually 4, but
lets keep it simple here). The graphic engine and the logic part (game
data and the rules). To rewrite both is fairly frustrating. Write
logic code or a graphic engine. Do not try to do both at the same
time. The logic part will profit most from a lisp rewrite, try to do
that first. Or try to write a graphic, not a game, engine. The first
one will teach you more about lisp. The second one a lot about why
people in graphic coding still write assembler code to this day.

The idea with the bots is actually great, there you can get the most
out of Lisp.

For 2d try to find some port of the SDL (Simple Direct Media Layer)
library, as a starting point.
From: justinhj
Subject: Re: LISP Implementation of Doom Engine
Date: 
Message-ID: <1172768064.085859.9860@p10g2000cwp.googlegroups.com>
On Feb 28, 7:01 am, ·······················@googlemail.com wrote:
> On Feb 26, 7:58 am, ·······@gmail.com wrote:
>
> For 2d try to find some port of the SDL (Simple Direct Media Layer)
> library, as a starting point.

Try lisbuilder-sdl

It's not a port of the SDL library, but a wrapper library and
bindings, which you can find here ...

http://lispbuilder.sourceforge.net/

Justin
From: rurban
Subject: Re: LISP Implementation of Doom Engine
Date: 
Message-ID: <1173038174.299940.272100@p10g2000cwp.googlegroups.com>
On 26 Feb., 07:58, ·······@gmail.com wrote:
>   I've discovered the beauty and elegance of LISP and I want to do
> something to evolve my skills with the language. I'm looking at a Doom
> engine (lxDoom specifically) and looking to use this as a model for a
> Doom engine in Lisp, considering the lack of projects of this sort.
> I'm curious if anyone would have any suggestions, comments, or
> criticisms about taking on this project. Its still in the planning
> stages at this point so I'm not sure where it will go from here but it
> would be nice to get some input before I attempt it.

If you like doom AND lisp look at "Cosmos Creator".
The scripting and rapid model development is done in LISP there.
  http://www.radishworks.com/CosmosCreatorSpecs.htm
  http://www.righthemisphere.com/forum/showthread.php?t=3456

There was another open source doom clone years ago, where a lot of the
backend
was written in a self-written lisp w/o GC. I just forgot the name, it
started with an "A"
From: JohnFredCee
Subject: Re: LISP Implementation of Doom Engine
Date: 
Message-ID: <1173044182.742025.174420@p10g2000cwp.googlegroups.com>
On Mar 4, 7:56 pm, "rurban" <···········@gmail.com> wrote:
> On 26 Feb., 07:58, ·······@gmail.com wrote:
>
> >   I've discovered the beauty and elegance of LISP and I want to do
> > something to evolve my skills with the language. I'm looking at a Doom
> > engine (lxDoom specifically) and looking to use this as a model for a
> > Doom engine in Lisp, considering the lack of projects of this sort.
> > I'm curious if anyone would have any suggestions, comments, or
> > criticisms about taking on this project. Its still in the planning
> > stages at this point so I'm not sure where it will go from here but it
> > would be nice to get some input before I attempt it.
>
> If you like doom AND lisp look at "Cosmos Creator".
> The scripting and rapid model development is done in LISP there.
>  http://www.radishworks.com/CosmosCreatorSpecs.htm
>  http://www.righthemisphere.com/forum/showthread.php?t=3456
>
> There was another open source doom clone years ago, where a lot of the
> backend
> was written in a self-written lisp w/o GC. I just forgot the name, it
> started with an "A"

You are thinking of "Abuse". It wasn't really a CL, but it was in
intersting way to go. Sources are still floating around on the web.
Myself, I'm still wondering whether to embed a Lisp (ECLS) in Irrlicht
or to embed Irrlicht in a Lisp (SBCL)...