spectrum game
Содержимое репозитория не является законченынм продуктом и лежит тут скорее для истории. Код оставлен в том состоянии в котором он был в момент, когда я понял, что дальше продолжать нет смысла.
По изначальной схеме отрисовки под всю графику нужно было 14 держателей спрайтов. Память для них выделяется динамически библиотекой sp1. Однако при попытке собрать игру со всем минимально необходимым количевом ресурсов (уровень, спрайты и прочее) памяти хватало только на 12. Как уйти от динамической аллокации или снизить общее потребление памяти я за приемлемое время не разобрался.
Что я пробовал:
Что я не пробовал:
Скорее всего ради лулзов я реализую концепт под другую платформу. Можете смело использовать этот хлам в своих целях или не использовать вовсе.
compile.sh
Крыло звездолётов пытается покинуть систему после выполнения опасной миссии. Прыгая от маячка к маячку, сражаясь с перехватчиками и получая помощь из самых неожиданных мест они прорываются к главным вратам из этого недружелюбного места
Мы управляем крылом из нескольких (до 5 звездолётов). В самом начале у нас 3 Т1 корабля (может и другие старты, если придумаем какие). Прыгая вперёд по маячкам мы должны долететь до главных врат, чтобы убраться из этого сектора. На каждом маячке будет одно из:
У кораблей бывают такие характеристики:
Корабли бывают следующих типов:
Название корабля | Особая способность | Особое действие | Над каким типом преимущество |
---|---|---|---|
Перехватчик | Отступая наносит вражескому лидеру урон равный своей SP | Поменять любой вражеский корабль с лидером местами | Торпедоносец |
Торпедоносец | Каждый ход наносит лидеру вражеского крыла 1 урона | Нанести выбранному кораблю во вражеском крыле урон = SP | Эсминец |
Эсминец | Снижает входящий урон на SP (применяется после множителя) | Отступить на вторую позицию и принять на себя следующую атаку (именно атаку) | Перехватчик |
Поддержка | Каждый ход восстанавливает всем союзным кораблям 1 здоровье | Восстановить выбранному союзному кораблю SP здоровья | - |
При встрече с противником начинается бой. Перед боем игроку показывается вражеское крыло. В этот момент можно перетасовать корабли в своём крыле. После этого корабли во вражеском крыле и начинается бой.
Бой проходит по следующим правилам:
Пример
На 1 ходу перехватчик будет атаковать эсминец с множителем 1, а торпедоносец с множителем 2.
На 22 ходу он же будет атаковать эсминец с множителем 3, а торпедоносец с множителем 4.
Компьютер (за исключением боссов) всегда действует так:
После победы над противником даются кредиты и все корабли в крыле исцеляются на 1/4 своего хп. Кредиты можно тратить в магазине на улучшения и новые корабли. За победу над особо сильными крыльями бонусы.
За каждое перемещение между маячками срабатывает пассивный отхил от кораблей поддержки. В каждом магазине предлагают для покупки 3 случайных бонуса. Каждый бонус в одном магазине можно купить лишь раз. Любой бонус в одном магазине может встретиться любое число раз. Исключение — лечение. Оно для каждого магазина может выпасть только раз.
При перемещении конкретный состав вражеского крыла не виден, но видна его примерная сила.
В конце каждого пути — босс.
Всего будет 2 босса:
Основная идея: корабли первого уровня просто воюют и делают что-то ещё. Корабли второго чуть лучше воюют и ОЧЕНЬ ХОРОШО делают что-то ещё. Боссы провереяют крыло игрока на некоторые экстремальные условия.
Тип | Tier-1 | Tier-2 |
---|---|---|
Перехватчик | Наносит высокий урон, быстро сбивает бомберы, становясь лидером царапает противника | Наносит очень высокий урон, мгновенно сбивает бомберы, вылетая фактически делает бесплатную атаку. |
Бомбер | Относительно быстро сбивает эсминцы. Добивает раненых. | Практически мгновенно сбивает эсминцы. Наносит большой урон в дальнем бою |
Эсминец | Выдерживает много урона. Быстро сбивает перехватчики | Практически неуязвим для всего, кроме бомберов. Доминирует над перехватчиками |
Поддержка | Подлечивает из задних рядов. Иногда принимает удар на себя | Исцеляет. Даёт время передохнуть |
Босс | Фича |
---|---|
Призыватель | Тест выносливость, либо приоритезация |
Переманиватель | Не складываем все яйца в одну корзину |
Название корабля | Атака | Здоровье | SP |
---|---|---|---|
Перехватчик - 1 | 3 | 10 | 1 |
Бомбер - 1 | 2 | 9 | 3 |
Эсминец - 1 | 2 | 12 | 1 |
Поддержка - 1 | 1 | 8 | 2 |
. | . | . | . |
Перехватчик - 2 | 6 | 11 | 6 |
Бомбер - 2 | 3 | 13 | 5 |
Эсминец - 2 | 4 | 19 | 2 |
Поддержка - 2 | 1 | 16 | 7 |
. | . | . | . |
Призыватель | 0 | 40 | 0 |
Переманиватель | 8 | 35 | 0 |
Название | Что делает | Стоимость |
---|---|---|
ATK | Мод. + 2 ATK | 3 |
HP | Мод. + 3 ХП | 3 |
SP | Мод. + 1 SP | 3 |
MSL | Мод. Корабль даёт вклад по торпедам | 3 |
SUP | Мод. Корабль даёт вклад по ремонту | 3 |
ARM | Мод. Корбаль получает на 1 урон меньше | 5 |
REB | После подрыва корабль перерождается и теряет этот мод | 7 |
HEAL | Излечить все корабли в крыле | 1 |
UPG | Улучшить корабль с сохранением модов | 10 |
NEW | Добавить Тир-1 корабль в крыло | 5 |
За победу над вражеским крылом мы получаем (уровень столкновения) + 1 кредитов и лут
Лут выдаётся за сбитые в процессе боя корабли (и свои и чужие). За сбитый тир-1 корабль 7 очков лома, за тир-2 — 13. За установленный модуль ещё 3. Т.е. сбитый тир-2 корабль с 1 модулем даст 16 очков лома. За каждые 20 очков лута бросается 1к4 (но не более 3-ёх костей). Результат суммируется, лут берётся из таблицы
Результат | Награда |
---|---|
1 | HEAL |
2 | MOD |
3 | MOD |
4 | HEAL + MOD |
5 | NEW |
6 | MOD |
7 | MOD + MOD |
8 | UPG |
9 | HEAL |
10 | HEAL + MOD + UPG |
11 | HEAL + ARM + UPG |
12 | HEAL + REB + UPG |
Столкновения уровней (0-2), (3-5), (6-8) (9) обозначены разными черепками
Уровень | Состав | Лом |
---|---|---|
0 | 2 T1 | 7 * 2 = 14 |
1 | 2 T1 + 2 M | 7 2 + 3 2 = 20 |
2 | 3 T1 + 2 M | 7 3 + 3 2 = 27 |
3 | 2 T2 + 3 M | 13 2 + 3 3 = 35 |
4 | 1 T2 + 4 T1 | 13 1 + 7 4 = 41 |
5 | 5 T1 + 4 M | 7 5 + 3 4 = 47 |
6 | 5 T1 + 7 M | 7 5 + 3 7 = 56 |
7 | 2 T2 + 3 T1 + 5 M | 13 2 + 7 3 + 3 * 5 = 62 |
8 | 4 T2 + 5 М | 4 13 + 5 3 = 67 |
9 | Босс | - |