CrossCode может подойти под описание, т.к. похоже на Зельду Hyper Light Drifter - то же самое Aquaria - почти весь игровой процесс без прыжков. Song of the Deep - про бастикаф, прыжков нету Insanely Twisted Shadow Planet - без прыжков, просто летаем Ittle Dew - вид сверху-сбоку
Тут 4 шрифта. font2998 - это тот, к-й только с англ. буквами. Делал в качестве эксперимента для SpaceDestroyer. Результат меня устроил, но уж больно трудозатратно вышло. Поменял на пиксельный. font_mini - тот который использую сейчас, доработанный font_text. font_screen и font_text делал для BlueCode.
Вдруг кому-то еще пригодится (например кто игру тоже на LOVE делает).
1) коэффициент масштабирования - всегда целое число, а не автоматом растяжение; при этом или рамки из чёрного цвета или дополнительного арта, или разный обзор камеры на разных разрешениях; тут попадались всякие примеры скриптов, например: пост.
если ты делаешь именно целочисленное масштабирование (задай размер окна вручную и проверь, даже без скриптов), и при всех вариантах настроек всё равно идут искажения, то тогда "годот не умеет пиксель-перфект"
ещё один момент, что есть такие базовые разрешения (исходные 1:1, в которых нарисован арт), которые хорошо масштабируются идеально сразу на несколько популярных разрешений
тут основная суть в том, что неровности размеров, которые видно на твоей картинке, будут плавно размазаны по всем пикселям
3) с поддержкой вращения спрайтов. чтобы спрайты можно было красиво крутить (само собой, нарушая каноны пиксель-арта), нужно масштабировать не весь экран-текстуру, а отдельно каждый спрайт. Вот в этой статье написано, как поменять эти режимы в Годоте.
Каждый проект в годо заключен в только в рабочей папке проекта - некий пузырь, в котором все происходит. Здесь также, как и в тик. Я уже отвечал ранее. Создаешь, класс, например, Character, прописываешь свойства которыми он обладает и на момент создания, просто заполняешь нужные тебе параметры: здоровье, тайлы, анимации и т.д. Потом берешь этот же класс объекта и наделяешь его другими свойствами. Почитай доки, там про классы расписаны некоторые общие черты, т.е. ты даже можешь создавать свои НОДЫ с определенными свойствами: т.е. это сцена, но и не сцена, а класс.
А ещё вопрос, легко ли в годот сделать с помощью встроенной коллизии приседание?
Относительно графики - я использовал "хак", так что можно просто не обращать на него внимание.
сюжет, вначале напомнило Dark Souls, а потом микс Chrono Cross с Yume Nikki
Не играл в эти игры YAK (ну только немного бегал в Соус, прям совсем немного)
не совсем уверен как их открывать, надо просто угадывать в какие выходы надо перемещаться
Там всего на одной карте есть развилка на самом деле - 3 выхода и собственно 3 концовки.
Вопрос: а как реализована фишка с экраном "Нажми вниз" ? Там же где-то скрытый выход вниз, а персонаж тогда где, я его там не нашёл (только одна надпись) как это реализовано?
Еее, кому-то интересно! (надо было бы кстати чуть в другое место поставить это) Секрет такой: создал обычную комнату, сделал там "локацию", чтобы персонаж, предмет и выход + стенки. Затем выставил в палитре всё на чёрный цвет. Использовал хак с добавочным цветом (используется во всей игре - для портала). И сделал N тайлов с буквами - выложил ими "Нажми вниз". Прям как деды!
Я для себя нашёл такой способ. Моды вставлять не в выходной файл, т.к. лишние телодвижения, а в шаблон экспорта bitsy-master\editor\shared\other\exportTemplate.html Сделать это нужно всего 1 раз, и тогда в скачанной игре уже всё работает. В принципе достаточно удобно тестировать, если открывать сразу в браузере, а не сохранять на диск. Поставил себе таким образом end-from-dialog, exit и choice.
В редакторе пишу в нужных мне местах то, что нужно. Например, послед диалога с котом игра должна меня перекинуть в другую комнату, которую я назвал NewRoom. Я вот так делаю
В более сложных случаях можно писать это с условиями, к примеру. Ну, если переменная меньше чем что-то, то идешь туда, иначе вот туда.
Окей. Выгрузил html файл. Открываю его в чем-нибудь. Нахожу место, где кончается скрипт движка и создаю новый пустой скрипт
и вот туда копирую код с гитхаба. Сохраняю. Оно работает!
Отмечу, что если этот html файл вновь загрузить в bitsy, то все сторонние скрипты сотрутся и добавлять их надо будет заново, так что продумай технологию для себя
Сходным образом можно заюзать и другие скрипты, принцип похожий. Если лень добавлять руками скрипты, то можно загрузить в Borksy свою game data игры, после того, как всё сделать, и он добавит сам нужные тебе скрипты и выдаст html файл. Отмечу, что при экспорте Game Data в Borksy надо включить font data, иначе ничего не заработает
Можно в game data переназначить тайлу цвет, и даже сделать большее количество цветов в палитре Вот тут читать Так что теоретически можно тайлу назначить такой же цвет, как и объектам, и при этом сделать его проходимым
3) Перед загрузкой текстур love.graphics.setDefaultFilter("nearest", "nearest")
Насчет "почему по умолчанию не так" - потому что задача вообще непраздная. Как масштабировать? Пиксель-пёрфект? Или можно чуть-чуть неидеально? А ведь у людей разные разрешения мониторов, различные соотношения сторон. Вопросов много, а оптимальный ответ может быть разным. Потому и вот так всё.
Генерация подземелий в Diablo 1. хабр
не знаю будет ли кому интересно, но кажца по теме
Вот ещё припомнил:
CrossCode может подойти под описание, т.к. похоже на Зельду
Hyper Light Drifter - то же самое
Aquaria - почти весь игровой процесс без прыжков.
Song of the Deep - про бастикаф, прыжков нету
Insanely Twisted Shadow Planet - без прыжков, просто летаем
Ittle Dew - вид сверху-сбоку
https://www.dropbox.com/s/punfvc8ei0e8owr/fonts.zip?dl=0
Тут 4 шрифта.
font2998 - это тот, к-й только с англ. буквами. Делал в качестве эксперимента для SpaceDestroyer. Результат меня устроил, но уж больно трудозатратно вышло. Поменял на пиксельный.
font_mini - тот который использую сейчас, доработанный font_text.
font_screen и font_text делал для BlueCode.
Вдруг кому-то еще пригодится (например кто игру тоже на LOVE делает).
RTFM
Таймер обратного отсчета:
float timer = 19f * 60f;
public Text text;
void Update()
{
timer -= Time.deltaTime;
text.text = timer.ToString();
}
Я знаю вот такие варианты пиксель-перфект:
1) коэффициент масштабирования - всегда целое число, а не автоматом растяжение; при этом или рамки из чёрного цвета или дополнительного арта, или разный обзор камеры на разных разрешениях; тут попадались всякие примеры скриптов, например: пост.
если ты делаешь именно целочисленное масштабирование (задай размер окна вручную и проверь, даже без скриптов), и при всех вариантах настроек всё равно идут искажения, то тогда "годот не умеет пиксель-перфект"
ещё один момент, что есть такие базовые разрешения (исходные 1:1, в которых нарисован арт), которые хорошо масштабируются идеально сразу на несколько популярных разрешений
2) читерский, как в Shovel Knight, когда кажется, что перфект, но слегка не перфект: см. именно этот комментарий, а не пост.
тут основная суть в том, что неровности размеров, которые видно на твоей картинке, будут плавно размазаны по всем пикселям
3) с поддержкой вращения спрайтов. чтобы спрайты можно было красиво крутить (само собой, нарушая каноны пиксель-арта), нужно масштабировать не весь экран-текстуру, а отдельно каждый спрайт. Вот в этой статье написано, как поменять эти режимы в Годоте.
ну.. пожалуй:
Reigns
Slay the Spire
Space Run
The Curious Expedition
Tomb of Tyrants
Dead Cells
Mercenary Kings
Risk of Rain
Coin Crypt
Так
Каждый проект в годо заключен в только в рабочей папке проекта - некий пузырь, в котором все происходит. Здесь также, как и в тик. Я уже отвечал ранее. Создаешь, класс, например, Character, прописываешь свойства которыми он обладает и на момент создания, просто заполняешь нужные тебе параметры: здоровье, тайлы, анимации и т.д. Потом берешь этот же класс объекта и наделяешь его другими свойствами. Почитай доки, там про классы расписаны некоторые общие черты, т.е. ты даже можешь создавать свои НОДЫ с определенными свойствами: т.е. это сцена, но и не сцена, а класс.
Так
В Godot расстояния в пикселях, и про бугорок тоже прикрутили спец метод: https://godotengine.org/article/godot-31-will-get-many-improvements-kinematicbody
А про рисование спрайтов я тут уже написал, это для любого движка, сам так делал много раз
Относительно графики - я использовал "хак", так что можно просто не обращать на него внимание.
Не играл в эти игры YAK (ну только немного бегал в Соус, прям совсем немного)
Там всего на одной карте есть развилка на самом деле - 3 выхода и собственно 3 концовки.
Еее, кому-то интересно! (надо было бы кстати чуть в другое место поставить это)
Секрет такой: создал обычную комнату, сделал там "локацию", чтобы персонаж, предмет и выход + стенки.
Затем выставил в палитре всё на чёрный цвет. Использовал хак с добавочным цветом (используется во всей игре - для портала). И сделал N тайлов с буквами - выложил ими "Нажми вниз". Прям как деды!
Заодно обрати внимание на Pixilang http://warmplace.ru/soft/pixilang/index_ru.php Вот там точно можно творить всякие штуки с данными.
И для него вкусные пиксельные шрифты нашел: тыц
Я для себя нашёл такой способ. Моды вставлять не в выходной файл, т.к. лишние телодвижения, а в шаблон экспорта bitsy-master\editor\shared\other\exportTemplate.html Сделать это нужно всего 1 раз, и тогда в скачанной игре уже всё работает. В принципе достаточно удобно тестировать, если открывать сразу в браузере, а не сохранять на диск. Поставил себе таким образом end-from-dialog, exit и choice.
Ну вот решил я это использовать.
В описании хака посмотрел примеры использования:
Usage: (exit "<room name>,<x>,<y>")
(exit "<room name>,<x>,<y>,sprite")
(exitNow "<room name>,<x>,<y>")
(exitNow "<room name>,<x>,<y>,sprite")
Example: (exit "FinalRoom,8,4")
(exitNow "FinalRoom,8,11,sprite")
Окей.
В редакторе пишу в нужных мне местах то, что нужно. Например, послед диалога с котом игра должна меня перекинуть в другую комнату, которую я назвал NewRoom. Я вот так делаю
В более сложных случаях можно писать это с условиями, к примеру. Ну, если переменная меньше чем что-то, то идешь туда, иначе вот туда.
Окей. Выгрузил html файл. Открываю его в чем-нибудь. Нахожу место, где кончается скрипт движка и создаю новый пустой скрипт
и вот туда копирую код с гитхаба. Сохраняю. Оно работает!
Отмечу, что если этот html файл вновь загрузить в bitsy, то все сторонние скрипты сотрутся и добавлять их надо будет заново, так что продумай технологию для себя
Сходным образом можно заюзать и другие скрипты, принцип похожий. Если лень добавлять руками скрипты, то можно загрузить в Borksy свою game data игры, после того, как всё сделать, и он добавит сам нужные тебе скрипты и выдаст html файл. Отмечу, что при экспорте Game Data в Borksy надо включить font data, иначе ничего не заработает
Можно в game data переназначить тайлу цвет, и даже сделать большее количество цветов в палитре
Вот тут читать
Так что теоретически можно тайлу назначить такой же цвет, как и объектам, и при этом сделать его проходимым
1), 2) и) Надо или руками делать, или, к примеру, чет такое заюзать https://github.com/Ulydev/push
3) Перед загрузкой текстур love.graphics.setDefaultFilter("nearest", "nearest")
Насчет "почему по умолчанию не так" - потому что задача вообще непраздная. Как масштабировать? Пиксель-пёрфект? Или можно чуть-чуть неидеально? А ведь у людей разные разрешения мониторов, различные соотношения сторон. Вопросов много, а оптимальный ответ может быть разным. Потому и вот так всё.
https://github.com/love2d-community/awesome-love2d
FTW
Love конечно располагает к написанию своих велосипедов, но можно сэкономить время, и взять готовые библиотеки
Классы / Entity-Component-System:
Анимации / Твининг
Столкновения
Интерфейс
Хелперы всякие
Насчёт обёртки - есть ZeroBrane Studio. Если совсем невмоготу без IDE. :) За юзабилити не ручаюсь, но когда-то ставил, работало.
Вот к примеру в Notepad++
При запуске своего любого скрипта вводишь в "параметры запуска" что-то подобное
"D:\LOVE_FOLDER\love.exe" "$(CURRENT_DIRECTORY)"
Можешь сохранить комбинацию клавиш для этого. Всё работает в одно нажатие
(где D:\LOVE_FOLDER\love.exe - это путь к экзешнику лове)
В других редакторах кода можно аналогично сделать, я в этом 1000% уверен, конечно
Вот тут что-то даже вроде живое. Не пробовал?
Через powershell:
./tic80 | Write-Host
будет выводить в консоль./tic80 | Tee-Object -file log.txt
будет выводить и в консоль и в файлПервая строчка для юникса, вторая для PowerShell.