Ок, 2020 закончился. И мы стартуем новый год. Я решил "подвести итоги". Да-да, сейчас уже март... но лучше поздно, чем никогда! Всё-таки уже традиция с этими итогами. Нельзя нарушать!
Что было? Чего не было? Зачем это всё? Сейчас расскажу!
Ок, 2020 закончился. И мы стартуем новый год. Я решил "подвести итоги". Да-да, сейчас уже март... но лучше поздно, чем никогда! Всё-таки уже традиция с этими итогами. Нельзя нарушать!
Что было? Чего не было? Зачем это всё? Сейчас расскажу!
Вот и пришла пора выполнить свое обещание, данное когда-то. Итак, в этом сообщении я опишу работу 5ой демки к скриптовому модулю, что выкладывал на всеобщее обозрение. Так как я близок к теме создания игровых программ, то и здесь я не смог удержаться, чтобы не показать простой способ использования скриптов для построения диалогов, что может быть применимо в компьютерных играх и интерактивных системах. С одной стороны - скрипты как нельзя лучше подходят для этой задачи, как минимум по трем причинам:
С другой стороны, приближение демок к реальным примерам использования, должно только положительно сказываться на их восприятии. Ну кому интересно смотреть демки с квадратом, двигающимся по окружности? В общем, сегодня будем "лепить" маленький диалог на скриптах... Не знаю как для остальных, а для меня уже этих трех вышеупомянутых факторов достаточно для того, чтобы перенести диалоговую часть игры в скрипты! | ![]() |
Продолжим изучение основ Lua! Стоит перейти к описанию третьей по счету демки, что я как-то выкладывал на суд читателей... Наверно, её можно обозначить как наиболее наглядную для понимания того, как вообще можно использовать скрипты. Строить безликие графики, считать никому ненужные формулы может каждый, но "это ведь простенькие тесты, а мы хотим настоящей бомбы" - скажете Вы! Поэтому сейчас на элементарном примере попытаюсь показать как можно очень быстро прикрутить скрипты к уже работающей программе с благой целью... Программисты пишут программы - это несомненно. А бывало ли у кого-нибудь, когда юзер говорит: "а не мог бы ты подвинуть вон ту кнопочку в своей программе?" или же "переименуй поле меню, а то неясно". В ответ говорим: "секунду! сейчас все сделаю!". Что происходит дальше? В худшем случае: открываем IDE, ковыряемся по диску в поисках проекта, открываем, компилируем, берем итоговый exe, который весит порядка мегабайта, отсылаем юзеру. Становится очевидным, что настройки программы нужно выносить во внешние файлы. И тогда ответ был бы короче: "открой файл menuitems.ini и поменяй название менюшки как тебе угодно". Уже лучше, а что, если нас попросят поменять не только название, но логику отработки кнопки? Вот тогда приходят на помощь скрипты... |
Чтобы отвлечься от багов в релизной версии игры, решил описать вторую демонстрационную программу связки Lua + Delphi. В общем, запоздавшее описание вроде почти закончено и я лучше выложу его сейчас, чем буду кормить всех новыми обещаниями о доработке текста. Как говорится "меньше слов - больше дела", поэтому приступим! Начнем с основного вопроса: "Что же делает Демо-2"? Ответ прост - строит график зависимости скриптовой функции от времени. Опять же, если вы не понимаете о чем идет речь, то, вероятно, стоит прочесть сообщение, в котором я как-то раз обещал описать демки, что выложил на всеобщее обозрение. |
Сначала небольшое предисловие. Как и обещал ранее, напишу в виде прямолинейного описания, о своем скриптовом модуле, что использую сейчас. Модуль простой, ничего особенного нет. Но, думаю, может чем и пригодится людям, только начинающим изучать Lua и стремящихся встроить поддержку скриптов в свою программу. К модулю приложил 4 демки, представляющими из себя простенькие программы, демонстрирующие способ привязывания скриптов к логике основного приложения. Вообще, скрипты в своих программах я использовать начал недавно, пожалуй, плотно занялся скриптами начиная с AiWar, где использование скриптов было обязательным условием конкурса. Потом начал преобразовывать работу с ними, изучать более оптимальные подходы и т.д. Предупрежу сразу: сам язык Lua знаю не шибко хорошо, поэтому супер накрученных мета-таблиц и имитации ООП не использую вообще. Цель рассказал, задачу поставил, обо всем предупредил, так что... в путь!... |
не знаю, насколько это окажется удобным в итоге... да и не знаю, как обычно такое делают другие, чтобы подсмотреть и сравнить... но пока меня такая система устраивает, работает быстро и пока надежно)).. одна проблема - надо теперь делать дебагер lua-кода, а то не шибко удобно полчаса искать, где опечатался и не поставил запятую))..