Недавно я пытался изо всех сил пытаться кодировать игру на C#. Я не использую XNA для этого, поскольку я думал, что узнаю больше, если бы закодировал игру с нуля (хотя я использую мультимедийный движок).Программирование игр - связь между игровыми объектами в 2d
Я пытаюсь создать 2D-ролевую игру - немного амбициозную, я знаю, однако я достаточно хорошо понимаю, по крайней мере, основные части игры (например, код котельной плиты) я добрался до части, где я не знаю, куда идти отсюда.
В 2D-игре вы проходите через игру, прогуливаясь по разным «областям». Как только вы нажмете «портальную плитку», вы переведетесь в следующую область и т. Д.
У меня возникли проблемы с пониманием того, как этот объект области должен быть настроен. Это была моя первая идея: каждая область имеет несколько различных структур сбора (например, квадтрит видимости, квадрат столкновения, список объектов AI и т. Д.). Поэтому, если бы я должен был добавить в игру вражескую сущность, она будет помещена в квадтрит видимости, quadtree столкновений (потому что вы можете столкнуться с сущностями) и список сущностей AI. Когда область получает запрос на обновление, она сообщает каждой из этих структур обновлять себя, которые, в свою очередь, сообщают сущностям обновить себя. Все хорошо, до сих пор.
Мой вопрос: что, если этому врагу нужно общаться с другими объектами? Например, может потребоваться знать, был ли игрок в определенном диапазоне. Или это было поражено игроком. Или где все скользящие объекты находятся в области (так что это может быть pathfind).
Первым (и плохим) решением этой проблемы было бы просто передать каждой сущности ссылку на каждую коллекцию. Но это явно поощряет тесно связанные объекты, что не очень хорошо.
Второе решение, с которым я столкнулся, заключалось в том, чтобы каждый объект мог запрашивать область через структуры сообщений. Таким образом, враг мог бы сказать: «Дайте мне список каждой сущности в пределах расстояния X моей позиции», и область вернет ответ. Тем не менее, это будет все труднее, поскольку мне придется кодировать все больше возможностей в этом районе («Дайте мне список сущностей, которые не находятся на расстоянии X от меня», «Дайте мне список всех объектов со здоровьем ниже, чем X "и т. Д.).
Что я ищу - это проверенное временем решение этой проблемы взаимодействия между объектами и в основном как настроить область. Полагаю, для этого потребуется какая-то система обмена сообщениями, хотя я не уверен.
Спасибо за чтение.
Стена текста страшно – Chad