• Использование ImGui с SFML для создания инструментов для разработки игр

    • Tutorial

    Привет, Хабр!


    Данная статья — вольный перевод моей статьи на русский с некоторыми небольшими изменениями и улучшениями. Хотелось бы показать как просто и полезно использовать ImGui с SFML. Приступим.



    Введение


    При разработке игр очень важно иметь хорошие инструменты для создания контента (редактор уровней, ресурсов и пр.), а также для дебаггинга. Наличие данных вещей повышает производительность и креативность. Гораздо проще отлавливаются баги и исправляются уже найденные: легко выводить значение различных переменных, а также создавать виджеты для их изменения, чтобы посмотреть, что происходит с игрой при определённых их значениях. Виджеты для изменения переменных также очень полезны для полировки геймплея. Например, можно легко изменять скорость передвижения персонажей, скорость перезарядки оружия и пр.


    Вот какие инструменты я создал с помощью ImGui для своей игры:



    Редактор уровней

    Читать дальше →
  • Использовать Lua c С++ легче, чем вы думаете. Tutorial по LuaBridge

    • Tutorial
    Данная статья — перевод моего туториала, который я изначально писал на английском. Однако этот перевод содержит дополнения и улучшения по сравнению с оригиналом.
    Туториал не требует знания Lua, а вот C++ нужно знать на уровне чуть выше базового, но сложного кода здесь нет.

    Когда-то я написал статью про использование Lua с C++ с помощью Lua C API. В то время, как написать простой враппер для Lua, поддерживающий простые переменные и функции, не составляет особого труда, написать враппер, который будет поддерживать более сложные вещи (функции, классы, исключения, пространства имён), уже затруднительно.
    Врапперов для использования Lua и C++ написано довольно много. С многими из них можно ознакомиться здесь.
    Я протестировал многие из них, и больше всего мне понравился LuaBridge. В LuaBridge есть многое: удобный интерфейс, exceptions, namespaces и ещё много всего.
    Но начнём по порядку, зачем вообще использовать Lua c С++?
    Читать дальше →
  • Использование Lua и C++ для обработки и хранения данных

    Код статьи можно посмотреть здесь.
    Чем так хорош Lua?

    Когда-то я разрабатывал свою игру и задался вопросом: а какой формат данных лучше использовать для конфигурационных файлов?
    Ведь удобно, когда создаёшь какой-либо объект, задавать различные начальные параметры не в самом коде, а в отдельных файлах. Это позволяет изменять некоторые параметры объектов без рекомпиляции, да и вообще даёт возможность менять их людям далёким от программирования.
    Разработчики используют разные форматы: одни используют JSON, другие — XML, либо другие форматы данных. Ну а некоторые вообще хранят данные в .txt файлах или пишут свои парсеры. После рассмотрения различных форматов я остановился на Lua.

    Lua можно использовать не только для игр, но и вообще для любых программ, которые используют данные, хранящиеся в других файлах.

    Вот, что выделяет Lua на фоне других форматов:
    • Lua легко использовать без дополнительных зависимостей (кроме одной библиотеки Lua и трёх .h файлов).
    • В Lua файлах данные можно инициализировать с помощью математических выражений или функций, написанных на Lua. Например:
      some_variable = math.sqrt(2) * 2
      some_variable2 = 64 * 16 - 32
      

    • Lua — очень быстрый язык, который к тому же не занимает много памяти.
    • У Lua лицензия MIT, которая позволяет использовать этот язык как в бесплатных, так и в коммерческих проектах, причём без всякой возни с бумагами. Как написано на сайте: «просто скачайте и пользуйтесь».
    • Lua комплируется практически везде, т.к. он написан на чистом C без использования дополнительных библиотек.
    • Данные можно хранить и сортировать в приятном глазу виде. Их легко читать и модифицировать в любом текстовом редакторе.

    Начнём с простого примера, а затем я перейду к реализации класса.
    Читать дальше →