ГоловнаВсі публікаціїКатегоріїПро проєкт

Ruby-бібліотека Gosu для створення 2D-ігор

Обкладинка нотатки: Ruby-бібліотека Gosu для створення 2D-ігор
Зміст дописунатисність на посилання, щоб перейти до потрібного місця
Gosu — це бібліотека для розробки 2D-ігор та графічних додатків на мові програмування Ruby (а також C++). Вона спрощує створення ігор, надаючи набір зручних та ефективних інструментів для роботи з графікою, звуком, текстом та керуванням введенням.

Можливості Gosu

  • Gosu підтримує завантаження та відображення зображень у форматах PNG, JPEG та інших. Також підтримується анімація за допомогою спрайт-листів.
  • Бібліотека дозволяє відображати текст за допомогою системних шрифтів або завантажених файлів шрифтів.
  • Gosu підтримує відтворення звуків та музики у форматах WAV та MP3, що дозволяє легко додати звукові ефекти та музичний супровід до гри.
  • Бібліотека забезпечує зручне оброблення введення з клавіатури та миші, що спрощує керування персонажами та іншими елементами гри.
  • Gosu дозволяє створювати плавні анімації, використовуючи таймери та кадрові цикли.
  • Завдяки відкритому коду та підтримці розширень, Gosu легко інтегрується з іншими бібліотеками та дозволяє додавати нові функціональні можливості.
В нитках/треді до цього допису я буду поступово додавати маленькі нотатки про те як працювати з Gosu. Також прикріпив відео з демкою, яка запакована у Ruby-gem.
Встановлюємо демку Gosu:
gem install gosu-examples
Запускаємо демку:
gosu-examples
gosu-examples
gosu-examples
Якщо все правильно встановилось, то відкриється вікно з демками, які можна вивчати. Ось переклад тексту з головного екрану:
Ласкаво просимо до Gosu Example Box!

Цей невеликий інструмент дозволяє запускати будь-які ігри Gosu з списку праворуч від екрану.

Кожен приклад можна запустити як з цього інструменту, так і з терміналу/командного рядка як окремий Ruby-скрипт.

Клавіатурні команди/скорочення:

• Щоб побачити вихідний код прикладу або демонстрації можливостей, натисніть E.
• Щоб відкрити папку 'examples', натисніть O.
• Щоб вийти з цього інструменту, натисніть Esc.
• Щоб переключитися в повноекранний режим, натисніть Alt+Enter (Windows, Linux) або cmd+F (macOS).

Чому б не подивитися код цього прикладу прямо зараз? Просто натисніть E.
Якщо одразу натиснути E, то в вашом редакторі коду відкриється частина, яка якраз відповідає за цей перший екран:
require "gosu"

WIDTH, HEIGHT = 640, 480

class Welcome < (Example rescue Gosu::Window)
  PADDING = 20

  def initialize
    super WIDTH, HEIGHT

    self.caption = "Welcome!"

    text =
      "<b>Welcome to the Gosu Example Box!</b>

      This little tool lets you launch any of Gosu’s example games from the list on the right hand side of the screen.

      Every example can be run both from this tool <i>and</i> from the terminal/command line as a stand-alone Ruby script.

      Keyboard shortcuts:

      • To see the source code of an example or feature demo, press <b>E</b>.
      • To open the ‘examples’ folder, press <b>O</b>.
      • To quit this tool, press <b>Esc</b>.
      • To toggle fullscreen mode, press <b>Alt+Enter</b> (Windows, Linux) or <b>cmd+F</b> (macOS).

      Why not take a look at the code for this example right now? Simply press <b>E</b>."

    # Remove all leading spaces so the text is left-aligned
    text.gsub! /^ +/, ""

    @text = Gosu::Image.from_markup text, 20, width: WIDTH - 2 * PADDING

    @background = Gosu::Image.new "media/space.png"
  end

  def draw
    draw_rotating_star_backgrounds

    @text.draw PADDING, PADDING, 0
  end

  def draw_rotating_star_backgrounds
    # Disregard the math in this method, it doesn't look as good as I thought it
    # would. =(

    angle = Gosu.milliseconds / 50.0
    scale = (Gosu.milliseconds % 1000) / 1000.0

    [1, 0].each do |extra_scale|
      @background.draw_rot WIDTH * 0.5, HEIGHT * 0.75, 0, angle, 0.5, 0.5,
        scale + extra_scale, scale + extra_scale
    end
  end
end

Welcome.new.show if __FILE__ == $0
А обравши cptn_ruby.rb можна пограти в простенький платформер (відео ґеймплею додав до цього допису) ^_^
У наступному дописі трохи розгляну сам процес написання / створення гри.
Що таке імутабільність та мутабільність?
19.06.2024 07:48

Що таке імутабільність та мутабільність?

meme code
meme code@memecode
[Ruby] Що повернеться в результаті складання 10.5 та 10?
23.06.2024 13:23

[Ruby] Що повернеться в результаті складання 10.5 та 10?

meme code
meme code@memecode
[Ruby] Чим відрізняються змінні, що починаються з @, @@ та $?
23.06.2024 14:00

[Ruby] Чим відрізняються змінні, що починаються з @, @@ та $?

meme code
meme code@memecode
Що таке функція в програмуванні?
24.06.2024 18:15

Що таке функція в програмуванні?

meme code
meme code@memecode
[Фікс] extconf.rb failed під час встановлення Ruby-бібліотеки Gosu
27.06.2024 16:38

[Фікс] extconf.rb failed під час встановлення Ruby-бібліотеки Gosu

meme code
meme code@memecode
Як зробити пустий git commit?
28.06.2024 08:33

Як зробити пустий git commit?

meme code
meme code@memecode
Gosu Ruby Tutorial - пройдемось по офіційній документації
03.07.2024 11:50

Gosu Ruby Tutorial - пройдемось по офіційній документації

meme code
meme code@memecode
Пишемо демо-гру Drones vs Zombies (Gosu / Ruby)
12.07.2024 12:17

Пишемо демо-гру Drones vs Zombies (Gosu / Ruby)

meme code
meme code@memecode
Як пофіксити збій Windows викликаний CrowdStrike?
19.07.2024 13:53

Як пофіксити збій Windows викликаний CrowdStrike?

meme code
meme code@memecode
Що означає .map(&:name) в Ruby?
28.07.2024 11:18

Що означає .map(&:name) в Ruby?

meme code
meme code@memecode
Як працює метод map в Ruby? Огляд роботи методу з прикладами
30.07.2024 07:33

Як працює метод map в Ruby? Огляд роботи методу з прикладами

meme code
meme code@memecode
Що означає крапка на початку файлу(.gitignore, .DS_Store, .bashrc тощо)?
02.08.2024 13:15

Що означає крапка на початку файлу(.gitignore, .DS_Store, .bashrc тощо)?

meme code
meme code@memecode