Inactive Crafting

eleazzaar

Member
Contributor
Art
woodspeople said:
1. I find TS fun to play with already ;) especially the options for blowing things up ;)
Yeah, TS has made good progress in that area. If MC and all it's clones didn't exist yet, that would be a sufficient fun level to attract a crowd and sustain development. But with so many voxel game out there that do about as much or more, more fun gameplay is needed to reach the critical mass that i spoke of.


woodspeople said:
2. Since we have no minions here and are all volunteers, we need to draw on our varied interests to sustain the work involved. One thing I think we can all agree on based on the discussions so far is that we all want to play a great game, but we don't want to play the same game. So making that possible seems like it is the thing that unifies us, more than any one game vision...
Unity in wanting to make very different cool games, is not a useful unity. IMHO, trying to make everyone happy that's wandered into the forums is probably not a goal that will lead to anything successful. Sure TS can be used to achieve more than one voxel game-play vision, but not all of them.

At some point, you need be able to say, "That's a cool idea, but it is outside the scope of our project. We're trying to achieve these core goals, and your idea is not in line with, or would compromise those goals."

Promising people the moon is easy. And it makes them very happy, until they realize that you can't give them the moon.



Immortius said:
Anyway, we really need to split the forums up on these three things, because it can be kind of confusing. When someone says "Terasology should have a weight-based inventory" it isn't clear whether they mean the engine or the primary game type.
Those who are offering ideas, and not code, are unlikely to know how best to implement something, and where it should fit in the architecture.

These are two very different discussions that can be had:

1) what is the core game? what are it's rules? how does it feel?

2) how can the core game be implemented in code?


Lots of people will only be able to contribute to #1. Trying to make everyone talk on the level of #2 will get you lots of bad advice, or severely limit your pool of contributors. It's not just artists that can be excused for not coding. At Battle for Wesnoth, for instance, most of the unit balancing and design was done by non-coders (who could do simple scripting).
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Related post: viewtopic.php?f=5&t=326 :)

Yes, we need to encourage contributors who aren't necessarily sure what they're aiming for. If we consider a primary "line" of game modes (that really are just big milestones toward a single ultimate game) core, then we can possibly route people through there, but move some ideas and efforts to a mod-based sub-forum for concepts that don't fit the primary line?

We pick one crafting system for that game line, but offer alternatives via mods. And an assortment of individual alternatives in other game modes (creative, sandbox, hard core, etc). So maybe you'd have something like:

Genesis -> Tao -> ... -> Terasology
SuperInventoryLand
CrazyEveBluePrintLand
UberRealisticCraftingLand
etc

We primarily focus on the center line, but any extras that make it to implementation are likely in a shape to tweak the core game in a more favored direction for some players. Any of that make sense? It might not, Dune is on and I'm watching. So my mind is in an altered state of weird.
 

woodspeople

Member
Contributor
Design
The idea about splitting discussions into generic engine versus specific game modes and mods makes a lot of sense. And we could try to be specific about which of these we are talking about and shunt discussions to the proper place when they begin in the wrong spot. That would clarify things; if somebody said "wouldn't it be cool if" it should not be too hard to figure out where that discussion belongs. Maybe Immortius' core/modes/mods triad would be most useful.

Unity in wanting to make very different cool games, is not a useful unity.
It is if you are talking about the engine and its ability to support game modes and mods; it isn't if you are talking about the game modes and mods. It was the engine I was talking about.
 

glasz

Active Member
Contributor
Art
I must say i share woodspeople view on open projects.

Beside trying to find common ground for a gameplay/game mode is what we started to do on the "theme" thread. It is certainly important to have everyone efforts focused, but first we need something to focus on. And for that, at the stage we need to exchange ideas, some of them maybe useless in the end, so as to define a common ground project that is stimulating enough for most who want to be involved.
 
Could someone try to code this and upload a video on how this system works when it's in-game?
 
A recipe would be used every time something was made.
Do you mean that you'll have to have a recipe to craft even if you know exactly how to make it without needing to look at a recipe? What about if I just lost my recipe for some kind of ultimate sword? Think of that.
 

overdhose

Active Member
Contributor
Design
World
GUI
things like that could be easily countered by one master book containing all your recipes and enabling you to create copies of recipes for use or something of the kind. I don't think that's a big issue. Debating you can do until eternity, that's why it's called debating. However it doesn't show tangible progress and will discourage some (I count myself among those) the longer you push it. I also believe that while theoretical planning has it's advantages, actually making it into a practical implementation might alter the eventual result anyway as a result of practical / technical decisions you need to make along the way. An analysis is good when it describes major points and a road map, not every little single detail that needs to get programmed. At some point, you gonna have to trust the judgement of others and learn how to compromise. I ain't saying it's always easy and it is only a personal statement, and even if the eventual result is really bad, you can at least learn from the mistakes made in it and build from there. But at least, there is movement.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Bump! I've moved this into the Incubator since it is a solid feature we know we want, even if it might not be certain exactly what shape(s) it may take on.

Personally while on vacation in NYC I tinkered with the idea of starting out (short-cutty) by crafting in-world without a UI to get something started, as has been suggested here and there. So my notes went something like this, in the style of "You just started in a new world, what do you begin with?" with a similar sort of "recipe grammar" as elsewhere in this thread.

Left click -> Attack leaf block with any held object or hands -> possible drops (ordered by probability to drop):
  1. Kindling (small twigs, leaves, plant material like wines you could use for bindings, general use for starting fire)
  2. Stick (of varying length - break one block -> max size = one block; trigger multiple leaf blocks to drop at once = chance for longer sticks. Fell a whole tree and it'll "shatter" into differently sized drops)
  3. Flower, fruit, sapling, etc
Left click -> Attack dirt block with any heldobject or hands (hand = slow; stick = marginally faster). Drops:
  1. Dirt (in the shape of "mini cubes" not full-size)
  2. Small rocks (for tools, etc - could drop as small 3d objects of varying shape, sharper angle = better cutting tool; may be too advanced / tiny detail for now)
  3. Grub
Primitive cooking example:
  • Right click -> Place held kindling (visualize it as a little teepee-like bunch of twigs and leaves in a billboard block)
  • Right click with duration on placed kindling with held stick -> attempts to start a fire (x chance per time unit for duration)
  • Right click -> Place held grub
  • Right click on grub with held stick -> Grub-on-a-stick
  • Right click with duration on fire with grub-on-a-stick held -> roasted grub-on-a-stick (duration impacts how well cooked - too short = under-cooked; too long = burned)
  • Left click with held grub OR grub-on-a-stick OR roasted grub-on-a-stick -> Eat food, gain something (stamina, wellness bar, direct health, whatever) with quality of food impacting how much
Primitive refinement example:
  • Right click -> Place held rock
  • Left click on placed rock -> attacks rock to make it drop itself OR
  • Right click on placed rock with held rock -> chance to drop sharpened rock (higher chance with flint)
Primitive crafting example (imagine placement in an L shape on a flat surface in the world):
  • Kindling | Rock (the kindling serves as plant-based bindings in this situation)
  • Stick
Right click with empty hand on any item in the arrangement -> test for recipe, if valid receive new item in hand (in this example you'd get a primitive stone club, or if using a sharpened stone you'd get a hatchet)

Alternative:
  • Sharpened Rock
  • Kindling
  • Stick (block 1 of a 3 block long stick)
  • Stick (block 2 of a 3 block long stick)
  • Stick (block 3 of a 3 block long stick)
Right click with empty hand on any item in the arrangement -> test for recipe, if valid receive new item in hand (in this example you'd get a primitive stone spear)

These examples bring me back to thinking about there being multiple different types / flavors of crafting and blueprinting.

  • Tool making (entities, not blocks): place dropped items back into the world as mini blocks (normal block breaks into 3x3x3), match recipe
    • recipe contains types that you can implement with various materials: stick + kindling + stone = primitive stone hatchet as an example matches "handle of length > x + binding + hard/sharp [+ decoration (feathers, etc)]"
    • if particularly satisfied write down as an explicit (materials baked in) blueprint, can feed to creatures or trade with other places (do we have cause to use both "prefab" and "archetype" here, I wonder?)
    • creatures given right materials can create, player given blueprint can project blueprint on ground and match it (player starts with some basic things to project)
  • Object making (blocks): place blocks in world (mini or normal), select with magic tool, scale up or down, save as blueprint
    • match archetype = get option to imbue object with x, say a portal (frame of specific material that is one deep and encloses an area)
  • Innate recipes vs made-up recipes. The primitive stone hatchet as a very basic tool you might just "know" as a being in the world while a detailed epic weapon you may have to craft with a physical recipe or mold as part of the process that you've found in the world OR simply referring to any made up blueprint created by a player. Or an innate recipe is an archetype while a material-specific implementation of that is a prefab. Or at this point I might have run out of carefully prepared notes and switched to "Hmm, what next" musing aloud.
Okay, I'll stop for now :)
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Bump - I've been talking to Adeon about maybe implementing a starting crafting system based in part on my prior post here about a very basic "drop items on the floor then do stuff to them" system. So tagging him as curator for now :)

I've linked to TerraFirmaCraft as an interesting example of a more DF-like MC including a few spots where you drop stuff on the floor rather than use a workbench or other GUI manipulation. I'd like to take it a few more steps beyond that and integrate crafting (and other stuff) more closely with blocks (think machines) in the world having more outright readouts/inputs/outputs on them rather than rely directly on disembodied floating GUI windows. So maybe instead of having a heavily cell-based GUI screen and placing objects + tools relative to each other in cells you could simply place them on an actual table (or into a sawmill, or a smelter, etc) accordingly then whack them with a tool, do a rain dance, select them as blocks + switch on the minituarizer, or simply poke one of them with an empty hand to pick up a final product

Interestingly enough, maybe for Nym Traveel in particular, TFC also has moved to a climate-based biome generation setup, getting around MC's infinite world by simply making the world above or below the polar regions an endless icy wasteland and caring more about east and west
 

Brokenshakles

New Member
Contributor
Just to throw my 2 cents in, I am thinking about a "Fortress" type mode right now, and I think DF has it right in this respect, the player does not craft, the minions do. However, I do also like the put-together style of Minecraft's craft window. So the way I would do it is to have player-crafting be the research half of the Research/Crafting mechanic.

Like was said before, have players craft things in a "miniaturizer" and then shrink them down to the relevant size (It was previously suggested that this be a single block, but I see no reason why 2x2x2 and 3x3x3 structures could not be created this way as well). This will represent research.

Note that a player should be able to get pre-created blueprints from other creatures, and sometimes, a migrant minion should be able to bring a BP along with him to your place. You should be able to steal BP's from other civilizations as well.

Once that is done, a blueprint is produced and stored in a "Library" zoned room. Then one of your minions can pick up the blueprint and use it (no limit on the amount of times, blueprints are not consumed by building the structures they represent in real life, and adding a mechanic like that just adds to the complexity without much return). As long as the minion has the blueprint, he can make the item, and using the blueprint increases the minion's relevant skill/job level for that BP. A special minion with the "Librarian" job can create copies of blueprints to give them to other minions, so that more than one minion can work on a project at once.

Note that minions, having personality traits, should be able to lose or destroy a BP thru their own incompetence, just to make gameplay interesting.

Once a minion has a blueprint, in order to make the item, just make the necessary resources available to him, and order him to make the item at the relevant workshop. This is where of course we return to DF style crafting.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Yep! Very much like what I'd like to see. I could imagine the player able (but inefficient) at crafting a lot of fundamentals, and more apt at making initial designs.

I do like the idea of "blueprint research" but possibly as an extra, not an initial system. Similar to EVE Online :)
 

Adeon

terasology.ru
Contributor
Architecture
GUI
Logistics
Some screens =) :

3d Greed for craft:



if recipe founded(far):




If recipe founded(near):

 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Wow! I saw lots of code hitting GitHub and had some ideas of what you were doing, but that exceeds my expectations quite a bit. Sub-blocks, assorted hoverables, even nice looking thought bubbles? Sweeeet! :omg:

That's going straight to the social outlets :D
 

Brokenshakles

New Member
Contributor
Is there any way to make subdivisions octree-style (Each subdivision being 1/8 volume cube in a 2x2x2 arrangement) ? It would be nice if this was implemented in a way that allowed an arbitrary level of resolution/detail, as it would give the artists/modelers more to work with. Also, I was thinking that you could assign blueprints to shops instead of individuals, which might work better.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
I think using octrees in the full world might have performance implications, there was some experience with that in the past. Admittedly that might just be tricky with Java, I know other block platforms are using them. I'm not sure what Adeon is doing yet, but maybe something like octrees could be handy for individual blocks like that :)

Lots of thoughts on blueprints all over, and I'm looking forward to more :twilightsmile:
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
Some sort of octrees system for block design is likely fine, since it is just one block and you'ld bake the thing for actual usage.
 

Adeon

terasology.ru
Contributor
Architecture
GUI
Logistics
Video is complete! =)
I'm sorry for the bad quality for the sound. It's my first video overview. =)
The pull request will be tommorow in the morning.

 

Adeon

terasology.ru
Contributor
Architecture
GUI
Logistics
Text from video:


Hello everyone! And welcome to the terasology world!
In this video I want to say about the new crafting system.
So, first of all we refused from UI. Yes, yes. We are not looking for easy ways .
Now, let’s begin.
The first step in creating some item is to select some items in the toolbar and press key “E”.
The thing you see is the craft block, which has the following properties:
1) It doesn’t have any textures.
2) It is transparent
3) It ’ s not a liquid
4) It is permeable
5) It has an array of 27 elements, which is devided into 3 matrix with the sizes 3x3
Each matrix has it’s own id. They are “ bottom ” , “ center ” and “ top ” .
When you push button “E” and you select any item in your toolbar, you create a block of craft with the matrix which has the id “ bottom ” .
The selected element will be placed wherever the crosshair points to . If you want to add another element, move the crosshair to the desired location and right click on mouse . If the cell is empty then the selected element will be inserted into it.
If there are elements of the same type as the selected element then the counter of elements in the cell will be incremented by one unit and the counter of the selected element in the user toolbar will be decreased by one unit.
If there are elements of the type other than the selected element then the elements of the craft block will be moved to the player’s inventory and they will be replaced with the selected items.
The left click deletes an item.
In order to add and delete items you don’t need to click it each time. Simply keep the mouse button pressed. As you see life became easier. But not completely . I don’t like the speed of adding or removing the elements in the crafting blocks. That’s why I added the ability to the accelerate or decelerate of the addition or removal items. In order to do that you need to keep the mouse button pressed and drag mouse up or down. But it’s slowly. There is another way. Press and hold the key “ Q ” and you will see graduations around the crosshair. One graduation is 1/6 of the total number of the elements in the cell. That is the 3 graduations complete 50 percent of the total number of the elements in the cell.
During the development of the craft system I faced one more difficulty. During the process of crafting I always had to open the inventory window in order to replace the needed items in the toolbar . The solution was simple – “miniinventory”. For the quick access to the “miniinventory” press and hold the key “ shift ” and rotate the mouse’s wheel. As the result you will see that the cells of the toolbar are changing. But the first ten elements of the toolbar will go back when the craft block is not be the target of the camera.
Now if you arrange the items in the craft block and this combination matches with some recipe you will see the resulted element a cloud of thought over the craft block. Now press the key ”E” and at last you have the resulted item. Now suppose that the recipe is more than one matrix. In order to move between them press and hold "SHIFT" + right/left mouse button. As you can see the previous matrix became transparent and it does not interfere. And on that note, I would like to end my first part of video overview.
Now, I want to tell you about the refinement . It’s simple. You should select the needed block in the toolbar and press the key “ E ” . It creates a craft block that contains the selected block. After this, you should select block or item which will help you to create the refinement block or the item. In the next step you should move the crosshair on the block in the craft block and press key “E” . Tada -a -a -a. The refinement block and the item is in your inventory.
 

Adeon

terasology.ru
Contributor
Architecture
GUI
Logistics
Little bit about the creating of recipes.
It's simple. In order to create a recipe of an item or a block you should to add the a section «CraftRecipe» in the *.prefab file.
Let's look at the options:
«fullMatch». If the value is true (by default) then the position of elements in the craft block will fully match with the positions in the recipe matrix. For example:
This is the matrix of a recipe (A):
0 0 0
1 0 0
1 0 0
And this is the matrix of a craft block (B):
0 1 0
0 1 0
0 0 0
If the value of the option «fullMatch» is true then the matrix A is not equal to the matrix B. But if the value of the option «fullMatch» is false, then the matrix A and the matrix B will be transformed into the next resulted matrix:
A:
B:
Since the craft block is a 3d model, the matrices:
1 1 1
0 1 0
0 1 0
and
1 0 0
1 1 1
1 0 0
are equal. For more examples:
1 0 0....0 1 1....0 0 0....0 0 0
1 0 0....0 0 0....0 0 1....0 0 0
0 0 0....0 0 0....0 0 1....1 1 0
These matrices are the same rotated by 90, 180, 270 degrees.
The option «fullMatch» has some nuances. If you assign false for it, then empty rows and columns will be deleted when matrices are compared. So, if the first and the third columns or rows are not empty then the second row or a column will not be deleted. For example, We have the matrix:
1 0 1
0 0 0
0 0 0
if the option «fullMatch» is false then we will have the following matrix as a result:
As you see the second and the third rows are deleted, but the second column is not deleted. This condition for removal rows and columns was added because of existence of such recipes as the recipe of shoes in Minecraft.
0 0 0
1 0 1
1 0 1
If the recipe use more than one matrix then the empty columns or rows will be removed when the columns or the rows are empty in all matrices. For example in recipe we use all the matrix, and option «fullMatch» is false:
bottom: center: top:
1 0 0....1 0 0......1 0 0
1 0 0....1 0 0......0 0 0
1 0 0....0 0 0......0 0 0
As the result we will have the following matrices:
bottom: center: top:
1............1........1
1............1........0
1............0........0
when the matrices are compared.
Now I will talk about the option «recipe». It contains a description of the recipe. The recipe may be used up to three matrices. Each matrix has it's own id: «bottom», «center», «top». If a cell of a matrix has an item, then you should write the name of the item. If the cell is empty you should write the space. The items are listed by an array which consists of 9 elements.
Now, Let's try to create a recipe of a pickaxe.
At first you should open the pickaxe.prefab and add the section «CraftRecipe».
Code:
"CraftRecipe" : {}
I think it has no empty columns and rows. That we will not have to add the option «fullMatch». Because it the default value is «true». The next step is to add the option «recipe». As we will use only one matrix, then let's use the matrix with the id is «bottom». There is the result:
Code:
"CraftRecipe" : {
    "recipe" : {
        bottom: []
    }
}
Ok. That's better. And we will add the elements
Code:
"CraftRecipe" : {
    "recipe" : {
          bottom: [
            "stone", "stone", "stone",
            " ",        "stick",  " ",
            " ",        "stick",  " "
        ]
    }
}
You can look at examples in the following prefabs:
chest
pickaxe
stick
torch
refinementRock
 
Top