GithubHelp home page GithubHelp logo

doytsujin / amethyst_iced Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amethyst/amethyst_iced

0.0 1.0 0.0 240 KB

Iced rendering plugin for the Amethyst game engine

License: MIT License

Shell 0.41% Rust 97.14% GLSL 2.45%

amethyst_iced's Introduction

Amethyst-Iced

An Amethyst addon to create your game UI using Iced.

Features

  • Plug-and-play, just add a Render Plugin and a Bundle to your GameData, then get started using Iced
  • Most (but not all) components of iced_native are usable
  • Correctly handles resizing. Responsive Game UIs ftw !

Very much a WIP. If you want a full-featured solution, please consider contributing :)

Motivation

Writing UIs is both complex and important for video games. As Amethyst strives to be a powerful and feature-complete game engine, and Iced an easy-to-use and type-safe GUI library, I thought it would be a good idea to glue them together, and provide an alternative to Amethyst's built-in UI System.

Demo

Pane-Grid Progress Bar

Available examples:

  • hello, demonstrating sample text in different colors
  • counter, counting how many clicks on a button
  • image, demonstrating Image widget with Amethyst's texture handling
  • slider, demonstrating Iced's slider widget
  • checkbox, demonstrating Iced's checkbox widget
  • pane_grid, demonstrating Iced's pane grid widget
  • progress_bar, demonstrating Iced's progress bar widget
  • radio, demonstrating Iced's radio widget (they look like checkboxes right now, I know)

To run an example just launch cargo run --example hello --features vulkan. Other Amethyst backends may work but are untested.

Usage

See the examples. Sorry for the lack of comments.

Todo-list

  • Improve the global code quality of the codebase and of the examples. This crate is poorly documented, and was written merely as a proof of concept.
  • Review/Audit the IcedUI Rendy plugin as I am confident I have done a horrible job at "Rendy best practices".
  • Review/Audit/Refactor hacky and inefficient custom font loading for Text widgets
  • Make helpers to make custom font easier to use
  • Support spritesheet for Image widget
  • Support nine-patch for Image widget (more on that below)
  • Fix radio buttons so they don't look like Checkboxes. Broadly speaking, design a way of using Lyon to render shapes, possibly getting inspiration from amethyst_lyon.
  • Support Iced's debugger
  • Support Images and Nine-Patches using custom styling for a variety of widgets where it would be applicable :
    • Buttons,
    • Checkboxes,
    • Sliders,
    • Radio,
    • Progress Bar
  • Write an example for actual game integration
  • Fix winit support which is in a poor state right now by using iced_winit once the Amethyst engine has done the transition to winit 0.20
  • Support for Futures (possibly iced_futures) and implementation of the Application trait like in the Iced base crate
  • Implement Scrollable widget
  • Implement TextInput widget
  • Implement amethyst profiling
  • Port more examples from iced
  • Setup CI
  • Add badges to this repository. This is a serious project, after all.

Help would be appreciated ! :)

amethyst_iced's People

Contributors

aliscode avatar verzuz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.