Anuken / Mindustry-Suggestions

Repository for Mindustry suggestions and feedback
130 stars 58 forks source link

Revamp logic blocks. #3023

Closed Theoneflop closed 3 years ago

Theoneflop commented 3 years ago

Describe what you would like changed, and why.

The logic blocks require some top notch coder-mind to be able to use. If you make a poll, I'm sure you will find logic to be the least used block. (excluding schematics where you can use other people's logic setup)

This gives an advantage to some type of people which is critical to balanced gaming on PVP servers, which counters the block's name of "Logic" which should rather be named "Knowledge."

Basically, My suggestion makes it so one block is added that would cover most of the logic block's tasks but much simply and usable by any average player that is 13+.

Describe the changes you want to propose. Include possible alternatives.

The change I propose would be to scrap the whole Logic systems scheme and replace it with a "command center" with a simple UI of "What to control" - "What to do with it" - "When (a.k.a. CONDITION)". You might say: "THIS WILL STILL REQUIRE KNOWLEDGE" and to that I answer: well.. not so much, bear with me a little:

  1. Once you click on a command center, you can then, similarly with what you can currently do with logic blocks, click on blocks and units which would then give them a specific name (mono1, turret1) and would highlight them for the player to see. If the player picked a unit, let that unit get close to them.

  2. In the command center, the "what to control" section should automatically include what the player picked to control.

  3. In the "what to do with it" section, there should be options depending on what the player chose to control.

If the player chose to control units, give them these options: • Mine specific area (only for mine-supporting units) • Defend specific area (only for units that have ammo) • Attack specific area (only for units that have ammo) • Fix specific area (only for units that have ammo) • Take items (read Specific Cases) • Drop items (read Specific Cases) • Follow (read Specific Cases)

If the player chose a task that requires to select an area, give the player a resizable square/circle to choose the area. If the player has bound more than one unit, all the units should execute the same orders in unity. Flag all the controlled units with a "CONTROLLED BY COMMAND CENTER #(number)" and put a "Locate" button in which when the player clicks, would highlight the command center on the player's map.

If the player chose to control buildings, give them these options: • Mining Speed (for blocks that mine) • Unlock upon arrival of troops (for doors) • Shoot in specific direction • Shoot specific units • Shoot when a significant number of units are nearby • Turn on / off (read Specific Cases) • Use less power (read Specific Cases) • Support nearby troops • Shoot where nearest player shoots • Switch (for unloaders)

F.A.Q. (FREQUENTLY ASKED QUESTIONS) Q: It's as complicated as the logic system. A: Well not. If you read carefully, you will notice that each command center can be programmed to only do one thing & to program it you usually need to answer two questions: "Who to control & What to do", While the logic system can have many complicated sequences and orders that are not even in chain.

Q: It's too big of a feature. A: True. I expect it, if it's accepted, to be a version of it's own.

Q: How big will this "command center" be? A: As big as a micro processor.

Q: How about displays and complicated tasks which you did not cover? A: These things should be left to the logic blocks as they do not significantly affect pvp balance & would probably take years to implement. My objective is to rebalance PVP, not to make complicated tasks simple.

SPECIFIC CASES: • Take & Drop: If a player choses either of those, 2 buttons should appear in the UI to select "FROM --> TO". If the player already selected two blocks after first creating the command center, a list containing the two blocks should appear for one to be chosen. If not, the game should make the player exit the UI while putting a big sign "FROM" until the player chooses a block, and then another sign "TO" should appear until the player chooses a block. and then, a third button should appear for the player to choose the item they want to move. • Follow: Once the player picks this option, a third button called "Choose player / unit" which can be written by text or plainly picked like you pick a block. • Use less power: Once chosen, whenever the player hits a button block he choses, less power should be consumed (which should make it slower, naturally) • Turn on / off: A set of conditions should be given to the user with a third (WHEN) button with the following conditions: (no nearby enemy units/ no nearby friend units/ no output is taken) • Switch: this option can only be used when the player has chosen only ONE block & that block needs resources (such as a unit factory). The unloader shall switch untill all resources are given unto that one block.

Bottinator22 commented 3 years ago

I think logic blocks are fine for PvP. Usually there's schematics for you to use if you can't program the behaviour yourself, and making code for processors (especially without logic debugging mods) takes a while.

Theoneflop commented 3 years ago

I think logic blocks are fine for PvP. Usually there's schematics for you to use if you can't program the behaviour yourself, and making code for processors (especially without logic debugging mods) takes a while.

It's true. But how many times have you thought to yourself: This could be made easier or With simple commands I could get the control I want? My suggestion is made so that most of the thinking and work burden is taken by the devs of Mindustry while the players can achieve control, and fun without much thinking, work & time. And most of the things I covered require customization, such as shooting target and so on, which have to be made on-the-spot by players and cannot be achieved easily by schematics.

Feilong-Mindustry commented 3 years ago

To be honest mlog is as basic as it could be. You probably want this new command center to perform different actions based on the conditions. Let's see an example for unit control:

• Shoot in specific direction • Shoot specific units • Shoot when a significant number of units are nearby • Shoot where nearest player shoots

So you want a unit to: Shoot in a specific direction in a number specific conditions Else Search for a large number of enemy units and shoot them Else Search for any enemy unit and shoot them Else Support nearby troops (by detecting shooting done by them, moving to the location and searching for enemies)

So, one function just won't be enough. You'd need a complex decision making system. This is basically code. It has the same functions as mlog and probably the same complexity. Why do we need second mlog? Please, learn syntax of the already existing language and you are good to go. In case you are having issues with one of the most frustrating programming language in the existence, I can understand and I will support any ways to make mlog more viable. But we do not need second coding hell.

To fix PvP, there should be specific PvP oriented balance for this gamemode. As for now Mindustry is best suited for solo gameplay against zero brain AI. It's a game design issue, not the mlog problem.

Theoneflop commented 3 years ago

To be honest mlog is as basic as it could be. You probably want this new command center to perform different actions based on the conditions. Let's see an example for unit control:

• Shoot in specific direction • Shoot specific units • Shoot when a significant number of units are nearby • Shoot where nearest player shoots

So you want a unit to: Shoot in a specific direction in a number specific conditions Else Search for a large number of enemy units and shoot them Else Search for any enemy unit and shoot them Else Support nearby troops (by detecting shooting done by them, moving to the location and searching for enemies)

So, one function just won't be enough. You'd need a complex decision making system. This is basically code. It has the same functions as mlog and probably the same complexity. Why do we need second mlog? Please, learn syntax of the already existing language and you are good to go. In case you are having issues with one of the most frustrating programming language in the existence, I can understand and I will support any ways to make mlog more viable. But we do not need second coding hell.

To fix PvP, there should be specific PvP oriented balance for this gamemode. As for now Mindustry is best suited for solo gameplay against zero brain AI. It's a game design issue, not the mlog problem.

Thing is, this system is not meant to process complex commands. It is meant to process commands as simple as I said them(basically, to give the simple ability for any player to control stuff without spending significant time/work on it.) For example, just to shoot on one specific unit. This system is meant to give simple controls in the hands of the players, Most of which would give back the levrage to casual players that do not have time to make systems of theirs. Any super complex system might be left for logic.

Also, this system is headed for a UI-Focused way of implementation with the need of answering 2 to 3 questions at most rather than a coding-focused one which logic uses (mlog). The very purpose of this system I suggest is to make sure anyone can have decent control without the need to learn mlog.

Feilong-Mindustry commented 3 years ago

Ok. You have group of quasars shooting at enemy walls using your mlog#2. Enemies approaching, starting to shoot your units. Do you want your quasars to switch targets? If yes, this is coding, it's not basic and mlog#2 will not cover it, but mlog#1 will. If no, mlog#1 can do it with several lines and you can save the blueprint for fast use.

I understand the point of UI oriented coding, it has it merits. However I don't think it's enough to grant the creation of a parallel language. Maybe there is an issue with your personal understanding of mlog? To be honest, if you can perform in Mindustry at a decent level, you are overqualified to learn basics of mlog without any issues.

You probably should try to code several things yourself. Then problems with your command centers will become more obvious. There is no need for simple commands. Units and buildings need to adapt to specific situations and mlog#2 just will not cover it.

"Noob friendly" interface is actually the thing that makes current mlog nightmare. It's extremely hard to write anything exceeding 300 lines due to scroll design, absence of functions and insane collection of arrows instead of standard (if-else if - else if) are constantly building up frustration. I would vote to move in an opposite direction and allowing users to write in a normal interface. I'd also like to see guides section to make mlog less intimidating for new users. Your idea can be used too as a learning tool. Basic visually easy to read functions can be seen both on UI screen on those command centers and on the coding screen as a text.

In any case this is not a PvP issue. Mlog#2 will not help with PvP.

hyx3179 commented 3 years ago

思考逻辑是我目前在这个游戏中最大的乐趣。虽然mlog有这样那样的缺点,但这并不妨碍我花一点时间去学习和使用它。逻辑甚至可以让我们在游戏中下国际象棋和扫雷,并不是控制单位这么简单

itcannotbe commented 3 years ago

思考逻辑是我目前在这个游戏中最大的乐趣。虽然mlog有这样那样的缺点,但这并不妨碍我花一点时间去学习和使用它。逻辑甚至可以让我们在游戏中下国际象棋和扫雷,并不是控制单位这么简单

这不是谈话的重点。 Theoneflop 想添加第二种mlog而不是学习原始逻辑。

hyx3179 - Thinking logic is my greatest joy in this game. Although mlog has various shortcomings, this does not prevent me from spending a little time to learn and use it. Logic can even allow us to play chess and minesweeper in the game, not as simple as controlling the unit

Feilong-Mindustry - This is not the point of the conversation. Theoneflop wants to add a second type of mlog instead of learning the original logic.

Courtesy of Google Translate

Updated with the comment below.

Feilong-Mindustry commented 3 years ago

思考逻辑是我目前在这个游戏中最大的乐趣。虽然mlog有这样那样的缺点,但这并不妨碍我花一点时间去学习和使用它。逻辑甚至可以让我们在游戏中下国际象棋和扫雷,并不是控制单位这么简单

这不是谈话的重点。 Theoneflop 想添加第二种mlog而不是学习原始逻辑。

Theoneflop commented 3 years ago

思考逻辑是我目前在这个游戏中最大的乐趣。虽然mlog有这样那样的缺点,但这并不妨碍我花一点时间去学习和使用它。逻辑甚至可以让我们在游戏中下国际象棋和扫雷,并不是控制单位这么简单

这不是谈话的重点。 Theoneflop 想添加第二种mlog而不是学习原始逻辑。

并不真地。 我的观点是为那些不想或没有时间学习编码语言的人制作一个简单的用户界面。

Theoneflop commented 3 years ago

Ok. You have group of quasars shooting at enemy walls using your mlog#2. Enemies approaching, starting to shoot your units. Do you want your quasars to switch targets? If yes, this is coding, it's not basic and mlog#2 will not cover it, but mlog#1 will. If no, mlog#1 can do it with several lines and you can save the blueprint for fast use.

I understand the point of UI oriented coding, it has it merits. However I don't think it's enough to grant the creation of a parallel language. Maybe there is an issue with your personal understanding of mlog? To be honest, if you can perform in Mindustry at a decent level, you are overqualified to learn basics of mlog without any issues.

You probably should try to code several things yourself. Then problems with your command centers will become more obvious. There is no need for simple commands. Units and buildings need to adapt to specific situations and mlog#2 just will not cover it.

"Noob friendly" interface is actually the thing that makes current mlog nightmare. It's extremely hard to write anything exceeding 300 lines due to scroll design, absence of functions and insane collection of arrows instead of standard (if-else if - else if) are constantly building up frustration. I would vote to move in an opposite direction and allowing users to write in a normal interface. I'd also like to see guides section to make mlog less intimidating for new users. Your idea can be used too as a learning tool. Basic visually easy to read functions can be seen both on UI screen on those command centers and on the coding screen as a text.

In any case this is not a PvP issue. Mlog#2 will not help with PvP.

Well another solution would be to scrap the current mlog and make 2 logic:

  1. Full-on coding language
  2. A simple super-noob friendly UI.
itcannotbe commented 3 years ago

That's not gonna happen. Do you know how many hours you will waste to make your own language?

Also A simple super-noob friendly UI? Are you even thinking straight or suddenly gotten extremely irrational.

Heck even json modding is dead simple and people are wanting a more simplified way.

Feilong-Mindustry commented 3 years ago

Welp, I've tried my best. You don't seem to realize the complexity of making something extremely difficult into a single-click-noob-friendly feature. Mlog is as easy as it can get. No real coding language can be used after several hours of practice without previous experience. Mindustry got as close to that goal as it could with a single dev project. If it's not enough for you, use logic done by others like nearly every single person in PvP mode. No amount of added graphical figures and fancy buttons will give you basic understanding of programming.

hyx3179 commented 3 years ago

好的。你有一群类星体使用你的 mlog#2 向敌人的墙壁射击。 敌人接近,开始射击你的单位。 你想让你的类星体切换目标吗? 如果是,这是编码,它不是基本的并且 mlog#2 不会涵盖它,但 mlog#1 会。 如果没有,mlog#1 可以用几行来完成,您可以保存蓝图以便快速使用。 我理解面向 UI 编码的要点,它有它的优点。但是,我认为创建并行语言还不够。 也许你个人对mlog的理解有问题?老实说,如果您可以在 Mindustry 中表现出不错的水平,那么您就没有任何问题可以学习 mlog 的基础知识。 您可能应该尝试自己编写一些代码。那么你的指挥中心的问题就会变得更加明显。不需要简单的命令。单位和建筑物需要适应特定情况,而 mlog#2 不会涵盖它。 “菜鸟友好”的界面实际上是让当前 mlog 做噩梦的东西。由于滚动设计、缺乏功能和疯狂的箭头集合而不是标准(if-else if - else if)不断积累挫败感,因此编写超过 300 行的内容非常困难。 我会投票支持相反的方向,并允许用户在正常界面中进行编写。我还希望看到指南部分,以使 mlog 对新用户不那么令人生畏。您的想法也可以用作学习工具。可以在这些命令中心的 UI 屏幕和编码屏幕上以文本形式看到基本的视觉易读功能。 在任何情况下,这都不是 PvP 问题。Mlog#2 对 PvP 没有帮助。

另一个解决方案是废弃当前的 mlog 并创建 2 个逻辑:

  1. 完整的编码语言
  2. 一个简单的超级菜鸟友好的用户界面。

可以给现有逻辑系统添加更详细说明,或一些教程,不过我们国家有很多第三方会制作这些。 一个完整的编程语言设计是非常复杂的,功能完善和简单是对立的存在。 另外,这是一个游戏,我不想在游戏里工作。如果想编程我为什么不去工作。

You can add more detailed instructions or some tutorials to the existing logic system, but there are many third parties in our country that will make these. The design of a complete programming language is very complicated, and perfect functions and simplicity are opposites. In addition, this is a game, and I don't want to work in the game. If I want to program, why don't I go to work.

itcannotbe commented 3 years ago

In addition, this is a game, and I don't want to work in the game. If I want to program, why don't I go to work.

Paid

OnyxFinger commented 3 years ago

I think logic blocks are fine for PvP. Usually there's schematics for you to use if you can't program the behaviour yourself, and making code for processors (especially without logic debugging mods) takes a while.

it isn't. With logic is born inequalities due to players giving their logic on, let's say discord, and other players that aren't there, well they don't get their logic. Because of that, there is almost no amount of personnal input in many players' logic (eg me), and some others may lack this very logic. Basically, it means you get what is essentially better technology but without the need of skill

Dangleos commented 3 years ago

Logic blocks are supposed to be powerfull. They give advantage to the most skilled and advanced players over people with just have a good set-up

Feilong-Mindustry commented 3 years ago

Damn, pros are here. @OnyxFinger I actually agree that mlog is a questionable feature for PvP and I'd say for PvE as well. The thing is - we should had a decent unit control system since v6. Units should be able to patrol walls, hunt down base invaders, pathfind to certain points and assist on attack. Also certain buildings should already had resource management ( e.g. no more burning all silicon on surge or power blackouts after dome activation). However those features might took a lot of development time. Mlog is DIY solution for this problem. Naturally people found way to abuse the hell out of mlog and now we in balance hell. For example domes are too easy to use and don't require any logistics - just use flare and a processor. T5 units are in mass production with resource delivery. Bomber rush is way too powerful with player direct input. Foreshadows are no brainer on attack maps. PvP has an extra layers of those problems. While the result of a match should be purely skill based, in reality it's heavily mlog dependent. I don't think there is an easy fix for PvP. OP suggested adding simpler noob oriented mlog#2 to the game. I personally think the only way out is balancing Mindustry PvP outside of Mindustry PvE. Naturally logic should be abolished or only certain widely approved and available for both sides processors could be allowed (no personal blueprints or mlog editing).

acoaco commented 3 years ago

I saw this guy wrote "scrap the whole Logic systems scheme and replace it with a "command center"",not only mlog#2 or just a better CC,basically it's killed people who put lot time on it or people already rely on it(like build T4 T5)

anuke already added logic parser in march,it's already help lot on code mlog,with jump labal now 300~400 lines mlog code like piece of cake,I rewrite all my all 40-50 logic to v7 with some new method in 5-6 days

server can ban logic or part logic command (or easier map ban logic) but only few server doing it do you know why? that's simple more people accepted it,cuz it's creative

and you can copy it,so once you got beaten by a mlog you can save them make you stronger,and I don't think logic creator are selfish most people share their schematic and they know you can copy it easily in game,you can checked ranked server I saw my schematic everyday lol

but I agree anuke should buff CC,CC's price so high but can be replaced by logic easily now or buff basic unit AI,ranked server reimplement it so people don't need poly logic anymore it's run well now(auto mining + rebuild)

about people think logic have too much power,I will said everything can affect your team lot,in a non logic game command attack can send your all units feed neutral turret and die,or unloader + incinerator griefer,it's just a tool depend on how you use it the game share resources so you always need play with guys you trust

more button or ui won't make thing easier,just like sourcetree 90% command are clickable without type them but people without basic git knowledge still can't use it

OnyxFinger commented 3 years ago

Logic blocks are supposed to be powerfull. They give advantage to the most skilled and advanced players over people with just have a good set-up

aaannnnnddd you didn't read what I said. because else you wouldn't have said that.

OnyxFinger commented 3 years ago

I personally think the only way out is balancing Mindustry PvP outside of Mindustry PvE

IN my opinion, the balance difference between PvP and PvE isn't the problem, logic is. Because in PvP there is usually a logic universe and a non logic universe, it's hard to keep it balanced. Aco's statement is somewhat right, but I still think that logic isn't much of a good thing, other than making the game feels less "macro only" (tbh in ranked it is micro only, but logic does do a great job at making me forget it) the main problem, is that logic actually makes PvP funnier (in my opnion), so while I don't think it has much impact on survival and could pretty much get nerfed right away (except if attack has something to do about it), but it would be a fun throwaway

itcannotbe commented 3 years ago

Can you stop throwing in the PvP argument?

PvP is purely skill based (luck based if you count in how lucky you can be with teammates.)

Skill includes the ability to use mlog. Unless it's disabled.

OnyxFinger commented 3 years ago

Can you stop throwing in the PvP argument?

PvP is purely skill based (luck based if you count in how lucky you can be with teammates.)

Skill includes the ability to use mlog. Unless it's disabled.

but I literally said logic isn't necessarily about skill also, PvP is a 3rd of the game, so no I won't stop, especially since logic is kindaaa problematic for PvP rn

github-actions[bot] commented 3 years ago

This suggestion is now stale, and will be automatically closed.