Page 1 of 3

Rocket Forces

Posted: Thu Jun 07, 2007 1:40 am
by Serial
Представляю вашему вниманию мой первый блинком - игра под многообещающим названием "Rocket Forces".

Задача: продержаться как можно дольше, защищая мирное население и набирая очки. Чтобы сбить падающие вражеские бомбы необходимо выбрать такие координаты для запускаемой ракеты, чтобы её взрывная волна задела эту самую бомбу и тем самым уничтожила её. Пересечение траекторий полета ракеты и бомбы не приводит к детонации!
Управление: левая кнопка мыши - выстрел, Esc - выход :)


Версия: 0.1

Скачать игру можно здесь: http://ifolder.ru/2264099
(файл с индексом "h" - реализация с аппаратным курсором, файл с индексом "s" - реализация с эмуляцией курсора)

Скачать исходники можно здесь: http://ifolder.ru/2264130
(в архиве находится всё необходимое, для компиляции в среде Visual Studio 2005)

Posted: Thu Jun 07, 2007 5:10 am
by bw
Классная игруха. Мне нравится :-).

..bw

Posted: Thu Jun 07, 2007 12:16 pm
by Serge
Игра класс !
И хороший пример программирования на CPP для Колибри. Осталось добавить звук. Могу в этом помочь.

Posted: Thu Jun 07, 2007 12:47 pm
by Serial
Всем спасибо ;)

Serge
Вообще про звук я даже не думал :) Но буду благодарен за помощь в реализации..
А пока планы были такими: сделать главную менюшку и в ней настройку всех параметров игры, таких как количество и скорость ракет, бомб, сложность игры, ограничение и вывод на экран FPS, soft/hardware курсор. Впринципе они уже сейчас вынесены в отдельные переменные, так что полдела сделано.
И еще думал реализовать систему уровней, чтобы игра была более-менее логически завершенной.

Posted: Thu Jun 07, 2007 1:21 pm
by Serge
Serial

Кстати определить аппаратный курсор можно из программы. Примерно так

Code: Select all

char szHwCursor[] = "HWCURSOR";

           mov eax, 68
           mov ebx, 16           
           mov ecx, szHwCursor
           int 0x40                     ;get_service(char *srv_name)

           если еах не равно 0 значит загружен драйвер аппаратного курсора

Posted: Thu Jun 07, 2007 1:37 pm
by Serge
Serial

Надо определить события когда должен быть звук и подобрать подходящие семплы.
Звуковой движок я напишу. В принципе там ничего сложного. В тот момент когда взрывается бомба или стреляет пушка добавляется вызов
play_sfx(bomb_explode) play_sfx(rocket_launch) и т.п.

struct SFX
{
информация о семпле
}

SFX *bomb_explode;
SFX *rocket_launh;

Posted: Thu Jun 07, 2007 2:06 pm
by Serial
Serge

А в каком формате будут представлены звуки? и придется ли их хранить отдельно от бинарника?

Posted: Thu Jun 07, 2007 3:55 pm
by Serge
Serial

Любой PCM, например моно 16 бит 11 Кгц, можно и 8 бит но тогда придётся разворачивать в 16. Файлы можно скомпилировать фасмом в бинарник и слинковать или держать отдельно. У меня где-то были подходящие wav-ы. Если сделаешь константы для звуковых эффектов начиная с 1
#define BOMB_EXPLODE 1
#define ROCKET_LAUNNCH 2
и поставишь в нужных местах play_sfx(звуковая_константа) я попробую сделать звук.

void play_sfx(const int sfx_id)
{
//заглушка
};

Posted: Thu Jun 07, 2007 4:11 pm
by Serial
Serge

оке ;)
Когда будет какой-нибудь прогресс, напишу в личку.. ибо щас сессия идет полным ходом.

Posted: Fri Jun 08, 2007 7:11 am
by Mario79
Serial
Что-то я не понял в игре - ракета пролетает сквозь бомбу и ничего....
Ты сделал сравнение траектории по одной единственной точке? Тогда это неправильно. В реальной ситуации ракета никогда не долетает до цели - она взрывается рядом. Например, самолет поражает не сама ракета, а ее осколки, т. е. ракета в этом случае действует как граната.

Posted: Fri Jun 08, 2007 9:51 am
by Serial
Mario79

:) Ты уже не первый, кто задает такой вопрос... Поэтому я и написал:
Чтобы сбить падающие вражеские бомбы необходимо выбрать такие координаты для запускаемой ракеты, чтобы её взрывная волна задела эту самую бомбу и тем самым уничтожила её. Пересечение траекторий полета ракеты и бомбы не приводит к детонации!
Короче.. ракета взрывается, когда долетает до красного крестика. Задача поставить эти крестики так, чтобы в момент взрыва ракеты рядом оказалась бомба.

Posted: Fri Jun 08, 2007 10:14 am
by Mario79
Serial
Но в реальной ситуации ракета детонирует не в заранее подготовленной точке, а по достижении определенного расстояния до цели.
В твоем же случае ракеты не должны выпускаться как автоматная очередь... Очень странная картина получается. :-)
Игра мне напомнила БК-0010, там, в игре "Десантник" высаживался десант, который надо было сбивать зениткой. Если высадилось 4 десантника, по одну из сторон они выстраиваются в лесенку и последний залезает и взрывает к чертям зенитку.

Posted: Fri Jun 08, 2007 10:41 am
by Serial
Mario79

Да, игра очень похожа на многочисленные игры типа "Десантник". Сам в штуки 3 такие играл (начиная с ЕСки).
Сделать такую же систему, как и в этих играх не проблема. Но это будет тупо очередной клон игры. Хотя.. может кто-нибудь захочет понастольгировать :)
Я же постарался сделать немного другую игру: ракеты с некоторым радиусом поражения вместо пулемета, защита города от бомб вместо отбивания от парашутистов. А все пытаются по привычке сравнивать со старым "Паратрупером" :)

Posted: Sat Jun 09, 2007 8:38 pm
by Ghost
А куданибудь в другое место выложить можно?

Posted: Sat Jun 09, 2007 9:01 pm
by mistifi(ator
[OFFTOP]
При желании можно закачивать здесь: http://miraculix.ru/upload.php
Kreoton, впринципе не удаляет, да и со скачкой проблем не будет...
[/OFFTOP]