Sign in to follow this  
evolutional

What happened to libGDN?

Recommended Posts

I don't know who remembers libGDN, but I was looking through my old downloads circa 2002/2003 and noticed the libGDN folder. Nipping back over to sourceforge, I half expected a nice beefy library that'd be useful in my projects but what did I find...? The same version. Does anyone know why it was abandoned? Is there any hint that development of it will resume as it seemed a promising little project. I've tried emailing the project admins but I have had no reply, I'm guessing it really has fallen off the face of the earth. Thanks

Share this post


Link to post
Share on other sites
That is the way of most projects. Getting sufficient momentum is not easy. Fortunately, considering its open-source nature, the work already accomplished is not lost.

Want to contribute?

Note: you can try contacting CppMan and Rising Dragon via the forums.

Share this post


Link to post
Share on other sites
I messaged the two admins, thanks Fruny.

I'm interested, how many people would be interested in contributing their code and/or using the library?

It seems with the discussions around enginuity, it's a perfect opportunity to once again pool the efforts of the community.

Share this post


Link to post
Share on other sites
Quote:

I messaged the two admins, thanks Fruny.

I'm interested, how many people would be interested in contributing their code and/or using the library?

It seems with the discussions around enginuity, it's a perfect opportunity to once again pool the efforts of the community.

Oli


Hi Oli. As fruny said, a lot of the will to code and momentum was lost after about a month or two. After that, me and CpMan continued on, along with some others - I think someone contributed a decent network library, or at least the beginnings of one - but we both had real life stuff that kept getting more and more time consuming. The website: I think someone who was a professional did that, it was quite awesome. :)

One of the problems I think we encountered was a real lack of project admin experience. As fruny said (or was it oleyusi?) its' almost always better to come out with working but incomplete v0.1 and THEN start grabbing people then to start from scratch with no code or concrete aim. Then you start running into problems: people want to go one way, or the other, no one has a clear objective, things start dissolving... ahem.

Anyway. The library right now is still pretty decent. I am still quite proud of the logging system even if it is overengineered, a little feature bloated (from inevitable opensource feature creep)... as well, there was zip file / WAD file support I think, good error logging throughout the "library"..some other decent stuff.

The main status so far as i can remember is that the core is done, I think there is a decent windowing system (that also works in multimonitor) for windows. I think this guy from isreal did quite a lot of stuff for linux windowing system, but I'm not sure if he ever commited the changes. I think he branched off pretty early, though, so who knows.

There is no engine, per se, above basic gl / dx. A problem that I felt I didn't realize was a problem till far to late (and I am quite guilty of this too) is what I would call overengineering. At the time I didn't see it but from a few month - years? down the road I can definitely see the overengineering that occured on that project. Urgh. I shouldn't have read that damn Modern C++ Design, or at least taken it with a grain of salt.

There is some template useage on that library, considerable dependence on boost. At the very least,it's an example of what NOT to do when writing a game: overengineering the "engine". However I definitely remember the discussions about this, we felt that as a library especially for all of GDN, it woudl be better to be as flexible as possible, even if that resulted in more complex code.

If you want, to contribute, you can maybe add a decent sound system, or a decent graphics engine - maybe something to deal with shaders, or some such. There was even a decent documentation set, it was autogened with doxygen and then we had human written stuff as well. At least, I remember that being so.

Enguity, I read all the articles in that series. It's good, but I wasn't aware there was quite a few people interested in expanding /working further with the code from that series. :) Compared to enginuity, which was written by one person, I think you'll find there is a definite mishmash of coding and design styles and philosphosies. There was never a clear aim, with proper feature sets per revision, and code review never came around. See, now I know what we shoudl have done :D

Quote:

I've tried emailing the project admins but I have had no reply, I'm guessing it really has fallen off the face of the earth.

Seriously? I chcked my mail but I haven't had anything with libGDN in FOREVER. However...who knows what junk mail filters can do nowadays with sourceforge emails. I keep on losing them. It's like MSN is out to get me, or something...

Share this post


Link to post
Share on other sites
Thanks for the response, risingdragon3. Do you imagine the library requiring scrapping (or at least the overengineered sections) or could someone really pick up on some subsystems and contribute to it?

The only problem I do see (and yes, I read the discussion thread that was going too), was that as you say, it was intended for use by all of GDN and by definition we have a broad range of people on the site, from extreme newbies to seasoned veterans. Each will have their own say and will expect different things from the library.

I think I'll try and get CVS working (will have to be from home) and see what's there.

As for enginuity, I seem ot feel that a lot of people are using it in their own engines, pretty much people starting from scratch and building it from the ground up - surely there will at be at least some interest in contributing (probably mainly using) a library such as libGDN.

As I say, I'll have a look at what you have and will go from there ;)

Thanks

Share this post


Link to post
Share on other sites
And as the project member page says, I'm available for questions (though it's probably better to ask them through the forums) ;)

(Hi, risingdragon)

Share this post


Link to post
Share on other sites
Quote:

Thanks for the response, risingdragon3. Do you imagine the library requiring scrapping (or at least the overengineered sections) or could someone really pick up on some subsystems and contribute to it?

Not scrapping: let me put it this way. although the internals are pretty complex in some parts, the externals are very simple. The interface for the user is pretty easy to use. It follows a SDL like main function, simple ways to get windows up and so on. Logging is nice. Again, let me state: externally, for the library user it's simple. Internally, some parts are pretty complex. If as a library user you want to do really interesting and complex things, that aren't the "default" case, then yes, the library is designed to let you do that. It'll just be .... complex.

Quote:

The only problem I do see (and yes, I read the discussion thread that was going too), was that as you say, it was intended for use by all of GDN and by definition we have a broad range of people on the site, from extreme newbies to seasoned veterans. Each will have their own say and will expect different things from the library.

This is a big problem. But, if you can manage to get people focused.. I mean the code is all still there and none of it is out of date (mainly because we never got to advanced dx/gl stuff :))

You can IM me, or email me. AIM: risingdragon3, MSN: risingdragon3@hotmail.com (more spam yay).

Share this post


Link to post
Share on other sites
Hey risingdragon, do you feel like ressurecting it in about a month or two when I get back to school? The MS experience has shown me a lot of the errors in our dev ways. We could do some kick ass stuff.

Matt
Visual C++ Front End Developer

Share this post


Link to post
Share on other sites
So, I definately want to do something with libGDN this fall.

Now, based on my experiences at Microsoft and the hindsight on the previous libGDN work, I can say we need to do a couple things:

1. Separate branches for test, main, and dev cycles.
2. Automated test systems. Write tests, run tests, makes sure you don't break anything.
3. Specifications. Design specs for everything major, including implementation specification.

I'd also suggest doing a C# (or managed C++) port of the library. It wouldn't take too much extra time and it would be a great jumpstart to managed code game development.

Share this post


Link to post
Share on other sites
It's good news to hear.

I think that cppman's experiences at Microsoft sound good, especially when you bring risingdragon's comments to mind - it sounds as if the project will benefit from a professional management style.

I'm keen to help out if I can (depending on what there is to do?). If anything, I'd at least try and build a small-ish project on the base code (perhaps port jsInvaders to it?) or embed a scripting system.

Share this post


Link to post
Share on other sites
I guess I could find some time this weekend and see what the state of the library is, since I haven't touched it in 1+ year. I can't even remember all the cool features I wrote for the uberlogging system, and that logging system was AWESOME...

I'll send a pm to charles B sometime soon. thanks, alpha

Share this post


Link to post
Share on other sites
I thought I'd take a look at it, and this is interesting:

LOG("Starting sound system with settings " << Settings);

This pretty much the approach I used for LoggingControl but mine is thread-safe and can have multiple sinks for the logging message.

Regards,
Jeff

Share this post


Link to post
Share on other sites
Quote:

This pretty much the approach I used for LoggingControl but mine is thread-safe and can have multiple sinks for the logging message.

There was multiple sinks too. An example was in there somewhere where the output was routed to a text file and the console window. However I seem to remember it was a bit clusmy.

Correctly though, I seem to remember it wasn't thread safe. That was a problem. I guess you could add in the test in the object code, but that's simple enough on the user side:


//define logger function for internal library logging
//by using an static inside the function the stream is
//never created unless the functino is actually called
ostream& Logger() {
//define a struct to hold the different log outputs
struct Log {
GDN::IO::DebugOStream debugstream; //OS specific out
GDN::IO::HTMLofstream htmlstream; //HTML text out
GDN::IO::StreamForwarder out; //combiner
Log() : htmlstream("c:\\test.html",std::ios::out) {
out.AddStream(debugstream);
out.AddStream(htmlstream);
//do some default color settings and font settings to make the HTML
//clearer
htmlstream << Formatting::SetBackColor(Color<float>(0,0,0))
<< Formatting::SetForeColor(Color<float>(1,1,1))
<< Formatting::SetFont("Arial");
}
};

static Log logstream;

//do the double check multithreading thing right about here..
return logstream.out; //return the static stream forwarder
}

Share this post


Link to post
Share on other sites
Well, wasn't planning on open sourcing my stuff, but I might consider it.

I guess I'd want peer reviews first...

Of course, it's my own config file format so people will probably moan about it not supporting XML ;)

Regards,
Jeff

Share this post


Link to post
Share on other sites
Code Review Requests!

Woohoo!

Oh btw risingdragon, remember the HTML output for the logging?

I seem to remember the windowing system to be very good, and the existing math library to be solid. I seriously would be VERY interested in a port to managed code.

I'll try and take a look this weekend, not sure how much I'm going to be available before august 25th or so. After that is go go!

Matt
Visual C++ Front End Developer

Share this post


Link to post
Share on other sites
Quote:
Original post by rypyr
Well, wasn't planning on open sourcing my stuff, but I might consider it.

I guess I'd want peer reviews first...

Of course, it's my own config file format so people will probably moan about it not supporting XML ;)

Regards,
Jeff


We'd probably the want to abstract it to support multiple file formats. I remember doing some work on something like that once but it didn't come out well. Maybe I'll take another stab at a simpler system

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this