(бухай): программируй
148 subscribers
465 photos
96 videos
3 files
65 links
Мысли, дегустация и код
Download Telegram
Система уровней в Doom RPG конечно хорошая, но оказалось, что и подходит она только для Doom RPG.
Поэтому я решил переписать две функции.

Начну с получения опыта при победе.
В Doom RPG результат рассчитывается исходя только из характеристик врага. Таким образом, даже на высоких уровнях все зависело не от того, насколько ты сильнее или слабее врага, а только от самого врага. И это совершенно не работает в моей игре.
Поэтому я решил высчитывать полученный XP исходя из соотношения параметров врага к параметрам игрока. Получилась такая формула:
exp = ((e_attack<<8 / p_attack) + (e_defence<<8 / p_defence) + (e_dexterity<<8 / p_dexterity) + (e_accuracy<<8 / p_accuracy))/60

Теперь, если враг сильный, и у игрока каким-то образом получилось его победить, то игрок получает большое количество опыта. И наоборот, за слабых врагов игрок будет получать всего ничего. При этом, если грамотно подойти к расстановке врагов на уровнях (ха-ха), то игрок будет всегда получать примерно одинаковое количество опыта. Такой вот автолевелинг 80-х😂

И мы переходим ко второй проблеме.
Повышение границы необходимого опыта при повышении уровня.
В Doom RPG каждый уровень граница опыта просто увеличивается на 20. Там это работало. В моей игре не работает совсем. Поэтому я написал такую формулу:
next_exp = current_exp + level * 5 + 160

Таким образом, каждый уровень необходимое количество опыта растет в геометрической прогрессии. Если взять предыдущую формулу, то за одного врага (если он примерно равен по силе игроку) дается +/-16 опыта. То есть на первом уровне игроку надо убить 10 врагов, а вот на 99-ом уже 40. Это не учитывая очень сильных и очень слабых противников.

Ну и наконец, я перерисовал предыдущего противника и нарисовал еще одного.
Перерисовать пришлось, потому что на первом уровне много зеленых стен и Человек-Х с ними тупо сливается🤦‍♂️
🔥4❤‍🔥2
https://www.youtube.com/watch?v=DZgFafrS85s&t=801s

Увидел вот такое видео про Commodore и решил проверить сам, как это работает.
И это работает. Если забить в адрес 788 значение 82, то можно рисовать курсором.

А почему это работает.
Потому что 722 в шестнадцатеричной системе это $0314.
И это адрес нижнего байта вектора прерывания.
То есть, записывая в этот адрес новое значение мы немного смещаем вектор, и компьютер не выполняет несколько значимых вещей. Например, обновление таймера и моргание курсором.

Это реально круто, потому что у меня значительная части игры строится на прерываниях. За счет этого в нижней части экрана отображается текст, который просто изменять. За счет этого моргают враги при атаке. А еще параллельно работают два таймера, которые я запускаю при необходимости сделать какую-либо задержку=)
❤‍🔥4👍2
Нарисовал пару новых спрайтов для окружения уровня, и на этом доступные спрайты закончились.
Ну и вот, как выглядят новые враги первого уровня в самой игре. Доступные враги тоже кстати закончились.

Осталось прописать им адекватные параметры и поведение.

А еще починил скрипт повышения уровня. Оказалось, что неправильно проводилось сравнение 16-ти битных чисел (текущий опыт и необходимый опыт), поэтому уровни повышались после каждого убитого врага=)
🔥5❤‍🔥4👍3
Я тут ненадолго пропал.
А все дело в том, что неделю назад я женился, и потом мы отправились в свадебное путешествие :)

Но работа не спит, и хоть редко, но я пытаюсь возвращаться к игре.

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

И я все еще не знаю, как сделать сохранение и загрузку прогресса. Вроде звучит не очень сложно, но все значимые параметры лежат в разных местах. То есть придется делать несколько файлов на дискете и несколько загрузок... Но я еще подумаю
💘10🔥4❤‍🔥3
UPD.
У меня осталось чуть больше 16 Кб памяти. В это, мне кажется, еще можно кучу всего запихнуть. Но я решил остановиться на том, что есть. То есть, если новые механики и будут появляться, то редко и в меньших количествах. Точно будут дорабатываться триггеры по ходу рисования уровней. Как минимум недавно пришлось добавить два новых триггера: добавление аптечки и добавление арморкита.

Исходя из этого скорее всего придется перерабатывать карту памяти игры. Сейчас все важные функции лежат с адреса $0810 по $1fff (основной цикл, основные функции, прерывания, рендер, триггеры и управление). Там у меня осталось меньше килобайта свободной памяти.
Потом экранная память аж 6 Кб
Потом лежат таблицы для рейкастинга и текстур, буферы и данные уровня.
А уже потом прочие игровые данные и функции.

А еще же куда-то надо музыку со звуками засунуть...
❤‍🔥1
Forwarded from /g/'s Tech Memes (damir)
🔥6😁2❤‍🔥1
Надо бы делать игру, но я тут наткнулся на охренную RPG. Второй день не могу оторваться.
Называется Dread Delusion.
https://store.steampowered.com/app/1574240?snr=5000_5100___primarylinks

Я даже не буду говорить о том, как она выглядит. Графика огонь, привет PS1. На мой взгляд по атмосфере напоминает что-то среднее между Morrowind и старыми Thief. Но даже не в этом дело.

Я такого интересного лора не видел давно. Это насколько надо было упороться, чтобы такое придумать. При этом все выглядит логично и не вызывает вопросов, как в какой-нибудь Dark Souls. Тут куча хорошо прописанных диалогов, есть и книги, да и сам мир многое может о себе рассказать. А почти все квесты несут в себе какую-либо мораль, при этом она не всегда правильная, какой бы вариант ты не выбрал.

А еще мне очень понравилось, что здесь никто не ведет тебя за ручку. В начале у тебя даже карты и компаса нет, а открытие карты - один из квестов. В конце-концов ты приобретаешь компас, и с ним ориентироваться становится проще. Благо, что отдельные зоны не такие большие. Сложность вызывает только то, что все действие происходит на куче островов, висящих в воздухе.

Из минусов разве что слабая боевая система и не очень интересная прокачка. Я создал мужицкого-мужика воина, а спустя 8 часов он уже умеет взламывать замки и даже кастовать заклинания. Из-за этого игра вообще не сложная. Но на фоне такой крутой атмосферы и лора это вообще можно не замечать.
4❤‍🔥1
Наконец-то настало время заняться игрой=)
Ну и я сделал две очень важные вещи.
Во-первых, прописал код для death state в случае смерти игрока.
Пришлось немного помучиться, потому что код изначально не предполагал сброс всех характеристик до изначального уровня. Теперь все мигает красно-красным и уходит в реинициализацию игры.

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

Теперь всю эту графику надо перенести в игру, а потом уже заняться созданием уровней.

Ну и код для побега из битвы все еще не написан...
🔥53💘2
И только что понял, что, во-первых, надо менять цвет рамки после мерцания экрана при смерти.
А во-вторых, у меня не обновляется показатель здоровья игрока, если он уходит в минус. На видео, например, здоровье игрока при смерти равно двум, хотя оно скорее всего ушло в меньше, чем 255.

Ну первое прописать не сложно. А со вторым я наверное тоже не буду мучиться, и просто напишу код, который выводит на экран нулевое здоровье, даже если оно ушло в минус
🔥42❤‍🔥1
Прошел я Dread Delusion и у меня есть что сказать.
Разобью все на плюсы и минусы.
И, к сожалению, минусов будет больше.

Плюсы:
1. Очень атмосферная и глубокая в плане сюжета игра с необычным лором и окружением. Чего только стоят фентези-деревушки, феодальный город и стимпанк-СССР.
2. Олдскульная графика. Обожаю такое еще со времен PS1.
3. Интересные квесты с неоднозначными выборами. На многих квестах я реально много думал: "А как бы поступил я?"
4. Апгрейд оружия и брони. У каждого из этих предметов несколько уровней апгрейда, и для каждого уровня надо искать по всему миру нужные материалы. Это интересный подход.
5. Интересное строение мира, где каждый остров это отдельный архипелаг со своей архитектурой.

Минусы:
1. Скучная боевая система. Ударить и Ударить сильно — это все. Враги тоже не отличаются разнообразием: либо это просто melee враги, либо они из чего-либо стреляют, либо имеют при себе щит, который очень легко обойти.
2. Скучная ролевая система. Всего 4 параметра, которые отвечают за 8 навыков. Опыт повышается либо после прохождения квестов, либо при нахождении специальных черепов. И, как я уже говорил, при выборе любого класса в начале игры можно сделать универсального солдата под конец. Одежда с абилками в помощь.
3. Бесполезная магия, зелья и метательное оружие. Под конец игры у меня скопилось 150 флаконов здоровья, 300 метательных ножей и чуть меньше остальных видов зелий и предметов. Ими просто не надо пользоваться. На моей памяти это первая RPG, в которой похер на это все, какой бы класс ты ни выбрал.
4. Мало оружия. За всю игру я нашел всего 4 оружия: кинжал, меч, двуручный меч и лук. И это все! Да, их можно улучшать, но дайте чуть больше выбора, пожалуйста.
5. Бесполезная собственность. В игре есть возможность купить несколько домов и целое поместье. Но зачем? Это не дает ничего, кроме траты ресурсов (за каждое улучшение надо отдавать деньги, руду и разные растения).
6. В определенный момент игроку дают целый летающий корабль... Который портит все. Изучать эти острова было очень интересно. Я никогда не мог понять, что ждет меня за следующим углом. А на этом катере можно облететь всю карту за несколько секунд.
🔥2❤‍🔥1
В общем, игра невероятная с точки зрения атмосферы и лора, но с механиками точно надо поработать. В нее попросту очень легко и не так интересно играть, как бы хотелось.
Ну и конечно надо делать скидку на то, что ее делали 3.5 человека. Это офигенный результат для маленькой команды.

А скриншоты вообще все решают=)
👍3❤‍🔥1
В общем, можете меня поздравить с пополнением в семье=)
Вот такую ПЭВМ "Микроша" 90-го года сегодня приобрел.

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

В комплекте мне достались:
— блок питания, которым можно убить;
— картридж-новодел с кучей игр, улучшенным бейсиком и дополнительными 16Кб ОЗУ.
— две кассеты (но вот кассетник от коммодора сюда не подойдет).
— Инструкции по применению для самого компьютера и для картриджа.

Но радость моя была не долгой🥲
Как водится, компьютер подключается к телевизору через антенный вход (хотя у него 5-pin видеовыход, то есть в будущем можно будет намутить какой-нибудь переходник).
И когда я радостный начал подключать компьютер, оказалось, что антенный провод от Atari (который дает нормальную картинку), не подходит.

Я нашел подходящий, но он оказался не очень хорошим. Из-за него все фонит, а картинка на экране слишком тусклая (не видно вообще нихрена).

При этом я вижу, что компьютер работает нормально. Короче, придется заказывать нормальный провод, а пока что играться в эмуляторе...
👍53🔥2