Итак, начинаем наше обучение=)
Для начала надо разобраться с тем, что такое lua, в чём его "сила", что даст его знание. Ну и как работать с lua. Lua - это язык программирования. Его создали какие-то студенты или профессора, что-то такое. Эти студенты были португальцами, поэтому они назвали свой язык Lua, что переводится как "луна".
Но это никому интересно, поэтому сразу о том, что такое lua в плане применения. Lua - язык для написания скриптов. Под скриптом понимается небольшая программка, которая исполняется другой программой. При этом скрипт расширяет функции основной программы, делает её более гибкой и динамичной.
В нашем случае основная программа - Worms. Разработчики Worms(дядьки, постоянно глотающие пиво и сидящие в Team17) захотели, чтобы каждую карту можно было описывать не в коде самой игры, а отдельно. Зачем? Много причин:
1) для того чтобы получить программу, её нужно скомпилировать. Компиляция - анализ каждой строчки файла, проверка синтаксиса и создание большого exe файла. Конечно это очень долго, поэтому разумно отделить такие мелочи, как карты от основной игры.
2) возможность описывать уровни на более удобном языке. Ведь сама игра написана на C++, а это, хотя и мощный и быстрый язык, но не оч гибкий(все переменные имеют точный тип, при любой ошибке C++ оч сильно на неё ругается). Короче нужно что-то более податливое для быстрого описания уровней.
Поэтому эти дядьки(а они умные программисты, хотя и пьют много пива) зашли на сайт lua.org взяли код lua интерпретатора(а он бесплатен, доступен и открыт) и присобачили к своей игре.
Естественно lua есть не только в Worms. Поглядите список игр на википедии, и это не полный список!
По lua есть хороши описания, есть много разработок(я нашёл на нём даже сервер-kepler называется если что).
Так вот все эти игры и программы объединяет то, что у них есть интерпретатор Lua. Это такая часть программы которая понимает lua и может его загружать и выполнять.
Мы будем пользоваться двумя интерпретаторами:
1) Стандартный интерпретатор Lua
2) Интерпрератор Worms
Стандартный интерпретатор Lua - это чёрное досовское окошко, в котором нет ничего лишнего, но есть всё что надо, поэтому он идеален для понимания lua. В нём мы будем пробовать всё, что изучаем. А поскольку язык один, то всё что мы научимся делать можно будет применять в worms(с некоторыми оговорками)
Теперь пару слов о том, что мы можем добиться от программы. Вообще, у всех часто возникают вопросы: "а можно ли?" "а это реально сделать?" - на такие вопросы сразу отвечаю - чудес не бывает. Поясню на таком маленьком диалоге(Васи и Пети):
Вася: Можно ли червя во время игры с помощью скрипта переместить в любую произвольную точку??
Петя: Нет
Вася: Почему??? Было бы классно!
Петя: Потому что интепретатор не даёт такой возможности
Вася: А если поковыряться в exe?
Петя: Ковыряйся!
Вася: Нууу!
Примерно то же я отвечу, если вы будете приставать ко мне с такими вопросами, поэтому объясняю сразу.
Интерпретатор-прослойка между игрой и скриптом. В игре можно многое. Т.е. там реально существует возможность переместить червя. НО! чтобы в скрипте была эта возможность интерпретатор должен её предоставить скрипту. Это означает, что ленивые дядьки, вовсю пьющие пиво в Team17 должны пошевелить ручками и добавить это в lua, НО! они ленивые и пьяные, поэтому:
1) чтобы сделать такую возможность надо было достаточно долго посидеть над кодом и они это не стали делать
2) если даже делать такую возможность, она может вызвать кучу ошибок, а ошибки это плохо
3) lua они добавили не для нас(людей, которые пытаются извращаться над игрой), а для себя- то есть чтобы быстро описывать карты и ничего кроме этого!
Таким образом вы должны понять, как отвечать себе на многие такие вопросы. Но не огорчайтесь, к концу обучения вы найдёте массу полезных и интересных фич, да и сами научитесь делать скрипты, и искать инфу по ним.
По тексту выше уже немного понятно, что интерпретатор даёт функции скрипту. К примеру даёт скрипту возможность узнать, сколько червей на карте, к какой команде каждый принадлежит, какое у него оружие.
Но сам скрипт даёт интерпретатору кое-какую инфу, к примеру он может сказать интерпретатору "Слушай парниш, если тут червяк подохнет, ты мне об этом скажи, ага". Это называется событием. То есть если на карте что-то важное произошло, то об этом можно узнать в скрипте.
Кроме того скрипт может менять объекты в игре. К примеру он может взять и оживить червя, добавить ему здоровье, убрать у него оружие, кинуть ящик, ещё кучу всего.
Вот так.
Ну о червях достаточно, более детально поговорим ближе к концу обучения. Для того, чтобы всё это понять нам нужны базовые знания по луа, так что будем их получать!
Для того, чтобы их опробовать - надо будет установить стандартный интерпретатор, но о том, как это сделать - позже, в следующем уроке.
А сейчас жду мнений и отзывов. Что непонятно?
[Список уроков]|[Следующий урок]