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 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

A plugin to use the kajiya renderer with bevy

🕊️ 💡 bevy-kajiya A plugin that enables use of the kajiya renderer in bevy WARNING: This plugin is barebones and supports a limited set of features.

Tweening animation plugin for the Bevy game engine.
Tweening animation plugin for the Bevy game engine.

🍃 Bevy Tweening Tweening animation plugin for the Bevy game engine. Features Animate any field of any component or asset, including custom ones. Run

Bevy engine + miniquad render plugin

Bevy engine + miniquad renderer This is a plugin for Bevy engine that replaces default windowing and rendering plugins with miniquad based one. Usage

A plugin to enable random number generation for the Bevy game engine.

bevy_turborand A plugin to enable random number generation for the Bevy game engine, built upon turborand. Implements ideas from Bevy's Deterministic

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 causes issues

    Window rescaling causes issues

    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
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 7 Nov 16, 2022
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 190 Nov 27, 2022
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 475 Nov 27, 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 426 Nov 24, 2022
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
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

Niklas Eicker 164 Nov 21, 2022
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

Michael Palmos 88 Nov 25, 2022
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

Jonathan Cornaz 138 Nov 30, 2022
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

Eli 35 Oct 14, 2022