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.