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.

Monday, September 28, 2015

Dev Diary Week 3 - BattleTech Design Software

Not much progress this week code wise, but a lot when it came to implementing everything in the Interstellar Operations Beta, and a lot of cleaning up of my data to support all the new features and systems in IOBeta.  

I am already running into the headaches I knew I'd get without the ability to get questions to rules answered.  Some of the unanswered questions I have:

- Can ProtoMech/Battle Armor LRM/SRM's use special ammunition?
- Do the prototype and clan improved SRM/LRMs have torpedo versions?
- Is requiring "fusion", like a Heavy Gauss Rifle, the same as requiring "fission"?
- Do sub-capital weapons require power amps?
- Can sub-capital weapons on a large support vehicle utilize a targeting computer?
- Are all the various kinds of ATOW ordnance available to the Clans?
- The Mechwarrior combat suit has a common date before its prototype date.
- The Mechwarrior cooling suit (CL and IS) have a prototype date before its introduction.
- Is the Artemis IV Prototype really 1 slot on a support vehicle?
- A lot of the hardpoint weapons (like bomb's) don't have weights.
- Many capital weapons with ammo don't indicate if the BV is per shot, or per ton.
- Since a Long Tom arty can fit on a superheavy mech, can it split locations and be on one?
- Was ATM ER Ammo introduced by CSA, or CCY?
- How much damage do iATM improved inferno rounds do in an explosion, and are they subject to inferno heat ammo explosion avoidance?

Another huge issue, kinda related to the first item above, is ammunition.  Typically I would track ammunition like other design software had.  That would be a year of availability, a cost mod, a BV mod, and maybe a damage mod.  The thing is that simply isn't sufficient.  We now have weapons that have a different effect for each ammo type, different availability for ammo types, and all sorts of unique situations where trying to track the ammo so "lightly" will simply lead to limitations and issues in the future.

So, I have to track each ammo, for each weapon class separately.  Ammo can change any parameter of the weapon itself, from rate of fire, to ranges, to damage, costs, BV, even the battleforce abilities.  This allows complete versatility in the future to bend to whatever possible ammo CGL thinks up for its 3rd Generation Tech.

Right now, I have 16 LRM systems (4 classes, each of Inner Sphere, Clan, Clan Improved, and Prototype), 12 SRM systems (3 classes, each same as LRM), 4 MML's (4 classes).  I have 23 LRM and 17 SRM ammo types (11 and 7 respectively are IS only).  On top of that, I have 30 more types of LRM classes for ProtoMechs and BA, and 18 more for SRM.  Confusing right?  That can be up to 2740 types of ammunition combinations.  If the PM/BA SRM/LRM's don't get special ammo, that reduces it in half or so, but still, daunting eh?

And yes, it has to be done that way in order to be versatile enough for the future, and for the data to be used in other sources, like a real time megamek game.

Another thing I have to do that most design software never did was actually look at all the data.  Many games may just say "C" for cluster, but I can't do that.  I also have to track the # of clusters, the damage each, and the damage grouping.  I can't track artillery as a string like "20/10", but I have to track each of those as a number.  I can't take those string like shortcuts and let players interpret them.  I *have* to be able to have a computer read every single value, and that means no strings.

A potential huge issue is all the rumors that BV2 will be replaced with something else.  I may have to revisit every single piece of equipment to update some value whenever that is adopted.  While a pain sure, it shouldn't prevent me from quick adoption of whatever it may be.

CGL needs a MUL for equipment.  I guess I could make one, but I gotta finish this first :D

My goal this week is to finish the data update.  Hopefully by next weekend I'll be coding again.  What is really funny is even though I'm not coding, it is constantly on my mind.  As of right now, the code itself seems trivial (though time consuming) in comparison to getting all the data done.  The application is just a skeleton and will just read in all that data to determine how it functions.  The program will be data driven, making for easy updates and a long lifespan.

Thank you for all the support.  If anybody wants to help I won't accept money, but your time could be useful.  Some of the things I'll need are:
- Somebody to translate everything to German, or any other language.  This will be later once the application is in beta.  I simply can't do this, or would have to rely on flaky online translators.
- Somebody to go through all the record sheets, get the best resolution PNG of an empty version, and then plot the X/Y coordinate of everywhere data can be inputted as well as the font size, and maximum length/height.  Also the coordinates of a region where the armor dots will go.  This takes me a long time to do, as there are a lot of record sheets, and it would help me focus on the coding.  These will be user configurable, so if they wanted to mod their record sheets they could.
- Somebody who can go post on the forums in the questions area all the questions I have.  I'll email them a question, they can send me the link for it so I can keep track.

And finally, for the heck of it:
Whoever can get me reinstated on the official forums (so I can ask my own questions and pimp my product), I'll send, at ZERO cost, a full company of a dozen unassembled, unseen, old school lead, Battledroids Marauders.  If you can get CGL to officially sanction my designer, I'll send you 2 companies :D

Monday, September 21, 2015

Dev Diary Week 2 - BattleTech Design Software

Over the last week production has been slow due to all sorts of things (vendor, cars, parties, etc) but I have cleaned up most of my equipment data, and have now gone through and inputted quite a bit of the stuff from IO Beta, though just the 2 big sets of tables I found 40 errors on them, and some inconsistencies with formation/combat unit/etc sizes.  However, its a beta, so I won't be critical of it.

This isn't the kind of work that lets me show you much, but it does need to be done.  I have to make sure I have full support for 4 availability ratings, not 3, as well as a lot more information on years and factions equipment is available and what its production state is.  A couple changes that if I hard-coded things, would have been a serious pain to fix.

So over the next week I plan on finishing up the data import from IO Beta (about 12-16 hours I think).  At that point I'll tweak my data once more (another 8 hours) and be ready to jump back into the code.

The main portion of the code I'll be working on first is ensuring I can design out units down to the equipment level.  This means tonnage, speeds, engine/gyro/cockpit/etc types, and even armor type.  All of these should fall pretty fast once I start coding on them, so that is good.  This could take from a few days to a few weeks, depending on how much I finish before moving onto the next item.  For example, I may not worry about calculating cost or BV right now (isn't there a new BV anyway?) so may just skip those.  

Equipment critical allocation is a big step.  This only applies to mechs/industrialmechs, and is the process of placing criticals in particular locations.  I know people like dragging stuff around, and moving slots to particular numbers, but all 6 or 12 locations have the *exact* same chance to hit, so the actual # is 100% irrelevant.  So, I was thinking when I get to that part just skipping the allocation completely.  Actuators would go first, then equipment that can take a critical, and finally things like armor/structure that are "reroll on hit".  I know this may upset some folks, but it really shouldn't.  I may do something later to let you rearrange them, but for right now that interface is pretty time consuming for me to write, and it'll be skipped the first time around I think.  If you think location matters, read the rules again, when you roll 1 dice for upper/lower, and another for 1-6, and you get a reroll or something that has already been hit, you reroll BOTH dice, not just one.  I know numerous people who have made that mistake (and that WOULD affect locations of stuff, dramatically).  

Anyway, just a quick update to know things are progressing.  If I had to guess right now, which is a wild guess, I'd say I have about 2-4 months before having something you can do designs with.  There are a LOT of variables in there, but mostly it just comes down to hours I have available (most of which are spent on this).

Monday, September 14, 2015

Dev Diary, Week 1 - BattleTech Design Software

I'll be doing these weekly updates to my development progress until I am completed.  If you want more detail, as in a *LOT* more detail, you can join my facebook group instead.  Whenever I go beta, those will be the guys that know about and get it first though.

If you want to help, I have already done all the hard stuff, and all that is left is coding.  Splitting coding to a team IMO reduces the quality of the code, so I'll be doing it all myself.  If you really want to help PM some moderators on the forums and have them reinstate me, not like they haven't done that before to perma-banned folks that were far worse than I was.  However, at some point perhaps I'd be better off just forgetting about it like most of my fellow BT players have with the "I don't use the forums because of the politics" comments.

So, week 1, a lot of progress, but not nearly as much as I had hoped.  I had a family drama night, got tied up another night (literally, haha), and I have vendors here until about 6 or so working on my house siding, but I still got a few good nights of coding in there!  I also put together a few IWM LAM miniatures, which are a freaking pain (hands separate, REALLY?!?!?!), and got a few dozen more micro-armor pieces assembled in preparation for me learning to airbrush in the next couple weeks (which yes, will cut back code time a bit).

I'll keep these updates much less verbose than my daily's, so here goes:


  • Wrote initial code to parse the classes.  I can now start up the app, choose a tech base (clan, IS, etc), chassis type (mech, proto, sv, cv, etc), a mobility type (quad, lam, hover, etc), a weight class (light, medium, etc), and a tonnage.  I also now properly parse structure, cockpits/control, engines, gyros, and armor.  None of these sum up weights or costs or anything, but that will come soon enough.  Still a couple minor bugs (an infantry platoon crashes it) but these are also easily fixed as I get to them.
  • Cleaned up my chassis data source.This is 177 unique values for 653 unique chassis (400k of data right now) that does things like determine the tonnage, structure points, what parts (arms, legs, turret, etc) a unit has, and various other things.  This is a critical first step to moving forward.
  • Cleaned up a large chunk of my equipment data source.  This file has 115 unique values (one of which that can be 20 or so other values) for 2232 pieces of equipment (9mb of data right now).
  • Added objects so I can load all the chassis, equipment, as well as my 6845 unique element types (45mb of data right now) upon startup.  It currently takes about 14 seconds at most to do all this, but it isn't optimized or multi-threaded yet and should be much faster upon release.
  • I created a feature list.  I'll post it at the bottom as I think that is important enough to post on the weekly update.  Please comment if I am missing something that should be there!
  • Created a method to dynamically populate an object from my tables.  This may not sound like much, but it went from a thousand or more lines of code to 3.  Plus, this allows the fans to create their own datasets to use quite easily, which I think most folks will like.

Currently planned feature list:

ABSOLUTE PRIORITY
- Designer for BattleMech/IndustrialMech
- Designer for ProtoMech
- Designer for Battle Armor
- Designer for Conventional Infantry
- Designer for Combat Vehicle (WiGE, VTOL, Hover, Wheeled, Hydrofoil, Naval, Submarine)
- Designer for Support Vehicle (WiGE, VTOL, Hover, Wheeled, Naval, Fixed-Wing, Rail, Airship)
- Designer for Aerospace Fighters and Conventional Fighters
- Designer for Small Craft
- Designer for Dropships
- Designer for Jumpships
- Designer for Warships
- Designer for Space Stations
- Designer for Buildings
- Designer for Mobile Structures
- Automatic Update support
- Output record sheets to PDF
- Output to Alpha Strike cards
- Load/Read all canon designs (including full search capabilities, including by weapons loadouts and owned miniature inventory)
- MUL integration
- Links to art, megamek icons, faction/unit logos, etc, all of which can be added to the record sheets
- Support for Strategic Battle Force and ACS
- Force tracker
- Designers can have limits by year, tech rating, technology type, rules level, faction availability, and allow for prototype equipment
- Support for canon and custom integral, with custom always having a note on them so it is obvious
- Pre-existing damage
- Support for atmospheric conditions and scale differences when creating record sheets
- Ability to input damage to units and track them, repair times are calculated.
- Support for quirks
- Support for ALL rules will be implemented, even stuff in various April Fools products (though obviously marked as non-cannon)
- Support for uploading designs to a centeral location, for others to download

HIGH PRIORITY
- Custom Equipment Types
- Output record sheets to PNG
- Ability to output a TRO format to PDF
- Ability to output a TRO like equipment rulset to PDF (this would include all errata)
- Random Force Generator, with support for RATs from all the books od a more dynamic system
- Random Star System Generator
- Random Scenario Generator
- Take a design, make changes, return the refit level, amount of time it takes, rolls, etc
- Export designs to XML
- Export designs to Text
- Multiple language support (this requires design changes in the app, but languages can be added easily after)
- Option for some of my special rules (mostly alpha strike, things like tracking how some units may only have 1-2 turns of ammo, repair costs, underwater attacks, rocket launchers as an abiliity, and so forth)
- Option to use my own "above alpha strike" system. Essentially AS is now at a 4:1 scale for elements:maneuver units, I'll add support for 12:1, 36:1, and 108:1 (plus clan/wob/CS equivalents) to better support strategic games (ACS is completely broke IMO)

MEDIUM PRIORITY
- Designer for Base Layouts
- Illegal Designs
- Output Unit data to Megamek MTF
- Integrated combat simulator (real time battletech with megamek style graphics)
- Support for special pilot abilities
- Inner sphere hex map with factories and planet data
- Designer for A Time of War characters (LOTS of data entry needed, could be a late feature)
- Dynamic record sheets. Basically a record sheet you bring up and can mark damage/crits to instead of using paper.
- Unit availability list. Essentially each element gets a popularity, from 1 to 100, by era, and then random tables can be created dynamically from that.
- Box of Death

LOW PRIORITY
- Random unit generator (not sure how well I could do this)
- warchest campaign support
- New unit acquisition
- Support for custom rankings on all units. Think Mech A is the best ever? Give it 10/10, think Mech C is the worst? Give it 1/1. All the users upload that data and when you view mechs, you can also sort by player rank.

VERY LOW PRIORITY
- QR Codes on Record Sheets
- Random Map Generator
- Full inner sphere in flames game. I'll have to custom the rules, as published ones won't work at all.
- Export to HeavyMetal Pro (probably end up getting dropped as HMP doesn't support everything, and it may just be a PITA)
- Export to SSW (probably end up getting dropped as SSW doesn't support everything, and it may just be a PITA)
- My own proprietary system to map out entire planets, accurate to the hex, for only a few mb of space.
- Icon Generator (something to make unit icons from Strategic Ops)
- Tables (basically a page to select any of the tables from the game, and press a button to roll on them)
- Custom record sheet designs (this may just happen anyway, depending on how I write the code. The old BTE site EASILY allowed for this, so I'll try to keep that process)
- Color themed record sheets (faction colors?)
- Ability to recolor black and white graphics on images (I did this on the BTE site, I could specify a few colors and the drawings would be recolored, might implement that same thing)
- Integral combat map. Basically draw the game map in the app, and you can use it to track things like doubleblind, building damage, terrain damage, fires, smoke, illum, etc
- Web based version of the product, or perhaps just one published for folks to use on non-windows devices.

CURRENT ISSUES
- Many unit types have no alpha strike cards. I'll have to design these if CGL doesn't release one.
- Some units don't even have record sheet designs, so again I'll probably have to design these.
- PDF creation can be tricky, I want to find a fast way to do it without any 3rd party libraries, but may be forced to use them.
- I still have a lot of questions on rules and equipment that haven't been answered, these will often result in "bugs".  I'd ask on the forums but....