Как стать автором
Обновить
4.68

Lua *

Скриптовый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Создание игры на Lua и LÖVE — 4

Время на прочтение68 мин
Количество просмотров8.7K
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
Читать дальше →

Простая аутентификация на NGINX с помощью LUA

Время на прочтение7 мин
Количество просмотров23K
image
Доброго времени суток. В данной заметке хочу рассказать о простой аутентификации с помощь nginx и lua-скриптов.
Читать дальше →

Создание игры на Lua и LÖVE — 3

Время на прочтение42 мин
Количество просмотров5.4K
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, то есть объектов, которые может собирать игрок. В них содержатся вышеупомянутые параметры. И наконец после этого мы добавим систему атак, а также несколько разных атак игрока.
Читать дальше →

Создание игры на Lua и LÖVE — 2

Время на прочтение45 мин
Количество просмотров9.9K
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

Время на прочтение37 мин
Количество просмотров42K
image

Введение


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

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

GIF

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

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

Докеризация nginx и php на сокетах с ротацией логов

Время на прочтение5 мин
Количество просмотров24K
В статье на Хабре обсуждался «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, для чего нужен ещё один процесс.
Читать дальше →

Защита от DDoS на уровне веб-сервера

Время на прочтение5 мин
Количество просмотров48K
Статистика DDoS-атак показывает неизменный рост и смещение вектора с сетевого уровня на уровень приложений.

image

Если у Вас есть небольшой сайт на сервере с минимальными характеристиками, то положить его можно любым вполне легальным средством стресс-тестирования. (Не рекомендую этого никому делать т.к. IP-адрес легко вычисляется и экспериментатор может влететь на возмещение ущерба.) Поэтому сайт без защиты от DDoS очень скоро будет выглядеть так же дико, как компьютер с Windows-98 без анивирусника.
Читать дальше →

Lua. Краткое введение в метатаблицы для чайников

Время на прочтение14 мин
Количество просмотров71K

На написание данной статьи меня сподвигло большое количество вопросов по метатаблицам и ООП в Lua, благо это самый сложный и проблематичный раздел у изучающих данный язык, но, так как Lua проектировалась как язык для начинающих и не-программистов и, в целом, имеет небольшой объём материала для освоения, негоже оставлять её «на потом», учитывая что с помощью метатаблиц можно творить чудеса и крайне элегантные решения заковыристых задач.
Читать дальше →

Разработка на LÖVE

Время на прочтение11 мин
Количество просмотров32K
image

Цель поста — в максимально простой форме описать основные этапы разработки с помощью фреймворка LÖVE, на примере классической игры atari-автоматов Asteroids.
Читать дальше →

Corona SDK — игра давилка насекомых (Crush)

Время на прочтение11 мин
Количество просмотров10K
image

Пишем простую, но весьма азартную игрушку. Игра называется Crush т.е. в ней нужно будет давить насекомых, пытаясь избежать давления Ос, так как они отнимают очки, другие насекомые добавляют очки. Все насекомые имеют различные показатели размеров, награды и скорости перемещения. На игру дается определенное время поэтому в мастерстве давления правильных зверьков вы вполне сможете посоревноваться с друзьями. Лучший результат фиксируется и сохраняется в настройках игры.
Читать дальше →

Язык Lua и Corona SDK (3/3 часть)

Время на прочтение28 мин
Количество просмотров16K
image

В этой заключительной третьей части большой обзорной статьи по языку Lua в Corona SDK будут рассмотрены очень важные вопросы, после изучения которых вы сможете перейти непосредственно к изучения Corona SDK.

  • Циклические операции
  • Работа с файлами
  • Дата и время
  • Функции
  • Регулярные выражения и захваты
  • Управление случайностью
  • Математические функции
  • Бережное отношение к чужому

Возможно кто-то не читал первые две части этой статьи им я советую начать именно с их прочтения: первая часть и вторая часть
Читать дальше →

Конструирование сайта, защищенного от блокировок

Время на прочтение4 мин
Количество просмотров22K

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


  • со звездочкой
  • по адресу IP

будут изложены в других постах. Кому интересна тема, заходите под кат.

Читать дальше →

Язык Lua и Corona SDK (2/3 часть)

Время на прочтение15 мин
Количество просмотров15K
image

Это вторая из трех частей статьи о базовых понятиях языка Lua для Corona SDK (если вы не читали первую часть советую начать с нее), в этой части мы рассмотрим все имеющие в языке типы данных. Вы узнаете, как инициализировать переменные всех типов, использовать их значения и преобразовывать один тип в другой. Эта статья является крайне важной в вопросе изучения языка и я постарался добавить большое количество ценных советов, которые позволят вам избежать множества ошибок когда вы будете писать свои игры.
Читать дальше →

Ближайшие события

Язык Lua и Corona SDK (1/3 часть)

Время на прочтение16 мин
Количество просмотров31K
image

Если вы решили освоить разработку игр с использованием Corona SDK, эта статья даст вам необходимые основы самого движка и языка Lua, на котором вам придется разрабатывать. По своему этот язык прекрасен и во многих отношениях необычен. Я постарался собрать в одну статью все наиболее необходимые сведения, но их оказалось больше чем можно размещать в одной публикации и мне пришлось разделить статью на 3 части, эта первая часть и в ней мы рассмотрим следующие вопросы:

  • Порядок комментирования исходников
  • Переменные, константы, область видимости
  • Модули и организация проекта
  • Условные операторы
Читать дальше →

Как научить нейросеть придумывать названия российских населенных пунктов

Время на прочтение8 мин
Количество просмотров18K

Для начала немного несуществующих деревень и сёл


Сальтолово
Ничичи
Каверная Голяна
Придориусловка
Старотипенки
Кюканово
Кутюшевка
Верхний Стед
Сабаревка
Зеленокировка
Хадонские Выселки
Старый Куля
Октяга
Ржиново
Черемошно
Голодионово
Александрово-Полейково
Подлопаново
Малое Сусовое
Горы-Чусалы
Чубравяково




Зачем и почему


Всем привет, меня зовут Илья, я занимаюсь компьютационной биологией и биохимией, в свободное время я заставляю нейросети страдать ерундой.


Основываясь на аналогичных проектах (названия британских деревень, названия мест в Орегоне, названия различных цветов и их RGB), я решил научить нейросеть создавать названия несуществующих населенных пунктов


В качестве нейросети я решил воспользоваться torch-rnn, которую достаточно легко установить и настроить. Список городов и сел я нашел тут (можно скачать все в формате csv). С csv пришлось немного повозиться, чтобы привести ее к utf-8, после чего я запихнул ее в нейросеть и оставил на пару часов. Когда тренировка модели закончилась я взял небольшой сампл и получил следующий результат:

Читать дальше →

Вторая версия Монитора качества воздуха

Время на прочтение1 мин
Количество просмотров11K
image

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

И вот появилась новая версия прибора.
Читать дальше →

Быстрый пул для php+websocket без прослойки nodejs на основе lua+nginx

Время на прочтение5 мин
Количество просмотров16K
nginx + lua

Кратко: nginx не умеет пулить websockets, а php работает per request. Нужна прослойка которая будет держать открытыми вебсокеты и при поступлении данных соединяться с php (через тот же fastcgi) и отправлять обратно ответ.

update: Здесь не идётся про решения на php, так как по сравнению даже с nodejs, они гораздо медленнее.

Тема, как оказалось, не нова, исходники тянуться аж из 2014, но, тем не менее, информации о трюке, про который здесь пойдёт речь, крайне мало. Можете погуглить "websockets php". Усугубляется тема ещё тем, что найденные примеры реализации (два, точнее) не работают, включая тот, что в документации :)
Читать дальше →

Приложения для Tarantool. Часть 2. OAuth2-авторизация

Время на прочтение7 мин
Количество просмотров8.8K

Как построить свое приложение для Tarantool и при этом не городить огород каждый раз, когда требуется сделать, казалось бы, элементарную вещь? Это продолжение цикла статей о том, как создавать свои приложения для Tarantool.


Сегодня мы рассмотрим вопросы сетевого взаимодействия, установки и использования сторонних модулей.


Читать дальше →

Язык Terra — низкоуровневый партнёр Lua

Время на прочтение12 мин
Количество просмотров17K
Terra — низкоуровневый язык системного программмирования, встраиваемый и имеющий возможность метапрограммирования с помощью языка Lua.

Читать дальше →

Приложения для Tarantool. Часть 1. Хранимые процедуры

Время на прочтение8 мин
Количество просмотров16K

Привет, Хабр! Сегодня я хочу поделиться с вами опытом написания приложений для Tarantool 1.7. Этот цикл статей будет полезен тем, кто уже собирается использовать Tarantool в своих проектах, либо тем, кто ищет новое решение для оптимизации проектов.


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


Tarantool — это NoSQL база данных, которая хранит данные в памяти либо на диске (в зависимости от подсистемы хранения). Хранилище персистентно за счет продуманного механизма write ahead log. В Tarantool встроен LuaJIT (Just-In-Time Compiler), позволяющий исполнять код на Lua. Также можно писать хранимые процедуры на C.


image

Читать дальше →