Skip to content

Guified is a GUI library for LÖVE (Love2D) that simplifies window management and UI element creation. It allows developers to create interactive graphical user interfaces with ease.

License

Notifications You must be signed in to change notification settings

zalanwastaken/guified

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 _______  __   __  ___   _______  ___   _______  ______     _______  _______  _______  _______    ___   ____   
|       ||  | |  ||   | |       ||   | |       ||      |   |  _    ||       ||       ||   _   |  |   | |    |  
|    ___||  | |  ||   | |    ___||   | |    ___||  _    |  | |_|   ||    ___||_     _||  |_|  |  |___| |_    | 
|   | __ |  |_|  ||   | |   |___ |   | |   |___ | | |   |  |       ||   |___   |   |  |       |   ___    |   | 
|   ||  ||       ||   | |    ___||   | |    ___|| |_|   |  |  _   | |    ___|  |   |  |       |  |   |   |   | 
|   |_| ||       ||   | |   |    |   | |   |___ |       |  | |_|   ||   |___   |   |  |   _   |  |___|  _|   | 
|_______||_______||___| |___|    |___| |_______||______|   |_______||_______|  |___|  |__| |__|        |____|  

The 3000+ lines of code so you only have to write 100

Guified is a lightweight GUI library/framework(depends on how you use it) for LÖVE (Love2D) that simplifies window management and UI element creation. With its easy-to-use features, Guified enables developers to craft intuitive and interactive graphical user interfaces without unnecessary complexity. 🚀 Whether you're building a small game or a large application, Guified provides the tools you need to streamline the process.

Why Guified? 🤷

Guified is a flexible, lightweight library/framework built for developers who want control without the bloat. It gives you powerful tools like a customizable registry, and efficient error handling, while leaving you the freedom to build exactly what you need. Guified doesn’t force patterns or hand-hold you through the process—it’s all about giving you the flexibility to create and optimize your own solutions, on your terms.

What is Guified? 🤷

Guified is a easy to use flexiable and yet powerfull library/framework that puts the devs first.
Gufied provides easy to use powerfull tools to make UI/UX(or a entire game/app) based on the core LOVE2D modules

Features ✨

  • Window Management:
    • 📌 Set the game window to always stay on top of other windows, ensuring your application remains in focus during critical interactions.
  • UI Element Support:
    • 🔘 Create fully customizable buttons that detect clicks and allow for versatile user interactions.
    • 🖍️ Design text boxes to display and update text dynamically at specified positions on the screen.
    • 🎨 Create flexible and colorful frames to visually group UI elements and improve layout design.
    • And More
  • Dynamic Drawing and Updating:
    • ♻️ Easily register UI elements to be dynamically drawn and updated, ensuring real-time responsiveness.
    • ▶️ Easily toggle the drawing and updating of elements on or off during runtime for better control.
  • Extensible Registry:
    • 🪧 Extend the library by adding custom UI elements through the registry, making it adaptable to your specific needs.
    • Make custom elements and easily register them using the registry :-
      local element = {
        name = "name" -- required
        draw = function() -- required
        end,
        update = function(dt) -- optional
        end,
        keypressed = function(key) -- optional
        end,
        textinput = function(key) -- optional
        end
      }
      guified.registry.register(element)
  • Color Management:
    • 🟨 Assign dynamic colors to UI elements with support for both RGB and alpha transparency values, enabling rich visual customizations.
    • 🔹 Adjust and experiment with colors seamlessly to enhance the visual appeal of your project.
  • Error Handling:
    • ❌ Provides detailed error messages for missing elements or invalid window handles, reducing debugging time.
    • Custom error handler implimented by Guified.
  • Version Information:
    • 🔢 Built-in version tracking ensures you're always aware of the library's iteration and improvements.
  • 😊 Choose what you need:
    • ❌ Simply remove the files whose features you dont use gufied will adapt.
    • Eg. Dont use modules ? rm -rf modules/. Dont use FFI features ? rm -rf os_interop.lua.
  • 🫵 Guified adapts to you
    • Dont wanna use registry ? Use elements with love2d functions :-
        local element -- your element
        function love.update(dt)
          element.update()
        end
        function love.draw()
          element.draw()
        end
  • 📜 Debug
    • Guified comes pre-packaged with a logger making debugging easy.
  • 🔫 No Dependency hunting
    • Guified come pre-packaged with its dependencies so no dependency hunting. More time you can spend coding !
  • 🧩 Modules
    • Guified comes with many modules. Making it easy to create things like frames, tweens.
    • Only load what you need. Guified wont make you load all the modules only load what you need
      local module = require("guified.modules.modulename")
  • ➕ ExtCalls
    • Guified depends on love.run but now you can modify it easily and still not break guified !
    • guified.extcalls provide easy to use functions that handle things like draw calls, update calls etc.
  • 🤷 Not satisfied ?
    • Guified is still in beta so there is still more to come along

Setup

1) Clone the repo.

git clone https://github.com/zalanwastaken/guified.git guified
cd guified

2) Copy guified to your project folder

cp -r guified <your project folder>

3) Include guified in main.lua of your project

local guified = require(<path to guified>)

4) Setup ENV variable(Optional but highly recommended if you want to use modules)

export GUIFIEDROOTFOLDER=<Same as the require path in main.lua>

Done! ✨ Enjoy creating with Guified! 😎

Latest Guified version

Latest Guified version is currently B-2.0.1 "Repressed Memory Edition".
This version supports the following Love2d version(These versions are tested with Guifed other versions might also run Guified fine):-

  • 11.5 (Mysterious Mysteries)
    • Windows ✅ Full support
    • Linux ✅ Without FFI
    • MacOS ❌ No support. Bugs on MacOS wont be fixed(Guified might still run. MacOS is not blocked)[COMING SOON IN B-2.1.0]
  • 11.4 (Mysterious Mysteries)
    • Windows ✅ Full support
    • Linux ✅ Without FFI
    • MacOS ❌ No support. Bugs on MacOS wont be fixed(Guified might still run. MacOS is not blocked)[COMING SOOM IN B-2.1.0]
  • 11.3 (Mysterious Mysteries)
    • Windows ✅ Full support
    • Linux ✅ Without FFI
    • MacOS ❌ No support. Bugs on MacOS wont be fixed(Guified might still run. MacOS is not blocked)[COMING SOOM IN B-2.1.0]

📍 Roadmap

Current Features

UI Elements: Buttons, frames, text boxes, etc.
Dynamic Registry System: Easily register and manage UI components.
Minimal Boilerplate: Write less code, do more.
Custom Error Handling: No more cryptic errors.
Debugging Tools: Built-in logger for easy debugging.

🚀 Planned Features

🔹 State Management (like React useState, but for LÖVE)
🔹 Scene Management (UI "sets" to switch views easily)
🔹 Callback System for UI Events
🔹 Better Input Handling (keyboard, mouse, and maybe gamepad support?)
🔹 Performance Optimizations & Code Cleanup
🔹 More UI Components (Dropdowns, Sliders, etc.)
🔹 Make a studio for LOVE2D using Guified
🔹 Modular Design: Use only the features you need.

🔮 Future Goals

✨ Make Guified the go-to UI framework for LÖVE(TRY)
✨ Support legacy LÖVE versions for no reason at all

🎯 Side Quests (Ongoing Tasks)

🔸 Ensure removing unused modules doesn’t break everything.
🔸 Maintain FFI compatibility (or at least try to).
🔸 Improve documentation so new users don’t suffer.
🔸 Test Guified on different LÖVE versions (including ancient ones for no reason).
🔸 Find and fix the weirdest possible edge cases.

Notes

  1. ⚙️ Encountered bugs? Report them to help speed up development and improve the library for everyone.
  2. 🔢 Check out the examples folder to quickly familiarize yourself with Guified's capabilities and jumpstart your project.
  3. Currently, there are no plans to support MacOS.
  4. Features that use FFI are not supported on Linux due to FFI features using os dependent code

About

Guified is a GUI library for LÖVE (Love2D) that simplifies window management and UI element creation. It allows developers to create interactive graphical user interfaces with ease.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Languages