Войти
ПроектыФорумСобираю команду

Набор в команду Survival по мотивам Robinson's Requiem (2 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#15
(Правка: 19 мар. 2018, 1:22) 22:01, 18 мар. 2018

Шейдер для террейна -- RTP + тесселяция.
Разрешения текстур максимум 2048.
У деревьев 1800 вершин максимум.
Дистанция прорисовки сейчас 3км. Террейны подгружаются кусками, один км в направлении фраструма камеры (стриминг и каллинг) + террейн, на котором находится камера
Записывал на ноуте, на котором я собственно всё делаю: i7 75что-то там и gtx1070 8гиг.

По поводу xml. Сеарилация -- это когда класс as is записывается в xml/json, и потом из него получается точная копия класса в обратную сторону. Есть xml ридер и райтер, которые и есть парсеры, в данном случае xml. Я не буду использовать сериалицацию, но буду использовать возможности xml и его стандартные парсеры.

Ну если видео способствует привлечению людей в команду, тогда да. Только не думал, что в данном случае надо что-то показывать в видео. Всё описано в посте и в pdf подробно. Если человек заинтересован в проекте, он вступит в команду, скачает сорцы и посмотрит на всё сам в действии, если ему интересно. Не думал в сторону видео как средства увеличения интереса. Пожалуй сниму. Прямо сейчас, чем чёрт не шутит -- ближе к ночи выложу ссылки в этом и нулевом посте) Спасибо, что подтолкнули!)

Пример работы движка здоровья:

http://imw.su/Health-edited.mp4

Пример работы движка погоды:

http://imw.su/Weather-edited.mp4

Окно настроек графики и локализация:

http://imw.su/Settings.mp4


#16
22:38, 18 мар. 2018

Vagrod
> Сеарилация

Если честно я не знаю что такое "сериалация". А сериализация представляет процесс преобразования какого-либо объекта в поток байтов. "as is " это точно нереально, т.к. методы класса не сериализуются плюс - могут быть несериализуемые поля, управление через аттрибуты и т.д.

XmlReader и XmlWriter - это не парсеры. Это именно - ридер и врайтер. Они не разбирают xml-поток на значения, лишь позволяют удобнее его читать. А вот парсить, т.е. - разбирать на значения придется руками.
И если честно это гораздо хуже сериализации. Больше пространства для ошибки, хуже отлаживается.
Как бы парсинг предполагает и хранение в текстовом виде, что медленнее, и на диске занимает больше места.
А еще -требует работы со строковыми переменными, кои - очень неслабо создают утечки памяти (особливо под Юнити).
Не говоря уже о том, что хранение данных игры в открытой форме... Но тут хотя бы - сингл-плеер.))

#17
22:58, 18 мар. 2018

Парсер -- это штука, которая обычно принимает некую строку и возвращает в ответ некий класс с разобранными значениями. Разбирать значения руками мне не придётся. Я могу собирать xml из кусков, каждый из которых представляет собой раздел некоего модуля игры, и там будут лежать инты, флоаты строки, массивы данных, которые нужны этому модулю. xml хорошо разбирается с базовыми типами данных, поэтому если я в xml положил флоат, мне не нужно писать ничего кастомного, чтобы его прочитать. Думаю, даже в юнити xml парсер/ридер (как его не назови), работает с памятью нормально)
Ну, зашифровать мы всегда успеем, какие тут проблемы)

#18
(Правка: 0:33) 0:28, 19 мар. 2018

Парсер это не "штука". Парсер - это код. Иногда в сотни строк. И возвращает он только то, что программист запланировал возвращать и написал кодом.
И если вы положили в xml флоат, то вам надо для начала его в xml-е найти, затем - прочитать в переменную \ поле \ св-во экземпляра класса, если вы создали оный.

Vagrod
> xml хорошо разбирается с базовыми типами данных

он хорошо "разбирается" с любыми типами данных. Ему в общем-то - пофигу что хранить. Мне в свое время пришлось дофига поработать с текстовыми и бинарными xml, в которых приходилось хранить даже растровые изображения.

Вот с формированием таких xml и затем с их чтением - морока.
Без разницы как  вы будете собирать xml, что там будет лежать и в какой структуре - вам все равно придется либо работать с XmlDocument, либо парсить последовательно каждую ноду через XmlReader.Read().
И то и то - очень малоприятное и нудное занятие. Вы вообще в курсе, что текстовые файлы по сути своей - допускают только последовательную работу с содержимым? В отличие от бинарных файлов, которые предоставляют прямой доступ к любому элементу файла.
Надеюсь, что имея 12 лет опыта в программировании (что-то странные суждения у вас для 12 лет...), вы догадываетесь, насколько последовательная обработка текстового файла, будет медленнее бинарной сериализации.

И вы как-то уж очень "нубски" заблуждаетесь, что для вас кто-то автоматически распарсит обычный текстовый xml. Таких готовых функций \ классов \ методов в C# нет. Все придется ручками читать \ писать по каждой ноде.
Кстати, с чтением текстовых xml под Юнити тоже есть "грабли". Причем - еще больше чем ограничения на сериализацию.

Еще раз повторюсь - сериализация - это верный путь. Особенно если вы храните только стандартные типы и массивы. В этом случае сам код сериализации класса составляет - 4-5 строчек.
Зачем создавать себе на пустом месте проблему и создавать парсер там где он не нужен?
В общем, я вам посоветовал, а там - решайте сами, будете парсить вы текстовые файлы или в рамках соблюдения ООП - воспользуетесь сериализацией. Мне-то пофигу - ваш проект.

Вы путаете терминологию.
Парсер - это логика кода по разбору некоего текстового файла конкретной структуры.
Ридер - класс C# для чтения xml (в данном контексте) - файлов. Он их просто читает - по порядку. Не разбирает, не определяет тип значения в ноде, не определяет автоматически наличие и число аттрибутов и т.д. Такое впечатление, что вы никогда с текстовыми xml не работали.

И утечки памяти не в классе ридера, а в самой сути строковых данных. String - Immutable тип - вам о чем-нибудь говорит?

#19
0:53, 19 мар. 2018

Мне в моём случае гораздо удобнее читать xml по нодам и доставать оттуда данные, как сейчас делает менеджер локализации через xpath (понятно, что он потом использует кэш, но изначально). Верю, что у вас больше опыта с чтением xml и хранением всего на свете внутри. Сериализация очень неудобна в моём случае, так как много всего очень важного для "возобновления" состояния того или иного модуля лежит в локальных филдах, которые никто сериализовать не будет по дефолту без пляски вокруг IXmlSerializable и DataContractSerializer, которые я даже не знаю, поддерживаются ли в юнити. Мне гораздо проще пожертвовать парой секунд загрузки, чем потом отлавливать неявные баги фиг его знает где после загрузки сохранения) Но спасибо за совет!)

#20
10:39, 19 мар. 2018

Vagrod
> IXmlSerializable и DataContractSerializer

Поддерживаются. Причем именно в имплементации IXmlSerializable стоит отлавливать ваши нестандартные поля.

Vagrod
> Пример работы движка здоровья:
Я понял в чем беда - из-за чего не понятно происходящее. Виноват - UI. На нем - куча бликов или светящихся пятен. В итоге он "замыливает" картинку и не читается - сложно увидеть \ отследить важные параметры и их изменения. Например я "иконку бактерии" так и не увидел.

В качестве пожеланий (от потенциального игрока - "свежий взгляд"):
1) Повреждения на сканере - отмечать не просто цветом элемента (в данном случае - плеча), а например - мигающим кругом
2) убрать перегружающие восприятие декор-элементы UI медсканера. Среди всяких линий теряются информативные элементы, которые выглядят близко к декору. Например - фоновая "сетка"
3) Заменить выделение активной закладки - просто подсветку (или подчеркивание \ замена цвета) вместо светящегося пятна над ней.
4) Вместо текстовых надписей лучше ставить иконки - воспринимается быстрее, интуитивнее + занимает меньше места.
5) Важные индикаторы - должны выделяться цветом.

Тогда комментарии вообще не потребуются.
А покамисть - я бы лично матерился по поводу такой реализации UI - фиг что рассмотришь, важные моменты не выделены, внимание не притягивают, само по себе - нелогично, когда "warnings" - не выделяются так, чтобы в глаза кидалось. Высокие шансы что игрок: не рассмотрит и соотв. - пропустит важные события.

Vagrod
> Пример работы движка погоды:

Смена погоды по стадиям - это круто и хорошо. Вот только штормом назвать то что получилось - сложно. Сильный дождь с грозой. Для шторма нет самого главного - ВЕТРА. Ураганного, желательно))).  Растительность вообще не шевелится - весь эффект пропадает. А должна шевелиться пропорционально ветру.
А вот брызги от упавших капель на почву можно вообще убрать - лишняя нагрузка на видеосистему, а выглядят не ахти.
Их лучше использовать для града (если такой планируется) - больше похоже на падение градин.

Vagrod
> Окно настроек графики и локализация:

Читается лучше чем более важный (и постоянно используемый) игровой UI. Потому что - в окне настроек нет лишнего декора и всяких "светящихся элементов".

#21
(Правка: 10:47) 10:46, 19 мар. 2018

Homeship
Спасибо за советы!) Помыслю над читабельностью UI)
"Иконка бактерии" находится в левом нижнем углу рядом с кругом HUD, как и иконка потери прови и индикатор усталости)
С ветром как-то странно. WindZone привязан к VegetationStudio, но то трава дрыгается, то деревья "не отвечают". Буду разбираться, где-то какой-то "крыжик" упустил и не включил может быть)
По поводу сканера -- я хотел сохранить оригинальный стиль R'sR, где сканер (скелет и отображение повреждений на нём) выглядели именно так)

#22
10:50, 19 мар. 2018

Vagrod
> "Иконка бактерии" находится в левом нижнем углу рядом с кругом HUD,

Она на что похожа хоть?

Vagrod
> WindZone привязан к VegetationStudio, но то трава дрыгается, то деревья "не
> отвечают".

Ну а как вы хотели-то, используя готовые ассеты? ))) Это в своем коде только - полный контроль и прозрачность.) А с чужими модулями - всегда есть вероятность, что на "грабли" разработчика наступил.) И без патча ассета - не исправляется. Либо - самому лезть в чужой код.

#23
11:04, 19 мар. 2018

Homeship
Она как... иконка вируса круглая, как обычно в книжках вирусы рисуют)

Да, минусы. Но выбора не было. Стандартная юнити трава из билбордов -- вообще беда + не калится. Стандартные деревья юнити -- тоже беда, не провзаимодействовать с ними, не калятся, ждут ресурсы и fps дико, особеенно если на террейне больше тысячи деревьев. VegetationStudio хоть только недавно из беты вышла, но в основном работает, и быстро, на диком количестве растительности. Но приходится наблюдать баги иногда конечно)

#24
11:21, 19 мар. 2018

Vagrod
> как обычно в книжках вирусы рисуют)

Почитайте книжку "Вирус - друг или враг?" - думаю она расширит ваше представление о внешнем виде вирусов. А вы кстати о бактерии выше писали и в видео комментировали.
Бактерии другая форма жизни - не вирусы.

Vagrod
> Стандартные деревья юнити -- тоже беда, не провзаимодействовать с ними, не
> калятся,

Ну для начала - colliders на них все же ставятся. Стандартный террейн это позволяет. В плане взаимодействия - при желании можно и это реализовать.
С травой - да. Но зачем вам на ней коллайдеры и зачем с ней взаимодействовать? Вы в игре хотите сенокосом заниматься? О_о

Насчет жрут ресурсы дико... На видео я вижу - тоже самое и с VegetationStudio. ФПС выше 30ти не поднимаются.) А ведь кроме растительности в кадре ничего нет.

Что интересно - Empyrion реализован на той же Unity, и нормально все с лесами и джунглями. На весьма-весьма слабой конфигурации (например Witcher 3 уже не идет) - летает выше 60 ФПС.
Тот же TLD - Unity. не знаю чем они делали леса, но все идет без проблем, стабильно и корректно отзывается на погодные условия, дофига с чем можно взаимодействовать, деревья с коллайдерами, коряги - с меш-коллайдерами (статика).

#25
(Правка: 11:43) 11:32, 19 мар. 2018

Такой же иконкой часто и бактерии рисуют, я к тому.

Я не смог нарыть инфы о том, как в стандартных деревьях юнити узнать, на какое дерево ты смотришь сейчас, рейкастом, а это основное, что нужно от деревьев в игре. С травой я коллайдиться не буду конечно, только с растениями посерьёзнее)
Когда я первый раз попробовал рассадить на стандартный террейн тысячу стандартных деревьев, я получил 15fps. Здесь хоть 35-42 + на террейне шейдер посерьёзнее + mesh трава ещё. Разница была день и ночь. Может и можно как-то настроить стандартные деревья, чтобы они адекватно ресурсов жрали, но тут надо знать юнити, наверное, очень хорошо.
Был ещё пятый месяц разработки, но я его не считаю, потому что я просто пытался как угодно получить более-менее адекватные fps на террейне. В итоге я начал использовать тесселляцию, стримминг, каллинг и кастомный движок растительности (сначала AltTree, но он слишком ограничен для моего workflow). Только после всего этого я получил somewhat-играбельный fps.

#26
(Правка: 11:56) 11:44, 19 мар. 2018

Vagrod
> Такой же иконкой часто и бактерии рисуют, я к тому.

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

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

Vagrod
> В итоге я начал использовать тесселляцию, стримминг, каллинг

Эм... А вы хотели без этого всего обойтись? Occlusion culling - вообще для таких положений камеры - обязателен.  Тесселяция и в стандартном террейне довольно неплоха. А материал террейна (то есть и шейдер) - заменяются стандартными средствами.

#27
11:47, 19 мар. 2018

Homeship
Беру вас консультантом!)) На самом деле, прежде чем описывать лечение той или иной болезни, я изучаю её лечение в реальном мире, потом упрощаю это для игры, сохраняя основные препараты и дозировку)

#28
12:08, 19 мар. 2018

Не надо меня консультантом... )))
У меня в своем проекте - дел невпроворот.))

#29
13:04, 19 мар. 2018

Homeship

Тесселяция и в стандартном террейне довольно неплоха

Я там видел только error level, который при высоких значениях начинает куралесить.
Не надо меня консультантом... )))

Как скажете :D
Страницы: 1 2 3 4 5 6 7 Следующая »
ПроектыФорумСобираю команду