Здравствуйте уважаемые участники и гости сайта Gcup.ru! Если вы читаете эти строки, то возможно перед вами - остро стоит необходимость определиться с выбором языка программирования, или движка для реализации ваших идей! Сегодня я хочу рассказать вам, о незаслуженно забытом языке Dark Basic. Не нужно сразу презрительно морщиться при слове Бэйсик! Это слово, показывает лишь то, что язык достаточно прост в изучении, и если вы изучали интерпретатор Бэйсика в школе, ну или самостоятельно, то вам не составит особого труда освоить ориентированный на 3D графику Dark Basic. Судите сами - язык поддерживает DirectX9, шейдеры, загрузку сложных моделей в форматах 3ds, Х, загрузку и проигрывание анимации и 3D звука, матричные и векторные преобразования, работу со спрайтами и многое другое!... Язык подходит для создания игр любого жанра. Скачать рабочую версию можете по ссылке с нашего сайта - на официальном сайте разработчиков:Dark Basic Pro Вот примеры игр, от простеньких платформеров, до достаточно серьёзных проектов. Ну, если я вас убедил - то прошу за мной, в увлекательный мир создания игр! При дальнейшем изложении материала, предполагается что вы самостоятельно установили Dark Basic Pro. Обычно с этим не возникает никаких проблем, как и с любым софтом у которого есть инсталлятор. После запуска DBPro перед вами откроется рабочее окно приложения. Давайте создадим новый проект, выбрав для этого File->New Project, ну или просто нажав на мини-иконку в виде чистого листа бумаги! В открывшемся меню напишем имя проекта и нажмём ОК. Я например выбрал для проекта название Star Gate. При этом, в рабочем окне с пронумерованными строками, добавится несколько записей... Ничего страшного, просто наш проект сохранился в директории, куда был установлен Dark Basic, в папку projects и система ожидает ввода нашей первой программы. Конечно, обычно самой первой программой делают вывод надписи "Привет Мир!", но мы пропустим этот этап и посвятим своё время созданию чего-то более существенного. Попробуем создать вращающуюся планету, со спутником, который летает вокруг неё и всё это на фоне звёздного неба... Ну что-то вроде кусочка космических рейнджеров! Для начала - разобьём задачу на части... Нам нужно: сделать космический фон, создать планету, создать планету-спутник. Вот эти задачи и будем поэтапно решать! Проведём некоторые подготовительные операции. Откроем директорию - куда установили Dark Basic, найдём в папке Projects наш проект - Star Gate. Создадим в папке с нашим проектом - ещё одну папку Image. Туда положим следующие нужные нам текстуры и изображения: Просто скопируйте рисунки в вашу папку Image И назовите их соответственно, по порядку: dcsm-1024.jpg, mars.jpg, MOON.JPG. Для тех кому не понятно - я запаковал папку Image с нужными картинками в архив - просто распакуйте её в свой проект! Image.rar Ну вот, теперь мы готовы к дальнейшим действиям! Начнём наконец-то писать программу. Сначала напишем некоторые необходимые операторы, так сказать - прорубим окно в виртуальный 3D мир. Ставим курсор в первую свободную строчку и пишем set display mode 1024,768,32 - установим разрешение экрана и глубину цвета sync on : sync rate 100 : backdrop on Нужно сказать, что в принципе, команды в DB пишутся по одной в каждой строке, но короткие команды можно записывать по несколько штук сразу, разделяя их двоеточием. sync on - эта команда разрешает проводить обновление экрана вашей программе. sync rate 100 - задаём частоту обновления экрана, если стоит ноль, то экран будет обновляться с максимально возможной частотой. backdrop on - включаем задний фон, или задник как его ещё называют. Теперь загрузим изображение звёздного неба и затекстурим им задник. Пишем следующие строки: load image "image\dcsm-1024.jpg",1 texture backdrop 1 load image "путь\имя картинки" присваиваемый номер - с помощью этой команды, загружаем картинку с таким-то именем в память и присваиваем ей собственный номер (от 1 до 65536) texture backdrop 1 - накладываем загруженную картинку с номером 1 на задник. Здесь сделаем небольшое отступление. Дело в том, что каждый обьект, каждая картинка, каждый спрайт и т.д. - должны иметь свой уникальный номер, по которому он опознаётся. Этот номер - как имя, которое даётся программистом обьекту при его создании! Ну вот, мы создали задник и затекстурировали его звёздным небом. Добавим ещё обязательные команды и посмотрим что у нас получилось! do sync loop Команды между do и loop циклически повторяются, т.е у нас постоянно обновляется экран командой sync Вот код который должен у вас получиться: Code set display mode 1024,768,32 sync on : sync rate 100 : backdrop on load image "image\dcsm-1024.jpg",1 texture backdrop 1 do sync loop Теперь смело жмём клавишу F5 и если всё нормально - то мы увидим следующую картину: Займёмся теперь созданием планеты. Планету нам легко заменит сфера! После texture backdrop 1 и перед do напишем следущее: make object sphere 2,150 - команда переводится как - создать обьект сфера. Первая цифра - это уникальный номер обьекта, а вторая - это диаметр нашей сферы. Все обьекты создаются в точке с координатами х=0, у=0, z=0 Но дело в том, что и камера через которую мы смотрим на 3D мир - тоже находится в этой точке! Координата х - это горизонталь (- влево, а + вправо). Координата у - это вертикаль (- вниз, а + вверх) Координата z - это -ближе, или +дальше от камеры. Теперь немного отодвинем нашу сферу от экрана... Напишем position object 2,0,0,800 - что переводится как поставить обьект в точку с координатами X, Y, Z. Где цифра 2 - номер обьекта (наша созданная сфера - планета), Х=0, Y=0, Z=800 (фактически на 800 единиц вдаль от камеры). Вот код который у вас должен получиться: Code set display mode 1024,768,32 sync on : sync rate 100 : backdrop on load image "image\dcsm-1024.jpg",1 texture backdrop 1 make object sphere 2,150 position object 2,0,0,800 do sync loop Снова жмём клавишу F5 - не правда ли, белая сфера как-то не смотрится на фоне звёздного неба! Давайте затекстурируем нашу планету. Для этого перед циклом do снова введём две команды. Сначала загрузим новую картинку в память под уникальным номером, а потом затекстурируем наш обьект - сферу! load image "image\mars.jpg",2 texture object 2,2 - где первая цифра, номер обьекта который будем текстурировать, а вторая цифра номер картинки для текстурирования Можете нажать F5 и посмотреть что получилось! Настала очередь маленькой планеты - спутника. Продолжаем писать уже известные нам команды создания сферы, только меньше радиусом, загрузку в память новой картинки и текстурирование новой планеты. make object sphere 3,50 position object 3,150,0,0 - немного сдвинем вправо load image "image\MOON.JPG",3 texture object 3,3 Теперь давайте приклеим маленькую планету к большой. glue object to limb 3,2,0,1 - что переводится как приклеить обьект к лимбу. Первая цифра - что приклеиваем (обьект номер три - маленькая сфера). Вторая цифра - к чему приклеиваем (обьект номер два - большая сфера). Третья цифра - номер лимба к которому приклеиваем маленькую сферу. А четвёртая цифра - вид склейки, но это пока не важно! Обратите внимание, что маленькая планета приклеилась к большой со своим смещением в координатах относительно начальной точки центра координат. Т. е. как она была немного смещена вправо по оси Х на 150 единиц, так она и приклеилась со смещением по оси Х, значит она будет находиться в точке с координатами 150,0,800. Правее большой планеты - которая находится в координатах 0,0,800. Можете нажать F5 и посмотреть. Давайте теперь заставим большую планету вращаться вокруг вертикальной оси (ось Y). Для этого введём переменную, которая будет обозначать угол поворота планеты относительно начального положения.Запишем несколько команд. ro=0- ro это переменная, и мы её приравняли к нулю сначала. Следующие команды пишем уже внутри цикла (после командыDo) inc ro - увеличить переменную ro на единицу yrotate object 2,ro - повернуть вокруг оси Y обьект номер 2, на угол ro То, что мы приклеили маленький спутник к большой планете - позволит нам обойтись без расчёта орбиты спутника! Он будет вращаться как привязанный. yrotate object 3,ro - ну и спутник тоже повернём вокруг Y Вот код который у нас должен получиться в конце Code set display mode 1024,768,32 sync on : sync rate 100 : backdrop on load image "image\dcsm-1024.jpg",1 texture backdrop 1 make object sphere 2,150 position object 2,0,0,800 load image "image\mars.jpg",2 texture object 2,2 make object sphere 3,50 position object 3,150,0,0 load image "image\MOON.JPG",3 texture object 3,3 glue object to limb 3,2,0,1 ro=0 do inc ro yrotate object 2,ro yrotate object 3,ro sync loop Ну а вот картинка из программы: Ну, надеюсь начало положено! Поздравляю всех у кого получилось сделать собственную планету со спутником! Всем удачи! |