Навигация по сайту
- Игры / Образы
- Игры на русском языке
- Коды / Советы / Секреты
- Наши переводы
- Наши проекты
- Игры на русском языке (OnLine)
- Эмуляторы
- Обзоры игр
- Информация
- Статьи
- Интервью
- Мануалы / Инструкции
Случайная игра
Вступай!!!
Облако тегов
Показать все теги
Молниеносный язык - LIGHTING BASIC
Вы только что прочитали статью о игре Viper созданной на конструкторе Shot Em Up Construction kit. Она является ярким представителем игр созданных при помощи инструментария. Так же существуют специальные языки программирования созданные именно для написания игр. В таких языках большое внимание уделяется скорости вывода игровой графики и игровым эффектам.
Из ярких представителей здесь можно назвать GLBASIC (ранее назывался DiNGS), Blitz Basic и DB.
Каждый из этих языков имеет массу поклонников, так как позволяет при создании игры уделить максимум внимания самой игре, а не отладке функций вывода графики, звука и т.д.
Я, Infinity, пользовался всеми из перечисленных языков и каждый из них был очень хорош. Следует отметить, что с 2D-графикой по настоящему хорошо справлялся только DiNGS. Он невероятно быстро выполнял вращение и масштабирование спрайтов, а так же делал их прозрачными. Blitz Basic со спрайтами проявлял себя чуть хуже, а Дарк Бейсик и совсем отказывался с приемлемой скоростью отоОражать их. Он требовал трехмерные полигоны с натянутой текстурой.
Помимо этих языков я так же программировал на Паскаль, Asm, Delphi и Бэйсик (ZX-версия). Игры созданные на Си постоянно улучшали свой код, и в итоге я пришел к мысли создания еще одного игрового языка. Имея достаточно большой опыт программировании игр, я приступил к работе.
Язык получил название LIGHTING BASIC.
В предверии выхода версии LIGHTING BASIC 0.1 я решил рассказать о нем поподробнее.
На вопрос о том, зачем понадобился еще один игровой язык хотелось бы ответить, что во первых - возможность выбора - это всегда хорошо, а во вторых - все перечисленные выше языки имеют достаточно высокую стоимость. В среднем 3000 рублей.
LIGHTING BASIC на существующем этапе совершенно бесплатен и позволяет вам с легкостью писать игры уже сейчас.
Одно это достоинство способно перевесить возможные недостатки, наподобие недостаточно большого набора спец-эффектов. Да, набор средств в LB спартанский, но его вполне достаточно, чтобы написать интересную компьютерную игру. Вам не придется ломать голову над тем, как обработать столкновение спрайтов, сделать их полупрозрачными, вывести звук и т.д.
Итак, приведём ниже основные спецификации.
LIGHTING BASIC
Язык программирования созданный *Infinity* специально для написания игр.
Он прост в использовании. Это было основным требованием при его создании.
С помощью LIGHTING вы сможете создать игры использующие паралаксный скроллинг уровня лучших шедевров с 16-битных игровых консолей SEGA Megadrive или Super Nintendo.
Вы можете создавать игры имеющие до 4 миллиардов (!!!) цветов в высоком разрешении.
Чем LIGHTING BASIC лучше других языков?
LIGHTING BASIC создан специально для игр.
* Быстрая и плавная анимация (достаточно Pentium 3 500 Mh).
* Использование альфа-канала (изменение степени прозрачности объектов).
* Легкая проверка столкновения игровых объектов.
* Написание минимального количества кода для создания игры.
Язык развивается и в него будут доОавлены ультра быстрые эффекты вращения спрайтов и увеличения-уменьшения основанные на мощи OpenGL. Все это планируется ввести в LIGHTING BASIC 2.
Функция прозрачности SpriteShadow не очень быстра, хотя ее достато для использования красивых эффектов даже на Pentium 3 533 Mhz. ближайшее время она так же воспользуется мощью и скоростью OpenGL.
Что представляет из себя LIGHTING BASIC?
По синтаксису это обычный Си. Но код написанный на LIGHTING BASIC легко выполняется, как под Windows (PC), так и под Linux (РС). А так же может выполнятся на Pegasos (AMIGA).
Пока LIGHTING BASIC функционирует под MSVC. Но ведутся работы над созданием оболочки - LIGHTING -editor, транслятора (для упрощения синтаксиса) и прозрачная компиляция нажатием одной кнопки посредством последней версии компилятора gcc кода для Windows и Linux. Также есть желание сделать синтаксис русским. Например для загрузки спрайта, вместо LoadSprite писать ЗагрузитСпрайт ("ship.bmp", ship);
Следует отметить, что Infinity уже сейчас активно использует LIGHTING BASIC своих играх. Он эффективен настолько, насколько эффективен Си (так как является его производной).
КАКОЙ ЦВЕТ НА СПРАЙТЕ LIGHTING BASIC СЧИТАЕТ ПРОЗРАЧНЫМ?
R:0
G:0
B:255
Закрашенные таким цветом области картинки не отображаются на игровом экране.
Где можно взять LIGHTING BASIC?
Возможно в ближайшее время он будет выложен на emu-machine Через некоторое время будет релиз и язык станет доступен для скачивания.
Пример 1, код на LIGHTING BASIC:
#include "LIGHTING.h" //Активизируем LIGHTING BASIC
//описываем переменные
asteroid;
int main (int argc, char *argv[]) //Начало программы
{
Screen(640,480); //Установить разрешение экрана 640х480. По умолчанию 4 миллиарда цветов.
asteroid=LoadSprite("asteroid.png", ship); // Загрузить картинку с изображение астероида
while (GAME) // Главный цикл игры открывается кавычками
{
Sprite (asteroid, 200,300); // Показать на экране корабль в координатах x=200,
y=300
LIGHTING(); //Применить LIGHTING BASIC
} // кавычками завершающие цикл игры
return 0;} //Кавычки завершающие программу
//описываем переменные
asteroid;
int main (int argc, char *argv[]) //Начало программы
{
Screen(640,480); //Установить разрешение экрана 640х480. По умолчанию 4 миллиарда цветов.
asteroid=LoadSprite("asteroid.png", ship); // Загрузить картинку с изображение астероида
while (GAME) // Главный цикл игры открывается кавычками
{
Sprite (asteroid, 200,300); // Показать на экране корабль в координатах x=200,
y=300
LIGHTING(); //Применить LIGHTING BASIC
} // кавычками завершающие цикл игры
return 0;} //Кавычки завершающие программу
Команда SPRIT может вывести кар аналогичную приведенной, на экран.
А теперь тоже самое, но без комментариев.
#include “LIGHTING.h”
asteroid;
int main (int argc, char *argv[]){
Screen(640,480);
asteroid=LoadSprite(“asteroid.png”);
while (GAME){
Sprite (ship, 200,300); LIGHTING();}
return 0;}
asteroid;
int main (int argc, char *argv[]){
Screen(640,480);
asteroid=LoadSprite(“asteroid.png”);
while (GAME){
Sprite (ship, 200,300); LIGHTING();}
return 0;}
В дальнейшем (в новых версиях) код будет следующий:
Не трите глаза! Это на самом деле PEGASOS (AMIGA). Вы видите порт игры Infinity - STAR SOLDIER произведенный Amis. Именно эта игра стала в дальнейшем основой LIGHTING BASIC.
Screen(640,480);
LoadSprite(“ship_red.png”,ship);
while (GAME){
Sprite (ship, 200,300); LIGHTING();
}
LoadSprite(“ship_red.png”,ship);
while (GAME){
Sprite (ship, 200,300); LIGHTING();
}
Команда LIGHTING должна обязательно выполнятся либо в ко программы, либо в конце цикла.
Цикл игры должен всегда иметь вид while (GAME){ ВАШ КОД}
Пример 2, кода на LIGHTING BASIC:
Версия для PC (Windows и Linux)
#include “LIGHTING.h”
fon,ship;
y=500,x=300;
int main (int argc, char *argv[])
{
Screen(600,580);
fon=LoadSprite(“fon.png”);
ship=LoadSprite(“ship_green.png”);
While(GAME){
Sprite (fon, 0,0);
Sprite (ship, x, y);
If (LEFT){x=x-1;}
If (RIGHT){x=x+1;}
LIGHTING();
}
return 0;}
fon,ship;
y=500,x=300;
int main (int argc, char *argv[])
{
Screen(600,580);
fon=LoadSprite(“fon.png”);
ship=LoadSprite(“ship_green.png”);
While(GAME){
Sprite (fon, 0,0);
Sprite (ship, x, y);
If (LEFT){x=x-1;}
If (RIGHT){x=x+1;}
LIGHTING();
}
return 0;}
Здесь все просто - стрелками влево и вправо перемещаем кораблик на экране
на красивом фоне.
ВОПРОСЫ:
Как использовать эффект прозрачности картинки (спрайта)?
Sprite_Shadow(ship, 100, 200, 50);
Версия Rabbit Adventure для PC (Linux) - начало использования первых команд LIGHTING BASIC.
Где 100 и 200 - это координаты спрайты x и y, а 50 - степень прозрачности. Степень прозрачности может име значения от 0 до 255.
Какие форматы графики понимает LIGHTING BASIC?
PNG, BMP, JPG, TIFF.
Рекомендуется для спрайтов использовать PNG, а для фоновых картинок
JPG.
Какие форматы музыки понимает LIGHTING BASIC?
OGG, MP3, WAV, MID, XM, IT, S3M, MOD.
Если вас заинтересовали возможности языка LIGHTING BASIC - чита дальше!
КОМАНДЫ ЯЗЫКА
КОМАНДЫ ПОДДЕРЖИВАЕМЫЕ LIGHTING BASIC:
Screen (разрешение экрана по X, разрешение экрана по Y) - устанавливает разрешение экрана. Наиболее популярные значения: 640х480, 800x600, 1024x768 и тд. Но чем выше разрешение, тем более мощный компьютер необходим для игры. Рекомендуется 640х480.
Пример установки разрешения экрана 640х480:
Screen(640,480);
псевдоним= LoadSprite ("название файла") - Загружает спрайт (рисунок память. Для его использования необходим псевдоним.
Пример загрузки спрайта cat.bmp с изображением кота:
kotik;
.....
kotik=LoadSprite("cat.bmp");
.....
kotik=LoadSprite("cat.bmp");
Sprite(псевдоним, координата X, координата Y) - ОтоОражает ранее загруженный в память спрайт (рисунок) на невидимом экране.
Пример использования:
Sprite( kotik, 100,150);
Sprite_Shadow(псевдоним, координата X, координата Y, степень прозрачности) - ОтоОражает ранее загруженный в память спрайт (рисунок) на невидимом экране с эффектом прозрачности имеющем диапазон от 0 до 255.
Пример отоОражающий прозрачный спрайт со степенью прозрачности 75 :
Sprite_Shadow( oblako, 100,150, 75);
LEFT() - возвращает 1 если нажата стрелка влево.
Пример изменения координат при нажатии стрелки влево:
if (LEFT()) {x=x-1;}
RIGHT() - возвращает 1 если нажата стрелка вправо.
Пример изменения координат при нажатии стрелки вправо:
if (RIGHT()) {x=x+1;}
UP() - возвращает 1 если нажата стрелка вверх.
Пример изменения координат при нажатии стрелки вверх:
if (UP()) {y=y-1;}
DOWN() - возвращает 1 если нажата стрелка вниз.
Пример изменения координат при нажатии стрелки вниз:
if (DOWN()) {y=y+1;}
FIRE() - возвращает 1 если нажата клавиша SPACE.
Пример :
if (FIRE()) {fire_start=1;}
FIRE2() - возвращает 1 если нажата клавиша CTRL.
Пример :
if (FIRE2()) {fire2_start=1;}
COLL(объект1, координата X объекта1, Y объекта1, объект2, координата объекта2, координата Y объекта2, ) - проверка столкновения объекта1 и обекта 2.
Пример использования:
if ( COLL(bomb, bomb_x, bomb_y, ship, ship_x, ship_y) )
{
Boom=1;
}
{
Boom=1;
}
LIGHTING() - обязательна для игры! Формируетизображение на экране вашего монитора. Обеспечивает одинаковую скорость работы (50 FPS) на разных машинах. Обеспечивает обработку нажатия клавиш и много других полезных вещей.
Пример :
LIGHTING();
Видимо только Олагодаря платности DiNGS Оыл создан LIGHTING BASIC. На скриншоте игра "Аэлита" написанная на DiNGS.
while (GAME){} -главный цикл игры! В нем вся игра и происходит
Пример :
while (GAME)
{
if (level=1){ Level1();}
if (level=2){ Level2();}
if (level=3){ Level3();}
LIGHTING();
}
{
if (level=1){ Level1();}
if (level=2){ Level2();}
if (level=3){ Level3();}
LIGHTING();
}
Если вас заинтересовал данный язык программирования, то пишите в Гостевой EMULATORS MACHINE.
Автор: Infinity
Журнал: Emulators Machine