Введение

В этом руководстве я расскажу, как сделать простейшую игру на Dizzy Scripting Engine, подробно описывая каждый шаг. Это руководство рассчитано на людей, не знакомых с DizzyAge. Посему - те, кто умеет с ним работать, пропускайте эти куски текста.

  

 

Создание проекта

Переходим в меню Файл→Проект→Новый:

 

Откроется форма создания нового проекта. Здесь указываем название проекта и место, где его следует сохранить (а именно директорию, где создастся поддиректория с проектом).

Нажимаем кнопку «Сохранить». Если все прошло правильно, то эта форма закроется и откроется окно с «журналом»:

 

 

 Уже на данном этапе можно собрать игру и пробежаться по стартовой комнате. Жмем F4, ожидаем, пока собирается проект, затем запускаем trd образ в эмуляторе и получаем такую комнату.

Создание карты

Теперь нам нужна своя карта, где будет происходить действие игры.

Переходим: Редакторы→Карта.

 

Откроется окно DizzyAge:

 

Карта по умолчанию имеет размер 2*2 комнаты. В DizzySE даже пустая комната занимает место. Не много, но занимает. Поэтому карту игры лучше набросать заранее на бумаге и при разработке игры стараться оптимально использовать пространство карты.


В нашем случае нам не нужна такая большая карта. Давайте её уменьшим. Переключаемся обратно в DizzySE Toolset и переходим: Разное→Калькулятор размера карты.

 

Откроется окно калькулятора:

 

Делаем как показано на рисунке: W=2, H=1.

Запоминаем получившиеся значения Wpx и Hpx и переходим в DizzyAge.

Далее идем в System menu → Info.

Откроется окно Map Info:

 

 

Вписываем в поля Map width and height полученные из калькулятора значения (480 и 136) и нажимаем кнопку Resize. Сохраняем карту (Ctrl+s).

 

 

Пора что-нибудь нарисовать

Для начала нужно стереть заготовку карты. Жмем пробел, затем выделяем все объекты на экране и жмем Delete.

Теперь, нажимаем ”B”.

Откроется браузер тайлсетов:

В нем нужно найти (с помощью прокрутки курсорными клавишами) и выбрать тайлсет под номером 512 (на скриншоте он 2-й слева в нижнем ряду). Это основной тайлсет, с которым мы будем работать. (Каждый раз при запуске редактора DizzyAge он копируется из директории с проектом игры. Вы можете открыть директорию проекта, найти там этот тайлсет и изменить его по собственному уcмотрению.)

Откроется окно с тайлсетом:

Давайте выделим рамкой серый камень:

Теперь кликнем на основное окно редактора карты. Окно тайлсета должно исчезнуть.

В верхнем правом углу экрана находится панель управления слоями:

Установим работу с 3-м слоем.

Нажмем на клавишу ”P”. Откроется окно редактирования кисти:

Нужно установить материал. Для этого нажимаем на кнопку material и из списка выбираем block. Снова кликаем на основное окно редактирования карты.

Далее рисуем  что-нибудь в этом духе (стереть объект можно так: Space (смена режима), клик, Del. Также действует Undo по Ctrl+Z. Клавишей ”M” можно повторно открыть окно тайлсета).

Важное замечание. «Кисти» (прямоугольные блоки с выбранной нами графикой) не должны выходить за пределы комнаты.

 

Это основное место действия игры. Для Диззи материал Block не проходим, следовательно, за эту карту выйти он не сможет.

Сохраняем карту (System menu → Save as, dizzy1.map). Или просто нажмите ctrl+S

 

 

Точка старта

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

Здесь можно увидеть три группы чисел. 1-я (”ffffffff”) - цвет кисти. Нас не интересует и в DizzySE не используется. 2-я (”72,88”) — координаты курсора. Она - то нам и нужна. Запоминаем эти числа и переходим в DizzySE.

В DizzySE переходим в меню Разное → Калькулятор глобальных координат в локальные.

Откроется окно калькулятора.

В поля «Координаты в редакторе» вводим координаты из DizzyAge:

 

 

Теперь переходим в меню Редакторы → Скрипты.

Откроется окно редактора скриптов (с этим редактором в дальнейшем придётся работать очень много).

 

 

Находим строки gameset(pl_x,112), gameset(pl_y,96) и gotoroom(0,1).

Вписываем вместо стандартных значений то, что получили в калькуляторе. Например:

gameset(pl_x,72), gameset(pl_y,88) и gotoroom(0,0)

Нажимаем кнопку F5 или переходим в меню Правка → Компиляция.

В любом случае, если вы не допустили ошибок, то в окне журнала скриптов появится нечто вроде этого. Иначе появится сообщение об ошибке.

Компиляция начата: 11:2:21

Компиляция окончена: 11:2:21

Offset  CMD  ARGS

d2aa   11   1a, 0, 0, 0,

d2af   11   13, 0, 0, 0,

d2b4   11   0, 0, 48, 0,

d2b9   11   1, 0, 58, 0,

d2be   2b   0, 0, 0, 0,

d2c3   11   13, 0, 1, 0,

d2c8   fe  

В принципе, на этом этапе можно попытаться собрать игру и посмотреть, что получилось.

Сохраняем проект. Файл → Проект → Сохранить или Alt+S.

Переходим Файл → Собрать проект или просто нажимаем Ctrl+3.

Должно появиться, а потом исчезнуть окно DizzyAge, а через какое-то время откроется окно проводника с файлом game.trd. Запускаем и смотрим.

 

 

Пустовато, не находите? Давайте добавим каких-нибудь объектов.

 

 

Оформление

Переключаемся обратно в DizzyAge и переходим на 2-й слой.

Нажмите клавишу P и установите:

  • type = static
  • material = air

Нарисуйте несколько фоновых объектов разными кистями.

В конечном итоге должно получиться что-нибудь в этом роде.

 

 

Названия комнат

У нас есть две комнаты, но они всё ещё никак не называются. Давайте это исправим.

Переходим в DizzySE toolset и открываем редактор названий комнат: Редакторы → Названия комнат.

Откроется форма редактора с таблицей, как в экселе. В ячейки этой таблицы нужно записать названия комнат:

 

 

Закрываем форму, сохраняем проект, собираем игру и снова смотрим что у нас получилось.

 

 

Предметы

Давайте добавим несколько предметов в игру. Пусть это будут: сыр, старый сапог и монетка.

Откроем окно редактора текстов (Редакторы → Диалоги):

Жмем на кнопку «создать новый диалог» (левый-нижний угол, с изображением белого листа). В список диалогов добавится новый, под номером 7, и курсор перейдет в окно редактирования диалога.

Пишем «Сыр».

Отцентруем этот диалог под окно инвентаря: Операции над текстом → Выровнять под ширину инвентаря.

Жмем кнопку с дискетой и сохраняем изменения текущего диалога.

Делаем тоже самое еще раз, только на этот раз добавляем «старый сапог».

Переходим в редактор DizzyAge.

Открываем окно тайлсета и выбираем сыр. Устанавливаем настройки кисти:

 

  • type         -     dynamic
  • id           -     1
  • material     -     air
  • class        -     item
  • status       -     0
  • user0 (1я кнопке во вкладке user)     =     7 (это номер диалога, который будет использоваться в качестве названия предмета)

 

Рисуем кисть с сыром в левом экране.

Выбираем в окне тайлсета сапог и меняем настройки кисти:

 

  • id        -     2
  • user0     -     8

 

Остальное оставляем без изменений.

Рисуем сапог на правом экране.

Выбираем в окне тайлсета монетку.

Меняем настройки кисти:

 

  • class     -     coin

 

Рисуем монету где-нибудь.

Теперь можно сохраниться и попробовать собрать игру.

 

 

Логика

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

Установим параметры кисти:

  • id             -     1
  • type           -     dynamic
  • material       -     air
  • colllider      -     none
  • class          -     action
  • status         -     0 
  • user0          -     2 (в данном случае это будет номер скрипта)

 

Нарисуем Крыса с этими параметрами где-нибудь на правом экране.

Теперь нужно создать несколько диалогов по аналогии с названиями предметов только без выравнивания под инвентарь:

 1)     Эй, мелкий, дай сыру, а иначе укушу!

 2)     Это не сыр! Кусь

 3)     Ай!

 4)     Сырочек, ням ням.

 

Открываем окно редактора скриптов и создаем новый скрипт (левый-нижний угол редактора, кнопка с белой страницей).

Появляется окно ввода названия скрипта.

Вводим название, жмём ОК.

В нашей ситуации хорошо подходит типовой скрипт с предметами. Его и применяем

(меню: Правка → Типовой скрипт с предметом).

После строк: «//не говорили      //Сюда вставляем свой код» пишем:

 

          showmessage (2,9,9,cl_white,cl_green,1)

 

Пройдёмся кратко по параметрам: 

  • 2               -     Координата X сообщения
  • 9               -     Координата Y сообщения 
  • 9               -     Номер диалога
  • cl_white        -     Цвет рамки
  • cl_green        -     Цвет текста 
  • 1               -     Сообщение нужно выводить с рамкой

 

Находим строку «ne(ret,10,wrong)» и меняем 10 на 1 (или какой ID вы указали у сыра)

После строк: «//правильный предмет     //Сюда вставляем свой код» пишем

 

     showmessage(4,11,12,cl_white,cl_green,1)

     objset(this,o_disabled,true)

 

Функция objset служит для изменения параметров объектов.

  • This          -     смещение на объект. В данном случае this — переменная, в которой хранится смещение на объект из которого запущен скрипт.
  • o_disabled   -     статус предмета вкл/выкл. Выключенный предмет не рендерится и не взаимодействует с Диззи и окружающей средой.
  • True          -      значение, которое мы хотим записать в поле o_disabled.

 

И последнее. Находим строки: «//неправильный предмет //Сюда вставляем свой код» и пишем после них

 

     showmessage(8,8,10,cl_white,cl_green,1)

  showmessage(10,12,11,cl_purple,cl_blue,1)

 

Сохраняем скрипт и пробуем его компилировать. При необходимости исправляем ошибки.

Полностью готовый скрипт должен выглядеть так:

 

set(j,ret)

ne(ret,0,item) //это уже повторное срабатывание и применение предмета

     objget(this,O_STATUS)//проверим говорили с ним или нет

     eq(ret,0,talk)

          set(ret,0) //повторное нажатие без предмета

          goto(exit)

     talk:     //не говорили

          //Сюда вставляем свой код

          showmessage (2,9,9,cl_white,cl_green,1)

          //--------------------

          objset(this,O_STATUS,1)

          set(ret,255)

          redraw_screen()

          goto(exit)

item:// применили предмет

          itemget(j,I_ID)

          ne(ret,1,wrong)

          //правильный предмет

          //Сюда вставляем свой код

          showmessage(4,11,12,cl_white,cl_green,1)

          objset(this,o_disabled,true)

          //--------------------

          set(ret,255)

          removeitem()

          redraw_screen()

          goto(exit)

     wrong:

          //не правильный предмет

          //Сюда вставляем свой код

          showmessage(8,8,10,cl_white,cl_green,1)

          showmessage(10,12,11,cl_purple,cl_blue,1)

          //--------------------

          set(ret,255)

          redraw_screen()

exit:

 

 

Сохраняем проект и собираем игру.

Попробуйте побеседовать с Крысом, а потом предложить ему сапог вместо сыра, а потом уже дать сыр.  Так же можно написать gameset(PL_GAME_OVER,true) после objset(this,o_disabled,true), тогда игра завершится и выйдет в главное меню после того, как Диззи отдаст Крысу его сыр.

 

Created with the Personal Edition of HelpNDoc: Free help authoring tool