Table of contents
+-
+
- Introduction +
- Getting started +
- Adding overlay +
- Using the editor + +
- Elements +
- Basic element properties +
- Text +
- Image +
- Countdown and timers +
- Emotes +
- Audio +
- Video +
- Iframe +
- Favorites +
- FAQ +
-
+
Introduction
++ IROS is a simple web based overlay which can be integrated into your stream through a browser source. + It allows you to display and arrange text, images and other elements on stream through a web interface. + Anybody with access to the editor link can control the overlay and update it in real time. +
++ As of now the overlay supports the following elements: +
-
+
- text +
- images +
- emotes (can be searched directly from the editor, provided through 7TV) + +
- countdowns and timers +
- audio and video embeds +
- iframes, i.e. embedding websites +
+ See quickstart to get started with a few simple steps or look below for + a more thorough explanation for setting it up. This tutorial is also available as a video (click on it + to load it): +
+ + + + + +Getting started
++ The overlay is split up into two parts, the editor and the overlay itself. To use both of them a new + session has to be created. This will give you two links, one for the editor and one for the overlay. + A new session can be created here: +
+Create a session
+ ++ To generate a new session enter the link to you stream and optionally the size of the overlay. The link + to the stream is then used to display it in the background of the editor as a reference when adding and + moving elements. The size is used to make sure that the overlay matches the resolution of your stream. + If no size is provided it will default to 1920x1080. As of right now the editor is optimized for an + aspect ratio of 16:9. +
+
+ Once you've entered the stream link click the generate button. Afterwards two links will be displayed.
+ The first one is the editor link and the second one is the overlay link. The links essentially just
+ contain a session id which is unique for each overlay.
+ Important: The generated links should only be shared
+ with people
+ you trust. Anyone that has access to them or the session id they contain can use the editor to change
+ the overlay.
+
Adding the overlay
++ Adding the overlay to your stream is done through a browser source. If you don't know how to add a + browser source to your streaming software here's two links for how to do it in OBS and XSplit: +
+ ++ For the following steps OBS studio is used since most people use it. After having added a browser + source you'll be presented with the following dialog: +
+
+ + The URL field is where you enter the overlay link. The width and height fields should be set to the + size of your stream so the browser source fills out the entire screen. If you don't know the size of + your stream you can find it in the settings dialog of OBS under the video tab. All other settings + can be left at their default values. After the source has been created it will display the overlay + which by default is empty. +
+Using the editor
++ The overlay editor is where elements are added, removed and modified. It consists of two windows + and the main canvas area in the center. The canvas area is a representation of the current state + of the overlay. The two tool windows can be moved around by clicking and dragging their title bars + if they are in the way of any overlay elements. If no element is selected the windows will also be + semi-transparent to make it easier to see the canvas area. If you hover over them they will become + opaque. +
+Keybinds and basic usage
++ After having added an element you probably want make additional changes to it. By default newly added + elements are not visible on stream. Elements that are not visible on stream will be marked by a cyan + dashed border and low opacity. The currently selected element will have a red border. If the element + is scaled down a lot the border might not be visible or hard to see. +
++ By clicking on any element on the canvas you can change the active selection which will start to display + the settings for the currently selected element in the settings + window. + Once an element is selected there are a few useful keybinds available: +
+-
+
- G enters movement mode, move your mouse to move the object along the x and y axis + +
- S enters scale mode, move your mouse to scale the object along the x and y axis + +
- R enters rotation mode, move your mouse to rotate the object around the Z-axis +
- M mirrors the object horziontally +
- Shift+M mirrors it vertically +
- X deletes the element +
- H toggles the visibility of the element on stream +
- Ctrl+R resets the scale and rotation +
- Shift+D duplicates the element +
- Mouse wheel up/down zoom in/out +
- Mouse wheel click pans the canvas +
- Ctrl+Space resets zoom and pan +
+ To exit any of the modes press ESC or click anywhere on the canvas. If you have used + Blender before some of the keybinds should be familiar to you. When + moving, + scaling or rotating you can press X, Y or Z to lock + the movement to the x or y axis respectively. +
++ If you have an image link in your clipboard you can paste it into the editor with + Ctrl+V + to create a new image element. The same goes for text which will create a new text element. The editor + also has an internal clipboard which can be used to copy and paste elements. To copy an element press + Shift+C and to paste it press Shift+V. +
+Settings window
+The settings window is split up into three segments:
+-
+
- Adding elements +
- Canvas settings +
- Selected element settings +
Adding elements
++ Clicking on any of the buttons at the top of the settings window will add a new element type. +
+Canvas settings
++ Here you can adjust the canvas size which will also be propagated to any overlay loaded in OBS. + You can also change which stream is embed in the background, by entering the URL and the pressing + "embed". +
+Selected element settings
++ Depending on what type of element is selected you'll see different settings. There are some basic + properties that all elements share. The properties are more thoroughly described here. +
+Element list
++ The element list is a window that contains a list of all elements that are currently added to the + overlay. The order of them represents the order in which they are displayed, so if there are two + elements and element A is at the top of the list and element B is below A, A is displayed above B in the + overlay. Clicking on an item in the list will change the currently selected element. +
+ +Elements
+Basic properties
++ All elements share the following basic properties: +
+-
+
- name +
- position and size +
- layer or z-index +
- opacity +
- visibility on stream +
- pivot point +
Name
+Pretty selfexplanatory. The name can be used to make elements easier identifiable, but it does not have + to be unique. IROS generates a separate unique id for each element.
+Position and size
++ Each element has its own size and position. The position and scale are modified by moving or scaling the + element. See Keybinds and basic usage for more info. +
+
Layer or z-index
+ Determines which elements are drawn at the top. By default all elements use layer 0, so the oder in which + they are drawn is determined by the order in which they are added to the overlay. The last element is + always at the top. If you want an element to be drawn above another one you can achieve this by + either increasing the z-index of the element you want to be above, or by decreasing the z-index of the + element + that should be below. +
+
Opacity
+ With this slider the opacity or transparency of the element can be modified. If you accidentally set the + opacity to zero you can use the element list to find the element + again.
+
Visibility on stream
+ By default each newily added element will not be visible on stream to prevent accidentally showing + something + you don't want to show. By checking or unchecking the checkbox next to the eyeball or by pressing + H you can make an element visible or invisible on stream. +
+
Pivot point
+ + The pivot point determines the origin for scaling and rotating the element. By default it is set to the + center of the object. The setting has three buttons for the horizontal position of the pivot and three + for the vertical position. By clicking on any of the buttons the pivot is modified, which is reflected + for example by how the rotation affects the object. +
+ +
Text
+
+ Can display text using basic markdown formatting, e.g. **bold**, *italic*,
+ ~~strikethrough~~ or __underline__.
+
The font of the text can be changed by typing the name of the desired font into the font textbox. Keep in + mind that as of right now the desired font has to be installed on the machine that displays the overlay + on stream. +
+Other properties include the color of the text and the background.
+ +
Image
+ + The image element can load an Image from any URL and display it in the overlay. If you copy the URL + of an image to your clipboard and paste it in the editor with Ctrl+V a new image + element using the URL from your clipboard will be created. As always the new element will not be visible + on stream by default to prevent accidentally pasted images from showing up. +
+ +
Countdown and
+ timer
+
+ + This element can either count the time up or down. It is essentially a text element with some logic to + make it keep track of time. You can choose between the two modes "stopwatch" or "timer". If you choose + timer you can enter the time from which it'll count down into the textbox. Lastly there's a start, pause + and reset button to control the time tracking. +
+ +
Emotes
+ It can sometimes be useful to easily display emotes people use in chat on stream. When clicking this + button a new dialog will open which lets you search for emotes available on 7TV. Type in the name of the emote in the search bar and hit enter or + click "Search". The dialog will show the first 40 emotes that match the query. Click on the emote you + want to add and it'll be added as a new image element to the overlay. +
+ +
Audio
+
+ + The audio element allows embedding of audio files into the overlay. Volume, playback speed, looping + and seeking are all synchronized. Muting however is not to allow the element to be muted in the editor + to + prevent hearing the audio twice. +
+ +
Video
+
+ + The video element allows embedding of video files into the overlay. Volume, playback speed, looping + and seeking are all synchronized. Muting however is not to allow the element to be muted in the editor + to + prevent hearing the audio twice. +
+ +
Iframe
+
+ + The iframe element can embed any website into the overlay. Note that interaction with the website is + not synchronized. So clicking on links, scrolling and other interactions will only affect the iframe + in the current editor but will not be reflected in the overlay. By default interaction with the iframe + is therefore disabled. +
+ +
Favorites
+ + If there are any elements that you need frequently you can favorite them by selecting them and pressing + F. + When clicking on the favorite button a dialog opens with a list of all favorited elements. Click on any + of them to add them to the overlay. The favorites are saved locally in your browser. If you want to + remove favorites you can click on the "delete mode" button. Afterwards click on any element which marks + it for deletion. If you click an element again it will be unmarked. When you're finished + click "done" and all elements marked for deletion will be removed. +
+ +Frequently asked questions
+Where's the source code? Is this FOSS? Yes, it's available on Github. You can self-host, modify and redistribute this + software under the AGPL 3.0.
+Can feature X be added? Depends. You can open an issue here to describe + what you're looking for.
+Where can I report bugs? Bugs can be reported on github.
+Why can't I move elements with my mouse? See keybinds and + basic usage.
+Isn't this basically what moonmoon uses? + Yes, it's heavily inspired by that but written from scratch.
+Is the overlay persistent? Overlay state is cached on the server and should be retained + even after a server restart, but there's no guarantee.
+What about latency? The server is located in central Europe so depending on the location + of the streamer and the users of the editor the latency can differ, but it should generally be fast + enough.
+How does this actually work? It's basically just a bunch of plain JS and a small + WebSocket server written in Go. No fancy frameworks.
+
+
+
+