russian ROMhacking
[ Новые сообщения · Участники · Правила форума · Поиск ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум ромхакеров » Около темы » Геймдев » Танковый TDS в стиле T.N.K. III/Blazer/Shock Troopers на... (Mega Drive (раб. назв. - Операция "Свинцовый туман"))
Танковый TDS в стиле T.N.K. III/Blazer/Shock Troopers на...
ТомахомэДата: Вторник, 19.12.2017, 15:32 | Сообщение # 1
Генерал-майор
Группа: Проверенные
Сообщений: 486
Статус: Оффлайн
Создаётся на BEX. Пока что стоит лишь на фазе одного из слегка изменённых примеров-демонстраций поворота спрайта, к которому из другого примера прикручен зачаточный механизм стрельбы. Черновой код прикреплён к сообщению.

На данный момент важнейшие планируемые изменения:


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


С первым пунктом как раз самая и проблема. Мне уже предлагали ввести ответственную за направление ствола переменную величиной от 0 до 3, каждое значение которой означает сторону, в которую пуле лететь. Однако мозгочёс вносит уже сам тот факт, что изменяет направление ствола не само нажатие кнопки направления, а вычесления уже более хитрожопистые:
Цитата
j = joypad(0)

x = j.3-j.2
y = j.1-j.0

if x then
tank_x+= x
propsprite tank,260+hfliptile(j.2),0
elseif y then
tank_y+= y
propsprite tank,256+vfliptile(j.1),0
endif

movesprite tank,tank_x,tank_y

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

Идея возникла случайно, как своеобразный игрокроссовер вольного сиквела фильма "Белый тигр" Карена Шахназарова и сонгфика по перепевке знаменитой песни про трёх танкистов в исполнении группы "Свинцовый туман" (в её-то честь я игру и назвал). Герои игры - элитное танковое подразделение, каждый из членов которого по имени, внешности и характеру идентичен соответствующему участнику "Свинцового тумана" (правда, в игре все они будут сильно "омоложены" по сравнению со своими реальными прототипами - примерно того возраста, в котором каждый из них находился где-то в 90-х, в крайнем случае - в 2001-м; а также музыка и поэзия у них из профессии превратятся всего лишь в хобби).


Насчёт названия есть и ещё несколько вариантов - "Белый тигр v2.0", "Ползучий немец" (по аналогии с "летучим голландцем") и "TankЪ Vampira!". Хорошо бы объявить голосование, кому какое название больше нравится, если же ни один вариант вам не подходит - предлагайте свои.
Прикрепления: __2.bex (2.4 Kb)
 
TLTДата: Вторник, 19.12.2017, 21:08 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 2336
Статус: Оффлайн
Я завтра буду дома, посмотрю, смогу ли я тебе помочь...


Вот так.
 
MadaoДата: Среда, 20.12.2017, 05:31 | Сообщение # 3
Майор
Группа: Проверенные
Сообщений: 90
Статус: Оффлайн
"Белый тигр v2.0", "Ползучий немец" -ужасные названия, первое название похоже на экспериментальную версию (в этом 2.0 читается некая незаконченность то есть ущербность изначальная) ползучий немец и вовсе словно ползучий гад какой то (где это видано что бы немцы ползали) арийцы должны сокрушать а не ползать)) (придираюсь)

Делай, что хочешь - таков Закон
 
ТомахомэДата: Среда, 20.12.2017, 06:15 | Сообщение # 4
Генерал-майор
Группа: Проверенные
Сообщений: 486
Статус: Оффлайн
Цитата Madao ()
"Белый тигр v2.0", "Ползучий немец" -ужасные названия....


Что ж, эти, если никто не окажется против, из списка уберём.
 
TLTДата: Среда, 20.12.2017, 17:38 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 2336
Статус: Оффлайн
Сделал тебе выстрелы в разные стороны в зависимости от положения танка, корректную деактивацию и активацию пули, добавил врага, прописал систему коллизий с врагом и пулей, добавил систему жизней врага и пр. Исходник в ЛС.

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



Вот так.
 
ТомахомэДата: Четверг, 21.12.2017, 06:18 | Сообщение # 6
Генерал-майор
Группа: Проверенные
Сообщений: 486
Статус: Оффлайн
Цитата TLT ()
систему блокировки выхода игрока за границы экрана


Она готова. Реализована вот таким способом:
Код
If tank_x < 128 Then tank_x=128
    If tank_x > 432 then tank_x=432
    If tank_y < 128 then tank_y=128
    If tank_y > 336 then tank_y=336


Есть, правда, при этом в готовой проге одна забавная особенность - танк, если после упора в "стену" отпустить кнопку направления, "отпячивается" на пару пиксельков назад.

Также неплохо бы, я решил, укрупнить размер пули до 2х2 пкс, однако пока что удалось только повысить "высоту" пули, а вот как отрисовать уже столбцы справа от первого, чё-то пока не допру.
Код отрисовки пули здесь:
Код
DataLong $FF300000 ' Tile: 0
DataLong $FF300000
DataLong $00000000
DataLong $00000000
DataLong $00000000
DataLong $00000000
DataLong $00000000
DataLong $00000000


Цитата TLT ()
систему очерёдности стрельбы, чтобы было более одной пули.


Это прибережём на будущее, когда будет введено ещё одно оружие - установленный на башне пулемёт, которым можно будет крыть врага, пока в орудие после выстрела относительно долго закладывается новый снаряд.
 
ТомахомэДата: Четверг, 21.12.2017, 06:20 | Сообщение # 7
Генерал-майор
Группа: Проверенные
Сообщений: 486
Статус: Оффлайн
Исходник и черновой ром прикреплены.
Прикрепления: TDS_3.bex (4.9 Kb) · TDS_3.bin (15.5 Kb)
 
TLTДата: Четверг, 21.12.2017, 12:34 | Сообщение # 8
Генералиссимус
Группа: Администраторы
Сообщений: 2336
Статус: Оффлайн
Это основы, делается за 2 секунды. Разбирайся. Рисуется пуля в любом графическом редакторе, сохраняется в формате bmp с 16 цветами, конвертируется в bin и палитра отдельно вставляется.

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



Вот так.
 
ТомахомэДата: Четверг, 21.12.2017, 13:06 | Сообщение # 9
Генерал-майор
Группа: Проверенные
Сообщений: 486
Статус: Оффлайн
Цитата TLT ()
Представляю что за каша в сырце творится, когда оных становится больше 20 шт. Используй внешние файлы, скапливай их в соответствующей папке.


Зато я знаю - из сырцов Papi Commando. Там программно генерируемые ресурсы в разы длиннее, чем весь остальной код, вместе взятый, а BEX-файл весит целый мег.
 
ТомахомэДата: Четверг, 21.12.2017, 15:25 | Сообщение # 10
Генерал-майор
Группа: Проверенные
Сообщений: 486
Статус: Оффлайн
Добавил команду брать граф. данные для спрайта пули из внешнего файла и устранил небольшое отклонение точки вылета пули от ствола, во всех 4-х позициях.

Следующим делом думаю добавить возникающий на пару секунд спрайт взрыва после попадания по вражескому танку.
Прикрепления: My_TDS.rar (8.5 Kb)
 
TLTДата: Четверг, 21.12.2017, 18:12 | Сообщение # 11
Генералиссимус
Группа: Администраторы
Сообщений: 2336
Статус: Оффлайн
Томахомэ, ты будешь делать танчики или нафига пулей занялся, коррекцией пикселей? Я так понимаю, что у тебя должен быть персонаж, ходячий в 8 направлений, а не 4. Диагональное смещение и повороты нужно делать.

Сделай 8 положений квадрата персонажа. Практически это будет так:

1. смотрит налево. Благодаря флипу спрайта этот же кадр можно будет обратить направо.
2. смотрит вверх (он же вниз)
3. смотрит на полодиннадцатого - это будет диагональный кадр, который можно будет флипить на все другие диагонали.

И по шаблону сделай ещё секции + одновременное воздействие изменения x/y.

Для вспышки из дула лучше взять отдельный спрайт. Но это позже лучше, т.к. это укрошение, а не базовый функционал.



Вот так.
 
ТомахомэДата: Пятница, 22.12.2017, 08:12 | Сообщение # 12
Генерал-майор
Группа: Проверенные
Сообщений: 486
Статус: Оффлайн
Цитата TLT ()
И по шаблону сделай ещё секции...


А где этот шаблон хранится?
 
TLTДата: Пятница, 22.12.2017, 13:08 | Сообщение # 13
Генералиссимус
Группа: Администраторы
Сообщений: 2336
Статус: Оффлайн
Цитата Томахомэ ()
А где этот шаблон хранится?


В смысле, что у тебя уже есть это в 4 стороны. И ходьба, и стрельба.



Вот так.
 
ТомахомэДата: Пятница, 22.12.2017, 14:41 | Сообщение # 14
Генерал-майор
Группа: Проверенные
Сообщений: 486
Статус: Оффлайн
Добиться возможности перемещения спрайта по диагонали оказалось проще, чем я думал. Куда сложнее тут - c созданием наклонного варианта спрайта из "Танчиков" (которым я временно заменил тот, что генерируется кодом по умолчанию), поскольку после поворота такого маленького спрайта в "Фотошопе" на 45 градусов он мало того, что выглядит до безобразия размытым, да еще и при просмотре получившегося после конвертации bin-файла в тайловом редакторе выясняется, что в тайлах там - гораздо больше цветов (для которых прописанной в коде палитры попросту может не хватить), чем у горизонтального и вертикального вариантов, плюс габариты у наклонного спрайта увеличиваются с 16х16 до 24х24.
Код диагонального полёта пуль вроде прописал, но без диагонального спрайта танка проверить рабочесть этого кода трудно.
Прикрепления: 5099627.rar (9.3 Kb)


Сообщение отредактировал Томахомэ - Пятница, 22.12.2017, 14:42
 
TLTДата: Пятница, 22.12.2017, 18:49 | Сообщение # 15
Генералиссимус
Группа: Администраторы
Сообщений: 2336
Статус: Оффлайн
Какой фотошоп? Для этого существует пиксель-арт!

Имеющийся танчик из игры Гранада. В оригинале есть возможность двигаться на 18 сторон!!! Воруй.



Вот так.
 
Форум ромхакеров » Около темы » Геймдев » Танковый TDS в стиле T.N.K. III/Blazer/Shock Troopers на... (Mega Drive (раб. назв. - Операция "Свинцовый туман"))
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: