[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Урок 1. Intro
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Итак, начинаем наше обучение=)
Для начала надо разобраться с тем, что такое 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 они добавили не для нас(людей, которые пытаются извращаться над игрой), а для себя- то есть чтобы быстро описывать карты и ничего кроме этого!

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

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

Кроме того скрипт может менять объекты в игре. К примеру он может взять и оживить червя, добавить ему здоровье, убрать у него оружие, кинуть ящик, ещё кучу всего.

Вот так.

Ну о червях достаточно, более детально поговорим ближе к концу обучения. Для того, чтобы всё это понять нам нужны базовые знания по луа, так что будем их получать!

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

А сейчас жду мнений и отзывов. Что непонятно?



[Список уроков]|[Следующий урок]


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
vera34
Проверенные
Сообщений: 666
Реп: 18
а я се мозг не сломаю))) ато и так он сломан biggrin



Затянись, и мир станет прекрасным.
С каждым днем я все больше убеждаюсь в том, что людей умышленно делают идиотами (С).
 
SW_Krash
Проверенные
Сообщений: 818
Реп: 28 / Инв: 7
Всё понятно... непонятно только почему мы не можем переместить червя... я пробовал менять контейнер червя на контейнер прописанный в ксмл с изменённым значением позиции но червь создался в точке 0,0,0... наверно надо было изменить в все координаты... или просто игра в тупую при создании червя сбрасывает все значения которые не прописаны в твиках... блин пока это говорил мну озарила идея =))) и ещё... мне было сказано что никто не знает на каком языке написаны черви, а тут на тебе и так точно было сказано что это C++ ... НЕПОНЯТНО =)... ну а остальное понятно... думаю к завтрашнему вечеру можно новый урок выкладывать... хотя можно и сегодня вечером =)

Всё что ни делается, делается в Китае(SW_Krash, 2009)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x)
OFFTOP SWEAT OFFTOP(фольклор)

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Оставлю лишь одно замечание - неперемудрите в своих скриптах, проверено, слишком мудреные скрипты неинтересны...

 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Quote
тут на тебе и так точно было сказано что это C++ ... НЕПОНЯТНО =)

Верный признак C++ - dll-ки, которые используются игрой. Насколько я помню в папке есть msvcrt.dll - это библиотека исполнения языка C++. Ещё сам луа написан на чистом ANSI C. Вот все доказательства.

А про позицию червя - ты пробовал проверить тип контейнера-вектора?? т.е. вывести type(worm.position)? если нет, то скорее всего на экране будет userdata - это неизвестный для lua тип данных, который может использовать только внешняя программа, но ещё его может использовать скрипт, если внешняя программа через интерпретатор даёт функции для работы с ним.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Quote (Герыч)
msvcrt.dll - это библиотека исполнения языка C++.

Вопрос не по теме, но все же, Герыч как думаешь эту библиотеку можно форварднуть? Тогда бы я смог сделать универсальный W4MapLoader для любой версии игры...


 
DrHitman27
Админы
Сообщений: 2115
Реп: 52
Quote (Герыч)
ленивые дядьки, вовсю пьющие пиво в Team17

tongue


 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Quote (AlexBond)
Вопрос не по теме, но все же, Герыч как думаешь эту библиотеку можно форварднуть?

Форварднуть - это что?


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Мэйт
Проверенные
Сообщений: 1140
Реп: 24
Quote (Герыч)
ленивые дядьки, вовсю пьющие пиво в Team17

Откуда ты знаешь?



 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Потому что по-другому игры с таким количеством багов не пишутся) Да и многие программисты любят пиво) + про Team17 ходят такие слухи)

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
DrHitman27
Админы
Сообщений: 2115
Реп: 52
Quote (Герыч)
+ про Team17 ходят такие слухи)

я даж где-то фотки видел)


 
[WEC]__Grim
Проверенные
Сообщений: 507
Реп: 17
а можно сделать самому интерпрератор LUA


Я вернулся...
 
DrHitman27
Админы
Сообщений: 2115
Реп: 52
да, но для этого нужно быть хорошим програмистом.

 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
на самом деле ничего сложного) Я построитель графиков делал) функцию в луа пишешь, она строится в окошке)

Только естественно я использовал их библиотеку.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
DrHitman27
Админы
Сообщений: 2115
Реп: 52
Quote (Герыч)
на самом деле ничего сложного) Я построитель графиков делал) функцию в луа пишешь, она строится в окошке) Только естественно я использовал их библиотеку.

ну это не уже халява


 
firsacho
Админы
Сообщений: 3813
Реп: 84 / Инв: 15
хыхы) почитал от скуки статью... В Герыче оказывается похрапывает талант писателя)
Quote (Герыч)
ленивые дядьки, вовсю пьющие пиво в Team17
по-любому в мемориз)




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

mod.worms.pro - мод Worms Renewation для Worms4
 
Jhonny_old
Заблокированные
Сообщений: 355
Реп: 57 / Инв: 5
разве скриптинг это очень сложное занятие?
Мне казалось, что 3D моделирование сложнее.
 
PROFILE
Модераторы
Сообщений: 1017
Реп: 107 / Инв: 7
Quote (Jhonny)
разве скриптинг это очень сложное занятие?

Конечно, сложное. Чтобы понять это, достаточно взглянуть на кол-во скриптов на сайте)
Quote (Jhonny)
Мне казалось, что 3D моделирование сложнее.

И 3д моделирование сложное) Но кому-то проще делать модельки, кому-то - писать скрипты.




Сообщение отредактировал PROFILE - СБ, 19.11.2011, 15:14:00
 
alex_2910
Проверенные
Сообщений: 24
Реп: 17
PROFILE, согласен, но для кого как, я в скриптах вообще не смыслю, но знаю мапперство и 3Д модели, у меня хад не получается
 
Охотник
Проверенные
Сообщений: 16
Реп: 1
понятно!
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: