Friday Facts #392 - Parametrised blueprints

Regular reports on Factorio development.
Iceblade02
Manual Inserter
Manual Inserter
Posts: 1
Joined: Thu Jan 11, 2024 1:33 pm
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by Iceblade02 »

Super cool idea tbh, can't wait to see what people do with it!
Zanthra
Fast Inserter
Fast Inserter
Posts: 232
Joined: Fri Mar 25, 2016 8:18 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by Zanthra »

Blitz4 wrote: Sat Jan 06, 2024 8:20 am ...
Allow me to show you one extreme example to that theory. Could be the future, who knows. So nVidia, they wrote a paper for an AI that would beat Minecraft, but more than that. It wrote instructions to perform the tasks in the game that are required to beat Minecraft as fast a possible. It improved those instructions through a variety of ways, primarily by learning & testing over many iterations. Cool right. It gets better. This was crated using ChatGPT4. Doing so allows the AI to receive instructions from the player. The AI can be playing as if they were the player at every moment to decide what's the most efficient path to the end goal (beating the game), but not share what they're thinking to the player. (I just said AI is thinking, oh boy). What's cool is if the player needs help at any time, they can say, "What's the best thing for me todo right now?" Or "What's the fastest way to build a boat from where I'm at?"
Video covering it in good detail "Minecraft AI - NVIDIA uses GPT-4 to create a SELF-IMPROVING autonomous agent.":
https://www.youtube.com/watch?v=7yI4yfYftfM
...
This is really cool! I tried to do a similar experiment myself to get Bing chat to play Bitburner (not minecraft) a while back, but I didn't have the sort of organized prompts or iterative prompting that they set up in that paper, and with the response limit per conversation for the Bing chat, it did not go well.

What's really interesting to me is how the skill library in their agent is so similar to blueprints in Factorio. Instead of prompting it for every action, they prompt it to create skills, iterate on them until they work properly, then store them to be used at later times. As it progresses, it abstracts groups of smaller tasks into one task, allowing it to manage larger tasks without getting bogged down with those smaller tasks.
omegahacker
Manual Inserter
Manual Inserter
Posts: 1
Joined: Mon Jan 15, 2024 6:12 pm
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by omegahacker »

I didn't have a chance to read through this entire thread, so forgive me if this has already been mentioned, but...:

In addition to parameterized blueprints, it would be very useful to have some kind of "smart upgrader" that could be placed along with the blueprint. What it would do is "watch" for changes to a linked blueprint (located in the blueprint book), and any time that blueprint is updated, it would automatically deconstruct/reconstruct anything that changed in the blueprint. It would have to look at the previous version first to find anything that's been removed, then the new version for additions/changes.

In my megabase this would allow me to make updates and fixes to things like train loaders or entire city blocks, and they propagate automatically throughout.
User avatar
Unknow0059
Fast Inserter
Fast Inserter
Posts: 101
Joined: Tue Aug 08, 2017 7:37 pm
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by Unknow0059 »

I wasn't clamoring for this but it's useful to have.
Blitz4
Inserter
Inserter
Posts: 23
Joined: Sat Mar 07, 2015 9:37 pm
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by Blitz4 »

Zanthra wrote: Sun Jan 14, 2024 8:25 pm
Blitz4 wrote: Sat Jan 06, 2024 8:20 am ...
Allow me to show you one extreme example to that theory. Could be the future, who knows. So nVidia, they wrote a paper for an AI that would beat Minecraft, but more than that. It wrote instructions to perform the tasks in the game that are required to beat Minecraft as fast a possible. It improved those instructions through a variety of ways, primarily by learning & testing over many iterations. Cool right. It gets better. This was crated using ChatGPT4. Doing so allows the AI to receive instructions from the player. The AI can be playing as if they were the player at every moment to decide what's the most efficient path to the end goal (beating the game), but not share what they're thinking to the player. (I just said AI is thinking, oh boy). What's cool is if the player needs help at any time, they can say, "What's the best thing for me todo right now?" Or "What's the fastest way to build a boat from where I'm at?"
Video covering it in good detail "Minecraft AI - NVIDIA uses GPT-4 to create a SELF-IMPROVING autonomous agent.":
https://www.youtube.com/watch?v=7yI4yfYftfM
...
This is really cool! I tried to do a similar experiment myself to get Bing chat to play Bitburner (not minecraft) a while back, but I didn't have the sort of organized prompts or iterative prompting that they set up in that paper, and with the response limit per conversation for the Bing chat, it did not go well.

What's really interesting to me is how the skill library in their agent is so similar to blueprints in Factorio. Instead of prompting it for every action, they prompt it to create skills, iterate on them until they work properly, then store them to be used at later times. As it progresses, it abstracts groups of smaller tasks into one task, allowing it to manage larger tasks without getting bogged down with those smaller tasks.
Very cool. For a few type of games, I believe the paper is more useful than most perceive at first glance. Automated & interactive tutorials are one benefit. Also higher game completion rate would be another benefit. But the big one to me that'd noticeably change games forever would be: dynamic difficulty.

That means, no more choosing Easy, Medium or Hard in a game. To me, that's often the first boss of a game, typically it's a boss that fights with hidden rules and causes you to battle yourself. It's not a good feeling and then to have near every player experience it before the game begins.
AI creates challenges for the players:
1. Challenging for the pro's
2. Fun for the casual's
Had that on my whiteboard for a while. Yes it is about game design and yes stating something like 1 & 2 does mean the game is being designed to be a "fun experience" instead of the best game it can be. Meaning focusing on how others will perceive your work, instead of your vision and what you find fun, adds a constraint to the design. So I put it in the context of only being used when "AI creates challenges for the players." It's a big conversation and a waste of time when you attempt to define player challenges, as solving challenges is a part of every game. The idea is to find ways to use that paper to create dynamic difficulty for the player. How players perceive and go about solving challenges vary from player to player, so having an AI able to create the correct challenge at the right time. Yet for PC games, that is hard. Most all PC games today have some form of sandbox element to them. How could it be used right now to create dynamic difficulty?

RimWorld. A game that uses "story agents" which throw varying amounts of challenges at the player the agent you chose. Since the AI was tasked to solve a linear problem (beat the game as fast as possible) and studied patterns from a variety of players. It'd have to know how to beat the game as fast as possible at any stage in the game. Then it could assign a +- of how the player is progressing toward the end goal, like a chess engine. If the player is going too fast, the AI could throw some big challenges their way. If the player is going too slow, then it could throw some free items their way. That would fit the definition of dynamic difficulty and shows a way it could be used in a sandbox game.

I don't know how it'd be used in Factorio exactly. I like the "Base in a blueprint book" idea. Another one, you just finished building something and don't know what to work on, that AI would know and could prove whatever it suggested. I'm curious if playing around with it in a short scenario would be a faster way of playing with it, as that'd reduce the training time & resources needed. There's a lot of awesome scenarios in the game.

Funny, I just played bitburner first time this year. Took me about 90 minutes until I understood, I'm reading the game's API guide with the intention of creating a worm in JS. That's when I knew that the old "hacking" games are old, lol
aka13
Filter Inserter
Filter Inserter
Posts: 793
Joined: Sun Sep 29, 2013 1:18 pm
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by aka13 »

Rimworlds storytellers are dogshit. The only meaningful way to play is randy random, which is literally random, instead of stupid scaling according to your "wealth".
Any scaling according to the player in general is detrimental to any progression feeling.
There is no reward for getting better, no feeling of accomplishment.
Pony/Furfag avatar? Opinion discarded.
mmmPI
Smart Inserter
Smart Inserter
Posts: 3619
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by mmmPI »

Blitz4 wrote: Thu Jan 18, 2024 1:37 pm Since the AI was tasked to solve a linear problem (beat the game as fast as possible) and studied patterns from a variety of players. It'd have to know how to beat the game as fast as possible at any stage in the game.
No , the AI didn't tried to beat the game as fast as possible this is the alpha-go or stockfish AI in chess, this is not chatGPT. What the AI presented in the video does is repeat what it thinks human would do based on what it gathered from the internet. It would the same way tell you how to play soccer, without having any actual clue from its own , only repeating things considered "trusted".

Had the AI tried to beat the game itself as fast as possible,it would do something similar to a speedrung using all glitches possible and bugs from the program itself, and it would be just very bad experience as tutorial.
Blitz4
Inserter
Inserter
Posts: 23
Joined: Sat Mar 07, 2015 9:37 pm
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by Blitz4 »

Good point.
fusionfan
Inserter
Inserter
Posts: 25
Joined: Sat Jul 27, 2019 2:40 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by fusionfan »

Oh, this is fantastic!
Zarylo
Burner Inserter
Burner Inserter
Posts: 14
Joined: Sat Jan 06, 2018 12:51 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by Zarylo »

I love this!

I had a similar issue with overengineering train stations which i wired to check supply and demand of whatever they were loading or unloading. And quickly figured I can't do a generic solution for each product in the game and doing all of them by hand would take forever (It would also torment me once done because I would have to redo them all if I came up with a better plan later on, which happens all the time.)

My solution was to create a blueprint that loaded or unloaded spidertrons, and export the blueprint string.
I was reading on the forum about how the blueprint string format works and figured out how to decompres and decode it back to json. Then search and replace every occurence of spidertron in it to ... everything else. put all of the thusly generated code in a new blueprint book as described here: https://wiki.factorio.com/Blueprint_string_format
then redid the encoding and compression originally undone and import it to get a blueprint book with a unloading and loading station for each item.

It was a fun project, and with your improvement obviously obsolete.
But that is how improvement is done, and I won't have to search a humongously large blueprint book for the specific station type I want anymore either.
Dune
Fast Inserter
Fast Inserter
Posts: 212
Joined: Tue Dec 12, 2017 4:27 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by Dune »

I don't see the point of this feature - it seems to be an added complexity that puts further menus over the top of the game that is supposed to be being played. Instead of looking at say a train stop blueprint, now I'm looking at an over complicated editor that is like a programming language that probably only programmers will understand.

We've always wanted a blueprint editor, why not make one instead? If you want to quickly replace filters, IE replace a filter of a green circuit for a red, click a filter in the blueprint, it should pop up as always. Change it, and it should say do you want to replace all filters with the same recipe? IE green and change to red. Yes - boom, done. Or use the tried & true, copy & paste, with an option to paste-all of same type.

Why make something completely new that obfuscates the issue?
Image
mrvn
Smart Inserter
Smart Inserter
Posts: 5842
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by mrvn »

Shingen wrote: Fri Jan 05, 2024 12:25 pm for some usecases it's really cool, but i do have my doubts about some parts of it.

Image
1. what would happen if you selected a recipe with 2 ingredients? what about 4?

Image
2. the formulas allowing for certain ratios of ingredients make the blueprints 'generalized'... but only for recipes with the exact same ratios of ingredients (and posiibly also the count of ingredients [1]), which is only 1 step away from just having a blueprint for a specific recipe. doesn't seem that hugely useful.
3. while parameters 1-3 may easily exist as filters in blueprinted train stop inserters, in what manner does the parameter 0 exist in the blueprinted factory? will i need, for example, a constant combinator with that signal placed somewhere while blueprinting?

Same thought here. Is there a way to get the ingredient count from the recipe or the recipe time?

For iron gear wheels I want to request a lot of iron ahead of time given how fast that gets consumed. For centrifuges on the other hand a very small multiplier will suffice. And for electronic circuits I want 2 iron plates to 3 copper plates as per the ratio in the recipe.
robot256
Filter Inserter
Filter Inserter
Posts: 874
Joined: Sun Mar 17, 2019 1:52 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by robot256 »

Dune wrote: Thu Feb 22, 2024 4:26 am
We've always wanted a blueprint editor, why not make one instead? If you want to quickly replace filters, IE replace a filter of a green circuit for a red, click a filter in the blueprint, it should pop up as always. Change it, and it should say do you want to replace all filters with the same recipe? IE green and change to red. Yes - boom, done. Or use the tried & true, copy & paste, with an option to paste-all of same type.

Why make something completely new that obfuscates the issue?
I have to agree. The way the new menus are presented, at least at the moment, there are a features that are only useful for specific playstyles, and the effect of each control is non-obvious if you aren't using that exact playstyle. We're going to see a whole new set of mods and workarounds to make them work for other users. Much simpler to let the user change, copy and paste settings the same way they do everywhere else.
User avatar
NotRexButCaesar
Smart Inserter
Smart Inserter
Posts: 1133
Joined: Sun Feb 16, 2020 12:47 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by NotRexButCaesar »

mmmPI wrote: Sat Jan 06, 2024 11:34 pm
Annihilannic wrote: Sat Jan 06, 2024 10:54 pm It's "parameterisation" (UK) or "parameterization" (US)... pretty sure it is "parametrisation" nowhere?
That's how it's spelled in french, but apparently it's also a valid spelling in english , or at least in mathematics.
In mathematics, and more specifically in geometry, parametrization (or parameterization; also parameterisation, parametrisation) is the process of finding parametric equations of a curve, a surface, or, more generally, a manifold or a variety, defined by an implicit equation
https://en.wikipedia.org/wiki/Parametri ... (geometry)
That is a completely separate word. One is para-meter-isation, and the other is para-metric-isation (the c is left off and the <i>s merge.)
—Crevez, chiens, si vous n'étes pas contents!
mmmPI
Smart Inserter
Smart Inserter
Posts: 3619
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by mmmPI »

NotRexButCaesar wrote: Wed Apr 24, 2024 4:31 am
mmmPI wrote: Sat Jan 06, 2024 11:34 pm That's how it's spelled in french, but apparently it's also a valid spelling in english , or at least in mathematics.
In mathematics, and more specifically in geometry, parametrization (or parameterization; also parameterisation, parametrisation) is the process of finding parametric equations of a curve, a surface, or, more generally, a manifold or a variety, defined by an implicit equation
https://en.wikipedia.org/wiki/Parametri ... (geometry)
That is a completely separate word. One is para-meter-isation, and the other is para-metric-isation (the c is left off and the <i>s merge.)
uh ? In the wikipage they say " "To parameterize" by itself means "to express in terms of parameters".

There this other page of disambiguation : https://en.wikipedia.org/wiki/Parametrization.

To me they are the same word with the same meaning, like parametric equation of a circle https://www.mathopenref.com/coordparamcircle.html
In the above equations, the angle t (theta) is called a 'parameter'. This is a variable that appears in a system of equations that can take on any value (unless limited explicitly) but has the same value everywhere it appears. A parameter values are not plotted on an axis.
To me that seem fitting to use the math word/spelling. Even if there are several regional variations for it.

What would para-metric-isation means ? if not the same as "para-meter-isation".
User avatar
jamiechi1
Filter Inserter
Filter Inserter
Posts: 266
Joined: Wed Jan 03, 2018 10:12 pm

Re: Friday Facts #392 - Parametrised blueprints

Post by jamiechi1 »

Any plans to add this to 2.0? Can this be done with a mod?
CyberCider
Fast Inserter
Fast Inserter
Posts: 129
Joined: Sun Feb 25, 2024 10:23 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by CyberCider »

jamiechi1 wrote: Wed Oct 09, 2024 3:55 pm Any plans to add this to 2.0? Can this be done with a mod?
Maybe I’m misunderstanding what you’re referring to, but… The fff is announcing that parametrized blueprints are coming to 2.0
fly
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Jul 09, 2017 11:02 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by fly »

MatHack wrote: Fri Jan 05, 2024 12:25 pm Lovely feature, great, I would like to request the possibility to set value to a (formula based on) stack size of the selected item.
Now that I played with this parametrization a bit, I'd really like this feature request to be implemented. Having formulas that can depend not only on other variables but also on some object properties (like stack size of an item selected in another parameter) would be really cool! For now I need extra constant and selector combinators for this.
ElderAxe
Fast Inserter
Fast Inserter
Posts: 149
Joined: Thu May 18, 2017 8:04 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by ElderAxe »

fly wrote: Fri Nov 01, 2024 6:52 pm
MatHack wrote: Fri Jan 05, 2024 12:25 pm Lovely feature, great, I would like to request the possibility to set value to a (formula based on) stack size of the selected item.
Now that I played with this parametrization a bit, I'd really like this feature request to be implemented. Having formulas that can depend not only on other variables but also on some object properties (like stack size of an item selected in another parameter) would be really cool! For now I need extra constant and selector combinators for this.
You can already do that. Lets say your item is P0, p0_s will give you stack size of that item and you can use that in formulas for other values.
fly
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Jul 09, 2017 11:02 am
Contact:

Re: Friday Facts #392 - Parametrised blueprints

Post by fly »

ElderAxe wrote: Fri Nov 01, 2024 7:05 pm
fly wrote: Fri Nov 01, 2024 6:52 pm
MatHack wrote: Fri Jan 05, 2024 12:25 pm Lovely feature, great, I would like to request the possibility to set value to a (formula based on) stack size of the selected item.
Now that I played with this parametrization a bit, I'd really like this feature request to be implemented. Having formulas that can depend not only on other variables but also on some object properties (like stack size of an item selected in another parameter) would be really cool! For now I need extra constant and selector combinators for this.
You can already do that. Lets say your item is P0, p0_s will give you stack size of that item and you can use that in formulas for other values.
Oh, awesome, thanks! I didn't see this in the FFF. Do you know if there are other similar vars? Where can I find some reference? Nevermind, found it, there is actually a tooltip over the formula enter field that I somehow never seen before. And it has description of these vars.
Post Reply

Return to “News”