Re: C++ Circle (was Graphical MUDs)

From: Bil Simser (
Date: 08/03/01

From: "Grimau Lysik'an" <grimau_lysikan@HOTMAIL.COM>
> Well, in case anyone is interested, I'm starting (as of Aug 4, 2001, EDT) a
> C++ version of circle. All the licenses for Circle will need to be adhered
> to, since I'm shamelessly stealing as much as possible on the first pass.
> be precise - I'm stealing from Del's bundle based on bpl18 (re-doing the
> integration of OLC and scripts would be a bigger pain than I want on the
> first try).

I would suggest that you simply base your new version off the baseline
system with nothing added (except maybe the races patch) just because it's
the most stable version of Circle I know of. I've tried some bundles and
most of them seem to crash under various compilers. The OLC patch isn't bad,
but there's a lot there to try to wrangle first time out. I'm not
discouraging your attempt, but I wouldn't try to attack it from such a large
baseline. Circle is pretty big as it is, adding anything else out of the
gate would be added effort with the potential for hidden problems. The
Circle baseline is (IMO) the stablest jumping point to start from. Maybe
with Georges global patch applied would be an even better starting point,
but I wouldn't toss in any bundles, scripts or olc just yet.

> I will NOT be running a MUD based on it - I just like making C progs into
> C++ progs. :) I have no server at the moment, but might get access to a
> server if there's interest (and I learn to use it correctly).

One thing to try to steer clear of as I've seen C->C++ projects fail because
of it. Converting C to C++ isn't really doing any justice to anything.
Circle already compiles with C++ compilers (under Windows anyways) and
structs are treated as classes already so in that view, it is a C++ project
;). Seriously though, C++ (or OO in general) isn't just changing the name
struct to class. It's a well thought out design where you encapsulate all
the functionality that an object should offer and create a stable public
interface to present it. Behind the scenes you have whatever implementation
you can to make it work. So before you go sprinkling C++ class keywords all
over the place, think about what a room really needs to do? What data does
it have to keep track of (people, objects, etc.) and what can you ask a room
object to do that would make sense. Does it make sense that a room have
pointers to other rooms or should the world be in some kind of linked list
(a STL vector is perfect for this). Lots of questions to ask and answer on
this. This can of course get into heated debates over what is appropriate
for an object (does a dog have a tail syndrome, OO programming 101) so keep
abreast of those issues.

As another poster mentioned, SourceForge ( is the
best place to put such a program, however you have to accept one of the
predefined public licences when registering a project (GPL, etc.) so that
may be a problem with a Circle derivative but check it out. It offers plenty
of project management services not just CVS. I have several projects hosted

> Anyone interested in contributing to, borrowing from, or shamelessly
> stealing from my codebase is welcome to contact me, as long as you
> the Circle licenses will still need to be observed.

I would be interested in participating but only if it was on a service like
SourceForge just because it's a nice clean approach to project management
and you'll never be scratching your head wondering what someone is working
on. However, the license issue might be a problem there.

> I'm designing, coding, and testing on linux using as much pure (read ISO)
> C++ as possible. Porting to MS C++ I'll leave as an exercise for the

Another suggestion is to keep all of the portability issues intact and
maintain them upfront. They're already in the code so why go off creating a
*nix version just because you don't have Windows, thereby leaving a port
blowing in the wind. With a good cross section of developers in the project,
you can easily have someone working on the Windows version, ensuring that
all code checked in is compatible. It'll save a lot of headaches later
trying to retro-fit something to keep a compiler happy. Set your goals and
scope up front and stick to it.

Good luck and looking forward to seeing how things go.


   | FAQ: |
   | Archives: |

This archive was generated by hypermail 2b30 : 12/06/01 PST