From f1f70a1a89ee37570606fd77567a130973ac287f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Kr=C3=BChlmann?= Date: Thu, 22 Jan 2026 18:52:29 +0100 Subject: [PATCH] Add additional docs --- .gitattributes | 17 +++ .gitignore | 1 + Makefile | 10 +- docs/console/add_asset_button.png | 3 + docs/console/admin_console_overview.png | 3 + docs/console/assets/audio.md | 9 ++ docs/console/assets/images.md | 9 ++ docs/console/assets/scripts/attachments.md | 45 ++++++++ docs/console/assets/scripts/chat.md | 5 + docs/console/assets/scripts/create.png | 3 + .../assets/scripts/{geometry.md => errors.md} | 0 docs/console/assets/scripts/example.md | 33 ++++++ docs/console/assets/scripts/overview.md | 104 ++++++++++++++++++ docs/console/assets/scripts/rotate.gif | 3 + docs/console/assets/scripts/rotate_asset.png | 3 + .../scripts/script_asset_broadcaster_view.gif | 3 + .../assets/scripts/script_asset_example.png | 3 + docs/console/assets/videos.md | 7 ++ .../console/broadcast_view_modified_asset.png | 3 + docs/console/first.md | 25 +++++ docs/console/modified_asset.png | 3 + docs/console/overview.md | 9 ++ docs/console/show_asset.png | 3 + docs/console/uploaded_asset.png | 3 + docs/tutorial/broadcaster/add_window.png | 3 + docs/tutorial/broadcaster/audit_log.md | 1 + docs/tutorial/broadcaster/integrations.md | 19 ++++ .../broadcaster/integrations_dashboard.png | 3 + docs/tutorial/broadcaster/obs.md | 10 ++ docs/tutorial/broadcaster/window_added.png | 3 + .../tutorial/broadcaster/window_stretched.png | 3 + docs/tutorial/channel_admin/empty_canvas.png | 3 + docs/tutorial/channel_admin/open_cavnas.png | 3 + docs/tutorial/channel_admin/overview.md | 15 +++ docs/tutorial/channel_admin/register.md | 0 mkdocs.yml | 9 +- 36 files changed, 370 insertions(+), 9 deletions(-) create mode 100644 .gitignore create mode 100644 docs/console/add_asset_button.png create mode 100644 docs/console/admin_console_overview.png create mode 100644 docs/console/assets/scripts/attachments.md create mode 100644 docs/console/assets/scripts/create.png rename docs/console/assets/scripts/{geometry.md => errors.md} (100%) create mode 100644 docs/console/assets/scripts/rotate.gif create mode 100644 docs/console/assets/scripts/rotate_asset.png create mode 100644 docs/console/assets/scripts/script_asset_broadcaster_view.gif create mode 100644 docs/console/assets/scripts/script_asset_example.png create mode 100644 docs/console/broadcast_view_modified_asset.png create mode 100644 docs/console/modified_asset.png create mode 100644 docs/console/show_asset.png create mode 100644 docs/console/uploaded_asset.png create mode 100644 docs/tutorial/broadcaster/add_window.png create mode 100644 docs/tutorial/broadcaster/audit_log.md create mode 100644 docs/tutorial/broadcaster/integrations_dashboard.png create mode 100644 docs/tutorial/broadcaster/window_added.png create mode 100644 docs/tutorial/broadcaster/window_stretched.png create mode 100644 docs/tutorial/channel_admin/empty_canvas.png create mode 100644 docs/tutorial/channel_admin/open_cavnas.png delete mode 100644 docs/tutorial/channel_admin/register.md diff --git a/.gitattributes b/.gitattributes index 4aa24c1..4fbd4f6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,3 +4,20 @@ docs/tutorial/broadcaster/canvas_resolution.png filter=lfs diff=lfs merge=lfs -t docs/tutorial/broadcaster/client_empty.png filter=lfs diff=lfs merge=lfs -text docs/tutorial/broadcaster/client_startup.png filter=lfs diff=lfs merge=lfs -text docs/tutorial/broadcaster/download_client.png filter=lfs diff=lfs merge=lfs -text +docs/console/add_asset_button.png filter=lfs diff=lfs merge=lfs -text +docs/console/admin_console_overview.png filter=lfs diff=lfs merge=lfs -text +docs/console/broadcast_view_modified_asset.png filter=lfs diff=lfs merge=lfs -text +docs/console/show_asset.png filter=lfs diff=lfs merge=lfs -text +docs/tutorial/channel_admin/empty_canvas.png filter=lfs diff=lfs merge=lfs -text +docs/console/assets/scripts/script_asset_example.png filter=lfs diff=lfs merge=lfs -text +docs/console/modified_asset.png filter=lfs diff=lfs merge=lfs -text +docs/tutorial/channel_admin/open_cavnas.png filter=lfs diff=lfs merge=lfs -text +docs/console/assets/scripts/rotate_asset.png filter=lfs diff=lfs merge=lfs -text +docs/console/uploaded_asset.png filter=lfs diff=lfs merge=lfs -text +docs/tutorial/broadcaster/window_stretched.png filter=lfs diff=lfs merge=lfs -text +docs/console/assets/scripts/create.png filter=lfs diff=lfs merge=lfs -text +docs/tutorial/broadcaster/add_window.png filter=lfs diff=lfs merge=lfs -text +docs/tutorial/broadcaster/integrations_dashboard.png filter=lfs diff=lfs merge=lfs -text +docs/tutorial/broadcaster/window_added.png filter=lfs diff=lfs merge=lfs -text +docs/console/assets/scripts/rotate.gif filter=lfs diff=lfs merge=lfs -text +docs/console/assets/scripts/script_asset_broadcaster_view.gif filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..11041c7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.egg-info diff --git a/Makefile b/Makefile index f2fabf5..2cfd035 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,6 @@ -venv: - python3 -m venv --copies venv - . venv/bin/activate - python3 -m pip install black flake8 isort mypy +.ONESHELL: +.DELETE_ON_ERROR: + +.PHONY: serve +serve: + uv run mkdocs serve diff --git a/docs/console/add_asset_button.png b/docs/console/add_asset_button.png new file mode 100644 index 0000000..43acb3c --- /dev/null +++ b/docs/console/add_asset_button.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed86225000ec526191cc89f8c523d3f9cd30473787e336c83e0864c3fedbb095 +size 31946 diff --git a/docs/console/admin_console_overview.png b/docs/console/admin_console_overview.png new file mode 100644 index 0000000..573a6f1 --- /dev/null +++ b/docs/console/admin_console_overview.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ea753cef0e85bf3a06c36542e0d91947c35608f43d49be6d09bb2ce356ba88c +size 164156 diff --git a/docs/console/assets/audio.md b/docs/console/assets/audio.md index e69de29..62148a3 100644 --- a/docs/console/assets/audio.md +++ b/docs/console/assets/audio.md @@ -0,0 +1,9 @@ +# Audio asssets + +Audio assets are sound files that can be added to the broadcast. They support common audio formats such as MP3 and OGG. For a full list of supported formats, refer to the [developer documentation for the Imgfloat server](https://github.com/imgfloat/server) + +Audio assets do not have a visual representation on the broadcast canvas, but they can be managed through the asset list on the left side of the admin console. Once added, audio assets can be played manually, or automatically loop by checking the "Loop" option in the asset details panel when selected. + +In addition, the playback speed, pitch, volume and delay duration between loops can be controlled through the asset details panel. + +If further customization is needed, consider using [a script asset](./scripts/overview.md) to control audio playback programmatically. diff --git a/docs/console/assets/images.md b/docs/console/assets/images.md index e69de29..9188b48 100644 --- a/docs/console/assets/images.md +++ b/docs/console/assets/images.md @@ -0,0 +1,9 @@ +# Image assets + +Image assets are static images that can be added to the broadcast canvas. They support common image formats such as PNG and JPEG. For a full list of supported formats, refer to the [developer documentation for the Imgfloat server](https://github.com/imgfloat/server). + +Image assets can be resized, repositioned, shown or hidden and rotated using the canvas controls or the asset details panel when selected. All updates of these kinds are instantly reflected in the broadcast view. + +Image assets can be loaded by uploading a file using the 'Add asset' button and selecting a local file. + +While GIF files are considered images traditionally, Imgfloat treats them as videos, as they are converted behind the scenes. This allows for better control over playback and performance. Refer to the [video assets](./videos.md) section for more information on how to use GIFs in Imgfloat. diff --git a/docs/console/assets/scripts/attachments.md b/docs/console/assets/scripts/attachments.md new file mode 100644 index 0000000..54c982b --- /dev/null +++ b/docs/console/assets/scripts/attachments.md @@ -0,0 +1,45 @@ +# Using attachments + +> **_NOTE:_** The interface currently doesn't support adding attachments before the asset is created. To add attachments, first create the script asset, then open it for editing to add the attachments. + +Attachments allow you to include additional files for use in your custom script assets, such as images, documents, or other media. These files can be accessed and manipulated through your script's JavaScript code, enabling you to create more dynamic and interactive overlays. + +Let's create a custom script asset, which has a single image asset, which is continously rotated on the canvas: + +![Rotating image attachment](./rotate_asset.png) + +```javascript +async function init(context, state) { + const asset = Array.isArray(context.assets) ? context.assets[0] : null; + if (!asset?.blob) { + return; + } + state.rotation = 0; + state.imageReady = false; + state.image = await createImageBitmap(asset.blob); + state.imageReady = true; +} + +function tick(context, state) { + const { ctx, width, height, deltaMs } = context; + if (!ctx) { + return; + } + ctx.clearRect(0, 0, width, height); + const image = state?.image; + if (!image || !state.imageReady) { + return; + } + const size = Math.min(width, height) * 0.35; + state.rotation = (state.rotation + (deltaMs || 0) * 0.002) % (Math.PI * 2); + ctx.save(); + ctx.translate(width / 2, height / 2); + ctx.rotate(state.rotation); + ctx.drawImage(image, -size / 2, -size / 2, size, size); + ctx.restore(); +} +``` + +The final result looks like this in the broadcaster view: + +![Rotating image attachment broadcaster view](./rotate.gif) diff --git a/docs/console/assets/scripts/chat.md b/docs/console/assets/scripts/chat.md index e69de29..3f9ba47 100644 --- a/docs/console/assets/scripts/chat.md +++ b/docs/console/assets/scripts/chat.md @@ -0,0 +1,5 @@ +# Reading chat + +> **_NOTE:_** Reading chat messages requires enabling the "Chat access" integration for your channel. Ask your broadcaster to enable this integration from the dashboard. For more information, refer to the [Integrations](../../../tutorial/broadcaster/integrations.md) guide. + +Chat messages can be read using script assets. This allows for creating dynamic overlays that respond to chat activity, such as displaying recent messages or highlighting messages with specific keywords. It can also be used to trigger on-demand events, like displaying a special animation when a viewer types a specific command. diff --git a/docs/console/assets/scripts/create.png b/docs/console/assets/scripts/create.png new file mode 100644 index 0000000..bf390af --- /dev/null +++ b/docs/console/assets/scripts/create.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf59a45bb09dacf30daccb8abb8dc22f0970f884e73897a41f60a59a0b2845e5 +size 99144 diff --git a/docs/console/assets/scripts/geometry.md b/docs/console/assets/scripts/errors.md similarity index 100% rename from docs/console/assets/scripts/geometry.md rename to docs/console/assets/scripts/errors.md diff --git a/docs/console/assets/scripts/example.md b/docs/console/assets/scripts/example.md index e69de29..bb9e46b 100644 --- a/docs/console/assets/scripts/example.md +++ b/docs/console/assets/scripts/example.md @@ -0,0 +1,33 @@ +# Script asset example + +This example script asset renders a circle on screen, that changes color every second. + +```javascript +function init(context, state) {} + +function tick(context, state) { + const { ctx, width, height, elapsedMs } = context; + + ctx.clearRect(0, 0, width, height); + + const seconds = Math.floor(elapsedMs / 1000); + const r = (seconds * 50) % 256; + const g = (seconds * 80) % 256; + const b = (seconds * 110) % 256; + const color = `rgb(${r}, ${g}, ${b})`; + + const radius = 50; + ctx.fillStyle = color; + ctx.beginPath(); + ctx.arc(width / 2, height / 2, radius, 0, Math.PI * 2); + ctx.fill(); +} +``` + +Here's what it looks like in the admin console view: + +![Script asset example](./script_asset_example.png) + +And here's what it looks like in the broadcaster view: + +![Script asset broadcaster view](./script_asset_broadcaster_view.gif) diff --git a/docs/console/assets/scripts/overview.md b/docs/console/assets/scripts/overview.md index e69de29..2ab03b3 100644 --- a/docs/console/assets/scripts/overview.md +++ b/docs/console/assets/scripts/overview.md @@ -0,0 +1,104 @@ +# Script assets + +Script assets are customizable assets containing JavaScript code that runs in the context of the broadcast. They allow for advanced functionality and interactivity beyond what standard file assets provide. Script assets exist in their own layer and cannot modify other assets directly, but they can respond to events and manipulate their own properties at will. + +## Structure + +A script asset consists of the following components: + +* Title +* Description +* JavaScript code +* Logo (optional) +* Attachments (optional) + +![Create](./create.png) + +It is also possible to select the 'Make script public in the marketplace' option. This will make the script available for other Imgfloat users to add to their broadcasts through the asset marketplace. Users who import your script will be able to customize its settings, but cannot modify your copy. + +## JavaScript API + +The JavaScript code must conform to the following format: + +```typescript +type Asset = { + id: string; + url?: string; + name?: string; + mediaType?: string; + blob?: Blob; + [key: string]: any; +}; + + +type ChatTextFragment = { + type: "text"; + text: string; +} + +type ChatEmoteFragment = { + type: "emote"; + id: string; + name: string; + text: string; + url: string; +} + +type ChatSystemFragment = { + type?: string; + text?: string; + url?: string; + [key: string]: any; +} + +type ChatFragment = ChatTextFragment | ChatEmoteFragment | ChatSystemFragment + +type ChatMessage = { + message?: string; + fragments?: ChatFragment[]; + timestamp?: number; + displayName?: string; + tags?: { + color?: string; + [key: string]: any; + }; + [key: string]: any; +}; + +type EmoteCatalogEntry = { + id?: string; + name?: string; + url?: string; + [key: string]: any; +}; + +type ScriptContext = { + canvas: OffscreenCanvas; + ctx: OffscreenCanvasRenderingContext2D; + channelName: string; + width: number; + height: number; + now: number; + deltaMs: number; + elapsedMs: number; + assets: Asset[]; + chatMessages: ChatMessage[]; + emoteCatalog: EmoteCatalogEntry[]; + playAudio: (attachment: string | { id?: string } | null | undefined) => void; +}; +``` + +Where the final script conforms to: + +```ts +type ScriptInstance = { + init: (context: ScriptContext, state: any) => void | Promise; + tick: (context: ScriptContext, state: any) => void; +}; +``` + +Although the types here are defined in TypeScript notation for clarity, the actual script code should be written in plain JavaScript. + +While the context is pre-defined, the state is completely up to the script author. The state object is persistent between calls to `tick` and can be used to store any data the script needs to maintain. + +Let's see this in practice with a simple example in the next section. diff --git a/docs/console/assets/scripts/rotate.gif b/docs/console/assets/scripts/rotate.gif new file mode 100644 index 0000000..bc95007 --- /dev/null +++ b/docs/console/assets/scripts/rotate.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b59d693796afdebe9fe8902fa69b8c51b7d38a29a630160687fdf9764fd9dc3 +size 460020 diff --git a/docs/console/assets/scripts/rotate_asset.png b/docs/console/assets/scripts/rotate_asset.png new file mode 100644 index 0000000..899b9ea --- /dev/null +++ b/docs/console/assets/scripts/rotate_asset.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c11ad4b453990381febedb0cc4865ebff41460ded29e3802cc811b57ca4eb47e +size 155034 diff --git a/docs/console/assets/scripts/script_asset_broadcaster_view.gif b/docs/console/assets/scripts/script_asset_broadcaster_view.gif new file mode 100644 index 0000000..0d3e881 --- /dev/null +++ b/docs/console/assets/scripts/script_asset_broadcaster_view.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afa532ea3e472ba5a044c50f0928f568e0c04756e7b5ff2eaa1e35f8652bac4a +size 9518 diff --git a/docs/console/assets/scripts/script_asset_example.png b/docs/console/assets/scripts/script_asset_example.png new file mode 100644 index 0000000..c1a92ff --- /dev/null +++ b/docs/console/assets/scripts/script_asset_example.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2465bf9027b378560fc303360d4f36ecc1a24ddb8952b73eb7b2beee7aaddb3 +size 134698 diff --git a/docs/console/assets/videos.md b/docs/console/assets/videos.md index e69de29..022a627 100644 --- a/docs/console/assets/videos.md +++ b/docs/console/assets/videos.md @@ -0,0 +1,7 @@ +# Video assets + +Video assets are media files that can be added to the broadcast canvas. They support common video formats such as MP4 and WebM. For a full list of supported formats, refer to the [developer documentation for the Imgfloat server](https://github.com/imgfloat/server). In addition to traditional image formats, GIF files are also treated as video assets in Imgfloat. This allows for better control over playback and performance. Uploading a GIF file will convert it to a video format behind the scenes. + +Video assets support the same manipulation options as image assets, including resizing, repositioning, showing or hiding, and rotating using the canvas controls or the asset details panel when selected. All updates of these kinds are instantly reflected in the broadcast view. In addition, video assets support modification of the playback speed and volume through the asset details panel. + +Video assets will continuously loop during playback by default. If you need fine grained control over when videos play, consider using [a script asset](./scripts/overview.md) instead. diff --git a/docs/console/broadcast_view_modified_asset.png b/docs/console/broadcast_view_modified_asset.png new file mode 100644 index 0000000..a75f199 --- /dev/null +++ b/docs/console/broadcast_view_modified_asset.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ff0600a2a492d404eac1c9c4905ef5eebaf9cefc984e3eeeecd045316397201 +size 38875 diff --git a/docs/console/first.md b/docs/console/first.md index e69de29..df80819 100644 --- a/docs/console/first.md +++ b/docs/console/first.md @@ -0,0 +1,25 @@ +# Adding your first asset + +To add your first asset to the broadcast canvas, click the "Add asset" button in the top left corner of the admin console. + +![Add asset button](./add_asset_button.png) + +Select 'Upload asset' and select an image file on your machine. Once uploaded, the asset will appear in the asset list on the left side of the admin console, as well as on the broadcast canvas on the right side. + +![Uploaded asset](./uploaded_asset.png) + +You can now click and drag the asset on the canvas to reposition it. You can also use the handles around the asset to resize it. The position and size of the asset can also be adjusted more precisely using the controls in the asset details panel that appears when you select the asset in the asset list. + +By default, assets are hidden. This is indicated on the left in the assets menu, and by displaying the asset transparently on the canvas. To make the asset visible in the broadcast, click the eye icon next to the asset in the asset list. + +![Show asset](./show_asset.png) + +Let's try manipulating the asset a bit. Open the broadcaster view by clicking the "Broadcast view" button in the top bar in a new window. This view simulates what the broadcaster will see in their stream. Now, go back to the admin console and try moving and resizing the asset. You should see the changes reflected in real-time in the broadcaster view. + +![Modified asset](./modified_asset.png) + +![Broadcast view modified asset](./broadcast_view_modified_asset.png) + +Let's now clean up the console. Select the asset in the asset list and press 'Delete', 'Backspace', or click the trash can icon in the asset details panel to remove the asset from the broadcast canvas. + +Imgfloat supports a wide range of asset types. Let's learn about them in the next sections. diff --git a/docs/console/modified_asset.png b/docs/console/modified_asset.png new file mode 100644 index 0000000..146e9a7 --- /dev/null +++ b/docs/console/modified_asset.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9a25e711eba5121fed5858989aed420e378f88c579eeaaed7e7385741f8b2d8 +size 157405 diff --git a/docs/console/overview.md b/docs/console/overview.md index e69de29..28783c6 100644 --- a/docs/console/overview.md +++ b/docs/console/overview.md @@ -0,0 +1,9 @@ +# Admin console + +The admin console is the control center for your Imgfloat broadcasts. From here, you can manage your asset live. The user interface is broken up into two distinct sections: the asset list on the left and the canvas view on the right. The canvas view on the right will display the layout that appears in the broadcast, while the asset list on the left allows you to manage and configure the individual assets that make up the broadcast. + +![Admin console overview](./admin_console_overview.png) + +If you prefer to see the actual interface that is shown to the broadcaster you can open the broadcast view with the "Broadcast view" in the top bar. + +Let's start by adding our first asset. diff --git a/docs/console/show_asset.png b/docs/console/show_asset.png new file mode 100644 index 0000000..a2cb40f --- /dev/null +++ b/docs/console/show_asset.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:694c18da624ee245da480a366a0a5309d1bf31676fad35dcf2db1fde3a7e403f +size 125213 diff --git a/docs/console/uploaded_asset.png b/docs/console/uploaded_asset.png new file mode 100644 index 0000000..4f4cd33 --- /dev/null +++ b/docs/console/uploaded_asset.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c66099ac4004f5448cec4afcc6674102b0df03f81e9f3a9ef39075dbf60eb81 +size 109727 diff --git a/docs/tutorial/broadcaster/add_window.png b/docs/tutorial/broadcaster/add_window.png new file mode 100644 index 0000000..ab497d8 --- /dev/null +++ b/docs/tutorial/broadcaster/add_window.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30fd767e9204efd28d10eac2570dedd1cef7391472237c9fcaf242a4a9364520 +size 159471 diff --git a/docs/tutorial/broadcaster/audit_log.md b/docs/tutorial/broadcaster/audit_log.md new file mode 100644 index 0000000..4640904 --- /dev/null +++ b/docs/tutorial/broadcaster/audit_log.md @@ -0,0 +1 @@ +# TODO diff --git a/docs/tutorial/broadcaster/integrations.md b/docs/tutorial/broadcaster/integrations.md index e69de29..8cf99de 100644 --- a/docs/tutorial/broadcaster/integrations.md +++ b/docs/tutorial/broadcaster/integrations.md @@ -0,0 +1,19 @@ +# Integrations + +Your broadcast can be enchanced with various integrations that work seamlessly with Imgfloat. You can see the available integrations on the Imgfloat dashboard: + +![Integrations dashboard](./integrations_dashboard.png) + +By enabling each integration you allow custom script assets to pull information from the respective service. Your channel administrators can use this information to create dynamic overlays that respond to events on your channel. + +## Twitch emotes + +Enabling Twitch emotes allows channel administrators to use global Twitch emotes as well as emotes specific for your channel, like those for subscribers. + +## 7TV emotes + +Enabling 7TV emotes allows channel administrators to use 7TV emotes, that you've enabled for your channel. + +## Chat access + +Enabling chat access allows channel administrators to create overlays that respond to chat messages, such as displaying recent messages or highlighting messages with specific keywords. It can also be used to trigger on demand events, like displaying a special animation when a viewer types a specific command. diff --git a/docs/tutorial/broadcaster/integrations_dashboard.png b/docs/tutorial/broadcaster/integrations_dashboard.png new file mode 100644 index 0000000..622bf4b --- /dev/null +++ b/docs/tutorial/broadcaster/integrations_dashboard.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92e448f9e581ec32831d20d40cf428adfa34f8b39aa9b762453c6245746ad7c0 +size 49037 diff --git a/docs/tutorial/broadcaster/obs.md b/docs/tutorial/broadcaster/obs.md index 1d51146..99b256f 100644 --- a/docs/tutorial/broadcaster/obs.md +++ b/docs/tutorial/broadcaster/obs.md @@ -2,4 +2,14 @@ To add the Imgfloat client window to OBS, start by opening OBS and adding a new source. Select "Window Capture" as the source type. +![Add window](./add_window.png) +Select the new window source and resize it to cover your scene completely. The window is configured to be exactly the size defined on your broadcast canvas, plus the window frame, so position the window frame just outside the visible area. + +![Window added](./window_added.png) + +![Window stretched](./window_stretched.png) + +You can always test the setup by adding a simple image asset to the admin console and move it to each edge. The edges of the admin console should line up perfectly with the edges of your OBS scene. + +That's it! You're now ready to use imgfloat. Next, check out the integrations available for your broadcast. diff --git a/docs/tutorial/broadcaster/window_added.png b/docs/tutorial/broadcaster/window_added.png new file mode 100644 index 0000000..a2ffc75 --- /dev/null +++ b/docs/tutorial/broadcaster/window_added.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55bebc3120dd25424f7eb0fc02a441f0288d4544d8e9e73cc53dd5791d35d932 +size 83853 diff --git a/docs/tutorial/broadcaster/window_stretched.png b/docs/tutorial/broadcaster/window_stretched.png new file mode 100644 index 0000000..fe34ca4 --- /dev/null +++ b/docs/tutorial/broadcaster/window_stretched.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4601c6b71cca3594325ad9d093d064bff03cee240105f1ca52d7b75b9ab309fb +size 82054 diff --git a/docs/tutorial/channel_admin/empty_canvas.png b/docs/tutorial/channel_admin/empty_canvas.png new file mode 100644 index 0000000..d50d42d --- /dev/null +++ b/docs/tutorial/channel_admin/empty_canvas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14d1e30e7ad2a18a7f6dff33679fd08bfd6babc289910a9bdeacd5e7a0b51acb +size 164369 diff --git a/docs/tutorial/channel_admin/open_cavnas.png b/docs/tutorial/channel_admin/open_cavnas.png new file mode 100644 index 0000000..0bf5a16 --- /dev/null +++ b/docs/tutorial/channel_admin/open_cavnas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e49e350540a5f1c254b8d0591225d497cf703317152c7ad17f7e52f718acb0ca +size 22000 diff --git a/docs/tutorial/channel_admin/overview.md b/docs/tutorial/channel_admin/overview.md index e69de29..0921abf 100644 --- a/docs/tutorial/channel_admin/overview.md +++ b/docs/tutorial/channel_admin/overview.md @@ -0,0 +1,15 @@ +# Getting started as a channel administrator + +Sign in with your Twitch account on [imgflo.at](https://imgflo.at) (or on your own instance) to register with the application. + +In order to modify the broadcast canvas for a specific broadcaster, you need to be added as a channel administrator by that broadcaster. Refer to the [Getting started as a broadcaster](../broadcaster/overview.md) guide for more information on how broadcasters can add you as an administrator. + +Once added you can access the channel admin dashboard from the dashboard: + +![Open canvas](./open_cavnas.png) + +Assuming you're the first channel administrator the view will look something like this: + +![Empty canvas](./empty_canvas.png) + +Now you're ready to start adding assets to the canvas! diff --git a/docs/tutorial/channel_admin/register.md b/docs/tutorial/channel_admin/register.md deleted file mode 100644 index e69de29..0000000 diff --git a/mkdocs.yml b/mkdocs.yml index 7f1ab77..3218cff 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -14,15 +14,14 @@ nav: - Getting Started: - Broadcaster: - Getting Started: tutorial/broadcaster/overview.md - - OBS setup: tutorial/broadcaster/obs.md + - OBS Setup: tutorial/broadcaster/obs.md - Integrations: tutorial/broadcaster/integrations.md + - Audit Log: tutorial/broadcaster/audit_log.md - Channel Admin: - Getting Started: tutorial/channel_admin/overview.md - - Register: tutorial/channel_admin/register.md - Admin Console: - Overview: console/overview.md - Adding Your First Asset: console/first.md - - Modifying Assets: console/modifying.md - Asset Types: - Images: console/assets/images.md - Videos and Gifs: console/assets/videos.md @@ -30,8 +29,8 @@ nav: - Script Assets: - Overview: console/assets/scripts/overview.md - Example Script Asset: console/assets/scripts/example.md - - Drawing Geometry: console/assets/scripts/geometry.md - - Using Attachments: console/assets/scripts/geometry.md + - Using Attachments: console/assets/scripts/attachments.md - Reading Chat: console/assets/scripts/chat.md - Drawing Emotes: console/assets/scripts/emotes.md + - Dealing with errors: console/assets/scripts/errors.md - Marketplace: console/marketplace.md