Объясните чайнику...

НачинающийМиллиардер

Путник
Пользователь
Сообщения
3
Розыгрыши
0
Репутация
0
Реакции
0
Баллы
4
Хроники
  1. The 2nd Throne: Gracia
  2. The 2nd Throne: Freya
  3. Chaotic Throne: High Five
  4. Goddess of Destruction Awakening
Исходники
Отсутствуют
Сборка
Сборки нет
Доброго времени суток, господа! Я недавно начал заниматься изучением программирования (пока изучаю язык python), но как-то желание без конкретной цели начало угасать, и я решил ради мотивации попробовать создать сервер своей мечты (просто для себя) с нуля.
Есть пару глупых(возможно) вопросов:
1) Что собой представляет сборка сервера?
2) Почему ее покупают, а не пробуют создать сами?
3) Возможно ли вообще создать сборку самостоятельно?
Я вот не понимаю, сборка сервера это папка с файлами на 30мб? Что тогда собой представляет клиент игры? Разве все основные концепции сервера не вшиты в сам клиент. Как вообще взаимодействуют сборка с клиентом?
Прошу прощения, если вопросы очень тупые и банальные)
 
Доброго времени суток, господа! Я недавно начал заниматься изучением программирования (пока изучаю язык python), но как-то желание без конкретной цели начало угасать, и я решил ради мотивации попробовать создать сервер своей мечты (просто для себя) с нуля.
Есть пару глупых(возможно) вопросов:
1) Что собой представляет сборка сервера?
2) Почему ее покупают, а не пробуют создать сами?
3) Возможно ли вообще создать сборку самостоятельно?
Я вот не понимаю, сборка сервера это папка с файлами на 30мб? Что тогда собой представляет клиент игры? Разве все основные концепции сервера не вшиты в сам клиент. Как вообще взаимодействуют сборка с клиентом?
Прошу прощения, если вопросы очень тупые и банальные)
Упростил по максимуму.

1) Сердце игры, всё расчеты, действия, и т.п. происходят на стороне сервера (сборки). Клиент игры просто отправляет серверу пакеты (маленькие кусочки информации), принимает от сервера пакеты и на основе этого отображает происходящее в самой игре.

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

Делятся на 2 типа, PTS, официальные тестовые серверы, которые сливались/воровались у разработчиков, и JAVA - эмуляторы, которые уступают по качеству, имеют более слабую реализацию игровых механик, но менее ресурсозатратные и более открытые для изменений.

2) Тяжко, долго, дорого. Игровой сервер это сложная и большая система, объем работ при написании с нуля просто космический. Уже более 15 лет люди всё еще создают свои сборки. Купить исходный код над которым уже работали и дополнять своими фиксами гораздо выгодней чем писать всё с нуля.

3) Возможно. Но смотрите 2 пункт.
 
Упростил по максимуму.

1) Сердце игры, всё расчеты, действия, и т.п. происходят на стороне сервера (сборки). Клиент игры просто отправляет серверу пакеты (маленькие кусочки информации), принимает от сервера пакеты и на основе этого отображает происходящее в самой игре.

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

Делятся на 2 типа, PTS, официальные тестовые серверы, которые сливались/воровались у разработчиков, и JAVA - эмуляторы, которые уступают по качеству, имеют более слабую реализацию игровых механик, но менее ресурсозатратные и более открытые для изменений.

2) Тяжко, долго, дорого. Игровой сервер это сложная и большая система, объем работ при написании с нуля просто космический. Уже более 15 лет люди всё еще создают свои сборки. Купить исходный код над которым уже работали и дополнять своими фиксами гораздо выгодней чем писать всё с нуля.

3) Возможно. Но смотрите 2 пункт.
Большое спасибо за ответ! Стало более понятно. А есть ли где-нибудь гайд по разбору файлов в сборке (по типу какая папка что из себя представляет и за что отвечает?
И еще интересует геодата, видел что продают геодату отдельно от сборки, это получается если не купить геодату, то персонаж через стены бегать будет?
 
Создание сервера с нуля - это очень плохой способ изучать программирование. Большая часть мира разработки, это читать код. Лучше начинать с написания маленьких программ дающих результат и сам кайфанешь и мотивация пропадать не будет. И конечно же читать кучу чужого (хорошего) кода. В плане разработки серверов - лучше брать готовый сервер и начинать допиливать к нему свои компоненты, править баги.

1. Если говорить про сборку в контексте вопроса, то конечно же речь идет про java эмуляцию сервера. Эмулировать сервер, по причинам недоступности кода PTS серверов, куда проще. Умельцы зареверсили протокол межклиентсерверного взаимодействия и по кусочкам собирали рабочий сервер. Там где были удачные архитектурные решения - выжили и продолжают развиваться. Java эмулятор сервера обычно состоит из game server'a, login server'a и базы данных к ним. Так же можно встретить упоминание datapack. Это конфигурации, файлы описаний всех компонентов игры, которые подгружаются в базу и в память сервера при старте.

2. Цены куда дешевле чем оплата человеко-часов написания севера с нуля. На форуме можно найти попытки написать сервера на go, nodejs, но никто, кажется, дальше перемещения не ушел.

3. Возможно, но нужно обладать приличным опытом, чтобы не делать работу в стол. Знать подходы к разработке, паттерны проектирования, огромный стек знаний компьютер сайнса.

В сравнении с офлайн РПГ игрой - ММО работают по другому, им необходим посредник, чтобы позволить игрокам взаимодействовать друг с другом(каждый клиент отдает информацию серверу - сервер отдает клиентам только необходимую им информацию). В таком подходе логичным является вынести все логические моменты в общее место к которому будут обращаться все клиенты и иметь общую информацию. Таким образом в контексте lineage 2 сервер обрабатывает информацию о квестах, предметах, скилах, перемещениях игроков, их взаимодействиях.
Клиент игры общается сервером используя определенный протокол(формат), пример как это выглядит можно посмотреть тут: . Клиент и сервер отправляют друг другу запросы и получают ответы на них. Клиент показывает игроку то, что ему сказал показать сервер.

Все сложные слова советую сразу гуглить и разбираться

А есть ли где-нибудь гайд по разбору файлов в сборке
Каждая сборка может иметь свою уникальную структуру. Они плюс-минус похожи из-за общих подходов архитектуре работы. Лучше найти какую-то и спрашивать конкретно, в целом все названия будут говорить сами за себя.
Описания файлов клиента есть тут на форуме(и вообще лучше изучить все темы)

И еще интересует геодата, видел что продают геодату отдельно от сборки, это получается если не купить геодату, то персонаж через стены бегать будет?

Геодата представляет собой некое описание объектов столкновения. За перемещение персонажа отвечает сервер, но за его отображение отвечает клиент. Например, без геодаты, клиент будет показывать, что вы бежите в стену, при этом сервер будет считать, что все ок и он доводит персонажа до места куда ему сказали. Релог-> и оп при перезаходе вы прошли через стену. В сервере есть часть отвечающая за перемещение(чаще всего называют геодвижок), на основе файлов геодаты сервер просчитывает возможные и невозможные перемещения игроков/объектов, дает ответ на вопрос видит ли один игрок другого и тому подобное
В чем-то могу быть не прав, говорю со своей колокольни
 
Геодата представляет собой некое описание объектов столкновения. За перемещение персонажа отвечает сервер, но за его отображение отвечает клиент. Например, без геодаты, клиент будет показывать, что вы бежите в стену, при этом сервер будет считать, что все ок и он доводит персонажа до места куда ему сказали. Релог-> и оп при перезаходе вы прошли через стену. В сервере есть часть отвечающая за перемещение(чаще всего называют геодвижок), на основе файлов геодаты сервер просчитывает возможные и невозможные перемещения игроков/объектов, дает ответ на вопрос видит ли один игрок другого и тому подобное
В чем-то могу быть не прав, говорю со своей колокольни
Большое спасибо! В общем буду шерстить форум.
Я так понял, чтобы корректировать сборку, нужно владеть java scriptом? Питон вообще используется в л2?
 
Я так понял, чтобы корректировать сборку, нужно владеть java scriptом? Питон вообще используется в л2?
Нет, Java и JavaScript разные языки программирования. Для Java эмуляторов нужно владеть соответственно Java. Питон нет, есть сборки, которые подключают его как скриптовый язык для написания ивентов
 
Питон нет, есть сборки, которые подключают его как скриптовый язык для написания ивентов
Притом вобще непонятен смысл этого - почему просто не писать на яве все, вместо подключения питона для написания части скриптов...
 
Притом вобще непонятен смысл этого - почему просто не писать на яве все, вместо подключения питона для написания части скриптов...
Цель видимо упростить порог входа и делегировать какую-то часть на других разработчиков. В свое время прикручивал к проекту(не л2) lua и цель оправдывала средства.
Если бы мне нужно было писать сценарии-катсцены для l2, я наверное к чему-то такому же пришел и отдал бы "геймдизайнерам"
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Кратко опишу о создании сервера с 0
1654038912076.png :Hahaha:
Сейчас кто-то ворвётся про питона с хлебушком :D
 
Последнее редактирование:
Притом вобще непонятен смысл этого - почему просто не писать на яве все, вместо подключения питона для написания части скриптов...
ну, через "пайтон" нейронку рубят для фантомов)
 
ну, через "пайтон" нейронку рубят для фантомов)
а это хоть где то есть? потому что я слышал только разговоры о подобных разработках, но в работе так ничего и не лицезрел, кроме тупых ботов на условных if-else
 

Похожие темы

Назад
Сверху Снизу