Jump to content
Stray Fawn Community
  • 0

Auto-tag-suffixer and potential math solution


ManTheMister

Post

whenever an “[n]” (or whatever the devs decide to make it if this gets added) appears in a tag, it gets replaced by a number. If it’s in an input field instead of an output field, then it will accept any version of that tag with a number in place of the “[n]”. If it’s in the output field, then it would only be relevant when it was on a piece that got printed by a factory, otherwise the “[n]” would just be replaced by a “1”. The first time tag “tag_name[n]” got printed by a factory it would be “tag_name1”, the second time it would be “tag_name2”, and so on.

This could be used simply to make logic splitters unnecessary on sub-drones, but if local logic gets added, then that wouldn’t change anything.

having things inside of brackets in tags could also be used to for other things, like maybe you could do math in them as well. For example the tag “tag_name[n^2]” would be “tag_name1” the first time it was printed, “tag_name4” the second time, and so on. Also would work with +,-,*, and /.

maybe having sensors be able to output a “[m]” as thier measure could be implemented, and mathable.

Input field containing “tag_name[n>1]” would be true if the tag “tag_name2” was active but it wouldn’t be true if “tag_name1” was active, because 2 > 1 and 1 is not > 1. This would also work for the < and = signs, and an “!” Could be added in front of the symbols for a “not equal to” (!=) or a “not greater than” (!>).

I will likely add more in-depth examples when I have more time.

This would be a very in-depth mechanic and likely only availabe late-game once progression is added.

Link to comment
Share on other sites

Recommended Posts

  • 0

This would require any extra pieces, which might be unbalanced, but I think that the only barrier to intelligent behavior in a drone should be the designers ingenuity.

also some other functions that I missed and am too lazy to edit the post would be the “t” variable (number of seconds science starting), the “h” variable (total health of the local drone (works like fuel/energy)), there would be a “rnd()” function, which would round whatever was in the parenthesis to the nearest whole number (maybe the “n” variable would be changed to “x” because “n” appears in “rnd()”), parenthesis would work in math like you learn in school, there would be the absolute value sign “|(stuff here)|”, and maybe even “tan()”, “sin()”, “cos()”, and other functions.

there might be “%m” and “%h” functions, which would output the percent (0 to 100) of the maximum value of the variable

for the “m” variable in the directional sensor, left would be 1 to 180 and right would be -1 to -180, or maybe right would be positive and left negative. I don’t really care.

the distance sensor would output either 0 or 1 for the “m” variable.

please note that these paragraphs are in the order that they occurred to me and not organized in any specific way. I’m getting too excited about this purely theoretical feature to organize these. Also not everything listed here is necessary, only the general idea needs to be added to the game.

one downside would be significantly longer time spent troubleshooting, but you would be troubleshooting things that would not be possible before this, and it is not a feature that everyone has to use, and it doesn’t at all impact what we currently have, so I don’t think that it really counts as a downside.

Link to comment
Share on other sites

  • 0
2 hours ago, Lurkily said:

I'm actually thinking factories may eventually need a downgrade; the need for multiple controls like this is a symptom of how insane they are.

The idea started out as just putting a number on the end the tags from factories, increasing by 1 for each item printed, but now I’m most excited about the math. You would still need logic gates, because you can’t really do anything with only 1 expression. True, you wouldn’t need as many, but think of sumo. Right now brute force is the most important aspect of a drone. You can make it intelligent, but then it will just get shoved out of the arena by any drone with a guidance system. With this system, not only can drones simply be far more intelligent, but inteligence comes cheaper, which would make intelligent drones far more crucial in the arena, because they could have only a few less thrusters than dumb drones, while being far more capable than them. Some people might think that that is unbalanced, but I think that the ONLY barrier to having a sentient drone should be your own ingenuity, not a part limit.

some way to do math has been requested many times. The “math block” that is set to read the measure of a specific sensor and then how would it really do math? It could give an output based on =, <, >, and similar comparisons, but how would it actually work to do math. The only thing that I can think of that would be useful is absolute value.

Link to comment
Share on other sites

  • 0

More things that I forgot about or hadn’t thought of yet:

1.) each tag can only have 1 set of brackets

2.) the if gate (and maybe all of the logic gates with only 1 input?) output field has a variable “i” that is equal to the bracket of the tag in the input field

3.) I’m not sure if math would be ordered in the classic gemdas order (grouping, exponents, multiplication/division, addition/subtraction (grouping would still be first, no matter what)) or if it would just do the math from left to right. I’m also not sure if nested grouping would be allowed.

4.) dynamic thrusters and anything else that has something that can be increased/decreased in the future can use the “m” variable

5.) if anyone has any questions about how any part of this would work, then I will answer them to the fullest detail that I am able.

Link to comment
Share on other sites

  • 0

The Math Block suggestion basically was a second layer of logic.  The example I used was an altimeter with math that gave you an infinite moving average of the terrain height.

In this case, an addition block would read the current altimeter value, and the last average produced, and produce the math output; then a division block would read that result, divide by two, and provide a math output that would be the moving average(And read by addition in the next cycle).  With perhaps additional math to weight the previous value more heavily (such as the previous result x4, plus the current result, divided by 5).  

Use an addition block to add 5 or 10 to the average, and generate another output if your altitude is less than that, you could dynamically adjust your altitude to keep you over an average terrain height and circularize the planet, effectively strip-mining it.

Link to comment
Share on other sites

  • 0
1 hour ago, Lurkily said:

The Math Block suggestion basically was a second layer of logic.  The example I used was an altimeter with math that gave you an infinite moving average of the terrain height.

In this case, an addition block would read the current altimeter value, and the last average produced, and produce the math output; then a division block would read that result, divide by two, and provide a math output that would be the moving average(And read by addition in the next cycle).  With perhaps additional math to weight the previous value more heavily (such as the previous result x4, plus the current result, divided by 5).  

Use an addition block to add 5 or 10 to the average, and generate another output if your altitude is less than that, you could dynamically adjust your altitude to keep you over an average terrain height and circularize the planet, effectively strip-mining it.

Ah. I misunderstood. That would allow for more intelligent builds, but you still need a large number of new blocks, and you need an additional part off the part limit for each operation. Merely finding a distance using the Pythagorean Theorem would use 4 parts, 5 or more if you count the boolean operators, AND that’s assuming that there are sqrt and exponent parts.

This tag-based math solution would allow immense complexity. You could store variables using dynamic thrusters. You could take multiple outputs from directional sensors. You could make a robot that dances randomly generated dance moves. You could do almost anything.

And not everyone has to use it. If it’s not for you, you can just ignore it. It doesn’t impact existing features in any way.

You could say it doesn’t fit with the style of the game, but I think that Nimbatus is about building the craziest thing that you can think of, without limitations (yes, progression mechanics will be coming, and that’s a good thing. The progression would teach people how to use all of the features, but once they have everything, they should be able to do anything).

Link to comment
Share on other sites

  • 0

Putting math in tags is getting very close to just permitting scripting, though.  I think it begins to present a barrier to players who aren't code-proficient, more than our current logic by an order of magnitude.  

Ideally, I would like to keep logic's current simplicity - you can be talented or experienced with code, or you can be an idiot, but have hours invested in the game, and either way, you can still build proficiently.

Link to comment
Share on other sites

  • 0

But it’s only math, not full scripting. Maybe it’s only availabe in a sandbox mode. It would be locked at the very end of progression mechanics. Just think of the possibilities. If people don’t understand it, then they can not use it, or just ask for help. There would be an in-depth tutorial. It’s wouldn’t be a barrier to gameplay in any way except maybe in multiplayer, but there could be separate tournaments where it is banned.

Link to comment
Share on other sites

  • 0

I recognize that math is a midpoint between logic as we see it now and scripting, but I still think it's a step beyond the simple building blocks the devs seem to want on offer; I'm also leery of anything that might steepen the learning curve, it's punishing enough as it is. 

I don't think brackets are the way to go if this were implemented.  I think you'd want to just be able to assign a variable to a tag; having to put special syntax into tags seems unnecessary.

Link to comment
Share on other sites

  • 0

I understand not having scripting in the game would be a good idea. Not everybody has that knowledge. But with math, anyone who has gone through school should be able to understand it. It might even be easier for some people to understand than this binary logic system that we have right now, because thier brains are already familiar with the concepts of normal math. Syntax might be an issue that some people find more difficult, but how else would it work?

Link to comment
Share on other sites

  • 0

Not saying addition is beyond people, just that it's beyond what I think they wanted to offer.  I even went so far as to say that the math blocks seemed out of character with the dev's intent when I suggested it, as simplified and visually oriented as I made it. 

Link to comment
Share on other sites

  • 0

Right, but things that are possible with this, well theoretically possible, would take multiple different of the same sensor with slightly different settings and a number of logic blocks at least in the high double-digits, if not more.

I think that the devs want to make a game where people can exercise thier creativity with as little limitations as possible, without removing the challenge from it. Ideally, people should be able to build anything, but they need to spend some time trying to figure out how to do it. It doesn’t matter exactly how they do that, so long as they achieve the end goal without sacrificing other important things.

why don’t we ask the devs what direction they think that the game should go. If any of the devs happen to see this post, could you please provide your input?

Link to comment
Share on other sites

  • 0

I think my biggest worry is that people will learn that they need to learn a unique mathematical syntax to fully use the logic, and balk.  I'm more concerned about whether it'll help the game be successful, rather than the capabilities it might grant.

Link to comment
Share on other sites

  • 0

Maybe it could be released as some sort of DLC or mod that isn’t multiplayer-legal (though I would much prefer it to be in the full game). Then it wouldn’t intimidate anybody. It would be fully useable in single player. I still think that full support would be better

syntax or the lack thereof could be up to debate. There could be a variable attached to each tag, or the math could exist inside of the tags, with some sort of special syntax. I think that a “math” field next to the key and tag fields would be more intimidating than the math being internally inside of the tags, even if it might be more intuitive. And if this feature was hidden at the end of a progression system, then you would still have to learn how to use the normal logic before you unlock it, which I think would be important. And if you’ve been playing for long enough to have gotten through the entire progression system, then you’re probably not going to stop playing because you don’t understand something. (And speaking from a heartless financial perspective, people are more likely to recommend a game to thier friends before they finish the game, thus before they unlock the math system and get intimidated and leave, meaning that that even if they do leave, then they and thier friends have all purchased the game, thus providing funding to Stray Fawn Studios.)

Link to comment
Share on other sites

  • 0

I'm gonna be honest; I'm not entirely certain why I'm having a negative reaction.  I just have a strong feeling that syntax isn't really compatible with the game's character, and I like the way complex behavior takes root from such extraordinarily simple building blocks.

I guess I feel like logic and tags are the barest, simplest building blocks that can result in complex behavior.  Maybe that's why I'm okay with a concept like math blocks (even if I feel it's a bit out of character) but less okay with permitting mathematical equations inside a tag.

There would, on a side note, have to be some internal control to make sure nobody's dividing by zero or trying to calculate the last digit of pi, of course; a limit to the number of operations per frame before logic parts just give up, perhaps.

Link to comment
Share on other sites

  • 0
27 minutes ago, Lurkily said:

I'm gonna be honest; I'm not entirely certain why I'm having a negative reaction.  I just have a strong feeling that syntax isn't really compatible with the game's character, and I like the way complex behavior takes root from such extraordinarily simple building blocks.

I guess I feel like logic and tags are the barest, simplest building blocks that can result in complex behavior.  Maybe that's why I'm okay with a concept like math blocks (even if I feel it's a bit out of character) but less okay with permitting mathematical equations inside a tag.

There would, on a side note, have to be some internal control to make sure nobody's dividing by zero or trying to calculate the last digit of pi, of course; a limit to the number of operations per frame before logic parts just give up, perhaps.

Often when I have a negative reaction it’s because I had a different idea on how to do something. I usually have to consciously consider all of the pros and cons of each way that it could be done. Your math blocks have the advantage of being more similar to what we have now and thus possibly more intuitive, while my tag-based solution has the advantage of being more efficient. Thinking of the two, I definitely wouldn’t mind math blocks, but I still think that a math solution that doesn’t require a large number of parts do do compelx math, which often requires many operations in each equation.

more things that I didnt think of earlier: A way for tags to reference the numbers in other tags. Maybe inside of the brackets you could have a variable “{tag_being_referenced’s_name[n]}”, which would check the location of the “[n]” in the referenced tag and set everything inside the {}’s to whetever the value was.

(all specific syntax and exact workings can be changed, but different tags need some way to interact)

Link to comment
Share on other sites

  • 0

I don't, really; I mean, I had a different idea, but I didn't like the idea of actually impleme]nting it; I posted it because a bunch of comments about implementing math came up in a short span.

I think my issue is that I feel like it works against all the effort that's gone into simplifying the function of basic logic and sensors.

Link to comment
Share on other sites

  • 0

I don’t think that this would nullify our current logic. Most things would still probably use our current logic. Our current logic would be available far earlier than the math, so that would force people to learn it and not skip straight to the more complex stuff. The current logic would be necessary for the math part of the logic to work. And if somebody wanted to, then they just wouldn’t use this. Some people don’t use tags, and there’s nothing wrong with that.

AND the game is still in early access. The style can still change. Nothing is set in stone. If it’s tried and we decide that we don’t like it, then it could be removed when the final game is released.

Link to comment
Share on other sites

  • 0

No, not that they would nullify current logic.  I believe it works against the effort going into simplifying them; a lot has been done to keep them simple, and this feels like a step in the other direction.

Link to comment
Share on other sites

  • 0

I am dismayed that we don't have more opinions - @Markus usually likes pitching his opinion, so I'll tag him here.  (Can it be made so that when a dev is tagged their Dev Emoji is used instead of the tag?  That'd be awesome.)

I don't want simplicity, exactly.  I want the complexity available to be built from the simplest building blocks possible, the way logic is now, so that the way toward very complex behavior is clear to even a beginner.

Right now, the things we can do with logic aren't simple.  Some of my projects are so daunting that if I return to them after time away, I've had to copy the logic parts onto paper and diagram their relationships to understand it all.  But the building blocks are super-simple.  Making an AT-AT walker is really not that hard.  The timing is an issue, and you'll have to revise a lot, but the HOW of it is easy as hell.    That's what I would want from math, too.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...