ggez v0.5.0 Release Notes

  • ➕ Added

    • Added line cap and join options
    • Added spatial sources for audio
    • Added From implementations for Color to convert from various tuples of f32's. Redundant but it annoyed me they don't exist.
    • Add OpenGL ES 3.0 support
    • Add optional textures to Meshes.
    • Added lots of tests and doctests.
    • Added a c_dependencies feature. It's on by default, but disabling it will build ggez without unnecessary C dependencies (currently bzip2 and minimp3). #549
    • Added (basic) spatial sound support.
    • Added loading of resource zip files from in-memory bytes

    🔄 Changed

    • Updated versions of lots of dependencies.
    • Minimum rustc version is now 1.33, rust 2018 edition.
    • We now use winit instead of sdl2 for window creation and events! This removes the last major C dependency from ggez. It also involves lots of minor changes, the full extent of which is still going to evolve.
    • DrawParam now uses the builder pattern instead of being a bare struct, which allows easier conversion from generics (such as mint types) as well as simplifying the internal math.
    • All public-facing API's that take Point2, Vector2 or Matrix4 should now take Into<mint::...> for the appropriate type from the mint crate. This should let users use whatever math library they care to that supports mint; currently nalgebra, cgmath and euclid are all options.
    • Moved all the FilesystemContext methods into top-level functions in the filesystem module, to be consistent with the rest of the API.
    • What used to be the text_cached module is now the text module, replacing all the old text stuff with cached text drawing using the glyph_brush crate. This dramatically changes the text API, as well as being faster and more powerful.
    • Various dimension parameters have changed to fit the underlying implementations more closely. Image dimensions have changed from u32 to u16, which they always were but now it's exposed to the API. Various screen size dimensions have changed from u32 to f64, which allows winit to do smoother scaling.
    • Similarly, Mesh's now have u32 indices. #574
    • Various getters have been renamed from get_<field>() to <field>(). Of particular note are changes to Drawable and ShaderHandle traits.
    • Some minor modularization has taken place; at least, gamepad and audio module scan be disabled with settings in your conf.toml. Doing the same for filesystem, graphics, and input is a liiiiiittle more involved.
    • MeshBuilder DrawMode's now can take parameters, and have some shortcut functions to make default parameters. This simplifies things somewhat by not needing separate args to specify things like a stroke width for DrawMode::Stroke.
    • HiDPI support removed since it doesn't do anything useful. Any problems with your window not being the size you asked for are winit's problem and will be solved once they fix it. #587
    • Moved ggez::quit() to ggez::event::quit(). This commit
    • Probably tons of other things I've forgotten.

    🗄 Deprecated

    • Nothing, it's a breaking change so things just got removed.

    ✂ Removed

    • Apple products are no longer officially supported. They may work fine anyway, and I'll accept PR's for them, but handlin it all myself is too large an investment of time and energy. Sorry. :-( this commit
    • The foreground and background colors and associated functions have beeen removed; all colors are now specified purely where they are used for drawing.
    • Removed deprecated BoundSpriteBatch type.
    • Removed Context::print_resource_stats() in favor of filesystem::print_all().
    • Removed graphics::rectangle() and friends in favor of just building and drawing the meshes explicitly. Shortcut functions for this have been added to Mesh. #466
    • Removed TTFFont font type in favor of GlyphBrush. #132
    • Removed Context::from_conf() for ContextBuilder which is strictly more powerful. #429
    • Removed bitmap fonts; better support deserves to exist than what ggez currently provides, and there's no reason it can't be its own crate.
    • Removed the cargo-resource-root feature flag; just use filesystem::mount() instead or add the directories to your ContextBuilder.

    🛠 Fixed

    • Minor things beyond counting. Don't worry, we added plenty of new bugs too.

    Broken

    • Does not work on Windows 7 or below, again due to gilrs. #588