Aegis | A simple strictly typed UI framework

Aegis


GitHub | Documentation | Installation | Community


What is Aegis?

Aegis is a lightweight and strictly typed UI framework specifically designed for Roblox. It aims to give the developers customizable options without any extra memory load.

Why use Aegis?

  • :zap: Performant
    Aegis is optimized for performance, ensuring that everything runs without any lag.

  • :heavy_check_mark: Strict typing
    Since Aegis is strictly typed, the code becomes more reliable and maintainable.

  • :tools: Customizable
    Aegis is customizable according to developer’s needs.

Key Features

  • Constructors: Aegis offers a set of constructors that provides extensive controls over instances.

  • Special keys: Special keys offer the ability to manage instances while inside the scope.

  • Custom keys: Aegis provides developers the ability to create their own special keys with their creative ideas.


Made with :heart: by Lumin Labs

13 Likes

Could you show some videos of what your resource does? Is it basically another Fusion, React, or Roact? Also, the links were too hard to find:

Release: Release v0.0.1 · lumin-dev/Aegis · GitHub
Docs: Aegis | A simple strictly typed UI framework made specifically for Roblox.

There’s no module file to download or one to get from the toolbox, so I’m confused on how to actually use the resource. :sweat_smile:

2 Likes

Ah, my bad! I was actually working on fixing the documentation and the buttons didn’t load. This is what it was supposed to look like in the post:

Yeah. However, it is as simple as it can get.

I’m working on a comparison within fusion, roact and aegis.

Yeah, forgive me. This is my first resource so things got a bit complicated :<

2 Likes

Wooo finally it’s here! I can’t wait to build some cool UI’s with this :call_me_hand:

2 Likes

Sorry for all the trouble! The wally package and the documentation should be up now! (Thanks to @2jammers)

Wally package: Wally
Documentation: Aegis | Lumin

v0.0.3

  • Fixed documentation page and wally package

Changelog page: Changelog | Lumin

As for a video, I’ll be adding a few stuff to the docs tonight so you can check there later! Plus, I do understand your concern of why this project was made when there was fusion and roact. I’ll be adding a descriptive comparisons page with benchmarks. There’s no tutorial on the docs page either, so just need some time :sweat_smile:

2 Likes

Will be updating the state and fixing the spring soon, however there’s something I’m willing to ask.

Should table types be restricted for state values?

For example:

Aegis.state({}) -- Table types won't be allowed!

This restriction will be added so that there’s no advanced mechanism to support table types. Right now, with how the state is, you will be able to change the entire table with just setting a normal table value.

If you were to only change a specific value inside the table, you’d have to completely copy-paste the full table into the state which might be memory-heavy.

Instead of the above, you could still do this,

local States = {
    Aegis.state(1),
    Aegis.state("Hello Aegis"),
}

Table types are going to be restricted since there were more people who opted for it

You have to manually compile the project into a Studio readable file using rojo.

Edit: or just install Aegis directly to your project using Wally

Rojo, Wally, Argon, Github, and VSC (regarding Roblox) don’t appeal to me. That’s a pretty strong gatekeeper against… normal Roblox Studio usage. I guess I can’t look into this anymore then.

1 Like

No, he was actually right. It was before I added the installation links (the buttons weren’t working)

Update on a few things

  • Types are now much stronger than before :fire::mechanical_arm:

  • The metatable creating technique using a separate Class table and setting it as the __index of the main table will be changed to the normal OOP class creating technique where you set the __index of a table to itself as it is the main style used in the main Luau Tutorials page

  • Services are going to be removed and will be converted to Constructors instead so that you no longer have to understand the concept of services.

  • Documentation will be improved with tutorials!

Some showcases of the improved spring:

(don’t mind the button color animation, Color3 isn’t implemented yet)

I’ll be adding a new constructor function which will be similar to new except it will update the instance’s properties (Similar to Fusion’s Hydrate ). What should the name be for the function?

final result

Update won

1 Like

We have a system setup across all Lumin projects which automates stylua, wally, rojo and standalone files which can be used in studio. We were just having issues previously about those automations not working. It’s in our best interest to bring you consistency and quickness in relation to OSS.

Would you guys like the name of constructors to be PascalCase instead of camelCase?

Aegis.newAegis.New
Aegis.stateAegis.State
Aegis.springAegis.Spring

  • :white_check_mark: Yes
  • :x:No

0 voters

chat, is this an entry point reference?

2 Likes

Who knows

minimum chars

I would like this:

  • Ageis.new()
  • Ageis.State.new or Ageis.State()
  • Ageis.Spring.new or Ageis.Spring()

Wow, “Ageis” is really hard to type. Wait-

If it was Aegis.State.new or the other one it would have to be a whole library and not just a single class

Could’ve done that, but given that there’s already a new function, it might get confusing for others. That’s why I kept it like that.

Practice makes perfect :sunglasses: (also it’s Aegis, and not Ageis…)

v0.1.0

A real friend is one who walks in when the rest of the world walks out. - Walter Winchell

Improvements

  • Added Aegis.Update function.
  • Added Aegis.UnregisterKey function.
  • Added Cleanup key.
  • Added restriction for table types for states.
  • Added nested table support for Children key.
  • Added more animatable types: boolean, BrickColor, CFrame, Vector3int16, Vector2int16, NumberSequence, NumberRange and Rect.
  • Improved Aegis.Key function.
  • Reduced spring memory usage
  • Types are now properly exported.
  • Made documentation a lot better with in-depth explanation, FAQ, comparisons and tutorials. [TODO]

Fixes

  • Fixed Color3 spring animation.
  • Fixed issue with Children key not parenting instances properly.

Removed

  • SpringInfo.Velocity

View full changelog

1 Like