Archived Assembly Table - A take on crafting

chridal

New Member
Contributor
Design
Context
The last few days we have been discussing 'normal mode' (earlier, survival mode) on IRC. This mode aims to provide base gameplay for mods to build upon. Too be overly reductionistic about it; it would include what one would expect to find in a voxel game. In regards to this we would need an easily extendable crafting system, and this is a take on that need.

The concept

The assembly table is a take on crafting where the attention is directed towards the materials used rather than how the item is built. Some might suggest that this is overly simplistic, wanting to impose elements of physical reality through weighting the process of assembly as much as the materials used. Although this might be interesting in its own regard, it is very hard to generalize block or item crafting down to a core system that will satisfy this. The assembly table seeks to satisfy the wants for complexity through the use of different types of assembly tables to produce different results. Also, the table allows for the usage of a tool or modifier, together with the input, to produce various outputs. There is also the option of adding the requirement of the user having to have certain recipes, in some sort of recipe storage unit (e.g. books), which can further add to the gameplay. Let’s have a look at what the assembly table could look and function like.

The representation found beneath is (possibly) overly simplified, and would not necessarily reflect the only, or final implementation. Also, the actual contents of the slots do not make sense, but bare with me.



Input Slot
The four slots on the left are the input slots. If you were to add something into all four slots, the grid would expand downwards by two, allowing an infinite amount of material requirements needed to craft any item.

Tool / Modifier
The slot in the middle is the tool or modifier slot. Imagine the following example; you are trying to craft an electric furnace, and in addition to craft one of the core components: the heating element, you would need a screw driver. Different assembly tables could have different amount of slots for tools required for its recipes.

Output slot
The final eight slots on the right are the output slots. These grow and shrink according to how many blocks can be made with the input materials. It would also be possible to add a standard view, and type view to allow users to sort the outputs by the type, if there are very many results for the material; like with wood which can be made into possibly many other blocks. One example could be; you input wood into the input slot, some sort of carving tool in the tool slot, and you would get every variation of the wood block in the output slot; round, sloped, smaller microblocks etc.

The latter example could also maybe only be performed in a carpenter table. The point is that the assembly table wouldn’t necessarily be a or the only table of its kind, but rather a concept that could be used throughout the game.

The positives and negatives
One of the core strengths of this concept is that it is very easily extendable by mods. Not only is it flexible, but it also is closer to how machines usually work; you input something, and you get something out. This stays true to the concept of I/O (input/output), while still not being overly simple (e.g. by adding the requirement of recipes, the usage of tools and modifiers in nested recipes, or even by having different tables for different blocks).

The obvious drawback is that it can indeed become overly simple. Some might want something 'more' from a crafting system, usually pointing to how crafting would work in the real world. I do however think that this is not easily achieved, and also even if achieved; is it worth it? One would have to ask if the crafting process is the more important one, or the gameplay that would follow. I reckon making a crafting system that is overly complicated will eventually be hard to extend by other mods, and with normal mode mainly aiming at providing a base gameplay for mods to build on (much like Minecraft survival does), this would in my opinion defeat the purpose for which it is being built.

Any feedback is much appreciated.

(Please, also, if you find my writing style overly complicated, hard to understand, or too simple and without meaning - please highlight this in your post, or a PM. Thanks!)




 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
One feature I've had in mind which isn't mentioned is an inventory view that is filtered based on the crafting station and the current selection to help guide discovery of valid combinations.

The other flexibility, that comes from our underlying entity system, is that the "assembly table" can be attached to more than just blocks in the world. NPCs, inventory items, structures of multiple blocks, the players themselves - these things could also be "assembly tables", bringing up the UI when interacted with.

Other feedback... I don't really agree with an infinitely growing input box. I think a strictly limited number of inputs encourages the design towards the production of intermediate items - so rather than combing a dozen types of materials, you would craft wooden scaffolding, cement, bricks (some of these at different tables), and then finally a hearth. So rather than complexity in inputs you have complexity in tech tree. I guess that is open for some discussion though. Would say that different tables could have different number of input slots though.

The outputs might be rotated to be vertical and reduced to a single column, with space on the right for a description.
 

UberWaffe

Member
Contributor
Design
I like it.
One thing Minecraft proved was that, as content expands and the recipe count increases, people quickly seek ways to avoid having to remember all the recipe patterns.
(See mods like NotEnoughItems a.k.a NEI)

Having only to remember at what sort of assembly table / thing you craft a specific recipe is much easier.

Show/hide all recipes:
So, with that in mind, I suggest a way to see ALL the recipes that can be crafted at the thing I am currently interfacing with.

Say, by default it shows all the recipes, with ones that cannot be crafted given the placed inputs on the left shown in red.
Also, the list is sorted by which recipes are available and which aren't, and then alphabetically.

And finally a show/hide button to show or hide unavailable recipes entirely.

This would allow players to at least look at the recipe they want to craft and see what it is that they are missing.

Multiple outputs for a recipe:
I also suggest allowing an output to be more than one thing, both in variety of output items and amounts of each item produced.
An example being such as when you mix 1x bucket of water and 4x flour, and get both 2x dough and 1x empty bucket.
Or turning wood into 5x planks + 1x sawdust pile (where the sawdust is a 'byproduct' that can be used for other purposes).

Three more behaviors I would allow a recipe (Input + Modifier/Tool = Output) to define is mod defined prerequisites, tool behavior, and recipe success.

Prerequisites:
Simply put, some point into the recipe/assembly table a mod can tie into to define a recipe as unavailable or available.
Example: A creature uses a carpentry table. The carpentry table has to decide if the creature can craft a chair or not. First check, does the creature know what a chair is? Yes. Is it skilled enough to craft one? No. Sorry no chair crafting for you! (I.e. recipe not displayed or some indication it is unavailable)

Tool behavior:
Simply put, what happens with the tool when this recipe is crafted? I.e. does its integrity degrade? Does it break? etc.

Recipe success:
Simply put, a tie-in for a mod into the crafting event (after user clicked an output to craft, but before its execution) to change the outcome (inputs used, tool behavior, outputs created, etc.)

By default these three could just be nothing (No prerequisites, no tool behavior, always success).
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Thanks chridal ! Your writing style is fine, IMHO, and it is a good summary for a crafting suggestion - including that a "general mode" crafting might make sense vs. sophisticated crafting.

Your example and any of the sort that allows "reveal all" approaches by a simple GUI almost strikes me as something that would fit into the "free style" gameplay - no real limitations, all knowledge available any time (short the addition of the recipe requirements you mention). I personally like limitations and a lengthier discovery process, but fully admit that's me, not everybody :)

As mentioned on IRC to get it on here as well I would personally hook into asking different creatures for possible combinations they know, akin to asking the "guide" NPC in Terraria what a certain material can be used on. So the player doesn't have magic recipe knowledge, or at least not until some stuff has been discovered. At that point it might be a good "crafting lexicon" of sorts.

Specialized workstations I'd be all over.

I wonder if it would make sense to not actually have set recipes for a lot of shape-specific stuff. Rather than toggling stuff or using tools to shape a piece of wood in a particular fashion simply make a blueprint for it out of mini blocks (like the current crafting cube). That would be mainly for construction, not combinations for specific items. Specifically defined objects would have set recipes, "cosmetic" blocks would not.

There's much more to this topic but it is very late here - I wanted to at least put a little in here to start with :)

Have you been through the old thread on crafting btw? Which is both old and new as it talks about the current system too
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
I like the system you described, in combination with some of the ideas brought in by the others (textual description of output - could be a tool tip instead if needed).

The only thing I am wondering is how this approach and the current crafting system would/could work together. Immortius, how complicated would it be to change the crafting system entirely in a mod while using the 'normal mode' as base?

Another point I've got: I thought you would take a more general approach to develop/evaluate a consistent GUI layout. The IRC discussions sounded like detailing out what GUI elements are needed/can be reused and how they should look. Are ou still up to this or was it just to get the basic design for the assembly table set? If you are going to work further on the general style/layout, I would like to corporate with you and take it over to the launcher ;)
 

chridal

New Member
Contributor
Design
Skaldarnar The plan is to continue with the GUI design, and after we arrive at some sort of design that is good enough to be made into a design pattern, I would love to help work on the design for the launcher.

UberWaffe
"I suggest a way for all recipes to be seen"; I was thinking this could maybe be like a right hand drawer that could be pulled out, much like NEI. Where you would have a way of sorting through items/blocks, and see what materials they are made of and which tools they might have to use. In freestyle mode this could be the entire set of items/blocks available, and in normal mode this could act as some sort of recipe book, maybe? This could tie a bit in with Immortius point about there being a way of filtering the recipes for the station in specific. One mode of this pullout drawer could be to only show recipes that you know for this station, but then also maybe work as some sort of aid as to how you could go about discovering new ones? I guess at this point the drawer would be sort of a crafting guide.
As for the tool; yes, I would imagine the tool would degrade in quality as it is being used.

Immortius Yes, you are probably right, an infinite growing input slot would encourage what could be seen as 'misuse'. I do however like the idea of different tables having different amounts of input slots. Also, I also think it's a good idea to allow for detailed view as well (vertical with text).

Cervator When I say reveal all, I am mostly talking about revealing the recipes you already know that can be crafted on this table. So it would be like; you have some sort of recipe storage, and when interacting with said table, it will pull from your recipe knowledge for this table, and present everything that can be made from inputted item.

What really caught my interest here is the suggestion about some recipes having multiple outputs, as this would really make sense. The problem with my current design is that since it is a list of everything that can be made with said input slots, it does not provide for a good way of giving multiple outputs. One way of doing this could be to simply group two items together in the output slot; either by using colored borders to indicate relationship, or maybe by showing the items 'on top of eachother', and then give a tool-tip of all the items that will be output in this combination. I do however feel that both my solutions are a bit hacky. I'll keep this in the back of my mind as I try to refine the assembly table concept.

I see that I have to learn more about the creatures, and what their nature is like. One of my worries from what I read, is that I think it is dangerous to fashion the assembly table concept in such a way as to depend on creatures doing the crafting. The reason being that, that would be imposing the creatures onto mods that want to use the default assembly table system for crafting. So, using creatures for some of our own normal mode tables for standard game play would be fine, but that the concept in itself is free of other interlocking parts, if that makes any sense.
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
Skaldarnar On modding in other crafting styles... I guess this would be a matter of disabling/intercepting the standard system and then substituting their own. Some of this will be aided by an addition I'm planning to make which will allow modules to add additional components to prefabs from other modules.

The complexity really depends on the nature of the change - if it can make use of the existing components, events and recipes it should be simple. A grid based approach would require completely new recipes though.

The correct events in the standard system will be important to allow modding. Some potential use cases include some randomization of the output (equipment with stat variations), XP and crafting skills that are gained by crafting, prerequisites, crafting quests, and disabling the system. Events before and after crafting, events on opening a station, an event to check whether a recipe is valid...

On recipes, some of these should be known automatically, the majority learnt when first crafted, and some could be unusable unless learnt from an external source.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
I see that I have to learn more about the creatures, and what their nature is like. One of my worries from what I read, is that I think it is dangerous to fashion the assembly table concept in such a way as to depend on creatures doing the crafting. The reason being that, that would be imposing the creatures onto mods that want to use the default assembly table system for crafting. So, using creatures for some of our own normal mode tables for standard game play would be fine, but that the concept in itself is free of other interlocking parts, if that makes any sense.
Oh, my intent for creature being involved is not to actually make them mandatory for crafting (although that could be something to do for a subset of specialized items matching their racial abilities or so), but make them take over the "boring work" after the player grows tired of working whatever system we end up with :)

Player manufacturers at small scale, creatures help you expand to large scale. I'm hesitant to focus much on fully automatic machines (we see where that leads in MC) but maybe if they at least need maintenance, which again at a small scale could be the player and large scale assisted by creatures. IMHO there needs to be some need for creatures so the game content of caring for and improving their lot in life, skills, etc, opens up. Still, player can solo everything if s/he really wants, just harder to reach large scale.

After related IRC discussion and from also reading the related GDoc I am getting to a point where it makes sense to me for normal mode (which is what this thread is becoming a bit more about than crafting, heh) to be a set of base modules we officially support and consider part of the base gameplay, including basic crafting and all that good stuff. A set of modules enabled by default, maybe some/all mandatory. Free style removes limitations, reveals all recipes, and allows the player to disable all base/core modules individually (like hunger, drowning, etc). Normal mode's core modules also become the natural foundation to base additional modules on - the perfect home for "library" modules. Thoughts?

If basic crafting is purely recipe-by-discovery based then a crafting grid a la Minecraft could be avoided entirely (kinda good), and our "crafting cube" approach becomes more about building shaped blocks and combining parts into said blocks (but their function comes from crafting). Like embedding wire (made through basic crafting) into a wall block (made via the "shaping cube"). Maybe some scenarios where crafting by grid placement still makes sense. There are a lot of possible machines and what not where the process/output could depend on placement, be it in a GUI grid or slotted into a spot on a physical machine in-world (blueprint/recipe blocks of some sort)

These are somewhat incomplete thoughts but I wanted to put them down before I forget. Looking forward to more design talk by chridal whom I have badged as such now. Maybe you can run point on coordinating what should be in the core set of modules in "Normal" mode akin to SuperSnark for L&S mode :)
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
After related IRC discussion and from also reading the related GDoc I am getting to a point where it makes sense to me for normal mode (which is what this thread is becoming a bit more about than crafting, heh) to be a set of base modules we officially support and consider part of the base gameplay, including basic crafting and all that good stuff. A set of modules enabled by default, maybe some/all mandatory. Free style removes limitations, reveals all recipes, and allows the player to disable all base/core modules individually (like hunger, drowning, etc). Normal mode's core modules also become the natural foundation to base additional modules on - the perfect home for "library" modules.
My intention is that only the engine module will be active by default. All other modules are selected through gametype selection, mod selection and similar higher level choices. So yes, these features can be split into separate modules to some extent (there are interdependencies to consider) but then a top-level gametype module will bring them together.

I'm going to suggest our 'normal' mode be called Mode Zero. :) And yes, it should be a platform for the majority of mods to grow from. Additional gametypes can reuse the underlying modules and thus to support mods that work off of them as well - or do something completely different.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Introducing: The Smeltery, from Tinkerer's Construct, which is in the Hexxit modpack active on the freshly refurbished TeraCraft server (thanks to Skaldarnar for the find!)

Hexxit_2013-08-12_00-29-48.png

(Our little base is to the north of spawn by an NPC village, although I think all the villagers are dead ..)

This gadget struck me as perfectly matching my earlier ranting about multi-block machines you interact with at different spots, either "physically" by placing casts on a spot where then triggering a faucet fills said cast with molten material, or by opening purpose-specific traditional GUIs in different places. On top of that you build it piece by piece as per your aesthetic desires and functional needs.

Thought I'd share it to better explain my position on things, after various discussion here on IRC, if there was any confusion or lack of clarity left :)

My old idea was to use a machine like that and place a blueprint on it somewhere after creating one using the crafting cube (or whatever we end up calling it). But I admit there might be a separation between items (like pickaxes) and blocks (like a staircase) and it may make more sense with a pure recipe list that you discover entries for. Which it seems a bit like you do with Tinkerer's Construct since you have to create the casts, but can do so out of a list of possibilities (I think - I haven't fully understood / played with it much yet)

Anyway: Neat! Me want!
 

Attachments

Top