Перейти к контенту
Азраэль

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

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

В 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
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
12 часов назад, Malandrinus сказал:

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

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

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

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

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

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

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

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

Ссылка на комментарий

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

 

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

Изменено пользователем DoK74rus
Ссылка на комментарий

@DoK74rus

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

  • Согласен 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий
3 часа назад, НаноБот сказал:

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

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

Ссылка на комментарий

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

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

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
5 часов назад, НаноБот сказал:

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

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

Ссылка на комментарий

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

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

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

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

b52bcd2f319d8e2385ea7f6aa367b442d5579531

 

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

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

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

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

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

 

Изменено пользователем Змея
Ссылка на комментарий

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

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

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

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

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий
7 hours ago, НаноБот said:

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

Spoiler

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

Spoiler

 

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

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

 

 

  • Согласен 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

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

Ссылка на комментарий

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

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

×
×
  • Создать...