Jump to content
Magicsea Online

Magicsea Online (IOS & Android) | Блог разработки

Recommended Posts

Утилизация стандартных теней


До
nhQ57raNGQc.jpg

 

После
FPR-br7nFVk.jpg

Edited by Kara Online
  • Like 1

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites

Тестирование карты нормалей 
f7Yr5fFUkU4.jpg


Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites

Тени от части сняли проблему с "плоскостью" игры, но объёма всё равно не хватает как по мне

  • Like 1

Share this post


Link to post
Share on other sites

@Kara Online, @Kst, привет!

 

Как у вас дела с проектом? Уже прошло более года, а от вас никаких новостей.

  • Thanks 1

Share this post


Link to post
Share on other sites

https://gamedev.ru/projects/forum/?id=259554

Не знаю как в плане "переделанных" механик, но широкоформат + фпс + улучшенный рендер с тенями и освещением и измененный шрифт дают достаточно приятную картинку. 

Edited by BETEP/macs509
  • Like 1
  • Thanks 2

Share this post


Link to post
Share on other sites
В 14.12.2021 в 19:15, V3ct0r сказал:

@Kara Online, @Kst, привет!

 

Как у вас дела с проектом? Уже прошло более года, а от вас никаких новостей.

 

В 14.12.2021 в 21:57, Graf сказал:

Там в процессе. Причем в активном. Предполагаю, что держут интригу)

 

13 часов назад, BETEP/macs509 сказал:

https://gamedev.ru/projects/forum/?id=259554

Не знаю как в плане "переделанных" механик, но широкоформат + фпс + улучшенный рендер с тенями и освещением и измененный шрифт дают достаточно приятную картинку. 

Привет! Всё супер, спасибо что спросил. Давно мы не описывали свою работу в этой теме, так как в большинстве всё описание ведём на своём закрытом форуме для коммуникации внутри команды и некоторую часть выкладываем нашим преданным игрокам (матросам).

 

Объём работы велик, много что переписали и нужно переписать/дописать, работаем целой командой и день и ночь, практически каждый день 💪

 

Команда занимающая клиентской частью сейчас очень активно занимается адаптацией игры под всевозможные платформы, на данный момент имеем поддержку win x32, win x64, linux, android, macOS и сейчас в работе над IOS(отчеты техников в спойлере), должны к концу месяца закончить. Очень трудно адаптировать китайщину под кроссплатформу, там очень много мелочей которые тратят кучу времени, к примеру для адаптация под компилятор MinGW и поддержку x64 пришлось запилить свой клей между игрой и LUA, (https://github.com/Alex2772/cpp_lua_glue) так как там есть asm вставки, которые как ты знаешь на x64 совсем другие). Ещё интереснее стало когда пришлось избавиться от WinAPI, MinGW нам вообще жопу порвал, он ругается на все мелочи, если знаком с этим компилятором знаешь о чем я.

Спойлер

Первый запуск на Linux

spacer.png

 

Первый запуск на Android

spacer.png

 

Первый запуск на MacOS

spacer.png

 

Первый запуск на IOS

20823a77eae05810495e209a930dd0a3.jpg                a0758126331b15b9dec5ed7052f6b1e7.jpg

 

 

В итоге первый запуск на Linux завели спустя 2 месяца ежедневной работы, так как архитектура исходников не позволяет расширяться и нанимать новый разрабов не опасаясь сливов, пришлось разбить проект на много репозиториев, переделать модули в библиотеки (libdbc.dll/so, util.dll/so, odbc.dll/so и т.д), чтобы можно было позволить работать над отдельными модулями не имея доступы к основным исходникам. К этому всему прикрутили автоматическую компиляцию всех компонентов на билд машинах (CI CD), для билда всё перевели на CMake под это всё барахло закупили оборудование (linux тачка с 32 CPU и 256 RAM) со своей простроенной NAT архитектурой и всё это под оберткой Conan (python).

Спойлер

Оптимизация зависимостей

2dc7ea194dfc4175af059887e62f7b69.jpg

 

Зависимости и архитектура CMake

aaebf0167c99810fb9fbd7c30d665c3b.jpg

 

 

Мультибилд MindPower через Conan 

7f2eb79f6c09e20cc384a9a6d79bf220.jpg

 

Компиляция Boost и стресстесты build-machine

98163005520388c234bc65ea55e11307.jpg

 

В общем очень всё тяжело, сложно, но очень интересно и планы на продукт грандиозные. Очень сильно упоролись в поддержку множества устройств, пришлось большой объём работы провести над переписью шейдеров игры под разные видеокарты intel, nvidia, амуде)). Сюда же прикрепили крутую оптимизацию GPU и CPU, нашли кучу проблем с сетевой частью, которая очень сильно тормозит и бросается с потока на поток (class Sema), игровым движком (не графическим), кучу копирования классов пришлось на ссылки перекинуть (очень крутой буст кстати дало), свои кастомные решения ThreadPool'a, обработчика событий, backtrace и крч много-много-много всего, которое требуется любому современному продукту. К этому прикрутили популярные методы улучшения графики (HBAO, динамические тени, динамическое освещение, новая технология источников света в 1 calldraw, skybox с собственной технологией динамического размыливания).

Спойлер

Настройка окружения 

b3f605cc32912b7da1ca8aac63f62a2f.jpg


f7ddbc2e4d8fa6a61a103195930e6189.jpg

 

05c9dc8b170376c23731f67b5116048e.jpg

 

Ко всему прочему большой акцент сделали на GUI, так как адаптация под мобилку потребует полностью перерисовывать интерфейс, решили полностью перейти на самописный фреймворк(https://github.com/aui-framework/aui), который даст возможность крутить интерфейс как захотим под любым углом, сейчас активно переводим все существующие элементы под него, так к примеру в августе разработали новый чат с динамическим расширением, в ноябре между адаптацией под платформы завезли новые bb коды на основе xml парсинга для сервера (цвета, выравнивания (даже по ширине текста))

Спойлер

Выравнивание текста

415143c12847c5701813cb4ba59d20bc.jpg

 

Новое окно диалога

8d5dc162acbe9789b431ada7fbdc96f2.jpg

 

Что касается серверной части, мы в основном занимались доработками lua. Пришлось пробежаться по всем файлам и провести микро оптимизацию всех функций, наследие от китайцев и старых разработчиков оставило кучу сюрпризов. Перешли на lua 5.4 со всеми вытекающими последствиями, после чего завезли несколько профилировщиков, обнаружили уязвимые места и фиксим их.  Так же закончили дробление lua на файлы, теперь сборка логически разбита на 200+ файлов по механикам или смыслам, а все функции покрыты комментариями для новых разработчиков, для расширения штата создали свою базу знаний для обучения скриптеров/геймдизов/нарративщиков. В ней мы пишем документацию по всем системам, которые у нас реализованы или находящихся в планах на реализацию. 

Спойлер

41c3c6d0ccffeb1dbc8dc51a1bce28fc.png

 

Развернули большую компанию по введению 2 и более языков на уровне скриптов. Переработали множество квестов и наград за них для прозрачного развития игрока относительно игрового процесса. Теперь прокачка игрока построена не только на тотальном убийстве игроков, а на прохождении заданий в городах/деревнях или исторической цепочке. Проработали и продолжаем прорабатывать начало игры для игрока любого уровня - мы постепенно знакомим игрока со всеми механиками игры начиная с локации для новичков. Процесс взятия профессии мы так же перенесли на новую локацию. Игрок находится под нашим контролем первые 30-40 минут своей игры. 

 

Мы проделали большую работу по написанию новой-старой локации Остров Зимы(Северные королевства), в этой локации мы продолжили работать над ЛОРом игры и добавили множество заданий, новых существ, новые поселения и активности для игрока высокого уровня. 

Спойлер

План локации Северные Королевства

1af8588b9c8379d19ba0d97539394b0e.png

 

9e337e205bad150d3ce130d2d5de3b83.png

 

09f0e3e4793a70de1889270cbc76a058.png


 

По смете выложили уже 4.255 млн на всю разработку, планируем хорошую рекламную компанию и ожидаем очень большую нагрузку из-за этого сейчас приходится продумывать и прорабатывать каждый модуль по отдельности, обвязывать его тестами. Из первой необходимости осталось доделать IOS, автоматизировать процесс деплоя, доделать патчер и лаунчер, доделать поддержку английского и передать на перевод под другие языки. В следующем году планируем открываться, в первом квартале надеемся провести локальные тесты.

 

Тут примерно 30% проделанной работы, кучу остальной мелочи описывать смысла не вижу.

 

Как-то так у нас дела))

  • Like 3
  • Thanks 1

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites
В 02.11.2020 в 23:32, z0nT сказал:

Тени от части сняли проблему с "плоскостью" игры, но объёма всё равно не хватает как по мне

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

 

К сожалению это негативно сказывается на производительности и требует более новую версию API, по этим причинам мы оставили эту механику только для игроков с ПК, там для них это незаметно.

b3f605cc32912b7da1ca8aac63f62a2f.jpg

Спойлер

fe77bac4cceaebfed137bd0e3824756c.jpg

 

0ab042be75ab6cc38fdd00c8f9d48567.jpg

 

f7ddbc2e4d8fa6a61a103195930e6189.jpg

 

05c9dc8b170376c23731f67b5116048e.jpg

 

  • Like 1
  • Thanks 1

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites

Привет, @Kara Online!

 

Благодарю за такой развернутый ответ, было очень интересно почитать. Проект выглядит впечатляюще, работа действительно проведена огромная! Буду ждать релиза и открытие вашего форума. И надеюсь, хотя бы изредка будете баловать нас новостями проекта.

  • Like 1

Share this post


Link to post
Share on other sites
В 17.12.2021 в 09:15, V3ct0r сказал:

Привет, @Kara Online!

 

Благодарю за такой развернутый ответ, было очень интересно почитать. Проект выглядит впечатляюще, работа действительно проведена огромная! Буду ждать релиза и открытие вашего форума. И надеюсь, хотя бы изредка будете баловать нас новостями проекта.

Продолжаем баловать вас новостями: наконец-то успешно запустили игру на IOS(на скриншоте игра запущена на 8 iPhone).

424e5ca8fdbcbeb7bc9d661eb0a27391.jpg

 

  • Like 2
  • Thanks 1

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites

Очень здорово! Удачи с проектом! Личная практика и опыт мне говорят, что пиратия больше нерентабельная - надеюсь, что я не прав и ваш проект окупит себя 🙂

  • Like 1

Share this post


Link to post
Share on other sites
On 12/25/2021 at 2:48 PM, Kara Online said:

Продолжаем баловать вас новостями: наконец-то успешно запустили игру на IOS(на скриншоте игра запущена на 8 iPhone).

Это уже играбельная версия?


Share this post


Link to post
Share on other sites
В 27.12.2021 в 10:06, V3ct0r сказал:

Это уже играбельная версия?

Она не оптимизирована и есть небольшие проблемы с кодировкой, но играть уже можно на всех устройствах. 

На фотографии ниже игра представлена на платформах Win/MacOS/Android/IOS.

 

2e04506ce7961dc00b7bc83856be317b.jpg

Edited by Kara Online
  • Like 1
  • Thanks 1

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites

Привет, @Kst, @Kara Online!

 

Прошел уже достаточно большой промежуток времени, хочется в очередной раз поинтересоваться жизнью проекта. Есть ли новости, достижения, проблемы?


Share this post


Link to post
Share on other sites
В 15.08.2022 в 13:51, V3ct0r сказал:

Привет, @Kst, @Kara Online!

 

Прошел уже достаточно большой промежуток времени, хочется в очередной раз поинтересоваться жизнью проекта. Есть ли новости, достижения, проблемы?

Работаем, Без преувеличения каждый день.

 

Добрали новых участников команды, обучили работе с Пиратией. Не было ещё недели без работы.

На данном портале есть участники нашего приватного дискорд канала где отслеживаются все коммиты, открыты каналы для общения, видны участники. Думаю они не дадут мне соврать.

 

При наличии конкретного промежуточного результата будем рады поделиться.

  • Like 1
  • Thanks 1

Работаем над портированием пиратии под все платформы (win, linux, android, macos, ios)

We are developing the tales of pirates to all platform (win, linux, android, macos, ios)

 

telegram: https://t.me/magicsea_online

Share this post


Link to post
Share on other sites

А можно ли как то связаться с вами? Я хотел бы тоже поучаствовать в производстве, опыт большой есть) @ViolSea - телега) 

Share this post


Link to post
Share on other sites
On 9/11/2022 at 12:55 AM, Kst said:

Работаем, Без преувеличения каждый день.

 

Добрали новых участников команды, обучили работе с Пиратией. Не было ещё недели без работы.

На данном портале есть участники нашего приватного дискорд канала где отслеживаются все коммиты, открыты каналы для общения, видны участники. Думаю они не дадут мне соврать.

 

При наличии конкретного промежуточного результата будем рады поделиться.

Супер! Рад, что проект живет и развивается. Буду ждать промежуточных результатов и последних новостей.


Share this post


Link to post
Share on other sites

Всем привет 👋 Мы чутка освободились и наконец-то пришли с новостями.

 

Предисловие:

Вот уже 2 года и 10 месяцев как мы находимся в разработке нашего продукта. Смотря сейчас на пройденный нами путь, мы понимаем, что разработка собственной игры, а тем более кроссплатформенной это не самое быстрое занятие и легкое хобби. Из-за желания сделать продукт идеальный, мы совершали ошибки, за которые уже поплатились самым ценным ресурсом человечества - временем. 

Если бы можно было вернуться в начало нашего пути и дать пару советов, то мы бы сэкономили как минимум целый год. Но не всё так плохо, самое важное что мы получили - это опыт, опыт который считается бесценным для нас.
 

Позвонить разработчику на мобильный номер и будить его, потому что он в процессе спринта проспал начало работы? - Да, это про нас. 

Уснуть на стуле или на столе в ночное время пока вы решаете, как в этом чертовом MindPower'e реализована система эффектов? - Да и это про нас. 

Сломать, построить, сломать и ещё раз построить чтобы потом опять сломать? - Да, увы и это про нас. 

 

Мы предусматриваем даже неразумные вещи, которые могут произойти с продуктом в процессе его эксплуатации. Больше 5 млн рублей в нашей excel таблице сейчас в расходах, больше чем десятки тысяч коммитов в репозиториях, мы разобрали эту чертову игру на кусочки и собрали её заново, мы даже знаем кому звонить когда ошибка в графическом движке при воспроизведении анимации (поищите в исходниках "crash!!!, call"), мы уже не просто команда, а уже большая семья. Всё это время мы искали ту самую, единственную, верную тропу по которой нам необходимо идти, и мы её нашли.

 

Ну и к чему же мы наконец-то пришли?

 

Клиент:

На данный момент мы переписываем весь функционал клиента прописанный в C++ на скриптовой язык LUA. Для чего? Скриптовой язык LUA является простым на наш взгляд, как минимум проще чем C++, средняя стоимость оплаты труда на порядок меньше, разграничение скриптовой логики и логики движка предоставляет куча безопасности, избавляет раз и навсегда от утечек памяти, скорости работы и самое важное - ускоряет процесс разработки. Множество важных элементов игрового и графического движка мы переписали с 0, такие как рендер карты, игровые эффекты, рендер в принципе. 

 

Наш девиз - Кара должна запускаться даже на кофемолке © alex2772. Мы помешаны на оптимизации и не позволяем себе потратить лишние 10 миллисекунд в UI потоке, поэтому всё что можно мы стараемся вытащить в другие потоки без частого использования мьютексов. 

 

И конечно, мы понимаем, что какой-то наш забугорный клиент может иметь телефон на какой-то 4.x версии android’a с ограниченным количество CPU и предусматриваем это.

 

Хочется отметить важный факт, что мы делаем клиент игры, который способен работать на 1.38 версии клиента, а с некоторыми доработками и на 2.0. И не исключаем возможность тестирования нашего клиента совместно с руководством и игроками существующих серверов по их желанию.

 

CI/CD:

Мы очень активно пользуемся технологией CI и CD. Каждый раз когда разработчик делает коммит в репозиторий, то клиент игры автоматически собирается под все платформы и обновляется на всех платформах. Чтобы залить обновление для клиента, нам достаточно 1 коммита.

 

spacer.png


Сервер:

GateServer, GroupServer и AccountServer переписали с нуля, GameServer пока фулл рефактор скриптов. Все сервера переписали под CMake и адаптировали под работу в Linux, затянули их под технологию Docker и сразу же под технологию Kubernetes.

 

Lua игрового мира:
Все вы знаете, как выглядит легаси код сервера, как в нем не понятно что к чему - все навалено в один файл и покрыто китайскими комментариями с битой кодировкой. А если копнуть дальше, то можно заметить в коде очень много проблем с глобальными переменными, а также все это сопровождается алгоритмическими ошибками. Когда к нам в команду пришел опытный луа-разработчик, он сказал: “это все говно нужно переписывать, как оно работало - я хз”.  

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

 

spacer.png
Теперь не нужно продумывать сложную логику из взаимосвязи страниц, даже разработчики с низким уровнем знания lua разбираются с этим быстрее, чем это было раньше.
 

“У вас много магических чисел - магические числа — это плохо”, он не исправил это, но теперь весь код наполнен комментариями по всем магическим числам, по которым можно дать комментарии. Большинство функций, поведение которых не тривиально описаны и задокументированы.  Пример:

 

spacer.png


Вы знаете самые нагруженные функции в луа на вашем сервере? Вы знаете, как их найти? Вот и мы тоже не знали, а теперь в нашем арсенале 3 профилировщика, которые покажут нам, где мы просаживаемся по производительности при росте онлайна. А где же мы берем онлайн, у нас на сайте все время 4% нагруженности было…

 

Наш луа код на сервере покрыт комментариями на 90%, а все что можно шаблонизировать - шаблонизировано или продолжает шаблонизироваться:


spacer.png

Кстати, на скриншоте можно еще увидеть новое логирование, которое вываливает traceback и систему мультиязычности сервера.
 

Вы знаете сколько игрок прошел заданий и сколько денег он потратил на лечение? Вот и мы тоже не знали, но добавили больше 100 различных метрик, которые можем анализировать и выводить в красивые и информативные графики.

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


spacer.png


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

 

Каждой системе отдельный файл, каждой системе отдельный флаг отключения - мы разбили весь луа код из 10-15 файлов в 250+ и это позволяет лучше понимать работу систем, что снижает порог вхождения новых разработчиков.


spacer.png


Наш репозиторий сервера насчитывает более 2500 коммитов, свою руку к коду приложило около 20 специалистов, различной направленности.

А через наши файлы в целом прошло больше 60 человек: они рисовали иконки и картинки, писали новые задания, рефакторили старый код, писали новые системы, писали музыку и звуки, изменяли карты, страдали и наслаждались результатом. 

 

С каждым разом описывая наши достижения мы хотим поделиться всем, но пока мы писали данный пост мы понимаем что всё описать невозможно, по этому оставим тут самые интересные и важные на наш взгляд новости. 

 

 

 

Edited by Kara Online
  • Like 4
  • Thanks 1
  • Sad 1

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites

Время от времени мы публикуем интересные моменты при работе со старым кодом игры, новости разработки и другие интересные фишки в нашем телеграмм канале https://vk.cc/chjcxR
Присоединяйтесь, задавайте вопросы и учитывайте в своих проектах!

  • Like 1
  • Sad 1

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites

Интересный факт.
Менеджер ресурсов - норма для любого высоконагруженного приложения, в нём хранятся все ресурсы необходимые для работы приложения, так называемый кэш. Когда мы начали работать над эффектами, мы задумались о создании собственного менеджера ресурсов, который будет работать в многопоточном режиме для улучшения производительности. Пока мы анализировали код старого менеджера ресурсов, мы обратили внимание на две интересные реализации:
1. Менеджер ресурсов загружает все необходимые ресурсы в оперативную память при запуске игры и помещает в список std::vector. Это примерно 700 элементов.
2. При создании любого элемента в игре (эффект/объект/персонаж) менеджер ресурсов бегает по списку всех элементов внутри себя и вытаскивает необходимый.

Если с первым пунктом это не сильно трогает, т.к лишние 200-300 МБ ОЗУ не является сейчас проблемой для современных ПК, то второй пункт открывает глаза на причины просадок при хороший замесах. С персонажами всё понятно, зашли в зону видимости, создали и работаем с ним, а вот с эффектами становится очень интересно. Каждый удар меча по цели создаёт на цели эффект хита, чем больше скорость атаки тем больше создаётся эффектов на цели, каждый раз при этом мы бегаем по списку из 700 элементов ищем подходящий и отдаём из менеджера ресурсов. Для нас это было очень забавно. Использовать ассоциативный контейнер (std::map) вместо обычного списка (std::vector) - это переписать от силы 10 строчек, может дать серьёзный прирост производительности при замесах.


spacer.png



Еще больше интересных фактов вы можете узнать в нашем телеграмм канале https://vk.cc/chjcxR

  • Thanks 1

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites

Привет, @Kara Online!

 

Подписался на ваш канал, буду следить за новостями. Спасибо!

 

Также перенес тему в раздел Новости и объявления.

 

11 hours ago, Kara Online said:

Для нас это было очень забавно. Использовать ассоциативный контейнер (std::map) вместо обычного списка (std::vector) - это переписать от силы 10 строчек, может дать серьёзный прирост производительности при замесах.

У бинарного дерева (std::map) сложность поиска O(log n). Вероятно, поскольку не требуется упорядоченная последовательность и не добавляются новые элементы, в вашем случае выгоднее использовать хэш-таблицу (std::unordered_map), у которой сложность поиска в среднем случае составляет O(1). Интерфейс такой же, как и у std::map. 

 

Так же увидел такой фрагмент кода:

 

image.png

 

1) Почему используется сишная функция strcmp() вместо std::string::operator==()?

if (_vecPartName[n] == pszName) { ... }

 

2) В данном примере не критично, но если вместо n будет итератор, то лучше использовать префиксный оператор инкремента, чтобы избежать лишнего копирования.

 

3) size_t n(0), ИМХО, довольно экзотический синтаксис инициализации, обычно используют запись size_t n = 0. Для простых типов обе записи идентичны.


Share this post


Link to post
Share on other sites
7 минут назад, V3ct0r сказал:

Привет, @Kara Online!

 

Подписался на ваш канал, буду следить за новостями. Спасибо!

 

Также перенес тему в раздел Новости и объявления.

 

У бинарного дерева (std::map) сложность поиска O(log n). Вероятно, поскольку не требуется упорядоченная последовательность и не добавляются новые элементы, в вашем случае выгоднее использовать хэш-таблицу (std::unordered_map), у которой сложность поиска в среднем случае составляет O(1). Интерфейс такой же, как и у std::map. 

 

Так же увидел такой фрагмент кода:

 

image.png

 

1) Почему используется сишная функция strcmp() вместо std::string::operator==()?


if (_vecPartName[n] == pszName) { ... }

 

2) В данном примере не критично, но если вместо n будет итератор, то лучше использовать префиксный оператор инкремента, чтобы избежать лишнего копирования.

 

3) size_t n(0), ИМХО, довольно экзотический синтаксис инициализации, обычно используют запись size_t n = 0. Для простых типов обе записи идентичны.

Данный скриншот является вырезкой из оригинального кода игры, мы больше не используем этот менеджер ресурсов. Просто обращаем внимание разработчиков на те или иные моменты в легаси.

  • Thanks 1

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites
В 03.12.2022 в 15:26, V3ct0r сказал:

Привет, @Kara Online!

 

Подписался на ваш канал, буду следить за новостями. Спасибо!

 

Также перенес тему в раздел Новости и объявления.

 

У бинарного дерева (std::map) сложность поиска O(log n). Вероятно, поскольку не требуется упорядоченная последовательность и не добавляются новые элементы, в вашем случае выгоднее использовать хэш-таблицу (std::unordered_map), у которой сложность поиска в среднем случае составляет O(1). Интерфейс такой же, как и у std::map. 

 

Так же увидел такой фрагмент кода:

 

image.png

 

1) Почему используется сишная функция strcmp() вместо std::string::operator==()?


if (_vecPartName[n] == pszName) { ... }

 

2) В данном примере не критично, но если вместо n будет итератор, то лучше использовать префиксный оператор инкремента, чтобы избежать лишнего копирования.

 

3) size_t n(0), ИМХО, довольно экзотический синтаксис инициализации, обычно используют запись size_t n = 0. Для простых типов обе записи идентичны.

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

https://github.com/PKO-Community-Sources/ClientSide-Sources/blob/bebbf1b7ea45de3ba56b137b4a4cc3e90a1e28d0/Engine/sdk/src/MPResManger.cpp#L1959


Работаем над портированием пиратии под все платформы (win, linux, android, macos, ios)

We are developing the tales of pirates to all platform (win, linux, android, macos, ios)

 

telegram: https://t.me/magicsea_online

Share this post


Link to post
Share on other sites
On 12/4/2022 at 3:47 PM, Kst said:

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

https://github.com/PKO-Community-Sources/ClientSide-Sources/blob/bebbf1b7ea45de3ba56b137b4a4cc3e90a1e28d0/Engine/sdk/src/MPResManger.cpp#L1959

У меня есть вопрос касательно активности данного репозитория: последний коммит был сделан 2 года назад. Думаю, отпишусь в теме по исходникам на форуме.


Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...