Guide to Integrated Circuits

From Hearth of Hestia Wiki
Revision as of 16:53, 16 December 2021 by Chebidorov (talk | contribs)
Jump to navigation Jump to search

Hello! I am Cheb, a.k.a. Soap, and I enjoy role-playing and making Integrated Circuits in Baycode-based SS13 servers. This user page will potentially contain all sorts of Integrated Circuit-related information, but for now, here's a general guide for those who are interested in getting started.

Guide to Integrated Circuits

Integrated Circuits are modular electronics, created by players by connecting various components in order to achieve a certain result. This result can range from simple language translators and medical scanners, to rapid-fire launchers and remote-controlled drones, all the way to multi-purpose computers and complex distributed systems. If the idea of making a completely unique machine, be it useful, fun, or both, appeals to you, then read on.

Getting started

Equipment

The creation of Integrated Circuits requires a set of equipment. Some of it is generic, while some of it is specialised and only useful in this context.

  • An Integrated Circuit Printer is your primary interface with the Integrated Circuit world. Upgrade Disks, available from Research and Development, permanently enhance an Integrated Circuit Printer by unlocking advanced components and instant cloning capabilities. The device prints all required components by expending metal sheets, and can also print the following tools, at no cost:
    • A Circuit Wirer is used to wire components together. It is required to make the machine actually work.
    • A Circuit Debugger can activate components directly, and write data such as strings, numbers, and references to objects, into a component's data pins. It is not strictly required, but it makes working with Integrated Circuits much, much easier.
    • A Circuit Analyser scans a circuit, producing a string of code that can then be used to clone it as many times as you wish. The cloned circuit will retain the same functionality, except for some small differences (which will be discussed below).
    • An Assembly Detailer can optionally be used to customise an assembly by painting it a certain colour of your choosing. The colour will also be carried over to any cloned circuits.
    • Data Cards are very much situational. There is a component that provides Data Card scanning functionality, allowing you to save custom data to, or load data from, a card. Typically used for storing text to be read by a different circuit, at a later time.
  • Charged Power Cells are required for a circuit to function, since all components consume power when active.
  • Metal Sheets need to be inserted into an Integrated Circuit Printer to print components and assemblies. For the most part, the only metal required is steel, but certain components may require rarer materials.
  • A Screwdriver can be used on an assembly to change its sprite to a more "complete" state and vice-versa, and hide or expose its inner components. Essentially, it toggles the assembly between "open" and "closed."
  • A Wrench anchors an assembly in place, preventing movement until detached.

Setting up

Assuming you are a Scientist, or can otherwise procure the tools you need, the procedure for getting ready for a comfortable session of building Integrated Circuits should be roughly as follows:

  1. Get an Integrated Circuit Printer and fill it with 25 steel sheets.
  2. Upgrade the Printer with the upgrade disks from R&D (Optional, but highly recommended)
  3. Get one or several power cells and charge them.
  4. Use the ICP to print at least a Circuit Wirer and a Circuit Debugger.
  5. Print an assembly of your choice. Now you can start adding components and wiring them together.

The Basics

The Component Screen

It is important to familiarise oneself with the main screen, the interface, of a component; it is through this screen that all the magic happens. The screen can be examined by selecting the relevant component within the assembly, or simply by printing the component and examining it.
The centre of the screen displays the name of the component and a short description.
On the left and right are the input data pins and the output data pins respectively. The component will take input data, perform whatever operation it must, and output a result - when this occurs, if an output pin is wired to an input pin, it will push its data to the latter. Thus, the result of a certain operation can be used as the input for the next.
The red text towards the bottom describes the component's pulse-in and pulse-out pins, where the pulse-in pin activates the component (makes it perform the action it's meant to do) and the pulse-out pins can be wired with other components' pulse-in pins to activate them in response to a certain event. Usually, this event is simply the component finishing its operation; if not, the event that sends the pulse-out signal is described on the pulse-out pin itself.
Note that some components lack data pins, and some others lack any pins at all.
At the bottom of the screen you will find other helpful information, such as complexity (an assembly may only support a total complexity up to a certain value, so lower is better), the component's delay before re-use (More in section 1.3.2), and an extended description that can be very helpful.

Placing Components

Clicking an open assembly with a component in your hand places it inside, at the last position. If you want to move the component to another position, simply click the number adjacent to it and type a new number into the box that appears. Following a logical order makes the circuit's structure easier to understand.
You may also rename components for extra legibility, or remove them from the assembly altogether.

Using Your Tools

This section will detail the use of the Circuit Wirer and the Circuit Debugger to create a complete and functional circuit.

Circuit Wirer

Wiring two pins together is a simple, two-step process.

  1. With wirer in hand, on the screen of a component, click a data or pulse pin.
  2. Click a different pin that's compatible with the first. Two pins are compatible if they're in the same class (data or pulse), and if they are complementary (one is output or pulse-out, the other is input or pulse-in).

In reality, two data pins being complementary is not a strong requirement, but wiring an output pin to an output pin simply makes no sense in most cases.
If you wish to remove a wire connection, you must set the wirer to "unwire" mode by using it in your hand. The process for removing a wire is the same as the wiring process described above.

Circuit Debugger

If you want to manually send a pulse-in signal to a component, simply open the screen of the component, with debugger in hand, and click the pulse-in pin. The component will activate, perform its operation on its input, if any, and then propagate the signal to any connected components, if applicable.
Writing data is a similar process. Use the debugger in your hand to access a menu, where you'll be asked to specify the type of data you wish to write. Note that, in the case of boolean data pins, you want to write the number 1 for TRUE and the number 0 for FALSE. Having made your selection, simply click the relevant data pin to write your data to it. You may also use the debugger to scan regular objects in the world, and then write a reference to them to a pin that requires it.

Finishing up

You've worked hard, you've wired everything flawlessly, and you've made sure your creation works through rigorous testing. It's time to clean up and prepare the circuit for being analysed and cloned.
First of all, if you have done any testing, it's likely there's leftover data that shouldn't be there once the circuit is cloned. The debugger is useful here, as it can write "null" to non-boolean data pins, and "FALSE" to the boolean pins.
Having cleaned up, you may decide to decorate your assembly with a colour of your choosing, via Assembly Detailer, and perhaps give your circuit a beautiful name. Once everything is neat and tidy, if you want to save the circuit for use in later rounds, simply use the Circuit Analyser on it, and save the long string it outputs somewhere safe. Now, whenever you wish to clone the circuit, just copy the string into your ICP and press "Clone."

Caveats

Beware of these problems when designing a circuit.

Limitations

You cannot just keep adding components forever. There are hard limits in place both on the component count and on the total complexity of your components.
Some checks are also deliberately added to prevent Integrated Circuits being used to gain a significant advantage (for example, knowing the exact location of a character without having a line of sight to them).

Delays

The time it takes for a component to finish its operation is obviously not nil, but can be considered so. A machine which only uses each component once will finish its work almost instantaneously.
However, a scenario where you may want to use a component more than once is extremely common. In these cases, you must insert a deliberate delay between uses (there are components for this specific purpose). The delay for the re-use of a component is displayed on its interface. The minimum delay is 0.1 seconds.

Cloning

The behaviour of an original circuit you've just finished and its clone may differ substantially, to the point where the clone no longer works.
After cloning:

  • Any data of type <REF> and <LIST> is erased! Make sure your circuit can work around this.
  • Data pins of type Boolean will be set to FALSE, if they're output pins. Input pins of type Boolean will remain unchanged.
  • Integrated Signaller components will not work until one of their input pins is modified or updated.

Bugs

Some components just don't work as intended.

  • Some do nothing, or work improperly when cloned (as mentioned).
  • Some are described as doing one thing, but do another thing entirely.
    • Funnily enough, the operation they actually perform is often more useful then the described one.
  • Some components are unable to properly display apostrophes and other special characters.

Make sure you verify that a component works before you build a 100-component circuit around its described functionality.

You

Be sure not to burn yourself out. Drink water, take pauses, roleplay with other characters (it is the primary purpose of the server, after all - people don't like circuit designers who just sit in the lab for three hours). If you're struggling with a problem, leave it for later, or ask for help. The solution may come at the most unlikely time, from the most unlikely source.