Ищу книгу или онлайн-курс (платный или бесплатный), который подробно рассматривает код игрового боя в RPG. Меня интересуют конкретные примеры кода, а не общие теоретические концепции. Пожалуйста, укажите названия источников и предоставьте ссылки (для онлайн-курсов). Язык программирования и игровой движок не имеют значения — главное, чтобы были рассмотрены принципы реализации. Например, как реализовать различные состояния персонажа (атака, защита, уклонение, блокировка, специальные способности) и как переключаться между состояниями в зависимости от происходящих событий? Интересно также, как создать сложный и интересный ИИ для противников. Пожалуйста, не предлагайте общие советы типа "изучи язык программирования" или "поиск в интернете" — нужны конкретные рекомендации с указанием названий и ссылок (если курс онлайн).
Вот несколько книг и онлайн-курсов, которые могут помочь вам разобраться в механике боевой системы RPG и реализации кода: ### Книги 1. **"Game Programming Patterns" by Robert Nystrom** - Эта книга рассматривает различные паттерны программирования, которые могут быть полезны при создании механик игры, включая боевую систему. В ней есть примеры кода на C++. - [Ссылка на книгу](https://gameprogrammingpatterns.com/) 2. **"The RPG Maker VX Ace Handbook" by Chris M.** - Это руководство конкретно для RPG Maker, но содержит много информации о создании механик боя, включая состояние персонажей. - [Ссылка на книгу](https://www.amazon.com/RPG-Maker-VX-Ace-Handbook-ebook/dp/B00X8CHY6O) 3. **"Introduction to Game Development" by Alissa McAloon, Eugene P. Dvorak, et al.** - В книге описываются основы разработки игр, включая реализацию боевых механик. Есть примеры на C# и других языках. - [Ссылка на книгу](https://www.amazon.com/Introduction-Game-Development-Springer-Computer/dp/3030271781) ### Онлайн-курсы 1. **Udemy - "Unreal Engine 4: How to Develop Your First Two Games"** - Этот курс научит вас основам разработки игр на Unreal Engine 4, включая боевые механики. Вы научитесь программированию различных состояний персонажей. - [Ссылка на курс](https://www.udemy.com/course/unrealcourse/) 2. **Udemy - "Complete C# Unity Game Developer 2D"** - Курс охватывает создание 2D-игр в Unity, включая реализацию боевой механики и AI. Обсуждаются состояния персонажа и взаимодействие с окружением. - [Ссылка на курс](https://www.udemy.com/course/unitycourse/) 3. **Coursera - "Game Design and Development" Specialization** - Специализация от Michigan State University, которая включает несколько курсов о разработке игр. В вашем случае обратите внимание на курс, касающийся программирования. - [Ссылка на курсы](https://www.coursera.org/specializations/game-design) 4. **Pluralsight - "AI for Games"** - Если вас интересует создание ИИ для противников, курс на Pluralsight по искусственному интеллекту в играх предоставит конкретные примеры и подходы. - [Ссылка на курс](https://www.pluralsight.com/courses/ai-for-games) ### Ресурсы и сообщества - **GameDev.net** - На этом сайте есть множество статей и форумов, где участники делятся своим опытом, в том числе в реализации механики боевых систем. - [Ссылка на сайт](https://www.gamedev.net/) - **Unity Forum и Unreal Engine Forum** - На форумах этих игровых движков можно найти конкретные примеры и решения проблем, связанных с механикой боя и AI. - [Unity Forum](https://forum.unity.com/) - [Unreal Engine Forum](https://forums.unrealengine.com/) Эти ресурсы помогут вам получить конкретные примеры кода и практическое понимание механики боя в RPG.
Тебе не просто так говорят, что нету волшебного ингредиента, и все "сложные состояни" хранятся в обычных типах данных.
Нет учебников, который учит как хранить сложные данные, потому что это очень простая задача, сложность только в их количестве.
Если ты основы языка программирования знаешь, то нет никакой проблемы реализовать что-то свое для хранения своих данных.
Опять же в гитхабе полным полно исходников разных игр, бери - смотри рабочие примеры.
Еще раз. Учебника по тому, как хранить состояния в RPG нет, и курсов нет - это все входит в базовую работу с данными.
Вопросы лучше задавать по конкретике, что именно ты хотел сделать и как пытался, и что тебе не нравится в твоей реализации.
p.s. если что, писал rpg, я согласен с остальными отвечающими, что какие-то курсы или учебники тебе нужны просто по базовой работе с программированием.
Готовый код ищи в опенсорс играх. В остальном - только общие принципы.
Если бы мне пришлось реализовывать боёвку, я бы опирался на две идеи:
1. Автоматы состояний, в т. ч. ортогональные (т.е. несколько параллельных независимых автоматов). См. паттерн "состояние" из паттернов банды четырёх.
Например, для скилла у персонажа могут быть такие состояния:
Idle - скилл не используется
ChargeUp - персонаж готовит атаку
Active - персонаж выполняет атаку
Cooldown - персонаж восстанавливается после атаки
Для мгновенных атак скилл перейдёт из Active в Cooldown сразу же, для длительных - может какое-то время сидеть в Active. По сути, скиллами можно описать вообще всё, от дефолтных атак до использования предметов.
2. Подписка на события
Это полезно для реализации статус-эффектов. Т.е. перс имеет несколько событий: игровой тик, получение урона, нанесение урона, переход навыка в следующее состояние, и т.д. При этом события должны позволять менять происходящее. Скажем, обработчик события "получение урона" должен иметь возможность изменить получаемый урон или отменить его вообще.
Когда на перса накладывают статус-эффект, объект этого статус-эффекта подписывается на соответствующие события. Например, эффект "горю" подписывается на событие "игровой тик", и генерирует урон персонажу через заданное количество тиков. По снятию статус-эффекта объект должен отписаться от событий.
Если на событие подписаны несмколько эффектов, их обработчики событий отрабатывают поочерёдно.
Также нужна система приоритетов, чтобы одни эффекты срабатывали строго до других, а не зависели от порядка их наложения. Иными словами, список активных эффектов должен сортироваться при добавлении новых эффектов.
Попробуй пообщаться с chatgpt (выбирай openai, anthropic или google, менее рекомендую grok и deepseek, не рекомендую майкрософтовский copilot и всякие яндексы гигачаты и открытые ламы), они представляют из себя дистиляцию основных знаний человечества, этакий stackoverflow на стероидах, возможно лучшее место где можно сейчас учиться - это оно.
Чем лучше сформулируешь вопрос, тем полезнее будет ответ. Лучшая демонстрация в известной поговорке - вопрос должен содержать половину ответа.
Они и вопрос поймут, и примеры с кодом дадут.
p.s. само собой, ожидать мега результата от современного ИИ опрометчиво, но для обучения пойдет
Если язык не важен, то вот, пожалуйста:
Частично (и размазано по всей книге) есть у Найстрома (C++/JS/UML/псевдокод, но в основном C++):
Robert Nystrom - Game Programming Patterns
Демка с игрой разработана у Адамса (C++98 + скрипты, но на чем они были я не могу вспомнить):
Jim Adams - Programming Role Playing Games with DirectX (2nd Edition)
Основы программирования: логика, математика, алгоритмы и ООП. Вот по этим темам и ищите книги. Принципиальных отличий в реализации игровой механики от любой другой нет. Везде всё делается одинаково.
Например, Логика - Виноградов, Кузьмин, Москва, 1954г.
Математика - стандартная школьная, геометрия, тригонометри. И немного высшей математики типа кватернионов, теории игр, теории вероятностей и прочее в специфических случаях типа 3D, всяких случайностей и прочее.
Алгоритмы и ООП - стандартные популярные книги ( например ) плюс регулярная практика.
Например: Как реализовать различные состояния персонажа (атака, защита, уклонение, блокировка, специальные способности)? Как переключаться между состояниями в зависимости от событий?
Список констант плюс переменная. При событии - меняем значение переменной на требуемую константу. Это всё элементарные вещи.
ИИ противников.( чтоб поведение было сложным и интересным)
Cобытие -> условие -> действие. Всё стандартно.