Курилка программистов - Страница 52 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

Курилка программистов


Рекомендуемые сообщения

В 09.06.2018 в 20:41, Malandrinus сказал:

Препроцессор (а ты говоришь о макросе препроцессора)

Для меня макросы это прежде всего инлайн функции, макрос должен срабатывать по ходу следствия, иначе это баг. Да, МАСМ сильно забагованый ассемблер. Правда полностью отказываться от него, я не намерен, т.к. компилирует более компактный код по сравнению с UASM.

Кстати код calc.cpp переделанный на чисто С, компилируется правильно только M$, Peles C это делает не правильно.

On 6/9/2018 at 1:56 PM, abramcumner said:

Ну я бы так не сказал...Каждая минорная версия что-нибудь ломает

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

 

On 6/9/2018 at 4:16 PM, buffy said:

неприятно, что программа, которая выводит какую-то надпись, весит 60кб.

Скорее всего это не написанный код столько весит, а вся программа со всяким балластом типа стандартного пролога/эпилога, стандартных секций, недооптимизированных стандартных библиотек и т.п. Если же залезть внутрь и сравнить собственно размер скомпилированного кода, то разница не будет так уж велика. А по поводу балласта. Во-первых, часть балласта можно урезать при некотором старании. Во-вторых, этот балласт останется ровно таким же при размере программы в пару кб и пару десятков Мб. Ну и наконец. 60 кб - серьёзно?! ЭТО повод для переживаний?!

 

On 6/9/2018 at 4:43 PM, Dennis_Chikin said:

РЕДАКТОР с поддержкой формул был написан. А также поддержкой сетевой работы, станков с ЧПУ, и со сжатием. В одном флаконе. ...Полтора кило размером,

Ну и что? А вот дизассемблер для Zilog Z80 занимает примерно 1 кб. Какое это отношение имеет к современным реалиям? Нынче вообще важнее время написания программы, а не размер кода. Просто потому, что при нынешней сложности программ стародавние подходы к их написанию приведут к бесконечным срокам разработки. Т.е. просто не закончить проект, ну скажем сталкира, ни в какие разумные сроки, пытаясь писать его так, как это делали вы с этим редактором.

 

7 hours ago, НаноБот said:

Весит 7.5 кб если использовать VS2010, с VS2017 весит 9.5 кб и не работает на ХР.

Так что к чёрту std cout и другую хрень.

Научись пользоваться компилятором и не перекладывай с больной головы на здоровую..

 

7 hours ago, НаноБот said:

есть только х86 и х64

Жесть! Ты серьёзно думаешь, что сможешь запустить современную программу, скажем, на 286?

 

7 hours ago, НаноБот said:

макрос должен срабатывать по ходу следствия

Я попробую ещё раз, последний. Макрос - это элемент препроцессора. Препроцессор - это средство обработки исходного текста. Препроцессор берёт один текст и превращает его в другой. Это происходит ДО компиляции. Таким образом макрос препроцессора ПРИНЦИПИАЛЬНО НЕ МОЖЕТ работать во время выполнения.

  • Нравится 1
12 часов назад, Malandrinus сказал:

Скорее всего это не написанный код столько весит, а вся программа со всяким балластом типа стандартного пролога/эпилога, стандартных секций, недооптимизированных стандартных библиотек и т.п. Если же залезть внутрь и сравнить собственно размер скомпилированного кода, то разница не будет так уж велика. А по поводу балласта. Во-первых, часть балласта можно урезать при некотором старании. Во-вторых, этот балласт останется ровно таким же при размере программы в пару кб и пару десятков Мб. Ну и наконец. 60 кб - серьёзно?! ЭТО повод для переживаний?!

M$ VS C++ умеет хорошо уменьшать размер кода, стало быть вес такой, из-за библиотек std, дурацкого стека и так далее, код конечно более медленный по сравнению с моим, вес main значительно больше, плюс ещё до кучи всяких попутных методов, это данные IDA Pro. Так что лучше по возможности отказываться от всяких левых библиотек и фреймворков, и если надо, быстро реализовать свои, оптимальный код делается ручками, мозгами, помните об этом. ФРЕЙМВОРКИ это зло, про портирования можно забыть, либо это становится слишком накладным.

Да, я не собираюсь прекращать поддержку WinXP, и стараюсь не портить поддержку более старых ОС вплоть до Win95. Делается как раз не использованием всяких  новомодных идиотских редакций С++ и фреймворков. И во обще, лучше всего это ассемблер и WinAPI, или С и С++ в стиле С и WinAPI. Получаем компактное и быстрое приложение, которое если надо, может работать и на старых ПК.

Я попробую ещё раз, последний. Макрос - это элемент препроцессора. Препроцессор - это средство обработки исходного текста. Препроцессор берёт один текст и превращает его в другой. Это происходит ДО компиляции. Таким образом макрос препроцессора ПРИНЦИПИАЛЬНО НЕ МОЖЕТ работать во время выполнения.

Тем не менее в UASM это работает, как раз что мне нужно.

Изменено пользователем НаноБот
  • Не нравится 1

Сразу извиняюсь, но не искал куда более подходяще написать то, что я предложу, но собственно: с учетом кол-ва сообщений-во(по)прошаек типа "напишите за меня вот такое", может уже пора сделать что-то типа "Стол заказов"? Ну, по аналогии с "Напарниками по модострою". Обернуть все как положено, в строгие условия не обсуждения в открытую финансовых вопросов и бла-бла-бла...

13 часов назад, Dennis_Chikin сказал:

Так кто делать-то будет ?

Да уж найдутся я думаю "этузизисты"....

Привет всем, в общем решил спросить почему движок игры не тянет огромные локации? Я как то делал карту где соединял 8 локаций от кордона до бара (все кроме подземелий) и в целом все работало прекрасно за исключением кордона, в нем начинала пропадать геометрия возле деревни новичков как будто рядом с ним поставили HOM объект, при удалении HOM ситуация не поменялась, и как раз по этому появился вопрос, что ограничивает движок ведь большую часть мира он спокойно обрабатывал кроме той что была ближе всего к нулевой точки координат. 

 

Надеюсь кто нибудь ответит на этот нубский вопрос))

Изменено пользователем DoK74rus

@DoK74rus

Есть ограничения на размеры AI сетки. Я это подробно объяснял в этом посте. За исключением этого, размер уровня ограничен только возможностями компьютера. Проблемы на Кордоне - это ты скорее всего что-то не так сделал.

На счёт AI-сетки, НПСы бегают именно по ней, я считаю что надо переделать, чтобы бегали по геометрии и дин. объектам, а сетку использовали только для навигации, полностью от неё отказываться не стоит. В общем, при перемещении НПС проверяет проходимость своих габаритов, и если не проходит, то корректирует маршрут. А то на кордоне собачки часто забегают в камни, и кое где погружаются в геометрию.

  • Согласен 1
3 часа назад, НаноБот сказал:

надо переделать, чтобы бегали по геометрии и дин. объектам

Тут надо-бы спросить сначала у знающих, а как ходют мобы в других движках ? А то, даже при простом обдумывании твоей похотелки, представляется просто неимоверное кол-во проблем и полная переделка AI-части движка...

@AndreySol, вот это баг сейчас был. написал в эту тему, а сообщение появилось в другой.

Я там про вертолёт с колизией вспомнил. Если переделать этот класс под нпс?

5 часов назад, НаноБот сказал:

собачки часто забегают в камни, и кое где погружаются в геометрию

Так это не проблемы аи-движка. Сетка криво проложена. Положи её аккуратно насколько можно по камням и проблема будет решена...

@Змея, Я не ковыряю уровни, просто не умею, но НПС могут например, сидеть на динамических объектах, есть скрин где солдат сидит на табуретки в южном блокпосте. Так что можно подшаманить движок что НПС ходили именно по геометрии и динамическим объектам, а АИ-сетку использовали для навигации. Так что ковырять, а вылизывать уровень, не обязательно, где нибудь да будет косяк. Плюс ещё, как НПСом обходить например, танк, или машину. 

Если есть сидячие анимации, то почему-бы солдатику и не посидеть на табуретке?

Или скажем - на пеньке))

b52bcd2f319d8e2385ea7f6aa367b442d5579531

 

Ага...Только вот табурет отнюдь не динамический. Представляешь, что будет с табуретом - если сталкер с него встанет, чтобы с тобой поговорить?

Вообще мне кажется - проблема не стоит выеденного яйца.

1. Слишком глубоко придется ковырять движок как я думаю...И кстати действительно, а как боты в других движках ходют...и нет ли там подобия сетки?

2. Вот тебе хочется ковырнуть движок, чтобы решить простейшую проблему сидения непися))) Ну это грубо говоря...Потому-что не умеешь локи ковырять. А другие умеют ковырять локи, но ни бум-бум в движке.

Может лучше как-то кооперироваться и ковырять то что умеешь в нужном и полезном для всех месте?

 

Изменено пользователем Змея

Вот сидит солдатик, ТЧ.

https://cdn1.savepice.ru/uploads/2018/8/13/436e1f2ac93a9bf406fa623d240bd2af-full.jpg

Так что это не специально, значит заставить ходить НПС по геометрии не сложно, сложней заставить обходить препятствия.

Изменено пользователем НаноБот
7 hours ago, НаноБот said:

На счёт AI-сетки, НПСы бегают именно по ней, я считаю что надо переделать, чтобы бегали по геометрии и дин. объектам, а сетку использовали только для навигации, полностью от неё отказываться не стоит. В общем, при перемещении НПС проверяет проходимость своих габаритов, и если не проходит, то корректирует маршрут. А то на кордоне собачки часто забегают в камни, и кое где погружаются в геометрию.

Spoiler

даже невооружённым взглядом видно, что произвольная навигация намного сложнее, нежели навигация по сетке. Сетка - это на самом деле граф, а навигация по графу - задача давно решённая и незатратная. Наверное можно написать алгоритм навигации в произвольном окружении, но как представить себе затраты... Здесь даже навигация в пределах пары метров будет сопряжена с колоссальными вычислительными затратами на анализ бесчисленного количества конфигураций пространства. Хотя бы просто решить куда можно сделать шаг, а куда нельзя. Трассировкой лучей определять? Сканировать всё пространство вокруг да ещё с учётом габаритов персонажа? Теоретически можно, практически же даже одиночный запрос на трассировку лучей - весьма тяжёлая операция, и в движке используется в микроскопических дозах. Представим себе теперь, что этим занимается каждый непись, да на каждом шаге, да при этом по много-много раз. И это просто для того, чтобы решить, можно ли сделать шаг в сторону. Теперь можно помедитировать на тему, как построить путь из таких шагов в произвольном окружении, ну хотя бы на пару десятков метров.
Кроме того, к сетке же привязана информация об укрытиях. В СДК вроде как немалая часть времени просчёта сетки уходит как раз на просчёт укрытий: надо из каждого узла сетки просканировать пространство вокруг на предмет его закрытости. Представим себе теперь, что этим надо заниматься в каждый момент боёвки.

Spoiler

 

было бы разумнее пофиксить ограничения движка на размер AI сетки. Это уж всяко более реалистично, чем пытаться сделать "как в реале". Можно даже попытаться сделать навигацию максимально близкой к имеющейся. Ну например:
Пусть имеется суперлокация, покрытая узлами глобального графа. На этой суперлокации мы располагаем много локальных сеток уровня таким образом, чтобы они накладывались друг на друга частично таким образом, что в месте "перехлёста" сеток их узлы совпадали. Таким образом, мы ходим по одной из этих сеток, а когда попадаем в зону наложения двух сеток, то незаметно переходим с одной на другую, если наша навигация ведёт нас к узлу глобального графа, который находится в другой подсетке. Например: Бар - одна сетка, дорога между Баром и Кордоном, другая сетка с зоной наложения где-то в районе блокпостов. Непись идёт по сетке из Бара на Кордон, проходит через блокпост и попадает в переходную зону. Поскольку отсюда путь ведёт в другую сетку, то он перейдёт на сетку дороги и пойдёт уже по ней, и т.д. Такой подход позволил бы оставить львиную долю имеющегося кода.

Это так, в качестве изобретения велосипеда. Я уверен, что на эту тему уже понапридумано весьма немало.

 

 

  • Согласен 1

Вообще, что на мой взгляд требует фикса относительно именно аи-сетки...Дополнительно к размерам самой сетки естественно.

Ужасающие зависы неписей в проходах - имеющих двунаправленные ноды.

@Malandrinus, Нет, проверять проходимость габарита НПС надо, хотя бы чтобы непыси не упирались в вдруг друга, как бараны.

А причем тут проходимость? Неписи посреди Красной площади вполне могут упереться друг в друга...

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...