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

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

  Все выпуски  

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


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


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

  На сегодня две главные новости - это выход DarkBASIC Professional и интервью с российскими разработчиками Crow Interactive. Читайте ниже!

  Также хотел бы порекомендовать две книги. Они не посвещены программированию на DarkBASIC-е, но, как мне кажется, расскажут вам, как создаются игры во всем их многообразии, как выбираются сюжеты и возможно подскажут вам свои.
Фотки нет... Компьютерные игры: как это делается
Зальцман М.


Цена: 334.00 руб.

Количество страниц: 544
Издательство: Русская Редакция
Формат: 168х240
Дата выпуска: 2000
Прекрасная книга! Это настоящая находка для разработчиков игр.Огромное количество полезных советов.
Создание компьютерных игр без программирования (+CD) Создание компьютерных игр без программирования (+CD)
Эхерн Л.


Цена: 196.00 руб.
Серия: Для пользователей
Количество страниц: 304
Издательство: ДМК
Дата выпуска: 2001
Для создания своей игры необязательно быть программистом.
Оформить покупку вы можете просто - нажмите на название книги и попадете в интернет-магазин "Болеро". Я у них покупаю уже более 2 лет и сервисом доволен, так что вашу покупку пришлют точно, можете не сомневаться. :-)

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


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

      1. Новости.

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

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




Новости

  Наконец-то, дождались! :-) Открылся самый оффициальный сайт :-) по DarkBASIC Professional. Вы также можете видеть внешний вид коробки и цену в 69.99$ за обновление с предыдущей версии и 99,99$ если вы покупаете в первый раз. В настоящее время принимаются предварительные заявки. В продажу профессиональная версия поступит в середине августа 2002 года. Ну что, пора забрасывать невод в сторону "Медиахауса"! Вот еще "парочка" адресов... :-)

Как заявляют разработчики, графическое ядро претерпело изменения в лучшую сторону. Например, P3-850 с 8Мб видюхой выдавал 65 кадров в секунду при прокручивании AVI-шки в качестве наложенной текстуры на объекты (что само по себе новое). Ну это касается 3D. А вот в 2D ... игры работают тоже намного быстрее. Как заявили разработчики, "дни медленного 2D закончились!". И, кстати, примите участие в тематическом опросе:

Dark Basic
Собираетесь ли вы покупать DarkBASIC Professional ?
Результаты голосования

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


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

  Компания. Название Crow Interactive. В нее входят 8 человек, 1 руководитель проекта (т.е. Dante McManus), 2 программиста, 4 дизайнера, 1 звукооператор.
  Основали мы ее год назад. Благодаря пиву TALLER которое нас надоумило, сделать команду. Мы собрались, и сели просто поболтать. Никто и не предполагал, что так все обернется. Мы игроманы, слава богу. И поговорить о последних новинках, это для нас довольно интересный разговор. И так и договорились. Понимаешь, в каждой игре даже самой классной, можно найти миллион недостатков, которые просто портят игру. Многолетний опыт игровой индустрии, просто уже настолько отработан, что смотришь на игру и буквально через несколько минут ты можешь конкретно сказать что она из себя представляет. Ну вот к примеру, возьмем игру Диабло 2. Супер не спорю, класно, красиво. Но не реалистично. Вот смотри, герой махает мечом, вверх - вниз, одна схема боя. Но так мечом никто никогда не махал. Меч (нормальный) весит килограмм 20-25, после удара вернуть в его в исходное положение практически невозможно, потому что инерция меча настолько сильна, что у тебя никаких, сил не хватит. Вот посмотри исторический фильм "Ледовое побоище", внимательно посмотри, как там лупят. Вот, так что я говорю, все эти недочеты портят, действительно настоящее зрелище.
  Ну, так вот сидели мы обсуждали все это, и закончилось все тем, что поступило предложение, а не написать ли нам нечто, что заставит посмотреть на мир по-другому. Вот так и родился ARMAGEDDON. Это полностью библейская линия.
  Почему DarkBasic? Интересный язык, самая подходящая сфера для такого дела. Взять С++, слишком много писанины, библиотеки, подпрограммы, просто жуть, если перейти на С++ то игру можно и десять лет писать. DB довольно молодой язык, и достаточно нормально развивается. Его возможности зависят только - и - только от вашего ПК. Чем ПК круче, тем DB работает продуктивней. Это мы увидели уже на практике. Я думаю, что еще никто не начинал столь серьезный проект на этом языке. Все примеры и игры, сделанные на нем примитивны, и не будут пользоваться коммерческим успехом. Человеку до одного места, на чем ты ее написал, он хочет сесть, и обалдеть от этого продукта, и надо постараться сделать, так что б людям это понравилось. Вот и все. Как девиз компании Origin, типа мы создаем идеальные миры. Так и мы постараемся сделать идеальную игру. У нас есть несколько крутых геймеров следящих за проектом, если им что-то не нравиться, то это дело сразу устраняется. Работаешь-работаешь. Показал утром, а тебе в ответ, плохо не красиво, не круто, тут плохо, там плохо. И потом все переделываем, пока результат не будет одобрен. Вот именно тогда можно закреплять, сделанное.
  Почему мы остановились на жанре RPG? Потому что игры такого класса самые интересные в мире. Но мы намного отошли от прямого направления этого жанра и создали некую веточку этого направления Role Action Game (RAG). Это значит, меньше разговоров больше, дела. Разговоры непосредственно только по квестовой части (Пойди, принеси то, не зная что). 80% игры будет активного действия, после которого вам придется не одну мышку поменять. Система боя будет просто обалденной. Если на вас напал один монстр - деремся с одним. Если три, то раздаем сало сразу троим одновременно. Это никогда не применялось, в играх такого класса, мы всегда били одного. Но экшен не должен быть скучным и утомительным, в смысле, что мы не бежим, игнорируя уже надоевших хилых монстров, которые пачками выходят из-за каждого угла. Нет. Экшен должен быть красочным, серьезным, и максимально жестоким, если дело имеется с адскими тварями. Рвать на мясо. Это по вкусу каждому DOOMеру.
  Мир в игре будет достаточно обширный, будете лазить и там, и там, и еще хрен знает где. Пока не пройдете все семь кругов ада. А вот когда попадете в пекло (Настоящее пекло) вот тогда мы и посмотрим насколько вы крутой игрок. Даже самый простой скелет не даст себя просто убить, он будет упорно сопротевляться, и вам еще навешает по самое горло. Аптечек не хватит.
  Параметры героя будут достаточно предельны. Ему не надо развивать таких тонкостей как в FALLOUT , у нас время еще до рождества христова, а не будущее. И вообще что нужно вояке. Сила, ловкость, телосложение, дух, умение шаманить, и еще чего нибудь. И все. Мы кодовые замки в игре не открываем.
  По поводу оружия. Ни одно оружие в игре не повториться, Программа случайной генерации оружия из 10000 наименований сама составит для вас весь комплекс. Так что новая игра и оружие уже новое, с новыми параметрами. Тоже самое касается и остального барахла.
  Применение какого либо предмета зависит полностью от класса героя их будет 3. Воин, маг, и ВОР. Вот потом каждому по специальности выдадим, амуницию.

  Первая демо планируется к сентябрю, возможно, мы ее отправим на конкурс, по DB. Релиз проекта, ориентировочно предполагается к рождеству, а там посмотрим.
  Вот в принципе и все. Если что, будем тебя держать в курсе. Кстати, на днях уже будет неплохой видео ролик, мы тебе его перешлем, посмотрите.

С уважением от всей команды Crow Interactive.




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

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

УРОК 5
БАЗА ДАННЫХ ПО ФОНДОВОМУ РЫНКУ

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

Шаг 1. Создание базы данных по фондовому рынку:

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

DIM companies(5,2)

Шаг 2. Заполнение базы данных:

Прежде чем начать торговлю акциями, массив необходимо заполнить данными:

companies(1,1)=90 : companies(1,2)=200
companies(2,1)=70 : companies(2,2)=1000
companies(3,1)=60 : companies(3,2)=2000
companies(4,1)=20 : companies(4,2)=1500
companies(5,1)=15 : companies(5,2)=300

Шаг 3: Чтение данных:

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

CLS
FOR c=1 TO 5
PRINT "#";c;" Цена ";companies(c,1);" Количество ";companies(c,2)
NEXT c

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

Шаг 4. Запись в базу данных:

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

INPUT "Введите номер компании(1-5)>";index
PRINT "Компания ?";index;" Изменить запрос"
PRINT
INPUT "Введите новую цену>";price
INPUT "Введите новое количество>;quantity
companies(index,1)=price
companies(index,2)=quantity

Результаты изменений можно просмотреть, заставив программу перейти в начало и снова вывести список компаний. Догадайтесь, как это сделать с помощь команд DO и LOOP.

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

1. Измените программу так, чтобы она выходила из цикла, когда пользователь вводит нулевое значение для номера компании.
2. Измените программу так, чтобы она случайным образом меняла цену акций каждой компании при каждом прохождении цикла.
3. Измените программу так, чтобы она выводила стоимость каждой компании (price * quantity).

УРОК 6
ФОТОГРАФИЯ НА ПАМЯТЬ

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

rem Вывести растровое изображение на экран
LOAD BITMAP "sample.bmp"

rem Начало цикла
DO

rem Разбить изображение на экране на четыре квадрата
GET IMAGE 1,0,0,320,240
GET IMAGE 2,320,0,640,240
GET IMAGE 3,320,240,640,480
GET IMAGE 4,0,240,320,480

rem Вывести квадраты на соседних местах
PASTE IMAGE 1,320,0
PASTE IMAGE 2,320,240
PASTE IMAGE 3,0,240
PASTE IMAGE 4,0,0

rem Небольшая задержка
SLEEP 100

rem Конец цикла
LOOP

Команда LOAD BITMAP загружает мультимедийный файл в формате BMP, который должен находиться в том же каталоге, что и программа. Команда GET IMAGE копирует в память заданные области экрана. Эти изображения можно затем вывести в любом месте экрана. Команда SLEEP задает единицы времени в одну тысячную секунды, она служит для того, чтобы на мгновение приостановить программу.

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

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




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

  Все вы помните, что когда в фоллауте вы входили в здание то у него проподала крыша, как это зделать в даркбейсике, при условие что здание и игра трехмерные.
  1. Крышу здания сделай отдельным объектом. И потом, когда надо ее скрыть, используй команду HIDE OBJECT
  2. Текстуру крыши меняй на прозрачную. SET OBJECT - смотри в доке. Можно менять свойства объекта, в том числе и прозрачность...

  Возможно ли реализовать в ДБ управление объектами как в 3D стратегии (или Проклятые земли)- выбрал объект, ткнул мышью куда перемещаться и кликнул для исполнения?
  Можно. Пример на сайте darkbasic.narod.ru.

  Как сделать передвижение модели по матрице в точку нажатия мыши? Отслеживание нажатия мыши на матрице...
  Можно. Пример на сайте darkbasic.narod.ru.

  Как в Dark'e можно сделать иммитацию водной поверхности, а также туман
  Для влючения тумана используй команду Fog on
  Пример, атмосферы Земли на darkbasic.narod.ru
Пример воды:
make matrix 1,1000,1000,40,40
do
  w=w+1
  for wx=0 to 30
    for wz=0 to 30
    set matrix height 1,wx,wz,sin((wx*10+w)*12)
    next wz
  next wx
  if w=30 then w=0
  update matrix 1
loop

  Slo-mo (такое киношное временное замедление типа Max Payne) на DB
  Всё на самом деле достаточно просто. Просто нужно изменить значения Sync rate. Например:
Sync rate 30
Далее в игровом цикле:
If controlkey()=1 then Sync rate 10
If controlkey()=0 then Sync rate 30

  Надо осуществить передвижение персонажа по карте так, чтобы он следовал курсору
  Пример на сайте darkbasic.narod.ru.

  Подскажите пожайлуста, как изменять курсор для мыши.?
  Скрываешь мышь(hide mouse), загружаешь картинку курсора в битмане, гетишь её и когда создаёшь спрайт то вместо координат х и у ставишь mousex() & mousey() соответственно.

  Как мне реализовать 3D кнопки в меню для перехода куданить?
  Возможно этот код с буржуйского форума тебе поможет
sync on
sync rate 0
set window on
set text font "verdana"
set text size 10
do
  cls RGB(172,172,172)
  `рисуем кнопку и присваиваем переменной значение, нажата она или нет
  button1=button(200,110,300,140,"кнопка")
  `выводим состояние кнопки
  text 0,15,str$(button1)
  `если кнопка нажата, выполняем действие
  if button1 then print "ok"
  `или if button1 then goto Метка
  sync
loop
end
`функция кнопки
function button(Xa,Ya,Xb,Yb,text$)
color1=RGB(255,255,255):color2=0
if (mousex()>Xa and mousex()Ya and mousey()0)
  press_flag=1
else
  press_flag=0
endif
if press_flag=0
  ink color2,color2
  line Xb,Ya,Xb,Yb
  line Xa,Yb,Xb,Yb
  ink color1,color1
  line Xa,Ya,Xb-1,Ya
  line Xa,Ya,Xa,Yb-1
else
  ink color1,color1
  line Xb,Ya,Xb,Yb
  line Xa,Yb,Xb,Yb
  ink color2,color2
  line Xa,Ya,Xb-1,Ya
  line Xa,Ya,Xa,Yb-1
endif
ink 0,0
center text xa+((xb-xa)/2),(ya+((yb-ya)/2))-(text height(text$)/2),text$
endfunction press_flag

  Можно ли в DarkBASIC сделать меню опций и меню сохранения/загрузки и можно ли менять управления?
  Смотри предыдущий ответ.

  Нужно чтобы в игре можно было менять разрешение экрана
  Можно. Для красоты можешь сделть менюшку - см. предыдущий ответ. А для изменения разрешения экрана и глубины цвета используй команду SET DISPLAY MODE

  Делаю вертолётный симулятор.Возникли проблемы с вращением лопастей. Пробовал так: do; b#=b#+0.1; a=wrapvalue(a+b#); if upkey()=1 then rotate object 1,0,0,a; sync; loop; Раскручиваются хорошо, только почему-то дойдя до определенной скорости вращения начинают крутиться в обратную сторону, замедляя вращение. Как устранить это обратное вращение? Желатаельно, чтобы при достижении максимальной скорости вращения она(скорость)сохранялась не уменьшаясь и не увеличиваясь. Заранее огромное спасибо!!!
  То что лопасти начинают крутиться в обратную сторону - это обман зрения, то же самое когда например смотришь на диски набирающего скорость автомобиля. Попробуй следующее:
b#=0
do
  if inkey$()="a"
  b#=b#+0.1
  `Если переменная b# больше частоты обновления экрана, тогда b# присваиваем максимальную скорость, в данном примере (частота обновления экрана)*2
  if b#)screen fps()
    b#=screen fps()*2
    a=wrapvalue(a+b#)
    rotate object 1,0,a,0
  endif
  Sync
loop
---------------------------------------
На Мах-е замени винт на полупрозрачный круг

  Как сделать чтобы все 3d и 2d обьекты помещались не на синем экране, а на фоне 2d картинки?
  А если использовать оператор backdrop?
---------------------------------
Самый эффективный метод это
1. TEXTURE BACKDROP (номер изображения) картинок будет 6 (3*2)
2. Или иметь MAKE OBJECT PLAIN на фоне и двигать его вместе с камерой
---------------------------------
Если хочешь однотонный бекграунд, то попробуй следующее: BACKDROP COLOR RGB(xxx,xxx,xxx) где вместо ххх - цвет. Текстура на бекграунде: Backdrop texture x х - номер текстуры.

  Сначала я делаю фон(load image,paste image)потом загружаю 3D персонажа, и фон куда-то исчезает, остаётся только 3d обьект. Как сделать-ума не приложу.Может вы знаете?
  Cделай огромную сферу как в tank.dba и текстуируй ее как ты хочешь, это позволит создать эффект неба. Твой персонаж будет находиться внутри этой сферы. Если придется воспользуйся Scale Object Texture, чтобы растягивать или сжимать текстуру.
----------------------------------
Делай так, как делал в самом начале. Загрузи картинку
Load image 1, "Name.bmp"
Потом отключи background.
Backdrop Off
Затем выполни команду
Draw to back
Она помещает все 2D объекты позади 3D объектов. У меня по крайней мере получилось. Единственное, что не рекомендуется использовать 2D и 3D графику вместе, из-за чего падает скорость.
Затем Paste image 1, 0, 0
Больше пока ничего придумать не смог.

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


Выпуск закончил 18 июля 2002 года в 13:32 мск


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

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

В избранное