Hey everyone and welcome to our February Space Crusade progress report. This month I made a bunch of progress, mainly from the way in which I was conducting how I was working on the game. I also went crazy on the Dev VLog and made something 20 hours long (kid you not, even though it is April Fool's :P ).
I am not going to be able to upload every video from the DV at once so it will come in waves. I did five parts last night and I will do five more parts on Wednesday and Saturday. The last five will be uploaded next Wednesday. So if you want to watch the whole thing you will need to check back every few days.
Anyway onto the massive wall of text:
This was the second area I worked on and thus it was not completely finished as I did with the debug/data/messaging systems however a ton of stuff did get done. I started by rewriting the battle loop so that its major focus is on team based or single based battles. The various battle types are then broken down from there.
I added a new vector called battleParticipants where an attack order is determined via the ships movement initiative and I also added several variables to help deal with the processing of this vector. To further the functionality of this vector a new mini-class has been added called bParticipants where the name of the captain and the mInit of the ship are stored for easy reference and sorting.
Added a switch for the player section of the battle loop and started to flesh out the menu options. In particular the firing solutions menu option. What this is, is a menu where you can select how your weapons will fire when you engage the enemy. Some of the options require extra, out of battle, setup in order to function. The firing solutions include player created weapon spreads, firing weapon systems in a specific order or only firing one weapons system, and firing a specific weapon.
I then added in new bools to deal with the type of attack that was being carried out in accordance with the new attack types listed above. These bools are sent to the Damage class and used for determining the weapons firing order as well as a variable named wtype to track and pass weapon types as needed.
Damage was previously named DamageType. I renamed it to better reflect its actual purpose and what it will now be used for. It was going to be too complicated combining the outputs from here with the damage functions in battleProc so I moved it all over to this class.
I added two new functions, bPAttack and bHAttack. These functions deal with all of the damage processing for when an entity attacks and tracks various things like if a ship has been disabled. I also added two more functions, setupWQueue and cleanWQueue to facilitate weapon firing orders and then cleaning out the related vectors when finished.
Since we are dealing with many stages of damage several damage variables needed to be created. Thus is how these following variables came to be: vDamage, fDamage, mDamage, tSDamage, and sDamage. vDamage stands for vanilla damage or pure damage from the weapon attacks before anything else is added. fDamage is final damage, the total damage after all bonuses have been applied. mDamage stands for modified damage for storing the vanilla damage with bonuses from dropped shields or special attributes. sDamage will hold the secondary damage caused by weapons that inflict damage over time. tSDamage stores the total secondary damage if multiple effects are in place at the same time.
The following variables were also added: dLow and dHigh to track damage ranges, nSDamage/nADamage/nHDamage for dealing with nanite damage, wdtype to track damage types, and sDNTurns/sDNANTurns defines were added to give the number of turns for which napalm and nanite secondary damage is applied.
Added the function processWQueue to iterate through the vector and pull out the information required by the class to compute damage values. ProcessSDamage and processSecDamage were included to deal with processing special and secondary damage values.
I also added the functions getSDNTurns and getSDNANTurns to obtain the number of turns to apply the damage from these weapon types for. In addition to this I started to recode the pAttack function to account for all of these changes.
Not much was changed here but I did remove the periods from the weapon/ship descriptions so that the output looks cleaner and the internal matrix looks cleaner as well. I also found that some of the get functions were improperly connected to the matrix and were pulling the wrong information. I tracked down the problem areas and went about the arduous task of fixing them.
This classes was added due to the change in methodology behind the programming for this and future update cycles. I wanted to create a system where I could log any bugs I found in the code as I was progressing through each system into a text file that I could review later. This will eventually turn into a logging system for the game when we reach the open alpha stage of development.
This is another mini-class added to accomplish a singular task, the creation of the weapon spread system. This class is used for instancing elements of several vectors so that data about the hardpoints of a ship can be stored within and easily accessed for sorting and searching.
This also adds a layer of complexity because hard points now sit between the ship and weapons class. Weapons are "loaded" into the hardpoint elements in the vector and then accessed through the ship class.
Each weapon type has its own subclass based off of this super class.
Added new function to tell if a hostile is actually in battle, which is needed for the battleLoop.
Here is another are that had massive progress. I fixed a bug with station market menu 3 where there was no way to capture invalid user input which would have lead to crashes is the worst case and incorrect behavior in the best case scenarios. I also added several new messages to the messageDB.
Added new functions sWSSelection,sLWSelection, sMWSelection, sRWSelection, sHWSelection, sCWSpread, and sOWSpread. All are related to functions required by weapon spread system and added new member variables totalWeapons, laser, missile, rail, heavy, and type also for dealing with weapon selection.
Added new functions bCSpread, bCWSystem, and bCWeapon for dealing with the various weapon firing solutions implemented elsewhere in addition to the sCWSystems function for dealing with the same thing from from the Ship class side.
I changed two bools to better reflect the way bools are supposed to be formatted by changing valid and mContinue to bValid and bContinue.
Modified pAttack function for new focus shift of damage and battle to Damage and battleProc.
Changed weapon hardpoint arrays into vectors so that they can be filled and emptied dynamically, no longer needing to worry about tracking the size of various hardpoint values from the shipDB. In addition I also added in eight weapon spread vectors which the player can forumlate their own weapon combination strategies.
Renamed several bools to better reflect the naming structure of boolean variables and added bContinue bool variable for weapon spread creation. Several counters were also added for weapon spread creation processing.
Added two new functions, cWSpread and getCWSpread for dealing with the weapon spread system. Added new variables to deal with weapon spread system and player choices in addition to a storage vector for the spread system. Added several new functions: setCWSpread, setCWeapon, setCWSystem, getCWeapon, getCWSystem, getLWeapons, getMWeapons, getRWeapons, and getHWeapons.
Added a few more variables to deal with weapon selection and I removed get/set CWeapon and get/set cWSystem as these were no longer needed as a different function was put into place for both solutions. Two new functions were added to get vector sizes: getSSize and getWVSize and then added an additional two vectors for holding the weapon order for the other firing types.
Next I added a placeholder variable to hold hardpoint classes for retuning them to other classes as needed and added the clearWVector function to clear sWVector before it is used. Then I also added in several more functions to return weapon types for specific slot sof the hardpoint vector.
I added new functions to each weapon sub class so that they can return pointers to the specific instances of their classes for use in other areas of the game.
SC Developer's VLog Series #4
As you can see that really is a wall of text. I will embed the first Dev VLog video below, the rest can be found on our YouTube channel.
That's all for this update, hoping to replicate the amount of progress made in the April development cycle. If I can I may just be able to get the pre-alpha version done by later this year. Thanks for following the project and I will see you again in early June for our next update.