Progress continues at a sluggish but steady pace. I add about 200 to 500 lines of code every week. This may seem on the low side, but do note that I am not doing anything with the interface, or how the game is represented, neither am I counting the debugging strings. Which means it's pure 200 to 500 lines of algorithms, game logic, binary compressors/encryptors, etc.
I also have around 60 pages of diagrams, specification, flow charts, and other stuff. I think I do more work on paper than on the electronic medium. I resolved, mostly, the issue with station generation by using cellular automata. More specifically, L-Systems, as I found out later, cause it turns out I reinvented the wheel. I have no pictures to show, it is only in pure data format. I am not satisfied with the result, but I do acknowledge that the system is still very basic, and handles only the floor and the hull, with a major caveat: It actually lays them down like you'd imagine a station is laid out. There's a magical logic to it, and it is quite mesmerizing to see how a bunch of 0 and 1s with some simple rules can make something so organized.
The combat system is still a work in progress. I was using Phoenix Command and Renegade Legion mechanics to try and get a feel for what kind of combat I want. I went a bit overboard and I actually coded the entire Phoenix Command advanced rules into the game to play around with it. I gotta say, the huge tables have been a pain in the rear, but the result is quite overwhelming. I look forward to designing my own combat system mechanics, in the next month.
I've recently switched from Eclipse to Visual Studio, and honestly, I am not happy with msvc. I have had a lot of problems with forward<> and initializer_list. I am just thankful that I did enough work on paper to avoid major issues, and ended up simply overloading functions.
Stay tuned.
EDIT: A bit more detail on the binary writing method I use right now. Since my designated playtester is a hardcore cheater who can't finish or start a game without cheating the hell out of it, my only option is to encrypt the binaries I am writing. I had to write the binaries in the first place, because the combat mechanics I was testing had a lot of tables and quite frankly, I don't want to see another 3D container in my code again, or write it by hand, so I wrote a short program that works like a front-end interface for the heavy lifting and writes out binary files.
When writing the binary, I take the element I am about to write, and perform this operation in pseudo code:
byte Element;
Element = Element bitshift left by (8 - log2(Element)) / 2;
Element = complement of Element;
These are bitwise operations. In layman's terms, what it does is, it basically takes a byte, and bitshifts it to the left by half of the power of 2 needed to raise it to it's current value, then it flips all the bits. The log2 basically finds the most significant bit. Consider the following:
A byte is like this:
128 64 32 16 8 4 2 1
_____________________
0 0 0 1 0 0 0 0
By using the log2 operation, we get the most significant bit, IE, it's position from the right. Log2(16) is 4. We divide this by 2, and bitshift the byte to the left by that amount. Our byte now becomes:
128 64 32 16 8 4 2 1
______________________
0 1 0 0 0 0 0 0
Next we flip the bits:
128 64 32 16 8 4 2 1
______________________
1 0 1 1 1 1 1 1
I commit it to a binary file, move on to the next byte and say 'Good luck hex-editing that'.
Don't get me wrong, it's a fairly simple encryption that I chose mostly because in unsigned ints, with 4 bytes, I can perform compression operations because most of the time, the other 3 bytes will all be set to the 1 position, and I can easily compress them. With the Compression and the Encryption, it becomes not worth the trouble to even try messing with it.
Finally, please note that I am self-taught, and follow the school of 'code to learn' not 'learn to code'. Which means most of the time I make this stuff up as I go along, and it applies to all the subjects my coding touches on, and reading technical manuals about it later. For this reason I never really learned anything about encryption or compression. Note my comment about reinventing the wheel when it comes to L-Systems. If you know cool, and simple, algorithms for encrypting binaries, please let me know, I have become very interested in the subject.
Cheers.