@evgeniy_svetopalov85

Как создать текстовую онлайн RPG/ZPG?

Возможно, вы знакомы с игрой Godville жанра ZPG. Хотелось бы попробовать сделать что-то подобное для себя/друзей. Интересует следующее:
1. На каком языке эта игра написана? И на каком языке вообще ее писать?
2. Можете ли подсказать какие-либо курсы по этой теме?
3. Вопрос знатокам. Как сделать так, чтобы игровой персонаж сам (как в Godville) перемещался по карте и параллельно иногда встречал различных монстров и интересные ивенты?
4. Даже если все это написать, как сделать серверную часть, чтобы весь процесс шел на стороне сервера, а игрок мог время от времени просто заходить и проверять прогресс своего героя?
На самом деле, вопросов больше, но хотелось бы, чтобы ответили люди, которые разбираются в этой теме, дабы получить ответ по существу. Общий ответ тоже устроит.
Сам же я от программирования достаточно далек, знания поверхностные. Поэтому прошу прощения за такие детские вопросы.
  • Вопрос задан
  • 355 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Если у тебя есть интерес к математике и ты любишь логически рассуждать, то основы программирования тебе дадутся легко. В любом императивном языке программирования используются конструкции "если-то-иначе" и "повторять-до-тех-пор", то есть используются условия, которые могут быть "истиной" или "ложью". Остаётся только изучить синтаксис самого языка: где-то пишут if условие then действие end, а где-то if (условие) { действие } и тому подобное. То есть различия только в написании. Вот тебе основы программирования в двух словах.

Что касается разработки именно игры, то есть понятие основного игрового цикла. С точки зрения программирования - это обычный цикл "повторять-до-тех-пор", просто он не заканчивается до самого конца игровой сессии. Этот цикл делит игру на так называемые "кадры" или "тики", из которых и состоит игра. Каждый кадр - это отдельное состояние игры, которое соответствует отдельной итерации основного цикла. Тебе нужно придумать, каким образом одно состояние сменяет другое, как осуществляется переход, какие вычисления при этом производятся. Такой "кадр" обычно не соответствует кадру на экране (другими словами ход игры не зависит от FPS), хотя это уже отдельная сложная тема.

1. Язык выбирай в зависимости от того, какой движок или платформу будешь использовать. Не оглядывайся на другие игры. Например, Unity и соответственно C#.
2. Курсы, учебники, ютуб-каналы - без разницы. В любом случае ты потратишь какое-то время, и его не получится сильно уменьшить. То есть это прямая конвертация времени в знания и навыки без сильных колебаний курса цены этой конвертации. В целом, время будет зависеть от твоего начального бэкграунда (т.е. что ты знаешь и умеешь уже сейчас).
3. В программировании (да и в других областях) сложную задачу принято разбивать на части (декомпозиция). Сначала нужно изучить понятие игрового цикла, и как время будет течь в игре (или как время в игре соотносится с реальным, учитывая паузы и сохранения). Затем решить, в каком порядке и что там будет выполняться более детально. Однако любая мелкая игровая система всё равно будет достаточно сложна, и её снова нужно разбивать на совсем уж простые. А простые - снова разбивать на элементарные. Поэтому от умения разбивать зависит, закончишь ли ты программу (игру) или нет.
4. Сетевая часть - обычно самая сложная (и самая глючная), потому что для каждой своя оптимизация. В двух словах, устройства обмениваются сообщениями по сети, и эти сообщения могут пересылаться с разной скоростью, а могут порой вообще теряться в никуда. Клиент-серверная модель предполагает, что есть некое главное устройство (например, ты арендовал сервер в дата-центре), к которому подключаются все остальные (т.н. клиенты). Но вот как будет реализовано взаимодействие, контроль ошибок, чтобы не глючило, вот это уже зависит от самой игры.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
1. Я не в курсе, можно погуглить, но практически без разницы
2. Не существует таких курсов. Изучай веб-разработку просто
3. Написать алгоритм. Логику его придумать самостоятельно - тут можно и просто сделать и размахнуться с нейронками и генераторами текстов. Начинать стоит с простого
4. Единственное соо можно посоветовать - ручками. Веб-разработка включает в себя часто написание сервера. Читать про api
Ответ написан
Комментировать
vabka
@vabka
Токсичный шарпист
1. Хз на каком написана. Написать можно на любом.
2. Начни с основ программирования
3. Ну просто берёшь и делаешь.
Запускаешь перемещение с одной локации на другую и раз в N времени кидаешь "кубик" на какое-нибудь событие.
4. Реализуешь это всё на сервере и делаешь какой-нибудь api для клиента.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы