|
|
|
Старые вопросы о главном. Подбор клиента к ранке. |
|
|
olduo.com |
6.8.2018, 16:00
|
Journeyman
Сообщений: 440
Регистрация: 31.7.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.060
|
Цитата(Narciruss @ 6.8.2018, 13:28) на счет advanced ai — скажем так, нет, не машинное обучение, а длинные сценарии ai. Например контролируемое скопление нпс-ов в кол-ве 100-200 штук в одном регионе, в которое заложено кастомное поведение
я еще не встретил уо эмуляторов на которых это нельзя было бы сделать. я такое делал на ПОЛе по приколу делал и 5000 юнитов (2500вс2500) в локации размером с город. тут главное главное руки кодера, у меня домашний комп особой нагрузки не ощутил, лагов не было. делал и корявый вариант обучаемого ИИ на основе нейронных сетей, но применения пока не нашел. Цитата(Narciruss @ 6.8.2018, 15:42) хотелось бы строить окружение прямо из уо-объектов (мечты о динамическом мире не отпускают, пусть это и мечты-да-фантазии). Простой пример — британия вдруг покрывается пеплом и снегом.
и такое делал, например рандомно генерируемые данжены и копание шахт под землей типа 2д майнкрафт, но тут сервер лагал потому что реализовал не через мультисы, а просто тайлами. каждый тайл это пакет от сервера в сторону клиента и это только на один тайл. если один клиент, то проблем нет, 20 человек и кол-во пакетов стало х20 на каждый клиент и сервер стал тормозить. к слову на ОСИ слышал делали снег на карте, как, вопрос не изучал.
--------------------
|
|
|
|
Aimed |
6.8.2018, 16:12
|
Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012 Группа: Пользователи Наличность: 7779
Пользователь №: 15.607
|
Цитата(Narciruss @ 6.8.2018, 14:42) Отлично, кстати, что есть такая оптимизация НПС-ов (IMG: style_emoticons/default/smile.gif) (интересно есть ли такая оптимизация на сфере, кстати, lol). Да есть, ещё со времен 51 сферы есть. Это по моему один из основных механизмов работы с ИИ. Иначе сервер постоянно будет что-то обрабатывать и жрать ресурсы. Цитата(Narciruss @ 6.8.2018, 14:42) Тут кстати наверное и не будет проблем, если саму логику просчитывать в отдельном треде, а runuo api уже использовать как рендерилку (но это я уже ухожу в фантазии и вспоминаю всякие умные современные рендерилки веба аля vdom).
С таким подходом будут проблемы. Пока в другом треде будет обрабатываться логика где используются данные из мейн треда, состояние обьектов в мейн треде уже наверняка изменится и весь твой анализ из параллельного треда устареет. Тут обязательным условием является то что действия из твоего анализа данных должны выполняться сразу же после полученных данных из мейн треда, тобишь в самом мейн треде. Из того что я знаю, решение такой проблемы лучше делать разбивая главный тред на несколько под определенные части карты, либо разбивать карту на несколько серверов, где у каждого куска будет свой мейн тред или сервер. Цитата(Narciruss @ 6.8.2018, 14:42) То что клиент тормозит на большом кол-ве объектов печально, хотелось бы строить окружение прямо из уо-объектов (мечты о динамическом мире не отпускают, пусть это и мечты-да-фантазии). Простой пример — британия вдруг покрывается пеплом и снегом. Орион кстати более менее нормально работает на большом кол-во не-статичных объектов, первая прогрузка, конечно заметна. ООП в крови уже (IMG: style_emoticons/default/laugh.gif) 8 лет руби/джаваскриптов/java и так далее. Но С++ всегда боялся и обходил стороной, C более менее могу. Хорошо, что нет шаблонов и в коде есть упоминание auto. Хочется думать в сторону патчинга UI клиента, не более, наврятли я смогу осилить запатчить движок рендеринга (кстати, сколько может стоить такая штука на заказ? 30-50к деревянных?) Есть такой проект - UltimaLive, c его помощью можно реализовать то что ты хочешь. Клиент и так рисует дофига обьектов. Там могут быть десятки тысяч обьектов на одном экране без всяких 5к орков. Спрайты пола, спрайты зданий, анимированный статики и так далее и на соверменной видеокарте он нормально справляется, но не у всех она есть. А что б 5к одинаковых орков так сильно не нагружали нужно оптимизации делать. Я от Ориона отошел, так как я решил профессионально заняться гейм девом и у меня больше нету времени на опен сорс проектики в свободное время. Если тебе нужны будут форки Ориона, то лучше пиши в скайп hotridee. Если будет что-то серьёзное, то думаю он найдет свободное для тебя время (IMG: style_emoticons/default/smile.gif) Но лично я не стал бы так сильно на Орион ставить.
|
|
|
|
Narciruss |
6.8.2018, 16:14
|
ужас какой
Сообщений: 653
Регистрация: 12.2.2005 Группа: Пользователи Наличность: 0 Из: Москва
Пользователь №: 3.050
|
Цитата(olduo.com @ 6.8.2018, 16:00) я еще не встретил уо эмуляторов на которых это нельзя было бы сделать. я такое делал на ПОЛе по приколу делал и 5000 юнитов (2500вс2500) в локации размером с город. тут главное главное руки кодера, у меня домашний комп особой нагрузки не ощутил, лагов не было. делал и корявый вариант обучаемого ИИ на основе нейронных сетей, но применения пока не нашел. и такое делал, например рандомно генерируемые данжены и копание шахт под землей типа 2д майнкрафт, но тут сервер лагал потому что реализовал не через мультисы, а просто тайлами. каждый тайл это пакет от сервера в сторону клиента и это только на один тайл. если один клиент, то проблем нет, 20 человек и кол-во пакетов стало х20 на каждый клиент и сервер стал тормозить. к слову на ОСИ слышал делали снег на карте, как, вопрос не изучал. Вот это и проблема да. Мне пока матчасти не хватает, чтобы понять, можно ли например брать статические куски (есть же дома, к примеру) и динамически их размещать в регионе, тогда по идеи level-генерация может быть проще, если взять с 10-ок готовых квадратов и динамически из них составить уровень. Ну вот если немного накидать снега по холмам брита - то клиент, думаю, справится с таким. С другой стороны напрашивается тот факт, что официальный клиент возможно умеет как-то специально такие ситуации рендерить? И почему нельзя отправлять сразу пачку пакетов, есть ли в этом смысл? (с текущим рендерингом понятно, что толку от этого не будет)
|
|
|
|
olduo.com |
6.8.2018, 16:26
|
Journeyman
Сообщений: 440
Регистрация: 31.7.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.060
|
Цитата(Narciruss @ 6.8.2018, 16:14) можно ли например брать статические куски (есть же дома, к примеру) и динамически их размещать в регионе, тогда по идеи level-генерация может быть проще, если взять с 10-ок готовых квадратов и динамически из них составить уровень.
да конечно и реализация была бы проще, но я кодю под енханцед клиент, а там делать мультисы не тревильно. на 2д просто Цитата(Aimed @ 6.8.2018, 16:21) Вот бы ещё при онлайне хотя бы в 50 человек такое потестить ))
да хоть 500, АИ же все равно кого бить человека или другого НПЦ. потом 5000 НПц они не в пределах 1 экрана, а в локе размером с город, т.е. они все сразу не ударят 1 игрока
--------------------
|
|
|
|
Narciruss |
6.8.2018, 16:28
|
ужас какой
Сообщений: 653
Регистрация: 12.2.2005 Группа: Пользователи Наличность: 0 Из: Москва
Пользователь №: 3.050
|
Цитата(Aimed @ 6.8.2018, 16:12) С таким подходом будут проблемы.
Да, понял. Там где не может быть async'а — его быть не может, грубо говоря (IMG: style_emoticons/default/laugh.gif) Цитата(Aimed @ 6.8.2018, 16:12) либо разбивать карту на несколько серверов
Это возможно сделать? Я так понимаю проблема в том что придется делать сетевую синхронизацию (трансфер одного сериализуемого объекта между сервером) между серверами, дополнять сиреализицию и вводить server_id некий? Это мега круто, если это возможно сделать красиво (IMG: style_emoticons/default/smile.gif) Меня именно этот вопрос очень волнует — как клиент будет наблюдать переход между серверами? И в теории: можно как-то послать клиенту пакеты, чтобы его разлогинело и залогинело на другой сервер? На оскоме такое реализовано (но возможно у них клиент патченный). Цитата(Aimed @ 6.8.2018, 16:12) А что б 5к одинаковых орков так сильно не нагружали нужно оптимизации делать.
Могу я уточнить у тебя какого рода оптимизации? Хотя бы примерно. Мне понятно что существуют самые очевиные оптимизации — типа отрисовывать не по одному пакету, а только по группе пакетов, но дальше моя мысль никуда не идет (IMG: style_emoticons/default/laugh.gif) Цитата(Aimed @ 6.8.2018, 16:12) Но лично я не стал бы так сильно на Орион ставить.
Потому что скоро он станет outdated? P.S. я мечтаю уйти в гейм дев, но упираюсь в то что трудно с графикой (IMG: style_emoticons/default/smile.gif) хочется попрактиковаться на uo пока.
|
|
|
|
Aimed |
6.8.2018, 17:02
|
Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012 Группа: Пользователи Наличность: 7779
Пользователь №: 15.607
|
Цитата(Narciruss @ 6.8.2018, 15:28) Это возможно сделать? Я так понимаю проблема в том что придется делать сетевую синхронизацию (трансфер одного сериализуемого объекта между сервером) между серверами, дополнять сиреализицию и вводить server_id некий? Это мега круто, если это возможно сделать красиво (IMG: style_emoticons/default/smile.gif) А почему нет? Правда в контексте УО в этом будет мало смысла. Ещё систему сейвов через общую БД прийдется сделать и на каждой машине свою локальную БД, для своего региона, которая постоянно держит связь с главной БД. Цитата(Narciruss @ 6.8.2018, 15:28) Меня именно этот вопрос очень волнует — как клиент будет наблюдать переход между серверами? И в теории: можно как-то послать клиенту пакеты, чтобы его разлогинело и залогинело на другой сервер? На оскоме такое реализовано (но возможно у них клиент патченный).
Как сделаешь - так будет))) Можно сделать так что б обслуживаемый сервер посылал пакеты для создания новых коннектов, к 2-3-4 серверам одновременно. Когда подходишь с границе регионов и при определенном переходе обращаешься уже к правильному сокету и тебя начнет обслуживать уже другой сервер. Никакой видимой разницы быть не должно, если все сделано грамотно. Кстати в LiF: MMO такая система реализована. Цитата(Narciruss @ 6.8.2018, 15:28) Могу я уточнить у тебя какого рода оптимизации? Хотя бы примерно. Мне понятно что существуют самые очевиные оптимизации — типа отрисовывать не по одному пакету, а только по группе пакетов, но дальше моя мысль никуда не идет (IMG: style_emoticons/default/laugh.gif) Отрисовка пакетов?) Текстурирование статики, батчинг спрайтов. Цитата(Narciruss @ 6.8.2018, 15:28) Потому что скоро он станет outdated?
Нет, потому что УО это дохлый номер и вкладывать в новый УО сервер такие деньги нецелесообразно.
|
|
|
|
Narciruss |
6.8.2018, 17:06
|
ужас какой
Сообщений: 653
Регистрация: 12.2.2005 Группа: Пользователи Наличность: 0 Из: Москва
Пользователь №: 3.050
|
Цитата(Aimed @ 6.8.2018, 17:02) А почему нет? Правда в контексте УО в этом будет мало смысла. Систему сейвов через общую БД сделать и на каждой машине свою локальную БД, для своего региона, которая постоянно держит связь с главной БД. Как сделаешь - так будет))) Можно сделать так что б обслуживаемый сервер посылал пакеты для создания новых коннектов, к 2-3-4 серверам одновременно. Когда подходишь с границе регионов и при определенном переходе обращаешься уже к правильному сокету и тебя начнет обслуживать уже другой сервер. Никакой видимой разницы быть не должно, если все сделано грамотно. Отрисовка пакетов?) Текстурирование статики, батчинг спрайтов. Нет, потому что УО это дохлый номер и вкладывать в новый УО сервер такие деньги нецелесообразно.
"Рендеринг" пакетов (IMG: style_emoticons/default/smile.gif) Хотя понятно, что я не совсем корректно выражаюсь. Спасибо за информацию, круто что без патчинга клиента можно что-то такое сделать.
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|