Spencer and I had a good discussion about technologies and how they will be implemented in the game. My goal is to make it moddable, so we discussed methods of accomplishing that. I believe that we've come up with a good system.
All technologies will be using a generic "TechnologyItem" class. It can store a script, a pixel shader (or two if it's a weapon), and data for the technology. There will be several main functions that will be called from this class, namely:
OnFire is called when a ship fires its weapon. It will go through different technologies (Weapon itself, Mount, then Computer) and have modifications applied to it through scripts. While traveling in space, it will call "Travel()" that updates the weapon (maybe modify its trajectory if it's a missile for example). When it hits a ship, it will go through that ship's list of technology scripts, and have the final modified damage applied to the ship's armor. This includes Engine, because there may be an item that causes weapons to miss 1/3 of the time for example.
This will allow the game to be modded heavily. For example, if you add a script that generates new particles that split off from the main bullet while traveling and can hit other ships, you can add it under "travel" function of the technology script.
Another thing that we also discussed and decided is that each technology will be researched once. But you can have modifications added to the main technology (for example, extended range or minizaturation) to improve it. Each technology have a specific level that it will appear in. There will be "brackets" that when you've researched some stuff from it, you unlock the next "bracket" of technologies in that field.
I've removed the old technology system, and implemented half of what I planned so far. I think this should be done within a week or so. After this is done, then we can work on space combat.
Also, one more thing that we discussed is space monsters and neutral ships. We figured that in order to have them act in certain ways that we want (they don't travel to other systems, only stay in their systems) we'll have to add "System Ship"
functionality. The System Ships are those that lack interstellar engines, so they can't travel to other systems. This opens up an interesting gameplay feature. You can design system ships and build them for defending your systems. They will have more room for weapons compared to their star ship counterparts, due to lack of interstellar engines.
Now, back to programming! :D