On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Сообщение: 20
Зарегистрирован: 19.05.07
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.05.07 10:41. Заголовок: Dark Basic для начинающих


ЧАСТЬ I : Первые приготовления.
Прежде чем начать, нам нужно запустистить Dark Basic Professional и
написать в нем первые строки будущего проекта :) Итак, вот порядок
действий:

- Открыть Dark Basic Pro
- Создать новый проект, если вы еще не сделали этого (File->New Project)
- Щелкнуть в главном окне редактора кода
- Написать следующие строки:

'Мой первый FPS
'Автор [имя]
'Дата [текущая дата]

Не забудьте заменить [] на ваше реальное имя (ник) и дату.
Знак апострофа ' дает Dark Basic'у знать, что за ним следует комментарий. Все, что будет написано за знаком, компилятор игнорирует. Очень полезно будет хоть иногда комментировать свой строки, описывать действия, которые они делают. Это поможет вам не запутаться в собственном коде, а такое, поверьте, бывает очень часто, например когда вы возвращаетесь к давнему проекту :) Также для комментариев можно использовать комманду REM. Она работает также, как и апостроф. Если вы нуждаетесь в многосрочном комментарие, нужно использовать комманды REMSTART и REMEND. Как они работают, мы можем убедиться на следующем примере :

REM Это комментарий
REMSTART Это первая линия многострочного комментария
Это воторая линия комментария, она также игнорируется компилятором
REMEND Все что находится здесь компилятор ПРОВЕРЯЕТ, считая это за код.

Часть II : Основы.
Хорошо, теперь нам нужно сделать основу будущей игры, которая включает:

- Установка пользовательских опций
- Создание всех необходимых обьектов для нашей игры
- Добавление управления
- Коммнетирование всего вышеперечисленного :))

Пункт 1 : Установка Пользовательских Опций
Может название не очень подходит к этому пункту, однако ничего лучше я придумать не смог :) Итак, нам нужно сделать настройки, о которых игрок и не задумывается в процессе игры. Это такие настройки, как : скрыть указатель мышки, изменить частоту обновления экрана и т.д.

Напишите в редакторе кода следующие строки, после тех, что мы писали в прошлом уроке:

SYNC ON
SYNC RATE 0
HIDE MOUSE

Вот и наши первые настоящие команды языка Dark Basic Professional! Команда SYNC обновляет экран. Просто и ясно. Комманда SYNC ON делает возможным задать частоту обновления экрана самостоятельно. Чем больше частота обновления, тем быстрее будет работать ваша игра.

SYNC RATE 0 задает частоту, с которой экран должен обновляться. Теперь вы можете сделать на свое усмотрение, сколько раз экран должен обновиться, если измените значение SYNC RATE 0 на какое-нибудь другое. Например, если вы измените значение на 60, получиться SYNC RATE 60 - это значит, что экран будет обновляться со скоростью 60 кадров в секунду. Это хорошо, но некоторые компьютеры не поддерживают частоту обновления экрана, равную 60. Однако, команда SYNC RATE 0 задает максимально возможную частоту для текущего компьютера и, следовательно, исключаем неполадки с совместимостью.

Наконец, команда HIDE MOUSE скрывает указатель мыши с экрана. Вы не будете видеть его в своей игре, что делает ваш FPS более профессиональным, не так ли? :))

Пункт 2 : Создаем необходимые обьекты
Сейчас мы уже установили пользовательские опции и можем приступить к созданию обьектов, которые будем использовать в игре. Мы делаем нес ложную FPS, а только полностью работоспособную основу, значит мы не будем использовать сложные 3D модели для персонажа, врагов и т.д. Ограничимся лишь сферами для игрока и противника и кубиками (коробками:)) для неподвижных обьектов.

Для начала нужно сделать главного героя, или игрока. Пропустите вниз одну-две линии и напишите следующие строки:


MAKE OBJECT SPHERE 1,50
COLOR OBJECT 1,RGB(000,255,000)

Первая строка кода содает сферу, как обьект типа OBJECT. Каждый обьект в Dark Basic Professional должен иметь свой уникальный номер. В игре не должно встречаться обьектов с одинаковыми номерами. Итак, опишем детально первую строку:
MAKE комада говорит компилятору, что нужно что-то создать.
OBJECT команда, говорит компилятору, что это именно обьект, а не камера, источник света и др..
SPHERE задаёт, каким должен быть обьект, то есть сферой или шариком.
1 - уникальный номер обьекта.
50 - диаметр нашей сферы

Следовательно, компилятор создаст сферу со своим размером и номером. Также, этот умный компилятор поставит сферу в начало координат X,Y,Z, т.е. на 0,0,0.(X,Y,Z основные координатные оси в игре. X обозначает положение обьекта по горизонтали, Y по вертикали, Z - в глубину.)

Вторая линия добавляет больше информации об обьекте. Мы изменяем его цвет, чтобы отличать от других обьектов.

команда COLOR OBJECT говорит компилятору, каким цветом должен быть обьект. цифра 1 говорит, что это обьект 1(то есть наша сфера). Если мы изменим значение на 2, то получим ошибку, так как обьекта 2 не существует. Команда RGB(000,255,000) задает наш цвет. R - красный, G - зеленый, B - синий. Каждый цвет имеет промежуток от 0 до 255. Мы придаем зеленому цвету максимальное значение и в то же время понижаем красный и синий до минимума. Поэтому наша сфера будет зеленой.

Хорошо, мы сделали игрока. Теперь настало время сделать еще один обьект для противника - надо же с кем-то сражаццо :). Также сделаем стенку из кубика (коробки:)) - нужно же какое-то разнообразие. Итак, напишите следующие строчки:

MAKE OBJECT SPHERE 2,50
COLOR OBJECT 2,RGB(255,000,000)
POSITION OBJECT 2,130,0,0

Этот код очень похож на предыдущий. Единственное различие это в цвете и номере обьекта. Но здесь использована новая команда POSITION OBJECT которая позиционирует обьект в заданные координаты по X,Y,Z осям. Мы указываем номер обьекта и, собственно, его позицию.

Настал черед стенки :). Вот код:

MAKE OBJECT BOX 3,100,100,5
POSITION OBJECT 3,0,0,150

Только что мы сделали коробку (параллелепипед:) вместо сферы. Ей нужно больше параметров, в отличие от сферы. А это - ширина, высота и длина. Мы сделали стенку довольно плоской и широкой, почти как настоящую:)). Также опять использовали POSITION OBJECT и установили позицию стенки впереди нас.

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

POSITION CAMERA 0,500,-500
POINT CAMERA 0,0,0

DO

IF UPKEY()=1 THEN MOVE OBJECT 1,.5
IF DOWNKEY()=1 THEN MOVE OBJECT 1,-.5
IF LEFTKEY()=1 THEN TURN OBJECT LEFT 1,.7
IF RIGHTKEY()=1 THEN TURN OBJECT RIGHT 1,.7

SYNC
LOOP

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

Команда DO одна из самых важных в программе. Эта команда начинает главный цикл программы. Програмный цикл - это список действий, которые программа проделывает постоянно, все время своей работы. Когда она переходит на последнюю строку в цикле, то, завершив её, переходит на первую. Потом все действия повторяются заного до тех пор, пока программа не завершится. Каждый цикл начинается команой DO и заканчивается командой LOOP. Перед коммандой LOOP обязательно ставим SYNC. Она обновляет экран. Без этой комманды мы не будем видеть никаких изменений на экране.

Внутри цикла мы поместили несколько основных строк для управления пережвижением нашего игрока, тоесть красного шарика. Можно представить процесс программирования как серию вопросов с ответами да или нет. Мы спрашиваем компьютер с помощью команды IF и если утверждение верное, то комманда возвращает true (истина, так же true соответствует число 1). А если утверждение ложное, команда возвращает false (ложь, также false соответствует любое число, не равное 1).

Первую команду управления можно представить так:

ЕСЛИ(IF) КЛАВИША ВВЕРХ(UPKEY) нажата (то есть значение её равно 1), тогда(THEN) переместить(MOVE) обьект(OBJECT) с номером 1 на 0,5 (в Dark Basic можно опускать число целых, если оно равно 0) в заданном направлении. Кроме команды MOVE есть команда TURN, не перемещающая обьект, а вращающая его вокруг своей оси. К команде TURN добавляется LEFT, если вращаемся в левую сторону, и RIGHT, соответственно в правую сторону.

DBP имеет встроенные имена для основных кнопок клавиатуры, таких как Arrow Keys, Spacekeys, Esc, и т.д. Но для кнопок с буквами или цифрами вы можете пользоваться коммандой KEYSTATE().

Запомните, что для каждого IF утверждение должно быть свое THEN утверждение, если вы хотите получить ответ с одной строки. Для многострочных IF THEN конструкций используется команда ENDIF. Вот пример использования команды ENDIF. Не печатайте это в редакторе кода, просто посмотрите пример:

IF UPKEY()=1
MOVE OBJECT 1,.5
ENDIF

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

Другие IF конструкции похожи на первую, исключая то, что они для других клавиш, задающих направление движения.

Хороший момент для обьяснения такой классной штуки, как разделители (":"). Их используют, чтобы собрать несколько действий в одну строку. Это делает код меньше, однако менее понятнее.

Итак, все что мы написали за это время:

`Мой первый FPS
`Автор [ваше имя]
`Дата [текущая дата]

SYNC ON
SYNC RATE 0
HIDE MOUSE

MAKE OBJECT SPHERE 1,50
COLOR OBJECT 1,RGB(000,255,000)

MAKE OBJECT SPHERE 2,50
COLOR OBJECT 2,RGB(255,000,000)
POSITION OBJECT 2,130,0,0

MAKE OBJECT BOX 3,100,100,5
POSITION OBJECT 3,0,0,150

POSITION CAMERA 0,500,-500
POINT CAMERA 0,0,0

DO

IF UPKEY()=1 THEN MOVE OBJECT 1,.5
IF DOWNKEY()=1 THEN MOVE OBJECT 1,-.5
IF LEFTKEY()=1 THEN TURN OBJECT LEFT 1,.7
IF RIGHTKEY()=1 THEN TURN OBJECT RIGHT 1,.7

SYNC
LOOP

А здесь то же самое, только в сжатом варианте, с использованием разделителей.

`Мой первый FPS
`Автор [ваше имя]
`Дата [текущая дата]

SYNC ON:SYNC RATE 0:HIDE MOUSE

MAKE OBJECT SPHERE 1,50:COLOR OBJECT 1,RGB(000,255,000)

MAKE OBJECT SPHERE 2,50:COLOR OBJECT 2,RGB(255,000,000):POSITION OBJECT 2,130,0,0

MAKE OBJECT BOX 3,100,100,5:POSITION OBJECT 3,0,0,150

POSITION CAMERA 0,500,-500:POINT CAMERA 0,0,0

DO

IF UPKEY()=1 THEN MOVE OBJECT 1,.5
IF DOWNKEY()=1 THEN MOVE OBJECT 1,-.5
IF LEFTKEY()=1 THEN TURN OBJECT LEFT 1,.7
IF RIGHTKEY()=1 THEN TURN OBJECT RIGHT 1,.7

SYNC
LOOP

Вариант с разделителями очень хорошо сжимает код, однако в целях удобства лучше все же использовать обычный код, хотя кому как :)

Пункт 4 : Тестирование игры.
Хорошо, теперь мы имеем неплохую основу для будущей игры. Давайте проверим её. Щелкните маленькую иконку с надписью EXE и смотрите результат. Компилятор переведет программу в машинный код и мы сможем запускать её на других компьютерах, т.е. получим готовый .exe файл. Программа готова!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]


администратор




Сообщение: 75
Зарегистрирован: 19.05.07
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.05.07 11:54. Заголовок: Re:


Осваиваем DarkBasic за 15 минут


Выполнение вашей первой команды

После того, как вы запустите оболочку языка программирования Dark Basic, вы увидите общий интерфейс программы. В правом верхнем углу находятся большие желтые кнопки, одна из которых предназначенна для выхода из программы, а вторая для в CLI (Command Line Interface - интерфейс командной строки)

Для того, что бы выполнить свою первую программу на Dark Basic, необходимо войти в командную строку. Вы всегда можете использовать CLI для проверки или выполнения каких-либо команд или операторов.

Нажмите кнопку с надписью CLI. После этоко наберите в строчке:

PRINT "Hello World"

Поле того, как вы наберете это выражение, нажмите кнопку ENTER на клавиатуре. Эта кнопка используется для выполнения набранных вами комманд. На экране высветится надпись 'Hello World'. Вы только что выполнили свою первую команду. Что бы вернуться обратно в нормальную оболочку Dark Basic, нажмите кнопку EXIT, которая находится правее.

Создание вашей первой программы

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

DO
PRINT "Hello Again"
LOOP

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

В редакторе кода нажмите F5 для того, чтобы скомпилировать и выполнить программу. После нескольких секутд работы программы нажмите F12 чтобы прервать ее и вернуться в редактор. Вод вы и научились набирать и запускать программы.

Создание второй, более сложной, программы

Вы уже написали свою первую программу за пять минут. Вы можете считать себя настоящим программистом. В предыдущей программе на Dark Basic вы использовали всего три оператора, при этом возможно не зная их смысла. Сейчас вам предстоит испробовать на практике настоящую программу.

Попробуйти написать настоящую, полноценную и работоспособную программу на Dark Basic. Посвятите 30 минут для того, что бы набрать следующий код программы или просто загрузите файл CAVERUN.RAR из справочной системы Dark Basic":

rem ----------------
rem Cave Runner Demo
rem ----------------
rem Author: DBS-LB99
hide mouse

rem Load bitmaps
load bitmap "tiles.bmp",1
get image 1,0,0,256,256
delete bitmap 1

rem Load sound
load sound "hum.wav",1
load sound "explode.wav",2
set sound speed 1,6000
loop sound 1

rem Load music track
load music "caverun.mid",1
loop music 1

rem Activate manual sync
sync on
rem Make landscape and ceiling matrix
make matrix 1,2000,5000,10,25
prepare matrix texture 1,1,2,2
make matrix 2,2000,5000,10,25
prepare matrix texture 2,1,2,2
fill matrix 2,0,2
randomize matrix 2,350.0
for t=0 to 25
set matrix height 2,0,t,-100
set matrix height 2,10,t,-100
next t
update matrix 2

rem Bagin game loop
do

rem Set seed for same random numbers
randomize 1

rem Clear cave floor
fill matrix 1,0,1

rem Set lighting, fog and setupset ambient light 20
fog distance 3000
color backdrop 0
fog color 0
fog on

rem Reset speed
x=0
z=0
speed#=0.0
rem Begin main loop
repeat

rem Record old variables
oldx=x
oldgy#=gy#

rem Control key movements
if upkey()=1 then speed#=speed#+1.0 else speed#=speed#-1.0
if leftkey()=1 then rz#=rz#+1.0
if rightkey()=1 then rz#=rz#-1.0

rem Control variables
if speed#>40.0 then speed#=40.0
rz#=rz#/1.1
x=x-(2*rz#)

rem Scroll landscape
z=z+speed#
if z>200
z=z-200
if rnd(3)=0
mp=mp-1
mp=mp+rnd(3)
if mp>4 then mp=4
endif
for t=0 to 0 : set matrix height 1,t,24,450 : set matrix tile 1,t,24,2 : next t
for t=1 to mp : set matrix height 1,t,24,rnd(200) : set matrix tile 1,t,24,2 : next t
for t=mp+1 to mp+1 : set matrix height 1,t,24,rnd(200) : set matrix tile 1,t,24,3 : next t
for t=mp+2 to mp+3 : set matrix height 1,t,24,rnd(20) : set matrix tile 1,t,24,1 : next t
for t=mp+4 to mp+4 : set matrix height 1,t,24,rnd(200) : set matrix tile 1,t,24,4 : next t
for t=mp+5 to 9 : set matrix height 1,t,24,rnd(200) : set matrix tile 1,t,24,2 : next t
for t=10 to 10 : set matrix height 1,t,24,450 : next t
update matrix 1
shift matrix up 1
shift matrix up 2
endif
rem Position matrix
position matrix 1,0,0,2500-z
position matrix 2,0,100,2500-z

rem Position camera
gy#=curvevalue(50+get ground height(1,500+x,z),gy#,3)
position camera 500+x,gy#,2500
zrotate camera wrapvalue(rz#)

rem Control sound frequency
set sound speed 1,6000+(speed#*100)

rem Update screen
sync

rem End main loop when collision with ceiling
until get ground height(2,500+x,z)=gy#-75.0

rem Return camera to point before collision
position camera 500+oldx,oldgy#,2500

rem Game Over
play sound 2
for c=0 to 255 step 20
cls rgb(c,0,0)
fog distance (c*5)
fog color (c*256*256)
sync
next c

rem End game loop
loop

Запустите эту программу и узнайте, насколько хорошие программы можно писать на языке программирования Dark Basic.

Компиляция первой программы

Программы, которые ты написал в течении предыдущих уроков могут быть запущенны только в самой среде разработки Dark Basic. Если вы хотите чтобы ваши программы можно было запускать вне Dark Basic-а, то необходимо ее скомпилировать, т.е. сгенерировать в виде кода понятного для компьютера. Также окончательный вариант вашей программы будет включать в себя все используемые ей файлы.

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

Существует два варианта компиляции вашей программы. Первый вариант не сохраняет сохраняет мультимедийные файлы внутри основного звпускаемого файла, а второй сохраняет. Мы рекомендуем использовать второй вариант компиляции для ваших программ.

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


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Сообщение: 76
Зарегистрирован: 19.05.07
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.05.07 12:10. Заголовок: Re:


Создание 3D игры по шагам

Данная статья рассматривает основные особенности создания трехмерных игр на Dark Basic (в основном все нижесказанное можно отнести к трехмерным стрелялкам). Приводится шаблон по которому следует начинать создание игры. Я, как автор этого руководства, решил пойти по следующему пути - последовательно описывать основные составные части 3D игры на Dark Basic, а в самом конце привести краткий итоговый план. Итак, приступим.

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

sync on : sync rate 40
autocam off
hide mouse
draw to front
backdrop on : color backdrop rgb(0,0,0)
fog on : fog color rgb(0,0,0) : fog distance 3000
position camera 6000,200,5000

Далее вы можете написать какой-нибуть вступительный блок, вроде заставки или игрового меню в котором пользователь сможет выбрать уровень сложности, персонажа, карту и многое другое. Приводить пример на dark Basic я не стану, т.к. этот этап не сложен, а его наличие зависит только от вашего желания.

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

load image "water.bmp",1
load image "wall2.bmp",2
load object "level1.3ds",10
make object cylinder 999,50
make matrix 1,10000,10000,50,50

После всего этого подготовительного кода, начинается сама игровая часть игры. Игровую часть в динамичных трехмерных (и не только трехмерных) играх чаще всего реализуют с помощью цикла DO ... LOOP.

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

do

- Обработка ситуации компьютером
- Отслеживание нажатых клавиш и передвижения мыши
- Обновляем положение камеры, игроков
- Проверяем действия на наличие ошибок
- Выводим очередной кадр нашей игры на экран

loop

В двух словах все выше сказанное можно представить как:


Настройка игры
Меню
Загрузка всего необходимого
Начало основного цикла
Обработка игровой ситуации
Возвращаемся на начало цикла

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Сообщение: 77
Зарегистрирован: 19.05.07
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.05.07 12:12. Заголовок: Re:


Создание простой игровой карты


В статье вы прочтете, как создать простенькую карту уровня для своей игры. Общее описание сопровождается примерами на Dark Basic. Мы рассмотрим карту, которая автоматически генерируется самой программой.

Основой любого уровня является карта местности, а основой любой карты является матрица. Самым первым этапом считается создание произвольной матрицы N, размерами X на Y, состоящей из CX на CY сегментов.

make matrix N,X,Y,CX,CY

После этого мы загружаем текстуру карты и накладываем ее на нашу вновь созданную матрицу:

load image "image1.bmp",A
prepare matrix texture N,A,1,1

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

randomize matrix N, Z

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

update matrix N

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


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, опрос нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



WireNet (Phoenomix)

WireNet (Phoenomix)
Клуб профессиональной дрессировки собак Tools of Death - Энциклопедия орудий смерти! Сайт затрагивает тему смерти, и все что с ней связано. Рассматривается все то, что нас убивает. Создай свою игру или скачай готовую Создание сайтов, анимаций, потретов. Уникальные рисованные сайты Мужской форум SmehOff Фан-форум Уилла Смита Обмен кнопочками находится здесь! Заходите и станьте нашим другом!
Первый электротехнический поиск TOPlist минск, поиск информации