Steve Chandler’s 100 Ways to Motivate Yourself mentions definitely planned work as being both motivating and productive. The idea, which has been repeated by many people, is that one hour of planning saves three hours of work. Also, once you have a definite plan, you can’t help but get motivated to actually start doing things according to that plan.
I thought that today would be a good development day. I had asked for the day off from work to attend a seminar today, met with a friend for lunch, and came home. Unfortunately, I took a nap for a few hours. Not a good start. But at one point, lying half-awake, I started to think about making the game. While the seminar was interesting, I did take some time while there to work on some designs for the classes I will need. When I thought about those classes, I thought about how much I clarified my future coding just by taking some time to write down ideas. The idea of doing even more design work got me motivated to wake up completely and get to work.
Right away, I hit my first challenge. I haven’t decided how the graphics or other data would be licensed yet, but the code itself will be licensed under the GPL. I didn’t need to think about it until I started to write some new code. While I was originally modifying my code from my GiD, I decided to try to make use of Joost Ronkes Agerbeek’s code from his post A Closer Look At The Game Engine. I was only working on main.cpp, and I made some modifications to the code. According to the ZLib license, I need to make it clear that the altered source wasn’t originally made by myself. I couldn’t remove the ZLib license either. Could I still use the GPL for my project if I used ZLib licensed code? Will I really have to rewrite main.cpp, which isn’t more than a few lines in the first place?
I googled “ZLib GPL compliant” and found the Free Software Foundation’s Various Licenses and Comments about Them. Regarding the ZLib license: “This is a free software license, and compatible with the GPL.”
Oh. So while my project can be under the GPL, portions of it can be licensed under other free licenses. I added some comments to main.cpp to specify where the source came from and the fact that I modified it. I also provided a listing of the ZLib license and maintained Joost Ronkes Agerbeek’s copyright noticed. I am new to mixing code under different yet compatible licenses.
All this before doing any “real” coding work. I could only imagine how difficult it is to work on a much larger project that might mix tens of hundreds of licenses. It is no wonder people have been complaining about license proliferation! Still, it left me wondering what I can do with my own code. I would like to clean up my existing engine. Would a single line change still need to be credited to Joost? My main.cpp is obviously just a modified version of his Main.cpp, but what about when I add functions to and remove members from my GameEngine class? Is that copying or is that reimplementation? I sent an email to the Linux Game Development Center’s mailing list to ask how other people mix code legally. After getting a quick response, I was quickly reassured that I didn’t have to keep detailed comments regarding which code belongs with which license.
Now to the real work: I spent a great deal of time just reworking my existing state machine engine to make it cleaner and work much more like Joost’s. Of course, I was trying to make my own project work with the Kyra Sprite Engine, so I had to make some modifications. In the end, I spent quite some time just trying to get the project to build cleanly. It doesn’t do anything other than create a window and quickly seg fault, but that isn’t bad for just a few minutes of coding.
But it is bad for the week. I didn’t spend much more time on the project. Besides writing down some ideas about the design, I really only spent that one session actually programming. But perhaps it isn’t a complete failure. One hour of planning saves three hours of work, so maybe this first week might make the rest of the month much more productive. At the very least it should now be obvious that I need to dedicate more time in a week to working on the project. B-)