Hello world. This is my first diary entry on Advogato. As
you might expect, I learned what Advogato is about from the
infamous Salon article. I am an advocate of Free Software,
but I have not yet really contributed to the movement
(reading Slashdot all day doesn't count). I decided to get
an account on Advogato because I want to start
contributing, and I figure writing diary entries here
documenting my progress would be a good motivator.
My interest is programming games, and all the interesting
fields that are used in game programming. I couldn't get a
job as a game programmer (you have to have published games
to get into the industry; go figure). Even in my current
job, I do not really do any programming. I want to be a
software engineer, but judging from the want ads I need
three years of programming COM (for instance) on Windows to
get a job. (Interesting how putting your excuses into
words makes it easy to see how thin they are.) The reason
I mention all that is I suffer from frustrated programmer
syndrome, and this is also a strong reason I want to get
involved in free software development.
I have been keeping an eye on the development of a project
called ClanLib.
ClanLib is a cross-platform Game Development Kit. It is
written in C++ and is designed to be used by C++ programs.
It might sound similar to SDL, but I think SDL is more
suited for porting existing programs to Linux, and is
intentionally much lower-level (the S stands for "Simple"
after all). ClanLib is supposed to provide a lot of the
services you would use in any game, and if you program
everything through the ClanLib API, you can compile the
same program on Windows and Linux (and purportedly BeOS but
I haven't tried that). Under Windows, it uses DirectX to
accomplish its services, and under Linux it can use several
graphics targets. It also handles a lot more than the
graphics, and seems to be very modular in terms of adding
new display targets or API features, which I won't go into
since you can just look at the web page.
A combination of looking at the sources of ClanLib, trying
to follow the design discussions on the listserv, and
trying to create my own game using ClanLib led me to a long
side diversion of trying supplement my knowledge with
books. The C++ I learned was from 1991, and a lot has
changed since then that I needed to know if I was going to
contribute, such as Design Patterns, Standard Template
Library, and so on. Not only that, but how to design and
architect a game. Right now I am reading Stroustrup's
tome, as well as Game Architecture and Design by Andrew
Rollings and Dave Morris, which I highly recommend.
I think ClanLib has a lot of potential, but I don't see
many people using it. I see people starting new projects
using SDL instead of ClanLib, and I think part of that is
that the tutorials and documentation are very poor right
now. I think enhancing the documentation and reading
through the code may be beneficial, and I think I could try
submitting a patch to clean some things up in the source...
I've looked at the source and it seems pretty rough; I'm
sure it could use some improvement from me. :)