• Когда вызовы функций через внешний интерфейс быстрее нативных вызовов C

    • Перевод
    Дополнено: хорошая дискуссия на Hacker News

    Дэвид Ю на GitHub разработал интересный тест производительности для вызовов функций через разные внешние интерфейсы (Foreign Function Interfaces, FFI).

    Он создал файл общего объекта (.so) с одной простой функцией C. Затем написал код для многократного вызова этой функции через каждый FFI с измерением времени.

    Для C «FFI» он использовал стандартную динамическую компоновку, а не dlopen(). Это различие очень важно, так как действительно сказывается на результатах теста. Можно спорить, насколько честно такое сравнение с фактическим FFI, но всё равно его интересно измерить.

    Самый удивительный результат бенчмарка — то, что FFI от LuaJIT существенно быстрее, чем C. Он примерно на 25% быстрее, чем нативный вызов C для функции общего объекта. Как смог слабо и динамически типизированный скриптовый язык обогнать в бенчмарке C? Точен ли результат?
    Читать дальше →
    • +27
    • 8,4k
    • 6
  • Приложения для Tarantool. Часть 3. Тестирование и запуск

    • Tutorial

    Приложение для Tarantool — это, по сути, набор хранимых процедур, используемых как API. Данные обрабатываются на стороне хранилища, что позволяет значительно повысить производительность. Однако поддержка хранимых процедур может превратиться в кошмар.


    Может. Но не сегодня.


    Сегодня мы рассмотрим вопросы обеспечения качества приложения. В частности, поговорим о тестировании, разберемся, как запуститься в production, как использовать коннекторы, а также поговорим о тонкостях миграции схемы данных.


    Читать дальше →
  • Создание игры на Lua и LÖVE — 7

    • Перевод
    • Tutorial
    image

    Оглавление

    Оглавление


    • Статья 1
      • Часть 1. Игровой цикл
      • Часть 2. Библиотеки
      • Часть 3. Комнаты и области
      • Часть 4. Упражнения
    • Статья 2
      • Часть 5. Основы игры
      • Часть 6. Основы класса Player
    • Статья 3
      • Часть 7. Параметры и атаки игрока
      • Часть 8. Враги
    • Статья 4
      • Часть 9. Режиссёр и игровой цикл
      • Часть 10. Практики написания кода
      • Часть 11. Пассивные навыки
    • Статья 5
      • Часть 12. Другие пассивные навыки
    • Статья 6
      • Часть 13. Дерево навыков
    • Статья 7
      • Часть 14. Консоль
      • Часть 15. Финал

    Часть 14: Консоль


    Введение


    В этой части мы разберём комнату Console. Консоль реализовать гораздо проще, чем всё остальное, потому что в итоге она сводится к выводу на экран текста. Вот, как это выглядит:

    GIF

    Комната Console будет состоять из трёх разных типов объектов: строк, строк ввода и модулей. Строки — это просто обычные цветные строки текста, отображаемые на экране. Например, в показанном выше примере ":: running BYTEPATH..." будет являться строкой. С точки зрения структуры данных это будет просто таблица, хранящая позицию строки, её текст и цвета.
    Читать дальше →
    • +23
    • 2,4k
    • 1
  • Создание игры на Lua и LÖVE — 6

    • Перевод
    • Tutorial
    image

    Оглавление

    Оглавление


    • Статья 1
      • Часть 1. Игровой цикл
      • Часть 2. Библиотеки
      • Часть 3. Комнаты и области
      • Часть 4. Упражнения
    • Статья 2
      • Часть 5. Основы игры
      • Часть 6. Основы класса Player
    • Статья 3
      • Часть 7. Параметры и атаки игрока
      • Часть 8. Враги
    • Статья 4
      • Часть 9. Режиссёр и игровой цикл
      • Часть 10. Практики написания кода
      • Часть 11. Пассивные навыки
    • Статья 5
      • Часть 12. Другие пассивные навыки
    • Статья 5
      • Часть 13. Дерево навыков

    14. Console

    15. Final

    Часть 13: Дерево навыков


    Введение


    В этой части статьи мы сосредоточимся на создании дерева навыков. Вот, как оно выглядит сейчас. Мы не будем располагать каждый узел вручную (это я оставлю в качестве упражнений), а рассмотрим всё необходимое для реализации и правильной работы дерева навыков.

    Сначала мы рассмотрим способ задания каждого узла, затем узнаем, как считывать эти определения, создавать необходимые объекты и применять к игроку соответствующие пассивные навыки. Затем мы перейдём к основным объектам (узлам и связям), а потом рассмотрим сохранение и загрузку дерева. А в конце мы реализуем функционал, необходимый для того, чтобы игрок мог тратить очки навыков на узлы дерева.
    Читать дальше →
    • +12
    • 2,6k
    • 4
  • Создание игры на Lua и LÖVE — 5

    • Перевод
    image

    Оглавление


    • Статья 1
      • Часть 1. Игровой цикл
      • Часть 2. Библиотеки
      • Часть 3. Комнаты и области
      • Часть 4. Упражнения
    • Статья 2
      • Часть 5. Основы игры
      • Часть 6. Основы класса Player
    • Статья 3
      • Часть 7. Параметры и атаки игрока
      • Часть 8. Враги
    • Статья 4
      • Часть 9. Режиссёр и игровой цикл
      • Часть 10. Практики написания кода
      • Часть 11. Пассивные навыки
    • Статья 5
      • Часть 12. Другие пассивные навыки

    13. Skill Tree

    14. Console

    15. Final

    Часть 12: Другие пассивные навыки


    Залп


    Мы начнём с реализации оставшихся атак. Первой будет атака Blast, которая выглядит так:

    GIF

    Выстреливается несколько снарядов с разной скоростью, как из дробовика, которые потом быстро исчезают. Все цвета берутся из таблицы negative_colors и каждый снаряд наносит меньше урона, чем обычно.
    Читать дальше →
    • +19
    • 3,9k
    • 3
  • Создание игры на Lua и LÖVE — 4

    • Перевод
    • Tutorial
    image

    Оглавление


    • Статья 1
      • Часть 1. Игровой цикл
      • Часть 2. Библиотеки
      • Часть 3. Комнаты и области
      • Часть 4. Упражнения
    • Статья 2
      • Часть 5. Основы игры
      • Часть 6. Основы класса Player
    • Статья 3
      • Часть 7. Параметры и атаки игрока
      • Часть 8. Враги
    • Статья 4
      • Часть 9. Режиссёр и игровой цикл
      • Часть 10. Практики написания кода
      • Часть 11. Пассивные навыки
    • Статья 5
      • Часть 12. Другие пассивные навыки

    13. Skill Tree

    14. Console

    15. Final
    Читать дальше →
    • +19
    • 4,9k
    • 1
  • Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
  • Создание игры на Lua и LÖVE — 3

    • Перевод
    • Tutorial
    image

    Оглавление


    • Статья 1
      • Часть 1. Игровой цикл
      • Часть 2. Библиотеки
      • Часть 3. Комнаты и области
      • Часть 4. Упражнения
    • Статья 2
      • Часть 5. Основы игры
      • Часть 6. Основы класса Player
    • Статья 3
      • Часть 7. Параметры и атаки игрока
      • Часть 8. Враги
    • Статья 4
      • Часть 9. Режиссёр и игровой цикл
      • Часть 10. Практики написания кода
      • Часть 11. Пассивные навыки
    • Статья 5
      • Часть 12. Другие пассивные навыки

    13. Skill Tree

    14. Console

    15. Final

    Часть 7: Параметры и атаки игрока


    Введение


    В этой части мы больше сосредоточимся на части геймплея, относящейся к игроку. Сначала мы добавим самые фундаментальные параметры: боеприпасы, ускорение, здоровье (HP) и очки навыков. Эти параметры будут использоваться на протяжении всей игры и они являются основными параметрами, которые будет использовать игрок для выполнения всех доступных ему действий. После этого мы перейдём к созданию объектов Resource, то есть объектов, которые может собирать игрок. В них содержатся вышеупомянутые параметры. И наконец после этого мы добавим систему атак, а также несколько разных атак игрока.
    Читать дальше →
    • +17
    • 2,9k
    • 1
  • Создание игры на Lua и LÖVE — 2

    • Перевод
    • Tutorial
    image

    Оглавление


    • Статья 1
      • Часть 1. Игровой цикл
      • Часть 2. Библиотеки
      • Часть 3. Комнаты и области
      • Часть 4. Упражнения
    • Статья 2
      • Часть 5. Основы игры
      • Часть 6. Основы класса Player
    • Статья 3
      • Часть 7. Параметры и атаки игрока
      • Часть 8. Враги
    • Статья 4
      • Часть 9. Режиссёр и игровой цикл
      • Часть 10. Практики написания кода
      • Часть 11. Пассивные навыки
    • Статья 5
      • Часть 12. Другие пассивные навыки

    13. Skill Tree

    14. Console

    15. Final

    Часть 5: Основы игры


    Введение


    В этой части мы наконец приступим к самой игре. Сначала мы выполним обзор структуры игры с точки зрения геймплея, а затем сосредоточимся на основах, являющихся общими для всех частей игры: её пикселизированном стиле, камере, а также симуляции физики. Потом мы рассмотрим основы перемещения игрока и, наконец, разберёмся со сборкой мусора и возможными утечками объектов.

    Структура игрового процесса


    Сама игра разделена всего на три отдельных комнаты: Stage, Console и SkillTree.

    В комнате Stage происходит весь игровой процесс. В ней находятся такие объекты, как игрок, враги, снаряды, ресурсы, бонусы и так далее. Игровой процесс очень похож на Bit Blaster XL и на самом деле достаточно прост. Я выбрал такой простой геймплей, потому что он позволит мне сосредоточиться на другом аспекте игры (огромном дереве навыков).
    Читать дальше →
  • Создание игры на Lua и LÖVE — 1

    • Перевод
    • Tutorial
    image

    Введение


    В этой серии туториалов мы рассмотрим создание завершённой игры с помощью Lua и LÖVE. Туториал предназначен для программистов, имеющих некоторый опыт, но только начинающих осваивать разработку игр, или для разработчиков игр, уже имевших опыт работы с другими языками или фреймворками, но желающими лучше узнать Lua или LÖVE.

    Создаваемая нами игра будет сочетанием Bit Blaster XL и дерева пассивных навыков Path of Exile. Она достаточно проста, чтобы можно было рассмотреть её в нескольких статьях, не очень больших по объёму, но содержащих слишком большой объём знаний для новичка.

    GIF

    Кроме того, туториал имеет уровень сложности, не раскрываемый в большинстве туториалов по созданию игр. Большинство проблем, возникающих у новичков в разработке игр, связано с масштабом проекта. Обычно советуют начинать с малого и постепенно расширять объём. Хотя это и неплохая идея, но если вас интересуют такие проекты, которые никак нельзя сделать меньше, то в Интернете довольно мало ресурсов, способных вам помочь в решении встречаемых задач.

    Что касается меня, то я всегда интересовался созданием игр со множеством предметов/пассивных возможностей/навыков, поэтому когда я приступал к работе, мне было сложно найти хороший способ структурирования кода, чтобы не запутаться в нём. Надеюсь, моя серия туториалов поможет кому-нибудь в этом.
    Читать дальше →
    • +21
    • 10k
    • 5
Самое читаемое