Насколько я помню в Борландовской реализации С++ тоже были какие-то заморочки с памятью между dll и exe.kipar писал(а): ...Но паскаль то использует собственный менеджер памяти поверх malloc, и он как раз разный. Поэтому в старых версиях дельфи нельзя было передавать в библиотеку и назад AnsiString. Только когда начиная с 2007 перешли на менеджер FastMem эта проблема исчезла.Cfyz писал(а):По поводу менеджеров памяти это вы зря. Вся адекватная работа с памятью как раз и строится на возможности косвенно расшарить данные между модулями. Иначе было бы невозможно создать объект (выделить память) в одном модуле, а удалить его (освободить память) в другом. Но поскольку malloc/free и все необходимые им структуры данных существуют в единственном экземпляре на процесс, все прекрасно работает.
...
BeaRLibMG - генератор карт
Модератор: Apromix
- Jesus05
- Сообщения: 1840
- Зарегистрирован: 02 дек 2009, 07:50
- Откуда: Норильск, сейчас Санкт-петербург.
- Контактная информация:
Re: BeaRLibMG - генератор карт
Re: BeaRLibMG - генератор карт
Ну да, в билдере все тоже самое.
- Cfyz
- Сообщения: 776
- Зарегистрирован: 30 ноя 2006, 10:03
- Откуда: Санкт-Петербург
- Контактная информация:
Re: BeaRLibMG - генератор карт
kipar писал(а):Но если посмотреть на таблицу экспорта, то там никаких левых переменных нет, только то что указали в директиве export.
kipar писал(а):Но паскаль то использует собственный менеджер памяти поверх malloc, и он как раз разный.
Да ладно, вот даже kernel32.dll не используется? =) Любая программа на FPC (из собранных ранее мной и скачанных рандомно с ваших веток) предсказуемо импортирует десятки функций, включая HeapAlloc/HeapFree, LocalAlloc/Free, TlsAlloc/Set/Get. Я примерно догадываюсь как в паскале реализован "собственный" менеджер памяти. И это только напрямую, а там еще kernelbase.dll, ntdll.dll, etc.kipar писал(а):Но в паскале он не используется.
Кем и где именно реализован рандом, действительно он разный или только варианты реализации, зависит ли реализация (косвенно) от кучи или TLS... согласен, в конкретном случае и при конкретных факторах поведение может отличаться. Я просто хотел заметить, что общие данные между модулями -- это совершенно нормально и не стоит сходу отметать такую возможность, практически весь софт именно так и работает.kipar писал(а):Но с A.exe она будет не связана.
В частности, A.exe и B.dll могли быть собраны разными версиями паскаля и fpc, а т.к. в них даже алгоритм рандома разный, то странно было бы ожидать что зерно может быть общим.
Пытается раскуклиться
Re: BeaRLibMG - генератор карт
Стандартные виндовые - используются. рантайм msvs - не используется, он и у fpc и у дельфи свой.Cfyz писал(а):Да ладно, вот даже kernel32.dll не используется? =)
И рандом часть этого рантайма, исходники рандома можно посмотреть что в дельфи, что в fpc.
Менеджер памяти, во всяком случае дельфевский fastmem - победившая на конкурсе хзитроумная штука с пулами для маленьких объектов размером кажется до 256 байт и отдельным выделением средних и больших блоков. Но естественно он использует виндузовый Alloc для выделения собственно памяти.
Я не спорю что в принципе модули могут общаться, просто в случае с паскалевским рандомом это кажется мне невозможным, потому что не использует никаких виндузовых механизмов или компиляторной магии. В частности, fpc использует в функции random вихрь Мерсенна, а дельфи - обычный линейный генератор.
Re: BeaRLibMG - генератор карт
Парни, я вот так понимаю, что данную библиотеку смогу использовать в своём проекте на с++. Так?
А каким образом? Доки я не нашёл.
А каким образом? Доки я не нашёл.
Re: BeaRLibMG - генератор карт
Вроде как Jolly Roger внедрил к себе в FFHtR либу и у него с++ , значит заводил хедеры к либе - там всего то пара типов да функция. Либо у него попросить, либо быстро написать свои. Я, если честно, затрудняюсь, ибо на плюсах не пишу, только читаю чужое.
- Jolly Roger
- Сообщения: 2973
- Зарегистрирован: 27 ноя 2009, 09:10
- Откуда: Minsk, Belarus
Re: BeaRLibMG - генератор карт
На делфи. Только:
а) я и C++ знаю, другое дело, что Делфи привычнее.
б) BearLib прекрасно подключается к дельфину, другое дело, что генерит не совсем то, что мне нужно. Потому сейчас я его для тестов использую.
а) я и C++ знаю, другое дело, что Делфи привычнее.
б) BearLib прекрасно подключается к дельфину, другое дело, что генерит не совсем то, что мне нужно. Потому сейчас я его для тестов использую.
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.
Re: BeaRLibMG - генератор карт
Извиняюсь за дезу, где-то когда-то запало сие, а ничего конкретного быстрый поиск не подтвердил...
- Jolly Roger
- Сообщения: 2973
- Зарегистрирован: 27 ноя 2009, 09:10
- Откуда: Minsk, Belarus
Re: BeaRLibMG - генератор карт
Нет, нет! Всё правильно! Я Медведя подключил и он хорошо работал, но сейчас не использую.
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.
- Apromix
- Мастер
- Сообщения: 1236
- Зарегистрирован: 04 июл 2011, 10:44
- Откуда: Украина, Черновцы
- Контактная информация:
Re: BeaRLibMG - генератор карт
Там нужно одну функу только - GenMap. И всеKeeperVX писал(а):Парни, я вот так понимаю, что данную библиотеку смогу использовать в своём проекте на с++. Так?
А каким образом? Доки я не нашёл.

Либа для всех. Сделай вклад - включи в либу недостающие функцииJolly Roger писал(а):BearLib прекрасно подключается к дельфину, другое дело, что генерит не совсем то, что мне нужно. Потому сейчас я его для тестов использую.

Re: BeaRLibMG - генератор карт
А что за тип карты G_RED_ROOMS?
Какой-то коридорчик генерит, ну и там кусман кода, который делает комнату совсем в другом месте, закомментарен еще.
Какой-то коридорчик генерит, ну и там кусман кода, который делает комнату совсем в другом месте, закомментарен еще.

Почему собака виляет хвостом?
Потому что она умнее хвоста.
Если бы хвост был умнее, то он вилял бы собакой.
Re: BeaRLibMG - генератор карт
Хм, затрудняюсь ответить. Этот генератор Сергей Apromix писал последним, и он, возможно, не доработан. Сейчас тестанул и нынешний вариант и с раскомментированием куска кода - выдаёт неиграбельные карты, посему пока, наверное, использовать не стоит. Подождём Сергея, что он ещё скажет.
А ещё, не помню, писал ли, но все мои попытки контролировать зерно рандома для генерации пока не дали успеха.
А ещё, не помню, писал ли, но все мои попытки контролировать зерно рандома для генерации пока не дали успеха.
Re: BeaRLibMG - генератор карт
Вот еще вариант. Линиями условно обозначены места начала и конца коридора.

Алгоритм такой:
1. Размещаем комнаты, чтоб они не накладывались друг на друга;
2. Из центра каждой комнаты пускаем воображаемый луч (у меня угол луча меняется с шагом 4 градуса), пока не наткнемся на первую комнату в опеделенном радиусе;
3. Если комнаты между собой не соединены воображаемым коридором - создаем его, иначе - пропускаем комнату.
Коридоры надо рассчитывать алгоритмом поиска кратчайшего пути (с обходом препятствий), чтоб обходить комнаты и уже существующие коридоры.
З.Ы. Это попытка заменить алгоритм G_DOOM_ROOMS.
Добавлено позже
Секретная комната

Алгоритм такой:
1. Размещаем комнаты, чтоб они не накладывались друг на друга;
2. Из центра каждой комнаты пускаем воображаемый луч (у меня угол луча меняется с шагом 4 градуса), пока не наткнемся на первую комнату в опеделенном радиусе;
3. Если комнаты между собой не соединены воображаемым коридором - создаем его, иначе - пропускаем комнату.
Коридоры надо рассчитывать алгоритмом поиска кратчайшего пути (с обходом препятствий), чтоб обходить комнаты и уже существующие коридоры.
З.Ы. Это попытка заменить алгоритм G_DOOM_ROOMS.

Добавлено позже
Скрытый текст: ПОКАЗАТЬ
Скрытый текст: ПОКАЗАТЬ
Скрытый текст: ПОКАЗАТЬ
Скрытый текст: ПОКАЗАТЬ

Почему собака виляет хвостом?
Потому что она умнее хвоста.
Если бы хвост был умнее, то он вилял бы собакой.
Re: BeaRLibMG - генератор карт
Нормально в целом, но они сильно "regular", подобные уже есть и лично мне не очень импонирут, т.к. приедается их прямость. Для "обжитых" зон подойдёт нормально )
Ну, а последний случай, я считаю, недопустим, и если алгоритм может выдать такое, то его надо пересмотреть.
И, да, спасибо за интерес
Ну, а последний случай, я считаю, недопустим, и если алгоритм может выдать такое, то его надо пересмотреть.
И, да, спасибо за интерес

Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя