The-Architect-Crew / the-architect-game

Minetest subgame, for stability, consistency and fun
GNU Lesser General Public License v2.1
6 stars 0 forks source link

[WIP] Workbench (circular_saw + furnace) #45

Closed neinwhal closed 2 years ago

neinwhal commented 2 years ago

Starting the issue up again because I think I didn't fully clear up some concepts, additionally, I have some new ideas.

1. The circular saw will contain more variations but less of the same kind;

The picture below shows all the variations available now (I welcome ideas of what to name the tabs as well) 11 shapes:register_shapes("blocks:dirt")

If you notice in the cubic section, I have removed a few variations available originally in moreblocks. For now, i have included all slopes and columnia blocks, but I intend to remove those slopes i have circled in red.

The rational of which is because; if I don't there is going to be A LOT of blocks. Even with my proposal removal of the slopes as mentioned above, each block itself will be separated into 45 different blocks, this doesn't even include the texture variations and furniture yet. And that really adds up, if we don't remove those variations that I consider to be of and under little use. This means at the end of the day, we are dealing with thousands of nodes, and those will cause an impact on initial server load times and such. EDIT: SG has requested 2/16 variations of the cubic variations to be added as well, so this will be included as well.

But however, if anyone of you really need a specific variation, do let me know, and I'm willing to add that back in. But for those that nobody mentions about, and ill cut them out, because no one uses them and they are waste of server load time.

2. A universal workbench that levels up

Back in the old issue, there were several mentions of incorporating ability to get other blocks through the circular_saw as well, such as the new variations @theraven262 is working on and the furniture @lisacvuk is.

I do welcome the idea, having a universal workbench of sort is extremely useful. However, I do realize that we are still in a survival server AND Certain variations available are complex in nature to use, for example, the slopes. While there are good builders that use them correctly, for most parts these shapes are abused. As such I'm proposing an idea that requires the workshop to be "upgraded", to gain access to complex shapes.

If anyone of you are familiar with valheim's workbenches, I'm proposing something very similar. For those that are not; the basic idea is as follows

  1. Placing the workbench itself grants you access to craft ONLY cubic nodes
  2. To craft pillars & fences & panes, you need to place another stationblock nearby; this will unlock the walls tab on the workbench
  3. To craft slopes, you need place another stationblock nearby; this will unlock the slopes tab on the workbench.
  4. This goes on and on, for further tabs, like furniture or texture variations

Each stationblock will require more and more expensive resources to construct, so to access the more complex nodes, you need to gather more resources. These stationblocks could take a form of a circular saw, a CNC machine or anvil, having a unique appearance for each, so it will appear as though you are truly making your very own workshop. These additional workstations could also require some form of fuel to run. Namely the purpose of this is to limit access to certain nodes, coughslopescough to prevent inexperienced players from playing and abusing complex shapes. Additionally, it adds to the survival aspect.

Just to reiterate, these workstations are not further workbenches/circular_saw, they are mostly decorative nodes that allow the original workbench/circular_saw itself to grant them access to more tabs and hence more crafting options.

3. API-related

This is code-related feature. So I'm aiming this at the other devs; I mentioned a few times that shapes is going to be mega API that consolidates and merges all the various forms. It only takes a single line to convert a single node into the 45 different variations shapes:register_shapes("blocks:dirt") (No textures definition or such required, the API itself personally retrieves all the definitions associated with the node) I have also included possibilities of editing definitions for every single shape and/or disabling certain shapes if you want to, as well. Personally, I see this as a major plus, but I'm mentioning this again because I want to see if there will be any concerns and/or issues that I didn't foresee with this.

4. Ability to lock the circular saw.

This adds simply a checkbox on the formspec itself, allowing players to lock the workbench, preventing other players from accessing its inventory. By default, the workbench will be locked, the checkbox makes the workbench public.

lumberjackgames commented 2 years ago

The nodes you are suggesting to remove will make it impossible to build true slope domes. I do actually use pretty much all of those slopes somewhat frequently. On the other hand I have never used any of the 12/16th microblocks or the other multi-dimensional slab things that were added to circular saw in a more recent version.

lisacvuk commented 2 years ago

The circular saw will contain more variations but less of the same kind

Reasonable, we can always add in more microblocks if people need them. Can't very well remove unnecessary ones after the launch, though.

As such I'm proposing an idea that requires the workshop to be "upgraded", to gain access to complex shapes.

This sounds very fun. Support

However, I do realize that we are still in a survival server

Can we define survival, please? It is being used as an opposite to creative, but I don't think that's what survival is. Are there any other 'survival' servers with no hunger/mobs?

Ability to lock the circular saw

Support.

lumberjackgames commented 2 years ago

I think I pretty much fully support everything here other than I think there may need to be some more discussion around the exact slopes and micro blocks included, but I don't think that should be a blocker for implementing the overall concept as you have outlined it @neinwhal

Can we define survival, please? It is being used as an opposite to creative,

Minor issue, but I think we should avoid calling the game/server survival as it is misleading. It is a non-creative building game (imo). As previously discussed, I think most of us don't really care for PvP or damage so no real survival element if that is the direction we agree to go.

theraven262 commented 2 years ago

I agree with all of these. Also as far as I am concerned, you can remove all the slopes. The multi part workshop idea sounds really fun.

neinwhal commented 2 years ago

define survival

My definition here is more with regards to the crafting & resource gathering process. Which I consider to be still an essential component of "survival". And what I meant when (2) helps with survival, I mean it adds a certain stage of progression to the crafting, rather than opening up everything to the player at once.

regarding slopes

Personally, I am not a fan of slopes, because I find that they break the cubic style of minetest. BUT. I understand the appeal of it, and I understand that it opens up a new realm of building, that allows for some amazing creations if done properly. I am ok with keeping all the slopes for lumber, I am also ok with entirely removing them and forcing players to build in a cubic style. I think the question here is, should we support this other form of building.

For now, ill keep all the slopes, unless there's mass disagreement regarding the support of non-cubic buildings.

lumberjackgames commented 2 years ago

Another option, that may be too much to take on is replacing slopes with cubic approximations. I think this is probably more work than its worth and may have other issues (like too many nodeboxes to render) but I'll toss it out here as possibility anyway.

neinwhal commented 2 years ago

Just a reminder that while slopes will be supported for now; I will likely restrict them behind an expensive workstation, as mentioned in (2); as per the rationale; slopes shapes can be easily abused for players that don't know how to use them.

I think the course of discussion here is whether slopes will be sufficiently used/supported enough to justify the extra blocks and load time.

neinwhal commented 2 years ago

1231 Added and removed some shapes Namely, i removed the pillar top, i realized it was the exact same node with the pillar bottom except rotated, so there was no point having a duplicate. In place of that, i added an extra "wall pillar".

Additionally as per SG requests, I readded 2/16 nodes, forked stairs, and "L" corners

I reshuffled the placement of everything accordingly to the complexity. Basic tab will be unlocked at the start, most of these are nodes that already exist and are less likely to be abused. Complex has the more complex shapes, which have a chance of being abused. And slopes at the last tab.

For future, ill likely change the tab to be image buttons or something like that, because currently it looks a bit ugly.

neinwhal commented 2 years ago

Merging the furnace with workbench From #47

Namely. the furnace will now function as a workstation. It will still require fuel to run, once its active/running, the cooking tab will be accessible accordingly, allowing instant crafting of cooking recipes. This can be expanded further in cost, having more different smelting stations, like blast furnaces, ovens etc. This appeals to both the animations + instant crafting, while still relying on a certain fuel cost.

With the fact that the furnace is now just a fuel consuming node, it cuts down a lot of the code as well, and should aid in the lag-reduction.

neinwhal commented 2 years ago

As the workbench idea starts to expand and cover more grounds. I'm considering the possibility to expand the workbench itself as an API for other mods to add their "tabs".

The issue is, at present, the workbench mainly uses node metadata for all its data; And while it's possible exposing that to allow other mods to make modifications, it is a mass complexification of things. But; if done correctly, this exposure will allow other mods to depend on it, and new code for new tabs can be localized in each mod itself.

Whereas, with the current implementation; The functionality is hardcoded, so if there's other mods requiring a new tab, workbench will have to depend on the new mod. Additionally, changes are made directly into the workbench itself.

While the API is an appealing option; presently, I still lean towards the hardcoded option, because the prior will complex things by a ton; And I'm not sure if the application of that will be utilized that much to justify an entire API for it. But I'm opening this possibility for discussion if there's enough demand for it to utilize the change.

lisacvuk commented 2 years ago

IMO it's better to keep it all in the workbench mod, with other mods defining interfaces for it to get data about them - that way we have many standalone mods developed for later which we can plug and play elsewhere, without modifying dependencies.

neinwhal commented 2 years ago

Ran into an issue while crafting furnaces. I realized that the cooking craft supports multiple items. In the sense that you can cook 1 cobble into 2 stones.

Why is this an issue? Currently my furnace make uses of inventory slots, this mean you can freely pick up the output and rightclick to place in your inventory 1 by 1. But in the case of cooking recipes that have >1 output, this is an issue. Lets keep the example above; cooking 1 cobble > gives 2 stones I pickup the output, add 1 stone to my inventory, meaning that 0.5 cobble is removed, which isn't possible.

Possible solutions;

  1. Keep existing, for multiple output, allow only full stack movement. Downside: Difficult to move multiple output
  2. Keep existing, any decimal changes are stored in the workbench and removed accordingly when output is moved. Downside: Potentially a confusing implementation that players might not understand how it works
  3. Switch to a button format (Click button to add output to your inventory) Downside: Unable to sort your inventory by yourself
neinwhal commented 2 years ago

^ Found a better solution. Keep existing but for multiple output, each rightclick returns multiple output rather than 1. For e.g.; With the 1 cobble to 2 stones / each rightclick adds 2 stones to your inventory, there are checks running to prevent adding if you don't have enough space to add the 2.

lumberjackgames commented 2 years ago

^ each rightclick returns multiple output rather than 1. For e.g.; With the 1 cobble to 2 stones / each rightclick adds 2 stones to your inventory

This makes the most sense i think. If the recipe says 1 cobble converts to 2 stones, then that is what people should get. no need to complicate to perform half portions of recipes.

neinwhal commented 2 years ago

The main issue with is that i have to use a separate method to add the extra output, and that leads to some weird behaviour. And the only option i can think of now is through add_item. Since there's no way of detecting where the eventual output ends up in where; If I were dropping this on the ground, it will return 1 to my inventory while the other 1 drops the ground. Likewise, if i have half a stack of stone in my inventory, but I want to move the new stone into another slot, it will add 1 to the existing half a stack of stone (because that's what add_item priorities), while the other 1 goes into the new slot.

An alternative is making add_item handle fully the extra output, which provides a constant placement for all the output (but one that uses what add_item priorities) But it comes with a duplicate bug, if the player chooses to drop this on the ground, that creates an extra count + the one added to the player's inventory. And i don't think there's a way to prevent the player from dropping to the ground (solutions welcome), so this doesn't work either.

neinwhal commented 2 years ago

I tried returning multiple items through allow_metadata_inventory_take but it seems that rightclick is hardcoded to only give 1 item, and I can't seem to modify it accordingly; The count only matters when leftclick is applied.

neinwhal commented 2 years ago

With the features as stated here done, I'll close this issue and move discussion to the pull itself #58