TerraPath #11
Кратко о содержании сегодняшнего поста:
Примитивный интерфейс.
Обработчик пакетов.
Интерполяция движения.
Чат.
Обработка авторизации.
Фильтры пакетов.
Рубрика вопросов.
Вот мы и перешли в эру альфы.
Чтобы работать с сетевой частью, я сразу создал очень примитивный интерфейс:
Доводить его до ума буду позже. В планах добавить красивое лого, перерисовать кнопки и добавить задний фон.
А вот так выглядит окно сетевой части:
Текстовый поля можно редактировать как обычные формы в браузере и тд.
Ну то есть есть поддержка выделения текста, Ctrl+C, Ctrl+V и тд.
Дальше я занялся обработчиком пакетов:
Особенностью получилось, то что я могу передавать пакет обработчик, а он сам попадет в нужную функцию. Получается очень удобно и просто.
Достигается такая фишка за счёт генериков и лямбд.
Код становится чище и понятнее.
Интерполяция движения.
Как долго я закончил написания ядра сервера, я начал переносить логику игры на сервер, начал с движения персонажа, но оказалось не всё так просто.
На клиенте используется предсказание для игрока. Поэтому на большинство своих действий игрок видит сразу, без задержки, а вот остальные игроки нет.
Они двигались рывками и чтобы исправить это я стал интерполировать их положение с прошлого.
Как это работает? Когда от сервера приходит новая позиция для сущности, она смещается с текущий позиции на новую за 100мс.
Получается очень плавно движение, без рывков.
Также сразу решил сделать чат:
Следующим шагом стал система авторизации на сервере.
Я составил протокол передачи данных, и после его успешного завершения игрок появляется на сервере, а на клиенте пропадает плашка "Connecting..."
Это дает защиту от случайных коннектов, а также чтобы игрок не видел не загруженный мир.
Был добавлен Фильтр пакетов.
Сервер и клиент игнорирует сообщения кроме указанных, что предотвращает посылку данных без авторизации. Также в дальнейшем для защиты будет использоваться пароль на сервере. Поэтому читеры не смогут как либо влиять на сервер пока не авторизуется.
Само собой пароль будет передаваться в шифрованном виде.
Также подумываю о том чтобы добавить проверку игроков через стим.
А также по части сети:
Инициализация игрока.
Синхронизация игроков.
Установка тайлов и объектов.
Синхронизация анимации игрока.
Вот как-то так это выглядит:
А на этом всё, спасибо, что дочитали.
Также не пропустите прошлые посты:
https://pikabu.ru/profile/GooDCrafter
Ссылка на группу в вк(есть играбельная демка, но без сети, с сетью скоро будет):
https://vk.com/terrapath
А теперь рубрика вопросов:
1)Как вы считаете, стоит писать большие посты или средние.
И как вы оценивайте этот пост, длинный средний?
2)Я пока решаю куда публиковать игру, в целом то есть два варианта:
Это стим или же поднять собственный сайт.
С одной стороны я думаю про стим, но увы стим уже не приносит столько трафика новым играм.
Что думаете об этом?
3)Тут несколько людей продвигают идею опенсорса, и возникает такой вопрос, стали бы вы донатить на разработку данной игры тем самым делая её бесплатной?
4)Я тут решил отказать от стоковой музыки, и начать кооп с музыкантами, есть кого вы могли бы посоветовать? Сразу оговорюсь что платить много я не смогу, сам свожу тут концы с концами. Можно как вариант 2-3 трека за небольшую плату, а остальные после выхода игры.
Я мало верю что кто-то захочет просто работать со мной за идею, но вера это единственное что у меня есть.
5) Тоже самое и с художниками, само собой пиксельарт.
PS: Во накатил вопросов то :)
Спасибо всем кто ответит хотя бы на часть из них.




1)Как вы считаете, стоит писать большие посты или средние.
Средние.
И как вы оценивайте этот пост, длинный средний?
Средний.
2)Я пока решаю куда публиковать игру, в целом то есть два варианта:
На этап разработки - сделать на своем сайте публичную бету. Когда будет не стыдно - можно и в стим.
3)Тут несколько людей продвигают идею опенсорса, и возникает такой вопрос, стали бы вы донатить на разработку данной игры тем самым делая её бесплатной?
Я бы стал, если писать статьи с разбором и публикацией исходников.
Т.е. пишите мультиплеер - вначале реализовываете его в отдельном демо проекте. Только мультиплеер, без остального мусора. По этой теме написали статью с обзором. Опубликовали проект. Когда мультиплеер доведен до блеска - интегрировали его в основную игру. И взялись за новый демо-проект, скажем управление персонажем или AI.
Исходники основной игры можно и не публиковать, если доната будет мало. Но такие мелкие проектики конкретно заточенные под одну задачу - будут очень полезны.
Можно их даже в ассет-сторе выкладывать. В том числе платно. Заработать сможете больше чем на игре, если делать хорошо, а не публиковать копипасту.
Тот же мультиплеер, только с функцией автоматического поиска сервера в локальной сети, отлаженный и везде стабильно работающий - я бы купил, прям сейчас.
4)Я тут решил отказать от стоковой музыки, и начать кооп с музыкантами, есть кого вы могли бы посоветовать?
Я мало верю что кто-то захочет просто работать со мной за идею, но вера это единственное что у меня есть.
Люди, которые заходят работать за идею есть. Проблема в том, что их мало, и вероятность что вы их встретите пока что исчезающе мала. Если вы будете полезны сообществу - то ваша аудитория увеличиться и пропорционально увеличиться шанс найти музыканта (да и кого угодно).
Но вы сами критически гляньте на свой пост. Кому он может быть полезен?
Что это вообще? Этот текст не может никому помочь в своих проектах. И он не интересен как "дневник разработки". Он пока вообще "ни о чем". Зачем там этот кусок кода? Чтоб было что-ли?..
Если вы чего-то достигли в своей разработке - то это само по себе никому не интересно. Я вот сегодня выучил 20 неправильных глаголов. И что? Кому это интересно само по себе?
Вот если я напишу статью как я их учил, опубликую приложение для быстрого изучения слов - тогда будет интересно, потому что это позволит другим людям сэкономить время. Я как бы дарю им немного своего времени, и люди это ценят.
Напишите статью не о том чего вы достигли, а о том как другим этого достичь с наименьшими усилиями. Ну а по ходу и свою игру прорекламируете, где эти все плюшки уже есть.