typical-developers / oaklands-feedback

Give feedback about Oaklands!
2 stars 0 forks source link

Rework logic #968

Open witchiestwitchery opened 1 month ago

witchiestwitchery commented 1 month ago

Roblox Username

kalrnlo

What do you think can have quality-of-life improvements?

logic

How do you think things can be improved?

Currenly logic within oaklands is very half baked, with majority of items not clearly showing what inputs they have. But if they do show their inputs it's a specific number in the description you're never gonna memorize with just basic logic usage (automating respawning your vehicle with several trailers). Plus you'd probably forget those oddly specific numbers if you take a break from the game and come back in 4 months. Basically creating the same issue that exists with code you haven't touched for several months and has 0 comments explaining it, so you have to go on a witch hunt to figure out how it works.

So what I'm suggesting is a complete rework that basically copys how scrap mechanic handles its logic, where it has a connection tool that'll show the wires and allow you to connect/disconnect things. (This can be seen in the attached photo) Connecting is simple where you just drag a line between 2 objects, and it'll only show the input connection points if say you're dragging from an output. With outputs only being shown if you're dragging from an input. Deleting connections is simple! You just drag between those 2 objects again and the wire is gone! Connections are also automatically color coded, based on what they're connected to.

Now, scrap mechanic doesn't have items w multiple inputs, so for the case of them I'm gonna use an example with the four-way conveyor. Where there would be an input on each side corresponding to making it switch to go towards that side, and a input in the middle for turning it off.

The interactor would be basically made obsolete by this, but could be kept as a way to bulk set items. Possibly with an enum ui where you select an enum for the inputs itll trigger with an enum being like ConveyorOff. An enum interface could be added aswell along side this change. Wires could be kept as a declaration like vines that you can buy.

Also this would help drastically with mobile UX, as making wires would be a breeze vs the mess it is on mobile right now. Where dragging wires is attached to your camera, leading to the issue where you have to get your camera at just the right angle sometimes to have it connect, and also be in first person. Where as with this you'd simply click on either the input/output on an item whilst holding a tool or having some wiring mode enabled, and then click on a input/output to then create a wire.

Video showcasing scrap mechanics connect tool

image

witchiestwitchery commented 1 month ago

Note: there could also be a way to place 3d comments whilst in the wiring mode similar to stravents dev comment plugin, basically working as the logic version of code comments, comments should also be able to be included within schematics via a toggle. https://devforum.roblox.com/t/stravant-devcomment-sync-3d-space-comments-between-edit-test-and-live-games/2394717

Albeit this is niche, as this would only really be useful for those doing more complex things but it'd be a nice to have.

HooferDevelops commented 1 month ago

This is sort of how it originally was in the prototype phase, but during private testing with users we found that it generally wasn't enjoyed because when things start to get even slightly complicated, it becomes hard to understand what's going on. It also became hard for them to debug issues with their logic (an example was a user making snake).

I personally think it's less of a rework the system from scratch problem but more of a question of what we can do to improve UX and general understanding of what logic components do. Right now components are very hard to tell apart (this is also a problem with our machines but that's another story), I'd like to improve that.

The ability to directly connect wires to some objects instead of using an interactor may be a good solution to implement, one thing I've noticed in the Discord is users asking why they can't connect a wire to x y or z just to be told to use an interactor for something simple.

I like the idea of labels and an Enum list.

witchiestwitchery commented 1 month ago

This is sort of how it originally was in the prototype phase, but during private testing with users we found that it generally wasn't enjoyed because when things start to get even slightly complicated, it becomes hard to understand what's going on. It also became hard for them to debug issues with their logic (an example was a user making snake).

Ah ok, but I atleast think it'd be a good idea to ditch having wires be in the "physical space" and have some sort of tool. As currently to hide wires I have to make them be inside walls, and that's not really good when I might be a player coming back from a 4 month hiatus from the game trying to add on to my logic. Or have some nice detailed wall paneling made up of several schematics, ect ect Plus I do think having atleast automatic color coding by default would be nice, as majority of people are gonna be doing basic stuff as logic is inherently complex.

witchiestwitchery commented 1 month ago

Just realised this that with having it be sorta a 3d graph ui, that depth perception won't be nessarially the best. So having wires automatically darken the further away they are from the players camera would be cool, so you could tell the difference between wires easier if you're looking in the direction of a wire dense area