вторник, 22 марта 2011 г.

Создание прототипов #2

Итак создадим прототип игры Lines. В этой игре игрок управляет шариками на поле 9x9 клеток и собирает из них линии. Если игрок собирает линию из 5 элементов то линия уничтожается. Если игрок после своего хода не уничтожил ни одну линию, то падают дополнительные шарики на поле и так пока все поле не заполнится шариками и игрок ничего не сможет больше сделать.

Бриф закончен - достаем инструменты. Если на Lua вы не программировали то вам не помешал бы интерпретатор lua 5.1 и какой нибудь текстовый редактор.
Для Linux: sudo apt-get install lua5.1
Редактор я использую SciTE(Win) и GEdit(Lin).
Создаем hello.lua
Теперь пишем:
print "Hello world..."
 --или
 print("Hello World")
 --или
 print "Hello World";
И запускаем : lua hello.lua
Вот и все lua мы теперь как бы знаем;)
Теперь чтобы воять графику скачиваем Love2d.
 Love2d - https://bitbucket.org/rude/love/downloads
Стабильная версия 0.7.0! Именно с помощью нее можно собрать exe файл в Windows без ошибок. "Теперь wget и все в порядке" ;)
Накидаем пример для love2d :
function love.draw()
    love.graphics.setBackgroundColor(200, 200, 200)    
    love.graphics.setColor(255, 40, 40, 100)
    love.graphics.print('Lines ALPHA VER: 0.01', 10, 10)
end
Называем файл main.lua. Кидаем его в папку EpicLines. И переносим папку на love.exe.
Увидели серый экран и надпись розовую. Отлично! По Love2d отличное wiki на сайте разработчика. Мало того это wiki на русском языке.

Итак в наших руках теперь есть все инструменты чтобы создать прототип.
Теперь скачаем исходный код проекта. Ну дык проще один раз увидеть как говорится.Переходим по ссылке OpenLines исходники  либо просто:
git clone https://github.com/Partysun/OpenLines.git
Lines- это впервую очередь массив 9x9 который должен содержать игровые объекты. Разных видов всего 7 : Желтый , Голубой , Синий , Зеленый ,Оранжевый ,Розовый ,Красный. В Lua нет массивов, а есть таблицы. Это не тавтология!) Если мы определим таблицу:
mytable = {"hello", 2, "3", 4}
То обратиться, можно как к массиву только первый элемент не 0 ,а 1.
print (mytable[1] )   --"hello"
Двухмерный массив соответственно реализуется вложенностью таблиц.
mytable = {{},{},{}} . А обращение mytable[i][j] . Кроме того Lua не имеет нормальной объектной поддержки - ее вообще нету. Чтобы добиться эмуляции ООП на Lua можно использовать возможности таблиц и метатаблиц языка. Существует много разных решений ООП на Lua, которые дают высокую абстракцию и возможность работать с классами как на java или c. Я выбрал middleclass. Один Lua файл , делаем require и работаем с псевдо ООП. Примеры работы с этой библиотекой находятся на github страничке автора.
В исходниках есть main.lua (Controller + View) и gamelogic.lua (Model)  Шаблон M-V-C очень важен в разработке кросс платформенного решения. Основной смысл отделить логику игры от зависимых библиотек работы с управлением, либо библиотек работы с графикой. Вообще сначала я сделал gamelogic.lua, а тестировал работу модуля через консоль. Консольный вариант для прототипа не самый лучший так как видеть в играх все таки очень важно. Прототип должен иметь тоже управление, что и конечная игра! Ведь управление это один из главных элементов геймплея. 
Как собрать exe файл или исполняемый файл на Linux можно почитать в Wiki Love2d либо вот на этой страничке - http://love2d.ru/

Во второй части статьи о прототипах в игрострое я рассказал о том  откуда достать инструменты для разработки и как их приложить для создания прототипа игры. В статье опущено подробное описание кода игры. Собственно по игре только приведены исходники. Код простой и его изучение не должно вызвать у вас проблем + к тому в коде присутствуют комментарии. В следующей части статьи о прототипах я расскажу о том как собрать нашу логику на мобильном устройстве (Android или IPhone) на примере Corona SDK. И сделаю коммит на github.





Комментариев нет:

Отправить комментарий