Please consider supporting us by disabling your ad blocker.
Please consider supporting us by enabling cookies.
Developer Blog: Laws Part I - Using the System
Posted on June 17th, 2020 08:01 AM EST
Before we dive into that deeper, here is the overview over our Eco Update 9.0 Blogs:
- New Government system: Constitution
- New Government system: Elections and Elected Titles
- New Government system: Demographics and Wages
- New Government system: Laws Part 1: Using the system (This blog)
- New Government system: Laws Part 2: Taxes, Ownership, Property, and Wealth
- New Government system: Laws Part 3: Tour of different actions, and Executive Actions
- New Government system: Districts
- New Crafting: Work Parties
- New Crafting: Labor System
- New Crafting: Modules and Efficiency Redesign
- New Crafting: New Tech Tree
- New Building System: Hammer and new Building Styles
- New Mining System: Mineral Dispersion and Drill Usage
- New Mining System: New Processing Path and Pollution Info
- New Animal System: Attacking Animals
- New Ecopedia System
- New UI
- New Audio (This blog)
- New Hosted Worlds System
This strange, self-referential loop of laws – that they govern the very people that enact them – creates a new kind of challenge for players: to consider their own needs along side those of the group, of which they are apart. You have to think outside of yourself, take a holistic view of the situation around you, and design a system that will not only help you achieve your goals but be accepted by other citizens. The very act of engaging in this kind of systemic thought is powerful: considering yourself in the context of society, considering the needs and motivations of others and weighing them against your own is a huge part of empathy and building a better world. I believe both the most fun and the most powerful kind of learning happens in these situations, when you are given a challenge that requires a shift in perspective to solve.
And so it shouldn’t be surprising that laws are a major part of our new Eco 9 update, in fact they’ve been essentially entirely rewritten for 9.0, making them fundamental to all actions and stats in the game. What’s more, the foundation for the system has been updated quite a bit, so all future additions will be much easier and faster and more powerful. We’re set for the long-haul with this update for all kinds of crazy stuff we want to do with government, like towns/cities/countries.
If you’re familiar with Eco v8 and prior, you’ll remember laws are created in a webpage hosted by the Eco server. This has been changed to create them in-game, setting them via the new Court object:
Courts are setup as part of the government system (earlier blog here), which in 9.0 will be designed by players. You can decide who is allowed to set laws, or require that laws be passed by election (blog on elections and elected officers here). Each court holds up to three laws:
Since laws are civic objects, they are governed by the constitution, and may require elections to change. Thus on the second slot, you see a proposed law change that is currently under election. Fun fact: with all civics objects, you can update them via elections and all the usages of them will auto-update too (ie, if you update a district used by a law, that law will update to the new district when the election succeeds).
You’ll also see the icons for each law. These are a little visual language we created to represent what the law does. The left one, for example, shows an icon for currency creation, and prevention, meaning it’s a law about preventing currency creation. This lets you know at a glance what a law does, and those icons are reproduced wherever the law is referenced. Plus they look cool, like a kind of legal hieroglyphic.
So let’s dig into how the law works. Here’s a look at a basic law that prevents all chat.
With each law, you define a set of causes and effects. Here, the trigger is the action, ‘Chat Sent’. The effect is very simple in this case, Prevent. If this law is active and a citizen tries to chat, this is what they get:
So not an actual law you would use in the game, but an example for simplicity. What you have is basically a programming interface, where you create code that defines civics behavior in the game. Say we want to change the effect to tax instead of prevent. You can click the drop down by prevent and get the list of different effects that are available:
Choosing ‘Tax’, we then get a set of properties to configure, with some nice defaults:
Note the gear on the top left, clicking this shows the advanced properties:
By default, it targets the Citizen, which is whoever performed the interaction, in this case sending the chat. You can see that the icon for Citizen has the ‘Chat Sent’ icon to make this connection. You can change this if you want, but since usually it’s common to tax the person doing an action when performing a law, its hidden by default. This way we aim to streamline the process of creating laws, making it as simple as possible, but still have room for powerful stuff for advanced users.
If I click Citizen, I can pick other targets for the tax:
You can see both users and demographics/titles are included (check out demographic blog here). So if you want to get fancy, you can make an action that taxes a whole group instead of just a single person.
Next we can set the tax amount. This as well has flexibility for simple and powerful use. By default, you can just enter a number, like ‘1’ is entered here:
But if you click that dropdown, you get a whole slew of ways to define how they’re taxed:
Now you can use a calculation in determining how the tax amount is determined. Say we want to tax based on a percent of wealth. We can choose ‘Percent’ and for the value choose ‘Wealth’:
Now when you send a chat, it will tax you 10% of your wealth. Not exactly ‘free’ speech am I right (sorry).
You can see all this getting described in words as you construct it:
This is a nice check on what youre constructing: you can see it in both the constructible view with tables, and in plain English. Once this law is active (assuming the dubious result that it would actually get passed in election), you get this when trying to send a chat:
Town coffers being filled! With our chatty populace we’ll be building that new road in no time.
But wait, all this tax on communication could have a negative effect. Perhaps we want to make exception. That’s what the conditions are for. Let’s revise this law and add an ‘if’ clause:
Picking the drop down, we get a big list of ways to determine conditions:
Let’s make an exemption based on skill – highly skilled citizens can chat freely. So we select Skill Requirements:
And choose which skills we want to look at:
And there we go, it checks if they’re a carpenter and only taxes if they don’t have it.
Now when I try to chat, I’ll get some more detailed reasons:
We made it a goal to make laws very visible to players, so when one passes or fails it tells you why, and it tells you what effect was rendered. So here you’re getting taxed, and you know why (because you’re not a carpenter), and all the colored text can be moused over for more details.
So you see the approach we’re taking with laws and all civics actions: making them flexible and powerful, but simple to use, and with lots of documentation and data available at your fingertips to understand what’s going on. Don’t need a lawyer to get around in Eco, the goal is for most citizens to be actively engaged in the civics and economy systems, so everyone is part of the governance rather than an elite group of players.
For part 2 of the laws blog, I’ll get into the actions that you can detect and trigger very specific results on, which leads to all kinds of powerful results. And it’s a big list now indeed, here’s a small part of it:
Going forward, many new features will use what we’re showing here. For example, defining a conditional (Citizen must have carpentry) is an object on itself, meaning it can be used anywhere you want a conditional, and in fact it is used on Work Parties already, if you want to define who can join your work party:
This is one of the reasons we prioritized the civics system with Eco 9, because it requires a foundation that will be super useful for all the future features, and it’s come along great and will be a solid base for all that’s to come. We have a very flexible way to define causes, effects, conditionals, and all kinds of other logic that will apply to many parts of the future game. We’ll be sharing those ideas with you as well, and you can see a lot of them in the other new objects like demographics, wages, elections, etc.
And so we get a step closer to a lot of the bigger goals of Eco – where civic engagement by all players is necessary to save the world and prevent catastrophe. Where there are defined government positions that give powers to specific citizens, giving civic responsibility and power in a planned and efficient way, and having to think about how all that should be designed from the ground up. We’re already seeing some amazing societies being crafted with these new systems in our 9.0 test servers, and can’t wait to see what else people come up with.
I'll be covering the contents of this blog in our next livestream this Friday at 11am (11:00) PDT / 8pm (20:00) CEST, drop by and ask me your questions!
- John K., CEO, Strange Loop Games