What I’ve been up to
Hi folks, this post is a follow-up to my last blog entry, which was about GLFW. As quickly as I fell in love with GLFW, just as quick my crush was over; I switched back to SDL. The reason: GLFW—a “portable” library—was giving me huge problems with, you guessed right, portability. I really liked GLFW, and I really tried, but it just didn’t work out. In the end, it only made me cry.
Portability is a strange phenomenon. Code that works perfectly on one platform, simply doesn’t work on another. This is especially true if you haven’t tested it and actually have seen it work with your own eyes. Unless you have actively engaged in the act of porting your software over, it is unlikely it will run 100% correctly. I am saying this because I just ported my (now SDL) game over to MacOS X and uncovered a really dumb bug: using an uninitialized variable, assuming it is zero. The code worked like a charm in Linux, but not on the Mac. Why the GNU C compiler didn’t see this problem is beyond me since it does complain in most cases, but hey, you can’t expect a free compiler to be bug free, either.
Anyway, I’m back with SDL and pulled a really neat trick; I wrapped it with some code to make it more GLFW-like! You see, I really liked GLFW’s structure, hiding the event loop, using callback functions, etcetera. So, now can live with a framework that handles real easily, and on top of that, I may replace the inner workings of the “SDK” wrapper with something else some day—maybe even the next version of GLFW—without having to overhaul all of the code.
IMHO, this surrogate blend of a library is actually even better than the real thing.
In the meantime, I also switched editor. The editor is a very personal kind of tool for the programmer. I was fairly happy with joe
in Linux, until the release came that has an annoying bug that SEGVs the editor when giving multiple files to edit on the command line. An editor that bombs out when you want to edit files, how great is that? Ah well. At least Joe gave away his Own Editor for free.
And then I found the Code::Blocks
editor (cool name, by the way). Although it’s kind of awkward to use a Windows program in a UNIX environment, I’m getting used to it. You read that right; Code::Blocks
may run natively in Linux, the portable WxWidgets library makes it look and feel like a Windows program, independently from whatever platform or OS you are running it on. WxWidgets extrapolates portability to the max. This means no X mouse clicks to copy text (argh!), use the Ctrl-C/Ctrl-V copy/paste combination (oh, the horror!).
This surrogate blend is not really better than the real thing, but you do get a nice IDE that handles a lot friendlier than make and gdb. Yeah, I know you all like gvim
… but for some reason I never got to like vi
enough to use it for anything larger than shell scripts. Code::Blocks
is a great alternative, but I do miss integration of man
pages and svn
or git
. These are available through plugins but I haven’t sorted out all that stuff yet.
Being used to just a tabbed terminal window, Code::Blocks
also suffers a bit from too much screen clutter like toolbars, panels, etcetera. It would be nice if you could press a magic key (the Windows key, perhaps …) to make the clutter disappear and actually have a normal editing window on your desktop. Elaborating on that idea, it would be great if the “full screen” view would actually make the editor full screen, rather than making the application full screen and keeping all toolbars and panels in view.
I should end by saying that Code::Blocks
is a great developers tool, even while it insists on linking standard C codes using the g++
command. (Somewhere out there, there must be a brilliant mind that can give a perfectly logical explanation for this. Naturally, I did not have g++
installed, since plain old C is my thing, but … sigh. As I said, I should end by saying … Code::Blocks
is a great developers tool).
On the Mac, there is of course Xcode. Xcode has the same kind of interface with panels all over and a relatively small editing window, but that doesn’t matter, you can’t get anything done in Xcode without having taken Apple’s developer course. I don’t know why, but while Xcode looks fantastic, it is immensely complex to build software with. When I write software on the Mac, I use make on the command line. And that is one sad fact.
I like to finish this post on a positive note. The good news is, my game is nearing completion. I had something playable already after three weekends, but you know how it goes, you keep adding and adding new stuff as you keep getting more and more ideas. Creativity spawns more creative ideas. Some programmers call it “being in the zone”. I’ve been there. It’s addictive. I want more. But I also really want this project to be done with, mostly so I can find peace and round off two other, smaller projects that I’ve been working on. When you are working on three projects at the same time, none of them get finished any time soon.
So when it’s done, I can catch my breath … and start off writing code for a really cool idea that I’ve been having lately …