Page 1 of 1

Functional Blocks

Posted: Wed Mar 02, 2016 8:06 pm
by piriform
Combinators (love them or hate them) have a great property in that they are connectable. By connecting and configuring them properly, functional entities (of sometime great complexity) can be created.
This proposal is to extend the combinator model to other (non signal ) entities. By entities, I mean Factorio machinery which includes inserters, vehicles etc.
One way this could be done is to perform a functional decomposition on some existing Factorio entities. By doing this, common or frequently used components would be identified, which when generalized would be ready for connection in a new configuration.

To show how this process could work consider these examples.
A small pump could be decomposed into: electric engine, pump proper (i.e. impeller and housing), electric switch , and a simple controller (looks like a decider)
A locomotive could likewise be decomposed into: chassis, wheels (rail type), combustion engine(s), solid fuel hopper, drive train, controller.
Even something as simple as a burner mining drill could be decomposed into: solid fuel hopper, combustion engine, drill, material retrieval device.

The premise is that many entities share common components. Currently, these components are hidden and can not be directly used. Once revealed, and made usable, new functional entities could be created and the game play value enhanced.
Some examples of possible entities:
Wood Harvesting Combine
Trains with LASERS!
Wall boring contraption for your opponents invulnerable base.

Re: Functional Blocks

Posted: Wed Mar 02, 2016 8:33 pm
by Ranakastrasz
Sounds like going from Warcraft 3 to Starcraft 2, which is good, but could be bad if done like Starcraft 2 did.

More specifically, in abilities/spells.
In Warcraft 3, you had two choices. Either find an existing ability able to give you the functionality you want, or you use a dummy ability, and link that to a trigger (Script) which you use the game's programming language/script and essentially do all of the stuff from scratch. A lot of the work thus goes into figuring out how to work around the limitations to get the functonality you want. This seems like what you see the current situation is like, and I agree.

Starcraft 2, although similar in a lot of aspects, is notable for having a huge number of parts which you can string together to get a massive number of different effects, which meant that it was nearly infeasible to have an ability, or other effect that had to be scripted, so long as you have the components. However, this came at a massive price. The program that handled this was extremely complex, poorly documented, and if there isn't already a similar ability for you to steal the set of connections from, it was nearly impossible to figure out how to set it up.

This is a good idea, but you need to make sure that it remains possible to comprehend.

Factorio, at least, already has some of those aspects, at least for Ammo. I had a lot of fun figuring out how to tear apart the functionality of a shotgun, poison capsule, and railgun, to make a Flamethrower that worked like I wanted.

While splitting data into modules like this can work, I can say with certainty that it is a pain to try and track down each piece, being spread over 4 or more files, which can be frustrating.

Re: Functional Blocks

Posted: Thu Mar 03, 2016 2:03 am
by piriform
I'm not familiar with Starcraft 2 but the problem you describe sounds familiar. I agree, breaking Factorio entities into hundreds of bits, some of which can be connected, sometime, with some results is probably not optimal. As a matter of fact, I'm pretty sure that some entities (like BELTS) should not be touched ( at the risk of invoking singularity :lol: )

Quite frankly, the functional blocks is still at a conceptual (i.e. fairly vague) stage, and is not ready for even a Design Intent type of document, let alone Design Spec.
Some current issues;
i) Level of granularity. Do you break the functionality down to the first level or go down further. Is there a generic definition of levels available or even possible.
ii) Connectivity between newly created primitives. Circuit networks are relatively straightforward as all they deal with are signals with well defined and understood properties. Connecting physical (virtual) entities without good boundaries can get very messy. Unpredictable results, non function etc (i.e. the Starcraft 2 problem). At a minimum , impossible connections should be disallowed and the rest normalized in some fashion.
iii) Which primitives to uncover (create)
Some possible categories
- engines (thermal, electric)
- mechanical power transmission (rotary, linear, cyclic?, )
- actuators (pumps. drills, wheels, hands, arms, switches)
-controllers ( simple = 1 decider, vehicle type controller, stitch your own with combinators)
- odds/sods - fuel hopper/tanks , burners, guns?
- chassis/frames/skins - something that holds and encloses all the bits comprising an entity.
Obviously the above list is incomplete and would require a lot of thought into what functionality is desirable and possible.

How do I see this working from a game play perspective?
A player would need to manufacture (or craft) the above blocks and then connect (or assemble) them. Assembly would be done manually in/on large surface (Workshop/ Assembly Table). Mixing of primitive blocks and existing blocks would be desirable but not necessary.

In closing, I believe the idea of Function Blocks does have merit, and if properly implemented would add a great deal of game value.
My intentions behind these posts were to stimulate discussion and support which could be used to motivate the Design & Modding Community.

Re: Functional Blocks-Construction

Posted: Fri Mar 04, 2016 4:45 pm
by piriform
This picture shows a possible approach on how these blocks could be used. Please note, the items used are Symbolic a=i.e representative.
funcblocks1.jpg (40.61 KiB) Viewed 3936 times
stone floor = construction surface distinct from the Factorio terrain (sort of like the NESTT mod)
Oil tanks = Wheels ( since they are round-ish)
Steam Engine - generic solid fuel engine
small pump- electric generator
pipes - mechanical power transfer
chest and burner inserter- solid fuel gas tank for the engine
chest and smart inserters- Since this is a harvester a mechanism to pick up and unload items. For a truck, inserters would not be needed
Radar- a sensor gracefully provided by the Mod community
Combinators- a mix of combinators and generic vehicle controllers extracted from the vehicle functionality

Notice in this configuration, a mix of existing components and newly extracted generic components. This, of course is the ideal case.

Re: Functional Blocks

Posted: Sat Mar 05, 2016 11:17 am
by ssilk
Sorry, maybe it's my English, but I have no idea (*), what this is really about.

Be more specific. :)

(*) not really true: I read of course all, but for me this is quite vague. I don't see the new game-idea behind combining elements out of others, cause that can be already done: For example, a train station consists out of rails, minimum one train stop, signals, inserters, chests, belts ... and that is true for most other elements.

Re: Functional Blocks

Posted: Sun Mar 06, 2016 2:14 am
by piriform
Sorry, I thought I was being perfectly clear (in my own mind maybe :lol: , I mean TRAINS with LASERS?)
Seriously though, I guess I fell into that trap and did not state the formal objective.

The intention of this feature is to allow the users to construct new and or modify the functionality of existing Factorio entities.This is to be done by creation of a set of new, single function entities capable of being connected to each other to existing Factorio entities. The difference between existing entities and the proposed set is that the existing have a well defined functionality which is relatively complex. Moreover , existing entities have definite rules of deployment. The propesed entities would have much smaller inherent functionality (e.g. switch, wheel, mechanical power producer i.e. an engine,etc.), but if properly connected could emulate existing and or create entirely new functionality.

This feature would enhance the gameplay by providing the user with additional options in solving the game challenges. Rather than following a predefined methodology (no matter how diverse), an user would have enhanced ability to exercise their creativity in devising unorthodox solutions.
A positive side effect would be a decrease in demand for changes in certain types of functionality (e.g. inserter variations, new vehicles, etc.)

p.s. and if that's not specific enough, to use your example with a train station. Imagine being able to construct an entirely new type of train signal ( e.g. gives priority to north bound trains, or trains that haul certain types of material, when certain conditions, like shortages, exist)

Re: Functional Blocks

Posted: Sun Mar 06, 2016 2:52 am
by ssilk
Ok, that was what I've been expected. :) Still not specific enough. :)

For example with the trains with lasers: Where is the functional difference between your suggestion vs. a train with a (not yet existing) module-slot where you can plug in a (not yet existing) laser module?

Where is the difference to - for example - Minecraft, where you combine items in such a way, that the result is a new item?

Where is the difference to crafting in general?

And how the hell should this work? Maybe you can name a game, where that kind of mechanic is already working? :)

Re: Functional Blocks

Posted: Sun Mar 06, 2016 3:53 am
by piriform
OK, I'll try to answer in a point by point form

For example with the trains with lasers: Where is the functional difference between your suggestion vs. a train with a (not yet existing) module-slot where you can plug in a (not yet existing) laser module?
That's one of the reasons to develop this. No more request to develop (or mod) a train with laser plug in.
Where is the difference to - for example - Minecraft, where you combine items in such a way, that the result is a new item?
Some definite similarities to Minecraft ( and others like Skyblocks etc). I'm thinking more along the line of embedding Meccano or fischertechnik into the game.
Where is the difference to crafting in general?
In crafting one uses implied (invisible) recipes. Connecting (probably need a better word) is very explicit, not much different than construction (as I tried to illustrate in the previous post)
And how the hell should this work? Maybe you can name a game, where that kind of mechanic is already working? :)
It should work very well , or not at all :P . I believe that Ranakastrasz, in a prior post, described Starcraft 2 mechanic that is very similar. He also cautioned against implementing such a mechanic badly.

Re: Functional Blocks

Posted: Mon Mar 07, 2016 1:22 am
by ssilk
One last question: Do you think, that - if this would be possible to implement into software (*) - it would still be the same game? ;)

(*) what I doubt, cause what is something that I built out of one wheel, a motor (but no gasoline tank) and some light on it? :) The game needs to have knowledge of real physics to be able to calculate, that this constructed thingy cannot drive.

Re: Functional Blocks

Posted: Mon Mar 07, 2016 2:43 am
by piriform
I see two questions here
a) Is it possible to implement this with a reasonable amount of development resources yielding expected results?
b) Will this be a change for the worse

To answer the last question first, I ask myself how do I see Factorio? I mean what is it all about? Is it landing on a planet and starting with minimal resource building something big? Or is it about the journey? How to get there, what problems to solve, obstacles to overcome?
I think that you already know my answer.

OK, enough of this maudlin stuff, let's take a look at the cold hard reality (or virtuality :))
I could be totally off base, as I haven't looked under the covers (i.e. dug through the code), but I'm convinced that internally, Factorio is not a physics engine. There is no physics emulation going on, even though there is some evidence that things like conservation of energy, and mass ( in fluids at least) are generally observed. If I'm wrong, please explain all those locomotives fitting into a 1-2m wooden box.

Your comment about the wheels is interesting, as I've been thinking about that issue as well.
Consider the humble wheel. Simple, but if you wanted to do a full physics emulation, things get kind of complicated. Traction issues, rotational inertia, torque, orientation, gyroscopic moment, and so on.Fortunately all of that is not necessary, nor is this how things work in Factorio. Unless a Designer, in a wrathful voice tells me I'm wrong, wrong, I'm going to believe that things work something like this.
Locomotives and automobiles have wheels. But these wheels are just cosmetics. The vehicles glide (change position), not on wheels (which BTW are not turning), but because they have a gliding property.
In the Functional Block proposal, the wheels are really containers for the gliding property. In fact there could be two types of wheels (with a rule there must be left and right). One a propulsive type of wheel, the second a steering type. Without both types, self propelled, controllable vehicle would not work (so no motorbikes, bummer!).

Another simple example would be to consider something like an inserter. I'm guessing that as implemented in Factorio, an inserter is comprised of two sensors monitoring pick up and put down areas, a timer, a simple controller and a teleporting function that moves the inserted object from A to B. All of this is disguised by the ikon animation. There are no motors, arms, hands, etc.

Similar short cuts could be made for engines (prime movers). No real need for torque, rpm, etc. An adequate block could be made by modelling it as a power transformer that consumes electrical or thermal power and generates mechanical power (i.e. watts). Propulsive wheels could then be modeled as consumers of mechanical power generating gliding motion.

Re: Functional Blocks

Posted: Mon Mar 07, 2016 3:41 am
by ssilk
So you suggest, that it is not all a "free form". Sorry, it took a while for me to understand.

Well, what you probably mean are: frames, modular design, building on factory streets, automation streets, assembly lines, Star Wars like robot factories, car production...

Well, in my eyes the basic of such a technology are frames. We already have the flying robot frame ... obot_frame
But that simply can be made to a construction or logistic robot.

But the basic idea of a frame is similar to the modular armor in the power suit: You have slots and you can put items into it which change the behavior of finished entity.

So other frames are of course thinkable, like a car frame, a tank frame, etc. Depending on what/how many you plug into the frame the behavior changes.

Some threads for you to read:
viewtopic.php?f=76&t=338 Factories with built-in conveyor belts
viewtopic.php?f=27&t=992 A factory production line
viewtopic.php?f=6&t=2756 Factory Designer like a 4x games Space Ship Designer
viewtopic.php?f=6&t=3142 Modular Inserters
viewtopic.php?f=6&t=3880 Suggestion: Modular Transport
viewtopic.php?f=6&t=4314 Transport Belt / Inserter Creation changes.
viewtopic.php?f=6&t=5463 Modular Tanks
viewtopic.php?f=6&t=5696 Long-distance robots
viewtopic.php?f=6&t=6012 Modular Locomotives
viewtopic.php?f=6&t=7233 Modular Tanks Expansion
viewtopic.php?f=6&t=8117 Modular Combat Robots
viewtopic.php?f=6&t=9291 More wagons types [Roboport, Turret, Battery, Logistic...]
viewtopic.php?f=6&t=10286 More types of module for Modular/Power Armor
viewtopic.php?f=6&t=12786 Modular Turrets
viewtopic.php?f=6&t=13286 Modular Vehicles
viewtopic.php?f=6&t=14473 Modular armor expansion
viewtopic.php?f=6&t=14595 Custom efficiency / modular machines
viewtopic.php?f=6&t=16492 Multipurpose modular platform wagons

Re: Functional Blocks

Posted: Mon Mar 07, 2016 8:18 pm
by piriform
Nope! As Sheriff Buford Pusser would say: "What we have heah is a failure to communicate!" :lol:
Take a look at the following diagram *

funcblockexmp.jpg (48.29 KiB) Viewed 3832 times

*This is a test

edit- updated the pic to make it more legible

Re: Functional Blocks

Posted: Mon Mar 07, 2016 9:08 pm
by Koub
The writing is very small and terribly pixelated, but the 3 is a car that generates energy and has some kind of loop back, correct ?

Re: Functional Blocks

Posted: Mon Mar 07, 2016 10:26 pm
by piriform
in this example ;). In general :idea:
p.s. thx for letting me know about the legibility. It was pretty bad. Hopefully now it's better.

Re: Functional Blocks

Posted: Mon Mar 07, 2016 11:30 pm
by Koub
Much better, thx :)
I'll keep on reading the topic, can't get myself to have a real opinion. I can't step back enough to see all the benefits/drawbacks and possible outcome of what you're suggesting.

Re: Functional Blocks

Posted: Tue Mar 08, 2016 9:24 am
by ssilk
I won't support the suggestion in the pic, cause it's not clear for a player, which element could be coupled with which other element. The player has to guess. He needs to have luck to find a combination, which works well. Where are the limitations? I also miss a physical feedback. What I think that is really needed is some kind of "frame", a physical limitation. Some elements have to be placed on special points. The above pic doesn't show that. It's a completely free form.

But I know how a very similar idea can be implemented:
See this mod viewtopic.php?f=97&t=18637 NESTT: Build your base inside a train

What functionality the train has, depends on what is built INSIDE. And the inside works more or less exactly in the same way as the outside. Isn't that exactly what's wanted?

BTW: Such an element was planned for the stage after the rocket launch - building a spaceship.

Re: Functional Blocks

Posted: Tue Mar 08, 2016 3:31 pm
by piriform
I'm, of course, disappointed that you won't support the proposal and won't argue your decision.
In closing however I do wish to point out the following:

a)If you look at my previous posts you'll find a reference to NESTT, and yes there are some obvious similarities.
b)Frames are used in two contexts here. A recipe ingredient for robots, and containers for the plug ins. These should not be conflated.
c)Guessing and luck are not the most important factors. Problem solving skills, intuition and logical thinking are far more important and useful in devising a custom solution . No different than in starting to play with combinators (just ask any noob!). When you have a chance, why don't you ask the Designers whether they expected to see anything like some of the combinator creations.
d)Free form vs structure- I realize there are fans of both options. It is quite clear that we are pushing opposite sides of that spectrum. Merits of each can be debated ad nauseam (just like: Trekkie vs Star Wars fights).

PS I wish I could buy you a beer or five and convince you!. Auf Wiedersehen.

Re: Functional Blocks

Posted: Tue Mar 08, 2016 4:19 pm
by ssilk
When I go back to the post, where you mentioned the NESTT mod ( viewtopic.php?f=6&t=20759#p130929 ) and with my current knowledge now looked at that pic I finally understand that pic. :) Before it was just a pic. I didn't saw, that it should look like a car or so. Sorry, I can't help, I really didn't saw it. :)

Of course I read the sentence, where you mentioned the NESTT mod, but I saw no relevance in combination, which color the floor has. :)

That type of mixing relevance is also the problem with this suggestion and the reason because I asked many times, what you finally mean.

So I understand now also the second pic you posted above. And yes, if the first picture is the "frame" and the second "how everything inside that frame can work together", well, that looks promising. :)

Re: Functional Blocks

Posted: Tue Mar 08, 2016 7:34 pm
by piriform
Yes, I can be obscure at times, sometimes deliberately so. For example, I forgot to explain what the two little icons in the lower left hand corner represent
Still Curious
Koub's comment got me thinking about the meta game. So let's say, this feature got implemented and implemented well at that. What does that mean for Factorio?

-Experienced, brave players will gain an entirely new corner of the sandbox to explore
-"Show your Creations" and "Gameplay Help" forum threads will explode
-"Bug Reports" will not, as bug reporting for this aspect of the game should be banned from the start
-Certain modes of play (e.g. RTS, dry semi-mobile outposts) will benefit
-Feature creep (i.e. demand for simple variants of the existing objects should be contained
-Development team's resources could then be redirected into adding new areas(i.e. not trains with lasers, OTOH fish with lasers? oh, wait!)
-Or perhaps they can concentrate on the "Big Problem"

Clearly the above is not a comprehensive nor balanced list. Perhaps I'm having a derp moment and missing the obvious, if so please wade in.

Re: Functional Blocks

Posted: Wed Mar 09, 2016 9:14 am
by ssilk
For me it's clear, that this should not be a general feature. The way this normally gets implemented is first to enable the possibilities into the game, so that modders can use it. Most of that work is already done, what's missing is the functional layer, how everything is connected and how it will influence the linked entity. The next step is then to look, what is good (and bad) gameplay with this feature. That's are up to 2 years.