Отправляет email-рассылки с помощью сервиса Sendsay

Новости сайта www.dyda.info

  Все выпуски  

DarkBASIC - легко создаем 3D миры и игры!


Информационный Канал Subscribe.Ru


Рассылки Subscribe.Ru
Старые игры
Номер 4/июль 2002
От редактора

  Прошу обратить внимание на рассылку "Старые игры" (вверху). Постоянно обновляемая коллекция старых компьютерных игр (начало 80-х - середина 90-х) с возможностью их загрузки. Quake, Doom, Larry, Worms, Elite и еще более 1000 полных версий старых игр! Советую подписаться! :-)

  Нахожусь под впечатлением от программы Magic World. О ней вы прочитаете в новостях. Если будет нужно - напишите мне и в следующем номере рассылки я постараюсь ответить на ваши вопросы и полнее раскрыть тему практического использования данного редактора.

  Заканчиваю публиковать цикл статей по ПРИНЦИПАМ программирования и продолжаю публикацию следующих уроков по ОСНОВАМ программирования.

  Примите участие в опросе!

  Замирая в глубоком пардоне, Илья Середа.

Dark Basic
Занимаетесь ли вы созданием собственной игры?
Результаты голосования

Другие голосования

Содержание номера:

      1. Новости.

      2. Основы программирования.

      3. Вопросы и ответы.




Новости

  Недавно зашел на частный сайт уважаемого inF!n1ty и нашел ссылку на замечательную программу Magic World. Это редактор 3D-миров написанный на языке DarkBASIC, с помощью которого вы освободитесь от рутины создания игрового пространства и больше посвятите себя программированию сюжета своей игры, эффектам и прочим фичам. Не видя Cartography Shop, описанную в предыдущем номере, могу предположить, что Magic World по своей функциональности аналогична, только еще и бесплатная! Хотя возможно Cartography Shop - это для профессионалов, тогда как автор Magic World позиционирует свое творение, как редактор для начинающего и среднего уровня. А теперь несколько слов о самом редакторе.
  Magic World позволяет создавать матрицы и управлять ими: оччень легко создавать плавные горы и впадины, "раскрашивать" матрицу и пр. Вам потребуется всего пара минут, чтобы сделать гладкие волнистые холмы и долины, крутые горы, пустыни...

  Работает он и с дополнительными источниками света, например, вы можете поставить на матрице фонарь и он будет освещать вокруг себя. Классно работает с 3D-объектами: масштабирование, повороты во все стороны света :-), наложение текстур и прочее и прочее. Короче делает все! Или почти все! ;-) В управлении редактора на 99% используется "мышка". А когда вы закончите создавать мир, то Magic World запишет его данные в файл .mwdb и затем вы можете этот мир загрузить, просто использовав в тексте своей програмы новую функцию LOADWORLD(). Magic World понимает 3D-миры сделанные в другом редакторе - MatEdit (v1.5). Редактор 3D-миров Magic World снабжается подробным help-ом.
  Только все это на английском языке - и помощь и сам редактор. :-| Может быть к следующему выпуску рассылки автор Magic World позволит мне сделать русскую версию с русскими файлами помощи. В этом случае, русская версия Magic World будет доступна с моего сайта. Подождем и посмотрим, что нам ответит Robin - письмо мое он уже получил. А пока, вы можете скачать английскую версию этой программы весом 1.1 Мегабайта.



  С помощью редактора Magic World я делаю мир для своего проекта "Атмосфера". Что интересно, так это то что матрица 15000 на 15000 вместе с рельефом местности у меня заняла что-то около 30 килобайт! Вот несколько скриншотов из моего мира. Если он мне понравиться, когда будет полностью готов, то скорее всего я напишу игру в стиле приключений. Посмотрим. Пока готово только небольшое поселение, участок с водой и горами - занимает это, примерно 3% от территории всей местности. Если вам будет интересно - напишите об этом мне, и я буду время от времени выкладывать свои скриншоты с новых мест моего мира.




  Как заявляют разработчики, видеоролик готов на 98% и скоро мы его увидим, а "прогресивный файтинг будет готов к следующей неделе". Ну что-ж, ждем! :-) А пока, несколько новых скриншотов от Crow Interactive.





Основы программирования.

  Продолжаю цикл начальных уроков по программированию и, естественно, созданию своей игры в замечательной системе DarkBASIC.
  Сегодня заканчиваю цикл статей по ПРИНЦИПАМ ПРОГРАММИРОВАНИЯ.

ВСТРОЕННЫЕ ФУНКЦИИ И ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ

ВСТРОЕННЫЕ ФУНКЦИИ

Функции можно сравнить с командами, возвращающими значение. В DarkBASIC используются арифметические и символьные функции, функции, зависящие от команды, а также функции пользователя. Всем им присущи общие черты, которые помогают узнать их в тексте программы и определить, для чего они предназначены.

Простой арифметической функцией является команда ABS. Она принимает отрицательное значение и превращает его в положительное:

Результатом этого выражения будет 100.

Та же функция может применяться в вычислениях:

A = B + ABS(-100)

Или использоваться с переменной:

A = ABS( B )

Либо использоваться как часть выражения отношения:

IF ABS( A ) > 180 THEN PRINT "правильно"

Вы уже знаете, как применять переменные вместо обычных чисел и символьных строк. Точно таким же образом можно использовать и функции. Как видно из примера, функции могут принимать данные, но это не обязательно. Некоторые из них просто возвращают значение:

DO
PRINT TIMER()
LOOP

Обратите внимание, что даже если не требуется указывать параметр, скобки после имени функции обязательны. Скобки сообщают DarkBASIC, что это функция, и позволяют отличить ее от переменной. В отличие от имен переменных и массивов, функции требуется символ доллара ($) только в том случае, если она возвращает символьную строку. Если функция возвращает вещественное значение, символ решетки (#) ставить необязательно.


ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ

Умение писать функции -- неоценимо. Без них опытные программисты не могли бы создавать эффективные программы. Хотя в DarkBASIC для совместимости и в целях обучения оставлены GOSUB и подпрограммы, мы надеемся, что вы в скором времени научитесь использовать функции.

Функции -- это блоки операторов, которые, как правило, выполняют часто применяемые рекурсивные и обособленные задачи. Переменные и массивы, используемые в функциях, отделены от остальной части программы. Если в функции встречается имя переменной FRED, оно не будет влиять ни на одноименную переменную, объявленную в основной программе, ни на имя переменной FRED, если оно встретится в другой функции. Это несколько усложняет процесс кодирования, но заставляет подумать, как разбить программу на изолированные друг от друга задачи, что само по себе крайне важно.

Функции можно передать до 255 параметров и определить, будет ли она возвращать значение. Функции, не возвращающие значение, могут использоваться в программе как обычные команды.

Объявить функцию очень легко. Введите команду FUNCTION, дайте функции имя, в скобках укажите список параметров и она почти готова. Затем введите нужные операторы и с помощью команды ENDFUNCTION объявите конец функции. Ниже приводится пример объявления функции, возвращающей половину переданного ей значения.

FUNCTION halfvalue(value)
value=value/2
ENDFUNCTION value

Следующее объявление создает функцию, которую удобнее использовать вместо оператора PRINT:

REM Начало программы
BetterPrint(10, 10, "Здравствуй, мир")
END

FUNCTION BetterPrint(x, y, t$)
SET CURSOR x,y
PRINT t$
ENDFUNCTION

ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА, КОММЕНТАРИИ И РАССТАНОВКА ПРОБЕЛОВ

ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА

Зарезервированными словами считаются команды языка программирования. Нельзя присваивать переменным, массивам и пользовательским функциям имена, являющиеся частью языка. Со временем вы научитесь избегать употребления зарезервированных слов в качестве имен.


КОММЕНТАРИИ

В программу можно включать выражения, которые будут игнорироваться при компиляции. Неискушенному человеку это может показаться странным, но в действительности подобная возможность - один из важнейших инструментов программиста. Комментарии (или документация) - это описание того, что программа делает в определенных строках кода.

Хотя Бейсик весьма лаконичен и удобочитаем, при первом чтении не всегда понятно, что именно делает тот или иной блок кода. Не обманывайте себя насчет того, что исходный код, написанный вами, будет вам совершенно ясен. Вернувшись к нему месяца через три и многое подзабыв, вы поймете всю важность комментариев.

Создавая комментарий, постарайтесь кратко изложить то, что делает тот или иной блок программы. Отбросьте подробности, ненужную информацию и комментарии к местам, которые могут быть изменены или удалены. Избегайте длинных описаний, поскольку, скорее всего, вам не хватит времени прочесть их целиком. Комментарии станут мощным инструментом программы, если вы будете пользоваться ими правильно.

Для вставки комментария можно использовать оператор REM.

REM Вывести приветствие для пользователя
PRINT "Здравствуй, мир"

Или символ "апостроф":

` Вывести приветствие для пользователя
PRINT "Здравствуй, мир"

Если нужно закомментировать несколько строк программы, можно избежать добавления REM в начало каждой строки:

REMSTART
PRINT "Здравствуй, мир"
PRINT "Здравствуй, мир"
PRINT "Здравствуй, мир"
REMEND

Все, что находится между операторами REMSTART и REMEND при прогоне программы будет проигнорировано. Эти операторы особенно полезны при отладке программы, так как с их помощью можно убирать целые блоки исходного кода.


РАССТАНОВКА ПРОБЕЛОВ

В отличие от других версий Бейсика, в DarkBASIC очень важно отделять пробелами команды и их параметры, потому что в противном случае программа станет непонятной. Приведем в качестве примера строку:

FOR T=1 TO 10

Ее трудно будет распознать, если написать:

FORT=1TO10

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

ОШИБКИ И ПРЕДУПРЕЖДЕНИЯ

Ошибки, с которыми вы встретитесь при написании и отладке программ, подразделяются на четыре основные группы.

"ОШИБКА СИНТАКСИСА" ('SYNTAX ERROR') означает, что вы пытались скомпилировать программу, но компилятор не понял или не опознал оператор или выражение.

"НЕСООТВЕТСТВИЕ ПАРАМЕТРОВ" ('PARAMETER MISMATCH') означает, что вы пытались скомпилировать программу, но какой-то команде были переданы в качестве параметров неверные данные. Необходимо передавать команде в качестве параметров верные типы данных, и в правильном порядке.

"ПРЕДУПРЕЖДЕНИЕ РЕЖИМА ВЫПОЛНЕНИЯ" ('RUNTIME WARNING') означает, что программа скомпилирована и успешно запущена, но произошла ошибка команды по причине, указанной в предупреждении. Такое предупреждение не будет выводиться в автономной версии программы!

"ОШИБКА РЕЖИМА ВЫПОЛНЕНИЯ" ('RUNTIME ERROR') означает, что программа скомпилирована и успешно запущена, но произошла ошибка команды по причине, указанной в сообщении об ошибке. Подобная ошибка завершит выполнение автономной версии программы!

  Далее следующая пара уроков по ОСНОВАМ ПРОГРАММИРОВАНИЯ. Для более детальной и полной информации - рекомендую обратиться к первоисточникам. А это компания "Медиахаус" и "Руководство пользователя", которое вы получаете в коробке с лицензионным DarkBASIC-ом.

УРОК 3
РЕЖИМЫ ЭКРАНА

Цель этой программы -- определить доступные режимы экрана и дать пользователю возможность выбрать нужный. Выбор режимов экрана зависит от установленной графической карты.

Шаг 1. Определение всех доступных режимов экрана:

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

PERFORM CHECKLIST FOR DISPLAY MODES

Контрольная таблица автоматически заполняется всеми режимами, которые можно использовать с текущей графической картой.

Шаг 2. Вывод данных о режимах экрана из контрольной таблицы:

Количество элементов, хранящихся в контрольной таблице, можно получить с помощью команды CHECKLIST QUANTITY(), а описание режимов с помощью команды CHECKLIST STRING$(Индекс), где Индекс - интересующее вас положение элемента в списке. Для просмотра и вывода всего списка на экран используется цикл FOR NEXT. Обратите внимание, как в выводимую строку можно добавить значение Т:

CLS
FOR T=1 TO CHECKLIST QUANTITY()
PRINT T;" ";CHECKLIST STRING$(T)
NEXT T

Если вы теперь запустите программу, то увидите список режимов, которые выводятся в виде таблицы. Нам нужно дать пользователю возможность выбрать нужный ему режим. Для удобства позволим ему выбирать только режимы с 1 по 9.

Шаг 3. Выбор режимов экрана с 1 по 9:

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

DO
IF ASC(INKEY$())>48
Position=ASC(INKEY$())-48
width=CHECKLIST VALUE A(Позиция)
hight=CHECKLIST VALUE B(Позиция)
depth=CHECKLIST VALUE C(Позиция)
SET DISPLAY MODE ширина, высота, глубина цвета
ENDIF
LOOP

После запуска программы вы сможете выбирать режим экрана из списка и переключаться в него. Обратите внимание, что в этом случае экран очищается. Это очень важный факт. Когда разрешение экрана меняется, все данные из видеопамяти удаляются, включая изображения и текстуры.

Шаг 4. Восстановление экрана:

Восстановить экран после переключения режима очень просто. Всего лишь переместите команду DO из середины программы в ее начало. Теперь ваш основной цикл работает правильно.

Заключительный шаг. Контрольные задания:

1. Измените программу так, чтобы она выводила только 9 режимов экрана.
2. Измените программу так, чтобы дать пользователю возможность выбирать из 99 режимов.
3. Измените программу так, чтобы пользователь не мог выбирать 8-битовые палитры цвета.

УРОК 4
"ХУДОЖЕСТВЕННЫЕ" ПЕРЕМЕННЫЕ

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

Шаг 1. Рисование основных геометрических фигур:

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

CLS
DOT 635,475
BOX 10,10,630,20
CIRCLE 320,240,100
ELLIPSE 320,240,100,200
LINE 120,240,520,240

Шаг 2. Добавление цвета:

Запустив программу, вы заметите, что все фигуры окрашены в один цвет. Белое на черном - цветовая схема по умолчанию, но ее можно заменить на все, что угодно. Чтобы рисовать определенным цветом, нужно вначале создать цветовую схему, а для этого необходимо указать специальное значение цвета. Поскольку оно складывается из красной, зеленой и синей составляющих, его очень трудно определить наугад. Для этой цели существует команда RGB. Она берет по отдельности красную, зеленую и синюю составляющие и возвращает единое значение цвета. Сама команда окрашивания INK требует два значения цвета - первое для изображения, второе для фона. Поместите в начало своей программы следующие строки и посмотрите, что получится.

INK RGB(255,100,0),RGB(0,0,255)

Шаг 3. Использование переменных для рисования:

Использование переменных для рисования на экране само по себе должно быть отдельным предметом обучения. Это основа всей современной компьютерной графики. Чтобы фигура, нарисованная вами на экране, двигалась, нужно ее нарисовать, затем изменить значение ее положения и нарисовать снова. А чтобы она "ожила", нужно, нарисовав ее, изменить значения ее изображения и нарисовать ее снова. В этом суть понятий "движение" и "анимация". Теперь приготовьтесь написать свои первые содержательные строки кода:

v=0
DO
LINE 0,v,v,480
v=v+1
LOOP

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

Шаг 4. От линии к кругу:

Можно нарисовать не только причудливый узор из линий. Замените приведенный выше отрывок кода следующими строками и убедитесь, насколько рисование геометрических фигур подвластно переменным.

v=0
cx=160
cy=120
DO
ox=cos(v)*100
oy=sin(v)*100
v=v+1
DOT cx+ox,cy+oy
LOOP

Заключительный шаг. Контрольные задания:

1. Измените программу так, чтобы поменять размер круга, нарисованного точками.
2. Измените программу так, чтобы поменять цвет точек в круге.
3. Измените программу так, чтобы перемещать центр круга в то время, когда он рисуется.




Вопросы и ответы.

  Программа хорошая. Но оформление действует угнетающе, утомляет. В таком редакторе с черным фоном долго не поработаешь. Существует ли патч (нужно изменить фон и цвет шрифта).
  Воспользуйся программой DarkEdit v1.56 идет в комплекте с Dark Basic-ом.

  Я понимаю, что тут тусуются пользователи DB, но все таки кто нибудь может сказать честно что круче: DarkBasic или Blitz3D?
  Если коротко, то: ДаркБейсик проще и удобнее, Блитц гораздо быстрее. Однако, думаю ситуация изменится после появления ДаркБейсик Про (лето 2002).
--------------------------------
  Я знаю целиком и DB и Blitz. DB - RULEZZZ. BLITZ - SUCKSSSS

  Можно ли в Дарке пользоваться текстурами высокого разрешения и как?
  Ты можешь использовать текстуры любого разрешения. Единственное, что большенство графических карт поддерживает размер текстур 256х256 пикселов, и они будут сами уменьшать качество текстур до поддерживаемого размера. Так что, большого эффекта от текстур с высоким разрешением не будет, только лишь больше будет занимать места в памяти.

  Мне очень интересно подходит DarkBasic для групповой разработки игр, тобишь шобы её делало несколько человек?
  Привет. На твой вопрос я спокойно отыечу ДА. Я глава одной организации которая занимается написанием програм на языке DarkBasic, У меня в команде 10 человек. 3 Програмиста, которые занимаются корнем и управляющими библиотеками программы. 4 художника/дизайнера, 2 звукооператора, 1 руководитель проекта т.е. Я. Потому что написать что-то одному очень тяжело. Нельзя думать сразу в нескальких направлениях. Ничего не получиться и голова будет болеть. Так что лучше всего использовать командный тип разработки. DB такой же язык как и все остальные и по своей внутренней структуре тоже довольно трудно постигаемый, я имею ввиду знание многих команд, и умение с ними работать, потому что зачастую приходиться выдумывать какие то свои функции и способы решения проблем на этапе разработкаи. Так, что команда это сила и дух вашей игры или программы. С уважением Dante McManus

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

  Я - нулевой программист. Есть ли в комплекте DarkBasic уроки, как создать игру с начала и до конца?
  В дистрибутиве есть уроки в книге, как я думаю понятные третьекласснику, от А до Я,по всем азам программирования в DarkBasic, хотя, я думаю лучше учится на примерах людей,кто понимает и желает программировать на этом языке. Язык могуч, хотя имеет некоторые ограничения, которые можно преодолеть с опытом который потребуется для изучения оного. Все что от Вас требуется не зацикливаться на Своем Я. Если что-то не получается, спросите у кого-нибудь об этом. Я постараюсь помочь в том что смогу. Мне интересны все вопросы от Вас, затрагивающие DarkBasic. И если мне получитья реширить некоторые из них, я буду только рад, поскольку мой опыт от этого только прибавится. Насчет уроков, полный объем занимает где-то 18Mb, в сжатом ввиде около 2.5Mb. Но по-этому вопросу тебе следует обратиться к распространителям русской версии DarkBasic, так как они являются правообладателями переводов всей документации к DarkBasic. Я думаю в Их интересах расширить круг пользователей DarkBasic, рекламой для которых может служить данная документация для Demo-версий DarkBasic.

  Я заказал DarcBasik с сервера www.mediahouse.ru у них там продаётся русская версия ?
  Они продают локализованную русскую версию v1.09, хотя уже существует английская версия v1.13

  Приобрел "коробку". Поставил, решил ознакомиться с работой возникла проблема: При нажатие кнопки "CIL" икран превращается в быстро мерцающую бяку.
  Та же самая проблема и у меня, но решается это легко! Вставь в начало кода команду cls (очищает экран) - и все проблемы с миганием решатся

  Насколько реально использовать средства Конструктора 3D игр в DB? Например, можно ли использовать редактор сцен для разработки СЦЕН, доступных из DB?
  А почему нет? Если вы понимаете, как это сделано, то... Если получится, то поделитесь здесь своим опытом! Народ! Кто-нить пробовал так делать?!

  А реально ли создать онлайновую игру с помощью дарк бэйсика????
  Реально. Для этого надо иметь версию 1.13 или подождать выхода Dark Basic Professional

  Народ, а кто-нить знает где ДБ скачать можно, а то вломак покупать.
  Скачать можно пробную версию на английском. Только если у вас проблемы не только с русским языком, то зачем вам это? Поскольку коробочная версия DB дает возможность изучить исходные коды, содержит печатное руководство и учебник и проч., то каков смысл еще что-то "качать"? Или вы уже настолько профи во всем, что вам влом проявить уважение даже к самому себе?
  По-моему за хороший программный продукт отдать 650 руб. вполне может и малоимущий человек. Или "мораль" пиратства не дает тебе это сделать? Может у тебя еще и интернет халявный? Ты посмотри цену DB на com-сайтах, тогда сразу поймешь, что в России цена халявная.

  Че-нить реальное можно замутить или это детский конструктор?
  Не, не конструктор. Только не спутай с "Конструктором 3D игр". Продается в DVD-упаковке, слеплен с использованием DB. Это для детей. Конструктор страшный. Но для детей, наверное, ничего. А DB - вещь. Удобно. Доступно. Ну а если напряги с английским, то без локализации ничего в нем не сделаешь. Перевод хороший. Все понятно. Отличная контекстная справка по каждой команде (редко такое встретишь). В общем, и школьник разберется. А что до продуктов, то демок полно, некоторые - весьма неплохие. Кстати, одна из дем со второго диска комплекта Loco Comotion лежит сегодня в полной версии и пиратском переводе на любом компьютерном лотке.

  Какие музыальные форматы поддерживает Dark Basic, кроме MIDI ?
  mp3


  Если у вас есть, что дополнить или исправить или подсказать -
не стесняйтесь! :-)


Выпуск закончил 11 июля 2002 года в 12:46 мск


(C) 2002 Илья Середа
http://darkbasic.narod.ru - это и так понятно :-)
    http://virland.narod.ru - "Домашняя киностудия"
     http://sereda.narod.ru - "ВАЗ 1111 ОКА"

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное