Skip to content

Commit

Permalink
Updated documentation.
Browse files Browse the repository at this point in the history
Added a publish action to update Wally and the demo place on release. Improved documentation wording. Added showcase page with example of Iris.
  • Loading branch information
SirMallard committed Oct 11, 2024
1 parent 7ab5893 commit 2c51058
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 12 deletions.
45 changes: 45 additions & 0 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Publish

on:
workflow_dispatch:
release:
types: [published]

jobs:
publish-wally:
name: "Publish to Wally"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Aftman
uses: ok-nick/setup-aftman@v0.4.2
with:
version: v0.3.0

- name: Login
run: wally login --token ${{ secrets.WALLY_TOKEN }}

- name: Publish
run: wally publish

publish-demo-place:
name: "Publish Roblox Demo Place"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Aftman
uses: ok-nick/setup-aftman@v0.4.2
with:
version: v0.3.0

- name: Install rbxcloud
run: aftman add Sleitnick/rbxcloud@0.14.0

- name: Build place file
run: rojo build -o Iris.rbxl ./demo.project.json

- name: Publish
shell: bash
run: rbxcloud experience publish -a ${{ secrets.PLACE_KEY }} -u 2823622397 -p 7245022703 -t published -f Iris.rbxl
27 changes: 18 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
### Demo:

https://www.roblox.com/games/11145814918/Iris-Demonstration

# Iris

Iris is an Immediate mode GUI Library for Roblox, Based on [Dear ImGui](https://github.com/ocornut/imgui). It solves the same problems as Dear ImGui. It is fast, portable, and self-contained (no external dependencies).
Iris is an Immediate mode GUI Library for Roblox, Based on [Dear ImGui](https://github.com/ocornut/imgui). It solves the same problems as Dear ImGui: providing a simple and bloat-free UI system, designed for visualisation and debugging. It is fast, portable, and self-contained (no external dependencies).

#### What is Dear ImGui, and why is it important?
Dear ImGui is best known for allowing developers to create content-creation and visualisation and debugging UI UI. Using the Dear ImGui paradigm (Immediate Mode), UI design is remarkably easy and simple. Because of this, Dear ImGui has been adopted in almost every major game engine from Unity and Unreal Engine to in-house engines from Rockstar and Ubisoft (and now Roblox!).

what is Dear ImGui, and why is it important?
<sub>Dear ImGui is best known for its use for developing debug UI. Using the Dear ImGui paradigm (Immediate Mode), UI is remarkably easy. Because of this, Dear ImGui has seen adoption in almost every major game engine, including Unity and Unreal Engine (and now Roblox!).</sub>
Iris favors simplicity and productivity; It is designed to simplify UI, streamlining the process for creating visualisation, debug, and data input tools. To accomplish this, Iris offers a different approach to Roblox UI than existing libraries, at the cost of certain features commonly found in more intricate UI libraries. Iris opts to supercede the Roblox UI API, instead having a streamlined Immediate-Mode library and a set of widgets which developers can use to build the UI and tools they need.

Iris favors simplicity and productivity; It is designed to simplify UI, streamlining the process for creating visualization, debug tools, and data input. To accomplish this, Iris offers a different approach to Roblox UI than existing libraries, lacking certain features commonly found in more intricate UI libraries. Iris opts to supercede the Roblox UI API, instead having a streamlined Immediate-Mode library and a set of widgets whcih developers can use to create UI easily.
Demo Place: https://rbxl.games/11145814918

### Usage

The Iris release comes as an rbxm or zip file. You can import the rbxm into any roblox project, and begin creating UI in any client side script. No external dependences are needed. Iris can be used in any kind of Roblox UI, including PlayerGui, CoreGui, BillboardGui, SurfaceGui, and PluginGui.
Iris can be installed through [Wally](https://wally.run/) as a [package](https://wally.run/package/sirmallard/iris) or through a GitHub release comes as an rbxm or zip file. You can import the rbxm into any roblox project, and begin creating UI in any client side script. No external dependences are needed. Iris can be used in any kind of Roblox UI, including PlayerGui, CoreGui, BillboardGui, SurfaceGui, and PluginGui.

Heres a basic Example:

Expand Down Expand Up @@ -87,6 +86,10 @@ Finally, Iris comes with a demo window, `Iris.ShowDemoWindow`. This window demon
<img src="https://raw.githubusercontent.com/Michael-48/Iris/main/assets/demoWindow.png" alt="Sample Display Output"/>
</div>

### Learning Iris

The best way to learn Iris is to look at the `Iris.DemoWindow` example file, which showcases all of Iris' features. The code can be found under `lib\demoWindow.lua`.

### How it Works

Iris is an immediate mode UI library, as opposed to retained mode.
Expand All @@ -95,9 +98,15 @@ In a retained mode model, you might make a button and connect a clicked event, w

In an immediate mode model, we call the button function and check if it's been clicked every frame (60 times per second). There's no need for a clicked event or to store a reference to the button.

Therefore, you are not keeping track of the UI instances, you just declare what functionality you would like and Iris manages all instances and cleanup for you.

Check out the Dear ImGuis [About the IMGUI paradigm](https://github.com/ocornut/imgui/wiki/About-the-IMGUI-paradigm) section if you want to understand the core principles behind the IMGUI paradigm.

### Credits

Developed By [Michael_48](https://github.com/Michael-48), [SirMallard](https://github.com/SirMallard) and [JakeyWasTaken](https://github.com/JakeyWasTaken). Inspriation and design: [Omar Cornut](https://www.miracleworld.net/), [Evaera](https://github.com/evaera), Thanks!
Created originally by [Michael_48](https://github.com/Michael-48) and now maintained by [SirMallard](https://github.com/SirMallard).

Many thanks to [JakeyWasTaken](https://github.com/JakeyWasTaken), [OverHash](https://github.com/OverHash) and everyone else who has contributed to Iris in any way.

Inspriation and design: [Omar Cornut](https://www.miracleworld.net/), [Evaera](https://github.com/evaera), Thanks!
<meta name="google-site-verification" content="Ito4GceH5YJJXReIhx9JMqN0YEDdKePHaylk8H3-9Oo" />
4 changes: 4 additions & 0 deletions docs/creatingCustomWidgets.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Creating Custom Widgets

:::note
This page needs to be rewritten and is lacking in detail.
:::

# Overview

Iris has a widget constructor method to create widgets with. Once a widget has been constructed, you can than use it like any other widget. Every widget follows a set of guidelines it must follow when constructed.
Expand Down
8 changes: 7 additions & 1 deletion docs/intro.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# Iris

Iris is an Immediate mode GUI Library for Roblox, Based on Dear ImGui. It solves the same problems as Dear ImGui. It is fast, portable, and self-contained.
Iris is an Immediate mode GUI Library for Roblox, based on Dear ImGui. It is designed to make building debug, visualisation or content-creation tool UI easier, simpler and quicker.

Iris does this by requiring the developer to only describe what they want and not how they want it, whilst Iris handles all of the 'how'. This makes it quicker for developers to build a usable and powerful system with minimal code from them. Iris offers a range of versatile widgets which are all designed to be minimal and yet powerful and fit together perfectly.

:::note
This page is not complete yet and will updated.
:::
17 changes: 17 additions & 0 deletions docs/showcase.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Showcases

Iris is already being used across Roblox. A few examples of what people have publicly posted and what they are saying about Iris are shown here. Over time, this page will be updated. If you are using Iris or see Iris being used somewhere, reach out to us so we can add it here.

## Quotes

> "Iris [...] is probably the best thing that ever happened to development tooling." - [MaximumADHD](https://x.com/MaximumADHD/status/1763048015936225326)
> "This is all made easy thanks to Iris!" - [TylerAtStarboardGames](https://medium.com/@tyleratstarboardgames/using-iris-to-clean-up-my-plugin-workflow-e66a2886498f)
## Images
Follow the links to see various posts and blogs which demonstrate Iris.

- [@MaximumADHD](https://x.com/MaximumADHD/status/1763048015936225326)
- [@Boogle](https://x.com/LeBoogle/status/1772384187426709879)
- [tyridge77](https://devforum.roblox.com/t/pathfinding-in-large-rpg-games-discussion-about-the-best-pathfinding-methods-for-roblox/3084075/29)
- [TylerAtStarboardGames](https://medium.com/@tyleratstarboardgames/using-iris-to-clean-up-my-plugin-workflow-e66a2886498f)
4 changes: 2 additions & 2 deletions wally.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "michael-48/iris"
description = "Iris is an Immediate mode GUI Library for Roblox, Based on Dear ImGui."
name = "sirmallard/iris"
description = "Iris is an Immediate-Mode GUI Library for Roblox, based on Dear ImGui, designed for creating debug, visualisation and content-creation tool UI."
version = "2.3.1"

license = "MIT"
Expand Down

0 comments on commit 2c51058

Please sign in to comment.