Сохранен 32
https://2ch.hk/gd/res/704092.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Приветик анончики! Задумал покириллить создать

 Аноним OP 14/10/20 Срд 19:50:28 #1 №704092 
tumbl.png
eveonline.0.0.1489229783.jpg
Приветик анончики! Задумал покириллить создать игру. Суть такова - графика как в among ass экономика как в eve online/ то есть онлайн игра с экономикой войнами политикой и т д. Я задумался как сделать сервер для такой игры, чтобы он выдерживал тысячи игроков в одном месте. И вот что получилось, огромное квадродерево на всю карту. За каждый квадратик отвечает один сервер обрабатывающий все что внутри него. Чем больше игроков собралось в одном месте, тем больше там будет разбиение и тем больше будет серверных мощностей в том месте. В игре планируется убийства (из различного оружия) тут нужно продумать как игрок стоящий в одном квадранте будет стрелять в игрока в другом и как все это будет работать. Также планируется транспорт (тут я не знаю, возможно ли такое вообще)

Писать планирую либо на c++ либо на rust

Аноним 14/10/20 Срд 19:54:30 #2 №704094 
quadtree.png
От гуру мультиплеерных игр хотелось бы услышать как вообще такие штуки делать (и делаются ли они таким образом?) насколько я знаю в rust есть очень мощные библиотеки по работе с ECS системами тот же SPECS (вроде аналогичная штука есть и у c++)

узким ядром я вижу компонент, который будет как-то вычислять компоненты с квадрата и направлять их в нужный сервер. Сама идея на мой взгляд неплохая, но программная архитектура такой штуки у меня еще не сложилась в голове.
Аноним 14/10/20 Срд 20:04:28 #3 №704097 
непонятно чому зашла снова игрокам флеш-графика из 2005-2008 году
Аноним 14/10/20 Срд 20:10:43 #4 №704099 
>>704097
лично мне проще ее рисовать, супер крутую графику и 3ДЭ модели я не потяну. А тут просто, в целом приятно. Далее, все эти космо штучки, конечно, очень интересно, но слишком сложно вкатиться с нуля (как минимум придеться выучить отдельный суржик для этого) Я планировал сделать игру в сеттинге постапокалипсиса (ржавые банки, старые книги, которые нужно искать ради рецептов и навыков)
Аноним 14/10/20 Срд 20:26:20 #5 №704106 
1523108716150658595.jpg
>>704092 (OP)
>чтобы он выдерживал тысячи игроков в одном месте
А где ты возьмёшь тысячи игроков?
Аноним 14/10/20 Срд 23:00:16 #6 №704143 
>>704106

из интернета очевидно. По подписочной модели
Аноним 15/10/20 Чтв 01:47:03 #7 №704156 
>>704094
>узким ядром я вижу компонент, который будет как-то вычислять компоненты с квадрата и направлять их в нужный сервер.

Узкое место будет - это тысячи человек в одном месте в пределах видимости. Вот там заебёшься их обновления рассылать.
А нарезать пространство можно как угодно. И с акторами даже проще будет, чем колхозить что-то своё.
Аноним 15/10/20 Чтв 09:08:06 #8 №704182 
>>704092 (OP)
albion online
Аноним 15/10/20 Чтв 11:47:49 #9 №704200 
>>704156
Не совсем понял про в пределах видимости и рассылать обновления. Каждое обновление будет послано своему квадрату. Даже если игроки стоят рядом они могут стоять в разных квадрантах
>>704182
Заметно лагает при заходе в города (где 300 человек)
Аноним 15/10/20 Чтв 13:14:05 #10 №704203 
>>704200
>Даже если игроки стоят рядом они могут стоять в разных квадрантах

И в 5 метрах друг от друга не будут видеть соседей?
Аноним 15/10/20 Чтв 14:33:46 #11 №704212 
>>704092 (OP)
Если на плюсах будешь фигачить, скинешь ссылку на гит?
Аноним 15/10/20 Чтв 15:23:29 #12 №704214 
>>704203
Квадратики которые рядом, общаются между собой
>>704212
Да, скорее всего буду на них

Никак не пойму как спавнить игроков
Аноним 15/10/20 Чтв 16:15:17 #13 №704219 
>>704214
Ну начни с координат и чанков.
Возьми unit { id: uuid, x:float, y:float, inChunk: uuid (или ссылку, как хочешь) }, chunk { id: uuid, parent: chunk*, inner: Vector<chunk> }
Если в чанке units.count > maxUnitsOnChunk -> разделяй его в inner-ах и обновляй inChunk у всех юнитов внутри них на другие.
Юнитов кстати можно тоже в чанках хранить или в хеш-таблице.
Просто начни пилить и поймешь как лучше.
Аноним 15/10/20 Чтв 16:40:15 #14 №704223 
>>704214
>Квадратики которые рядом, общаются между собой

Вот это и будет лагать, пиздец как при большом количестве народу. Нарезка на чанки - это мелочь в сравнении с этой проблемой.
Аноним 15/10/20 Чтв 16:54:28 #15 №704228 
>>704219
да, сенкс, ты описал схему при которой у нас есть просто одна карта с квадродеревом и один сервер, но типо каждый чанк это один сервер (процесс на ядро)
в любом случае надо начинать пилить.
>>704223
почему это будет лагать? смотри мы делим квадродерево если в чанке игроков больше чем какая константа, допустим 32. получается кроме своих 32 игроков, чанку нужно просто отрисовать 32*8 игроков котоыре находятся вокруг, не думаю, что это такая непосильная задача. Ведь мы не обсчитываем их физику, мы просто отрисовываем спрайтики. Типо, давно, нарисовать 256 динамических спрайтов стало проблемой?
Аноним 15/10/20 Чтв 17:07:20 #16 №704231 
>>704228
>почему это будет лагать?

Потому что проблема не отрисовке, а в пересчёте перемещений и передаче данных всем 256 клиентам с нормальным временем отклика. Поэтому ева и включает сло-мо на больших толпах.
Аноним 15/10/20 Чтв 17:35:56 #17 №704238 
>>704231
серверы общаются между собой. Сервер1 говорит Серверу2 - чувак с id = 10 выстрелил по такой то траектории
Сервер2 о спасибо друг начинаю отрисовку и просчет траектории

То есть сервер не посылает всем игрокам вокруг информацию, только своим 32, но серверы соседи постоянно рядом
Аноним 15/10/20 Чтв 17:39:18 #18 №704240 
>>704092 (OP)
не трать время у тебя ничего не выйдет
Аноним 16/10/20 Птн 12:45:40 #19 №704443 
>>704240
Выйдет
Аноним 19/10/20 Пнд 04:10:59 #20 №704901 
Он сделал даунскую версию амонга.
https://youtu.be/N-h5yy4kC5M
Аноним 19/10/20 Пнд 16:46:07 #21 №705034 
>>704901
молодец но речь в треде о технологиях массового мультиплеера
Аноним 19/10/20 Пнд 18:19:07 #22 №705047 
>>704092 (OP)
Есть вроде как готовое сетевое решение под это дело
https://improbable.io/multiplayer-networking

Если ты хочешь именно игру создавать, а не просто велосипеды писать и в конце обосраться.
Аноним 19/10/20 Пнд 18:49:10 #23 №705060 
3e4ded6-09-client-workers.png
>>705047
к сожалению это готовое решение стоит дохуя денег

Только, что посомтреть документацию и там РОВНО ТО ЧТО Я ПИСАЛ

мир разделен на шарды и каждый юнит видит все что вокруг него.

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

Но с виду все пока ровно так как я думал. вот срань снова все идеи в мире уже имеют какое-то вополощение правда у меня квадродерево будет, вроде должно быть чуть более быстрее чем просто разделение grid
Аноним 20/10/20 Втр 06:47:54 #24 №705162 
Screenshot3.jpg
>>705060
14k $, ебать..
Ты пилить то сервак уже начал? Неделя прошла..
Аноним 20/10/20 Втр 13:10:20 #25 №705242 
>>705162
Я пока что пишу план, что и где создать и общую архитектуру представляю себе
Аноним 06/11/20 Птн 16:35:10 #26 №708050 
>>704156
>Узкое место будет - это тысячи человек в одном месте в пределах видимости
В 2D это очень легко решить. Сделать игроков непрозрачными друг для друга, чтобы нельзя было одновременно в одном месте стоять. Тогда на одном экране будет умещаться ровно столько игроков, сколько спрайтов можно уместить на экране, если спрайты большие - то игроков на экране всегда мало. Кроме того, я не вижу ни одной причины, чтобы тысяча игроков собиралась в одном и том же месте - это просто неразумное скопление, не имеющее под собой никакой цели, кроме как пофлудить в чятик (ева отдельная история, мы ведь рассматриваем 2D-игру).
Аноним 07/11/20 Суб 15:33:26 #27 №708202 
Сделать то можно хотя брать раст для прода — самоубийство, но зачем? Кому это интересно с точки зрения игрока?
Вот тысячи человек в одном месте В ТРИ-ДЕ
https://www.youtube.com/watch?v=HjWhlVD-tHI
Исходники открыты аж с 2005 года https://github.com/mangoszero/server
sageАноним 07/11/20 Суб 15:39:01 #28 №708203 
>>704092 (OP)
борда 18+, зарепортил.
Аноним 09/11/20 Пнд 00:42:33 #29 №708494 
>>708202
>раст для прода — самоубийство
Почему?
Аноним 11/11/20 Срд 23:50:28 #30 №709182 
>>708050
огромная битва. В одном месте имелось в виду в пределах выстрела пушки.
идея про непрозрачность отличная (я изначально такими и предполагал, а кто то делает спрайты прозрачными?)

весь вопрос в том чтобы все работало быстро и надежно.

>>708202
Я считаю, что это будет интересно и как раз именно из за огромного населенного мира.
знаешь как сделать? расскажи больше. За ссылку спасибо буду изучать архитектуру.

моя цель создать именно бесшовный огромный мир для тысяч игроков одновременно.

Кстати говоря, я тут написал на gamedev stackexchange и получил ответ (теперь думаю над ним)

https://gamedev.stackexchange.com/questions/186796/architecture-for-scaling-a-large-2d-mmorpg-world-vs-player-load
Аноним 13/11/20 Птн 23:34:38 #31 №709592 
>>704092 (OP)
> Писать планирую либо на c++ либо на rust
Не надо, ты обосрешься. Возьми robust toolbox, написанный под SS14 и допиливай под свои нужды.
Аноним 14/11/20 Суб 15:35:53 #32 №709678 
>>709592
почему ты не прочитал дальше чем слова - among ass?
comments powered by Disqus