Войти
ПрограммированиеФорумВеб

PHP / MUD / Построение карты (2 стр)

Страницы: 1 2
#15
0:33, 3 апр. 2021

kkolyan
Добрый вечер! Спасибо за ответы.

Привязка к php так как я его сейчас изучаю, не хочется пока что распыляться на другие языки.
В перспективе конечно хотелось бы полноценную игру создать, с боями пошаговыми, квестами, с передвижением по локациям как выше я писал и так далее. То есть если не задать правильную основу, то почти со 100% вероятностью придется всё переписывать в перспективе что бы была возможность спокойно расширять функционал. По этому промелькнула идея для начала взять готовые наработки что бы хотя бы передвижение по миру было нормально сделано и была возможность подсматривать в готовую логику.


#16
1:06, 3 апр. 2021

JanCarlo
> То есть если не задать правильную основу, то почти со 100% вероятностью придется всё переписывать в перспективе
вы 100% будете переписывать то, что пишете сейчас. много раз переписывать. это нормально. лучше делайте так, как сейчас удобно. быстрее сделаете - быстрее получите опыт и быстрее научитесь делать лучше.

PS: язык, которые вы изучаете, традиционно очень тесно связан с парадигмой "быстрее в продакшен, там что-нибудь придумаем". не буду пытаться вас отговорить, но если уж изучать технологию, то лучше следовать ее идеологии.

#17
10:23, 10 июня 2021

Добрый день господа!

Руки дошли до проекта вот в принципе пару дней назад только. Реализовал переходы как посоветовали по координатам x/y/z, сделал контроллер (делаю на ларавеле, что бы уж сильно всё с нуля не пилить) который внутри сам, в зависимости от переданного параметра направления - плюсует или минусует вектор направления, проверяет существует ли по новой координате комната - и если существует, делает переход и записывает в юзера. Для юзера направления движения выглядят как активная ссылка для перехода которую можно клацнуть, и если перехода нет то ссылка в виде текста некликабельная.

В бд есть 2 таблицы - юзеры и комнаты. У таблицы юзера поля - login, pass, email, created_at, updated_at, current_room_id.
У таблицы rooms в принципе всё просто, поля - x, y, z, name, description.

Получается теперь так, что если у нас, к примеру 3 локации тянутся вперед, образно коридор - первая локация - x1/y1/z1, вторая x1/y2/z1, третья - x1/y3/z1 - всё логично (влево вправо это ось x, вперед назад y, вверх вниз - z).  Допустим мы хотим добавить в конце коридора поворот на право и такой же коридор обратно, делаем - поворот - x2/y3/z1, далее так же идем обратно - x2/y2/z1, x2/y1/z1.
При данной структуре базы данных, на данный момент эти 6 локаций получились БЕЗ стен, то есть это не коридор буквой П, а просто большая комната из 6 локаций.

Первый вопрос - как структурировать базу данных, так, что бы можно было добавлять стены с любой стороны у самой локации?
Технически реализовать то думаю не сложно, сложно придумать что бы это было грамотно.
В кратце что бы можно было реализовать так -  Изображение

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

Получается, что в принципе координаты у комнат остаются прежние, но ID локаций просто меняются местами (и тут кстати я еще не думаю, как primary key можно переприсваивать). НО, если реализовывать логику стен, (я сначала предполагал что таблица комнат будет содержать помимо координат еще и доступные направления типа - south - allowed, west - disallowed, up - allowed, down - disallowed ну и тд) то при перемещении комнат должны так же меняться еще и стены - тут короче говоря у меня мозг начал вытекать из ушей и носа.


Кто то может подсобить советом по этим двум вопросам? =)
Заранее спасибо!

#18
11:54, 10 июня 2021

каждая комната это отдельный пхп файл

#19
12:27, 10 июня 2021

ИПавлов
Комнат будет несколько тысяч..

#20
(Правка: 12:57) 12:49, 10 июня 2021

значит в этойже самой бд в отдельом поле свойства в текстовом виде всякие теги свойств и значений потом парсятся в пхп для каждой комнаты.
а ещё в отдельной базе хранятся различные возможное свойства комнат. и из этого перечня они могут случайным образом вписываться в свойства комнат текущей игры.

однако если нужно делать уникальные комнаты, у них будет уникальный пхп. а свойсвах будет написано шота такое. уникумрум=ид12

#21
15:48, 10 июня 2021

JanCarlo
> так, что бы можно было добавлять стены с любой стороны у самой локации?
сам спросил
> и доступные направления типа - south - allowed, west - disallowed, up -
> allowed, down - disallowed ну и тд
сам ответил.


Table MAP
ID,
coord (можно как число, можно как три числа), coord_x, coord_y, coord_z
location_id (принадлежность к той или иной карте)

Table LOCATION
ID,
location_name,
location_neighbor (можно через json список. Ну то есть сделать это полем строкой и указать и куда мы можем переходить и координаты ячеек)

#22
14:05, 11 июня 2021

покажеш потом реализацию. тоесть итог. на реализацию мне пофиг. а вот будет ли чтото работать просто интересно)

#23
14:57, 11 июня 2021

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

Первым делом сделаю рандомное перемещение комнат по таймингу (пока даже не представляю как, это поидее по крону надо как то создавать задачи) в строго определённом пространстве.

Далее добавлю рандомные ловушки во время перемещения по локациям.

И последнее добавлю стены для статических локаций, который не будут двигаться.

Надеюсь уложусь в неделю следующую, может даже быстрее чуток.

#24
16:49, 11 июня 2021

как ты создаёшь карты, или где их берёшь?
ты уже сделал "тонкие стенки" между комнатами-клетками?
как ты сейчас хранишь комнаты в базе?
будешь выкладывать демо-версию хождения по комнатам?

#25
18:51, 11 июня 2021

Стенок пока нет, вот их как раз буду пилить завтра, вручную накидал сидер и при миграции сразу 40 локаций базовых добавляются.
Локации элементарно храняться под уникальным айди, координаты x/y/z, при перемещении по ним через контроллер плюсуются вектора направления на +1. Таким образом левым гет запросом невозможно будет перепрыгнуть локации. Вообще локации придумываю из головы, хочу уникальный проект сделать а не пресловутые клоны.

Написал в админке добавление локации удаление/модификацию. Конечно по одной локе добавлять это такое себе занятие, по этому как будет готова структура базы - то либо закажу конструктор либо сам пилить буду. Вообще есть готовый конструктор, но он навороченный и на php 5.1 и на mysql, п у меня postgresql. И к сожалению я пока не настолько умен что бы старый чужой код адаптировать под пхп8 :(

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

#26
18:52, 11 июня 2021

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

#27
21:48, 12 июня 2021

JanCarlo
Приветствую! Возможно, эти ссылки вас заинтересуют.
https://www.prelude-prod.fr/demo/pp3diso
http://www.isogenicengine.com

Простой пример на основе pp3diso у меня на сайте http://vox.dx.am/builder (в качестве бд текстовые файлы).
Пример с использованием firebase (бд реального времени) http://vox.dx.am/puzzle Откройте ссылку в двух браузерах и перемещайте картинки.

#28
22:26, 13 июня 2021

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

С разметкой не запаривался еще, потом поправлю -
Изображение
Изображение

Графика будет у абсолютно всех предметов, ключевых монстров, ключевых нпц, и аватарки игроков заранее готовые. Плюс возможно ключевые местности будут иметь картинки.

Страницы: 1 2
ПрограммированиеФорумВеб