Welcome one and all to our June 2013 update. We have a lot to go over but first I want to mention that the change log has been completely reworked for better readability. So let's get into the changes that I made during June.
This one seems to have had the most work done on it this time around. I started the process of recoding the processSDamage function because there were several problems with it. First specific special damage can only be applied to one or two layers of health (IE piercing which only applies to Armor or Hull or both) and that was not reflected in the code. While this did increase the code for these areas significantly it was the only option to get it working as intended. I also added in some efficiency code that will short circuit the health checking if any required stage is at zero points so that the checks are not undertaken to save cpu cycles.
Special damage almost always will do direct damage now and will not be included within the fDamage (final damage) output to the Entity class, this also applies to turn-based secondary damages. Which leads to the second reason why this was required, some changed to damage processing during June necessitated the change.
Turn based damage has been moved to the Ship class but the damage is obtained through functions within Damage to be applied. I have also moved takeDamage, renamed to processDamage, from Entity and placed it in Damage instead since this is logically where any damage processing should be carried out while the damage is then applied using the applyXDamage functions located within Entity.
I removed a few unneeded variables and any and all references to them. I also removed any and all inter-class variable passes because they are not needed since the variables exist inside of the class *facepalm*
processWQueue has been changed so that instead of directly adding to vDamage (vanilla damage) and then passing that to processSDamage the randomized damage is first set to sDamage.
Removed and replaced deprecated code for napalm and nanite turn based damage for code that would work with the way the system is now setup.
I had to then fix processDamage as I had forgotten to change the variable references from when it had belonged to Entity.
I had to change how mDamage was applied. mDamage now stores the modified damage created by the special effects of certain special damage types. mDamage is used to add that extra direct damage without having to complete complex computations with sDamage to achieve what two lines of code can using this method.
I am also in the process of walking back changed that I made to the if/then statements in processSDamage where I stupidly changed and/or's (&&/||) into bitwise and/or's (&/|) which do not work the same way, another facepalm for me.
This class is brand new and it was created because we are now fully on SQLite as a database system instead of using a flat file data system. This also means unlimited modding possibilities for new ships, weapons, missions, any anything else that I throw into the database like messages.
This change was made for several reasons. I was tired of working with what I was using, the matrix, it was getting too unmanageable and there were many records that were missing at least one field from it causing issues for the data for that particular item. With everything in SQLite it is not much easier to determine if anything is missing and to keep that from happening again. The second reason is because it is so much easier to work with an SQL database since you can add many items simultaneously and can do real time checking for issues because the query execution will fail on missing fields or missing commas/apostrophes. The last reason is because I plan to make this game completely moddable and mod friendly and some form of SQL is really the only way to do that.
I created databases for all of the info and migrated most of the information from Data System to those and removed it from there but there are still something that the Data System is needed for but its overall function will change drastically as time goes on.
Removed the shipDB, weaponDB, missionDB, and pNames arrays/matrices as these are now stored in an external SQLite database. Added new function to get pNames array from the class but this may now have to change due to the external database.
While I was working on getting the data into the database I found a crapton of errors with the data from missing ship/weapon classes to missing resource fields. The data was a mess and I spent a good twelve hours fixing it over the course of a few days. I also fixed 25 items in the ship and weapon data that would have caused crashes, bugs, or other issues.
Ship armor, hull, and shields are now represented in the database as floats.
As mentioned earlier takeDamage has been removed from the class and moved to Damage.
Added several new functions that deal with planet generation, added a new vector to hold generated planets, and added many new variables for the process. I then added in the code for generated planets and decided to test it on its own which was smart as it was infested with bugs; I had to pull out the maximum strength Raid to deal with it.
Move several functions dealing with setting planet data to the end of generatePlanets because it does not need to be used after each section; only once. Saves some code space.
Removed the mesDB from this class as it now exists in the external database.
Added new new variables dealing with resources, production of food and water, consumption of food and water, as well as variables to hold the supply of food and water. This is part of the expansion of planetary management to increase the depth of the management system with more data. I also changed pPop (planet population) to a long long int for the purposes of the SQLite database because it cannot store really large values as floats. I also changed all instances of pPop in the code to account for the type change.
Added a new function to this class so that a randomized float could be returned for planet generation if/then statements.
Added many new functions to deal with turn based damage and to interact with the new class that deals with turn based damage. Created a new vector to hold tDamage objects for turn based damage. I then added in the code for the functions to get and pass on turn based damage information and to also remove vector elements that had reached zero turns left.
Added this class to deal with turn based damage. It will store the damage, the number of turns to apply it for, and then the damage type. All of this data will be harvested from the Ship vector by Damage and used to calculated and send the damage to the correct turn based type so that it can be applied.
So as you can see there was a lot done. I am hoping to expand on this work during October. Now I mentioned that there was a new media component in the summary. This new component is music tests. I recently pruchase Z3ta+ 2 on Steam and have been messing around with it ever since. I started thinking about the full version of SC and then decided that I would start working on testing out different music styles for various elements of the game. So with each update I will also post, in addition to the Dev Log, a video that contains several music tracks created for various types of music tests. These tests in no way represent what type or level of music may be present in the game they are just to give you an idea of the direction I am aiming for sonically for the game.
Here is the music video as well as the dev vlog:
Here is another audio track I uploaded a few weeks ago:
Finally I have another big announcement. I have decided that I will be creating the full version of the game on the UDK, most likely UDK4. I am going to start saving up proceeds from my YouTube channel to cover the cost of a license for UDK and then start digging around in the coding to see what it is like under the hood and what I will need to do.
Well, there you have our really long update. I am hoping to have a longer update in December but we shall see. Thanks for following the project!