Показаны сообщения с ярлыком lua. Показать все сообщения
Показаны сообщения с ярлыком lua. Показать все сообщения

04 марта 2021

До свидания, 2020!

Ок, 2020 закончился. И мы стартуем новый год. Я решил "подвести итоги". Да-да, сейчас уже март... но лучше поздно, чем никогда! Всё-таки уже традиция с этими итогами. Нельзя нарушать! 

Что было? Чего не было? Зачем это всё? Сейчас расскажу!

29 сентября 2011

Square is going home


Предлагаю на суд читателей игру с открытыми исходными кодами, которую я сделал для конкурса на сайте GlScene.ru. При разработке игры я старался по этапам рассказывать, как и что я делал для достижения конечного результата.
Немного о разработке:
  • инструменты: Delphi + GlScene + Box2d + Lua
  • команда: один человек
  • время: около месяца упорного труда
  • бонус: много нового по коду и графике
  • итог: почетное второе место!

22 февраля 2011

Скриптовой модуль, Демо-5

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

  • результат виден сразу, никакой перекомпиляции!
  • тексты диалогов лежат в отдельных файлах скриптов, не нужно производить навигацию по десятку разрозненных pas-файлов
  • можно отдать файл на редактирование постороннему человеку и быть уверенным, что никаких небезопасных действий с программой он не учудит (ему даже исходных кодов основной игры можно не давать)

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

21 января 2011

Скриптовой модуль, Демо-3

Продолжим изучение основ Lua! Стоит перейти к описанию третьей по счету демки, что я как-то выкладывал на суд читателей... Наверно, её можно обозначить как наиболее наглядную для понимания того, как вообще можно использовать скрипты. Строить безликие графики, считать никому ненужные формулы может каждый, но "это ведь простенькие тесты, а мы хотим настоящей бомбы" - скажете Вы! Поэтому сейчас на элементарном примере попытаюсь показать как можно очень быстро прикрутить скрипты к уже работающей программе с благой целью... Программисты пишут программы - это несомненно. А бывало ли у кого-нибудь, когда юзер говорит: "а не мог бы ты подвинуть вон ту кнопочку в своей программе?" или же "переименуй поле меню, а то неясно". В ответ говорим: "секунду! сейчас все сделаю!". Что происходит дальше? В худшем случае: открываем IDE, ковыряемся по диску в поисках проекта, открываем, компилируем, берем итоговый exe, который весит порядка мегабайта, отсылаем юзеру. Становится очевидным, что настройки  программы нужно выносить во внешние файлы. И тогда ответ был бы короче: "открой файл menuitems.ini и поменяй название менюшки как тебе угодно". Уже лучше, а что, если нас попросят поменять не только название, но логику отработки кнопки? Вот тогда приходят на помощь скрипты...

24 ноября 2010

Скриптовой модуль, Демо-2

Чтобы отвлечься от багов в релизной версии игры, решил описать вторую демонстрационную программу связки Lua + Delphi. В общем, запоздавшее описание вроде почти закончено и я лучше выложу его сейчас, чем буду кормить всех новыми обещаниями о доработке текста. Как говорится "меньше слов - больше дела", поэтому приступим! Начнем с основного вопроса: "Что же делает Демо-2"? Ответ прост - строит график зависимости скриптовой функции от времени. Опять же, если вы не понимаете о чем идет речь, то, вероятно, стоит прочесть сообщение, в котором я как-то раз обещал описать демки, что выложил на всеобщее обозрение.

03 октября 2010

Скриптовой модуль, Demo-1

Вот и наступило время выложить описание первой демонстрационной программы связки Lua + Delphi, написанной мною недавно. Если вы не понимаете о чем идет речь, то, вероятно, стоит прочесть сообщение, в котором я как-то раз обещал описать демки, что выложил на всеобщее обозрение.

23 сентября 2010

Скриптовой модуль, вступление.

Сначала небольшое предисловие. Как и обещал ранее, напишу в виде прямолинейного описания, о своем скриптовом модуле, что использую сейчас. Модуль простой, ничего особенного нет. Но, думаю, может чем и пригодится людям, только начинающим изучать Lua и стремящихся встроить поддержку скриптов в свою программу. К модулю приложил 4 демки, представляющими из себя простенькие программы, демонстрирующие способ привязывания скриптов к логике основного приложения. Вообще, скрипты в своих программах я использовать начал недавно, пожалуй, плотно занялся скриптами начиная с AiWar, где использование скриптов было обязательным условием конкурса. Потом начал преобразовывать работу с ними, изучать более оптимальные подходы и т.д. Предупрежу сразу: сам язык Lua знаю не шибко хорошо, поэтому супер накрученных мета-таблиц и имитации ООП не использую вообще. Цель рассказал, задачу поставил, обо всем предупредил, так что... в путь!...

05 апреля 2010

Пример скрипта...

Решил чуточку рассказать про скрипты в "игреХ"...
в первом тексте я коснулся технического аспекта использования скриптов. сейчас же напишу о том, как в итоге скриптовые файлы-уровни представлены у меня.
Вот пример первого уровня:

22 февраля 2010

отчет №5

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

29 января 2010

Lua + Delphi, компиляция

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

01 декабря 2009

ускоряемся...

в общем, сделано не так много, как хотелось бы на данный момент.
сейчас я запоздал с 6ью пунктами в teamer'е... надо бы их подтянуть. что мешает? ну, Box2d постоянно выкидывает новые сюрпризы: то невозможно вытащить общую силу, приложенную к телу, то невозможно отключить сочленение на какое-то время (не уничтожая его)... ну и конечно приходится постоянно расширять dll-ку, чтобы добираться до необходимых полей и методов объектов Box2d. приходится также изучать и другие компоненты программы: к примеру долго не мог найти как дебажить lua-код. в итоге оказалось, что сообщение об ошибке лежит на вершине стека - кто бы мог подумать))..

27 ноября 2009

Pointer vs Index

начну с того, что вообще я планировал в скриптах хранить только индексы объектов в глобальных списках... потому как я считаю, что так безопаснее. нечего скриптам знать что-то большее, чем индекс объекта! передав этот индекс в движок, он уже разберется, как достать нужный объект!
проблемы, конечно же, начнутся, когда дело обстоит со списками, количество и индексы объектов в которых постоянно меняется. вариантов решения несколько:
  • а) можно заново вычислять индексы объектов после перестраивания списка
  • б) можно привязываться не к индексу в списке, а к некоему ID объекта
  • в) можно при убийстве объекта не изменять количество ссылок в списке, оставляя на том месте nil. таким образом количество ссылок в списке будет всегда накапливаться.
  • г) можно резервировать места для объектов при старте уровня (то есть при старте по некоторым ссылкам в списке будет nil), при необходимости же добавить заведомо известный объект - указывается также индекс, зарезервированный под объект. при удалении этого объекта, надо будет всего лишь убить сам объект, не изменяя количества объектов в списке. 

23 ноября 2009

продвигается!..

последние три дня программировал скрипты и события... пришлось переделывать парсинг файлов, добавлять возможность глобальной "прописки" индексов объектов из скриптов... таким образом файл с событиями-скриптами выглядит как-то так:не знаю, насколько это окажется удобным в итоге... да и не знаю, как обычно такое делают другие, чтобы подсмотреть и сравнить... но пока меня такая система устраивает, работает быстро и пока надежно)).. одна проблема - надо теперь делать дебагер lua-кода, а то не шибко удобно полчаса искать, где опечатался и не поставил запятую))..

так что теперь есть выключатели, ключи и многое другое... вчера опробовал - работает!

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

17 ноября 2009

медленнее улитки...

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

по делу:
  • вчера прикрутил скрипты, и фпс упал ровно вдвое: с 55 до 30... немного подумав, вернул его к отметке в 50 фпс)).. но на деле скрипты не несут пока никакого функционала, и это надо срочно исправлять!.. и, конечно же, надо подумать над фпс посильнее - поднять хотя бы до сотни!
  • сделал побольше всяких объектов, в том числе многоугольных... работает на ура!..
  • добавил индикатор на дистанционное сочленение, добавил сочленение "вдоль оси" (Prismatic)... добавил возможность изменять пределы сочленений из редактора... dll-ка Box2d растет с каждым днем))
  • осталась проблема с заданием параметров тел... с одной стороны, трение, к примеру, присваивается Shape'у... а у меня не добраться до него из движка, только до тел... таким образом оставил пока у каждого тела один показатель трения - трение нулевого Shape'а...
итак, Box2d пока отличается своей стабильностью и приятностью в общении... есть, конечно, и сложности с ним, к примеру, сейчас возникла необходимость disable'ить сочленения на какое-то время, чего я, к сожалению, найти в движке не могу...
скрипты пока тоже на приличном уровне - надо только добавлять "слов" для общения между игровым движком и самим lua...
ну и, конечно же, надо повышать фпс... чем выше он будет - тем лучше, несомненно... пока подумываю об отрезании ненужных веток обновления объектов, переход на рендер внутри DirectOpenGl, и увеличение минимальных требований на железо))))..
но сейчас не до того, сейчас я наделен одним желанием - попробовать собрать первый тестовый уровень, пора бы уже))

10 ноября 2009

вкус победы))

совсем забыл отписаться о том, что мы с leric победили в конкурсе))
решили больше на GlScene.ru не участвовать в конкурсах ближайшее время... ибо нет интереса... соревновальческого стимула совсем нет... как появятся достойные конкуренты, может еще и поучаствуем))... но сейчас фан совсем иссяк на том форуме, надо двигаться дальше))
а впереди у нас забавная задумка!

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

05 ноября 2009

всегда вперед!

Давно тут не писал... вот решил чуточку разбавить всякую ерунду другой ерундой)).. итак! оказалось сложноватым делать редактор для игры, заточенной на физике!.. это действительно непросто...
  • с одной стороны надо как-то определиться с тем, как передвигать объекты - вроде они должны взаимодействовать, чтобы не получилось, что в игре они тут же растолкают друг друга... но также надо давать способ отключить обсчет столкновений, чтобы была возможность пересечь два объекта для создания сочленений...
  • с другой стороны важны точные методы задания позиции и ориентации тел... хочется, чтобы шестеренки и колёса крутились относительно центра, а не со смещенными осями... но важно и кликанье - взял, подвинул, установил...
  • также сложность вызывает отображение не графических объектов - сочленений, к примеру... как отобразить, чтобы можно было выбрать и перемещать?
может показаться странным, что уже сейчас стремлюсь сделать удобный редактор, ведь игры и геймплея еще нет... вся штука в том, что геймплей придуман, но непонятно, нужно ли его еще сильнее нагромождать или сделать по принципу "все сложное выбросить"?! для этого хочется пощупать геймплей, а так как он планируется в физике головоломок, то редактор просто необходим - построение сложных и не очень задач на бумаге довольно трудоемко... тем более вспоминаются опыт других наших работ, когда интересные идеи образовывались в тот момент, когда перетаскиваешь, манипулируешь объектами в редакторе... начинаешь воображать, накручивать! так что такие дела... сделано пока мало... мы пробуем потихонечку, внедряем аккуратно новые штукенции так сказать)) чтобы не оказаться в ситуации, когда непонятно как это все барахло разрулить, как было с первым Climber'ом, к примеру))

еще отмечу, что прикручивание Box2d стало не таким и сложным делом... уже потихонечку осваиваюсь в c++... как-то по-хитрому привожу там типы (сам не пойму, как это работает, если честно), что не всегда удобно и сильно захламляет заголовочный файл... зато pas-header растет довольно активно... также пытаюсь развить классовую прослойку... в итоге получается довольно отцепляемо, но я не очень уверен в необходимости такой сложной системы прикручивания... может в будущем буду упрощать)).. хотя сейчас вроде выглядит не дурно))

p.s. сегодня планирую прикручивать инициализационные скрипты))..

22 октября 2009

А-г-а!!!

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

14 октября 2009

нужно второе дыхание...

осталась неделя до сдачи AiWar...
что нужно сделать:
  • сделать пересборку диалога при его вызове
  • cоздать полноценный хелп с описанием всех Lua-возможностей
  • кнопки "apply/cancel" на диалогах
  • написать 4-5 идеальных скриптов с полным разъяснением происходящего
  • немного отбалансить объекты в целом
  • отрицательные размеры объектов?
  • сохранение ИИ в файл-карты
  • записать несколько видео с происходящим и выложить на ю-тьюб
  • сделать нормальный мигающий курсор в строке ввода
  • поменять местами очки и жизнь в мини-статистике
p.s. сейчас пытаемся продумать геймплей для новой игры... лично я кручу-верчу box2d и pascal script... с первым вроде дела обстоят не очень... второе я еще не трогал)).. нужно как-то все увидеть, запечатлеть и делать то, что увидилось))..

22 сентября 2009

о результатах))

итак... сегодня уж 22ое... что сделано? каков итог?
итак, результат такой: чуть больше месяца мы делали эту игру, и в итоге получилась она съедобная)).. то есть был апробирован новый способ создания интерфейса, был немного изучен луа, вылезли все недостатки системы гуи, придуман простенький геймплей и все доточено на позитив!)) результатом лично я доволен, понравится ли остальным - будет ясно в конце октября... на ближайший месяц заготовлены новые планы и надежды, игре "война ии" будет уделено минимум внимания - только мелкие доработки и вычищения грязного кода...

по сути все)).. сейчас же стоит одна задача - придумать и набросать новый геймплей!

15 сентября 2009

первая альфа))

в общем, я добрался до геймплея)).. сегодня с утра наблюдал 15 минут как пять ботов набирают очки, убивая друг друга)) (надо, кстати, найти замену слову "убийство")

итак, из проделанного:
  • пули
  • столкновения
  • вроде доделал редактор (масштабирование и поворот препятствий)
  • нормальный респаун у ботов
  • бонусы собираются, боты сталкиваются, препятствия стоят неподвижно
  • можно сохранять/загружать карту
  • боты различаются по цвету
  • авто-респаун объектов
  • в скриптах уже можно воротить много чего интересного (они знают о других ботах, умеют искать ближайшего, стреляют "наперед")
но осталось еще очень и очень много - взрывы, эффекты, моргающий курсор, различные обновления параметров, еще много скриптов, показания бота при его выборе... и что-то еще о чем забыл упомянуть... в общем, дело движется и это здорово!