Bevy plugin to simulate and preview different types of Color Blindness.

Overview

Bevy Color Blindness Simulation

video showing 4 cubes of different colors as the different modes cycle

Bevy plugin to simulate and preview different types of Color Blindness.

This lets you ensure that your game is accessible to all players by testing how it will be seen under different conditions. While this is important, please also consider not relying on color alone to convey important information to your players. A common option is to add identifying symbols, like in the game Hue.

Based on Alan Zucconi's post. Supports: Normal, Protanopia, Protanomaly, Deuteranopia, Deuteranomaly, Tritanopia, Tritanomaly, Achromatopsia, and Achromatomaly.

Using

First, add the following to your Cargo.toml:

bevy_color_blindness = "0.1.0"

Then, add the ColorBlindnessPlugin to your app, and add ColorBlindnessCamera to your main camera.

You can change the selected mode by inserting ColorBlindnessParams before the plugin. You can also skip this, and change the resource at any time in a system. Check out examples/main.rs for a more detailed example.

use bevy::prelude::*;
use bevy_color_blindness::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        // optional
        .insert_resource(ColorBlindnessParams {
            mode: Mode::Deuteranomaly,
            enable: true,
        })
        // add the plugin
        .add_plugin(ColorBlindnessPlugin)
        .add_startup_system(setup)
        .run();
}

fn setup(mut commands: Commands) {
    // set up your scene...

    // create the camera
    commands
        .spawn_bundle(Camera3dBundle {
          transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
          ..default()
        })
        // IMPORTANT: add this component to your main camera
        .insert(ColorBlindnessCamera);
}

Important note

This plugin only simulates how color blind players will see your game. It does not correct for color blindness to make your game more accessible. This plugin should only be used during development, and removed on final builds.

You might also like...
A Bevy plugin to use Kira for game audio

Bevy Kira audio This bevy plugin is intended to try integrating Kira into Bevy. The end goal would be to replace or update bevy_audio, if Kira turns o

A prototype plugin providing a simple line drawing api for bevy.
A prototype plugin providing a simple line drawing api for bevy.

bevy_debug_lines A prototype plugin providing a simple line drawing api for bevy. See docs.rs for documentation. Expect breakage on master. Click on t

A sprite-sheet animation plugin for bevy
A sprite-sheet animation plugin for bevy

Benimator A sprite sheet animation plugin for bevy Features A SpriteSheetAnimation component to automatically update the indices of the TextureAtlasSp

A Bevy Engine plugin for making 2D paths, smooth animations with Bezier curves
A Bevy Engine plugin for making 2D paths, smooth animations with Bezier curves

bevy_pen_tool A Bevy Engine plugin for making 2D paths and smooth animations with Bezier curves TODO: Mesh-making functionality for building 2D shapes

A procedural sky plugin for bevy

bevy_atmosphere A procedural sky plugin for bevy Example use bevy::prelude::*; use bevy_atmosphere::*; fn main() { App::build() .insert_re

Generic cellular automaton plugin for bevy.
Generic cellular automaton plugin for bevy.

Bevy Cellular Automaton bevy_life is a generic plugin for cellular automaton. From the classic 2D Conway's game of life to WireWorld and 3D rules, the

Verlet physics plugin for bevy.
Verlet physics plugin for bevy.

bevy_verlet Simple Verlet points and sticks implementation for bevy. Features You can simply add a VerletPoint component on any entity with a Transfor

Bevy plugin for an AssetServer that can load embedded resources, or use other AssetServers based on the path.

Bevy-Embasset Embed your asset folder inside your binary. bevy-embasset adds support for loading assets embedded into the binary. Furthermore, it can

Hanabi — a particle system plugin for the Bevy game engine.

Hanabi — a particle system plugin for the Bevy game engine

Comments
  • Achromatomaly isn't real?

    Achromatomaly isn't real?

    For some reason, the youtube algorithm decided that I was one of the 4,000 people to watch this this video which makes the argument that Achromatomaly isn't a real condition, but was something accidentally made up by a programmer in the 2000s who was extrapolating from Achromatopsia in a reasonable but non-valid way.

    I don't know if we should leave it in for completeness, or provide some sort of warning that it's not a real color blindness, or maybe leave it in fully because it has some value for some other reason. I'm definitely not an expert on these matters either way so I just wanted to pass this news to you.

    opened by Andrewp2 1
  • UI is unaffected

    UI is unaffected

    The effect doesn't apply to UI, whether it's Bevy's native UI or external UI like bevy_egui. This makes it hard to determine what the UI will look like to colorblind users.

    opened by Veritius 0
  • Window rescaling doesn't change resolution of image for shader

    Window rescaling doesn't change resolution of image for shader

    When the post-processing effects are added to the camera, they match the current window. If the window is rescaled, the resolution remains the same, as well as only applying the effect to a similar region of the screen, which also cuts off anything outside it (not shown in video). Changing the setting doesn't fix the resolution.

    https://user-images.githubusercontent.com/45957058/201458044-6e27ee7b-a459-4700-8346-477a616fe95f.mp4

    opened by Veritius 0
Owner
annie
she/it
annie
Bevy Simple Portals is a Bevy game engine plugin aimed to create portals.

Portals for Bevy Bevy Simple Portals is a Bevy game engine plugin aimed to create portals. Those portals are (for now) purely visual and can be used t

Sélène Amanita 11 May 28, 2023
Simple stupid noise primitives for WGSL and Rust (glam/bevy types)

noisy_bevy Simple stupid noise primitives for glam types (Vec2, Vec3) and wgsl. Main motivations are: ergonomic usage with Bevy same results on rust a

Johan Klokkhammer Helsing 10 Dec 10, 2022
Attach Bevy's Handles/Entities statically to Types.

Easily attach bevy's Handles/Entities statically to types on startup and get them in any system, without using Resources. It's just a little less clut

Dekirisu 6 Sep 4, 2023
Bevy plugin helping with asset loading and organisation

Bevy asset loader This Bevy plugin reduces boilerplate when loading game assets. The crate offers the AssetCollection trait and can automatically load

Niklas Eicker 205 Jan 2, 2023
Bevy plugin that does navmesh generation, pathfinding, and navigation for tilemaps

Bevy plugin that does navmesh generation, pathfinding, and navigation for tilemaps. Navmesh generation is available without Bevy dependency.

Seldom 13 Jan 31, 2023
A Bevy plugin to easily create and manage windows that remember where they were.

bevy-persistent-windows A Bevy plugin to easily create and manage windows that remember where they were. Background When you're developing a game, thu

Umut 4 Aug 12, 2023
A Bevy plugin for loading the LDtk 2D tile map format.

bevy_ldtk ( Tileset from "Cavernas" by Adam Saltsman ) A Bevy plugin for loading LDtk tile maps. Usage use bevy::prelude::*; use bevy_ldtk::*; fn mai

Katharos Technology 23 Jul 4, 2022
Inspector plugin for the bevy game engine

bevy-inspector-egui This crate provides the ability to annotate structs with a #[derive(Inspectable)], which opens a debug interface using egui where

Jakob Hellermann 517 Dec 31, 2022
A plugin for Egui integration into Bevy

bevy_egui This crate provides a Egui integration for the Bevy game engine. Features: Desktop and web (bevy_webgl2) platforms support Clipboard (web su

Vladyslav Batyrenko 453 Jan 3, 2023
Crossterm plugin for the bevy game engine

What is bevy_crossterm? bevy_crossterm is a Bevy plugin that uses crossterm as a renderer. It provides custom components and events which allow users

null 79 Nov 2, 2022