![]() |
рандомно растягивая пути до заданных расстояний в ветвях графа
а можно с вами сфотографироваться? я ж тут вчера полдня потратил на сортировку ассоциативного массива по трем полям. |
я ж тут вчера полдня потратил на сортировку ассоциативного массива по трем полям.
енто в каком языке? На новых плюсах с блямбдами это вроде просто делается. причём, это (сортировка) сложнее, чем пути по графу растягивать ;) изначально я боялся вообще голову сломать, потому что хотел сначала рисовать красивые уровни, как это в оригинале было. Для этого начал делать анализатор (красоты, в том числе), решил учить ИИ, что красиво, а что нет.... А потом чё-то как-то мне в голову пришла эта простая реализация :beer: Там, правда, надо будет ещё сделать равномерность, но это фигня уже... главное - основной алгоритм я увидел. |
в каком языке?
яваскрипт. Сначала чё то пыжился с перебором, а потом взял стандартный sort и свою функцию в него воткнул. И вот тут моя подпись как нельзя кстати... |
яваскрипт.
ууу... когда он мне только попал в руки, я возрадовался. Возможность так гибко динамичить контент в html вызывала прям счастье. потом несколько лет я временами возвращался к нему, когда делал сайты для себя, и тоже всё было ок. а вот потом, неожиданно пришлось столкнуться с ним на работе, но уже не в чистом виде, а в виде фреймворка, который делали какие-то программерские маньяки и извращенцы :D но, может просто я уже старый и негибкий, чтобы это понять, потому что у остальных реакция была спокойнее. PS: сижу рисую алгоритмы генерации графа карандашом на бумажке |
на бумажке оно всё красиво получается, а начинаешь кодить и оно всё как то не так. Самому себе ТЗ писать штука прям отвратительная. А когда тебе пишут ТЗ - ещё хуже.
http://magworks.ru/wp-content/uploads/2016/01/swing.jpg |
я когда маленький был, код на бумаге писал, потом приходил в компьютерный клуб и вбивал с бумажки :D
не, а мне всякие концептуальные вещи удобнее на бумаге придумывать. Когда сидишь и рисуешь, в голове как-то всё удачнее складывается... |
Дык мы все на бумажках сначала писали. Особенно когда на бейсике рисовали картинки дома на листках в клетку, а потом писали программу с координатами. Первое время было прикольно, но когда нужно было чуть чуть поправить какую нить линию, это был гемор ещё тот. Эту линию фиг найдёшь в коде, т.к. этих линий десятки, а то и сотни. А потом я написал редактор, который по рисунку составлял программу на бейсике с координатами линий. За это был признан читером и мне было запрещено юзать эту программу. Я должен был как все тыкаться в рисунок, вычисляя координаты следующей линии
|
За это был признан читером и мне было запрещено юзать эту программу.
странно это всё, суть программирования - как раз поручить программам делать как можно больше за человека :) меня тут подбивают сделать скрипт, который будет за нас работать на работе :D девлоги: вчера, таки, сделал минимальный тупой однослойный генератор. Больше времени ухлопал на генерацию самого графа, чем на генерацию "лабиринта" по нему. Вышло забавно, как в анекдоте, "программа делает то, что программист написал, а не то, что хотел, чтобы программа делала" :D |
странно это всё
ну там был расклад типа "нехрен выпендриваться, делай как все по бумажке" скрипт, который будет за нас работать на работе этот скрипт нужно давно было написать, чтобы он работал, а ты создавал видимость бурной деятельности. сделал минимальный тупой однослойный генератор скрины... скрины... :protest: программа делает то, что программист написал во-во, мне тут дали задание прикрутить |
скрины... скрины...
да там пока ничем не отличается от тех, что 3 страницы назад, только лабиринт более прямой и уродливый :gigi: сейчас делается 4 входа-выхода с карты, алгоритм тупо попарно соединяет их в граф, потом по графу строит карту: соединяет переходами и лестницами вершины графа. Я быстро слепил это, чтобы было от чего отталкиваться. Т.е. наступил тот чудесный момент, когда можно раскурить план более сложного построения карты :smoker: какой же я был деревянный три года назад... у меня, когда я смотрю свой старый код, тоже постоянно такие мысли про себя :D но ящетаю, это хороший знак, значит идёт развитие :cool: |
|
http://cemga.com/games/klad/screenshots/klad0004.png
слева, сверху, справа и снизу на досках двери (в другие карты) и в центре точка спауна. Алгоритм соединяет их переходами и лестницами, тупо по катетам. я выкрутил масштаб, чтобы карта влезла в экран |
ну теперь то прям всё понятно стало...
|
теперь буду усложнять алгоритм
это, как молнию рисовать: из точки А в точку Б проводишь отрезок. Потом делишь его пополам, точку деления оттаскиваешь в сторону на рандом. Получается 2 отрезка. Их тоже делишь пополам, точки рандомно оттаскиваешь в стороны, получается 4 отрезка... ну и так далее :D |
ещё пара вариаций, карта та же, входы-выходы там же.
тут все линки просто поделены ровно пополам http://cemga.com/games/klad/screenshots/klad0004.1.png тут все линки просто поделены на 4 части с в рандомном процентном соотношении 20..80, плюс новые узловые точки могли быть рандомно сдвинуты по вертикали и горизонтали (на 8 и 5 клеток соответственно) http://cemga.com/games/klad/screenshots/klad0004.2.png |
https://prnt.sc/iph4bw - непроходимый угол?
|
ага, там и справа обрывающаяся лестница. Там надо ещё работать и работать над алгоритмом.
между тем, я вчера менял зёрна и бегал немного по лабиринту :D это на скрине его весь видно, а в "игре" видно небольшой участок. |
в 3D хоть бегал то?
|
не, уровень (вертикальный) пока один. Рендер 2D и без анимации, просто спрайты
|
загнулась идейка?
|
нет, там не всё так просто, с генерацией лабиринтов
я итерационно развиваю алгоритм построения были моменты, когда он, пытаясь обойти препятствие перед выходом, генерил в сторону до 20-30 слоёв. Но так и не осиливал :) я уже начинаю думать, как его упростить, потому что иногда он, когда долго не может выйти с конечной точки, начинает ходить назад по узлам и пробовать идти с них. Вкупе с переходами между уровнями уже даже на двух переходах, с картой, трудно найти правильный путь :rolleyes: ну и пока я не могу 100%гарантировать сходимость. Т.е. теоретически возможна ситуация, когда одна ветка полностью перекроет путь к не своему выходу. |
Всё бы ему автоматизировать. Нарисуй сотню уровней вручную и хватит пока.
Помнится меня как-то одна работница попросила помочь посчитать по компаниям в экселе восьмиметровый файлик, тыщи на полторы строк. Там было несколько условностей. Вроде задача несложная, но я промудохался с ней целый день. И вот я такой горд собой в конце дня скидываю посчитанный файлик, на что получаю ответ "я тебя не дождалась, на калькуляторе вручную уже посчитала и ещё в обед отчет отправила в главный офис" |
Ну, во-первых, рисовать 100 уровней это долго, а во-вторых, если я их нарисую, мне будет их неинтересно исследовать :)
|
что за эгоизм? прежде всего нужно думать о избирателях :D
построил, сам прошёл, проверил что всё работает, поставил галочку, что уровень играбельный. А то комп тебе как насоздаёт уровней, в которых будут затыки. Помнится в героях стоишь автокарту, потом бегаешь бегаешь, вроде всё норм, находишь артифакт крутой, а подхода у нему нет. Абыдна. |
так в героях как оно строилось как: сначала навалим кучами тип земли, потом сверху деревьев и гор, потом продырявим дороги до замков, потом натыкаем в пустых местах ресурсы и артефакты. А в самом движке игры не всегда можно было пройти в дыру. С другой стороны, в героях был dimension door.
я хочу сделать устойчивый алгоритм, который генерит в 3D (2D + 1D) лабиринт, в котором всегда из N точек можно попасть в M точек. И у меня пока плохо выходит :) кроме всего прочего, проблемы там в отладке. Когда у тебя алгортим на каком-нить 150-м шаге делает что-то странное, приходится затратить время, чтобы выловить и проанализировать ситуацию. |
All times are GMT +3. The time now is 11:59. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Любое использование материалов сайта
возможно только с разрешения его администрации.