Очень странно, что никто не создал эту тему до меня.
И так, коротко о...
Начнём с того, что тёмный басик (Тёмный бесик, Dark basic) никак не связан с тёмной академией
Тёмный Басик в народе принято называть [strike]Дарт[/strike]Дарк Бейсик, или проще ДБ.
Перед вами самый лёгкий язык программирования в мире, ибо синтаксис его чрезвычайно прост, однако его возможности строго ограничены, в результате чего, написать на нем игру сложно из-за того, что код (не смотря на всю свою лаконичность получается всё равно слишком длинным) а разные куски когда в отдельных файлах он не поддерживает.
И так, лучшее что можно сделать на ДБ это 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д игры и демки.
В следующей статье о создании игр вы узнаете о функциях поподробнее.
Добавлено (23.05.2010, 22:56)
---------------------------------------------
Примеры уже созданых на нём игр:
Существует 2 версии ДБ: классик и про.
Всем рекомендую классик:
Как известно, в ДБ можно использовать 3д обхекты форматов: 3ds, x
3дс можно получить путём экспорта из 3д макса,
Х - тоже через макс, но уже через панда-конвертор.
В объектах строго должны быть отлажены точки привязки povot.
Вот яркие примеры ДБ классик игр, где используются объекты:
1) Эквилибриум (равновесие) знаменитая, игра-демка похожая на ФФ8, которую так долг оместал переплюнуть стармар, но так и не дописал свой код.., однако переплюнул по графике))
Игру создали несколько англоязычных разрабов, именующих себя командой Magic.
В самом деле очень красивая демка, вам предстоит побить могучего огра от лица паренька с двуручником по имени Широ [strike](не попсовое имя)[/strike]
Скачать можно тут:
http://rpg-maker.info/index.php?option=com_remository&Itemid=68&func=fileinfo&id=195
2)Тёмный Мир.
Игра, посвящённая приключениям великого шарика по мрачному средневековому миру фентези. Аж полная версия (по крайней мере до конца никто неё не дотерпел проходить) Очень сложные головоломки, хорошая физика.
Скачать тут: http://depositfiles.com/files/ln8cibivh
3) Тактическая игра: Элементальный мир.
Это моя игра, точнее демка, которую я написал 2 года назад. По идеи это должен был быть тактический фентези файтинг между 5 чародеями, с 2мя режимами история и игрок против игрока (с одного компа с одной клавы) но лень взяла своё и игра стала демкой
Нужно наступить на врага раньше чем он наступит на тебя.
Скачать - можно не смотря на свои достижения в программизме я пока не могу понять руби)
ССылка тут:
http://rpg-maker.info/index.php?option=com_remository&Itemid=68&func=fileinfo&id=196