- Update bundled dependencies: stb_image, stb_image_write, stb_truetype, stb_vorbis, utf8proc, mojoAL, SDL_sound.
- These updates fix MP3 playback and Gosu::Sample pitch changes. (#592, #623).
- Introduce optional
retro: true
option inFont#initialize
, thanks to @cyberarm. (#479, #624)
- Fix an audio bug when repeatedly playing a Gosu::Song. (#618 / #619)
- Fixed Window::tick never waiting for update_interval. (#620 / #621)
Both fixes once again contributed by @cyberarm.
- Windows: Support for Ruby 3.1. (#611/#612)
- Windows: Update SDL to 2.0.20 (#610), also update SDL_sound on all platforms (#606).
- Replace OpenAL (usually oal-soft) with mojoAL. (#608)
All three improvements contributed by @cyberarm.
- Add
Window#gain_focus
callback to mirrorWindow#lose_focus
, which was previously undocumented and only implemented on iOS. (#600) Thanks @cyberarm! - Fix Gosu::Window#tick not raising errors from callbacks. (#594) Thanks again, @cyberarm!
- C++: Refactor the Gosu::Color interface to be less verbose.
Gosu.language()
is deprecated, please useGosu.user_languages()
instead.- macOS: Fixed loading of bold/italic system TTF fonts.
- Improved accuracy of
Gosu.available_width
/Gosu.available_height
. Thanks @cyberarm! - Fixed a bug where macros (images returned by
Gosu.record
) were deformed when rendered with specific coordinates. Thanks @jsb! - macOS: Improved support for ARM-based Macs.
Gosu::Window
can now be created withborderless: true
(WF_BORDERLESS
in C++) to hide all window chrome. Thanks to @cyberarm for this contribution.Gosu::Window#resizable=
andGosu::Window#borderless=
allow changing these properties later.- Windows: Pin the main thread to the first processor core during
Window::show
to avoid timing glitches.
- Breaking change:
Image.from_text
,Font.draw_text
andFont.text_width
have stopped parsing pseudo-HTML markup. Replace "text" with "markup" in each method name to get this functionality back. - Breaking change: The alternative
gosu/zen
interface has been removed. - Breaking change:
Gosu::Window::needs_cursor?
now returns true by default, not false. - Support for Ruby 3.0. Gosu now requires Ruby 2.5 or later, and can only be used on Windows when the RubyInstaller DevKit has been installed.
- Support for analog gamepad sticks. Previously, all sticks and D-pads of gamepad 1 were merged into the same constants such as
GP_0_LEFT
. Now there is aGP_0_DPAD_LEFT
button ID for the D-pad, andGP_LEFT_STICK_X_AXIS
/GP_RIGHT_STICK_X_AXIS
axis IDs that which can be used withGosu.axis()
to query a value between -1 and 1. Thanks to @cyberarm for this contribution. (#524, #540, #542, #543. #546) - Replace all audio libraries by a statically bundled copy of SDL_sound. (#539)
- Added button IDs:
KB_PRINT_SCREEN
,KB_SCROLL_LOCK
,KB_PAUSE
,KB_CAPS_LOCK
. Thanks to @edwinacunav for this contribution. (#545) - Some method arguments have been made optional again, for compatibility with very early Ruby/Gosu projects.
- C++: Rewrite CMake files for Linux and macOS (#535), clean up MSVC 2019 project.
- Adds a C API to use Gosu from other languages (using FFI or other mechanisms); this is a work in progress, but there are proof of concept bindings for Crystal and MRuby. Join the Discord server to learn more. Thanks to @cyberarm for this contribution.
- Update all stb libraries.
- Windows: Update the bundled versions of SDL 2 (2.0.14) and OpenAL soft (1.21.0).
- Fix compilation errors with gcc 10.
- Update utf8proc and all used stb libraries. (#520)
- Windows: Support for Ruby 2.7. (#520)
- Windows: Update bundled SDL version to 2.0.10 (#520)
- Introduce the
resizable: true
argument in Window#initialize to create resizable windows (thanks @cyberarm). (#437) - Introduce
Image.from_blob(w, h, rgba)
, which makes it much easier to create images from binary data than having to emulate theRMagick::Image
interface. - Fix a crash in debug mode when passing certain strings to
Image.from_text
. (#509) - Fix bugs in
Image#insert
. (#515) - Introduce
Color#argb
/Color#to_i
. (#476) - Deprecate
Color#bgr
/Color#abgr
.
- Add KB_NUMPAD_DELETE constant, thanks @PeterCamilleri!
- Windows: Compatibility with Ruby 2.6.
- Windows: Update bundled SDL version to 2.0.9.
- Add diagnostic logging when the
GOSU_DEBUG
environment variable is set. - Linux: Improve font fallback logic, which used to be severely broken on Fedora-based distributions.
- F11 can now also be used by default to toggle fullscreen mode (many browsers and video players support this shortcut).
Gosu.render
now supports theretro: true
argument in an option hash.- Update all stb libraries.
- Windows, Linux: MP3 files now work both in Songs and Samples.
- Linux: Improve both the default and fallback font logic; this should fix bold/italic text with the default font, and exceptions on some distributions.
Gosu.render(width, height) { ... }
can render arbitrary Gosu code to a new texture and return it as aGosu::Image
. This method may not be supported on computers with outdated OpenGL implementations. Thanks for @Kjarrigan for getting this method off the ground.- Text rendering has been completely rewritten to use stb_truetype for font rendering on all platforms. Gosu now renders text the same on all platforms (as long as the fonts are the same).
- Ruby:
Gosu::Font#initialize
now accepts style parameters:bold: true, italic: false
. Unlike in earlier versions of Gosu,Font
is not bold by default. - Ruby:
Font#draw_markup
/Font#draw_text
,Font#draw_markup_rel
/Font#draw_text_rel
, andFont#markup_width
/Font#text_width
, all parse markup for compatibility with older versions of Gosu. The existing methods will stop parsing markup in Gosu 1.0. If you want to keep using the markup feature, you should use themarkup
methods from now on. - Ruby:
Image.from_markup
(new) andImage.from_text
both parse markup for compatibility with older versions of Gosu.Image.from_text
will stop parsing markup in Gosu 1.0. - Ruby:
Image.from_markup
/Image.from_text
now supportsalignment: :center
,alignment: :right
, and thespacing:
parameter even when there is nowidth:
parameter. - Ruby: Remove support for Ruby 1.8-2.2 on Windows. Ruby 1.9 through 2.2 are still supported on macOS and Linux.
- macOS: Compatibility with macOS 10.14 Mojave. (#458)
- macOS: Fix mouse position in multi-monitor setups. (SDL bug 4255)
- iOS: Support for
Gosu::TextInput
on iOS.
- Updated all stb dependencies. (#428)
- Windows: Support for Ruby 2.5. (#427)
- Windows: Update bundled SDL to 2.0.8.
- Fix
Gosu::KB_SLASH
constant, thanks to @mblumtritt for reporting this issue. (#426) - macOS: Fix compilation on macOS High Sierra with Apple's built-in Ruby 2.3, thanks to @jiazhh0325 for reporting this issue.
- Brings
draw_rect
in line with otherdraw_
methods (available in C++, available onGosu::Window
in Ruby). SampleInstance
is now calledChannel
, but the old name still works in Ruby.- Update the stb_image dependency to fix crashes when loading 1-bit PNG files.
- Windows: Update bundled SDL to 2.0.7.
- macOS: Work around a compiler bug in Xcode 9+.
- C++: Image and Sample have a default constructor now that creates an "empty" object; minor interface changes.
- Windows: Support for Ruby 2.4. (#407)
- Windows: Fix MP3 playback on 32-bit systems. (#405)
Image#subimage
works for images larger than 1022x1022px. (#398, #400)- Windows, Linux: Support for MP3 files; requires
libmpg123-dev
on Linux. (#397) - C++: Use
std::function
parameters instead of begin/end function pairs (#399). - Raspberry Pi: Use correct OpenGL version on Pi 2 & 3.
- Add
Window#drop(filename)
callback for when the user drops a file onto the window (#378/#382). Thanks @Kjarrigan! - Fix an inconsistency in
Color#from_hsv
. (#359)