• Создание игры на 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
    • 1,8k
    • 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,1k
    • 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,5k
    • 3
  • Апгрейд хранимок Tarantool: «все своё ношу с собой!»


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


      Проблема состоит в противоречии:


      • С точки зрения эффективности работы с данными желательно максимум бизнес-логики реализовывать в хранимых процедурах.
      • С точки зрения эффективности разработки ПО желательно, чтобы части одной программы находились в одном месте. Хранение кода работы с хранилищем прямо в хранилище создаёт много трудностей.
      Читать дальше →
    • Создание игры на 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,1k
      • 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,6k
      • 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
      • 7,9k
      • 5
    • Докеризация nginx и php на сокетах с ротацией логов

      • Tutorial
      В статье на Хабре обсуждался «docker way»(TM), который гласит: один контейнер — один процесс.
      one process per container
      Each container should have only one concern

      Decoupling applications into multiple containers makes it much easier to scale horizontally and reuse containers. For instance, a web application stack might consist of three separate containers, each with its own unique image, to manage the web application, database, and an in-memory cache in a decoupled manner.

      You may have heard that there should be “one process per container”. While this mantra has good intentions, it is not necessarily true that there should be only one operating system process per container. In addition to the fact that containers can now be spawned with an init process, some programs might spawn additional processes of their own accord. For instance, Celery can spawn multiple worker processes, or Apache might create a process per request. While “one process per container” is frequently a good rule of thumb, it is not a hard and fast rule. Use your best judgment to keep containers as clean and modular as possible.

      If containers depend on each other, you can use Docker container networks to ensure that these containers can communicate.
      Следование этому принципу при докеризации nginx чревато двумя последствиями. Настроить взаимодействие nginx и php-fpm в разных процессах через unix сокет немного сложнее, чем может показаться. И ротация логов, которая при обычной установке идет «из коробки», не может осуществляться в принципе, т.к. требует отправки сигнала USR1 nginx, для чего нужен ещё один процесс.
      Читать дальше →
    Самое читаемое