Empyrion - Galactic Survival

Empyrion - Galactic Survival

31 ratings
Gentle guide to .ECF modding [Up to A11]
By zaphodikus and 3 collaborators
Write your own version of Empyrion Galactic survival by adding recipes and buffing any* item in the game. This is the polite guide to editing Empyrion Galactic Survival game .ECF (empyrion config file) settings, written for people with no programming background. I am trying to achieve 2 things with this guide.
  1. You to have fun learning a few data editing basics, just enough, to get this job of editing the data files done. More fun is always good as a way to learn about software's workings. You will make the game infinitely replayable.
  2. Understand the workings of these files so they stop being a black box. One benefit, is that you are not only able to modify and even repair the box, but you can also be more comfortable about modding. And you will have learned more about the actual Emyprion gameplay mechanics like weapon damage and health-pack effects.
3
   
Award
Favorite
Favorited
Unfavorite
1. Introduction

Basis for editing Empyrion Galactic Survival game .ECF (empyrion config file) settings, written for people with no programming background. If you can code and read JSON/YAML data already, please just skip to Chapter 2 on Tools. This guide applies to Alpha 11 and all earlier versions, A12 simplifies file management a bit, because config files can now live inside scenarios. So a guide update will detail those changes soon.
What
This is not a guide to editing YAML[en.wikipedia.org] (yet another markup language) files to edit planets playfields and solar systems. There are some good guides for those Playfield.yaml Explanations: Planets and Creating Custom Worlds Guide v0.02 . I will be covering the basics of editing properties like damage and durability of items, changing the recipes of those items and how to do this with almost no crashes of the game. I am assuming you are playing this game on a computer running Windows, but if you are not, just dive right in and skip over chapter 2 now.
Why
I am trying to achieve 2 things with this guide.
  • You to have fun learning a few software engineering basics, just enough to get this job of editing the data files done. More fun is always good as a way to learn. Along the way, we will learn just enough about program workings so that you will enjoy this game more, and have some understanding of how data files are just us humans trying to put things into a form the computer can understand.
  • Whenever someone explains the workings of a system really well, that system becomes more useful to the people who access it. They can start to use that knowledge in other similar situations, and feel more empowered. By knowing how a thing works, it stops being a black box. One benefit, is that you are not only able to repair the box, but you can also be more comfortable about how it should and should not be used.
By democratising knowledge in a fun way, we raise the bar and make it easier to talk truth for everyone.

How
Gently, that's how. I have been a software engineer for a long time, I'm getting a bit slow now, so appreciate documentation written with me in mind over something written for someone with background knowledge. I'm assuming you are starting at zero. I'll be introducing each part of this journey in small steps. As an engineer, I know that a communication barrier exists when people use language that builds an assumption that engineers entirely own all logical thinking. That's unfair, and untrue. This guide will require logical thinking though, everything in a computer is cause and effect, some causes have no (visible) effect at all, remember this as we move along.

So please excuse me if I keep this very simple, it's my whole intent.

Coda
I have marked a few places in this guide with a WORK IN PROGRESS banner, if you have corrections or additions ahead of where you see them, please leave a comment below and I'll jump on those first.

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀All artwork in this guide is my own, please do not copy.
2. Tools

You need 2 tools only, which is hopefully how easy you expected it to be. I'm going to offer an option on each tool and walk through some basic steps.
2.1 A Notepad
notepad.exe Is not an option. Wordpad is not an option either.
You want to download Programmers Notepad[www.pnotepad.org] or Textpad[www.textpad.com] . There is also Notepad ++[notepad-plus-plus.org] , which means I have broken a rule, by giving you 3 options. Live with it. Better yet, if you have any code editing tool you use already, that is fine, in fact here is a free protip.
Learn to use one text editor well, it's more efficient to be good at one tool and use it for other jobs, than to memorise all the hotkeys in a dozen different tools. One good editor[learn.onemonth.com] is better than a huge swiss army knife of them.

2.2 Differencing
If you have a good memory, you can just skip this step. Differencing tools will help you in the longer term. By comparing your file to a backup of it, you can see what you changed between a working and non working version of the file and spot what you changed and broke more easily. Whenever you edit an ECF file, your changes will be focused in one area, or sometimes scattered all around, and remembering what you changed gets very tricky. You might be able to keep track, but after a while this gets error prone, diff tools often help you spot a tiny missing character in the text by highlighting an area. You can choose not to use a differencing tool when you start out editing, and that's fine if you want to skip ahead now and come back later.

2.2.1 Option #1 Windiff
You can download the windiff tool here[www.grigsoft.com] This is the simpler diffing tool to use, but requires that you make backup files along the way. Which is a bit manual, and will mean slower working because unless your text editor will create backups for you, means working carefully and consistently. But is dead easy for non "technical" people. If you understand version control though, try option #" which is using git in offline mode.
Download windiff [www.grigsoft.com] place it in a folder some-place in your Windows path[www.computerhope.com]
To install windiff:
  1. Close and command prompt you have open now. Unzip the tool into a folder, a bit like this.
  2. Now go into system settings (My computer , Properties) And press the button to edit environment variables.
  3. You can add to either the system variables or your user variables at the top set here. Either one will work. Add an entry like shown, It needs to be the same folder you put the tool into on step 1.
  4. Open a new command prompt. Note it has to be a new console, any old console will not have picked up the change to your path variable. It's a surprisingly common mistake to forget, it has to be a new CMD window.
If you do choose to manually edit your path, remember to use a semicolon ";" to separate each searchable folder.

How to see differences
1. Open steam, go to the game in your library, and click properties
2. , then click Explore Files
3. In explorer, select the "Configuration" folder, now press (hold down) the shift key, right-click the folder and select "copy path to clipboard"
4. Open Config_Example.ECF in your text editor, go to any blank line and type on the blank line
# This is a comment
5. Save the file as Config_Example.bak, note the extension changes
6. Open a command prompt "cmd"
7. Type "cd " don't press enter, just add the space, now right-click and the path from step #3 will get pasted in. If that does not work, you can copy the path from the address bar, but the trick of holding down shift in explorer will come in handy later, so learn how to do it.
8. Press enter, your console will look like this
9. Type windiff Config_Example.ECF Config_Example.bak

2.2.2 Option #2 Git
This is a command line tool, intended to keep track of programming code. If you understand version control already, then this is the tool for you.
  1. Download git[git-scm.com] and install.
  2. open a command prompt. Go into your content folder (C:\ssd\Steam\SteamApps\common\Empyrion - Galactic Survival\Content\Configuration)
  3. type git status
  4. type git init
  5. type git add Config.ecf
  6. type git commit -m "start"
At this point you have got your first backup of Config.ecf , to restore the file to the last point you used the commit command, simply type.
git checkout Config.ecf
You will loose any edits, a good way of going back to a know version quickly.
If you have made any changes to the file you can see those changes (difference)
git diff Config.ecf
If you have made a number of changes, press down arrow until you see a prompt [[end]] , you can then press "q" to exit git.
Every time you get to a nicely working version update your backup by typing,
git add Config.ecf
git commit -m "Got the rifle recipe to work"
This will save and create a descriptive "message" for that change. The -m flag here means "commit message".
There are a whole lot more git commands that let you do other things too, if you want to learn more, check this guide. Understanding Git (part 1) — Explain it Like I’m Five[hackernoon.com]

If you are familiar with git already, check out my github repository of recipeshttps://github.com/zaphodikus/EGS-gameconfig

2.2.3 Online text diff
https://text-compare.com/

2.2.4 Winmerge
I'm breaking my 2 options only rule again, but if you decide to follow the route of editing the entire .ECF file instead of just pasting pieces to a new file, you will want to use Winmerge. I'll explain the setup of Winmerge here only, and cover usage later. Using Winmerge will require more work on your part, and is not the way I have been doing .ECF file edits.

You can Download winmerge here[winmerge.org], it's a tool that was also available when installing Microsoft Visual C++ IDE. But most of us won't have that, hence the download.
3a. Get Started(1)

3.1 Warnings
This is the bit where I tell you that your game will crash sometimes. Start a new creative game. Do not load your current survival game where you have managed to not die for 200 days game. You could corrupt your save by editing something. Well actually, game file corruption is less likely. But a small fresh game will load quicker.
3.1.1 Why .ECF
Computer programms often used to store all of their data in binary in the beginning. This made sense and still does when you never intend for humans to edit things, and this removes the need for the programmer to even worry about file corruptions or mistakes. Computers don't make mistkaes. So saving data in a binary format that humans cannot really edit made life easy. But as computers get more powerful and supported multiple uses, it became necessary to modify not only the data, but even the program as well. And this meant that game programmers would want to allow collaborative editing. This enabled large numbers of game writing teams to work together without having files in formats that one team can edit, but another team cannot. The same standardising of files to keep them accessible and open to development teams, also make a game moddable. What we are doing here is not exactly modding, since we are not adding new assets or new items to the game, but it comes close. Text files are sometimes a bit tricky for programs to read though. So the programmers try to limit us from just putting any old words or instructions into those files. Anything could happen, we when we edit a file in a way the computer does not expect, so there are some simple rules on what words and characters we may add. So now we can mod the game, we just need to edit those files, and not break any of those rules.

3.1.2 It's not JSON
Some starting points on the rules.
  • The .ECF files look like normal JSON files, but they are not. So it's important to not create a connection to the official file format. If you already have edited the Playfield and system files, you might say, it looks like YAML, but with extra braces, and you won't be far wrong. If YAML just sounds like Camel, to you now, that's fine, because this is a beginners guide. These are all officially standardised file formats or protocols for laying out the allowed text in a file. But since neither of the official formats apply here, I'll not refer much to JSON or YAML again except when it's really necessary.

  • You will notice that there are many .ECF files. You are free to edit the other files, but note, any changes you make get lost when the game files update with a game patch. So you will have to come up with a way of creating a backup if you edit anything other than Config.ecf

3.2 Rules
3.2.1 Objects
Programmers tend to use terms like "object" instead of "item" or "weapon". By using a generic name for all entities in the game, we keep things tidy. Programmers like to use tidy names like "object". Every "thing" in any game is thus an object, in the .ECF file, these are just templates, cookie cutters if you like. All objects of a certain type, are thus alike. An object definition starts and ends with curly brace.
3.2.2 Properties
Okay, so an object is a template, but so far all we have is the outline of one, what is going on inside those braces? Those bits inside the braces are called properties. You can also think of each object as a pattern, and the properties as attributes or even as values. Every object in the game has at least one template. This template defines the object behaviour. Lets look at a boring concrete block.
{ Block Id: 399, Name: ConcreteBlocks
Material: concrete
BlockColor: "170,170,170"
Info: bkiBlockGroup, display: true
IsOxygenTight: true, display: true
HitPoints: 600, type: int, display: false
Mass: 1100, type: float, display: true, formatter: Kilogram
Volume: 10, type: float, display: true, formatter: Liter
Category: BuildingBlocks
ChildBlocks: "ConcreteFull, ConcreteThin, ConcreteExtended, ConcreteExtended2, ConcreteExtended3, ConcreteExtended4, ConcreteExtended5, ConcreteExtended6"
UnlockCost: 0
UnlockLevel: 1
TechTreeNames:
}
Notice that you can change its hitpoints or ability to take damage.
HitPoints: 600, type: int, display: false
or you can change it's "Mass", but there are certain things you don't want to change, because those would crash the game. If a property in here is not obvious to you, just don't edit it.
For example, never change the block ID, and never change the block name. Some bits of an object that you should never edit will be obvious, others you will only know by experimenting.

Something else to notice.
Here we can see the "HitPoints" also have related properties on the same line. Hitpoints has a type "int", this basically means that the value has to be a whole number. Most of the time we do not have to specify is a property has a specific type. Types are storage classes or kinds. More on types or kinds later. For now, "HitPoints" is a number, it also has some more information, it has a sub property called "display". "display" can be true or it can be false, and this controls whether this value is shown in the in game tooltips/panels.
If you look at "Mass", it also has one of these extra information properties called formatter, and that is kind of like the units to use when showing that value. Notice how the "display" is set to true for "Mass".

Finally, you might change a block in some way, then load your game, and notice that nothing happened or changed at all. There are a number of properties that do not appear to work, in that any change get ignored. For example if you edited the line in a CPU core or extender to change the CPU output, it ended up having no effect at all
{ Block Id: 558, Name: Core
Group: cpgCore
Material: metal
ShowBlockName: true
Mass: 90, type: float, display: true, formatter: Kilogram
Volume: 17, type: float, display: true, formatter: Liter
IsIgnoreLC: true
MaxCount: 1, type: int, display: true
IsOxygenTight: true, display: true
Info: bkiCore, display: true
Category: Devices
BlastRadius: 1
BlastDamage: 300
BlockColor: "0,40,0"
EnergyIn: 5, type: int, display: true, formatter: Watt
CPUOut: 10000, type: int, display: true # <== changing this has no effect at all
HitPoints: 80, type: int, display: true
UnlockCost: 0, display: true
UnlockLevel: 1, display: true
TechTreeNames: Misc
}
Changing this from 75000 to 100000 had no effect when I tried it, and you will notice that the developers removed that line later anyway. This is called "hard coding", there is nothing you can do about it.

Comments et al
The file may contain lines that start with a #. Anything after the # is ignored by the game, so you can annotate or make marks like so.
CPUOut: 10000, type: int, display: true # <== changing this has no effect at all
The file also has a line
VERSION: <somenumber>
This line only appears in the config.ecf, not in the others, The version number was added back when Eleon kept changing the format of that ECF file. The game now looks for the current version number and implements the ECF if it matches, the game will also occasionally still load an ECF with the wrong version number if it was a recent version... but don't rely on that because it is rare.

3b. Get Started(2)
3.2.3 Saving backups
If you are not using a tracking tool like git, you want to start saving copies of your working file. It sometimes happens that you edit something only to discover a day later, that it had a bad effect. And by that time you have made other edits, either make backups of the file(s) in a subfolder, or just give them all dates.
The game ignores any files that it does not know about, but it's not always good to clutter the folder, and that's not a great place to actually leave you backups in case the game ends up needing an uninstall.
Another good reason for backing up as you go is to give yourself a way to start over. There is always the chance that an update to the game actually conflicts with your modifications. and then you need to be able to start over. This is unlikely, but because the developers want to help us modify the game, they are unlikely to break it for too many people. This has happened with ship models before, so it can still happen for .ECF files.

3.3 Two approaches
The simple approach to editing is to
copy Config_example.ecf Config.ecf
And just edit as you go, the downside is that you will need to keep adding comments to make it easy to find all of your changes later. I prefer the minimal route where I only edit and keep things I need in my Config.ecf file. So my file looks more like this:
# this is my own Config.ecf file
VERSION: 8

{ Template Name: AssaultRifleEpic
CraftTime: 5
Target: "AdvC"
{ Child Inputs
CobaltAlloy: 5
XenoSubstrate: 20
ZascosiumAlloy: 10
GoldIngot: 10
AssaultRifleT2: 1
}
}
{ Item Id: 2072, Name: AssaultRifleEpic, Ref: AssaultRifle
PickupToToolbar: true
Durability: 500, display: false
DegradationProb: 0.039, type: float, display: false
{
ROF: 0.170, type: float, display: true, formatter: ROF
Range: 198, display: false
NoiseStrength: 100, display: false
BulletSpread: 0.06, display: true
Recoil: 0.288, display: true
Damage: 110, display: true
AmmoCapacity: 45, display: true
ReloadDelay: 3, display: true
DamageMultiplier_1: 4.5, data: head, display: DmgMultiplierHead
DamageMultiplier_2: 0, data: dirt|stone|rock|wood|hullarmored|hullcombat
DamageMultiplier_3: 0, data: shield
}
{
}
UnlockCost: 0
UnlockLevel: 25
TechTreeParent: AssaultRifle
TechTreeNames: Weapons
}
# END
And I just tack more objects on as I go.

The other editing approach of copying the entire file is more complicated in the long run: I will let VulcanTourist explain it better.
every update that modifies Config_Example.ecf creates a workflow:
  1. disable config.ecf (rename to disabled.ecf, etc.) until it has been vetted;
  2. make a version-stamped backup;
  3. compare new and previous Config_Example.ecf files to see what changed;
  4. compare disabled.ecf with new Config_Example.ecf and
    • carry over any update changes and
    • make additional modifications as necessitated by the update changes;
  5. once disabled.ecf has been vetted, rename it to config.ecf and test:
  6. start game and open console BEFORE loading a saved game to check for ECF-related errors or warnings.
This way, you will be keeping track of changes the developers make to the original files, and you are less likely to run into trouble in the longer term. In this way you simply have to add a comment to every change you make inline in the file.

3.4 Gotchas
The most common mistakes are going to be :
  • typos in the names of a property. Go look at the original example file for exact spelling. Properties and values are case sensitive.
  • spaces where there should be none.
  • missing a close brace "}"
If you followed the section on diffing tools in chapter 2, you can now use those tools to try help find your mistake or...
  • make a backup of the file now
  • delete the top half or the file, and try see if the game loads.
  • Exit the game. okay we know which half is bad, grab the bad half of the file and cut it in half,
  • if that loads, we know which half is bad, repeat from step 2 until you have the error
  • Go back to the file backup you made at step 1 , and fix the error.
* cut in half Remember you need to do this only between a "}" and a "{", you cannot cut an template or object in half.

As a last resort.
  1. backup anything you want to keep, then delete all of the .ecf files.
  2. open the steam catalogue at the entry for Empyrion Galactic Survival, open game properties, and verify your game files.
4. Checking

Every time you make a change, you have to completely exit the game, and then load the game again. If you get to the main menu, load your test game file, and check that the recipe you just edited does work.
  • Hit save in the text editor, if you are relying on the windiff differencing tool, check your .bak file shows the change you make is the one you expected.
  • Start Empyrion Galactic and once it starts, press ` (backtick) to open the game console and check for errors.
  • Load your creative game, and check that the item you changed is correctly shown in your inventory or in the constructor.
  • Check the recipe. You must open all constructors that can make this recipe, by opening that constructor and checking that it does in fact allow you to start making the item.
At this point, the game has either crashed to desktop, hung, or produced the cryptic "send email and quit/continue" dialog. If you are lucky, your recipe just needs a few values tweaked.

At this point, you have graduated.
5a. Recipes (1)

This is the point I share a few working recipes. Please do not just copy and paste these recipes into your game and hope that they will work, without reading the chapter just before this one. You have been warned. Here be dragons

Epic Assault rifle Note that this rifle cannot parent in the tech tree from AssaultRifleT2
{ Template Name: AssaultRifleEpic CraftTime: 5 Target: "AdvC" { Child Inputs CobaltAlloy: 5 XenoSubstrate: 20 ZascosiumAlloy: 10 GoldIngot: 10 AssaultRifleT2: 1 } } { Item Id: 2072, Name: AssaultRifleEpic, Ref: AssaultRifle PickupToToolbar: true Durability: 500, display: false DegradationProb: 0.039, type: float, display: false { ROF: 0.170, type: float, display: true, formatter: ROF Range: 198, display: false NoiseStrength: 100, display: false BulletSpread: 0.06, display: true Recoil: 0.288, display: true Damage: 110, display: true AmmoCapacity: 45, display: true ReloadDelay: 3, display: true DamageMultiplier_1: 4.5, data: head, display: DmgMultiplierHead DamageMultiplier_2: 0, data: dirt|stone|rock|wood|hullarmored|hullcombat DamageMultiplier_3: 0, data: shield } { } UnlockCost: 0 UnlockLevel: 25 TechTreeParent: AssaultRifle TechTreeNames: Weapons }
Epic minigun
# Lazer Minigun (Epic) in the tree { Template Name: MinigunEpic CraftTime: 300 Target: "AdvC" { Child Inputs MechanicalComponents: 10 CobaltAlloy: 5 XenoSubstrate: 20 ZascosiumAlloy: 10 Motor: 2 Minigun: 1 } } { Item Id: 2074, Name: MinigunEpic, Ref: Minigun PickupToToolbar: true Durability: 500, display: false DegradationProb: 0.024, type: float, display: false { ROF: 0.043, type: float, display: true, formatter: ROF Range: 198, display: false NoiseStrength: 100, display: false BulletSpread: 0.113, display: true Recoil: 0.24, display: true Damage: 42, display: true AmmoCapacity: 560, display: true AmmoType: PulseLaserChargeRifle, display: true ReloadDelay: 3.149, display: true Tracer: Weapons/Projectiles/TracerLaserShotRed TracerPerBullet: 2 DamageMultiplier_1: 2, data: head, display: DmgMultiplierHead DamageMultiplier_2: 0.09, data: wood DamageMultiplier_3: 0, data: dirt|stone|rock|hullarmored|hullcombat DamageMultiplier_4: 0.2, data: shield } UnlockCost: 0 UnlockLevel: 25 TechTreeParent: Minigun TechTreeNames: Weapons }
Epic shotgun
{ Template Name: Shotgun2Epic CraftTime: 300 Target: "AdvC" { Child Inputs MechanicalComponents: 10 CobaltAlloy: 5 XenoSubstrate: 20 ZascosiumAlloy: 10 Motor: 2 Shotgun2: 1 } } { Item Id: 2075, Name: Shotgun2Epic, Ref: Shotgun2 PickupToToolbar: true Durability: 500, display: false DegradationProb: 0.305, type: float, display: false { ROF: 0.850, type: float, display: true, formatter: ROF Automatic: true, display: true Range: 79, display: false NoiseStrength: 100, display: false BulletSpread: 0 RaySpread: 0.375, display: true Recoil: 1.008, display: true Damage: 150, display: true AmmoCapacity: 11, display: true ReloadDelay: 3, display: true DamageMultiplier_1: 3, data: head, display: DmgMultiplierHead DamageMultiplier_2: 0.015, data: wood DamageMultiplier_3: 0, data: dirt|stone|rock|hullarmored|hullcombat DamageMultiplier_4: 0.4, data: metal DamageMultiplier_5: 0.05, data: metalhard DamageMultiplier_6: 0, data: shield } { } UnlockCost: 0 UnlockLevel: 25 TechTreeParent: Shotgun2 TechTreeNames: Weapons }
Epic plasma cannon Called a scifi rifle in the files
# "Plasma Cannon (Epic)" in the tech tree view { Template Name: ScifiCannonEpic CraftTime: 480 Target: "AdvC" { Child Inputs MechanicalComponents: 10 CobaltAlloy: 5 XenoSubstrate: 20 ZascosiumAlloy: 10 Motor: 2 ScifiCannon: 1 } } { Item Id: 2077, Name: ScifiCannonEpic, Ref: ScifiCannon PickupToToolbar: true Durability: 700, display: false DegradationProb: 0.488, type: float, display: false { ROF: 0.5, type: float, display: true, formatter: ROF Automatic: true, display: true AmmoCapacity: 3, display: true Recoil: 1.44, display: true ReloadDelay: 6, display: true } UnlockCost: 0 UnlockLevel: 25 TechTreeParent: ScifiCannon TechTreeNames: Weapons }

Epic Pulse Rifle
# "EM Pulse Rifle (Epic)" in the tech tree view { Template Name: PulseRifleEpic CraftTime: 400 Target: "AdvC" { Child Inputs MechanicalComponents: 10 CobaltAlloy: 5 XenoSubstrate: 20 ZascosiumAlloy: 10 Motor: 2 PulseRifleT2: 1 } } { Item Id: 2086, Name: PulseRifleEpic, Ref: PulseRifleT2 PickupToToolbar: true Durability: 500, display: false DegradationProb: 0.061, type: float, display: false { ROF: 0.085, type: float, display: true, formatter: ROF ReloadDelay: 3, display: true Range: 224, display: false BulletSpread: 0.038, display: true Recoil: 0.192, display: true Automatic: true, display: true Damage: 130, display: true AmmoCapacity: 56, display: true AmmoType: PulseLaserChargeRifle, display: true Tracer: Weapons/Projectiles/TracerLaserShotGreen TracerPerBullet: 2 DamageMultiplier_1: 4, data: head, display: DmgMultiplierHead DamageMultiplier_2: 0, data: dirt|stone|rock|wood|hullarmored|hullcombat DamageMultiplier_3: 0.1, data: shield } { } UnlockCost: 0 UnlockLevel: 25 TechTreeParent: PulseRifleT2 TechTreeNames: Weapons }

Epic sniper Note, this version uses railgun bullets.
{ Template Name: Sniper2Epic CraftTime: 120 Target: "AdvC" { Child Inputs Sniper2: 1 MechanicalComponents: 20 Electronics: 20 OpticalFiber: 15 SniperKit: 2 } } { Item Id: 2073, Name: Sniper2Epic, Ref: Sniper2 PickupToToolbar: true Durability: 500, display: false DegradationProb: 0.305, type: float, display: false { ROF: 0.425, type: float, display: true, formatter: ROF Range: 400, display: false NoiseStrength: 100, display: false BulletSpread: 0.011, display: true Recoil: 0.528, display: true AmmoType: RailgunBullet, display: true Damage: 600, display: true AmmoCapacity: 13, display: true ReloadDelay: 5, display: true DamageMultiplier_1: 8, data: head, display: DmgMultiplierHead DamageMultiplier_2: 0, data: dirt|stone|rock|wood DamageMultiplier_3: 0.75, data: hullarmored|hullcombat DamageMultiplier_4: 0, data: shield } { } UnlockCost: 0, display: true UnlockLevel: 15, display: true TechTreeParent: Sniper2 TechTreeNames: Weapons }
Railgun bullets I modified these to make them cheaper.
{ Template Name: RailgunBullet OutputCount: 40 CraftTime: 15 Target: "LargeC,AdvC" { Child Inputs CobaltAlloy: 4 SathiumIngot: 20 } }

Tier 2 shield generators CV and BA
# T2 shield gen was missing from constructors { Template Name: ShieldGeneratorCVT2 CraftTime: 90 Target: "AdvC" { Child Inputs ShieldGeneratorCV: 1 EnergyMatrix: 2 Oscillator: 2 CapacitorComponent: 5 FluxCoil: 5 PowerCoil: 1 } } { Template Name: ShieldGeneratorBAT2 CraftTime: 90 Target: "AdvC" { Child Inputs ShieldGeneratorBA: 1 EnergyMatrix: 2 Oscillator: 2 CapacitorComponent: 5 FluxCoil: 5 PowerCoil: 1 } }

Cheaper base busting explosives
{ Template Name: Explosives OutputCount: 5 CraftTime: 5 Target: "SmallC,HoverC,BaseC,LargeC,AdvC" { Child Inputs SteelPlate: 4 EnergyCell: 4 Electronics: 1 } }

5b. Recipes (2)

Boosted solar panels Basically 5x the regular power output
{ Block Id: 1494, Name: SolarPanelBlocks Group: cpgSolar PanelAngle: 30 SolarPanelEfficiency: 5.0, display: true Material: metallight Category: Devices Mass: 250, type: float, display: true, formatter: Kilogram Volume: 25, type: float, display: true, formatter: Liter MaxCount: 50, type: int, display: true CPUIn: 45, type: int, display: true ChildBlocks: "SolarPanelSlope, SolarPanelSlope2, SolarPanelSlope3, SolarPanelHorizontal, SolarPanelHorizontal2, SolarPanelHorizontalMount, SolarPanelHorizontalStand" Info: bkiSolarPanel, display: true IsOxygenTight: varies, display: true UnlockCost: 5, display: true UnlockLevel: 3, display: true TechTreeParent: SolarPanelSmallBlocks TechTreeNames: Base } { Block Id: 1496, Name: SolarPanelSlope Group: cpgSolar PanelAngle: 30 SolarPanelEfficiency: 5.0, display: true Material: metallight Category: Devices HitPoints: 150, type: int, display: true Mass: 250, type: float, display: true, formatter: Kilogram MaxCount: 50, type: int, display: true CPUIn: 45, type: int, display: true TemplateRoot: SolarPanelBlocks IsOxygenTight: false, display: true BlockColor: "110,110,110" } { Block Id: 1513, Name: SolarPanelSmallBlocks Group: cpgSolar PanelAngle: 30 SolarPanelEfficiency: 5.0, display: true Material: metallight Category: Devices HitPoints: 100, type: int, display: true Mass: 150, type: float, display: true, formatter: Kilogram Volume: 15, type: float, display: true, formatter: Liter MaxCount: 50, type: int, display: true CPUIn: 20, type: int, display: true ChildBlocks: "SolarPanelSlopeSmall, SolarPanelSlope3Small, SolarPanelHorizontalSmall" Info: bkiSolarPanel, display: true IsOxygenTight: varies, display: true UnlockCost: 0, display: true UnlockLevel: 1, display: true TechTreeNames: Base }

Easier survival warp drive
{ Template Name: WarpDriveSV CraftTime: 70 Target: "LargeC,AdvC" { Child Inputs EnergyMatrix: 0 PentaxidElement: 100 SteelPlate: 20 Nanotubes: 20 CobaltAlloy: 10 } }

Insane Range HV artillery
{ Item Id: 2168, Name: TurretGVArtilleryWeapon StackSize: 5 Mass: 450, type: float, display: false, formatter: Kilogram Category: Weapons/Items { ROF: 13, type: float, display: true, formatter: ROF Range: 5200, display: false RangeSpace: 8300, display: false AmmoCapacity: 1, display: true AmmoType: ArtilleryRocket, display: true NoiseStrength: 200, display: false CameraShake: 4 ReloadDelay: 13, display: true } }
6. References

The all in one place quick links page.
Downloads

References

I wrote this guide mostly using

Credits
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀All artwork in this guide is my own, please do not copy.
63 Comments
zaphodikus  [author] 15 Feb @ 12:59pm 
Cheers Alphadeath, it's because of folk like yourself, working to make games more fun, that so much of this is worth doing.
zaphodikus  [author] 7 Feb @ 10:28am 
Hi, sorry only just saw this in my stream of updates @alphadeath.
Steam is not that great for sharing large files and text. I use github, for example
https://github.com/zaphodikus/EGS-scenario-Lost-Paladin
Alphadeath 30 Jan @ 4:39pm 
How have I modded ECF files for this game? Hard to list them all. Now that they all currently work, I would play no other way too. I use notepad. Custom config.ecf is no longer a thing, they had bad ID numbers that would conflict with other items from it being so old. Modifying the original files directly and for what you are doing kind of says where you are starting the game from. Changing said files in your save game is the easiest though, then you don't have to find the files for your start location, as it copies them to your save file anyway.

I have solar capital ships. This requires 100x power for engines and more durability for battle resistance. If solar batteries were together, one exploding would take out all that were grouped together. Just a mess. Several changes to solar, as well as what tech trees they are seen on. Leaving a ship in orbit and it dies because it ran out of fuel was a dumb way to die in my opinion. Single player bots taking a cheap shot.
Alphadeath 30 Jan @ 4:39pm 
Weapons work underwater, on land, and in space for all but enemy weapons as they seem to never be where they shouldn't as is. You can set your capital ship heavy weapons to not fire at tiny targets now that they work in places other then space. The thing that made me change them all was the Underwater POI crashed capital vessel that had a ton of things to kill inside and not even the survival tool would fire.

Epic Heavy Armor edit or totally new item Iron Man Suit has infinite flight and no fall damage. Can go to space and back safely in your Armor. Super fun. Total cheat. Can also make yourself not hungry or not tire out, but I don't have issues with that mechanic of the game so they are normal. Some POI you can't just fly away high enough to get away, so it doesn't prevent all stuff.
Alphadeath 30 Jan @ 4:39pm 
Changing Stack limits to be larger, didn't find all of those apparently as many things still have limits currently. Didn't search for such, easy enough to find them all though. Identical armor boosts to stack up more then 1, saves so much space alone though.

Window hit points for bridge of capital ships to survive attacks better when they aim at you in single player and not your ship.

Make more items craft-able, not just recyclable, when using them all the time. Like auto-miner cores. Never seemed to find enough of those.

One alien weapon you can hold for your Iron Man to shoot with longer range then most weapons. As I like building in the game more then the fighting. Sometimes remodeling a base I take over is fun. Other times I scrap the whole thing for higher end blocks till nothing left.

You mentioned liking recipes. Interested in any of mine? How do I share a large file here?
zaphodikus  [author] 12 Feb, 2024 @ 5:09am 
Looks like I need to update the guide substantially. I really stopped building scenarios even before A11, and a lot has really changed. The error used to only hint at which object was duff in earlier releases. I also need to link in some of the new tools when I get a chance too. If anyone wants to be added as a guide maintainer, please do send me a friend request or a PM.

I'm on a hiatus with the game at the moment, so volunteer editors are very welcome.
Myrmidon 12 Feb, 2024 @ 2:17am 
When you get a CoQ error and you chose the "Continue" and then you open the console you may find additional information, usually in red text. I have find what I have done wrong while editing .ecf files faulty, by just looking the console. It is not the best option but it is a helping one, sometimes. If you chose to Quit or if the game crashes generating a log, only the long can help find out what is wrong and of course common sense aka I change the A thing in .ecf and game crashed so I change it back to the proper value.
Commisar Jon Fuklaw 12 Feb, 2024 @ 1:17am 
The most thankless jobs are usually the most important. That said, there's no such list. It's up to the the individual's deductive reasoning skills or experience with similar programming languages.

However, as stated, the log points you directly to where the parsing failure is. It's not the best , since it points out the line, but not the character where parsing fails, but it gets the job done. Back in A12, I was pleasantly surprised to find out that the logs provide any code validation, as it's often the case that there's none.

Digression aside, if you "rubber duck" the line the error has thrown on and find no issue, either you fundamentally misunderstood one or more function or there's something else wrong in the definition the line is a part of (e.g. an error will throw for duplicate parameters such as Mass,Volume, or HP, regardless of whether the associated values are correct, incorrect, the same in both instances, or different in the same).
zaphodikus  [author] 12 Feb, 2024 @ 12:49am 
Do you have a rough list of these errors and their interpretations? I'm no longer editing mods, it's far too thankless a job, but for people who still do, such a list would be invaluable @Jon