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 >