We Get Signal !! I had this idea how we could improve the signal mechanics of Starbound. Of course I am talking about the wiring systems i.e. doors, lights, proximity sensors, etc. Partially inspired by minecraft, we can reprogram the signals to become analog and digital. How would this work? Pretty easy. Currently certain objects have one or more inputs and outputs, but both are digital. By introducing analog signals we can add some extra slots that output and receive analog signals. We can also replace the digital slots with analog on some devices. The type of the signal should be visible by using a different socket color for each signal type. So what's the difference you ask? The main thing is that digital signals can only have two states - HIGH and LOW. This is how current signals work in Starbound. By introducing analog signals we can make some objects output or receive an "amount" i.e. an integer range from 0 to 255 (or 65535 or float... I'll leave it to the programmers to decide). For example the light sensor could be changed to output an amount proportional to the lightness. This means that instead of simple high/low output we can have 256 different levels of power. So basically the brighter the light, the higher the number. Interfacing analog signals to digital signals (i.e. connecting a device with analog output to a device with digital input) and vice-versa is equally simple. The conversion from analog to digital is like this: 0 = LOW, 1-255 = HIGH. For digital to analog: Low = 0, High = 255. This kind of mechanics would allow us to bring up a number of new building blocks like schmidt trigger, gauges (for example the ship has one that is supposed to show how much fuel is left), analog comparators, dimmable lights, etc.
There are so many more building blocks possible, but we'd need a way of programming in some parameters. I borrowed some concepts from Unreal engine, and here's my work-in-progress concept. - Dispatcher (one digital input, many digital outputs) A block that when triggered sends out an array of signals, each with its own preset interval (delay since the previous event/signal) - Random trigger (one digital input, many digital outputs) When triggered (rising edge on input), sends out a signal on a single output slot chosen at random. - Constant signal generator (one analog output) Continuously generates a constant analog signal of a preset power level. To be used with other blocks. - Slider (one analog output) Allows the user to adjust the amount of power this block will output. - MOSFET switch (one digital input, one analog input, one analog output) When a digital HIGH is applied to the digital input, the analog output will be set to the same value as the analog input, else it's zero. - Round Robin (one digital input, many digital outputs) Has an array of digital outputs. Each time this block receives a digital HIGH on the input, the next output slot will be triggered, starting at one. When the output index overflows the number of output slots, it resets at 1. - Counter (one digital input, one digital output) Each time a rising edge is received on the input, the block will increment its index counter by 1. Once this index reaches a pre-programmed number, the output signal becomes high, and the input is ignored. - Screen trigger (one digital output) Triggers when the block enters (becomes visible on) the user's screen. - Pressure plates (one analog output) Could be used to measure the weight of some object on top of them? - Stohastic Trigger (many digital outputs) Triggers random events in random time intervals - Frequency (PWM) generator (one digital output) The output pulses with HIGH and LOW signals of a pre-programmed frequency. A user should be able to set the frequency somehow. Also duty-cycle maybe? - Rotational trigger (one digital input, many digital outputs) Same as round robin, but once it reaches the ending, it does not restart at 1. Could be the same block as round robin, if it had one settable parameter like "RepeatOver" = { true | false } - Schmidt trigger (one analog inputs, one digital output) Classic Schmidt trigger. The output becomes HIGH only after the analog signal exceeds a pre-programmed upper limit. It cannot become LOW until the analog signal drops below the pre-programmed lower limit. Upper limit > lower limit. - Analog comparator (two analog inputs A and B, one digital output) Outputs a digital LOW, if the analog signal A < B. Outputs HIGH, if B >= A. Analog input B is a reference.[DOUBLEPOST=1427144375][/DOUBLEPOST]My 3rd post, couldn't post this link in the previous one. Reference: http://wiki.beyondunreal.com/Legacy:Types_Of_Trigger