Начнём с того, что тёмный басик (Тёмный бесик, Dark basic) никак не связан с тёмной академией
Тёмный Басик в народе принято называть
ДартДарк Бейсик, или проще ДБ.
Перед вами самый лёгкий язык программирования в мире, ибо синтаксис его чрезвычайно прост, однако его возможности строго ограничены, в результате чего, написать на нем игру сложно из-за того, что код (не смотря на всю свою лаконичность получается всё равно слишком длинным) а разные куски когда в отдельных файлах он не поддерживает.
И так, лучшее что можно сделать на ДБ это 3д демку игры типа Final fantasy 7-9 (демо боёвки, демо карты мира, демо пары локаций) или мини игру (так же в 3д)
В этой статье я научу вас как примерно работать в DB и что вообще входит в основу программирования на нём.
Любой код начинается с 3х слов:
Sync – синхронизация событий программы с картинкой на экране
Sync rate – частота сокращений экрана (по умолчанию вводим всегда 30 чтоб ФПС работал нормально)
Далее идёт Do – основной цикл
Всё, что после Do будет до посинения повторяться. Т есть уже сам процесс игры мы пишем туда.
Перед Do мы будем писать начальные настройки игры (расставлять объекты, текстурировать их и. т. д.)
В конце когда пишется Sync (делает синхронизацию циклической (необходимо)) за тем Loop (чтоб повторялось)
Вот так выглядит пустая програама на ДБ:
Sync on
Sync rate 30
Do
Sync
Loop
Теперь можем создать сферу.
Добавляем make object sphere 1,100
Создаём объект сферу под номером 1 (номер можно вводить любой, это имя объекта)
100 – это размер. Когда в игре только 1 объект – размер тоже не важен.
Sync on
Sync rate 30
Make object sphere 1,100
Do
Sync
Loop
Задаём переменную по оси Y
Ay# = Object angle Y(1)
Аy# - переменная, по которой будет прослеживаться угол поворота нашей сферы.
Object angle Y(1) – Вращение объекта по оси Y в зависимости от изменений в переменной Ay# (в скобках указан номер объекта)
Sync on
Sync rate 30
Make object sphere 1,100
Do
ay# = Object angle Y(1)
Sync
Loop
Эту часть кода мы ставим после Ду, так как считывать переменную нужно будет постоянно.
Ничего лучше вот этого на Дб написать нельзя.
Далее сделаем так, чтобы при нажатии кнопок: влево и вправо сфера вертелась:
Пишем:
If leftkey() = 1 – проверяет условия если нажата кнопка влево
If rightkey() = 1 – то же самое но с кнопкой вправо
После любого if идёт then
Также понадобится команда wrapwalue – приплюсовывает к переменной число.
Выглядит так:
If leftkey() = 1 then ay# = wrapwalue(ay#+5)
Соответственно
If leftkey() = 1 then ay# = wrapwalue(ay#-5)
Принято писать так, но я лично всегда пишу это страшное врапвэлью с ошибками и потому предпочитаю просто так
If leftkey() = 1 then ay# = ay#+5
Правда я не проверял, работает ли так)))
Вот что получилось:
Sync on
Sync rate 30
Make object sphere 1,100
Do
ay# = Object angle Y(1)
If leftkey() = 1 then ay# = wrapwalue(ay#+5)
If leftkey() = 1 then ay# = wrapwalue(ay#-5)
Sync
Loop
Но объект вращаться не будет
Нужно добавить вот такое: Yrotate object 1,ay# - оно заставит вращаться по оси и-грек.
Sync on
Sync rate 30
Make object sphere 1,100
Do
ay# = Object angle Y(1)
If leftkey() = 1 then ay# = wrapwalue(ay#+5)
If leftkey() = 1 then ay# = wrapwalue(ay#-5)
Yrotate object 1,ay#
Sync
Loop
Ну вот.
Теперь можно затекстурировать этот объект под глобус и будет типа глобуса))
Железная логика.
Для текстурирования нужно чтобы проект был сохранен и имел конкретный фолдер.
В фолдер скидываем картинку, на пример с текстурой планеты.
Пускай она зовётся 1.jpg
Load image “1.jpg”,1 – 1 после запятой – номер изображения.
Texture object 1,1 – текстурируем объект (номер объекта, номер текстуры)
Вот так:
Sync on
Sync rate 30
Make object sphere 1,100
Load image “1.jpg”,1
Texture object 1,1
Do
ay# = Object angle Y(1)
If leftkey() = 1 then ay# = wrapwalue(ay#+5)
If leftkey() = 1 then ay# = wrapwalue(ay#-5)
Yrotate object 1,ay#
Sync
Loop
ДБ славится своей лаконичностью, в отличие от С++ или Руби.
На нём можно делать не только 3д, но и 2д игры и демки.
В следующей статье о создании игр вы узнаете о функциях поподробнее.