Dev Update: CPS Objectives [FULL DONE] + Factions' Death Tolerance

  • Colonization Phase System (CPS):
    • [New: DONE] added a root code to test if a CPS objective must monitoring the energetic changes, and make the respective calls to update the score(s). 
    • [New: DONE] added a root code to test if a CPS objective must monitoring the changes in the line of credit, and make the respective calls to update the score(s).
    • [New: DONE] added a root code to test if a CPS objective must monitoring the changes in the size of the population, and make the respective calls to update the score(s).
  • Colonization Phase System (CPS) / Objectives:
    • [WIP => DONE] Ensures the Survivability of the Population (ASURPOP): special initialization of the objective with its rules, calculations and specific data.
    • [NOT DEV => DONE] Be Energy Efficient (ENERGEFF): special initialization of the objective with its rules, calculations and specific data.
    • [NOT DEV => DONE] Keeps the Usage of Line of Credit at Lowest (KEEPLOC): special initialization of the objective with its rules, calculations and specific data.
    • [NOT DEV => DONE] Keeps Alive #Percent of the Population at End Of Year (KEEPALIVE): special initialization of the objective with its rules, calculations and specific data.
  • Colony Simulation Model (CSM) / Energy Update:
    • [New: DONE] each time the power grid of a colony is updated directly, the CSM calls the CPS to see if one of the 3 energy data is used by an existing CPS objective.
  • Factions:
    • [New: DONE] add a Death Tolerance data (usable at any time in the game) that can be useful for AI behavior and other game systems' rules.
  • Factions / Expeditions & Backstories:
    • [New: DONE] a data, Death Tolerance Modifier, is added to any backstory. This modifier indicates the tolerance in regard of accidental / health / crime death in the colony. It can be used for certain parts of the game, like certain CPS objectives.
  • Missions / Colonization:
    • [NOT DEV] fix the case when the colony isn't founded yet, and only one carried colonization vessel is selected for the mission. The trip time dosen't update and it can create a bug.
  • New Game Setup:
    • [New: DONE] the Socio-Political Matrix is now also initialized for non-player's factions.
  • Population:
    • [New: DONE] each time the population of a colony is modified and it is a sentient race / ethnic group, the code call the CPS to see if the change in the population is used by a current CPS objective.
  • Production System / Energy Equilibrium Rules:
    • [New: DONE] add a link to test if a CPS objective uses the changes of energy.
    • [New: DONE] the interface is now updated, because the CSM/Energy code doesn't update it for all the cases w/EE rules.
  • Socio-Political Matrix (SPM):
    • [New: DONE] the process of memes and policies over the time is completely disabled until a mass audit is done on this specific part, after the current version is released.
  • Time Flow System (TFS) / Tasks Subsystem:
    • [New: DONE] code optimizations for the process of the tasks, the process of the turns during colonization missions have less lags. Useless / Redundant data have been also removed.
    • [New: DONE] the code to cleanup the terminated tasks is now multithreaded.
I haven't implemented all the objectives planned from the start, since some of them like Reachs a Certain Quality of Life depends on data that aren't fully used / implemented in the game yet.
But anyway, five objectives are fully implemented and they constitute the conclusion to this part.

Now I must update and finalize the interface that display the objectives.

Once this part done I will, at last, do the last part of this version; working on a report for the end of the colonization phase. One already "exist", somehow, since it is just a panel with nearly nothing in it, so it is due to a good update.

That's finally all, tomorrow is back to work, but the dev continues.

New Inclusion: Parallel Programming in FARC (very modest steps for now)

I just finished a little experiment to implement parallel / multithreaded code in FAR Colony, by using the free and opensource Omnithread library (because standard low level multithreading in Delphi is a complex nightmare), and after much reading and failure I finally understood (at a very basic level) how it works and succeeded to finally transform a bit of the code.
Even with this framework you need to understood the process of tasks, pooling, and not to mess up with the main thread, but it is far easier to dev than using the barebone multithreading in Delphi.
The newer versions of the IDE, than the one I using, have already parallel coding in standard for some years now, which is pretty simple to use from what I seen. But with my 2009 version, well, it's ever the barebone pleasure or taking a framework...or upgrade which isn't yet for now.

I tested parallelism for the cleanup of the tasks (the ones used to process the space units' missions) and it works pretty well.

Of course FARC doesn't process 10,000 tasks (yet) to have parallelism totally meaningful, but better to have it now than be sorry hehe.
So in the end, I will put multithreading into small parts of the game here and here over the time. For now it is a very modest step, but a fun one. In the other way I must be precautious to not going to fast with it; multithreading can bring its bag of bugs and defects, and I really don't need it.

I know, the game would also need to pass into 64 bits, but it is a planned process, I just need to continue to stack a bit of money beforehand hehe.

That's all, not much of a big news but since I passed some hours on it I wanted to share this update.

The week report is always planned for Sunday.

Thanks and have a great weekend!

Short Notice: Report for the End of Full-Time @ Sunday 17

I will publish a dev update post during AM or PM @ Sunday 17 with all the work I did this week.

Many things have progressed, and I completed some objectives but not all of them yet.  I hope it will be the case on Sunday, that would be a cool thing to push one step further toward the release, but we will see. I haven't did nothing this Monday, and only started to dev on Tuesday morning because of real life stuff...and things hehe.

I have about 3 days left of full time dev work, so this is enough ranting, let's back to dev.

Thanks and have a good day!

Short Term Full-Time Notice

From Monday I starting a week of holidays. So I will work full time (8 hrs min) on FARC Monday-to-Friday, in the hope to complete the implementation of a good bunch, if not all, of the objectives.

I did  not much in the dev of the game this weekend outside of pushing the finalization of the entire tech trees, on the design side.

That's all, have a great week!

Dev Update: Expansion of Population with Reserves (DONE)

  • Colony Simulation Model / Events / Oxygen Production Overload:
    • [NOT DEV] the test of the event takes now into the account the life support system of the colony. The event will only trigger if there is population in excess of the life support systems (or simpler; above the population capacity of the colony) additionally to the excess of the oxygen production (via the colony's production matrix).
  • Colony Simulation Model / Reserves:
    • [WIP => DONE] each time a reserve is updated directly, the CSM calls the CPS to see if the reserve is used by a current CPS objective. 
    • [New: DONE] the amount of population that consume a certain type of reserve each standard day is now stored in memory and updated each time the population change.
  • Population:
    • [WIP => DONE] add the rules considering how the reserves are used in a colony, according to which races and ethnic groups are present in it.
    • [WIP => DONE] each time the population of a colony is modified, the use of reserves is checked, since it can changes other the time. Also, the amount of population that consume a certain type of reserve each standard day is calculated.
    • [New: DONE] the core management routine that manage the fluctuations of the population in a colony takes now into consideration all the races and ethnical groups.
    • [New: DONE] add a new category of population for the Sentient Artificial Intelligences; Commoner.
  • Production System / Reserves Consumption (reserves segment):
    • [New: DONE] each time the process of reserve consumption is enforced, the system call the CPS to see if a reserve is used by a current CPS objective.
    • [New: DONE] the consumption of reserves takes now the specific pre-calculated data for the amounts by standard day
    • [New: DONE] the consumption of oxygen takes now into account the life support systems of the colony. Only the excess population takes into the reserves.
Another stack of side work done. The addition / removal of population takes now into account all the current races (humans, clones, AIs) and ethnic groups a colony can have.

Also the calculation of the consumption of the three reserves (oxygen, food, water) also support these races and started to take the most exotic of them (like the poshumans) in the calculations.

All this work is necessary for the CPS objective Ensures the Survivability of the Population, since it takes the states of the reserves, and how they are used, for its scores.

So tomorrow night I will finally resume the development of this objective (all the calculations for it are already fully done by design) and complete it ASAP.

The two next ones, Be Energy Efficient, and Keep the Usage of Line of Credit Low, are pretty simple and doesn't requires any side job.

That's all, thanks for your everlasting interest.

Dev Update: Objectives + Reserves and Population Races / Ethnic Groups Linked to it

  • Colony Simulation Model / Reserves:
    • [New: WIP] when a new colony is created, the initialization of reserves take now into account of the current composition of the population at the time.
  • Colony Simulation Model / Storage:
    • [New: DONE] each time that a reserve is updated (and used), the CSM calls the CPS to see if the reserve is used by a current CPS objective. 
  • Colonization Phase System (CPS) / Objectives:
    • [WIP => DONE] Provide A#Resource for #Period (PROVIRSRC): special initialization of the objective with its rules, calculations and specific data.
  • Population:
    • [New: WIP] add the rules considering how the reserves are used in a colony, according to which races and ethnic groups are present in it.
    • [New: WIP] each time the population of a colony is modified, the use of reserves is checked, since it can changes other the time.
As usual, the side-coding takes more time than the implementation of objectives themselves.To make systems and rules linked each other with one or multiples incidence can be seen as fine for a niche game like FARC but, on the dev side when a change occurs its repercussion must be checked and reported anywhere where it is relevant. If it is not done, the fact itself of trying to create a pseudo-simulation of game would be caducous.

Anyway, the implementation of multiracial / ethnic groups is pushed further since now the uses of reserves or not and their effect on consumption also depends on the composition of the population of a colony at a time T. It wasn't taken into account yet.

To take an extreme example; if a colony has only Artificial Intelligences as its population, any of the three reserves (food, oxygen and water) will not be used.
In the case of a mixed population, like a mix of baseline humans, non-sentient AIs, homo-provectus (a posthumans ethnic group), the use of the three reserves would be in force but the daily consumption would be calculated in proportion of the size each racial/ethnic group in this kind of population.

And since I working again on the CPS objectives, the use or not of these reserve can be important if a CPS objective use at least one of them to calculate its score (as it is the case already in the game).

Objective Provide A#Resource for #Period (PROVIRSRC) DONE...

...six or seven left to go. The 'six or seven" is because maybe I will discard the implementation of one of them for this release, or maybe not... yes not even a "fake" news.

I just completed the code of PROVIRSRC while I was in my lunch break @ job. So the most painful objective to write is done hehe. But yes, the whole isn't done yet.

Back to (the real) work, I will continue the dev tonight.

Dev Update: CPS Objectives + New Objective's Interface (w/ Screenshot)

  • Colonies / Storage:
    • [New: DONE] now, each time that a product is updated, the CSM calls the CPS to see if the product is used by a current CPS objective.
  • Colonization Phase System (CPS):
    • [New: DONE] the CPS now can keep track if a product, used by an objective, is updated. In the positive case, the linked scores are calculated.
    • [New: WIP] the system update certain objectives over the time, when their design request it. It is the case for PROVIRSRC which needs to keep track when its next period will end. 
  • Colonization Phase System (CPS) / Objectives:
    • [New: WIP] Ensures the Survivability of the Population (ASURPOP): special initialization of the objective with its rules, calculations and specific data.
    • [NOT DEV] Be Energy Efficient (ENERGEFF): special initialization of the objective with its rules, calculations and specific data.
    • [NOT DEV] Keeps the Usage of Line of Credit at Lowest (KEEPLOC): special initialization of the objective with its rules, calculations and specific data.
    • [NOT DEV] Keeps Alive #Percent of the Population at End Of Year (KEEPALIVE): special initialization of the objective with its rules, calculations and specific data.
    • [NOT DEV] Keeps an Acceptable Level of Mortality (KEEPMORT): special initialization of the objective with its rules, calculations and specific data.
    • [NOT DEV] Reachs a certain Level of Quality of Life (REACHQOL): special initialization of the objective with its rules, calculations and specific data.
    • [NOT DEV] Keeps Security at a the Allegiance Level (KEEPSECALL): special initialization of the objective with its rules, calculations and specific data.
  • Interface - Colonization Phase System (CPS):
    • [New: DONE] the old panel used to display the list of each objective and their score is now totally deprecated.
    • [New: WIP] the list of objectives is now displayed in the OpenGL view. It includes the score of each objectives and also specific data, if they have any.
  • Interface - Orbital Object / Colony / Energy:
    • [New: DONE] fix: if more than 100% of energy is used, it is now displayed.
  • Messages:
    • [New: DONE] Colonization: fix; name and full location are fully stored into the data structure of the message. Since a space unit can be remove by the end of the mission, if it is a colonization pod, it induced some errors in the informations of the message.
The implementation of the "Provide A#Resource for #Period (PROVIRSRC)" objective is finally nearly done, I just need to implement the rule and calculations when the end of the current period of time of the objective is reach.

Finally I changed the hardcoded data of the colonization pod to give them the ability to generate power outside of photonic energy, in other terms I equipped them with fission nuclear reactors.
The reason is that before, I only tested colonies on the same and one orbital object, Epsilon Eridani 2, which is pretty near from its star and lit but, once it given starting planets well farther than this one, star light is dim which in term of power generation .
The calculation of energy generation via photonic power take into account the illumination from the star, modifed by the distance, albedo and so on.

I also started the work on the interface, to display the objectives, by ditching the old CPS panel and integrating the display as HUD elements in the 3D view.
The not-so impressive work-in-progress is illustrated in the screenshot below:

FYI the third objective is the unfamous one I'm working on. It's title change according to the type of resource to produce and the period of delivery (each month, quarter or the full year).

I flushed many bugs here and here, many of them from the colonization mission itself. Also there were a problem with the removal of space units and the process of their tasks, it is fixed now.
Two big bugs stay for now, it is the loading of a game (from the Load Saved Game window) which is totally not working (certainly because of the changes with backstories and CPS) so I need to review the code. The second bug is when I start a new game when a actual game is ongoing.
Starting a new game from scratch, or continue the last one works, so it shouldn't be difficult to fix.

That's all for now.

Dev Update: Tasks Subsystem Fully Updated + Bugfixes + Finalization of Design for Space Units' Internal Structures

  • Missions / Colonization:
    • [WIP => DONE] the setup of the mission is fully fixed. There were problems with trip time calculations due to boggus deltaV given to docked space units.
  • Missions / Landing:
    • [WIP => DONE] fixed: the calculations were bogus due to the fact that the procedure didn't taken into account of docked space units (when they are used) and mixed data between the mother vessel and its docked ones. 
  • Space Units (in-game):
    • [WIP => DONE] dock/docking is replace by better terms of carry/carrying. That really specify space units carried INSIDE another one. There will be a docking ability, but nothing to do with it.
  • Time Flow System / Task Subsystem:
    • [DONE] complete application of modifications in the data structures of the tasks, according to the updates to mission and space units. Include a cleanup of the data structures themselves.
    • [DONE] fix: prevent a division by zero, in FCMgTS_TaskToProcess_TransfertToInProcess->Colonization Mission, during the calculation of acceleration by tick.
  • Time Flow System:
    • [NOT DEV] buttons are added to allow the player to end a turn directly by one tick (the standard turn), one hour, one standard day, one week and one month.
    • [NOT DEV] a basic framework for events buttons is now implemented. It can now "popup" special end turns button linked to special events that can occur over a game.
    • [NOT DEV] addition of the "end of next colonization mission" event button to end the turns until the next colonization mission is finished to be processed.
Working on the tasks subsystems were more work than seen, but it is done now and fully working.
The colonization mission is fully working again too.

Now I can finally put my entire focus to complete the implementation of data and score calculations, for all the existing objectives in the game. I already started it with "Provide A#Resource for #Period (PROVIRSRC)", and since it is the most complicated to develop, it will be completed first. the rest will follow.

Also, since FARC is now fully turn-based, I will add buttons to end turns of specific length, but also I will add a basic framework for future implementation of events end-of-turn buttons. Please read the todolist above for a (little bit) more informations about it.

I also finalized the design of the internal structures of the space units, because yes, one day the design of spacecrafts (stations, Bernal spheres and so on) will be implemented in the game.
Without telling much, since it will not be implemented before the basics of FARC are done, each space unit is based on an internal structure giving base data, like the overall shape (streamlined delta, cylindrical and so on), the architecture (basic function the framework tend to, like Deep Space Vessel or Stabilized Space Infrastructure), the dimensions of the spacecraft, the available volume and surface, and the maximum hull frame strength.

The overall shape defines how the available surface and volume are calculated and also define the hull sections, that will be used for hit location during a combat and also to locate the equipment modules.

The architecture of an internal structure define to which general optimized use a future spacecraft is destined to. There can be some variations from it, but the main vector is fixed.

They really shape the future spacecraft in the way that each equipment module is allowed to be installed into specific types of architectures.
This is used to keep a certain coherence between the shape and structural design of a space unit, and its realistic use on the field.

Outside of that I also started to finalize the space units' design too, especially one of its 6 keys elements: the hull.

This part will contain the set frame strength, the structural volume and mass, the structural points (sort of hit points), the acceleration limit and the final available volume.

It will have also a per-section data serie with: available volume and surface, structural points of the section and a damage chart.

I think I will stop the details here hehe, but the whole part I described is also fully final in the doc (and ready to be implemented... one day)

After this WOT, I thank you for your interest and... back to work.

Short Notice: Moving to a New Place (DONE) + Resume of Development

As the title said, I Am finally back on track in my new place.

I will resume the development tonight (EST time).

Thanks.

Dev Update + Screenshots: Fixes for Missions + Changes to Space Units + Tasks Rework To Include the Last Changes

  • Interface -  General:
    • [WIP => DONE] a more clearer font, for the main texts, now replace the previous one. Many text adjustments were necessary to make it right. Most of the other fonts (including those for the OpenGL components) have been changed too.
  • Missions:
    • [New: DONE] suppression of a useless data structure, used partly for calculations of a mission, that mixed with another data structure used to setup the future task for the Task Subsystem.
  • Missions / Colonization:
    • [New: WIP] the setup of the mission is fully fixed. There were problems with trip time calculations due to boggus deltaV given to docked space units.
  • Missions / Landing:
    • [New: WIP] fixed: the calculations were bogus due to the fact that the procedure didn't taken into account of docked space units (when they are used) and mixed data between the mother vessel and its docked ones. 
  • Missions / Interplanetary Transit:
    • [New: DONE] the mission is fully disabled and will be under a full review before to be re-enabled in the future. 
  • Space Units (in-game):
    • [New: WIP] dock/docking is replace by bette terms of carry/carrying. That really specify space units carried INSIDE another one. There will be a docking ability, but nothing to do with it.
    • [New: DONE] releasing a carried spacecraft: fix; set default attitude / deltaV and 3D velocity, to the released ship, which are equals to the mothership's data.
    • [New: DONE] removing of a spacecraft from the database; fix the code for docked SPUs.
  • Time Flow System / Task Subsystem:
    • [New: DONE] some changes and cleaning of the data structures for the tasks.
When you work onto intricate systems, and add/change something to them, it can breaks processes and logic. It is what it happened for the Colonization mission, but it is nearly fully fixed now. I just hoped to finish today before the move but anyway.

I modify also the tasks with better code (I think the Tasks Subsystem is way back 2012 or something...) and especially to take into account the changes in the setup of a new game...inducing changes into the colonization mission, and also for the expansion of some data for in-game space units, like attitude for example.

For reminder, the Tasks Subsystem is linked to the Time Flow System (which manage the flow of time and the triggering of the systems of the game), and it manage the tasks which are created by the setup of new missions for the space units and also by the planetary survey.
In clear it process, phase by phase, missions and survey automatically until the end. It will be expanded in the future (so much things in the future hehe) with more options but for now it works.
The system itself is working since a certain time, but all the changes made for this version broke it a "little bit" and so it is in need of being updated.
Always an update, always...

Space units are more and more updated themselves since we approach, little by little (for real!), of the full blown implementation of their internal structures/hulls and design.

On a secondary note; nearly all the fonts of FARC were replaced by new ones, and some of them are more readable than the previous ones. All of them are SIL / OFL licenses.





Yes, it needs work and adjustments for the sizes and text location...and yes the icons in the Orbital Object panel shouldn't be displayed... I know... I know hehe.

That's all, time to physically move on and... going back after March 3rd!

Short Notice: Moving to a New Place + No Internet Until May 3rd

Just a notice to inform that I will be moving to a new home (the physical one, not a website) on May 1st and I will have no internet before May 3rd.

So, the devpost I will publish by Sunday will be the last until I have a connection back, and of course until I will be installed.

Thanks and have a great weekend!

Dev Update: Removing of Realtime Subsystem + Expansion of Turn-Based System (with events turns) + Interface Fixes + PROVIRSRC Objective Done + No More Guess Work for Infrastructure/Settlement Levels

  • Colonization Phase System (CPS):
    • [New: DONE] the status weights of the selected backstory are now stored into the CPS' data structure for further uses, like the initialization of the objectives and the update of their scores. 
  • Factions / Starting Locations:
    • [New: DONE] expand the : "add a parameter, for the starting locations, which stipulate the scope used for randomness for an actual entry." with an additional scope: If Planets-NoSat, it indicates that only all the TELLURIC planets of the system are included in the list of starting locations, But it excludes the satellites.  
  • Infrastructures (database):
    • [New: NOT DEV] adjustment into the determination of infrastructure levels (IL). For reminder, IL encompass grossly the size of an infrastructure into one readable data that is used, among other things, to determine the size of the settlements.
      Now it is calculated with one universal formula based on the design of each infrastructure. So no more guessing.
  • Interface -  Action Menu:
    • [New: DONE] fix: the menu display correctly the Colonization Mission for the space units with docked FCP-80. It wasn't anymore the case since the last changes.
  • Interface - Mission Setup / Colonization:
    • [New: DONE] a deprecated string, for the element used to set a name for the new colony, has been corrected. The information to validate the name is now displayed as a hint.
  • Interface - Orbital Object Panel:
    • [New: DONE] fix: the initialization of the region's zones, on the surface of the orbital object, are now correctly initialized at the start of a game.
    • [New: DONE] the color of the selector, on the surface of the orbital object, has been changed for a better readability. In the future I'll see to adjust a bit the color of it according to the tone of the displayed surface map.
  • Planetary Exploration / Resources Survey:
    • [New: NOT DEV] adjustements to determine the size of discovered resource spots. It is now totally in line with the levels of infrastructures and how the size of settlements is determined.
  • Settlements:
    • [New: NOT DEV] adjustements to determine the size, and the progression of it, for all the types of settlements. Calculations are 100% in-line with the new way to determine the infrastructure level.
  • Time Flow System:
    • [New: WIP] the realtime portion is removed entirely. FARC will stay turn-based but with more option of turns, like the possibility of events end of turn; for example when a colonization mission is set it is possible to process the time flow until the first Colonization Mission is done.
Sorry for the lack of news but, as you can see, many things have been done.

As announced above, I adjusted how is determined the level of an infrastructure. It is based now from the design of the real size of one of them, with a formula that gives a level of infrastructure in final.
It is important, because I also adjusted how the size of all types of settlements is also determined. And the calculations are now also 100% compatible and in line with the infrastructure levels.
Before It was a lot of guess and some speculation, giving no statisfying results.
Don't worry it isn't another overhaul, but really a refining of data.
It isn't implemented yet, but will be once I finished to code the Colonization Phase objectives.

Speaking of objectives, the initialization of specific data for the PROVIRSRC objective (Provides A#Resource for #Period in plain CodeGlish) is fully done.
This objective is the reason I worked on the infrastructure levels, because something was off between the size of the resource spots, the infrastructures and the settlements.

The calculation of the size of the resources spots, discovered during a planetary survey, is now also 100% in line with the changes in infrastructure levels / settlement sizes, and above all, more realistic (or at least more coherent) regarding of the size of a region.
Yes, FARC use the full size of regions of a planet or asteroid, so one can go upto millions of square kilometers. It is why, until now, the size of the spots weren't pretty realistic and were as off as the rest. But it is now adjusted.
Again it will not be a overhaul of the planetary survey system, but an adjustment on the discovered size of spots.


Also the concept of iterations is now removed; for now, and until the game is basically playable from A to Z in this colonization phase, it will stay at the alpha 10.
Only the release (x.x.15/.16 and so on) and build numbers will continue to evolve.
Once I completed this first phase, the progression of major/minor versions will resume.

That's all.. I guess hehe :)

Have a good day, and thnaks for your interest!

Dev Update: Time Progression + End of Phase + OpenGL Bug Fixes and Current Memory Leak Found

  • 3D:
    • [New: DONE] fix: when a new or loaded game is processed, the 3D view update correctly, before it frozen. It was a problem due to the overhaul of the setup and process of a new game.
    • [New: DONE] fix: when a new game is processed or loaded, and that the current player's view target is a satellite, the 3d view now correctly focus on the satellite and not its root planet.
  • Colonization Phase System (CPS):
    • [New: DONE] the method that keep the time progression is now re-enabled but also extended to integrate fully the trigger of the end of the phase. Useless related code, in the Time Flow System, has been removed.
    • [New: WIP] the end of phase is now fully re-enabled and its report is fully completed including; the results, the outcomes and the performances with each objective.
  • Names and Designations Generator: (forgot to put this one @ March 14-23, sorry)
    • [New: DONE] the ability for any faction to generate names for the space units is implemented. It is based on the use of generic words assembling names of variable size, and there are articles, specific to the cultural background of a faction, that can be used according to a predetermined set of simple rules for each word. 

Outside of this, during the debugging of the intialization of the 3D view, once a new game is set or loaded, I observed a pretty fair memory leak. It wasn't a new thing, but it is the time to finally fix it.
So after some investigation I found the source of the culprit, it will be fixed once my work on the CPS is done.

My main work stay on the implementation of of the objectives' rules and calculations. It isn't only coding but also working to complete the game design on those I selected to be in the game in this version.

I hope to release this version in end of April, mid-May, but you know me and my failed schedule so we will see.  It will be 4-5 months more than what I announced on December 2017, it's more than enough.

General Post: Full Time Dev Day

Today is a day off for me, so since I finished what I had to do for the day I will work on FARC full time after my late breakfast.

I have things to debug, especially  for consecutive setup of new games and the OpenGL initialization. Part of it is already done since yesterday night but I need to fix the loading / intialization of consecutive games.
After that I will go back to the Colonization Phase System's objectives.

After this so "interesting" information, let's back to work hehe.

Dev Update: Generation of CPS Objectives Fully Fixed (Status Addon from Previous Post)

  • Colonization Phase System (CPS):
    • [WIP=> DONE] creation of a new in-game CPS Objective data structure that replace totally the old TFCRcpsdViabilityObjective.
  • Factions / Expeditions & Backstories / Special Rules:
    • [WIP=> DONE] Automatic CPS Objectives.
    • [WIP=> DONE] Automatic Rejection of CPS Objectives.

The next step is to implement specific rules and calculations to initialize any custom data an objective may have, and also to update the score of each of them.


Back to work... my real and daily one :)

When a bug is silly... Generation of Objectives

The generation of objectives, for the Colonization Phase System, was plagged by a show stopper bug because no objective, outside of those affected by the special rules, were... generated in the end.

I looked everywhere in the CPS code but found nothing until I finally targeted the point where the logic failed and found the problem; at one moment, the Socio-Political Matrix (SPM) weights of the current objective in process, are tested in order to keep the coherence between the objectives and the SPM settings of the player's faction.
The only problem is the test didn't taken in consideration the SPM at all, it only tested if a weight has an incompatible flag, regardless if the policy or meme linked to it is enforced / adopted by the population...
So in the end, ALL the objectives were rejected, and it triggered an out of bound of the array for other calculations, isn't it fabulous? hehe.

So yep I fixed it and magically some objectives became generated and listed, as it should be.

Sometime the solution is right in front of the editor window...

Back to work.

Dev Update: New Game Setup DONE + Colonization Phase System + Bugfixes for OpenGL UI

  • Factions / Expeditions & Backstories:
    • [WIP=> DONE] the data from each backstory/ex-colonization modes (line of credit (already the case), population settings, basic list of common core of technologies) can now be set dynamically with pre-defined ranges of values.
      The equipment given to the expedition will be able to vary in volume, but not in nature, proportionally to the total population.
      Thus it allows to have some variations at each new game even if the same faction of allegiance and backstory is chosen.
  • Research & Development System / Common Core:
    • [WIP=> DONE] The special rules Automatic Technosciences / Fundamental Researches and Automatic Rejection of Technosciences / Fundamental Researches, are processed for the common core of the player's faction.
  • Space Units (in-game):
    • [New: DONE] add an independent data structure that represent a group of space units, which is the smallest type of formation that a fleet can contain. For now it is used to load the starting equipment that is generated.
Finally tonight I seen back the main interface of the game. It has been a long time...
All is running OK, excepted for some bugs with the OpenGL user's interface, since the data for the names of the space units has been modified. It isn't much and will be fixed tomorrow night... or today night since it is already 01:20.

Now I will focus my work on the Colonization Phase System, which implies the full calculations for the objectives in the game, the rework of the interface to display the objectives, and the end of the phase itself.

That's all.

General Post: Current Status and near Terms Plans (CPS w/ Release) + Orbits + Weather System + Multithreading

I'm near to finish the work of the setup of a new game, and tonight after my day of work it should be done.
After this, I will focus only to complete the rework of the Colonization Phase System, by adding the calculations for the objectives and updating its interface.
Once done, the last part will be the secondary bits; mainly to finalize the new encyclopedia by interfacing the web Knowledge Base to the game, and to finalize the online updater.
I also completed the next two steps of the last iteration of this alpha 10, once I release the current iteration;
  1. implementation of the final orbits system (with low / geostationary and gravity limit orbits) and removing the 3D space units including the current method to browse them.
    I will integrate something more useful with list of icons representing the space units present on each orbit. And the orbits will have four or six locations around each planet and asteroid.
    I will talk about that in a more detailed post when I will implement it.
  2. implementation of the Weather & Geophysics System
    This system, as its name indicates it, will manage the change/progression of weather of each planet (the ones with an atmosphere obviously) over the time.
    The orbital objects will also finally move on their orbit, through this sytem.
    Finally it will also manages Regional Weather Effects that can be triggered, according to certains probabilities modified by the data of each orbital object.
    RWE are things like hurricanes, sandstorms, electromagnetic storms and so on, for the weather effects. For the geophysical effects it's more things like earthquakes, magnetic field shift or volcanic eruption.
    Surely a lot of fun ahead hehe.
It is to note that these two parts will use, for the first time in FAR Colony development, parallel code, so in clear; multithreading tasks and loops for their processes.
Progressively I will also add, later, some parallel code to already existing parts of the code and game systems.


That is all, thanks for your interest.

Dev Update: Generation of Starting Equipment DONE + Framework for Space Units Fleets (with some Details)

  • Entities:
    • [New: DONE] addition of a data structure that contains group of space units. It will by the standard unit that will compose the future fleets in the game.
  • New Game Setup:
    • >[WIP=> DONE] the starting equipment is generated, based on the size in population of the expedition.
    • [WIP=> DONE] each starting equipment is transfered in the cargo of the available space units, according to the rules.
  • Space Units (in-game):
    • [New:DONE] addition of functions to load the cargo of one spacecraft or a group of space units.
Finally the generation of the starting equipment is fully done.
A skeleton of data structure for the fleets have been implemented, it was necessary to be in accordance with the functions to load the cargo of space units.

In clear, there will be fleets in FARC, as for any space strategy game around, with specific functions that will define the overall organization (with organization slots) of them and will modelize the range of possible missions / strategies and tactics available.

The following is a work-in-progress, since it is a future feature, so take it is subject to changes.

The two basic types of fleet will be Task Group and Task Force.

The Task Group is a functional civilian fleet composed of 3 organization slots:
  • Manager & Coordinator Group (the core command)
  • Workers Group (the core working process, like haulers for example) 
  • Assistants Group (any spacecraft that doesn't fit as Workers but can act in assistance for them, like for a Fleet Logistic/Replenishment spacecraft for example).
The Task Force is a militarized fleet (yes there will be blood, tears and wars too in FARC) composed of 6 organization slots:
  • Core Command Group (part of the C3i group; Command and Control. The rest is assumed by another group)
  • Main Strike Group (the main combat group)
  • Escort Group (any defense spacecraft, acting only in reaction against any agression)
  • Orbital Assault Group (any spacecraft specialized into orbital planetary strike)
  • Battlefield Area Specialists Group (Electronic Warfare, Recon and other specializations not fitting in any other group. It includes the rest of C3i: Communication and Intelligence)
  • Support and Logistic Group (Replenishment, Rearming, Repairing)
See the groups like "mini-fleets" inside a fleet. Yes, convoluted things are so crunchy on the morning hehe.

That's all, a lot of work ahead as usual.
Now I continue to re-enable the rest of the process of a new game, which should be faster since it isn't linked to the backstories, so it is mainly to uncomment the code and verify it.
It includes the initialization of the Socio-Political Matrix, of the common core for the research & development, the Colonization Phase System, and finally the user's interface.

Thanks for your interest!

Dev Update: Small Fix + Space Unit's Cargo Done + One Screenshot of Some Generated Data

  • Game Saving/Loading:
    • [New: DONE] fix a bug that prevented to save the 11 development levels of the stored products for the colonies.
  • Space Units (in-game):
    • [WIP=> DONE] add a very basic sub-data structure to indicate the cargo of a space unit with its detailed list of items.
I working actually to implement the rules to spread the starting products through the cargos of all available space units of a specified design. Each starting equipment has a data "hauledByClass" to specify which design of spacecraft will haul which equipment.

For now, and since the designs aren't implemented yet, there is no test to avoid a cargo to be overcapacited. But that will be taken into the account in the future.

Normally I should finish to implement the generation of starting equipment tomorrow (or today since it's 1:20AM yet...) during the night (EST time), and I will continue to re-enable the initialization of the the player and non-player's factions.

As a small bonus, here's a screenshot of the debug output console of the game to show you a small part of the data that are generated:



As specified in a previous post, the starting population will vary according to a certain range set by the faction of allegiance, expedition and backstory, the player will chose of.

In this example the future player's colony would start with 481 entities (mostly humans and few artificial intelligences) and 34 space units. The number of space units, as for the starting equipment, stay proportional to the size of the population at the start of a game.

Following the population you can see the naming of all these spacecrafts, using the dynamic generation according to the parameters of the faction's language, which is in the case of Magellan Unity a mix of English, German and a little bit of Italian, Spanish, and Eastern European languages.

The "_spaceUnits[Count3 + Count2]" entries are all docked space units, and in this case they are all FCP-80s which are the big and robust landers that will carry the entire population of the player's colony. They will serve as colonization shelters once landed and converted as basic infrastructures.

The space units, starting from the spacecraft's name "Eon Polaris" are all haulers (of Aspen 2 design) those will carry the entire equipment of the colony, and there are nine of them.

The lines after these haulers are the debug messages during the generation of the starting equipments.

That's all, back to dev tomorrow after... well... the day job.

Dev Update: Starting Space Units Done + WIP Starting Equipment + Space Units Cargo

  • Factions / Magellan Unity / Language System:
    • [New: DONE] expansion of the data by 258 generic words, including their articles rules.
  • New Game Setup:
    • [WIP=> DONE] the starting space units are generated, based on the size in population of the expedition.
    • [NOT DEV=> WIP] the starting equipment is generated, based on the size in population of the expedition.
    • [New: WIP] each starting equipment is transfered in the cargo of the available space units, according to the rules.
  • Space Units (in-game):
    • [New: WIP] add a very basic sub-data structure to indicate the cargo of a space unit with its detailed list of items.
The generation of starting space units is now fully completed and I started the generation of starting equipment.
One requisite of this sub-system  is that the generated equipment goes in the cargo of the starting space units, so I expanded a little bit their data structure with a cargo data array to store all the items a spacecraft transport. In the future (after the full iteration cycle of the alpha 10 is done), when the design of the space units will be implemented, it will take into account the available cargo capacity a space unit has, but for now there is no limit programmed, but the whole stay a bit coherent.

I also put a few changes and refinement for the generation of space unit's names.

That's it for now.

Dev Update: Faction's Language System + Naming of Starting Space Units = DONE

  • Factions / Expeditions & Backstories / Starting Space Units:
    • [New: DONE] the name can be either a specified one, generated, or created from the design name and the index number of the space unit in the data structure.
  • Factions / Language System:
    • [WIP=> DONE] a skeleton of language system is implemented, and a list of the general words is added in the data structure.
    • [New: DONE] for now generic words, and articles are supported.
    • [New: DONE] basic general rules for naming the space units are implemented.
I finally finished the basic language system of the factions, and the generation of the names of starting space units is fully completed.
By this way now, the game will be able to generate names for the space units, but also colonies and (well later) characters. It will be based on the linguistic setup for each faction.
Of course in the future some factions, especially the minor ones, will have the possibility to access of the language system of one another faction and tus sharing a common language.

So now I'm back in the development of the rest of the generation of starting space units, and starting equipment...

... at the FTL speed of a snail as usual :)

Dev Page Update: Faction's Language System

  • Factions:
    • [New: WIP] a skeleton of language system is implemented, and a list of the general words is added in the data structure.
In the future, the game will be able to generate names for space units and colonies with a pseudo-random method with a specific database of words, and first names and surnames (for the future characters).
A database of syllabus will be also implemented for me, when I using FARC in debug mode, and will allow me to generate words based on a specific faction.

For now it isn't much but the system will set names for the starting space units, of a backstory, that requires some.

The whole data for the language will be located in the XML file of the factions.

I know that is not a big deal of gameplay, but it adds some flavor.

I continue to develop the generation of starting space unit, and starting equipment, stay tuned.

Edit: I also completely reformatted the Dev Page and removed the highlightings which became a bit "heavy" for the eyes...

Dev Page Update: Population, Starting Space Units and Equipment

  • New Game Setup:
    • [New: DONE] the size of the population of the future player's colony is calculated before even the colony is founded. It is required since the dynamic generation of starting equipment and space units depends on it. 
    • [New: WIP] the starting space units are generated, based on the size in population of the expedition.
    • [New: NOT DEV] the starting equipment is generated, based on the size in population of the expedition.
  • Space Units (in-game):
    • [New: DONE] a useless data, the tokenId, and all its dependencies are removed. 
    • [New: DONE] the length of the name of a space unit is expanded to an unified custom name constant.
    • [WIP=> DONE] add two new data; the physical state and a switch to indicate if the power grid is enabled/disabled.
    • [New: DONE] the array of the docked space units is optimized of a useless sub-record.

Dev Page Update + Starting Locations Bug + Time Flow System Initialized + Entities

I will now post the last changes in the Development page each time it is done.
The history of the last 4 changes is displayed on the top of the page.

  • Interface - New Game Setup:
    • [New: DONE] the game name is limited now to 20 characters. Thus, it putting it in accordance with the setting of the data.
    • [New: DONE] the player can now set its own faction's name.
  • New Game Setup:
    • [New: DONE] the player can now have a name for its own faction. It isn't much, but it is one step more for player's immersion.

For the rest, the starting locations has a bug, just a logical one where I forgot to apply the scopes of the generation when the rule Preferred Starting Location - Orbital Object Type isn't present.
The bug isn't fixed yet but will be after I finished to rework the Colonization Phase System (CPS).

I also re-enabled the initialization of the Time Flow System (system that manages the hybrid realtime / turn-based subsystems).

I started to re-enable the code that initializes the entities of the game (the player and non-player factions). It is where most of the work, beside the CPS, is focused since I completely remove the old code and finally integrates the backstories' data into these entities. Including the dynamic generation of the population and equipment.

That's all for now, back to work hehe.

Alpha 10 - iteration #08: Dynamic Starting Locations Done - CPS Initialization and Ovehaul

The work on the selection of a starting location, including the special rules of backstories, is fully done.

I also re-enabled the initialization of the universe that do the following:
  1. it loads the data of the orbital objects by default for all the star systems of the game. (maybe it will change in the future).
  2. ti set dynamically the quality of the resource spots of each region of each loaded orbital object.
  3. it initializes the revolution period and seasons of the orbital objects.
There wasn't much new thing to do in this part, outside of some refactorings, so the work mostly was to re-enable the lines of code.

Since yesterday then, I work again on the colonization Phase System and I re-enable the initialization of the system, at the start of a new game, finally link the generation of the objectives to it (the generation part is already done a while ago) and I work on the overhaul of the CPS itself.
After all, it was the main focus of this iteration hehe.

Once done, the next steps are to re-enable the settings of the Time Flow System (which manages the real/turn-based hybrid system) and to initialize the factions' entities of the game. This last part will be a big one in term of work since it will include the content of the new expeditions and backstories, and also will include the dynamic generation of the population and starting equipment.

In the end the second part of initialization of the user's interface will be re-enabled, and the whole work on the setup of a new game will be fully completed.

Better late than never.

Alpha 10 - iteration #08: Special Rules for the Common Core Done + Dynamic Starting Locations (WIP)

I finished to fully implement the two backstory's special rules that automatically add, and reject, technosciences and fundamental researches during the initialization of the common core of the player's faction.

I'm actually working on the starting locations.
For reminder, the starting location of the player's colony will be dynamically set during the setup of each new game, according to which faction of allegiance is chosen.
I expand actually the possible outcomes by adding options on what is added in the list of starting locations. Before it, there was only one option; to enter the full location of one orbital object (planet and asteroid), which is pretty limited because imagine that a planetary system having 80 orbital objects (a possible case if one has many asteroids) and there are 50 of them set as possible starting locations.
So I implementing a new parameter to set the scope of one entry in the XML data, and the possible options are the following:
  • Single: it indicates a single location (a single orbital object) that will be included in the list of starting locations.
  • Asteroids: it indicates that only all the asteroids of the system are included in the list of starting locations.
  • Planets: it indicates that only all the TELLURIC planets of the system are included in the list of starting locations.
  • SSI: it indicates a single location, formed by one Stabilized Space Infrastructure (space station, standford torus, and so on... BUT not a space megastructure), that will be included in the list of starting locations.
  • All: it indicates that all the orbital objects (excluding the gaseous planets) of the system are included in the list of starting locations.
These options allow to set a bigger range of starting locations without to have to set one entry by orbital object. It will be even more relevant when there will be more star systems than the only one FARC currently possess.


So yes, it is again a "little bit" of work, but it is a needed one.

Thanks for your interest.

Alpha 10 - iteration #08: New Game Setup - Under the Hood Coding + Dynamic Generation + Knowledge Base

I continue to re-enable and update the code to commit and process a new game.
In the process I also implement the new features, especially the effects of the backstories' special rules.
The two ones I actually implementing automatically add, and reject, technosciences and fundamental researches during the initialization of the common core of the player's faction.
The common core itself is already implemented since a previous iteration and, as reminder, it initializes and generates the technosciences and fundamental researches that are discovered and/or mastered at the start of a new game. It takes into the account of the setup of the technological trees, and the orientation of each research domain, of the chosen faction of allegiance and introduces certain variations.

Once done I will push further into re-enabling the legacy code and will link and add the dynamic generation for the starting location, and the setup of the starting population, space units and equipment.

Finally I will work on the Colonization Phase System to link the generation of the CPS objectives (which the code is already done) to the setup of a new game, and complete the rest of the CPS code for the management of the objectives and the user's interface of this system.

That's all for now. It takes far more time than planned, because as said previously it touches many parts of the code other than only the setup of a new game.

Meanwhile I also pushed the filling of the knowledge base; you can see the details of the last changes here.

Thanks again a lot for your interest in this slow project, and have a great day :)

Alpha 10 - iteration #08: New Game Setup Interface (finally) Done + Screenshot

During my job breaks I finally completed the interface to setup a new game.

Here is the final screenshot of the Equipment tab with the completed part:


The Game Options tab will stay empty for now and will be filled, over the time of the development, when a relevant option will be needed to be added.

Tonight I will re-enable and update the code that process a new game, as said at the end of the previous post.

Stay tuned.

Alpha 10 - iteration #08: New Game Setup Interface Nearly Done + Screenshots

I'm finally not far to complete the interface, to setup a new game; the last tab, Equipment, is nearly done.
It seems long for just a not pretty UI, but it also involving a good portion of code that touches the CPS, the space units, and the data structures for the factions of allegiance and the entities of the game.

I decided to make some screenshots to show the progress so far.
This one is displayed by default. It is color coded to inform the player how to use the interface to display the informations about the faction of allegiance, the selected expedtion and the backstory:

Once a backstory is selected, the History tab display the excerpts accordingly:
Here's, the Colonization tab display the Colonization Phase parameters of the selected backstory:
The Population tab display the parameters that will setup the population of the expedition:
Finally the Equipment tab, which is yet incomplete, that display the full list of starting space units and equipment available to the expedition:
In the screenshot above, only the list of the starting space units is fully displayed for the Magellan Unity. I have to make and complete code to display the starting equipment, in a same manner.

I'll try to complete the interface tomorrow night; there are a bit less of data to display for the equipment, so it should be faster to code.

Once done, I will continue to re-enable and update the code to commit and process a new game, including the ones to continue a previously saved game and also to load a game file.

Thanks for your interest!

CPS: Colonization Phase System 

Alpha 10 - iteration #08: New Game Setup UI + CPS Progress

The History tab (which contains informations about the selected faction of allegiance, expedition and backstory) is done and the Colonization tab is in progress.
The Colonization tab, in the interface to setup a new game, contains every basic informations for the settings of the CPS, related to the selected backstory: with the viablity threshold score to reach, for the three faction's status, the granted line of credit (if any), and the backstory's special rules (if any)
Most of the code is a copy/paste from the previous version of the interface, excepted for some refactorings, the display of the special rules, and heavy modifications in functions calling due to the changes of the CPS code (see below).

In the same time I finally started to rewrite the code of the CPS, outside of the generation of its objectives since it is already done, in a clearer and less messy manner.
I decided to start again from the beginning, including only pertinent old code from the previous version and rewrite many parts of it.
The rationale is that since the CPS objectives have been undergoing major changes, it is better to do it again than trying to patch the code here in here. Of course if parts of the previous version of the code is mostly compatible, I reintegrate it.
Some functions are also  out of place and needs to be cleaned up, a few are already.

So for TL;DR the ongoing coding of the interface to setup a new game occurs in the same time as for the CPS, since the two are linked together.

That's all for this post. I will make a new one when the interface will be completed and I will include some screenshots of it.

CPS: Colonization Phase System 

Alpha 10 - iteration #08: Generation of the Objectives Done

As the title says, the code is finally complete...
I reviewed it so normally there shouldn't be any error but of course I will test it once all is in place.

So now the work left is on the interface to setup a new game (which I already started to code a part of it in 2017) and on the code to initialize all the data of a new game.

Better late than never they say :)

Thanks for your interest!

Good resolution for this new year concerning the Dev of FARC

I know, new year's resolutions aren't often followed. But I decided to code and/or working-implementing assets a bit each day of the week, even if I can only for 1 hour and of course commits when relevant.

Particularly since the next step of the development, the Iterations #09 and #10, that will finally complete this alpha 10 is pretty loaded in work to do.

So if I want to achieve even a basic game it is important that I take it a bit more seriously.

Anyway enough rant and back to work, and as usual thanks for your interest.

Happy New Year and Dev Status

First I wish you happy new year, to any of you, and hope for the best for 2018 in your goals and challenges.

As you can see, FARC hasn't been released on January first and I'm back on dev only since today, but the speculative release date doesn't change and stay for this month.

I finally completed the code for the resources, used by an objective. If you don't remember what it is about you can take a look at the post below dated November 20 (a long time ago I know).

I  also made progress in the generation of the objectives and I continue to implement the code.

I know, it is like 2 month that I talking about it, but certain events outside of this project have hijacked fairly well the development of the game. But it is past now and 2018 is already here.

The next post will be made when the generation of the objectives will be, finally, complete.

Thanks for your interest and excuse me for the lack of news.