PDA

Просмотр полной версии : Танчики


Страницы : [1] 2

ORTODOX
25.12.2007, 12:39
Как вам идея сделать танчики, которые были на денди? Допустим добавим возможность играть на троих? Как идея? Думаю многим было бы интересно... :sml:
Можно было бы сделать на дельфи...
ЗЫ Позже можно было бы еще придумать возможностей ,подумали бы всем форумом :)

Проект пока завис! Пока не наидутся моделеры и художники! Также требуется програмист, который способен освоить уже готовый движок и ядро! Если вы желаете помочь, записываитесь! :sml:




Участники
DEAD_Angel - художник
andNsX - художник
HaNproKilleR - художник
^i_Swep - j2me программист
L'ombre - консультант
ORTODOX - руководитель проекта
razor21 - програмист
pokibor - програмист-консультант
Требуются еще участники!

***
основные сущности в игре:
- уровень, он же interaction manager, в дальнейшем - Level
Управляет взаимодействием всех сущностей
- матрица. состоит из элементов. что очевидно..
- элемент матрицы. CellItem. то, из чего состоит матрица.

- более сложные сущности, в основе которых лежит так называемый Traverser -
это нечто, способное двигаться относительно матрицы.
Оно имеет координаты и направление
при этом остальные объекты матрицы могут оказывать влияние на это движение.

существует два основных подвида Traverser'а:
- MatrixTraverser - это объект, движущийся относительно матрицы И
привязанный к матрице, оставляющий в ней след, имеющий размер.
т.е. вместе с движением объекта перемещается его представление в матрице
- PointTraverser - безразмерный объект, движущийся относительно матрицы И НЕ
оставляющий в ней след (но при этом взаимодействует с остальными объектами)
т.е. объект движется, но не имеет представления в матрице

Таким образом, Танк - это такой специальный MatrixTraverser,
умеющий стрелять, проезжающий по определённым клеткам и не умеющий по остальным и тд.

Снаряд - это PointTraverser, с соответствующими свойствами

Ближе к деталям:

Абстрактные сущности.

Destroyable
Сущность материальная, которую можно разрушить
свойства:
- Armor. Броня, Порог прочности.
определяет взаимодействие с PointTraverser'аим (снарядами)
Чтобы нанести повреждение, нужно, чтобы мощность снаряда была не меньше.
Если броня равна нулю, то снаряды пролетают сквозь этот объект.
- HitPoints. Численное прдставление прочности.
если снаряд пробил броню, то HitPoints уменьшаются.
При достижении значения 0 объект разрушен и исчезает из матрицы
(т.е. заменяется на пустой)
данное свойство показывает текущее значение
- MaxHitPoints - а это максимальное значение Hit Point'ов данного объекта.


Traverser
это нечто движущееся относительно матрицы. Основные свойства:
- X,Y. координаты центра в матрице
- Direction. Направление, одно из четырёх.
- Speed/Delay - так или иначе задаёт скорость

MatrixTraverser
Обладает размером. В общем случае прямоугольный.
- Width, Height - размеры, в клетках матрицы.
Какой ячейке соответствуют координаты, надо решить позже.
Предположительно, той, что ближе к центру.
например, если координата объекта шириной Width == 4 X == 2,
то этот объект занимает ячейки матрицы 1, 2, 3, 4 (нумерация, естественно, начинается с нуля)
(естественно это не окончательное решение)
- ID - может быть некий тип, но пока необязательно..

PointTraverser
на данный момент ещё не решил, должен ли он отличаться просто от Traverser'а,
кроме смысла. А по смыслу - это предок всех снарядов.
Скорее, будут отличаться обработчики событий.
PointTraverser движется иначе. А именно - МЕЖДУ ячейками
(т.е. координаты интерпретируются по-другому)
например, если координата X == 2, то объект находится между второй и третьей ячейкой.

Неабстрактные сущности

CellItem
Элемент (ячейка) матрицы. Потомок Destroyable
дополнительные свойства:
- Passability. Проходимость.
определяет взаимодействие с MatrixTraverser'аим (танками)
(вещественное число. 0 - объект непроходим; отличное от нуля значение влияет на скорость;
1 - нормальная скорость; 0.5 - замедленная в два раза, 2 - удвоенная и тд)
поскольку некоторые клетки могут быть доступны для MatrixTraverser'ов,
для представления этого понадобится ещё одно поле, пусть будет
- Meta. Флаг, который каким-либо образом показывает,
что эта ячейка занята каким-то MatrixTraverser'ом.
Например, порядковый номер танка (индекс в контейнере танков)
Для ядра игры этих свойств достаточно. Для визуализатора понадобится ещё хотя бы одно -
- ID. Уникальное число, идентификатор этого объекта.
Если все взаимодействия определяются вышеописанными свойствами,
то это поле определяет, как нужно объект отрисовывать.
склоняюсь к тому, чтобы не делать сложной иерархии классов для объектов матрицы;
просто все объекты принадлежат к одному классу и отличаются набором свойств.
тогда можно задавать все объекты в рантайме - например, загружать из файла.

Tank
танк является потомком MatrixTraverser'а и Destroyable
(т.е. это объект, способный двигаться в матрице, который можно уничтожить)
со своим набором свойств
- Weapons. вектор орудий. об этом позже.
- Owner. кто этим танком командует. номер игрока, флаг игрок/AI и тд

Missile
потомок PointTraverser'а.
специфические свойства:
- AttackPower. "Пробивная сила". Сравнивается с Armor объектов и танков.
- Damage. Повреждения, наносимые объектам, после того, как пробита броня.
- DamageDepth, DamageWidth - определяют область, затронутую взрывом
- Charges. Свойство, призванное обобщить концепцию снаряда.
Это "количество зарядов" - сколько раз снаряд может взорваться.
То есть, снаряд, после того, как он столкнулся со стеной и взорвал её,
может полететь дальше. Звучит абсурдно для снаряда, но это может быть лазер
или плазменный шар. При достижении количества 0 снярад уничтожается.
(если броня не пробита, или же хитпойнтов оказалось слишком много,
то не важно, сколько зарядов - снаряд уничтожается)
- Owner. Танк, выпустивший этот снаряд. Это понадобится для обработки Friendly Fire -
смогут ли танки противника повреждать дуг друга.

Остальные сущности

Weapon.
Оружие танка. определяется свойствами:
- Тип снаряда. идентификатор (если у снарядов будут идентификаторы)
или собственно указатель на объект.
- Скорострельность. - это максимальное количество снарядов, выпущенных из этого орудия,
которые могут существовать в каждый момент времени.
Например, если 1 - то танк не может выстрелить, пока не взорвётся выпущенный ранее снаряд.
и т.д.
У танка может быть несколько орудий, между которыми можно переключаться.
Делать заканчивающиеся снаряды, думаю, нет смысла.

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

RespawnPoint
точка возрождения. так как это точка, то это просто потомок какого-нибудь Traverser'а

PowerUp
объект, имеющий размер, при "столкновении" с которым танк получает какой-либо бонус:
- новое оружие
- усиление брони или HP
и тд
потомок MatrixTraverser'а, хоть и не движется. Основное свойство - тип бонуса.

BaseStation
(название надо обдумать)
это такой объект, который вражеские танки стремятся уничтожить.
опционально. тоже потомок MatrixTraverser'а и Destroyable

Структура игрового процесса

Основная сущность:
Level, уровень.
основные элементы:
- Матрица
- Вектор танков.
- Список снарядов
дополнительные:
- контейнер точек возрождения
- контейнер powerup'ов
- "базовая станция", которую нужно защищать.

(к контейнеру танков потребуется произвольный доступ,
а объекты из контейнера снарядов должны легко удаляться)

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

Двигаться могут танки - находящиеся в одном списке - и снаряды - в другом.
Выстрел любого танка добавляяет его снаряд в список снарядов.
Танк может добавить в список несколько снарядов.
попадание снаряда во что-либо может удалить его из этого списка.
Попадание в танк может его уничтожить - уничтоженный танк не удаляется из контейнера,
так как возможен respawn - этот экземпляр будет перемещён в другое место и "воскрешён"
(если закончились все танки в "запасе",
то этот танк просто пропускается при дальнейшей обработке).

http://www.shadow.dynalias.com/tanks/core.rar
пароль у архива t@nk$c0re

фиксы:
- Tank::OrderMove() вызывает MatrixTraverser::Move() (раньше вызывал Traverser::Move(), и это было неправильно)
- MatrixTraverser::RemoveTrace() правильно удаляет из матрицы движущиеся в момент удаления траверсеры (в предыдущей версии я забывал очищать зарезервированные клетки)

pokibor
25.12.2007, 12:52
Хм... возможно, возможно, учитывая, что обсуждение физики гонок заглохло (с моей стороны причина более-менее объективная - книга, асприрантура, работа, модерирование), то написание чего-то более простого и выкладывание исходников будет в тему...
Под что писать-то? Под DirectDraw? Или ещё какие предложения?

ORTODOX
25.12.2007, 12:54
pokibor
я раньше пытался написать на DelphiX ,может на ней и попробуем?

pokibor
25.12.2007, 13:03
На Delphi? Тогда от меня ждите только помощи советами. Я на Delphi писать ничего не буду. DelphiX - это что ли DirectDraw-движок для Delphi, или я ошибаюсь?
В любом случае писать что-то на Паскале - меньшее, что мне на данный момент хочется. Извините. Возможно, я оторвусь от коллектива и, если будет желание, замучу что-нибудь такое на Irrlicht или непосредственно на DirectX/OpenGL...

ORTODOX
25.12.2007, 13:07
На Delphi?
ты С++ изучаешь?
ЗЫ Я С++ даже на комп ни разу не ставил :))
ЗЫЫ Я знаю малость дельфи, изучаю потехонечку, сеичас принялся за массивы...а так то хоть неа делфые я помочь чем то мог, а С++ вообще без понятия :(
Создам сеичас участников, кто хочет чем то помочь, записываитесь! :)

pokibor
25.12.2007, 13:21
ты С++ изучаешь?
Не поверите, я его знаю. А вот Pascal уже лет пять как забыл, словно страшный сон.

ЗЫ Я С++ даже на комп ни разу не ставил :))
Я рад. А не помешало бы.

ЗЫЫ Я знаю малость дельфи, изучаю потехонечку, сеичас принялся за массивы...а так то хоть неа делфые я помочь чем то мог, а С++ вообще без понятия :(
А не кажется ли Вам, что подобных знаний просто не хватит даже для реализации танчиков?

Создам сеичас участников, кто хочет чем то помочь, записываитесь! :)
Хорошо. Я закреплю первый пост. Можете в него добавлять список заинтересовавшихся. Посмотрим, что выйдет.

ORTODOX
25.12.2007, 14:45
А не кажется ли Вам, что подобных знаний просто не хватит даже для реализации танчиков?
ну так я бы модели создал, я по идее моделированием занимался :) А вы бы програмировали :))
Хорошо. Я закреплю первый пост.
спс

L'ombre
25.12.2007, 23:08
Как вам идея сделать танчики, которые были на денди?
посещала меня такая идея лет шесть назад. в результате сделал этакое нечто под DOS на Borland Pascal 7. Игра, созданная с наскока, без проектирования, на чистом энтузиазме - нельзя так игры делать. код далёк от совершенства, осталась парочка багов, но в целом работает, и даже содержит в некотором роде оригинальные отличия от тех самых NES'овских Tank 1990/Battlecity/и тд.


как и обещал, линк был актуальным в течение недели.
Так как сообщений в PM после этого не было, то (несмотря на попытки скачивания) линк удаляю

ORTODOX
26.12.2007, 09:55
L'ombre
Лагает :( Вот скрин
http://i047.radikal.ru/0712/4c/09bea4fa5283t.jpg (http://radikal.ru/F/i047.radikal.ru/0712/4c/09bea4fa5283.jpg.html)
Перезалей пожалуиста на slil.ru или подобное"! + поставлю :)) (и надеюсь не я один )0))))

pokibor
26.12.2007, 12:20
ORTODOX
Такое бывает порой. Браузер зачем-то пытается открыть rar-архив вместо того, чтобы его скачивать. Воспользуйтесь лучше качалкой какой-нибудь для скачивания.
Впрочем, специально для Вас я перезалил L'ombre'овыский архив на ifolder, однако ссылку и пароль пошлю через личку, чтобы не нарушать его прав.

ORTODOX
26.12.2007, 12:28
pokibor
ага спасибо1 :))
В след. выборе лучших модераторов выберу тебя, редко так помогают :)) !!!
Не подлизывайтесь и не флудите.

^i_Swep
11.01.2008, 19:56
Хмм.. Есть вариант написать под сотовый
Однако для придания ускорения (мы же хотим завершить за неделю ? :) ) не плохо бы ещё одного программера на java me

ORTODOX
11.01.2008, 21:51
^i_Swep
Неплохо было бы :)) На сотовый,как раз в школе гамать :)) Еще через блютуз,вообще бы чинно было :)

DEAD_Angel
11.01.2008, 23:50
А проект в 2D или 3D графике будет ?
Неплохо было бы На сотовый,как раз в школе гамать Еще через блютуз,вообще бы чинно было
Да под сотовый хорошо будет, но вот только у разных фирм телефонов платформы разные, придётся вам как минимум 3 версии выпускать.

ORTODOX
12.01.2008, 18:35
А проект графике будет
проект в 2D
Обычные дендивские танчики,ну что,есть участники?

andNsX
13.01.2008, 16:55
ORTODOX
Жаль что тебя забанили, но предлагаю сильно не парится и попробовать на GameMaker, тем более, что pokibor дело говорит, знаний не хватет, а вот на Гамаке очень легко будет. Так что если Гамак, то я в команде.

DEAD_Angel
13.01.2008, 20:47
Обычные дендивские танчики,ну что,есть участники?
Ну я дезайнером могу быть (я не профи, и не очень хорошо рисую: смотри на мой аватар (это лучший мой рисунок) и ещё я плохой аниматор), но сильно не расчитывайте... (у меня инет плохой, и не всегда доступ в инет будет)

^i_Swep
13.01.2008, 22:01
Да под сотовый хорошо будет, но вот только у разных фирм телефонов платформы разные, придётся вам как минимум 3 версии выпускать.
В чём отличия ? Размер экрана? Можно изначально нацеливаться на так сказать расширяемость. И для первого релиза сделать например под 178х220

А проект в 2D или 3D графике будет ?
Хмм.. зачем 3D танчикам ? :) Лишний труд, цени время.

andNsX
К сожалению, не знаю про GameMaker. Также вынужден согласится, что у ORTODOX маловато знаний.. Но, продолжая о своём.. могу кодить под j2me, но одному лень. Поэтому и сказал - ищем второго Java2 ME программиста (а ещё художника, и вообще всех - кто что предложит ), и танчики будут готовы через неделю.
ORTODOX может быть координатором (идея его :) ) и перенимать опыт (как пафосно звучит ! )

DEAD_Angel
А я вообще рисовать не умею xD, а вообще, главное - работа в коллективе

DEAD_Angel
14.01.2008, 00:04
В чём отличия ? Размер экрана? Можно изначально нацеливаться на так сказать расширяемость. И для первого релиза сделать например под 178х220

Там такая штука, например: у меня MOTOROLA и игры с SONY ERICSON у меня не идут.

ХаН
14.01.2008, 08:42
andNsX
А где мона скачать GameMaker?


На счет проекта - идея класс )) Особенно заинтересовала под сотики ))
Кстати могу быть полезен в рисовании ( умею но неочень :frown: впринципе текстуры нарисую подгоню оптимизирую )

DEAD_Angel
14.01.2008, 13:41
HaNproKilleR
Насчёт GameMaker тебе сюда: http://forum.igromania.ru/showthread.php?t=51943

На счет проекта - идея класс )) Особенно заинтересовала под сотики ))
Кстати могу быть полезен в рисовании ( умею но неочень впринципе текстуры нарисую подгоню оптимизирую )
Как только ORTODOX'а "разбанят" давай вместе дизайнерами бытьНу я дезайнером могу быть (я не профи, и не очень хорошо рисую: смотри на мой аватар (это лучший мой рисунок) и ещё я плохой аниматор)
Так что будем компенсировать недостатки друг друга. :)

^i_Swep
14.01.2008, 18:48
Там такая штука, например: у меня MOTOROLA и игры с SONY ERICSON у меня не идут.
ХЗ почему, все основные функции стандартизированы. У тебя совсем не запускается?

впринципе текстуры нарисую
блин, да зачем 3D ? Разве нет желания когда-нибудь эти танчики закончить ?

А долго ещё ORTODOX ждать ?

DEAD_Angel
14.01.2008, 21:25
но предлагаю сильно не парится и попробовать на GameMaker
Слишком легко, там и один человек может приличную игру сделать... Но можно и на "гамаке" делать, но сделать так чтобы "ух!"

Хмм.. Есть вариант написать под сотовый
Однако для придания ускорения (мы же хотим завершить за неделю ? ) не плохо бы ещё одного программера на java me
Да, хочется под сотовый, но Java программеров редко где найти...

И для первого релиза сделать например под 178х220
Может быть 176х220 ?

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

^i_Swep
14.01.2008, 21:40
Может быть 176х220 ?
Ну забыл ))

Давай-те сделаем "танчики" с разными видами оружия, апгрейдами и т.п. и всё это (оружие, апгрейды) будет покумотся за "деньги", которые (деньги) начисляются за убийство врагов (эдакий Контр-Страйк танчиками) ?
А давайте заранее определим, что будет в танчиках (в том числе и какие виды оружий, какие апгрейды и т.д.).
А кто заинтересовался, можна что-то a-la скринов из игры нарисовать :)

pokibor
14.01.2008, 21:45
Слишком легко, там и один человек может приличную игру сделать... Но можно и на "гамаке" делать, но сделать так чтобы "ух!"
А может вообще в скриптах Варкравтовского редактора. :mad:
Ну я понимаю ещё реализовывать в GM какую-нибудь оригинальную идею, которую раньше никто не юзал, чтобы всем показать свой талант как креативщика, но делать на GM уже вдоль и поперёк исхоженные танчики... Смысла вижу 0 целых 0 десятых.

Давай-те сделаем "танчики" с разными видами оружия, апгрейдами и т.п. и всё это (оружие, апгрейды) будет покумотся за "деньги", которые (деньги) начисляются за убийство врагов (эдакий Контр-Страйк танчиками) ? :)
Вы бы сперва хоть основную модель реализовали, навороты всегда прикрутить можно будет. Ядро что ли сделайте, а то уже скучно читать дискуссию становится... :wnk:
Ведь основа-то вроде проще некуда - блочная структура уровня, танк квадратный, размером в несколько квадратных же блоков, никаких проблем с рассчётом столкновений нет и даже движение, кажется, происходит сразу на один блок за шаг, хотя плавным его в зависимости от FPS сделать - раз плюнуть.
А когда будет готов класс танка, класс уровня и танк будет ездить по уровню, тогда уже добавить оружие, AI и прочее будет крайне просто. Только методы у классов надо бы, конечно, в большинстве своём виртуальными объявлять, чтобы потом перегружать можно было.
Если будет готово ядро по такой схеме - визуализацию можно делать хоть 2D, хоть 3D, хоть вообще в текстовом режиме. А для теста и PaintBox какой-нибудь Делфийный/Builder'овский и прочая мишура сойдут.

^i_Swep
Диздок должен писать один человек. Если кто-то возьмёт на себя сей труд - это будет замечательно. Но бросая клич "давайте придумаем апгрейды", Вы рискуете создать поток бесконечых предложений одно краше другого, а сама игра в итоге никогда не будет создана. Я сейчас Вам могу столько идей нагенерировать - от составного оружия до скриптования уровней, тераформинга и сюжета, вот только, боюсь, это вообще превратит проект в категорию несбыточных.

P.S. Если вдруг найдётся денёк свободного времени, что вряд ли, возьму на себя часть труда по написанию ядра. Только предупреждаю, что моё ядро будет на C++. Ну в крайнем случае на C#.

ХаН
15.01.2008, 02:38
DEAD_Angel ок будем всместе над графикой париться :))
^i_Swep у меня на SoneEricsson работают некоторые игры для Nokia
Кстати а че за язык программирования ??? Где прогу скачать и учебники ??? ( может я тоже учиться буду )
pokiborСогласен с тобой на счет идей )) Давай-те решим кто будет все предумывать а остальные уже будут вместе решать стоит ли это включать в игру или нет !!

andNsX
15.01.2008, 13:41
HaNproKilleR
Game Maker здесь (HTTP://www.mizzystic.mirahost.ru/), там ещё и обученние

ХаН
15.01.2008, 14:58
HaNproKilleR
Game Maker здесь (HTTP://www.mizzystic.mirahost.ru/), там ещё и обученние
Пасиба ))) Скачал , поставил и начал обучаться )))
Дык четам насчет Java ??? книть может ссылкой поделиться ?????

pokibor
15.01.2008, 15:46
Предлагаю не валять дурака и делать визуализацию через DirectDraw. С ним работать довольно просто, плюс можно прямо к видеопамяти обращаться (удобно и быстро!). Да и польза будет. А какая польза от реализации "танчиков" на GM?

^i_Swep
15.01.2008, 15:53
Вы бы сперва хоть основную модель реализовали, навороты всегда прикрутить можно будет. Ядро что ли сделайте, а то уже скучно читать дискуссию становится...
Конечно. Первый релиз - просто танчики. И надо делать с прицелом на то, чтобы в игру было легко добавить навороты.


Например, несколько оружий - значит надо реализовать танк, который может стрелять не одним оружием, а разными (но пока в наличии имеет только одно :) ). Оружия тоже различаются => нужно заранее определить какие виды оружий могут быть, чем стреляют танки и т.д.
И так для всех аспектов.

Но бросая клич "давайте придумаем апгрейды", Вы рискуете создать поток бесконечых предложений одно краше другого
Во-первых, я такие кличи не бросаю, а во вторых, есть готовый ответ - "оно вам надо ?" :) Я считаю, оптимальным будет сделать всё за неделю. А добавление "тысячи и одной фитчи" этому не поможет. Вообще, идея танчиков тем и хороша - она реальна.

у меня на SoneEricsson работают некоторые игры для Nokia
Они почти все идут на SE (играю ведь :) )

Кстати а че за язык программирования ???
Java 2 ME (mobile edition).
К сожалению, знаний c++, c# на телефонах не имею, а вообще это уже программирование под сматртафон ^^


Если интересно, то начать знакомство с j2me можно с книги - Буткевич Е.Л. "Пишем программы и игры для сотовых телефонов"
Неплохо изложено (хотя много опечаток), написано, что нужно скачать (только jdk советую взять поновее), и давайте все остальные вопросы в отдельную тему. Для GameMaker она и вовсе уже есть.

ХаН
15.01.2008, 17:17
Итак я тут подумал и вот - Короче давайте уже определимся на каком языке писать игру будем , что будет в ней и кто за что отвечает .

^i_Swep дай ссылочку на саму Яву и на учебник если он есть в инете . ПЛИЗЗЗЗ

^i_Swep
15.01.2008, 19:09
^i_Swep дай ссылочку на саму Яву и на учебник если он есть в инете . ПЛИЗЗЗЗ
Про j2me уже сказал, что касается SE (standart edition) то вот, если надо: http://ruseti.ru/Java/
Касательно остальных вопросов, создайте пожалуйста тему !

Короче давайте уже определимся на каком языке писать игру будем, что будет в ней и кто за что отвечает .
ORTODOX дай нам знать, сколько тебя ещё ждать ? :)

DEAD_Angel
15.01.2008, 23:32
Например, несколько оружий - значит надо реализовать танк, который может стрелять не одним оружием, а разными (но пока в наличии имеет только одно ). Оружия тоже различаются => нужно заранее определить какие виды оружий могут быть, чем стреляют танки и т.д.
И так для всех аспектов.
Давайте сначала создадим "стандартную" модель танка, а "спрайт подменить" это раз плюнуть...

ORTODOX дай нам знать, сколько тебя ещё ждать ?
В бан на неделю обычно уходят, по моему...

Если получится, завтра "танчик" (рисунок, если кто не понял) выложу.
Сначала надо-бы версию для PC делать, а потом адаптировать под сотик...

^i_Swep А ты Java долго изучаеш (изучал) ?

ХаН
16.01.2008, 08:26
DEAD_Angel
Я так понял ты уже работать над графикой начал ????? Мы вроде как вместе должны ей заниматься :)) Так что я тоже выложу версию своего танчика :)) :)) :))

З.Ы. DEAD_Angel заведи себе аську )) Так легче объщаться будет ))

andNsX
16.01.2008, 10:00
HaNproKilleR
А графика какая? Если мульташная, то у меня есть спрайт Зелёного и Голубого танка.

ХаН
16.01.2008, 10:25
andNsX
А вот здесь я неподумал :( Надо мне с DEAD_Angelом поговорить на этот счет . Да и вообще когда вообще оффициально проект начнет свою разработку ?????

andNsX
16.01.2008, 10:43
HaNproKilleR
Ну руководитель ORTODOX, но он в бане. Нужно ждать.

ХаН
16.01.2008, 11:46
andNsX
Ок :)) Ждем тока скока ему в бане то сидеть?????

На счет танчика - яу меня он не получаеться (( DEAD_Angel жду твою версию :))

andNsX перекинь мне свои танчики .

DEAD_Angel
16.01.2008, 15:15
А графика какая? Если мульташная, то у меня есть спрайт Зелёного и Голубого танка.
HaNproKilleR,andNsX я думаю мультяшная графика будет, а там как ORTODOX скажет.
andNsX Покажи спрайты.

Вот скетч оружия и апгрейдов (будет больше):
http://i004.radikal.ru/0801/a5/d7a43a2d9e6c.jpg
Вот танчик (другие цвета сделаю...):

С маленьким недочётом:
http://i025.radikal.ru/0801/a8/5fdef60b2d2e.jpg
Недочёт исправлен:
http://i004.radikal.ru/0801/7d/708b19c8b00e.jpg
HaNproKilleR Выложи свой вариант, если хочеш подправь мой. :)

P.S. Какой движок будет ? Алфа канал делать ?

andNsX
16.01.2008, 17:28
Танк правдо не мой, но выглядит ничё, буду свой разрабатывать.
DEAD_Angel
Движок не знаю, но вместо альфы можешь как на моём ГИФЕ зелёным красить.
http://smages.com/i/92/14/9214614130eb25544ac54282fe55b0c6.gif

^i_Swep
16.01.2008, 19:32
Сначала надо-бы версию для PC делать, а потом адаптировать под сотик...
Не, проще сразу под сотик
^i_Swep А ты Java долго изучаеш (изучал) ?
Да уж не помню, где-то больше года. С основами (по буткевичу) можно быстро разобраться (если стараться).
HaNproKilleR
А графика какая? Если мульташная, то у меня есть спрайт Зелёного и Голубого танка.
Мне даже в голову не пришло ;D. Давайте определяться, какой стиль (хотя спрайты можна всегда поменять)
P.S. Какой движок будет ? Алфа канал делать ?
Конечно, с альфой и прозрачным фоном


Не хочу расстраивать, но окошко у телефона небольшое, рисуйте помельче :) Там ещё кусты и стены есть xD

pokibor
16.01.2008, 19:34
Герои... Ещё даже общая схема игрового процесса и ядра не готова, а вы уже рисуете что-то для игры.

По теме альфа-канала: DirectDraw его поддерживает даже в различных вариантах. Это касательно движка ;-) DirectDraw, конечно, не движок, а библиотека, но, по крайней мере, в её использовании есть обучающий смысл.

andNsX
"Верное" решение. И ведь что танк сам по себе в зелёных тонах, никто не посмотрел. Если изображать альфа-канал каким-то цветом, то этот цвет должен разительно отличаться от всех остальных на рисунке.

Насчёт ORTODOX'а могу лишь посоветовать, чтобы Вы его особо не ждали. Его предупреждения истекут весьма нескоро...

DEAD_Angel
16.01.2008, 21:24
Не хочу расстраивать, но окошко у телефона небольшое, рисуйте помельче Там ещё кусты и стены есть xDА в фотошопе размер (разрешение) изменить всегда можно. :)

Герои... Ещё даже общая схема игрового процесса и ядра не готова, а вы уже рисуете что-то для игры.
Мне просто в школе скучновато, вот и придумываю.

P.S. Я альфу буду делать "чёрно-белую" в фотошопе.

Feanor62rus
16.01.2008, 21:34
Вы че всерьез полагаете, что танк, нарисованный в пейнте, прокатит?

andNsX
17.01.2008, 08:44
pokibor
Я его компилировал в Javа, и всё нормально. Дело в том что ГИФ кажется не поддерживает степени прозрачности. Может быть только полностью прозрачно. Для этого кодходят цвета 64,128,0 и 255,0,255. А зелёный цвет у меня выбрал сам фотошоп.
DEAD_Angel
Не проще ли сделать фон прозрачным и рисовать, потом поставить индексированые цвета и экспортировать? Прозрачность сохранится.

ХаН
17.01.2008, 09:41
pokibor
ты вроде модер может скажешь скока еще ORTODOX сидеть в бане ( если конешно знаешь :)) )
DEAD_Angel
andNsX
Неплохие танчики )) Я свой рисовать наверн небуду :( Я лучше ландшафты и оформление нарисую :))

pokibor
17.01.2008, 09:44
pokibor
Я его компилировал в Javа, и всё нормально. Дело в том что ГИФ кажется не поддерживает степени прозрачности. Может быть только полностью прозрачно. Для этого кодходят цвета 64,128,0 и 255,0,255. А зелёный цвет у меня выбрал сам фотошоп.

GIF (http://ru.wikipedia.org/wiki/GIF) - формат с 256'ю цветами и палитрой, в которым один цвет можно сделать прозрачным. Про саму разумность его применения я ничего не говорил, хотя мне всё-таки кажется, что 256'и цветов как-то маловато. И что Вы всё с java и сотовыми телефонами носитесь? Из-за малого экрана у игрока не будет информации о всём поле боя, либо танк будет иметь размер в несколько пикселей.

Кстати, как выяснилось, в DirectDraw с аппаратной поддержкой прозрачности туго. Хотя битовая прозрачность есть. В общем, для "Танчиков" его вполне хватит (там, если что, можно реализовать софтверную прозрачность, ибо есть доступ напрямую к видеопамяти, пусть и довольно медленный), а вообще надо Direct3D или OpenGL использовать.

HaNproKilleR
Я не имею права разглашать подобную информацию, да её в явном виде и нет. Могу лишь сказать, что, судя по всему, долго.

DEAD_Angel
17.01.2008, 12:48
Вы че всерьез полагаете, что танк, нарисованный в пейнте, прокатит?
Ну не в пеинте а в фотошопе... Я понимаю, что ты типа уже проф. 3д модельер, но в отличии от тебя не все такие опытные...

Неплохие танчики )) Я свой рисовать наверн небуду Я лучше ландшафты и оформление нарисую
Да согласен, ты уровни и окружение делай, а то я как-то уровни туго придумываю... :)

Не проще ли сделать фон прозрачным и рисовать, потом поставить индексированые цвета и экспортировать? Прозрачность сохранится.
Я сначала, неподумав, на непрозрачном фоне рисовал... И рисунок я ещё так в .JPG выложил, когда надо будет оптимизирую... :)

andNsX А ты спраит танка, случайно не из "Гамаковской" Дюны выдернул ?

andNsX
17.01.2008, 14:39
DEAD_Angel
Не из дюны а из Архива на Мизизце. Кстати я думаю, что мобильник это бред, я почти закончил свою Гамаковскую, и скоро выложу.

DEAD_Angel
17.01.2008, 14:54
Не из дюны а из Архива на Мизизце.
А что за архив ?

Кстати я думаю, что мобильник это бред, я почти закончил свою Гамаковскую, и скоро выложу.
Под мобилу можно, но потом, когда PC версию сделаем... Я тоже на гамаке свою версию хотел сделать, но ты опередил... посмотрим :)

andNsX
17.01.2008, 15:00
DEAD_Angel
Это архив спрайтов с Сайта о Гамаке. Сейчас экзешник танков кину...
Вот ссылка http://ifolder.ru/4986017

ХаН
17.01.2008, 16:26
DEAD_Angel
договорились))

Итак у меня такое предложение:
ORTODOX
наверно еще в бане будет долго поэтому предлагаю выбрать нового главу проекта ( при всем мое уважении к ORTODOX ) И еще даайте составим список участников ( я могу заняться ) Кто хочет участвовать то пусть Красным цветом в своем посте напишет УЧАСТВУЮ

^i_Swep
17.01.2008, 16:29
Жду вашего слова - кто собирается делать танчики на мобильник

andNsX
17.01.2008, 16:30
HaNproKilleR
УЧАСТВУЮ
И ещё можешь мою Гамаковскую версию (бета) посмотреть.
^i_Swep
Я только на ПК.

ХаН
17.01.2008, 16:40
andNsX
Запишу )) ОК завтра скачаю и гляну ))
^i_Swep
Я бы непротив ))

И еще голосуем за нового главу проекта ( если он вообще нужен ) Кондидата пишем ЗЕЛЕНЫМ цветом

Миланчег
17.01.2008, 17:10
ORTODOX , будет в субботу или воскресение, так что ждите :)
ЗЫ Я не феик, просто один канал на площадку, в деревне почти живем :)

DEAD_Angel
17.01.2008, 21:12
^i_Swep
Я сначала для PC хочу сделать, а потом под сотик. И я вотношении сотика (в програмировании) немного ламо, так что ты там движок или как там (основу игры) напиши, а потом додумывать будем. :)

Простите, немного не потеме, у меня такая трабла: Некоторые архивы (как andNsX'а танчики) открываются с ошибкой. Как решить проблемму. Ответ писать в личку.

HaNproKilleR
УЧАСТВУЮ

Кстати, господа, красный цвет он для модераторов вообще-то, в постах его просто так нельзя использовать.

ХаН
18.01.2008, 07:34
Итак раз ORTODOX появиться либо завтра либо после завтра то он и остаеться руководителем проекта :sml:

Участники :
DEAD_Angel - художник
andNsX - гамакер
HaNproKilleR - художник
ORTODOX - руководитель проекта

Если есть какие ошибки поправте :sml: Если кто хочет стать участником проекта то он в своем посте должен написать УЧАСТВУЮ и я занесу его в список участников .


Я вот тут (http://ifolder.ru/4996333) выложил скин первого уровня .Посмотрите ))

andNsX
На счет твоей версии танчиков - Впринципе неплохо )) Но надо-бы добавить меню , малость поработать над графикой и еще кое -какие мелочи )) А то очень даже неплохо :))

andNsX
18.01.2008, 09:01
HaNproKilleR
Я не программист я на Гамаке делаю, а там не особо то програмирую.
DEAD_Angel
А какая у тебя личка?(номер аси)

ХаН
18.01.2008, 09:23
andNsX
непроблема....исправим Кстати а как про тебя написать ??? ( GameMаker может ))) И еще давайте все себе аську заведут так реально удобней ))

andNsX
18.01.2008, 09:26
HaNproKilleR
А запиши меня в Гамакера в списке.!
Ася в онлайне 355800942

ХаН
18.01.2008, 09:37
andNsX
все.исправил.Кстати че ты в аске непоявляешься??

DEAD_Angel
18.01.2008, 11:57
А какая у тебя личка?(номер аси)
Пока пиши на форум в ЛС. (Акаунт аськи есть, но в нём знак _ (подчёркивания), и в проге нельзя вводить _ , как тогда войти?)

HaNproKilleR
Уровен ничего, правда маленький (для сотика сойдёт, но для компа нет). :)
И что там слева на рисунке ? (овраг, чтоли ?)

P.S. На форуме есть ЛС, туда и пишите типа "чего ты в асе не появляешся ?", а то это мы в оффтоп уходим... :)

ХаН
18.01.2008, 14:22
DEAD_Angel
чтобы войти в асю напиши в поле ввода свой номер аккаунта ))

Сорри что не по теме !!!

Разве 1024х1024 это маленький уровень ?? Слева типа оврага )

DEAD_Angel
18.01.2008, 16:04
Разве 1024х1024 это маленький уровень ?? Слева типа оврага )

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

^i_Swep
18.01.2008, 16:51
HaNproKilleR
У меня ifolder не открывается :(

DEAD_Angel
18.01.2008, 20:59
andNsX
Ето только у меня, поле боя, кишит танчиками :eek:. Сделай AI поумнее, тогда и танчиков меньше понадобится :). Я надеюсь там и "наша" графа, и идеи будут. :)



У меня ifolder не открывается
В смысле вообше сайт не открыватся, или не качает ?

pokibor
18.01.2008, 21:10
Ну-ну, уровни уже начали рисовать-обсуждать...
А ведь в танчиках вообще-то поле блочное, если кто-то забыл. Уровень такой в виде подложки - это, конечно, хорошо, только всё-таик было бы неплохо для начала обсудить собственно концепцию поля боя, уж если на то пошло. Какие блоки, насколько они маленькие, сколько блоков будет занимать танк и т.д. и т.п.

DEAD_Angel
18.01.2008, 21:16
Ну-ну, уровни уже начали рисовать-обсуждать...
А ведь в танчиках вообще-то поле блочное, если кто-то забыл. Уровень такой в виде подложки - это, конечно, хорошо, только всё-таик было бы неплохо для начала обсудить собственно концепцию поля боя, уж если на то пошло. Какие блоки, насколько они маленькие, сколько блоков будет занимать танк и т.д. и т.п.
Да, мы вообще чего-то немного завязли...

andNsX
И ещё, насчёт танчиков: как-то не "катит" идея с "переездом". :)

^i_Swep
18.01.2008, 23:19
В смысле вообше сайт не открыватся, или не качает ?
В смысле вообще. Перезалейте плиз

Ну-ну, уровни уже начали рисовать-обсуждать...
Это концепт-арт ! :)


Раз есть те, кому нравится идея писать под сотовый, то давайте обсуждать вместе обе версии. А я уж основу начну делать.

Для начала можно поговорить про поле. Даже чуть конкретнее:
какими свойствами может обладать каждая клетка (а дальше следующий аспект и т.д.).
Начну: картинка (её номер), проходимость (проедет ли танк) ... и лень дальше думать, вообще мне ещё сегодня учиться надо :(

p.s. не оставляю надежд - ищем java программера, вдвоём будет веселей

pokibor
19.01.2008, 00:21
Начну: картинка (её номер), проходимость (проедет ли танк) ... и лень дальше думать, вообще мне ещё сегодня учиться надо :(
О, как подробно! :lol:
Ладно, давайте я на правах консультанта проекта внесу свои пять копеек.
Вопросы:
1) Сколько единичных блоков будут равны по размеру танку? Ответ "ясное дело, 1" заведомо неправилен. Если помните, в оригинале с кирпичной стены сносилось, кажется, по 1/4 за выстрел => там единичный блок (который либо есть, либо его нет) был равен 1/16 танка, а ответ на вопрос - в танке было 4x4 единичных блоков.
2) Имеет ли смысл объединять единичные блоки в более крупные образования для экономии памяти и небольшого ускорения рассчётов, связанных с движением? В оригинале они, ясное дело, объединялись. Но мы себе можем позволить этого не делать, получив взамен возможность сделать, например, пол-большого-блока леса, четверть кирпича и четверть стали. (большой блок - блок, равный размером танку).
Если ответ "можем", то вопрос №1 отпадает - кол-во блоков на танк элементарно делается настраиваемым.
3) Структура информации о блоке. Картинка - чушь, ибо она не имеет отношения к ядру игры, а я настоятельно рекомендую не привязывать ядро к визуализации.
Проходимость - да, но она не должна быть "да/нет", а разумно сделать поставить ей коэффициент модификации скорости. Если он 0 => поверхность непроходима.
Далее должен быть тип блока в виде некой внутренней константы. Из него-то как раз и будет визуализатор получать картинку и прочее.
Прочность/броня - также разумно сделать такие поля. Если мощности снаряда не хватает для пробития брони - урон не наносится вообще (так делается сталь). Ну а с прочностью вроде понятно и так. Как раз будет задел на будущее расширение.
Вот, уважаемые. Отвечайте на эти вопросы. А я тут пока копаюсь в Direct3D в плане двухмерной графики, так что, возможно, вам будет скоро набор классов для упрощения визуализации выдан.

P.S. Особо умным товарищам, старательно выискивающим поводы для возвышения себя. Если Вы думаете, что я специально для этого на gamedev'е выяснял и говорил про максимально быстрый вывод графики, то ошибаетесь. Сюда я выдам нечто простенькое и ориентированное на новичков. Я вообще хотел обойтись DirectDraw с его тормознутой недо-альфой, но раз уж всё равно Direct3D придётся юзать, то зачем распылять свои силы?
Я там даже (о, ужас! :lol:) буду D3DX-функции юзать. А вот на C# не надейтесь.

andNsX
19.01.2008, 10:37
andNsX
Ето только у меня, поле боя, кишит танчиками :eek:. Сделай AI поумнее, тогда и танчиков меньше понадобится :). Я надеюсь там и "наша" графа, и идеи будут. :)

Я работаю. По идее они должны разворачиваться, но чтото не хотят. Буду думать. А идеи будут!

DEAD_Angel
19.01.2008, 13:07
1) Сколько единичных блоков будут равны по размеру танку? Ответ "ясное дело, 1" заведомо неправилен. Если помните, в оригинале с кирпичной стены сносилось, кажется, по 1/4 за выстрел => там единичный блок (который либо есть, либо его нет) был равен 1/16 танка, а ответ на вопрос - в танке было 4x4 единичных блоков.

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

В смысле вообще. Перезалейте плиз
Это у тебя наверно что-то с браузером, с инетом и т.п.

L'ombre
19.01.2008, 18:46
3) Структура информации о блоке
ещё кое-что добавлю. нужно определить взаимодействие блоков со снарядами. например, в оригинале есть интересный тип поверхности - вода, непроходима для танков (проходимость == 0), но снаряды спокойно пролетают (логично предположить, прочность == 0)
ещё одна мысль: если будут продумываться разные типы оружия, то кроме мощности есть смысл ввести "проникаемость" (как поле у снаряда) - т.е. насколько толстый слой блоков взрывает этот сняряд. Опять же, в оригинале (по крайней мере в одном из них..) "продвинутая" пушка, стреляющая двумя снарядами и пробивающая бетон, взрывала два слоя кирпича каждым снарядом, в то время как стандартное орудие - один.
думаю, что танчик должен быть равен 6 блокам
если имеется в виду "танк состоит из шести блоков" (а не "танк занимает 6*6 блоков"), то получается прямоугольный танк - значит, он не всегда сможет развернуться на месте; в оригинале танки были квадратными.

^i_Swep
19.01.2008, 19:53
Картинка - чушь, ибо она не имеет отношения к ядру игры, а я настоятельно рекомендую не привязывать ядро к визуализации.
Дык я как попроще изъсняюсь, естесно номер картинки == тип клетки. Вот только сначала подумал:
Сколько единичных блоков будут равны по размеру танку? Ответ "ясное дело, 1" заведомо неправилен
Ну давно я играл ! :) Откуда помнить

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

Это у тебя наверно что-то с браузером, с инетом и т.п.
Ну хз, картинку то я не посмотрел..

Ещё одно свойство - в оригинале можно скрыться под клеточкой "кусты" (правда только от друга, не от ai), как такое будем реализовывать? Два слоя / отдельная переменная или ещё что-нить..
И второе. Вроде как в танчиках клетки при попадании исчезали.. не знаю, там была степень разрушения ?

pokibor
19.01.2008, 20:10
L'ombre
Верно, однако я думаю, что проникаемость можно будет включить в хиты брони как особое значение, а разрушаемость лучше сделать свойством снаряда и рассчитывать исходя из урона. Хотя это, конечно, надо решать.


прочность, это типа хитпойнты, а броня - минимальная мощность снаряда, чтобы пробить препятсвие ?
Да.

Ещё одно свойство - в оригинале можно скрыться под клеточкой "кусты" (правда только от друга, не от ai), как такое будем реализовывать? Два слоя / отдельная переменная или ещё что-нить..
Логически? Особые свойства типа клетки. Визуально - альфу поверх. А AI, прошу помнить, в оригинале не было. Враги ездили и стреляли совершенно бездумно под влиянием генератора случайных чисел, кажется.

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

DEAD_Angel
19.01.2008, 20:55
А мы будем оригинал делать? или "новые" танчики?

Мне кажется сильно всё сдирать с оригинала не стоит... А AI, если можно, надо-бы сделать (игра интересней будет) И давай-те делать танчики с разрушением :)

pokibor
19.01.2008, 22:06
DEAD_Angel
А оригинальные были без разрушения? :eek:
Вы думайте-думайте, у меня уже первая побочная бета-версия простейшего 2D-движка готова. Много что прикручивать было лень (напр., мультитекстурирование, но хочу со временем его добавить - пусть будет), но зато вышло вроде более-менее просто, хотя, может, и немного тормознуто, но есть куча другой работы (напр., над куда более быстрой 2D-прогограммой для других целей), так что извините.
Когда её протестю - могу выложить. Правда, она на C++...

P.S. Тут подумал... У уважаемых участников проекта есть знания в плане Windows API? А то ж создание окна в функции не входит... Если нет, то лучше я его добавлю внутрь класса, или как надстройку, а по сообщениям буду callback'и, ясное дело, вызывать.

L'ombre
19.01.2008, 22:33
а разрушаемость лучше сделать свойством снаряда
я это и имел в виду, только назвал по-другому:

есть смысл ввести "проникаемость" (как поле у снаряда)


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

т.е. как Attack и Damage в dnd

прочность, это типа хитпойнты, а броня - минимальная мощность снаряда, чтобы пробить препятсвие ?
и вот кстати ещё вопрос, который надо продумать. - будут ли у блоков хитпойнты, или блок разрушается сразу, как только мощность снаряда оказалась больше его брони? Очевидно, хитпойнты - это более общий случай, может быть, лучше реализовать его. Но тогда ещё вопрос - если снаряд должен уничтожить несколько клеток, то как распределяется урон? снаряд может, например, вычесть свой урон из хитпойнтов всех клеток, которые он затрагивает (гнапример, снаряд с уроном 5 вычитает 5 хитпойнтов из четырёх соседних клеток); или же сделать так, чтобы у снаряда была некая энергия, которая в в сам момент столкновения равна его урону, а потом уменьшается, уменьшая при этом хитпойнты клеток (например, снаряд с уроном 5 взрывает одну клетку с тремя хитпойнтами и вычитает ещё два хитпойнта из следующей)

DEAD_Angel
19.01.2008, 22:47
У уважаемых участников проекта есть знания в плане Windows API?
А что такое Windows API ? :confused: Думаю, для дизайнера эти знания не так нужны? Или всё-же нужны? :confused:

pokibor
19.01.2008, 23:00
DEAD_Angel
Дизайнеру-то конечно, нет, а вот программисту не помешали бы. Вообще, я уже запутался, кто у вас за что отвечает? Вообще, программисты в команде есть, или только на словах? А то пока вся игры выливается в один рисунок, которые некоторые к тому же скачать не могут!
P.S. Народная примета: если человек не знает, что такое Windows API, значит, оно ему и не надо.

DEAD_Angel
19.01.2008, 23:11
Вообще, программисты в команде есть, или только на словах?DEAD_Angel - художник
andNsX - гамакер
HaNproKilleR - художник
ORTODOX - руководитель проекта
^i_Swep - программер, вроде, но на Java

ORTODOX
20.01.2008, 14:52
pokibor
Ты учавствуешь? Твое неоцинимое знание С++ сильно бы помогло нашему проекту ;)
Кто-нибудь музыкой увлекается? Надо еще мюзишн сочинить :))
Игру можно разработать и под телефон(что в школе то делать))))
Я хотел на троих, т.е 3 игроков могло бы играть ,это бы было клево :))

pokibor
20.01.2008, 16:38
pokibor
Ты учавствуешь? Твое неоцинимое знание С++ сильно бы помогло нашему проекту ;)
Я консультант. Моё знание C++ будет вам помогать, но командовать собой я никому не дам. Сейчас вот доделаю движок, будь он неладен (несколько запарился с внедрением окна, да и тест на другой машине выявил крайне странную проблему) и кину его вам. А там посмотрим :wnk:

Кто-нибудь музыкой увлекается? Надо еще мюзишн сочинить :))
Толку, если ещё игровой процесс-то неизвестен?

Игру можно разработать и под телефон(что в школе то делать))))
Я хотел на троих, т.е 3 игроков могло бы играть ,это бы было клево :))
Да хоть на десятерых, если ядро правильно спроектировать, кол-во игроков будет делом настройки управления и карты.
P.S. ORTODOX, смотри, не совершай ошибок, а то опять в бан улетишь, и проект снова останется обезглавленным.

ORTODOX
20.01.2008, 17:01
но командовать собой я никому не дам
у нас никто ни кем не командует ,страна то демократическая :)) , да и форум тоже :))
Сейчас вот доделаю движок,
ждем ;)
Да хоть на десятерых
это радует :)

Добавлено через 41 секунду
Желающте еще есть?

Добавлено через 1 час 11 минут
Что тема затихла :( Обращение к художникам (DEAD_Angel,HaNproKilleR )
танки нарисовали? ЕКсли ответ положительный, то выкладывайте, посмотрим, покритикуем ,похвалим :)) Ждем-с ....

pokibor
20.01.2008, 19:18
у нас никто ни кем не командует ,страна то демократическая :)) , да и форум тоже :))
Командовать можно и прямо, и не прямо. Если я что-то пообещаю и т.п., это уже будет непрямым командованием. Кстати, демократия и командование - вообще разные вещи, никак к друг другу не относящиеся.

Что тема затихла :( Обращение к художникам (DEAD_Angel,HaNproKilleR )
танки нарисовали? ЕКсли ответ положительный, то выкладывайте, посмотрим, покритикуем ,похвалим :)) Ждем-с ....
Только рисуйте сразу с альфой и, желательно, чтобы размер картинки был степенью двойки.

ORTODOX
20.01.2008, 20:15
Только рисуйте сразу с альфой
т.е объяни... пожалуиста ...

pokibor
20.01.2008, 20:39
т.е объяни... пожалуиста ...
Ну, рисунки с альфа-каналом, причём все его градации поддерживаются, а не только есть-нет.

DEAD_Angel
20.01.2008, 21:17
Что тема затихла Обращение к художникам (DEAD_Angel,HaNproKilleR )
танки нарисовали? ЕКсли ответ положительный, то выкладывайте, посмотрим, покритикуем ,похвалим Ждем-с ....
ORTODOX
Мы так рады, что ты вернулся.
По теме: насчёт рисунков, предыдушие посты почитай, я там скетчи и танк выкладывал.
Танк оптимизирую (256*256 будет) , альфу (только будет "чёрно-белая" фотошоповская альфа) сделаю.
P.S. Мы решили что HaNproKilleR будет "левел"-дизайнером.

pokibor
20.01.2008, 21:31
DEAD_Angel
Жду-недождусь, когда вы решите ещё, какие, собственно, уровни он будет дизайнить, т.е. концепцию набросаете.
И потихоньку думайте о рисовании шрифтов для игры. Насколько я знаю, автоматическое создание шрифтов в DirectX мягко говоря неудовлетворительно, на выходе оно даёт шрифт с приличными артефактами.
Не обязательно что-то оптимизировать под 256 x 256 хотя и это не помешает - достаточно просто добавить пустоты до этого размера. степенью двойки должны быть сами текстуры, а уж какой регион из них будет выводится на экран - не имеет значения. Он не обязан быть равным степени двойки.

Да, и вопрос на миллион: кто тут хотя бы знает язык программирования C++? Кто сможет на нём писать? Мои классы сильно облегчат работу и позволят обойтись без знания Windows API и DirectX, но писать-то всё равно будете вы!

DEAD_Angel
20.01.2008, 21:38
Не обязательно что-то оптимизировать под 256 x 256 хотя и это не помешает - достаточно просто добавить пустоты до этого размера.
Я так и сделаю, я же знаю для чего альфа нужна.

Добавлено через 1 минуту
И потихоньку думайте о рисовании шрифтов для игры. Насколько я знаю, автоматическое создание шрифтов в DirectX мягко говоря неудовлетворительно, на выходе оно даёт шрифт с приличными артефактами.
Я незнаю какой "финальный" шрифт, т.е. картинка со шрифтами или ешё какая-то штука... (А шрифт как нибудь придумаем)

^i_Swep
20.01.2008, 21:41
Да, и вопрос на миллион: кто тут хотя бы знает язык программирования C++? Кто сможет на нём писать?
Я :)
позволят обойтись без знания Windows API и DirectX
Вот поэтому и молчал. Я думал, ты под directx собирался делать..
p.s. я прикупил хорошую книжку про directx (автор Андре Ламот, кстати, как твоё мнение, если знаком), но ещё не изучал, нет времени :(
p.p.s. не надейтесь, что за неделю изучу

L'ombre
20.01.2008, 21:57
разработал черновой вариант концепции ядра игры. этот черновик может лечь в основу диздока, той его части, касающейся ядра.

основные сущности в игре:
- уровень, он же interaction manager, в дальнейшем - Level
Управляет взаимодействием всех сущностей
- матрица. состоит из элементов. что очевидно..
- элемент матрицы. CellItem. то, из чего состоит матрица.

- более сложные сущности, в основе которых лежит так называемый Traverser -
это нечто, способное двигаться относительно матрицы.
Оно имеет координаты и направление
при этом остальные объекты матрицы могут оказывать влияние на это движение.

существует два основных подвида Traverser'а:
- MatrixTraverser - это объект, движущийся относительно матрицы И
привязанный к матрице, оставляющий в ней след, имеющий размер.
т.е. вместе с движением объекта перемещается его представление в матрице
- PointTraverser - безразмерный объект, движущийся относительно матрицы И НЕ
оставляющий в ней след (но при этом взаимодействует с остальными объектами)
т.е. объект движется, но не имеет представления в матрице

Таким образом, Танк - это такой специальный MatrixTraverser,
умеющий стрелять, проезжающий по определённым клеткам и не умеющий по остальным и тд.

Снаряд - это PointTraverser, с соответствующими свойствами

Ближе к деталям:

Абстрактные сущности.

Destroyable
Сущность материальная, которую можно разрушить
свойства:
- Armor. Броня, Порог прочности.
определяет взаимодействие с PointTraverser'аим (снарядами)
Чтобы нанести повреждение, нужно, чтобы мощность снаряда была не меньше.
Если броня равна нулю, то снаряды пролетают сквозь этот объект.
- HitPoints. Численное прдставление прочности.
если снаряд пробил броню, то HitPoints уменьшаются.
При достижении значения 0 объект разрушен и исчезает из матрицы
(т.е. заменяется на пустой)
данное свойство показывает текущее значение
- MaxHitPoints - а это максимальное значение Hit Point'ов данного объекта.


Traverser
это нечто движущееся относительно матрицы. Основные свойства:
- X,Y. координаты центра в матрице
- Direction. Направление, одно из четырёх.
- Speed/Delay - так или иначе задаёт скорость

MatrixTraverser
Обладает размером. В общем случае прямоугольный.
- Width, Height - размеры, в клетках матрицы.
Какой ячейке соответствуют координаты, надо решить позже.
Предположительно, той, что ближе к центру.
например, если координата объекта шириной Width == 4 X == 2,
то этот объект занимает ячейки матрицы 1, 2, 3, 4 (нумерация, естественно, начинается с нуля)
(естественно это не окончательное решение)
- ID - может быть некий тип, но пока необязательно..

PointTraverser
на данный момент ещё не решил, должен ли он отличаться просто от Traverser'а,
кроме смысла. А по смыслу - это предок всех снарядов.
Скорее, будут отличаться обработчики событий.
PointTraverser движется иначе. А именно - МЕЖДУ ячейками
(т.е. координаты интерпретируются по-другому)
например, если координата X == 2, то объект находится между второй и третьей ячейкой.

Неабстрактные сущности

CellItem
Элемент (ячейка) матрицы. Потомок Destroyable
дополнительные свойства:
- Passability. Проходимость.
определяет взаимодействие с MatrixTraverser'аим (танками)
(вещественное число. 0 - объект непроходим; отличное от нуля значение влияет на скорость;
1 - нормальная скорость; 0.5 - замедленная в два раза, 2 - удвоенная и тд)
поскольку некоторые клетки могут быть доступны для MatrixTraverser'ов,
для представления этого понадобится ещё одно поле, пусть будет
- Meta. Флаг, который каким-либо образом показывает,
что эта ячейка занята каким-то MatrixTraverser'ом.
Например, порядковый номер танка (индекс в контейнере танков)
Для ядра игры этих свойств достаточно. Для визуализатора понадобится ещё хотя бы одно -
- ID. Уникальное число, идентификатор этого объекта.
Если все взаимодействия определяются вышеописанными свойствами,
то это поле определяет, как нужно объект отрисовывать.
склоняюсь к тому, чтобы не делать сложной иерархии классов для объектов матрицы;
просто все объекты принадлежат к одному классу и отличаются набором свойств.
тогда можно задавать все объекты в рантайме - например, загружать из файла.

Tank
танк является потомком MatrixTraverser'а и Destroyable
(т.е. это объект, способный двигаться в матрице, который можно уничтожить)
со своим набором свойств
- Weapons. вектор орудий. об этом позже.
- Owner. кто этим танком командует. номер игрока, флаг игрок/AI и тд

Missile
потомок PointTraverser'а.
специфические свойства:
- AttackPower. "Пробивная сила". Сравнивается с Armor объектов и танков.
- Damage. Повреждения, наносимые объектам, после того, как пробита броня.
- DamageDepth, DamageWidth - определяют область, затронутую взрывом
- Charges. Свойство, призванное обобщить концепцию снаряда.
Это "количество зарядов" - сколько раз снаряд может взорваться.
То есть, снаряд, после того, как он столкнулся со стеной и взорвал её,
может полететь дальше. Звучит абсурдно для снаряда, но это может быть лазер
или плазменный шар. При достижении количества 0 снярад уничтожается.
(если броня не пробита, или же хитпойнтов оказалось слишком много,
то не важно, сколько зарядов - снаряд уничтожается)
- Owner. Танк, выпустивший этот снаряд. Это понадобится для обработки Friendly Fire -
смогут ли танки противника повреждать дуг друга.

Остальные сущности

Weapon.
Оружие танка. определяется свойствами:
- Тип снаряда. идентификатор (если у снарядов будут идентификаторы)
или собственно указатель на объект.
- Скорострельность. - это максимальное количество снарядов, выпущенных из этого орудия,
которые могут существовать в каждый момент времени.
Например, если 1 - то танк не может выстрелить, пока не взорвётся выпущенный ранее снаряд.
и т.д.
У танка может быть несколько орудий, между которыми можно переключаться.
Делать заканчивающиеся снаряды, думаю, нет смысла.

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

RespawnPoint
точка возрождения. так как это точка, то это просто потомок какого-нибудь Traverser'а

PowerUp
объект, имеющий размер, при "столкновении" с которым танк получает какой-либо бонус:
- новое оружие
- усиление брони или HP
и тд
потомок MatrixTraverser'а, хоть и не движется. Основное свойство - тип бонуса.

BaseStation
(название надо обдумать)
это такой объект, который вражеские танки стремятся уничтожить.
опционально. тоже потомок MatrixTraverser'а и Destroyable

Структура игрового процесса

Основная сущность:
Level, уровень.
основные элементы:
- Матрица
- Вектор танков.
- Список снарядов
дополнительные:
- контейнер точек возрождения
- контейнер powerup'ов
- "базовая станция", которую нужно защищать.

(к контейнеру танков потребуется произвольный доступ,
а объекты из контейнера снарядов должны легко удаляться)

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

Двигаться могут танки - находящиеся в одном списке - и снаряды - в другом.
Выстрел любого танка добавляяет его снаряд в список снарядов.
Танк может добавить в список несколько снарядов.
попадание снаряда во что-либо может удалить его из этого списка.
Попадание в танк может его уничтожить - уничтоженный танк не удаляется из контейнера,
так как возможен respawn - этот экземпляр будет перемещён в другое место и "воскрешён"
(если закончились все танки в "запасе",
то этот танк просто пропускается при дальнейшей обработке).


небольшой пример взаимодействия:

допустим, снаряд перемещается на одну ячейку вперёд.
Некий метод уровня вызывает метод снаряда OnMove,
который смотрит, что находится в новой точке
там оказывается слой кирпича. Поскольку у кирпича есть броня, не равная нулю,
то создаётся объект Explosion. вызывается метод Run этого объекта;
туда передаётся снаряд, породивший взрыв. Этот метод определяет зону, затронутую взрывом,
и вызывает для каждой ячейки метод OnExplosion.
Этот метод (у каждой ячейки) анализирует параметры снаряда и сопоставляет их со своими параметрами. Поскольку это крипич, броня его меньше, то он должен повредиться.
Damage снаряда достаточно высок, и весь слой просто взрывается - то есть каждая ячейка
трансформирует себя в пустую ячейку.
управление возвращается в OnMove снаряда,
и там уменьшается на единицу зачение Charges;
получившееся значение возвращается в вызывающий метод уровня,
оказывается, что это 0, значит снаряд нужно уничтожить. Снаряд удаляется из списка.


L'ombre
Кто ты? Т.е кем будешь?
я - ваш кошмар! :)
не знаю, будет ли у меня время реализовать всё это. Скорее всего, программить вышеописанное придётся кому-то из вас.
так что мне логичнее стать консультантом

DEAD_Angel
20.01.2008, 21:58
^i_Swep
А ты кто (в смысле про список учавствующих)?
*вопрос устарел, уже исправили*

ORTODOX
20.01.2008, 22:05
L'ombre
Кто ты? :) Т.е кем будешь? Я тебя в участники забью :))

pokibor
20.01.2008, 22:21
L'ombre - отлично! Ну, ты уже знаешь :Grin:
ORTODOX - Думаю, нас с L'ombre и правда лучше записать в консультанты :P


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

System32
20.01.2008, 22:32
Вот так всё и начинается ! Сначало делают танчики , а потом глядишь и Crysis переплюнут !:cr: Хороша задумка , доделайте до конца plz !!! :mania:

ORTODOX
20.01.2008, 22:35
System32
Постараемся :Emba:

DEAD_Angel
20.01.2008, 22:41
System32
Давай к нам, т.е. записывайся в участники. Что умеешь ?

ORTODOX
20.01.2008, 22:45
Может я еще чем-то помочь могу? :))

System32
20.01.2008, 22:48
Ну я даже не знаю . 5 лет отучился учился рисовать , закончил с синим дипломом и красной рожей ! :lol:
Как говорится : "лучше закончить с синим дипломом и красной рожей , нежели с красным дипломом и синей рожей !"

DEAD_Angel
20.01.2008, 23:02
Ну я даже не знаю . 5 лет отучился учился рисовать , закончил с синим дипломом и красной рожей !
Так как, рисуеш хорошо ?
Записывайся, еще одним художником будешь :)) ;)
__________________________________________
Вот танчик: http://dump.ru/files/n/n8277458/
P.S. Заранее предупреждаю, достаточного опыта работы с форматом .DDS не имею, так что если какие-то недочёты будут...

System32
20.01.2008, 23:19
Чем я могу его просмотреть ? Фотошопом ?

DEAD_Angel
20.01.2008, 23:21
Чем я могу его просмотреть ? Фотошопом ?
Да, можно фотошопом, НО НУЖЕН ПЛАГИН СЕЙЧАС, минуточку, ССЫЛКУ НА ПЛАГ ДАМ...
....Вот http://dump.ru/files/n/n955894405/

ORTODOX
20.01.2008, 23:25
DEAD_Angel
А чем-нибудь кроме фотожопа открыть можно?

DEAD_Angel
20.01.2008, 23:33
DEAD_Angel
А чем-нибудь кроме фотожопа открыть можно?
Да, вьювером каким-нибудь (например NERO Photosnap viewer, вместе с неро есть)

Вот плаг для фотошопа ("натуральную" ссылку непомню, поэтому свой плаг выкладываю): http://dump.ru/files/n/n955894405/
Ах, да, ещё установка: "кидаем" в (писал "примерно", т.е. не совсем точно названия писал) [директория фотошоп]\Plug-ins\import-exsport\

ORTODOX
20.01.2008, 23:38
DEAD_Angel
Приличный, красивый танчик :))
Хочу услышать мнение других ...

DEAD_Angel
20.01.2008, 23:41
Приличный, красивый танчик
А ты ещё скетчи оружия и апгрейдов видел (где-то на предыдуших страницах), как одобряешь ?

pokibor
20.01.2008, 23:46
Собираю данные по глюкам моих классов. Пока что на одной видеокарте из трёх (NVidia'вской) был замечен странный баг, на других (ATI'шных, из которых одна была в варианте для ноута) не появлявшийся. Следовательно, мне нужно собрать данные.
Выложил на Ifolder и webfile тестовую программку. Насколько я могу судить, она требует редистрибутивы VC (но они сейчас со многими играми идут, так что, надеюсь, у всех есть) и ноябрский DirectX (аналогично).
http://ifolder.ru/5034129
http://webfile.ru/1696678
В общем, запускайте и говорите результат. Только просьба запускать в разрешении 800 x 600 (просто у одного квада координаты абсолютные), попробовать и в оконном, и в полноэкранном режимах.
По идее, лицо на кваде с альфой должна быть видна поверх квада подложки. Если альфа работает, а лицо абсолютно чёрное - знаит, это и есть тот самый баг. Тогда буду думать, что делать.

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


#include "global.h"
#include <stdio.h>
#include <windows.h>
#include < D3d9.h>
#include "renderer.h"
#include "r_window.h"
//-----------------------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
D3DWindow *rw = new D3DWindow();
D3DBaseSettings settings;
if (rw->ShowRenderDialog(hInstance, settings)) {
if (rw->CreateD3DWindow(settings, hInstance, iCmdShow)
&& rw->PrepareToRun()) {
D3DDevice *dev = rw->GetD3DDevice();
D3DTexture *tx, *tx1;
D3DQuad *q, *q1;
rw->ShowCursor(false);
tx = dev->LoadTexture(L"data\\test.png");
tx1 = dev->LoadTexture(L"data\\test.bmp");
q = dev->CreateQuad(tx1, true,
true, 400, 100, 400, 400,
true, -1, -1, -1, -1);
q1 = dev->CreateQuad(tx, false,
false, 0.0, 0.5, 1.0, 1.0,
true, -1, -1, -1, -1);
while (rw->Run()) {
if (rw->IsActive() && dev->BeginPaint()) {
q->Draw();
q1->Draw();
dev->EndPaint();
}
}
}
rw->Run();
}
delete rw;
PostQuitMessage(0);
return 0;
}

ORTODOX
20.01.2008, 23:52
DEAD_Angel
да,красивенько,только немного мультяшно,но ничего посмотрим еще :)
Хочу услышать мнение других !

DEAD_Angel
20.01.2008, 23:56
pokibor
у меня ATI Radeon x1600, всё работет нормально.

да,красивенько,только немного мультяшно,но ничего посмотрим еще
Ну если не мультяшно делать, то это к другим художникам (у мну только мультяшно получается).

ORTODOX
20.01.2008, 23:58
pokibor
Вот как у меня
http://i035.radikal.ru/0801/25/f4445ba681fft.jpg (http://radikal.ru/F/i035.radikal.ru/0801/25/f4445ba681ff.jpg.html)
ЗЫ Конфа в профиле ,Windows Vista

Добавлено через 36 секунд
Ну если не мульташно делать, то это к другим художникам (у мну только мультяшно получается).
жа ничего :) Нормально ;)

pokibor
21.01.2008, 00:03
DEAD_Angel, ORTODOX
Спасибо за тест!
Отлично, всё нормально! И даже под Вистой! :Grin:

ORTODOX
21.01.2008, 00:05
И даже под Вистой!
это радует :)
DEAD_Angel
Честно говорю,что мне нравится :)

ХаН
21.01.2008, 09:24
Мня тока один день небыло......а тут уже стока всего что я даже неуспеваю за всем следить :sml:
ORTODOX
с возвращением тебя :sml:
pokibor
скачал твой архив и при запуске у меня ошибка :(
DEAD_Angel
танчик норм :sml:

P.S.Мне новые уровни делать или как ???? ( пример я уже выкладывал ) А то вроде тут говорили что нужно както подругому их делать :sml:

ORTODOX
21.01.2008, 11:05
с возвращением тебя
спасибо :)
Мне новые уровни делать или как ???
ждем pokibor ,он вроде говворил,ччто надо как-то их по особому делать ... :))

ХаН
21.01.2008, 11:55
ORTODOX
что-ж ждем :)) Я наверно тода буду оформление меню придумывать :sml:

pokibor
21.01.2008, 13:13
HaNproKilleR
Насчёт архива. Какая ошибка? Скорее всего, у Вас не установлен последний DirectX либо нет редистрибутивов C++.
Насчёт уровней. Кто левел-дизайнер, Вы или я? Ясное дело, перед проектирование уровней надо с концепцией игры разобраться, ибо уровни вроде как не симпатичные картинки, а набор игровых объектов всё-таки. Если у нас (сорри, "у вас" - я всего лишь консультант :P) ещё даже неизвестно, какие типы блоков в игре будут - о каких уровнях вообще может идти речь, Вы что???

^i_Swep
21.01.2008, 15:45
L'ombre
Молодец, спасибо что не пожалел времени. Отлично продумано

В общем, это будет основа диздока. ORTODOX добавь в первый пост.

Пара комментариев.

- Скорострельность. - это максимальное количество снарядов, выпущенных из этого орудия,
которые могут существовать в каждый момент времени.
Например, если 1 - то танк не может выстрелить, пока не взорвётся выпущенный ранее снаряд.
и т.д.
Можно добавить cooldown танку (в млсек), время, в течение которого он не может ещё раз стрельнуть

игровое время дискретно. каждую единицу времени каждый активный объект выполняет некое
Я думаю, выстрел танка будет анимирован, а раз время дискретно, то тоже нужно добавить cooldown - время выстрела. Кстати на основе этого свойства и количества кадров в анимации, можно будет потом программно просчитывать скорость смены фреймов.

Попадание в танк может его уничтожить - уничтоженный танк не удаляется из контейнера
Раз это диздок, то давайте уточним этот момент: предполагаю, надо дописать, что у level'a есть такие свойства как
- общее количество танков выпущенных на поле
- максимальное одновременное количество танков на поле

DEAD_Angel
танчик хороший, можна рисовать анимацию выстрела :)
кста, почему бы не в psd ?

В общем, запускайте и говорите результат
GeForce 6600, WinXP SP2, дрова новые - видно чёрное лицо

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

ORTODOX
21.01.2008, 15:57
В общем, это будет основа диздока. ORTODOX добавь в первый пост.
а что добавить,что-то я не понял :)

System32
21.01.2008, 16:29
Хм неплохо ! Я бы даже сказал хорошо !

И вот ещё , вдруг прегодится !
http://i026.radikal.ru/0801/ed/38a6de99443d.jpghttp://i005.radikal.ru/0801/10/e5bf9d0c0401.jpg

^i_Swep
21.01.2008, 16:41
а что добавить,что-то я не понял
концепцию ядра L'ombre

DEAD_Angel
21.01.2008, 17:08
кста, почему бы не в psd ?
А движок его (формат PSD) поддерживает ?

P.S.Спасибо всем, что одобрили мой танчик. :)

pokibor
21.01.2008, 17:12
^i_Swep
Спасибо. Серия видюх GeForce 6xxx под подозрением. Чего-то они не умеют делать... Буду разбираться.

DEAD_Angel
dds DirectX поддерживает, psd, конечно, нет.

Миланчег
21.01.2008, 18:40
Всем Сорри!! ORTODOX опять забанился :( Теперь я заместо него :))
ЗЫ Анимацию снаряда сделали?

Добавлено через 1 минуту
ЗЫ pokibor знаешь в чем баг на 6 серии жирафов?

pokibor
21.01.2008, 18:54
Миланчег
Если б знал, бага бы уже не было. Впрочем, его нет, если использовать другой класс для квада, который с Lock'ом памяти. Стало быть, баг не является критическим, просто приложение, возможно, будет работать чуть-чуть медленнее.
P.S. Сейчас не до таких разборок. Закончил добавление клавиатуры через DirectInput. Скоро будет первый общественный релиз (в рамках сидящих здесь людей, конечно :) ). В ближайших планах - реализация мыши, добавление связанных с ней событий и пара методов у квада. Тогда движок будет уже готов к тестам игры.
P.P.S. Администрация сочла Миланчег'а фейком. Сочувствую. Только заверяю, что объяснительный пост был принят во внимание.

^i_Swep
21.01.2008, 18:58
Всем Сорри!! ORTODOX опять забанился
Поржал...
Пора выбирать заместителя ORTODOX
Пишите кандидатуры (синим)

System32
21.01.2008, 19:17
pokibor
Скоро будет первый общественный релиз (в рамках сидящих здесь людей, конечно)
А помоему на дисках мании выкладывают работы читателе ! А ? Думаю вам стоит попробовать подать заявку . Естественно после того как игра будет готова и более менее сболансированная . (Я имею в виду в плане вылетов и ошибок !) :sml:

pokibor
21.01.2008, 19:25
System32
Вы что-то не поняли. Я говорю о движке, а не об полноценной игре. Движок простейший пока, так что не надейтесь на его мощь, и для посылки куда-то там он точно не подходит...

System32
21.01.2008, 19:28
System32
Вы что-то не поняли. Я говорю о движке, а не об полноценной игре. Движок простейший пока, так что не надейтесь на его мощь, и для посылки куда-то там он точно не подходит...

Зато есть к чему стремиться !!! :appl:

DEAD_Angel
21.01.2008, 21:00
Зато есть к чему стремиться !!!
Спасибо, что оптимистично настраеваешь нас.
System32, вступай ещё одним художником (ну, если конечно, остальные не против) ! :)

ORTODOX, ну ты даёшь - из бана в бан ! :lol: (не обижайся, я похорошему)
Кончаем флуд. Я стараюсь к нему гуманно относиться, ибо тема всё-таки живому обсуждению проекта посвящена, но всему есть предел.

System32
21.01.2008, 21:44
ORTODOX попросил всем вам объявить его ICQ для связи сним :
360626199

DEAD_Angel
21.01.2008, 22:06
Хотелось-бы чтобы управление танчиком было организованно не как в "стандартной версии" (т.е. жмёшь вверх - таник вверх..., жмёшь вниз - танчик резко развернулся, и вниз...) , а так как в "top-down гоночках" на флеше, на мобильнике (думаю все поняли, о чём я :) (расписывать поподробнее - влом)). :)

L'ombre
21.01.2008, 22:13
надо дописать, что у level'a есть такие свойства как
- общее количество танков выпущенных на поле
- максимальное одновременное количество танков на поле
да, согласен.

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


насчёт дискретности времени - тут надо кое-что уточнить и ещё многое обдумать.
Прежде всего:
грубо говоря, игровая система является неким конечным автоматом. В каждый момент времени она принимает одно из состояний, число которых конечно, и может перейти в другое состояние; считаем, что для перехода в новое состояние все объекты что-то делают (могут и не делать). в идеале одновременно, но в реальности будет некая очерёдность. переход из одного состояния в другое - это такт. Такт для этой системы - это атомарный проежуток времени, единица времени. В этом смысле "логическое" время дискретно.

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

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

так что cooldown можно добавлять в свойство оружия, но это величина не в секундах, а в тактах, единицах "логического времени"

-----

ещё один важный аспект, по которму ещё нет единого решения - динамика.
нужно определить, как именно осуществляется движение в этом клетчном мире, как реализовать движение с разными скоростями, и как это соотносится с логическим временем и реальным временем.



Тут можно отталкиваться от двух идей.
Первая - считаем движение непрерывным. хм.. абстракция: все traverser'ы на самом деле движутся где-то в ином измерении и имеют вещественные координаты, а мы отсчитываем такты и в каждый такт определяем, какие ячейки матрицы они занимают - т.е. какие у них целочисленные координаты; округляем, в общем). Сюда хорошо вписывается вещественная скорость, и веществвенные же модификаторы скорости у объектов. Однако при таком подходе скорости могут быть (и будут) такими, что объекты - танки и снаряды - могут перемещаться за один такт на несколько ячеек, т.е. перескакивать через ячейки. Поэтому обрабатывать столкновения снаряда, двигающегося со скоростью, например, 3, будет сложнее (потребуется обрабатывать не только столкновения, но и пробегать по "предшествующим" ячейкам)

Вторая идея - за каждый такт любой объект может переместиться не более чем на одну ячейку. Для представления разных скоростей используются задержки; объект с нулевой задержкой - самый быстрый, он перемещается на одну ячейку за такт. Остальные ждут несколько тактов перед (или после) каждым перемещением. Тут проще обрабатывать столкновения и взаимодействия с другими объектами, но возникает риск: самое быстрое возможное движение - это движение объектов с нулевой задержкой. если игра будет тормозить, то это может оказаться слишком медленно.


Кроме того (это относится к движению вообще, независимо от выбранного варианта), Танки (MatrixTraverser'ы) занимают ячейки в матрице, поэтому нужно не допустить таких ситуаций, когда на первом такте танк решает переместиться куда-то в свободное место, и за то время, пока он ждёт, это место кто-то занимает (а графический движок уже начал анимацию, передвинул картинку на половину ячейки!) Это можно сделать двумя способами - перемещать танк сразу и потом ждать, или же "зарезервировать" целевые ячейки, подождать, потом переместится (в этом случае танк стоит на месте и снаряды его там могут повредить, но на его новое место никто заехать не сможет, а снаряды там спокойно пролетают).

pokibor
21.01.2008, 23:42
Ловите первую версию недо-движка с демонстрационным приложением. Сразу говорю, что в демонстрации затронуты далеко не все возможности даже из уже имеющихся в наличии (так, например, нет буферизации ввода DirectInput). В общем, смотрите и разбирайтесь. Программеры... :D
Да, там вроде как все объекты я сделал нетрансформируемыми, следовательно, проблем ни у кого быть не должно. Сглаживание, кстати, надо бы сделать... займусь этим позже :)
К движку относятся следующие файлы:
global.h
i_keyboard.h; i_keyboard.cpp
r_window.h; r_window.cpp
renderer.h; renderer.cpp
resource.h; resources.rc;
Короче, все h-cpp кроме main'а и пустых пока t_core, плюс ресурсный файл rc.
Ссылки: http://ifolder.ru/5048137 либо http://webfile.ru/1698709

Проект сделан в VS 2005 с использованием DirectX SDK от ноября 2007'ого года, но загрузить все файлы и скомпилить, думаю, можно и при более ранних версиях. Повторяю, не открыть проект (VS может выдавать ошибку!), а создать новый и загрузить в него все h, cpp и rc-файлы! Только новый создавайте в той же папке либо модифицируйте в коде путь к текстурам (в main.cpp, найдёте сами).

P.S. Бывает же такое... Дико стормозил и вместо нормальных enum'ов пихнул какое-то Java-подобное извращение с уймой констант в классе... Ну да ничего, я уже исправился, заодно нашёл баг в оптимизаторе VS 2005 (он просто не понимает то ли членов enum'а в качестве default-значений, то ли ещё чего-то, с enum'ами связанного) и перешёл под бету VS 2008, попутно качая релизную версию. О чём и оповещаю участников проекта. Отныне под 2005 мои файлы вполне могут не компилиться из-за традиционных M$'ных БАГОВ.

Fey
22.01.2008, 11:10
А демо-игры ещё нету?? или хотяб какую-нить версию игры.:)

ХаН
22.01.2008, 11:27
Fey
DEAD_Angel
Это архив спрайтов с Сайта о Гамаке. Сейчас экзешник танков кину...
Вот ссылка http://ifolder.ru/4986017

Будь внимательнее :wnk: Это конечно далеко не демо........просто версия одного из наших участников

DEAD_Angel
22.01.2008, 12:51
pokibor
У меня работает нормально. :)

HaNproKilleR
Ну как там с уровнями ? Придумываешь ?

pokibor
22.01.2008, 13:31
DEAD_Angel
Да что работает нормально, ясно. Я жду, пока программист(ы) наши распробуют текущую версию движка. Для кого я его пишу, в конце концов?

DEAD_Angel
22.01.2008, 13:49
Я жду, пока программист(ы) наши распробуют текущую версию движка. Для кого я его пишу, в конце концов?
Если ты про программеров на С++, то их у нас (помоему) ещё не завелось, вроде...
P.S. Придётся тебе программером "записываться" :))

P.P.S. Простите за флуд.

Добавлено через 7 часов 15 минут
pokibor
Как движок назовёшь ?
Это только движок на С++ написаный, такую структуру имеет, да? А на каких языках програмирования другие движки пишут ?
(Извините, понимаю немного не по теме)

^i_Swep
22.01.2008, 21:13
(Извините, понимаю немного не по теме)
извините, отвечу, хоть и оффтоп
Это только движок на С++ написаный, такую структуру имеет, да? А на каких языках програмирования другие движки пишут ?
на с++ и пишут

От pokibor'а, чтобы оффтоп не разводить
От языка структура движка не сильно зависит. Движок никак не назову, ибо не слишком он достоин отдельного названия. Элементарщина ж.

DEAD_Angel
22.01.2008, 23:16
Подскажите (просто не знаю особенностей движка):
1. Анимацию, допустим дымок, вспышку от высрела, можно отдельно сделать, а не с непосредственно танком ?
2. Спецэффекты (типа motion blur) только для 3d или в 2d тоже организовать можно ?

pokibor
22.01.2008, 23:29
Итак, новая версия. В ней добавлена загрузка посланных параметров в диалоге выбора разрешения как выбор по умолчанию (читай есть возможность сохранять/загружать параметры), добавлено построение шрифтов и вывод текста на экран, а также настройка вертикальной синхронизации, плюс в демострационном приложении сделан счётчик FPS. Просьба не забывать, что при включённом VSync'е он не может быть больше, чем RefreshRate, так что для получения данных по производительности VSync лучше отключать.
Ссылки:
http://ifolder.ru/5063044
http://webfile.ru/1700631
Так. Народ. Мне нужен хоть какой-то ответ. Я вообще для кого стараюсь? ^i_Swep, вроде, C++ знает, и вообще - кто будет писать игру? Я, конечно, рад, что тут есть художники и левелдизайнеры, но, вообще-то, без программирования игры не будет. А насчёт вашей идеи кодить под сотовые... Нехочу никого обижать, но если тут под PC никто не пишет при наличии простого движка, то что уж про сотовые говорить?


1. Анимацию, допустим дымок, вспышку от высрела, можно отдельно сделать, а не с непосредственно танком ?
Да, можете спокойно делать отдельно. Пока, правда, движок анимацию не поддерживает, но будет поддерживать (это сравнительно легко дописывается). Правда, ясное дело, не gif, а покадровую - т.е. в одном файле должны идти друг за другом все кадры анимации.

2. Спецэффекты (типа motion blur) только для 3d или в 2d тоже организовать можно ?
Движок основан на Direct3D, если кто-то забыл, а потому всё, что можно сделать в Direct3D, можно сделать и в нём. Тем не менее, если ситуация с программистами сохранится на текущем уровне, могу однозначно заявить - не будет вам никаких спецэффектов. :mad:

DEAD_Angel
22.01.2008, 23:41
pokibor
У меня новая версия (движка) не запускается. Запускаю Tanks.exe - пишет "Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблемму" В чем трабла?

pokibor
22.01.2008, 23:48
DEAD_Angel
Не знаю. Но вообще-то не запускается у вас всё-таки версия демонстрационного приложения, движок запустить нельзя. У меня всё нормально вроде... И что, даже до диалога выбора разрешения не доходит? Тогда возможно у вас с библиотеками какие-то проблемы, я ж эту версию в VS 2008 компилил... Вот докачаю финальную версию и выложу её редистрибутивы - наверняка проблема решится. Но для того, чтобы создать проект, включить в него файлы и попробовать откомпилить, большого ума не надо. Это я программистам говорю!!!

DEAD_Angel
22.01.2008, 23:55
И что, даже до диалога выбора разрешения не доходит?
Да, даже до диалога...
Тогда возможно у вас с библиотеками какие-то проблемы
Библиотеки вроде должны были быть (как ты говорил кто в игры играет у того наверняка есть), ранняя версия запускалась нормально...

pokibor
23.01.2008, 07:22
DEAD_Angel
В том-то и дело, что новая версия откомпилена бета-версией VS 2008 (я же написал!), а этот зверь вполне может вставлять в код нечто новенькое и, соответсвенно, требующее новых библиотек. Но VS 2008, как я сказал, скоро у меня будет, и тогда я выложу её редистрибутивы.

ХаН
23.01.2008, 10:47
HaNproKilleR
Ну как там с уровнями ? Придумываешь ?

Да уровни я давно уже придумал ))) вы мне скажите как их делать из мелких картинок или как я делал?????:lamo:

andNsX
23.01.2008, 11:17
HaNproKilleR
Делай из таилов (то есть мелких картинок) так лучше и весить игра будет намного меньше.

ХаН
23.01.2008, 11:45
andNsX
Хорошо )) Буду делать так........постараюсь до завтра выложить уже какиенить наброски ))

pokibor
23.01.2008, 13:57
Путём сложнейших вычислений и умозаключений (короче, путём использования поиска Windows и теста на другом компьютере) я выявил файлы, которые нужны для запуска скомпиленой версии демки.
Распаковать в дирректорию с программой (т.е. экзешником):
http://ifolder.ru/5069620 или http://webfile.ru/1701408
Кроме них вроде как нужен только DirectX, но, наверное, уж он-то в последней версии у всех есть...

DEAD_Angel
23.01.2008, 13:57
HaNproKilleR
Ну для фона ты естественно какой-то арт сделать можешь.

pokibor
23.01.2008, 14:00
Усп! Поправка: в архиве-то папка содержится :) Нужно взять из неё файлы, конечно, и к программе поместить. Т.е. рядом с exe'шником должны лежать 3 dll'ки и один manifest.

DEAD_Angel
23.01.2008, 14:10
pokibor
А у меня такой глупый вопросик: А раньше v-sync был включен (а то раньше 75 фпс выдавала, сейчас: без v-sync 850, с v-sync 75) ?

pokibor
23.01.2008, 14:16
DEAD_Angel
Раньше VSync не задавалась, а структуре параметров делалось ZeroMemory. Как результат VSync включался, ибо соответствующая константа, похоже, равна нулю. Кстати, с FPS вообще всё странно и оригинально. У меня на основном компе в полноэкранном режиме 1280x1024 2500 (!!!), причём это значение почти не меняется от смены разрешения, в соответствующем оконном - 1200.
А у вас на вроде бы не слишком слабом компе 850... А на ноуте тестил - вообще в 10 раз меньше FPS, 250 где-то в полноэкранном и примерно 170 в оконном (не самом высоком, 800x600, кажется)... В общем, странные дела DirectX творит...
добавлено вечером...
Добавил полноэкранное сглаживание в движок. Особого визуального эффекта, честно говоря, не заметно, но по падению FPS на 20% видно, что сглаживание работает :D

razor21
23.01.2008, 22:11
Люди, так как темка по выработке концепции для учебного проекта сдохла, решил забежать сюда. Я могу быть программистом. У меня нормальное знание С++. С движком pokibor'a ознакомился. Все просто и понятно. Для 2D-проекта, такого как танчики, он идеально подходит. Правда при компиляции мой MSVS 2003 выдает кучу ошибок... Очень странно.

pokibor
23.01.2008, 22:16
razor21
Ну, насчёт ошибок-то не удивительно. Я уже под VS 2008 сижу (сейчас как раз ставлю финальную версию). В VS 2003 ошибок/неподдерживаемых конструкций уйма, даже в 2005 глюк с enum'ами обнаружился. Так что настоятельно тебе советую обзавестись Visual Studio 2008 и DirectX SDK от ноября 2007 года. Полюс ещё Platform SDK поставить, хотя в 2008 он наверняка включён в приемлемой комплектации. Кстати, если у тебя нет DirectX SDK вообще, то чего удивляться. ;)
Спасибо за оценку движочка. :) Но всё-таки замечу, что с кучей ошибок при его компиляции тебе кодить трудновато будет, разве что перепишешь его под VS 2003...
Все необходимые ссылки для скачивания могу дать. VS, правда, я брал из Bit Torent'а.

razor21
23.01.2008, 22:23
pokibor
Ага... DirectX SDK у меня есть (Апрель 2007). ОК, надо будет скачать новый VS... Дай ссылку, пожалуйста.

pokibor
23.01.2008, 22:50
razor21
Ссылки - личка.
Название для движка всё-таки придумал. Метался между двумя вариантами, но решил быть самокритичным и назвал его VISE (в американском английском - допустимый аналог vice). Расшифровывается рекурсивно, вполне в традиции программных продуктов: VISE = VISE Is Simple Engine. :P

razor21
23.01.2008, 22:54
pokibor
Ага, точно рекурсивно :). pokibor, а ты будешь для него GUI писать?

pokibor
23.01.2008, 23:02
pokibor
Ага, точно рекурсивно :). pokibor, а ты будешь для него GUI писать?
Ясное дело, буду. Куда ж я денусь? Только нам пока никаких GUI не нужно. Вот когда проект разовьётся (в чём сейчас у меня большие сомнения) - тогда и напишу. Сейчас в моих планах добавить туда мышь и всё.
Вообще, я подумал, и решил, что могу, скажем так, глубже принять участие в проекте. Но - только при условии, что сюжет игры будет моим. Точнее, по моему произведению (сейчас оно, правда, написано только наполовину, но всё же...) Простор там большой, ибо в произведении затронуты самые разные времена... По его адаптации под игру могу выслушать предложения, сам сейчас теряюсь в планах. Для начала можно и кривенько.

razor21
23.01.2008, 23:07
pokibor
Крайне не хотелось бы чтобы и этот проект заглох... ;)
Я, например, согласен, если сюжет будет твоим. Для меня главное поднабраться еще больше опыта, поработать в команде... А ты сюжет придумал специально для "Танчиков" или по твоему произведению?

pokibor
23.01.2008, 23:17
razor21
По-моему, выше я ясно дал понять, что по произведению ;) Не просто ж так мне захотелось его воплотить :lol: И я специально для игры его ещё не придумал. Простор для выбора большой... От Последней Войны Валориана до Реформации Ордена Тени и, собственно, сюжета произведения... Но это уже детали, извиняюсь.

razor21
23.01.2008, 23:19
pokibor
Что ж, нет проблем. Я за.

pokibor
23.01.2008, 23:35
1. Сим подтверждаю, что движок спокойно компилится на Visual Studio 2008 с DirectX SDK от ноября 2007 года и не требует никаких Platform SDK.
2. Что-то остальных участников проекта не слышно. У меня возникает сильное подозрение, что сейчас полностью обновится состав. Мы с razor21 придём, а все остальные уйдут. Чего скисли, народ? Энтузиазм пропал? Вы же вообще-то вроде основной состав проекта, не забывайте!

DEAD_Angel
24.01.2008, 12:50
Но - только при условии, что сюжет игры будет моим. Точнее, по моему произведению (сейчас оно, правда, написано только наполовину, но всё же...) Простор там большой, ибо в произведении затронуты самые разные времена... По его адаптации под игру могу выслушать предложения, сам сейчас теряюсь в планах.
Молодец, всё таки назвал движок! Надеюсь, сюжет, это не "бред Тома Клэнси" (это коплимент :) ). Вопрос а игру под сюжет "передизайневать" не надо будет ?

2. Что-то остальных участников проекта не слышно. У меня возникает сильное подозрение, что сейчас полностью обновится состав. Мы с razor21 придём, а все остальные уйдут. Чего скисли, народ? Энтузиазм пропал? Вы же вообще-то вроде основной состав проекта, не забывайте!
У меня энтузиазм не пропал :), просто жду пока "пригожусь" (т.е. жду пока движок достаточно разовьётся). А остальные... чего-то да, неслышно их...

pokibor А у меня ещё вопросик по движку: он пожет програмно (может не точно выражаюсь, но думаю поймёшь) поворачивать спрайты? А то я смотрю у тебя спаит танка в четырёх "позициях" нарисован.

P.S. Как я рад, что ещё один программер на С++ появился ! Наконец-то проект, надеюсь, начнёт развиваться быстрее. :)

pokibor
24.01.2008, 12:59
Молодец, всё таки назвал движок! Надеюсь, сюжет, это не "бред Тома Клэнси" (это коплимент :) ). Вопрос а игру под сюжет "передизайневать" не надо будет?
1) А есть, что передизайневать? :Grin:
2) Я пока что смотрел на проблему с обратной стороны - передизайневать сюжет под игру (как я уже говорил, там просторы большие). Но этим вообще-то должен не программист заниматься :sot:


pokibor А у меня ещё вопросик по движку: он пожет програмно (может не точно выражаюсь, но думаю поймёшь) поворачивать спрайты? А то я смотрю у тебя спаит танка в четырёх "позициях" нарисован.
Теоретически может. То есть я могу это добавить, но ради этого предётся перепахивать код квада и добавлять матричные преобразования в полном объёме. Для трансформируемых спрайтов нечего делать (какая разница, в шейдер вектор или матрицу посылать, разве что работать будет чуть медленнее), а вот нетрансформируемым придётся всё вручную прописывать. Но для танчиков такой возможности не нужно вроде, потому я её и не стал добавлять. Однако, возможно, всё-таки добавлю...

DEAD_Angel
24.01.2008, 13:19
pokibor
Сюжет (ни или произведение) даш почитать...

И ещё: (понимаю рановато про это спрашивать) AI будем делать ?

pokibor
24.01.2008, 13:32
Сюжет (ни или произведение) даш почитать...
Произведение - ссылки в личке. Ибо на форуме (наверное) запрещено. Вообще оно, конечно, кое с чем связано... Но все моменты до Ордена Тени почти никак не коррелируют с оригиналом (разве что некоторые творения Исполнителя). А уж Валориан и вовсе целиком и полностью мой.
В первой части, кстати, связи с оригиналом вообще мало, зато вторая (которая сейчас пишется) даёт больше представлений о предыстории сюжета (история Валориана, Исполнителя, Ордена Тени), которой также можно касаться.

И ещё: (понимаю рановато про это спрашивать) AI будем делать ?
Мне бы очень хотелось, но это зависит от игрового процесса.

razor21
24.01.2008, 18:19
И ещё: (понимаю рановато про это спрашивать) AI будем делать ?
Да, мне б тоже очень хотелось. Скорее всего будем. Сейчас главное, чтобы проект не провалился.
pokibor
Ты пока не собираешься добавлять звуковую оболочку? Если что, я могу попробовать добавить, пока ты будешь заниматься событиями мыши. Правда DirectSound я не юзал, но могу почитать.

P.S.
Поставил я себе MS Visual Studio 2008... :)

pokibor
24.01.2008, 18:22
razor21
Ну, можешь попробовать. В DirectSound всё очень просто. Сейчас я, правда, не мышью, а полной транформацией квада занимаюсь (т.е. чтобы его можно было крутить и т.п.). Затем буду анимацию заканчивать и только потом с мышью разберусь.

razor21
24.01.2008, 18:30
pokibor
Думаю, только wav-ки хватит? Т.е. только wave-формат.

pokibor
24.01.2008, 18:38
razor21
Вообще-то формат wav крайне громоздок и неудобен, но стандартный DirectSound, кажется, без доп. функций только его понимает... Я бы посоветовал обратить внимание на XACT3, если в твоей версии DirectXSDK он есть. Я не слишком с ним разбирался, но это, похоже, новая идея от M$, и она понимает несколько иные файлы. Возможно, он окажется более полезен. Хотя если лень - делай wav'ки на DirectSound, только всё-таки предусмотри возможность написания самостоятельного загрузчика файлов.

DEAD_Angel
24.01.2008, 18:49
Эээ... люди насчёт звука: надо-бы формат такой что-бы не много весил, и звучал приемлемо... а то если финальную версию игры через инет качать, с моей скоростью (конечно незнаю, может у нас и "флешка" выйдет) - 56кб\с %)...

razor21
24.01.2008, 18:56
pokibor
XACT есть. Сейчас начну разбираться. Если честно, он мне кажется еще проще, чем DSound ;). Только вот форматы у него какие-то... Хм, я о таких никогда не слышал: *.XGS, *.XSB, *.XWB... Люди-то смогут в них звуки писать? Хотя, может, утилитки есть...
надо-бы формат такой что-бы не много весил, и звучал приемлемо...
Ага, все будет норм. ;)

pokibor
24.01.2008, 18:57
DEAD_Angel
Это не проблема, потому что каким бы плохим не был формат - он по определению будет сжат архиватором до такой же величины, как если бы он сам включал в себя соответствующие алгоритмы. Иными словами, без потери качества файл можно сжать строго до определённой величины, и меньше никакими ухищрениями ты его не сожмёшь - только с потерей информации. Теория-с.
razor21
Википедия и утилиты мелкомягких тебе в помощь. В интеренете наверняка найдёшь всё, что касается этих форматов и прочего.

DEAD_Angel
24.01.2008, 19:01
А у нас есть человек работающий со звуком, имею ввиду который их записать может ? Помоему нет...

razor21
24.01.2008, 19:08
DEAD_Angel
Утилитки найдем нужные... А звуков-то и в Сети полно.

Добавлено:

pokibor
Хорошие новости! Я только что написал приложение, которое работает с DirectMusic. Все работает нормально. Теперь осталось оформить все это дело по классам. Ну и еще надо бы с настройками поиграться, чтобы можно было менять разные параметры, короче, подробней ознакомиться. Собственно, сейчас могу сказать точно: звуковая часть движка будет.

pokibor
24.01.2008, 21:15
У меня тоже хорошие новости. Я добавил-таки все возможные трансформации. В классе, правда, пока доступна только функция изменения всего и разом, но конкретизация уже - дело техники. Итак, вот новая версия (я уже начал даже хелп к ней писать, но пока меня только на D3DDevice хватило).
Движок + очередная демонстрашка. Танчик теперь поворачивается влево/вправо и едет вперёд.
http://ifolder.ru/5089712
http://dump.ru/files/o/o292846602/
А вот redist'ы от финальной VS 2008. Не знаю, как будет себя приложение вести на старых и, в общем-то, рекомендую скачать эти. Пользуйтесь!
http://ifolder.ru/5089671
http://dump.ru/files/o/o9541259/
Кстати, также в D3DWindow добавлены функции для работы со временем (получение кол-ва миллисекунд, прошедших с момента старта систему, получение кол-ва миллисекунд с момента предыдущего вызова фукнции и то же, но float и в виде секунд (т.е. с дробной частью - прямо сразу для физики). Ну, в демонстрашке увидите, там они используются...

DEAD_Angel
24.01.2008, 22:47
pokibor
Даёшь стрельбу ! Вот: http://dump.ru/files/o/o72111080/ - "пулька" (её немного отмасштабировать надо) и танчик, надеюсь ты это в следующюю демонстрашку "засунешь"...
P.S. Завтра ещё спрайты выложу...

ХаН
25.01.2008, 10:30
2. Что-то остальных участников проекта не слышно. У меня возникает сильное подозрение, что сейчас полностью обновится состав. Мы с razor21 придём, а все остальные уйдут. Чего скисли, народ? Энтузиазм пропал? Вы же вообще-то вроде основной состав проекта, не забывайте!

Энтузиазм на месте )))) Я сейчас занят создание уровней ( ну те маленькие картинки :sml: ) Да и наверно я сейчас в инете буду редко появляться ((( Учеба и родители.......



Все жмем сюда (http://ifolder.ru/5096643) и смотрим первые наброски для уровней и для оформления меню .

pokibor
25.01.2008, 15:06
Итак, подоспела очередная версия. Я сделал анимацию, устранил пару ошибок, ну и исполнил просьбу DEAD_Angel. Теперь в демке едет танчик и стреляет снарядами. Танчик, правда, теперь управляется клавишами WASD, а стреляет пробелом. Это сделано потому, что у меня на клавиатуре одновременное зажатие влево+вперёд блокировало все остальные клавиши. Уж не знаю, где баг, но он точно аппаратный и к движку отношения не имеющий. Вроде бы. ;)
Да, стрельба сделана по событию "кнопка нажата". Знаю, это не удобно, но надо ж было продемонстрировать поддержку событий! Только не думайте, что он по каждому нажатию будет стрелять. В демку забито понятие скорострельности :Grin:. В общем, смотрите код и постигайте движок. Теперь в плане мышь, устранение ошибок (если таковые будут найдены), ну а дальше видно будет.
Ссылки:
http://ifolder.ru/5099239
http://dump.ru/files/o/o48126306/

Кстати, теперь отлично видно, что шейдеры быстрее Lock'а памяти... Надо будет всё-таки проблему с GeForce 6xxx решать, а то трансформируемые снаряды работают на 5% быстрее нетрансформируемых...

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

DEAD_Angel
25.01.2008, 17:56
HaNproKilleR
А я там стен, ограждений не видел, или ошибаюсь ?
______________________________________________
Вот ракета:
http://i042.radikal.ru/0801/55/459f7f7da632.png
Анимацию огня, дыма потом сделаю... pokibor, а кстати систему частиц трудновато реализовать будет ?

pokibor
25.01.2008, 18:02
Уважаемый DEAD_Angel, Вы уже палку перегибаете, по моему :wnk:
Реализовать можно всё что угодно, но в таком движке система частиц будет смотреться как пятое колесо у телеги. Поверх движка, возможно, реализую - это дело будущего. Если Вам лень огонь делать, то для этого дела вообще можно шейдер пиксельный набросать или шумовыми функциями воспользоваться. Но в движке пока системы частиц не планируется. У меня и без неё с мышью проблемы. Вроде как надо по логике реализовывать через DirectInput, но он же выдаёт только смещение... Вот и думаю, как грамотнее будет мышь реализовать

DEAD_Angel
25.01.2008, 18:15
pokibor
Ладно, это я просто так спросил, потому-что анимацию огня делать не умею... сейчас полезу искать статейку на эту тему.
Желаю удачи "с мышкой". :)

pokibor
25.01.2008, 22:42
Вот, в кои-то веки добавил поддержку курсора мыши. Долго с ней возился, глючило мощно... Плюс ко всему добавлена она в D3DDevice, потому что абсолютное положение курсора к DirectInput отношения не имеет и иметь не может. Кроме того, чуток подправил логику создания окна рендеринга (теперь оно не будет сжиматься в оконном режиме). В общем, крайне рекомендую всем брать и использовать. ;)
Ну и в демке добавился мышиный курсор в виде ракеты от DEAD_Angel. Правда, пользы от него никакой, но на то она и демка.
http://ifolder.ru/5105182
http://dump.ru/files/o/o71219353/

ХаН
26.01.2008, 07:49
HaNproKilleR
У Ваших текстур даже не совпадают края, которые должны были бы совпадать. То есть, если рядом поместить тайл снега и идущей сквозь снег дороги, то они не сольются в одну картинку, а их граница будет отлично видна. Делайте выводы.

Делаю выводы.............вообще я просто хотел проверить толи я сделал или нет )) Буду работать дальше.......

pokibor
26.01.2008, 12:17
Это свершилось. Я закончил с мышью. Вот итог:
http://ifolder.ru/5110009
http://dump.ru/files/o/o2468937935/
Штука в том, что абсолютное положение курсора на экране можно получить через D3DDevice. А через DirectInput возвращается (и, соответственно, посылается в его события) относительные координаты, т.е. координаты, на которые переместилась мышь с момента последней передачи своих координат. Размерность этих координат никак не привязаны к пикселям, экрану и прочему - ведь DirectInput работает напрямую с драйвером мыши, минуя Windows. Следовательно, под них как раз нужно подстраиваться настройками чувствительности и прочем. Кстати, у колёсика мыши вообще оригинальные координаты. Скажем, у меня оно за одно движение перемещается на 120 своих внутренних пунктов.

andNsX
26.01.2008, 15:17
Я вот тут спрайтик взрыва неплохой раздобыл! Есть и ГИФ анимированый и покадровые JPEG'и.
http://ifolder.ru/5111986

DEAD_Angel
26.01.2008, 15:54
pokibor
А обязательно что-бы спрайт был степенью двойки ? А то я в анимации тайл делаю... И что-бы была степень двойки, надо пропорции изменять... некрасиво получиается...

pokibor
26.01.2008, 16:06
DEAD_Angel
Вы не поняли. Само изображение может быть любых размеров. Степенью двойки должна быть текстура в целом. Если гляните в код, при реализации снаряда я натягиваю на его квад только область картинки с собственно снарядом, а не всю картинку. Так что делайте тайл в любых пропорциях, а потом скопируйте в файл со степенью двойки по ширине/высоте. Можете в один файл несколко рисунков друг рядом с другом поместить, чтобы память зря не тратить - это вполне допустимо, и даже правильнее будет.

L'ombre
28.01.2008, 15:41
вот опять тема затихла. где все? мне нужна минута внимания

итак, я сделал ядро игры. реализовал ту ранее описанную концепцию.
(при этом концепция подверглась некоторой "эволюции", но основные идеи - те же)
сейчас тестирую эту реализацию,
основные баги отловлены, ядро ведёт себя так, как должно.
насколько мне известно..

кое-что еще не реализовано в ядре
(например, изменение скорости танка в зависимости от местности),
но будет добавлено в ближайшее время
(или не в ближайшее.. посмотрим)

подробную документацию я ещё не делал
(есть только коментарии в коде - правда их относительно много)
краткое описание - как им пользоваться, не вдаваясь в детали - приведу сейчас

Итак, нужно создать уровень; т.е. экземпляр класса Level.
чтобы это сделать, нужно создать основные составляющие компоненты уровня.
это:
- матрица
- фабрика ячеек
- фабрика танков
- фабрика орудий
- менеджер (диспетчер, так сказать) респауна

всё остальное уровень будет создавать и удалять сам

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

по порядку про эти сущности. с матрицей, думаю, всё ясно.

понятие "фабрика" - довольно распространённый приём в дизайне.
поясню на примере ячеек матрицы.

вот ячейка. у неё есть несколько свойств: проходимость, броня, хитпойнты.
мы берём один набор этих свойств - скажем, со значениями (1, 0, 0)
и говорим, что это "пустая ячейка".
Когда в дальнейшем нам понадобится пустая ячейка,
нужно будет просто вспомнить эти три значения. Вместо слов "пустая ячейка"
можно использовать числовой идентификатор.

Фабрика ячеек как раз занимается созданием ячеек заданных типов.
т.е. ей передаётся ID ячейки, и она отвечает,
какие должны быть остальные свойства.

В ядре это используется, например, так:
ячейка взрывается, на её место нужно поместить другую. какую? -
ту, что указана в матрице как default ID.
Уровень обращается к фабрике ячеек и говорит:
"трансформируй эту ячеку в ячейку с DefaultID"; и фабрика трансформирует.

для аналогичных целей используются и остальные фабрики -
танков, снарядов и орудий. (фабрика снарядов нужна для создания фабрики орудий)

уровню всё равно _как_ фабрики создают свои объекты
(параметры конструктора - абстракные классы)
для нормальной работы нужно разработать фабрики самостоятельно,
они должны быть потомками этих абстрактных классов и
уметь создавать объекты по их идентификатором.

Соответственно, сами эти объекты тоже надо придумать и
назначить им соответствующие идентификаторы
(скажем,
кирпич - это id=1, passability=0, armor=1, hp=1
камень - id=2, passability=0, armor=2, hp=1
и тд. или как-то иначе.)
это, вообще говоря, задача гейм-дизайнера.
я предлагаю такой подход: каждый уровень может иметь свою таблицу объектов,
она хранится в каком-либо файле вместе с уровнем.
Но это я забегаю вперёд, сейчас об этом говорить ещё рано.

RespawnManager есть уже в готовом виде.
(но весьма вероятно, я его интерфейс переделаю.
там есть одна неоднозначность;
кстати, "упражнение" - найдите её!)
но его тоже, при желении, можно переопределить..
в него надо добавить несколько точек,
и тогда уровень будет создавать там танки

итак, перед созданием уровня, нужно:
- написать классы для фабрик
(пример - очень простой и маленький - tiny_implementation.cpp/.h)
- самостоятельно создать сущности всех нужных классов

(ну а при завершении программы удалить всё это, в правильном порядке)

после создания уровня им можно пользоваться.
под "пользоваться" имеются в виду три основные вещи:
- давать танкам различные команды
- осуществлять переход между состояниями уровня
(во время перехода эти команды выполняются)
- рисовать уровень на экране

переход между состояниями выполняет метод Сlock();
его надо вызывать в цикле, примерно так:

while (игрок не хочет выйти)
{
передать танкам команды, от игрока и искуственного интеллекта;
level->Clock();
отобразить все объекты уровня на экране.
}

объекты уровня - пока четырёх типов:
- танки, доступ через level->Tanks()
танками (и только ими) можно управлять, например:
level->Tanks()->at(0)->OrderMove(); // говорит танку: нужно сдвинуться вперёд
- снаряды, доступ через level->Missiles()
- взрывы, доступ через level->Explosions()
ячейки матрицы, доступ через level->Matrix->Item(x, y)

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


ядро можно взять тут:

http://ifolder.ru/5136618
пароль у архива t@nk$c0re

core.cpp и core.h - собственно всё, что относится к ядру.
tiny_implementation.h/.cpp - простейший пример вышеописанных фабрик
test.cpp - программа, которая это использует.
она создаёт всё что нужно для уровня, потом сам уровень, выполняет один такт (в котором ничего не происходит) и освобождает память в правильном порядке. Т.е. запускать её нет особого смысла. (если же захочется, то при желании каждый сможет сделать из этих файлов проект в visual studio)

DEAD_Angel
29.01.2008, 16:05
Вот анимация огня (сопла ракеты):
http://i038.radikal.ru/0801/1a/28c5c603dfa3.png
http://i024.radikal.ru/0801/13/77c4f5078c61.png
"Читается" слева на право.
Альфа отдельно, потому что DDS'ка не сохранялась.

вот опять тема затихла. где все?
Есть два варианта ответа:
1.Все в работе.
2.Энтузиазм пропал.

Лично я к 1-ому варианту себя отношу

pokibor
29.01.2008, 16:51
Народ, вам уже и ядро, и движок сделали! Осталось только их объединить и начать наращивать - и то что-то никто не чешется. Игроделы, да...
Ну что, всю игру что ли мы с L'ombre (ну ещё + рисунки DEAD_Angel) делать должны?
Давате, подтягивайтесь. Лично я сейчас занят английским в аспирантуре, произведенице дописываю, а также разрабатываю алгоритм поиска пути для большого поля гексагональной стратегии.
P.S. DEAD_Angel, небольшой вопрос. Вы способны нарисовать или взять откуда-нибудь анимации для человека?

andNsX
29.01.2008, 17:09
pokibor
Выше по теме я спрайт взрыва сделал, сейчас над тайлами поработаю. Сразу вопрос, в один их файл кидать то есть "кирпичной кладкой" или по отдельности и какой размер ( я вот думаю или 32х32 или 64х64, это уж pokibor на твой выбор по движку)

DEAD_Angel
29.01.2008, 17:13
Вы способны нарисовать или взять откуда-нибудь анимации для человека?
Нарисовать к сожалению (пока, авось научюсь как-нибудь) не могу :( , а взять - можно погуглить (как-нибудь попытаюсь). И если можно поточнее, какие анимации (всмысле лицо, или сам человек, с какого ракурса) ?

Кстати, andNsX, ты знаешь где её мона взять, ты же спрайты откуда-то качаешь ?

Выше по теме я спрайт взрыва сделал, сейчас над тайлами поработаю. Сразу вопрос, в один их файл кидать то есть "кирпичной кладкой" или по отдельности и какой размер ( я вот думаю или 32х32 или 64х64, это уж pokibor на твой выбор по движку)
Видел как я делал ? А разрешение это какое хочешь...

andNsX
29.01.2008, 17:22
DEAD_Angel
Я их не качаю, а выдираю и фильтрую. Скажем спрайт взрыва из Mortal Kombat 3 !!!

Видел,ничё , кинь плиз не в виде альфы и RGB, а в виде *.psd.

Вот трава (не то что вы подумали)
http://i036.radikal.ru/0801/90/04053dd7f545.jpg

pokibor
29.01.2008, 17:25
andNsX
Движок поддержит всё, что угодно. Кадры одной анимации лучше кидать в один файл - мне меньше работы будет. Размер - до лампочки. В крайнем случае, я и до степени двойки дополнить смогу... Хотя почему "я"? Вроде как руководитель проекта не я :) Вот пусть razor21 отпшется по теме - он вроде предлагал себя, так что пусть он компонует всё в игру ;) А мы с L'ombre будем за свои части отвечать.

DEAD_Angel
Ну, если подразумевается стратегия... хотя всё-таки хотелось бы нечто ближе к RPG... Но, в общем, это ещё в раздумиях... Эх... Понимаю, в принципе, что Вам такое не осилить... Ладно, допустим, я как-то это обойду. А потреты людей хотя бы нарисовать сможете?

DEAD_Angel
29.01.2008, 17:58
andNsX
Вот:
http://dump.ru/files/o/o8842140909/

А потреты людей хотя бы нарисовать сможете?
К сожалению, наверно нет (мастерства нет, в художку не ходил), хотя это "с чистого листа" делать или срисовать есть откуда? pokibor, надо бы, как-нибудь, кого-нибудь из Art Masters попробовать позвать...

razor21
29.01.2008, 18:17
Вот пусть razor21 отпишется по теме - он вроде предлагал себя, так что пусть он компонует всё в игру
Кхм... Я, мягко говоря, удивлен... :) По-моему, я нигде себя не предлагал сделать руководителем.

pokibor
29.01.2008, 18:20
razor21
А кем ещё ;)
Движок есть, ядро есть - будте программистом и компануйте :P Нет, ну правда - не всё же нам с L'ombre делать!
DEAD_Angel
Ладно, вопрос закрыт, если дойдёт до такого этапа - буду авторские права нарушать. Чьи - есть... :)

ORTODOX
04.02.2008, 18:18
будте программистом и компануйте
ну что? :) Очевидно, razor21 работть не хочет :)) Может научите,я попытаюсь скопановать, неохото чтобы проект скис :/

pokibor
04.02.2008, 19:10
ORTODOX
Смотрите, кто разбанился! :D
Качайте движок, качайте ядро и смотрите на код. ;) Что непонятно - я или L'ombre разъясним.

ORTODOX
04.02.2008, 20:02
pokibor
Просто обидно,что другие участники форума не принимают участия :(
Я качал,когда еще в бане был ,у меня ошибко выдает
http://i034.radikal.ru/0802/5e/565e5ab49c61.jpg

pokibor
04.02.2008, 22:01
ORTODOX
Под чем запускаете его? Видимо, у Вас 64-битная система - поставьте VS 2008 и перекомпильте юзая, 64-х битные библиотеки, только и всего.

ORTODOX
05.02.2008, 15:28
pokibor
нет ,32 бита ... прошлые версии запускались, впринципе скрин я уже показывал %)

pokibor
05.02.2008, 16:02
ORTODOX
Перекомпильте...

ORTODOX
05.02.2008, 18:34
pokibor
переведи :)) Где перекомплировать? :)

pokibor
05.02.2008, 18:37
pokibor
переведи :)) Где перекомплировать? :)
Говорил же... в Visual Studio 2008! Вы как программировать игру собираетесь?
Движок ни во что не собран, это просто классы в h- и cpp-файлах, требующие DirectX SDK (поновее) и Visual Studio (желательно 2008 версии, хотя, вполне возможно, и на Builder заработает, если корректно к нему DX SDK привинтить).

ORTODOX
05.02.2008, 18:40
Вы как программировать игру собираетесь?
что-то я уже передумал :)
МОДЕЛЕРЫ!! ВЫ ГДЕ?! :)
ЗЫ pokibor а ты сможешь до конца гаму доделать? Т.е если моделеры вернутся :) , то доделали бы быстренько до конца и все! ;)

razor21
05.02.2008, 18:54
ORTODOX
Я работать хочу! Не надо тут за меня говорить! Думаю, ясно?
что-то я уже передумал
A еще про меня говорил... :lol:

Просто у меня 17 февраля НПК по программированию, поэтому готовлюсь. Как пройдет, так и приступлю.

pokibor
05.02.2008, 18:59
ORTODOX
Я-то, ясное дело, смогу. (Вообще, у настоящего программиста на вопрос, может ли он написать программу, есть только два ответа: "Могу!" и "Могу, но не знаю, как!"). Только это, во-первых, всё-таки не мой проект, во-вторых, я сейчас литературное произведение всё-таки пишу, и в-третьих, у меня работа и аспирантура.
P.S. Кстати, если я гаму доделаю с моделерами - какая Ваша роль будет? :mad:

ORTODOX
05.02.2008, 19:43
A еще про меня говорил..
про меня то понятно, я не умею :)) (ты записан в участники)))
какая Ваша роль будет?
не знаю :( Могу выполнить любую лугкую, но трудоемкую работу :)

L'ombre
06.02.2008, 19:56
на случай недоступности ifolder (а такое уже наблюдалось) ещё раз выкладываю исходники ядра игры

http://www.shadow.dynalias.com/tanks/core.rar
пароль у архива t@nk$c0re

(впрочем, там пара мелочей добавлена)

Могу выполнить любую лугкую, но трудоемкую работу

подумайте, например, об объектах матрицы - предложите набор объектов и определите свойства для них.
Аналогично для снарядов, танков.

ещё задача, которая уже потребует навыков программирования:
разработать формат файла, в котором хранится описание свойств этих объектов, и сделать простенький API для доступа к этому файлу.

например, можно сделать аналог текстовых dat-файлов из GTA (3, VC, SA):

# - симовл коментария
# каждая строка полностью задаёт свойства одного объекта
# id pass armor hp texture
0 1 0 0 empty.png
1 0 1 1 brick.png
2 0 2 1 stone.png
3 0.7 0 0 swamp.png
# и тд

и какой-нибудь класс, который читает этот файл и возвращает нужный набор значений по заданному id; этот класс в дальнейшем будет использоваться в фабриках (ячеек, танков, снарядов, орудий)

ORTODOX
08.02.2008, 10:28
подумайте, например, об объектах матрицы - предложите набор объектов и определите свойства для них.
Извини конечно, я ничего не понял! ;) Может pokibor придумает мне какую-нибудь работу :))

pokibor
08.02.2008, 11:27
ORTODOX
Какую, :censored:, работу?! Кто у нас (простите, не у нас, а у вас) руководитель проекта? Работы он должен распределять! А Вы, к тому же, ещё роль себе даже не выбрали! Кто Вы? Программист? Вряд ли, ибо задание L'ombre не поняли, а оно уж так расталкованно, что любой программист должен понять. Кто-то ещё? Говорите, кто.
Хотя могу дать Вам задание - можете попробовать адаптировать мой уже неплохо прописанный мир под игру. То есть прочесть здоровющее произведение, найти в нём исторический момент, в который можно впихнуть игру с такой схемой, и набросать своё предложение. Только вряд ли такая овчинка будет стоить выделки...

P.S. Сейчас пишу последнюю главу второй части своего произведения. Как закончу - будет куда больше времени, так что есть вероятность, что что-нибудь для проекта сделаю. Хорошо быть всего лишь консультантом! :lol:

Bessyaka
08.02.2008, 12:35
ORTODOX
А зачем вам моделлеры? Вы ведь игрушку в 2D вроде делаете.

andNsX
08.02.2008, 12:46
Bessyaka
Имеются в виду не совсем моделлеры а так сказать Спрайтеры! То есть люди по графике, я например такой.

ORTODOX
08.02.2008, 13:53
pokibor
Ты чего это вдруг?! Просто не знаю что мне делать, когда нет команды, сначала то все хорошо начиналось ,а себе работу я еще придумаю ...
ЗЫ Пока не придумал ...

pokibor
08.02.2008, 14:01
Просто не знаю что мне делать, когда нет команды, сначала то все хорошо начиналось ,а себе работу я еще придумаю ...
Можете себе работы не придумывать. Ваша задача как руководителя проекта (если Вы всё-таки решили соответствовать написанному в шапке) - распределять работу между другими. И поверьте, это ещё какой труд! Вы должны чётко понимать, какой компонент игры куда вставлять и кто это может сделать. Без руководителя проекта он обречён практически наверняка, а "когда всё начиналось" была первая волна энтузиазма. Вы же, уважаемый "руководитель", тогда так же ничего не делали, надеясь, что оно само сделается. Нет, чудес не бывает. Либо Вы берётесь за ум, начинаете собирать народ и распределять толково описанные задания, либо ищите другого руководителя проекта.

andNsX
08.02.2008, 14:31
ORTODOX
Ну, руководитель! Чё мне то делать? Может спрайт какой достать, или тайлы для уровней? Эффекты, что же мне делать то?

DEAD_Angel
10.02.2008, 23:10
ORTODOX
Исправляй мой статус в проекте, я уже не заблокирован ! :)

ЗЫ Завтра чё-нить нарисую.

L'ombre
13.02.2008, 00:08
новая версия ядра
взять можно там же, где была старая

http://www.shadow.dynalias.com/tanks/core.rar
пароль у архива t@nk$c0re


немного поменялись интерфесы; если вдруг кто-то уже начал компоновать с графическим движком pokibor'а старую версию ядра, то придётся кое-что переделать...


основная причина изменений - довольно простая и всем знакомая концепция командной игры. В прошлой версии при столкновении снарядов с танками использовался принцип free for all, или каждый сам за себя: снаряд повреждал всё подряд.
В новой версии этим можно управлять. предполагается, что есть несколько команд. Каждый танк (а значит и все выпущенные им снаряды) принадлежит какой-то одной из них. Т.е. теперь у снарядов и танков есть свойство "номер команды", соответственно изменились их конструкторы, а также вызывающие их фабрики. Если снаряд "сталкивается" с другим танком своей же команды - то он необязательно повреждает его; он может пролететь сквозь него, как в оригинале на NES (или над ним, чтобы реалистично это объяснить), но может как и раньше взорваться и нанести поврежление; этим управляет свойство снаряда Friendly Fire. Можно, например, представить, что снаряды с Friendly Fire == false просто пролетают над своими танками, а снаряды с Friendly Fire == true - это такие катящиеся бомбы (как в Serious Sam), которые сносят всё без разбора.

Но это ещё не всё.. Я ещё прошлый раз обещал подумать над Respawn Manager'ом, и появление команд стало хорошей причиной его основательно переработать. В старой версии Respawn Manager содержал информацию о количестве танков на игровом поле и об их общем количестве - общую для всех танков. Это несколько нелогично: ведь в классических танках Tank 1990 было своё количество для компьютерных танков и своё количество танков у игрока (три жизни). Т.е. эти данные нужны не общие, а для каждой команды.
Теперь это именно так. после создания Respawn Manager'а
RespawnManager* respawn_manager = new RespawnManager();

ему нужно сообщить, какие в нём будут команды:

// добавляем команду 0 из одного танка на поле, всего три танка
respawn_manager->AddTeamLimiter(0, 1, 3);

// добавляем команду 1 из трёх танков на поле, всего пять танков
respawn_manager->AddTeamLimiter(1, 3, 5);


теперь, как и раньше, нужно добавить точки, на коорых будут респауниться танки. но раньше количество точек должно было быть равным количеству танков на игровом поле (если их было больше, то лишние не использовались, если меньше - могли возникнуть слабо предсказуемые вещи), а теперь это не так. Теперь точек у каждой команды может быть меньше, чем танков этой команды на игровом поле, и это обрабатывается корректно: просто оставшиеся танки появятся позже. Конечно, не всё так просто: точки могут быть заняты; в таком случае танк, который должен респуниться, ждёт некоторое время, пока они освободятся. Однако ждать вечно он не может, и через некоторое время он всё равно респаунится, а те кто ему мешал.. сами виноваты; телефраг.


вот как теперь выглядит создание respawn manager'а


// point id team
// добавляем точку (4, 4) на которой будут респауниться танки команды 0
respawn_manager->AddPoint(tanks_game_core::Point( 4, 4), 0, 0);

добавляем две точки, на которых будут респауниться танки команды 1
respawn_manager->AddPoint(tanks_game_core::Point(10, 4), 0, 0);
respawn_manager->AddPoint(tanks_game_core::Point(16, 4), 1, 1);


как было сказано выше, количество танков любой команды на игровом поле может быть больше количества точек респауна этой команды. Поэтому при создании уровня создаётся сразу нужное количество танков, но на игровое поле помещаются только часть из них, равная количеству точек. Для создания танков используются id танка, переданные вторым параметром метода AddPoint (см выше). Для оставшихся танков id определяется циклически.

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

De-Luxis
16.02.2008, 16:26
Где эту игру достать? Или она еще не готова?
П.С. Былобы здорово, если бы был мультиплеер в игре. Друг против друга бы рубились.

pokibor
16.02.2008, 16:40
Где эту игру достать? Или она еще не готова?
Перечитайте первый пост. Конечно, мы бы с L'ombre могли бы сами довести проект до чего-то более-менее целого, но у нас не так много времени и кроме того это не наш проект.
Если возьмётесь помогать - наверное, Вас с радостью примут. Только опять же читаем первый пост, кто нужен проекту. ;)
А я плюс ко всему параллельно свой проектик потихоничку двигаю, но представлю его публики только когда будет цельный каркас.


П.С. Былобы здорово, если бы был мультиплеер в игре. Друг против друга бы рубились.
Это без проблем, в т.ч. и по сети. Кое-какие классы у меня остались. Но раз никто даже в движке разобраться не может...

andNsX
16.02.2008, 16:50
pokibor
Наш хороший ORTODOX забанен опять))) Может возьмёшь проект под контроль? Сколько он был разбанен, начиная с недели назад ни поста не написал! А без него я и не знаю что рисовать??

pokibor
16.02.2008, 17:13
andNsX
Я уже писал выше, что у меня немного другие интересы. Вот если бы L'ombre взялся за это - было бы отлично, тем более, что ядро - его. Кстати, я в движке пару багов исправил, но пока выкладывать не буду, ибо бесполезно. Как проект сдвинется с мёртвой точки - выложу.
А пока - ждите, может, я свой проект скоро запущу... как только напишу более-менее толковый каркас для него.

razor21
16.02.2008, 18:23
Завтра у меня конференция по программированию, так что я к ней готовлюсь, а вот после нее я уже смогу плотнее заняться проектом, тем более, что с движком я ознакомился.
Так что, думаю, скоро начнем... :)

DEAD_Angel
18.02.2008, 22:10
Я тоже занят малень - школа напрягает, так что как-нить через недельку смогу активно рисовать срайты. :)

razor21
08.03.2008, 23:06
L'ombre
У меня вопрос по ядру. Каким образом в матрицу, состоящую из CellItem'ов, будет занесена карта? Ведь такая матрица - это и есть игровой уровень. Как должен представляться сам уровень? Просто текстура? Тогда как ее занести в данную матрицу? Тогда в отдельном файле для каждого уровня придется хранить информацию о проходимости CellItem'ов и т.п.

L'ombre
08.03.2008, 23:57
Тогда в отдельном файле для каждого уровня придется хранить информацию о проходимости CellItem'ов
да.
кстати, именно над этим я пару страниц назад - http://forum.igromania.ru/showthread.php?p=3333724#post3333724 - просил подумать ORTODOX'а (но он ничего не понял..)
предполагается, что при загрузке уровня с диска будет считываться матрица, хранящаяся в некотором виде - не важно каком, лишь бы было понятно, что в точке (x, y) находится ячейка типа z; этот самый z передаётся в фабрику ячеек, которая создаёт по нему нужный CellItem.
(про фабрики я говорил тут: http://forum.igromania.ru/showthread.php?p=3258610#post3258610)
как именно создаёт - зависит от реализации фабрики. мне как раз нравится вариант с файлом описания типов ячеек, лежащим где-нибудь в директории с игрой, или даже в директории (архиве) с уровнем, чтобы для каждого уровня можно было определить свой набор CellItem'ов. Фабрика грузит в себя этот файл и вперёд (аналогично, кстати, с танками, снарядами и орудиями)
насчёт текстуры. каждой ячейке присваивается своя текстура (модель, ещё что-нибудь, нужное для отображения - но движок у нас 2D, так что текстуры достаточно), какая именно - тоже указано в этом файле описания. можно, конечно, и матрицу текстурой представить, один пиксель - одна ячейка (только это должен быть формат без потерь, естественно).

p.s. CellItem::passability в ядре сейчас не используется. т.е. используется в упрощённом виде, я про это уже говорил - его значение не влияет на задержки при движении, только определяет, возможно ли движение или нет. я это исправлю - если проект будет разиваться дальше.

razor21
09.03.2008, 10:29
Наверное, так поступать надо:
Есть текстура карты полностью. Есть файл, в котором информация о карте содержится. И в этом же файле есть информация о каждом из блоков матрицы. К примеру, элемент (0;0) в него надо загрузить участок из текстуры с координатами (dx;dy). Таким образом?

L'ombre
09.03.2008, 16:29
Есть текстура карты полностью
а что это такое? одна большая текстура, "вид на уровень своерху"? Тогда как будут обрабатываться разрушения ячеек? Скажем, был кирпич, потом он разрушился, на его месте теперь "пустая ячейка"; в этом месте нужно отобразить другую текстуру, текстуру земли - где её взять?

или же "текстура карты полностью" хранит в себе несколько отдельных текстур для ячеек матрицы, как кадры анимации? если так, то в файле будет храниться информация вида:
id ячейки - номер кадра (ну или координаты участка в текстуре)
такой вариант вполне можно использовать.

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

razor21
09.03.2008, 17:32
L'ombre
Все-таки разумнее будет иметь текстуру, на которой будут находится все объекты, которые могут быть в игре. А уже для каждого уровня матрица уровня заполняться будет по-своему. Например, в ячейку (0,0) загрузить то-то, в ячейку (0,1) то-то, и т.д. Таким образом можно будет и саму текстуру получать по id, и заменять ее.
Согласны?

L'ombre
09.03.2008, 18:55
Все-таки разумнее будет иметь текстуру, на которой будут находится все объекты, которые могут быть в игре. А уже для каждого уровня матрица уровня заполняться будет по-своему
да, согласен, пусть будет так. но и тут есть два варианта. эта текстура - набор всех возможных объектов - может быть общей для всей игры или только для одного уровня (т.е. у каждого уровня свой набор объектов). можно пойти дальше - один набор объектов - общий, а в каждом уровне может быть дополнительный, добавляющий новые объекты.

razor21
09.03.2008, 19:04
L'ombre
Надо бы сначала определить стандартный набор объектов, которые могут быть в любом уровне. И начать компоновать ядро с движком.
Моделерам и художникам
Люди, нарисуйте основные объекты, которые были в "Танчиках", - асфальт, кирпич, бетон, трава, вода. Ну и откликнитесь те, кто может это сделать!

//------------------------------------------------

Так... Ну что это такое?!
DEAD_Angel - Вы ведь вроде как художник? Почему нет никаких отзывов в теме на мою просьбу?
HaNproKilleR - то же самое.
andNsX - Вы товарищ с очень оригинальной ролью - гамакер. Это, простите, что? Вы что должны выполнять?
Поназаписывались в проект!
Ладно, если так ничего и не будет, то... то плохо будет.

P.S.
Придется самому нарисовать в Paint'e некоторые объекты. И начать компоновать движок с ядром.

pokibor
10.03.2008, 21:40
razor21
Напиши им в личку, и попозорь там ;)
Если нужно в движке что-то дописывать будет - говори мне. Я вот чувствую, что придётся делать копирование области с одной текстуры в другую, потому что не для каждой же клетки квад создавать! Как ты считаешь?

_†DAMIAN†_
10.03.2008, 22:35
Движок скачать можно отсюда (http://forum.igromania.ru/showpost.php?p=3240319&postcount=188/)


Там ссылки повидемому уже "мертвы" возможно ли перезалить?

pokibor
10.03.2008, 23:07
_†DAMIAN†_
Пожалуйста: http://ifolder.ru/5683024
Вроде более-менее свежая и рабочая версия. Я сейчас просто над GUI меееедленно работаю (других дел навалом), но эта, кажется, довольно вменяемая.
P.S. Упс! Если там выдастся ошибка на инструкции вроде #include "gui.h" - просто удалите эту директиву. Она не нужна.

andNsX
11.03.2008, 14:18
razor21
OK Я со вчерашнего дня рисую.
pokibor
Исправь меня на художника.

Скоро выложу...

UPDATE:
Вот, тут трава, кирпичи и вода. Как я понял ещё бетон дорогу и т.п.

http://ifolder.ru/5690262
Пароль: TANK_TEXTURE

DEAD_Angel
11.03.2008, 16:18
Мне чет пока ниче существенного нарисовать не получилось.. :( школа напрягает, вот завтра нарисую точно! :) Так что знайте я жив! :)

И еще забыл: 6112105 - аська одного дельного программера, который (вроде правда:)) знает и умеет програмировать на С++.
Только вот незадача, я его спрашивал, а он нехочет нам помочь(( так что кто нить на досуге уговорите его =)

razor21
11.03.2008, 18:23
И еще забыл: 6112105 - аська одного дельного программера
Не надо нам. Главная проблема не в программировании, а в художниках.
Мне чет пока ниче существенного нарисовать не получилось..
Ну пробуй, старайся ;)
L'ombre
Свойство ID у CellItem'a означает тип ячейки, я так понял? То есть, можно будет иметь ввиду типа "трава", "асфальт" и т.д. Так?
И еще: в ядре ведь подразумевается плавная езда танком? То есть, не сразу перескок с одной ячейки на другую, а плавно. А принадлежность танка к той или иной ячейке можно, к примеру, определять через центр танка, смотря к какой ячейке он ближе. Ага?
pokibor
Просил напомнить про копирование текстуры ;) так как в асе тебя нет... :)
Вот, тут трава, кирпичи и вода. Как я понял ещё бетон дорогу и т.п.
Отлично. Но, когда мы обсудим ядро, наверняка придется их поправить, то есть сделать новые. Чтобы не было прямых углов, то есть закругленные бока для всех углов. Ну и оставить один такой для центра.

L'ombre
11.03.2008, 20:04
Свойство ID у CellItem'a означает тип ячейки, я так понял? То есть, можно будет иметь ввиду типа "трава", "асфальт" и т.д.
совершенно верно

И еще: в ядре ведь подразумевается плавная езда танком?
нет. как раз в ядре не подразумевается.
я про это говорил тут - http://forum.igromania.ru/showthread.php?p=3205007#post3205007 - в результате был выбран второй вариант. То есть каждый танк может переместиться не более чем на одну ячейку за такт, а разная скорость создаётся засчёт задержек. Поэтому в ядре у траверсеров нет свойства "скорость", поэтому же координаты у всех объектов целочисленные, да и вообще идея дискретности пронизывает весь код ядра.

Вот визуализатор будет рисовать танки плавно. Раз уж возник такой вопрос, расскажу об этом подробнее.

вот есть танк. он может стоять или двигаться, то есть у него два мозможных состояния. Чтобы заставить его двигаться, нужно вызвать метод OrderMove() - для танка это приказ "сдвинуться вперёд на одну клетку". Если ничего ему не мешает, то он начинает двигаться. У него есть задержка, которая определяет его скорость - грубо говоря, это количество игровых тактов, которые танк потратит на движение. Все такты между началом движения и окончанием движения танк, с точки зрения ядра, стоит на месте. при этом он "резервирует" ячейки, которые он займёт после движения, чтобы другие танки не могли начать двигаться туда же; при этом ядро само обрабатывает всякие столкновения летящих снарядов с этими ячейками. Так вот, танк находится в этом состояни несколько тактов, и каждый такт может занимать несколько единиц реального времени, и в это время его нужно отрисовывать на экране. так вот, отрисовывать его нужно плавно. "Картинка", представляющая танк, может находиться между ячейками (а сам танк - не может). Чтобы определить, где именно рисовать эту картинку, нужно сравнить текущее значение таймера танка (метод Timer() ) с его максимально возможным значением (метод ActualDelay() ). чем ближе это значение к нулю, тем ближе нужно рисовать танк к конечной точке движения.

всё это, кстати, относится и к снарядам; за исключением того, что снаряды движутся всегда, им не нужно приказывать двигаться

p.s. razor21, почитайте повнимательнее ранние посты этой темы. да, там много хлама, но хотя бы мои и pokibor'а сообщения почитайте - там уже есть ответы на многие вопросы

p.p.s. насчёт текстур. художники! - договоритесь с razor21'ом насчёт формата этих самых текстур - тип файла, размеры и тд, чтобы не получилось такого, что каждый делает текстуры своего размера. А пока текстуры не готовы, можно, и правда, сделать несколько цветных квадратиков в paint'е, чтобы отсутствие текстур не мешало процессу разработки.

DEAD_Angel
12.03.2008, 13:36
Непонятно насчет текстур: наверняка придется их поправить, то есть сделать новые. Чтобы не было прямых углов, то есть закругленные бока для всех углов. Ну и оставить один такой для центра. Поясни, плз, зачем?
_________________________________________
А пока текстуры не готовы, можно, и правда, сделать несколько цветных квадратиков в paint'е, чтобы отсутствие текстур не мешало процессу разработки.

конешн делайте пока цветные квадратики ;) Это ж мы художники "ждем вдохновения" :)) поэтому так медленно работем... или ленимся... :))

Добавлено через 46 минут
http://i033.radikal.ru/0803/48/6a0c36c3c297.jpg - Вот нарисовал в фотошопе при помощи элементарного зашумления и блюра *говорит с недовольством собой* кажется похоже или на мелкие камни, или на грязь :)) вообщем текстура какого-то "состояния" земли =)

andNsX
12.03.2008, 16:33
DEAD_Angel
Как я понял мы единственные живые художники! Насчёт формата: пока-что делай в PSD 256x256.
razor21
Так какой нам брать формат и разрешение?

razor21
12.03.2008, 18:54
Художникам
Формат файла решено использовать PNG. Пока делайте в разрешении 256х256.

DEAD_Angel
12.03.2008, 19:06
Насчёт формата: пока-что делай в PSD 256x256.
andNsX
Я понимаю, что в PSD это легче редактировать, но что будут делать люди у которых нет фотошопа ? Так что нужно делать файлы двух типов: PSD (для себя любимого), и ну допустим тот же PNG (для тех у кого нет фш, вед не у всех програмистов есть фш, наверное). :)

razor21
уходишь от ответа :) Но, когда мы обсудим ядро, наверняка придется их поправить, то есть сделать новые. Чтобы не было прямых углов, то есть закругленные бока для всех углов. Ну и оставить один такой для центра.
Зачем это? (Чисто для внешнего вида, или же это "необходимость"?)

razor21
12.03.2008, 19:29
уходишь от ответа
Не ухожу - забыл ответить. Это надо для того, чтобы объекты не казались квадратными,некрасивыми. То есть нарисуйте такие же только сделайте (в отдельности, то есть разные файлы) каждый угол прозрачным, чтобы при собирании карты не было прямых углов, а все было ровно. Ясно?

L'ombre
13.03.2008, 10:57
пофиксил пару багов в ядре

http://www.shadow.dynalias.com/tanks/core.rar
пароль у архива t@nk$c0re

фиксы:
- Tank::OrderMove() вызывает MatrixTraverser::Move() (раньше вызывал Traverser::Move(), и это было неправильно)
- MatrixTraverser::RemoveTrace() правильно удаляет из матрицы движущиеся в момент удаления траверсеры (в предыдущей версии я забывал очищать зарезервированные клетки)

кстати, предлагаю этот линк поместить в первый пост.

razor21
13.03.2008, 19:07
L'ombre
Что-то у меня не качается. И браузер, и DM отказываются качать. Можешь заново выложить? Сервер не доступен.