Post by Jatsu on Jun 17, 2014 16:38:01 GMT 1
Kogama's logic system is limited in a way to only allow combinational circuits to be created. These types of circuits are very straightforward since they are based entirely on the circuit's inputs. However, these aren't the only types of circuits that exist. Sequential circuits make up another large portion of logic design and tend to be more useful too. These circuits are based not only on a circuit's inputs, but it's past inputs as well. Simply said, these circuits use both its inputs and its outputs to function. They function on the concept of feedback looping, tying one output signal back into one of the circuit's inputs.
As we're all aware, Kogama doesn't allow feedback loops, therefore disabling sequential circuits from being able to be created. This in turn severely limits creators in using the logic system to its fullest extent.
So why did the devs decide to unnecessarily limit creators by disabling logic feedback? Under the pretense that it would cause "nasty feedback ... and would be unpredictable"?
Personally, I find this claim contemptible. Modern computer engineering develops solutions specifically to resolve and minimize these kinds of problems. Not to mention most of the work is already cut out for programmers in this area because they don't have to worry about the physical limitations and problems of electrical circuitry. Instead, the devs only focus on the software component in which there's only three possible problems with feedback looping in a closed system like Kogama's logic.
1. Race Conditions: The player creates a sequential circuit that produces an indeterminate outcome during certain conditions. The outcome is unpredictable because it's calculated based on whichever condition finishes first. The SR Flip Flop is a well known example of this, but can be modified into a JK Flip Flop (aka Toggle) to resolve its race condition. There's a small handful of these, and most if not all are attributed to poor logic design because of human oversight. They're often avoided when the creator has experience and knowledge in the area, which won't happen if it's not even allowed to be experimented with.
2. Propagation delay: The time it takes for a logic gate to perform its function and return its output. Some logic paths take longer to process than others which lead to unintended results. Synchronous logic design resolves most of the problems in this area. However, because Kogama logic is synchronized with the server, it's also relevant that lag can cause problems in this area. We already see this in projects with hundreds of logic boxes due the lag that piles up with so many 3D objects in the game.
3. Metastability / Indeterminacy: These problems already exist in Kogama's logic (see propagation delay). Players can create systems that are extremely sensitive to time. If one condition finishes quicker than another, it might produce unintended results. Severe examples of this occurs with extremely high amounts of logic boxes in a game (1,500+) where the system either stops working (inputs dead) or is significantly delayed to the point of producing incorrect outputs. Surprisingly, feedback loops would barely contribute to this at all. However, it's still worth mentioning because players already experience this issue, despite feedback looping being currently disabled. If anything, it shows that the system could certainly use improvements.
I could go on and mention common interrupt processes found in microcomputers, such as when a circuit comes across an arithmetic error (can't divide by zero), but these kinds of things are beyond the scope allowable in Kogama. Even though players could create a simple calculator in the game, the result of this kind of error would only return an unexpected result unless an exception was created to handle it.
Speaking of exceptions, programming is filled with them - especially in the area of input validation. Programming standards recommend that you validate everything that works, and make exceptions for those that don't. So even if it were true that feedback looping would be problematic to Kogama, there are ways to avoid these problems from ever happening.
Therefore, the only sensible conclusion that I am able to produce is that the devs intentionally limited players because they personally felt sequential logic is too confusing for players to handle. Despite how easily this topic comes to me, it wouldn't be that difficult to create intuitive exceptions that would defer confusion in players. There would only be two main things to look out for with feedback loops:
1. Don't allow a logic box's output to connect to its own input. - Despite none of the possible configurations creating contradictions, it would be confusing for some players to predict what its output would be. For example, an "or" gate with its output tied to its input would be a once toggle when turned on.
2. Don't allow odd number negate chains (N - N - N) to connect back to its first input or any other odd numbered negate in the chain. - This would be to prevent super fast oscillations in the outputting signal, since it would probably be more intuitive and controllable to let a PulseBox have that function.
Player's logic creations that contain errors (race conditions) could be rationalized as "creator error" from which those problems could be solved from helpful players in the community.
The overall point being, feedback looping wouldn't be likely to cause problems at all, certainly not on the developer end of things. It would enable sequential circuits to be built in Kogama which would enable a ton of new possibilities for the logic system. Players that use the system would certainly use it to their advantage. Even players who are starting to explore the logic system would be benefited too. New players wouldn't have to figure out why they can't make certain logic connections, and instead explore it freely and be able to learn more that way.
In all seriousness, I don't think the devs give players enough credit where its due. Regardless of my intuition and knowledge in this area, I took the time to be diligent and did thorough research as well. I took care to restrain myself from being disrespectful and kept the post focused only on one issue in the logic system. Honestly, I simply cannot express how much anger, frustration, and disappointment I feel when I try to work with Kogama's logic system. I feel that it's unnecessarily limited. Nonetheless, I hope someone cared enough to read this...
TL;DR: Allow feedback looping in the logic system, it would open a world of new possibilities.
As we're all aware, Kogama doesn't allow feedback loops, therefore disabling sequential circuits from being able to be created. This in turn severely limits creators in using the logic system to its fullest extent.
So why did the devs decide to unnecessarily limit creators by disabling logic feedback? Under the pretense that it would cause "nasty feedback ... and would be unpredictable"?
Personally, I find this claim contemptible. Modern computer engineering develops solutions specifically to resolve and minimize these kinds of problems. Not to mention most of the work is already cut out for programmers in this area because they don't have to worry about the physical limitations and problems of electrical circuitry. Instead, the devs only focus on the software component in which there's only three possible problems with feedback looping in a closed system like Kogama's logic.
1. Race Conditions: The player creates a sequential circuit that produces an indeterminate outcome during certain conditions. The outcome is unpredictable because it's calculated based on whichever condition finishes first. The SR Flip Flop is a well known example of this, but can be modified into a JK Flip Flop (aka Toggle) to resolve its race condition. There's a small handful of these, and most if not all are attributed to poor logic design because of human oversight. They're often avoided when the creator has experience and knowledge in the area, which won't happen if it's not even allowed to be experimented with.
2. Propagation delay: The time it takes for a logic gate to perform its function and return its output. Some logic paths take longer to process than others which lead to unintended results. Synchronous logic design resolves most of the problems in this area. However, because Kogama logic is synchronized with the server, it's also relevant that lag can cause problems in this area. We already see this in projects with hundreds of logic boxes due the lag that piles up with so many 3D objects in the game.
3. Metastability / Indeterminacy: These problems already exist in Kogama's logic (see propagation delay). Players can create systems that are extremely sensitive to time. If one condition finishes quicker than another, it might produce unintended results. Severe examples of this occurs with extremely high amounts of logic boxes in a game (1,500+) where the system either stops working (inputs dead) or is significantly delayed to the point of producing incorrect outputs. Surprisingly, feedback loops would barely contribute to this at all. However, it's still worth mentioning because players already experience this issue, despite feedback looping being currently disabled. If anything, it shows that the system could certainly use improvements.
I could go on and mention common interrupt processes found in microcomputers, such as when a circuit comes across an arithmetic error (can't divide by zero), but these kinds of things are beyond the scope allowable in Kogama. Even though players could create a simple calculator in the game, the result of this kind of error would only return an unexpected result unless an exception was created to handle it.
Speaking of exceptions, programming is filled with them - especially in the area of input validation. Programming standards recommend that you validate everything that works, and make exceptions for those that don't. So even if it were true that feedback looping would be problematic to Kogama, there are ways to avoid these problems from ever happening.
Therefore, the only sensible conclusion that I am able to produce is that the devs intentionally limited players because they personally felt sequential logic is too confusing for players to handle. Despite how easily this topic comes to me, it wouldn't be that difficult to create intuitive exceptions that would defer confusion in players. There would only be two main things to look out for with feedback loops:
1. Don't allow a logic box's output to connect to its own input. - Despite none of the possible configurations creating contradictions, it would be confusing for some players to predict what its output would be. For example, an "or" gate with its output tied to its input would be a once toggle when turned on.
2. Don't allow odd number negate chains (N - N - N) to connect back to its first input or any other odd numbered negate in the chain. - This would be to prevent super fast oscillations in the outputting signal, since it would probably be more intuitive and controllable to let a PulseBox have that function.
Player's logic creations that contain errors (race conditions) could be rationalized as "creator error" from which those problems could be solved from helpful players in the community.
The overall point being, feedback looping wouldn't be likely to cause problems at all, certainly not on the developer end of things. It would enable sequential circuits to be built in Kogama which would enable a ton of new possibilities for the logic system. Players that use the system would certainly use it to their advantage. Even players who are starting to explore the logic system would be benefited too. New players wouldn't have to figure out why they can't make certain logic connections, and instead explore it freely and be able to learn more that way.
In all seriousness, I don't think the devs give players enough credit where its due. Regardless of my intuition and knowledge in this area, I took the time to be diligent and did thorough research as well. I took care to restrain myself from being disrespectful and kept the post focused only on one issue in the logic system. Honestly, I simply cannot express how much anger, frustration, and disappointment I feel when I try to work with Kogama's logic system. I feel that it's unnecessarily limited. Nonetheless, I hope someone cared enough to read this...
TL;DR: Allow feedback looping in the logic system, it would open a world of new possibilities.