• Ciklum Speakers' Corner: «Lua. Обзор языка и его возможностей»

      Компания Ciklum с продолжает ряд открытых мероприятий под названием Speakers’ Corner на которых, за короткое время можно узнать массу полезной информации и пообщаться с единомышленниками в неформальной обстановке.
      На этот раз 16го декабря мы приглашаем всех желающих расширить свои гоизонты и погрузиться в мир Lua, получить краткий обзор и узнать о его возможностях.
      Проливать луч света на Lua и открывать новые горизонты будет Владимир Безобюк (Senior Linux Developer, IntroPro).
      image
      Читать далее
    • Любовь в пикселях или что такое Love2d

      Что же такое Love2d и о чем этот пост? Это кроссплатформенный фреймворк для разработки 2d игр. Почему именно love2d? Потому что это бесплатный, легкий, кроссплатформенный, с открытым исходным кодом, а главное сделанный с любовью движок.

      Читать дальше →
    • Что такое скрипты и с чем их едят — Lua & C++

      • Tutorial
      Добрый день, Хабрахабр!
      Решил написать этот топик на тему скриптов

      Что нужно знать?


      • С++ на приличном уровне (в уроке будут шаблоны — template)
      • Lua, очень легкий скриптовый язык. Советую этот урок.

      Почему писать диалоги игры в .cpp файле было большой ошибкой


      Если вы разрабатывали большие проекты (к примеру, масштабные игры), замечали, что с каждой новой сотней строк кода компиляция идет медленней?
      В игре создается больше оружия, больше диалогов, больше меню, больше etc.
      Одна из самых главных проблем, возникающих в связи с нововведениями — поддерживать бессчетное множество оружия и бейджиков довольно сложное занятие.
      В ситуации, когда просьба друга/босса/напарника изменить диалог или добавить новый вид оружия занимает слишком много времени, приходится прибегать к каким-то мерам — например, записи всей этой фигни в отдельные текстовые файлы.
      Почти каждый геймдевелопер когда-нибудь делал карту уровней или диалоги в отдельном текстовом файле и потом их считывал. Взять хотя бы простейший вариант — олимпиадные задачи по информатике с файлом ввода

      Но есть способ, на голову выше — использование скриптов.

      Читать дальше →
    • Использование 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 без использования дополнительных библиотек.
      • Данные можно хранить и сортировать в приятном глазу виде. Их легко читать и модифицировать в любом текстовом редакторе.

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

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

      Оригинальные статьи: раз и два.

      Все там написано хорошо и правильно, но счастья все равно нет.

      Картинка для привлечения внимания:


      Задача простая — отметить людей на фотографии и иметь возможность пользоваться этим в максимальном количестве мест любым удобным для меня способом.

      Лица отмечать буду в пикасе, потому как привязка к гугловским контактам, кроссплатформенность, авто определение, хранение тегов внутри файла (с нюансами). А вот смотреть и использовать эти теги хочу везде в gallery3 потому что она это умеет, в lightroom потому что именно им пользуюсь как каталогизатором, в microsoft explorer потому как он у меня есть и в Microsoft Live Photo Gallery, просто потому что это второй популярный формат и почему бы и его тоже не использовать.

      Кто тоже хочет заморочиться — добро пожаловать под кат.
      Читать дальше →
      • +14
      • 6,8k
      • 6
    • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

      Подробнее
      Реклама
    • Создание несложного бота для WoW, программирование маршрутов

      Введение


      Прочитал недавно пост, в котором автор рассказал о своём боте для торговли на аукционе в игре World of Warcraft. Его персонаж бегал челноком на небольшие расстояния и выполнял конкретные действия, строго заданные в управляющей программе. Воспользовавшись его идеями, я решил пойти немного дальше: пусть персонаж будет способен бегать по маршруту длительностью хотя бы пять минут, при этом должна быть возможность записывать маршрут и выполняемые действия извне, не прибегая к изменению самой программы управления. Описанное мной является развитием поста-оригинала, тем не менее я постарался, чтобы его чтение не было обязательным.
      В посте я опишу
      1. Процесс создания тривиального аддона для пользовательского интерфейса WoW на языке Lua
        • Сериализация данных для передачи между частями системы
        • Передача с помощью цвета пикселей
      2. Процесс управления персонажем на языке AutoIt
        • Программа для записи выполняемых действий
        • Программа для воспроизведения
        • Мат.расчеты направления перемещения
        • Почему не стоит прибегать к чтению/записи памяти процесса
      3. Программа управления (ро)ботом с командами, понятными непрограммисту

      Читать дальше →
    • Lua за 15 минут

        image

        Для всех, кто хотел разобраться с Lua (скриптовый язык для разработки игр и не только, список), но никак не находил времени, Tyler Neylon приготовил небольшой подарок:

        http://tylerneylon.com/a/learn-lua/

        Посвящается всем, кто предпочитает один большой список из говорящих самих за себя сниппетов кода (с небольшими комментариями к 95% case'ов) длинным мануалам с огромной иерархией. Очень удобно для тех, кто уже умеет программировать и просто хотел бы разобраться с новым для себя языком. Весь «мега-сниппет» на английском, но примеры несложно читаются.

        P.S. А для всего остального есть Hyperpolyglot.
      • Классы в lua, или избавляемся от двоеточия

          Как всем известно, в lua нет как таковых классов и объектов. Однако есть метатаблицы и синтаксический сахар.
          С помощью указанных механизмов достаточно просто реализовать подобие классов.
          В итоге и получается нечто такое:
          Самый простой класс
          local MyClass = {} -- the table representing the class, which will double as the metatable for the instances
          MyClass.__index = MyClass -- failed table lookups on the instances should fallback to the class table, to get methods
          
          -- syntax equivalent to "MyClass.new = function..."
          function MyClass.new(init)
            local self = setmetatable({}, MyClass)
            self.value = init
            return self
          end
          
          function MyClass.set_value(self, newval)
            self.value = newval
          end
          
          function MyClass.get_value(self)
            return self.value
          end
          
          local i = MyClass.new(5)
          -- tbl:name(arg) is a shortcut for tbl.name(tbl, arg), except tbl is evaluated only once
          print(i:get_value()) --> 5
          i:set_value(6)
          print(i:get_value()) --> 6
          

          (взято с lua-users.org/wiki/ObjectOrientationTutorial)

          Всё это конечно хорошо, даже при определённой сноровке можно реализовать наследование…
          Но где public и private члены класса? Дефакто в этом примере они все public. Да ещё и надо помнить, где использовать двоеточие:
          MyClass:myFunc()
          

          а где просто одну точку:
          MyClass.myOtherFunc()
          

          А статические члены класса? Неужели придётся отказываться?
          Вот я и не захотел отказываться, и начал колхозить...
        • MySQL On air. Мониторим SQL запросы

          • Tutorial
          image
          Разбираясь как работает та или иная CMS приходится использовать различные инструменты, облегчающие работу.
          Наиболее интересная тема — это работа с баз(ой|ами) данных. Естественно для изучения запросов и результатов запросов нужно использовать что-то универсальное. Что-то, что будет работать стабильно как с известным движком, так и с самописной системой.
          Предположим у вас оказалась система управления контентом и вам необходимо посмотреть как реализовано добавление новых пользователей или смена паролей.

          Большинство инструментов позволяющих мониторить работу с БД являются платными [раз, два]. Я хотел что-то более легкое и удобное, поэтому выбрал mysql-proxy. Хотя возможности утилиты гораздо шире чем мне требуется, я опишу лишь основное. Работает как под Windows, так и под Unix системами.
          Как я это использую?
        Самое читаемое