Monday, October 26, 2015

Dev Diary Week 7 - BattleTech Design Software

Wow, 7 weeks already!  Well some weeks I'm much more productive than others.  This one I lost a couple days because I didn't want to code at night while we were getting storms, as our power is pretty flaky and I don't have enough UPS's for all my computers.  Also had some work jump in there, and my wife was sick.  Still though, I got quite a bit done.

In short, I am now at the point I need to total up the weight of a unit, then its cost, then years/availability, and finally BV.  Still some little tweaks to make here and there, but darned close to a somewhat usable product.  Record sheets will come later, as they are kinda easy in a way but very time consuming.  I have already done most of them before though, and may get lazy and fall back on those methods which worked fairly well instead of reinventing the wheel.

I won't bore you with the details, as I'm sure if I did some of you would have fallen asleep already, so I'll show a current work in progress screenshot of the unit design page:
Still a few interface changes yet to take place, but getting there!


I figure another month or so until I get all the design bugs worked out, maybe sooner, kinda depends on how many nights I have time, am not sleepy, and am in the mood to code.

Monday, October 19, 2015

Dev Diary Week 6 - BattleTech Design Software

Howdy!

More great progress this week.  All the major database changes have been done, and code is coming along very smoothly.  I've been able to implement features that in my mind would have taken days, sometimes in minutes.  There have been a few hiccups, as there will always be, but so far nothing game changing or too distracting from the end goal.

I go into a lot more daily details on the facebook thread, which I update daily, but I'll give the compressed version here.  Those users will have access to the alpha and beta when they are released as well.

Essentially right now I can do pretty much everything to design a unit.  What I am working on now is the weight, cost, BV, years, and availability of said units.  This shouldn't take too long, and I've done it before on my encyclopedia site, but I am doing it all from scratch to incorporate various lessons learned since the encyclopedia.

Once those calculations are done, I'll run it against my 6000+ unit database and work through the bugs.

After that is'll be onto record sheets and other feature implementation.

So, making great progress, and I can see the light at the end of the tunnel already.

Here is a current screenshot, though pretty much every aspect about the interface is subject to change:

Feel free to recommend any features you'd like to see, and I'll add them to my "todo" list of features (assuming I haven't thought of them already!.

Monday, October 12, 2015

Dev Diary Week 5 - BattleTech Design Software

Quick BTE Note:  I removed all fluff entries (deployment, variants, overview, etc) from all units, even though not asked, to "play nice" with the BT community.  I now have *NO* information on my site that cannot be found on other more acceptable places like Sarna.net and Megamek.Info.  This shouldn't affect anything negatively aside from the fluff being gone, and many didn't have it yet anyway.



Howdy folks!  This last month has been mostly me importing all the Interstellar Operations Beta data.  There was a LOT of issues, and it is a Beta so I'll have to do this all over again when it is released.  While the issues were plentiful, luckily none will prevent me from moving forward with development.  In the end I'll have to assume a lot of things and there could be buggy units pop up for years to come until I get all my questions answered and Catalyst Game Labs fixes all their errors, inconsistencies, and missing data.

Here is the current software functionality:

  • Tech base selection (Inner Sphere, Clan, or Mixed).
  • General class selection (mech, industrial mech, protomech, SV, BA, JS, WS, DS, etc.  All but hand-held weapons, conventional infantry, maglev's, rails, and roads work right now).
  • Mobility type (hover, wheeled, fixed-wing, aerodyne, etc) selection for those units.
  • Weight class (assault, heavy, light, etc) and tonnage (a number in that range) for those units.


So not a huge amount of coding progress, but I only really started coding today ;)

Issues though:
#1.  Medium/Large Support vehicles are indicated as having .5 ton tonnage increments.  While this is fine technically and it currently works, it means when you select a 9 hex naval vehicle that goes from 30,000.5 to 100,000 tons, I have to populate a drop down with like 140,000 items!  This takes 80 seconds on my machine, which is pretty beefy (all others take about .05 seconds, except small support vehicles with their 1kg weight increments that takes .3 seconds, but is acceptable today).  So I am going to stray from canon a wee bit.  With large naval/submarine support vehicles that are over 500 tons, I am going to change the increment from 0.5 to 5 tons and 25 tons for the 30,000+ tons.  This will basically fix that issue. Eventually I will re-implement the 0.5 ton increments, or add in a way to just put in any number you want.  For now however I'm removing it for performance reasons.

#2.  I will not be using "primitive" as a tech base.  Just clan, inner sphere, both, and mixed.  Later I'll include "3rd Generation" as a possibility to support the April Fools product that had that in there (a sign of things to come?).  This is mostly because there aren't really primitive weapons, just prototype.  So primitive just applies to chassis.  The way I'm doing jumpships for example I have 6 rows, one for each tonnage increment that results in differing fuel points per ton and burn rates.  I now have 4 MORE sets where I set the weight class to things like "Primitive (Terran Hegemony)" where you can select a primitive chassis, which can be differing tonnages, instead of creating entirely new everything to support primitive.  So, you WILL be able to make 100% canon primitive stuff, but it won't be a new tech base (clan/IS already confuse stuff enough!).

And a new screenshot, which I'll try to include in each update, though they won't be very pretty for a while :)


(yes, according to IOBeta, the Terran Hegemony had 1.8M ton jumpships in 2400!)




I also have some functionality I am working on that'll show various other drop down boxes popup depending on the unit.  A mech has a required cockpit, engine, musculature, and actuator types for example so it'll see 4 more drop downs popup.  The gyro may popup if you select all but 1 cockpit type.  Many units don't have many other options like that, so the interface will stay cleaner.
I have tested all of these, and all work except the conventional infantry (they are kinda different), hand-held weapons (will need some work), maglev/rails/roads (not sure if these will even stay in, they are not really units but perhaps I'll treat them as addons to units).  I should have all errors removed from those in the next development session.

My goal is by the next update to have all the additional popups working which will let you basically design a unit up to the point of adding equipment.  I won't have things like tonnage totals, costs, BV, availability, etc, etc, but all the other stuff should be functional, and those sums/values are extremely easy to implement.

If I am very productive this week, which I don't suspect as the wife will have been out of town for 4 days and will want some quality time, I hope to actually implement the equipment selection as well.  After that I'll start running through all canon units validating designs and fixing all the little bugs that will come up.  That'll take me at least another week or two, maybe even a month, as I'll constantly find little things I gotta go fix in code, my data, or even have to restructure in my data to make it work in the best possible way.

Anyway, a lot more to come, and I think progress will be very quick if I can stay focused!


Again, feel free to request access to daily updates on my facebook site which I have been pretty good about updating daily.


Ok, next topic.  This week I used the 3028 battle on Crossing between the Wolf's Dragoons against 4 Galedon Regulars regiments (after losing nearly half their force against Ryuken a few months earlier, and fighting those same 4 Galedon regiments on 3 planets after that!) as inspiration for a scenario here in Dallas.  We used a mech to represent a company, and so the Galedon Regulars and DEST commando's had a total of 41 3025 old tech mechs.  The "Dragoons", in this case the "Iron Phoenix Legion" which is what our group calls themselves, had the dozen or so mechs in defense in a caldera.  It played out pretty well, and I think folks had fun, but it ate through some of my code time this week setting it up.

ANYWAY, to my point, I didn't want 41 pieces of paper to track mechs, so I figured out a way to put 4 mechs on a single page of paper. It worked pretty well in the game, and when taking a dozen SRM2 hits it really sped things up.  I tweaked after and made a little excel file if you need to have a bunch of simple mechs in a game and don't want all the record sheets.  Some stuff is missing (heat chart mostly) but 4 mechs on a page seemed like a fair tradeoff :)  Here is the link, hope it proves useful or inspires you in some way!


Monday, October 5, 2015

Dev Diary Week 4 - BattleTech Design Software

Super short version:  Data update will be done this week, back to coding!

Wow, nearly a month already!  Still on target though, and updating daily!

I have now successfully imported all the new data from the IO Beta into my data.  This was very painful and time consuming as every single item needed the years of introduction rechecked (this kinda replaced rules levels in a way), the availability updated, and in many cases various other stats changed.  I know IO Beta is just a beta, and based on the absolutely mind blowing number of errors (no judgement, its a beta) I've encountered with it I know I'll have to basically redo a few weeks worth of work whenever it released.  However, in doing this it gained me a bit closer to what CGL has in mind for the future of Battletech, and in that way my designer systems will have less growth necessary when they take that next step.

On top of this, I had never implemented ammunition in my system in any way.  I didn't really need to before, as nothing really cares about costs/BV based on ammo.  However, it had to be done, so now I have all the ammo types for all the weapons done.

I am now at 3,885 unique weapons, equipment, items, and so forth that can be added to units.

I have 814 total unique chassis implemented.

I have 6,562 unique *CANON* units (6302 with images, a third with 2+ of them, and many with megamek icons) from the battletech universe in my database now, many with images/fluff/MM Icons (but many more still need those added).  This compares very closely with the MUL, and the units I'm missing are those that simply aren't published yet.

I still have a bit of cleanup left on the data to make things consistent, as it took me a few tries before I got the way I wanted to store some data down.  However, this should be done in the next couple days.

After I finish the data cleanup, it is back to the fun stuff, writing the designer!  Since my project is data driven, instead of code driven, progress will go VERY fast until I get to the various ways of presenting data to the user.  Things like record sheets, TRO views, and so forth will take time to make look pretty as they are all time consuming.  However, me being able to design a unit of various types I could see working within a few weeks of dev time.  I doubt I'll release an alpha until a couple months down the road though, and then only to the folks reading my facebook daily update page here.

I had a friend tell me to watermark any record sheets, very faintly, to prove that my app created them so I know when it gets used.  Not sure I'll do that, maybe, but I probably at the least put some goofy pixel at least somewhere so I always know sheets were generated with my software with a quick glance at the sheet.