Saturday, March 24, 2012

Mid-Month Update

Since I've been happily unemployed the last month or so I've been able to dedicate a lot more time to some pet projects (My wife and I were smart enough to ensure we could live off only the lowest salary, so no rush in that job search).

So here is what I've been working on, BT wise:

  • I started working on an intermediate version of BT, something between QS and BT.  Then, sitting there going over notes I made years ago on such a system, I said "wtf am I doing?  Computers are the future..." and dumped it.
  • I have been working on my own MUL for a while.  I went through every single product, wrote down every single unit and every product it was in (not just the latest).  I finished that a while back, and started adding in all the data needed to construct those units (so no fluffy stuff like capabilities or manufacturers).  It is now 34% complete (27 MAR update, 47%).  I am saving dropships, space stations, and warships for last since they have wacky weapon bays, and those represent about 4%.  I've finished all battle armor, aerospace fighters, conventional fighters, infantry platoons, and many conventional vehicles.  I've also done quite a few mechs, but as my percentage says, I still have 2/3rds to complete.  This is basically like the MUL, but it'll actually have details of what every mech has, and eventually you'll be able to select say 50 mechs, and print a TRO, that comes out just like the TROs printed by CGL.  I'm not 100% sure this will be available to everybody though, as I don't want to take away from CGL sales.  Perhaps they'll let me link to them so if you buy a PDF version of a product, you get a login.  Anyway this is a major focus.
  • I started going through to write a quick aerospace fighter game.  Real time, control a fighter and fight it out online against others.  There are 2 things that stalled this.  #1 was designing an interface, I made one up, but I think it looks like crap, see for yourself:
        The other thing that stalled it was the way I was coding it.  Basically any future thing like this I'll be doing in DirectX.  I currently have an engine that allows me to recreate a dynamic control (I completely redid the Dawn of War 2 interface in DX to test it) and have a large chunk of work done in a sprite editor. Most of the stuff on this page works (not the blinky lights or animations yet, and some other controls need some tweaks), but have a looksie:

      That is a Behemoth tank from MegaMek, with a separately skinned turret (I need to split the smaller turrets too, but oh well).  I'll need a lot of graphics like this in order to make a real time game, and I simply don't have the talent for graphics.  Volunteers feel free to apply :)  I need to finish this editor before I can move on to other parts of code, like networking, particles, and the landscape engine.  Also, this is a DIRECTX render of the tank, not some GDI thing, its actually a sprite rendering engine I wrote for DirectX in  However VB.NET support, and even C# without using XNA, is pretty scarce online with DX, so I am not real sure I can complete it with all the bells and whistles.
  • I worked a bit on a method to map out an entire planet using the smallest amount of drive space as possible.  I think I got it down to a reasonable size, but then I hit a major snag.  Basically I need a method of dynamic terrain generation for a world (right now I use Fractal Terrains), and dynamic terrain generation for 10km regions on that planet, with transitions between regions and some uniqueness.  Fractal world creators are all quite lacking IMO, and none produce very realistic results in many cases.  I started tinkering with the idea on "how to generate a world" with my poor math skills, but can't get any further because of those skills.  Basically, here is how to generate a world:
    • Create some polygons on a planet with fractally inspired lines (but still pretty linear).  Essentially these become your "plates". 
    • Determine how these plates interact.  Basically they can be grinding against each other, separating, or closing.
    • Plates pushing together form a mountain, pulling apart a ridge and valley, grinding a bit of both.
    • Then, based on the movement of the plates against each other, move them for millions of years.  As they move, determine wind (based on planet rotation rate, temperature, and axial tilt) erosion based on the soil type (stuff that was once an ocean erodes fast, rock up from the bottom doesn't) and also calculate rainfall and water erosion (and rivers/lakes).
    • Volcanoes typically form where plates are together, but could randomly form anywhere.  They can change terrain dramatically.
    • Add some random big meteor strikes, they make big holes
    • Depending on temperature, occasionally have some glaciers that simply move down from the top of map, eroding the soil like wind/water.
    • I think this would all work, but I'm too stupid to figure out how to code it :(
  • I am finding a LOT of errata going through books entering in units.  Obviously CGL needs some automation on designing/printing units.. I'd help them, but they don't ask :)
Thanks for reading and the comments (and private emails)!


  1. Have a look at this for some detailed idea of how to generate land masses:

    Or if you're just looking for a good way to generate land masses for a planet (simple and quick) try using cellular automata:

  2. Thanks, I've followed Amit's work (on the stanford site) for years. He helped me way back when eventually figure out hexagons the first time.

    His voroni based islands do look pretty good, though the algorithms are beyond me implementing them. I've made "enough" progress on planet maps to move forward. My initial project they aren't needed anyway, but will be required further down the road. Hopefully if I make it, others can help with that part.

    I've looked at cellular automata in the past and it never met any of my requirements, however with the plate techtonics idea I had that may be a method that could help me generate the initial plates. I'll have to tinker with it more, thanks for the info.

    All my time lately has been spent working on my MUL, which is now 60% completed. Its a very time consuming thing, and once finished I'll have a lot of bugs to work though, but it is a prerequisite for many of my other projects. It has taken me around 2 years to get as far as I am now, though in the last 2 weeks I've done 10x as much work in the last 2 years.