Perfect response. Thanks Chad!

If it can't be done - it can't be done. Oh well. Next...

Though I still wish it could all be done in Ruby... :-)

-Rich

----- Original Message -----
From: "Chad Fowler" <chadfowler / chadfowler.com>
To: "ruby-talk ML" <ruby-talk / ruby-lang.org>
Sent: Sunday, April 27, 2003 8:01 PM
Subject: Re: Generating a DLL file?


>
> ----- Original Message -----
> From: "Daniel Carrera" <dcarrera / math.umd.edu>
> To: "ruby-talk ML" <ruby-talk / ruby-lang.org>
> Sent: Monday, April 28, 2003 7:05 AM
> Subject: Re: Generating a DLL file?
>
>
> > I would probably understand your responses better if I know what a "bot"
> > is.  Also, what is a MOD?
> >
>
> The way the game half-life works (and several other Quake derivatives) is
> that there is a somewhat brainless rendering engine which makes calls out
to
> a separate DLL (or set of DLLs) which handle all of the game logic.  The
> rendering engine is essentially just a view, with the "game rules" living
in
> this DLL.  Under the covers, it's a client server architecture, with a
good
> amount of separation between these two layers.
>
> So, all of the code for monsters, weapon logic, "AI" opponents, etc. are
in
> this DLL.  There is generally one main exposed function in the DLL that is
> used to invoke game logic.
>
> A bot is an artificially intelligent opponent that is programmed and
> compiled into this DLL.  It usually would behave like a human player in a
> multiplayer game.
>
> If you wanted to write this in Ruby, you have a couple of possibilities:
>
> 1. You could make a C wrapper for the DLL's main entry point as well as
the
> callbacks to the rendering engine.  After that, you would need to port all
> of the existing essential game logic to Ruby from C.
>
> 2. You could create a wrapper for the bare minimum you need for your
> modification, which would mean you would have to load your external ruby
> script and provide any necessary callback functions.  This is probably the
> path of least resistance.
>
> Ultimately, though, you're going to need to learn how to program in C to
do
> this.  It can't be avoided.
>
> Chad
>