Stellaris Dev Diary #182 : The Perils of Scripting and How to Avoid Them

  • Crusader Kings II Expansion Subscription

    Subscribe to the CK II Expansion and enjoy unlimited access to 13 major expansions and more!


  • Crusader Kings III Available Now!

    The realm rejoices as Paradox Interactive announces the launch of Crusader Kings III, the latest entry in the publisher’s grand strategy role-playing game franchise. Advisors may now jockey for positions of influence and adversaries should save their schemes for another day, because on this day Crusader Kings III can be purchased on Steam, the Paradox Store, and other major online retailers.


    Real Strategy Requires Cunning

delta180

Colonel
65 Badges
Mar 30, 2017
835
212
  • Stellaris - Path to Destruction bundle
PDX creates a 4x with pops and sell is like "it's going to be even better than victoria 2!!!, you can do anything with pops!", and then it's the fault of modders that create scripts that touch pops. Besides the product crawls down to unplayable speeds without mods.

All of this was irrelevant when planets had 25 pops. By allowing hundreds of pops on colonies without a proper system to process then, most/all scripts broke (performance wise), and now it's the fault of the scripts and not of the engine. No, the assimilation script was not to blame, the fact that you chose to throw 10.000 pops at it, and have the engine operate beyond its design specs is.

Yes, you can spend time to improve the scripts, but that will always have a marginal or minimal improvement, without solving the undelying issue.
a game engine is not to a game what a car engine is to a car, a game engine is simply the code that you start with before you build your game. An engine cannot "operate beyond its design specs" as you said unless that means not working entirely, the lag is caused on the scripting side and the game code, pops themselves are a construct of the game code and are not present in other games using the same game engine. It is easy to tell that you can fix the problems with Stellaris without changing the game engine or the amount of pops because vic 2 does handle about 10,000 pops and has the same engine

if they reduce the amount of checks made on the pop or optimize how the checks are done they will solve the problem with lag
 
  • 12
  • 1Like
  • 1
Reactions:

UltimateTobi

General
52 Badges
Mar 8, 2010
1.732
927
www.youtube.com
  • 500k Club
  • Stellaris
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Stellaris - Path to Destruction bundle
  • Stellaris: Apocalypse
  • Stellaris: Megacorp
  • Stellaris: Federations
  • Stellaris: Leviathans Story Pack
  • Stellaris: Synthetic Dawn
  • Stellaris: Distant Stars
  • Stellaris: Ancient Relics
  • Stellaris: Humanoids Species Pack
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Lithoids
  • Stellaris: Necroids
  • Europa Universalis IV
  • Europa Universalis 4: Emperor
  • Island Bound
  • Prison Architect: Psych Ward
  • Arsenal of Democracy
  • Europa Universalis IV: Golden Century
  • Darkest Hour
  • Hearts of Iron III
  • Cities: Skylines
  • Cities: Skylines Industries
  • Cities: Skylines - Natural Disasters
  • Cities: Skylines - Mass Transit
  • Europa Universalis IV: Mandate of Heaven
  • Cities: Skylines - Green Cities
  • Prison Architect
  • Cities: Skylines - Parklife Pre-Order
  • Europa Universalis IV: Rights of Man
  • Cities: Skylines - Parklife
  • Europa Universalis IV: Dharma
  • Europa Universalis IV: Mare Nostrum
  • Europa Universalis IV: El Dorado
  • Europa Universalis IV: Common Sense
  • Europa Universalis IV: Rule Britannia
  • Europa Universalis IV: Cradle of Civilization
  • Europa Universalis IV: Pre-order
  • Cities: Skylines Deluxe Edition
  • Europa Universalis IV: Res Publica
  • Europa Universalis IV: Call to arms event
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Art of War
  • Cities: Skylines - After Dark
  • Europa Universalis IV: Cossacks
  • Europa Universalis IV: Third Rome
Even though I personally didn't get any value out of this DD, it still is an enjoyable and informative read.
Thanks! Don't be discouraged; the response to this DD is more positive than to the last one.
 
  • 8
Reactions:

Jrant

Recruit
22 Badges
May 18, 2017
8
0
  • Stellaris: Synthetic Dawn
  • Stellaris - Path to Destruction bundle
  • Stellaris: Leviathans Story Pack
  • Stellaris: Galaxy Edition
  • Stellaris: Federations
  • Stellaris: Lithoids
  • Stellaris: Ancient Relics
  • Stellaris: Megacorp
  • Shadowrun Returns
  • Stellaris: Distant Stars
  • Stellaris: Apocalypse
  • Stellaris: Humanoids Species Pack
  • Age of Wonders III
  • Stellaris: Digital Anniversary Edition
  • Hearts of Iron IV: Cadet
  • Hearts of Iron IV Sign-up
  • Stellaris: Galaxy Edition
  • Stellaris
  • Magicka 2
  • Magicka: Wizard Wars Founder Wizard
  • Crusader Kings II
Code:
#Scope type varies depending on what is selected
# This = selected object or player country
# From = player country

example_button_effect = {
    potential = {
        always = yes
    }
    allow = {
        always = yes
    }
    
    effect = {
        add_monthly_resource_mult = {
            resource = minerals
            value = 5
            min = 5
            max = 500
        }       
    }
}
# This = selected object or player country
Fix the button effect bug?
 

Pachakamaq

Sergeant
41 Badges
Sep 2, 2011
59
32
  • Europa Universalis III: Chronicles
  • Europa Universalis IV: Art of War
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Res Publica
  • Sword of the Stars II
  • Surviving Mars
  • Stellaris: Necroids
  • Hearts of Iron IV: Death or Dishonor
  • Hearts of Iron IV: Expansion Pass
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Surviving Mars: Digital Deluxe Edition
  • Stellaris: Distant Stars
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • Surviving Mars: First Colony Edition
  • Surviving Mars: First Colony Edition
  • Stellaris: Lithoids
  • Stellaris: Federations
  • Hearts of Iron IV: Together for Victory
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Europa Universalis IV
  • 500k Club
  • Tyranny: Archon Edition
  • Tyranny: Archon Edition
  • Hearts of Iron IV: Cadet
  • Stellaris Sign-up
  • Stellaris
  • Europa Universalis IV: Common Sense
  • Pillars of Eternity
  • Europa Universalis IV: El Dorado
  • Darkest Hour
  • Stellaris: Ancient Relics
  • Cities: Skylines
  • Hearts of Iron IV: Expansion Pass
  • Stellaris: Megacorp
  • Tyranny - Tales from the Tiers
  • Stellaris: Synthetic Dawn
  • Stellaris - Path to Destruction bundle
As someone who occasionally has to write mods (only way to add new portraits, for example), I like reading updates like this one. And oh yes, I do know about "you can do this, but shouldn't". One time, I wrote a tiny mod to change my starting date to a custom one, since it kind of looked silly that every alien species under the sun should coincidentally decide to use the same calendar. For a while, everything was well. But then loads of weird bugs, like all my factions disappearing, would inevitably cripple my game.

Eventually, I realized that changing the in-game date was causing the problems, because for some reason a lot of triggers in Stellaris seem to be coded to assume the startdate is always 2200. Change that to 800 for your own weird space lizard civ, and all hell will break loose. A nice lesson into what you can't do when modding Stellaris.
 
  • 2
  • 1Like
  • 1
Reactions:

delta180

Colonel
65 Badges
Mar 30, 2017
835
212
  • Stellaris - Path to Destruction bundle
# This = selected object or player country
Fix the button effect bug?
that is just a comment to tell you what "This" does, it is not a part of the script and the computer never reads it as it has a "#" at the front which denotes that it is for humans and not the computer
 
  • 2
Reactions:

sillyrobot

Lt. General
Jul 18, 2015
1.510
2.796
As someone who occasionally has to write mods (only way to add new portraits, for example), I like reading updates like this one. And oh yes, I do know about "you can do this, but shouldn't". One time, I wrote a tiny mod to change my starting date to a custom one, since it kind of looked silly that every alien species under the sun should coincidentally decide to use the same calendar. For a while, everything was well. But then loads of weird bugs, like all my factions disappearing, would inevitably cripple my game.

Eventually, I realized that changing the in-game date was causing the problems, because for some reason a lot of triggers in Stellaris seem to be coded to assume the startdate is always 2200. Change that to 800 for your own weird space lizard civ, and all hell will break loose. A nice lesson into what you can't do when modding Stellaris.

Weird. I set my start date to 1 and have since 1.9 without ill effect.
 

andriy.gerasika

Major
32 Badges
Jul 14, 2011
741
166
  • Europa Universalis III Complete
  • Divine Wind
  • Heir to the Throne
  • Stellaris: Apocalypse
  • Europa Universalis IV: Mare Nostrum
  • Stellaris
  • Europa Universalis IV: Rights of Man
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris - Path to Destruction bundle
  • Stellaris: Humanoids Species Pack
  • Europa Universalis IV: Common Sense
  • Stellaris: Distant Stars
  • Stellaris: Megacorp
  • Stellaris: Ancient Relics
  • Stellaris: Lithoids
  • Stellaris: Federations
  • Europa Universalis IV: Cossacks
  • Europa Universalis IV: El Dorado
  • 500k Club
  • Europa Universalis III Complete
  • Europa Universalis III Complete
  • Europa Universalis IV
  • Europa Universalis III
  • Europa Universalis IV: Pre-order
  • Europa Universalis IV: Res Publica
  • Stellaris: Synthetic Dawn
  • Europa Universalis IV: Call to arms event
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Art of War
  • Europa Universalis III: Chronicles
Lua would be the conventional choice for this purpose; it's widely used in game modding. I've also seen games (including another space 4x, from 2006) that have what is technically their own unique programming language, but at least use something that is both clearly Turing-complete and actually compile it to binary.

Mind you, the weird Clausewitz scripting language is actually easier for people to learn than you might think, making accessibility of the modding tools much greater than if you needed a full application programming language. It's also just simpler, in some ways.

PDX scripting language and generally DSL is a dead idea.

Regular programming/scripting languages such as Lua are better because of globally developed ecosystem for said programming/scripting languages:
  1. IDE
  2. Debugger (PDX scripting language has none)
  3. Profiler (PDX scripting language has none)
  4. JIT compiler (PDX scripting language has none)
  5. You can read books on Lua, watch YouTube videos about Lua, ask questions about Lua on StackOverflow
  6. You can get a programmer job once you're done modding in Lua
There is nothing special in PDX scripting that can't be expressed in regular programming language. For example:
Code:
    count_owned_pop = {
            count > 2
            limit = {
                has_job = miner
            }
        }
can be rewritten in Java like:
Code:
    pops.stream().filter(pop -> pop.job == Jobs.MINER).count() > 2
etc...
 
Last edited:
  • 3Like
  • 1Haha
  • 1
Reactions:

The_Draco

Sergeant
14 Badges
Feb 4, 2018
98
111
30
  • Stellaris
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris - Path to Destruction bundle
  • Age of Wonders III
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Stellaris: Distant Stars
  • Stellaris: Megacorp
  • Stellaris: Ancient Relics
  • Stellaris: Lithoids
  • Stellaris: Federations
  • Stellaris: Necroids
  • Stellaris: Synthetic Dawn
PDX scripting language and generally DSL is a dead idea.

Regular programming/scripting languages such as Lua are better because of globally developed ecosystem for said programming/scripting languages:
  1. IDE
  2. Debugger (PDX scripting language has none)
  3. Profiler (PDX scripting language has none)
  4. JIT compiler (PDX scripting language has none)
  5. You can read books on Lua, watch YouTube videos about Lua, ask questions about Lua on StackOverflow
  6. You can get a programmer job once you're done modding in Lua
There is nothing special in PDX scripting that can't be expressed in regular programming language. For example:
Code:
    count_owned_pop = {
            count > 2
            limit = {
                has_job = miner
            }
        }
can be rewritten in Java like:
Code:
    pops.stream().filter(pop -> pop.job == Jobs.MINER).count() > 2
etc...
true, but changing the language will not change the actual performance issues, and it would just be massive work to change to Lua, not just for PDX but also for Modders who have to change all theyr mods completely to the "new" language...exapt someone is creating a converter for this... but yah, still the performance problems would remain with another language...
 
  • 4
  • 1
Reactions:

AlexTheNinja007

Recruit
13 Badges
Sep 26, 2017
2
0
  • Cities: Skylines
  • Stellaris
  • Stellaris: Leviathans Story Pack
  • Stellaris - Path to Destruction bundle
  • Stellaris: Synthetic Dawn
  • Age of Wonders III
  • Stellaris: Apocalypse
  • Stellaris: Distant Stars
  • Shadowrun Returns
  • Stellaris: Megacorp
  • Prison Architect
  • Stellaris: Ancient Relics
  • Stellaris: Lithoids
Couldn't help about thinking of Intel's Intrinsic for SIMD when you said (readability and better performance very often correlate…). ;)
 

OldEnt

First Lieutenant
44 Badges
Aug 12, 2019
245
325
  • Magicka
  • Hearts of Iron IV: Expansion Pass
  • Stellaris: Synthetic Dawn
  • Europa Universalis IV: Dharma
  • Stellaris: Leviathans Story Pack
  • Europa Universalis IV: Mandate of Heaven
  • Hearts of Iron IV: Death or Dishonor
  • Europa Universalis IV: Cradle of Civilization
  • Hearts of Iron IV: Expansion Pass
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Europa Universalis IV: Rule Britannia
  • Stellaris: Distant Stars
  • Hearts of Iron IV: Together for Victory
  • Europa Universalis IV: Golden Century
  • Stellaris: Ancient Relics
  • Stellaris: Lithoids
  • Hearts of Iron IV: La Resistance
  • Stellaris: Federations
  • Crusader Kings III
  • Stellaris: Necroids
  • Europa Universalis IV: Cossacks
  • Europa Universalis IV
  • Cities: Skylines
  • Europa Universalis IV: El Dorado
  • Europa Universalis IV: Common Sense
  • Stellaris: Digital Anniversary Edition
  • Europa Universalis IV: Mare Nostrum
  • Stellaris
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Hearts of Iron IV: Cadet
  • Hearts of Iron IV: Colonel
  • Europa Universalis IV: Rights of Man
  • Europa Universalis IV: Third Rome
  • Europa Universalis IV: Pre-order
  • Stellaris: Megacorp
  • Stellaris - Path to Destruction bundle
  • Europa Universalis IV: Res Publica
  • Europa Universalis IV: Call to arms event
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Art of War
  • Crusader Kings II
PDX scripting language and generally DSL is a dead idea.

Regular programming/scripting languages such as Lua are better because of globally developed ecosystem for said programming/scripting languages:
  1. IDE
  2. Debugger (PDX scripting language has none)
  3. Profiler (PDX scripting language has none)
  4. JIT compiler (PDX scripting language has none)
  5. You can read books on Lua, watch YouTube videos about Lua, ask questions about Lua on StackOverflow
  6. You can get a programmer job once you're done modding in Lua
There is nothing special in PDX scripting that can't be expressed in regular programming language. For example:
Code:
    count_owned_pop = {
            count > 2
            limit = {
                has_job = miner
            }
        }
can be rewritten in Java like:
Code:
    pops.stream().filter(pop -> pop.job == Jobs.MINER).count() > 2
etc...
I wouldn't even have considered starting Stellaris modding if it looked like what you are suggesting, just like most people. Paradox script is simple to learn, that's why Stellaris has 18,734 and Hearts of Iron IV 28,851 mods.

Also, Stellaris PDX code does have code validator tool.
 
  • 6
Reactions:

andriy.gerasika

Major
32 Badges
Jul 14, 2011
741
166
  • Europa Universalis III Complete
  • Divine Wind
  • Heir to the Throne
  • Stellaris: Apocalypse
  • Europa Universalis IV: Mare Nostrum
  • Stellaris
  • Europa Universalis IV: Rights of Man
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris - Path to Destruction bundle
  • Stellaris: Humanoids Species Pack
  • Europa Universalis IV: Common Sense
  • Stellaris: Distant Stars
  • Stellaris: Megacorp
  • Stellaris: Ancient Relics
  • Stellaris: Lithoids
  • Stellaris: Federations
  • Europa Universalis IV: Cossacks
  • Europa Universalis IV: El Dorado
  • 500k Club
  • Europa Universalis III Complete
  • Europa Universalis III Complete
  • Europa Universalis IV
  • Europa Universalis III
  • Europa Universalis IV: Pre-order
  • Europa Universalis IV: Res Publica
  • Stellaris: Synthetic Dawn
  • Europa Universalis IV: Call to arms event
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Art of War
  • Europa Universalis III: Chronicles
true, but changing the language will not change the actual performance issues, and it would just be massive work to change to Lua, not just for PDX but also for Modders who have to change all theyr mods completely to the "new" language...exapt someone is creating a converter for this... but yah, still the performance problems would remain with another language...

Changing one interpreted language to another interpreted language indeed won't make a difference.

However Lua has a JIT compiler (https://en.wikipedia.org/wiki/Just-in-time_compilation) which offers order of magnitude performance improvements:
"The C program runs three times faster than the LuaJIT program. The LuaJIT program runs almost 25-times faster than the ordinary Lua program."
https://eklausmeier.wordpress.com/2016/04/05/performance-comparison-c-vs-lua-vs-luajit-vs-java

So, if PDX would implement JIT for their scripts, there will be a performance boost...

Alternatively, PDX could implement PDX script to C++ transpiler, convert vanilla scripts to C++ and link main EXE to the generated C++ code. Mods would still be executed by the interpreter (slow as they are now).
 
  • 2
Reactions:

CPR

Sergeant
12 Badges
Aug 29, 2019
78
62
  • Stellaris
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris - Path to Destruction bundle
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Stellaris: Distant Stars
  • Stellaris: Megacorp
  • Stellaris: Ancient Relics
  • Stellaris: Lithoids
  • Stellaris: Federations
  • Stellaris: Synthetic Dawn
Changing one interpreted language to another interpreted language indeed won't make a difference.

However Lua has a JIT compiler (https://en.wikipedia.org/wiki/Just-in-time_compilation) which offers order of magnitude performance improvements:


So, if PDX would implement JIT for their scripts, there will be a performance boost...

Alternatively, PDX could implement PDX script to C++ transpiler, convert vanilla scripts to C++ and link main EXE to the generated C++ code. Mods would still be executed by the interpreter (slow as they are now).

Do we know for sure that the PDX script is 100% interpreted? Rather sad if so.

As you say, it's not like they even need to switch to a different language. On top of what you suggest, they could just write a PDX script to Lau converter, for example. Or PDX script to java byte-code converter. For sure they could pre-compile the standard scripts and have the interpreter for mods. Plenty of options.
 
  • 1
Reactions:

tobias.mb

General
74 Badges
Dec 16, 2013
2.283
1.635
  • Europa Universalis IV
  • Stellaris: Federations
  • Crusader Kings III
  • Crusader Kings III: Royal Edition
  • Europa Universalis 4: Emperor
  • Stellaris: Necroids
The result is still unreadable script (I will spare your eyes and not post it here), but in my tests it reduced the yearly tick by over 50%, thanks to the complicated effect (modify_species) being run as seldom as possible.
This part is really good news. I often suffer from that very same lag, when I decide to turn thousands of pops into toasters at once.
 
  • 1
Reactions:

The Founder

Field Marshal
On Probation
55 Badges
Mar 13, 2013
12.861
2.820
  • A Game of Dwarves
  • Stellaris: Synthetic Dawn
  • Sword of the Stars II
  • Crusader Kings II: Sword of Islam
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II
  • Surviving Mars: First Colony Edition
  • Surviving Mars
  • Age of Wonders III
  • Hearts of Iron IV: Expansion Pass
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Surviving Mars: Digital Deluxe Edition
  • Cities: Skylines - Parklife Pre-Order
  • Cities: Skylines - Parklife
  • Stellaris: Distant Stars
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • Stellaris: Federations
  • Age of Wonders: Planetfall - Revelations
  • Surviving Mars: First Colony Edition
  • Stellaris: Ancient Relics
  • Age of Wonders: Planetfall
  • Age of Wonders: Planetfall Deluxe edition
  • Age of Wonders: Planetfall Sign Up
  • Stellaris: Lithoids
  • BATTLETECH
  • Europa Universalis IV
  • Crusader Kings III
  • Warlock 2: The Exiled
  • Warlock 2: Wrath of the Nagas
  • Cities: Skylines
  • Stellaris: Necroids
  • Crusader Kings II: Legacy of Rome
  • Europa Universalis IV: Common Sense
  • Stellaris
  • Hearts of Iron IV: Cadet
  • Europa Universalis IV: Rights of Man
  • Major Wiki Contributor
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Hearts of Iron IV: Together for Victory
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: Rajas of India
  • Crusader Kings II: The Republic
  • Hearts of Iron IV: Death or Dishonor
  • Ancient Space
  • Stellaris: Distant Stars Pre-Order
  • Imperator: Rome
"The Perils of Scripting and How to Avoid Them"

Sentence like these, usually show that there is an issue. A underlying asumption that is a dead end: "It works fine, as long as nobody ever makes a mistake."

The asumption that nobody makes a mistake, does not survive success. The easier to use something is or the more popular, the more programmers you get. And the more likely someone will make a mistake. Another rule of programming takes over: Everything that can happen, will happen if something is just used often enough.

"Nobody makes a mistake" is what killed Cooperative Multitasking. It made programmer easier/more accessible, meaning more people made a mistake.
"Nobody makes a mistake" is what killed handling Naked Pointers. And ended up with us having to invent Memory Protection and workarounds to handling Naked Pointers.
I do not think it is going to work here either.

It should not be possible to make a mistake, or at least you should have to go out of your way:
- Taking a worst case scenario like itterating over all empires, every pop: You may want to simply disallow those two to be in the same event. It forces the programmer to fire off a seperate event for each country, wich should allow decent multitasking. Or get's the user not to try that in the first place and look for something more efficient
- You could enforce that flags have to be checked before any other condition in every scope, to allow the more efficient short-circuiting to hit first
- you could disallow the "has_job" limit for count pops scope
- stuff that uses a loop could be capped to 10k itterations or something like that

It may feel a bit restrictive at first. But in the end, 90% of all programming language is there to prevent the programmer (both current and any future one) from making a mistake.
 
  • 5
  • 3Like
  • 3
Reactions:

CrazyJ

Colonel
25 Badges
Nov 26, 2018
1.084
2.314
  • Stellaris: Galaxy Edition
  • Cities: Skylines Deluxe Edition
  • Age of Wonders: Planetfall
  • Hearts of Iron IV: Cadet
  • Surviving Mars: Digital Deluxe Edition
  • Prison Architect
  • Stellaris: Distant Stars
  • Stellaris: Humanoids Species Pack
  • Surviving Mars
  • Stellaris - Path to Destruction bundle
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Synthetic Dawn
  • Stellaris: Ancient Relics
  • Surviving Mars: First Colony Edition
  • Age of Wonders: Planetfall - Revelations
  • Stellaris: Lithoids
  • Stellaris: Apocalypse
  • Stellaris: Federations
  • Stellaris: Necroids
  • Stellaris: Megacorp
if there was code to prevent the devs from making mistakes the 2.2 fustercluck wouldn't have happened
 
  • 4Like
Reactions:

The Founder

Field Marshal
On Probation
55 Badges
Mar 13, 2013
12.861
2.820
  • A Game of Dwarves
  • Stellaris: Synthetic Dawn
  • Sword of the Stars II
  • Crusader Kings II: Sword of Islam
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II
  • Surviving Mars: First Colony Edition
  • Surviving Mars
  • Age of Wonders III
  • Hearts of Iron IV: Expansion Pass
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Surviving Mars: Digital Deluxe Edition
  • Cities: Skylines - Parklife Pre-Order
  • Cities: Skylines - Parklife
  • Stellaris: Distant Stars
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • Stellaris: Federations
  • Age of Wonders: Planetfall - Revelations
  • Surviving Mars: First Colony Edition
  • Stellaris: Ancient Relics
  • Age of Wonders: Planetfall
  • Age of Wonders: Planetfall Deluxe edition
  • Age of Wonders: Planetfall Sign Up
  • Stellaris: Lithoids
  • BATTLETECH
  • Europa Universalis IV
  • Crusader Kings III
  • Warlock 2: The Exiled
  • Warlock 2: Wrath of the Nagas
  • Cities: Skylines
  • Stellaris: Necroids
  • Crusader Kings II: Legacy of Rome
  • Europa Universalis IV: Common Sense
  • Stellaris
  • Hearts of Iron IV: Cadet
  • Europa Universalis IV: Rights of Man
  • Major Wiki Contributor
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Hearts of Iron IV: Together for Victory
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: Rajas of India
  • Crusader Kings II: The Republic
  • Hearts of Iron IV: Death or Dishonor
  • Ancient Space
  • Stellaris: Distant Stars Pre-Order
  • Imperator: Rome
if there was code to prevent the devs from making mistakes the 2.2 fustercluck wouldn't have happened
No code is able to prevent bugs.

But we can atleat avoid doing the things we know are stupid ideas from performance point of view.
 
  • 1Like
  • 1
Reactions: