RecursiveRoar (02 May 2018 - 07:30) писал:
А в чем проблема, на стороне сервера открываешь асинхронный сокет и читаешь с него команды пользователей. Обновляешь мир. Отправляешь участки мира пользователям. Код для сокета даже писать не надо, он просто гуглится. Это реально 15 минут.
>отправляешь участки мира пользователям
Вот в этом проблема же. Конечно, открыть сокет - много ума не надо. А вот продумать архитектуру, как твой мир будет складываться в пакеты, и как потом эти пакеты на клиенте будут превращаться в картинку - это целая история. Так то тут у тебя целая эмуляция мира на клиенте должна быть, с учетом огромного количества мелочей. За 15 минут ты этого не напишешь.
RecursiveRoar (02 May 2018 - 07:30) писал:
Обзор я считал равным 13х13, так как он такой по дефолту в Byond. Для передачи исчерпывающей инфы нужно 1,5 байта на World_Id, 1,5 байта на TypeObj_Id, 2 байта на координаты, ну и допустим 3 байта на флаги и доп инфу. Итого 8 байт. Умножаем на частоту обновления и количество тайлов. 8*225*10=18000 байт/c. Теперь остальные объекты. Допустим те же 8 байт + 4 байта ссылок на структуры + 20 байт на доп инфу нужную для отрисовки. 32 байта. Допустим 70% пространства занято различными предметами которые видит пользователь и в среднем на тайле по 3 доступных для отрисовки предмета 225*0.7*3*10Гц*32байта = 151200 байт/c, итого 169200 байт/с или ~1.3 Мбит/c + ~0.2 Мбит/с(UDP) на пользователя. И естественно серверу не нужно отправлять ни спрайтов ни функций действий.
Обзор в Space Station 13 - 15х15. С учетом того, что тебе нужны еще как минимум спрайты, которые находятся за экраном, но чуть-чуть выглядывают (сингулярность какая-нибудь), то это будет минимум 17х17.
>TypeObj_Id
И чо ты собираешься делать с этим TypeObj_id? Наверное, сначала надо инфу переслать по этому объекту, а уже потом работать с TypeObj_id? А как ты пересылать собираешься их, по UDP? Так у тебя все потеряется - приехали к TCP уже. То есть уже даже по твоему замечательному плану тебе на каждого пользователя надо будет отдельно работать и с TCP, и с UDP.
>Допустим 70% пространства занято различными предметами которые видит пользователь и в среднем на тайле по 3 доступных для отрисовки предмета
Очень оптимистичное приближение.
Ну в любом случае, ты насчитал столько же, сколько и я, 1 Мбит/с на игрока минимум, даже больше, аж 1,5 Мбит/с.
RecursiveRoar (02 May 2018 - 07:30) писал:
Зачем на начальном этапе разработки 50 клиентов? На начальном этапе она должно хотя бы просто работать, чтобы было что показать. Это же инди, не надо торопиться получить релизную версию.
Угу, с такими планами тебе на КикСтартеры и Гринлайты - там таких вагоны. Пилят говно, продают людям и сваливают, потому что все с нуля переписывать надо.
Если уж делать, то с умом с самого начала. Какой смысл делать кривую демку, которую надо будет выкинуть и начинать писать все с нуля?
RecursiveRoar (02 May 2018 - 07:30) писал:
Фиксируешь изменения если они в пределах видимости игрока, потом отправляешь на клиент. Если игрок передвигался, отправляешь инфу на 15 тайлов. И ты серьёзно сравниваешь синхронизацию шутера(UDP) и 10 фпс рогалика(TCP)? Тут заметные проблемы с рассинхроном могут возникнуть лишь в боевке, и в Byond эта проблема не особо решена. Нет никакой надобности писать в инди проекте идеальный код. Небольшой рассинхрон, ну и ладно, его никто не заметит, а умение использовать его в боевке будут называть робустом.
Что-что, а сеть в Byond написана очень даже не плохо, не знаю о каком рассинхроне ты говоришь. Фиксируешь-отправляешь - звучит очень легко, пока за код не сядешь, а я это писал и знаю о чем говорю.
>Нет никакой надобности писать в инди проекте идеальный код. Небольшой рассинхрон, ну и ладно, его никто не заметит, а умение использовать его в боевке будут называть робустом.
Спасибо, уже насмотрелись на кучу говноигр, которые строились по такому принципу. Если делать ремейк SS13, то он должен быть лучше оригинала, а твои костыли тут никому не уперлись.
Короче ладно, я предлагаю тебе сесть и попробовать написать, раз все так просто. Если у тебя получится - круто, нет - узнаешь что-то новое, в любом случае это лучше, чем сидеть на диване и рассказывать про то, как все легко и делается за 15 минут.