Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Игровой клиент (https://forum.zone-game.info/forumdisplay.php?f=54)
-   -   Пишу сервер с 0 на c# (https://forum.zone-game.info/showthread.php?t=40832)

krisadr 04.06.2016 05:18

Пишу сервер с 0 на c#
 
Дальнейшее развитие проекта будет описываться на данном форуме.

И так поехали.
Немного лирики, можно не читать.:
Свернуть ↑Развернуть ↓

Дальше последует несколько вопросов, я в принципе и сам их могу решить но хочется узнать что другие об этом думают.
Сериализация вместо Mysql:
Свернуть ↑Развернуть ↓

Модель передвижения и PathFinding с Геодатой:
Свернуть ↑Развернуть ↓


Про экономику:
Свернуть ↑Развернуть ↓


Взаимодействие игроков:
Свернуть ↑Развернуть ↓


Оживление Неписей:
Свернуть ↑Развернуть ↓


Про классы:
Свернуть ↑Развернуть ↓


ПВЕ:
Свернуть ↑Развернуть ↓


Дроп:
Свернуть ↑Развернуть ↓


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

PS за ранее прошу прощение за местами не грамотно составленные реч обороты и тп. Честно говоря устал строчить)
И да я в данной теме не ищу ни спонсоров ни сотрудников.

HiredKiller 04.06.2016 08:03

Re: Пишу сервер с 0 на c#
 
проект умрет на стадии "идея"
слишком много работы для 1 человека
только на один "сервер с нуля" уйдет больше года (написание\отладка\тесты)

Hack 04.06.2016 08:15

Re: Пишу сервер с 0 на c#
 
Цитата:

Как считаете, ведь по идеи (и по тестам) сохранение\восстановление состояний объектов в бинарный файл в десятки раз быстрее нежели коннект к мускулу и SELECT нужных параметров для дальнейшего восстановления объекта. Так может все таки использовать сериализацию?
Зачем? У кого-то сейчас есть проблемы с производительностью ла2 серверов? Стоит ли эта "оптимизация" того геморроя, который ты получишь в итоге? Очевидно нет.

Цитата:

Потом эту дистанцию делим на кусочки, с учетом, скорости персонажа, чтобы один кусочек был равен расстоянию пройденному за 200 мс (чисто на абум - может такая точность и не нужно но пока пускай будет так) для того чтобы сервер каждые 200 мс знал где находится персонаж.
А ValidatePosition уже не в моде?:(

Завязывай страдать фигней.

kpNemo 04.06.2016 08:38

Re: Пишу сервер с 0 на c#
 
Вставлю свои 5 копеек.
Сериализация на самом деле не такая уж и быстрая операция(а вдруг структура классов изменится?). Потом, как время от времени хотя бы сохранять данные? И не дай бог случайно что случится с сериализованным файлом, его уже не десериализовать, а БД даже частично битую можно потрудиться, да восстановить. Может и не использовать БД настолько агрессивно, как её используют сервера, а заюзать ентити фреймворк + фаербёрд(говорят новая версия чуть ли не в 5 раз быстрее предыдущей), сам ентити позволит без особого труда не описывая каждый апдейт, инсерт и ремув делать с базой то, что вам надо на ходу. Причём делать это всё можно в определённые промежутки времени(раз в 5-30 мин, к примеру), а сами вычисления делать и сохранять в оперативную память(линки,это во много-много раз быстрее работы с БД и вообще с винчестером). Грамотно построенные выборки линков работают просто моментально + дата контекст облегчит выборку и апдейт значений в готовые классы, да и самим ентити можно сгенерить классы не описывая ничего ручками.

А вообще да, работы много. На одном энтузиазме много не наделаешь. Нужна команда, заинтересованная, а таких желающих работать за идею вряд ли сыщешь.

luslighter 04.06.2016 10:31

Re: Пишу сервер с 0 на c#
 
Цитата:

Сообщение от kpNemo (Сообщение 413101)
Вставлю свои 5 копеек.
Сериализация на самом деле не такая уж и быстрая операция(а вдруг структура классов изменится?). Потом, как время от времени хотя бы сохранять данные? И не дай бог случайно что случится с сериализованным файлом, его уже не десериализовать, а БД даже частично битую можно потрудиться, да восстановить. Может и не использовать БД настолько агрессивно, как её используют сервера, а заюзать ентити фреймворк + фаербёрд(говорят новая версия чуть ли не в 5 раз быстрее предыдущей), сам ентити позволит без особого труда не описывая каждый апдейт, инсерт и ремув делать с базой то, что вам надо на ходу. Причём делать это всё можно в определённые промежутки времени(раз в 5-30 мин, к примеру), а сами вычисления делать и сохранять в оперативную память(линки,это во много-много раз быстрее работы с БД и вообще с винчестером). Грамотно построенные выборки линков работают просто моментально + дата контекст облегчит выборку и апдейт значений в готовые классы, да и самим ентити можно сгенерить классы не описывая ничего ручками.

А вообще да, работы много. На одном энтузиазме много не наделаешь. Нужна команда, заинтересованная, а таких желающих работать за идею вряд ли сыщешь.

Хуже другое ! люди хотят сделать велосипед, когда рабочий OFF сервер, имеется в свободном доступе, оттуда тупо можно вырезать основные методы и сделать симбиоз с тем же C# или Явой, тем самым работы будет в разы меньше.
Проблема правда тут в другом, мало людей которые имеют необходимые знания и время чтобы такое пилить, но результат от такой деятельности в разы будет превосходить все JAVA подобные форки и экстендеры типа ADvExt,

FaintSmile 04.06.2016 17:30

Re: Пишу сервер с 0 на c#
 
Похоже, что кто-то сильно угорел по SAO и Login Horizon, но l2 его не отпускает при этом :D

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

Но мой совет - в таких делах всегда нужен не столько тот, кто умеет на java программировать, сколько тот, кто умеет творить чудеса со старым клиентом линейки.

krisadr 04.06.2016 17:39

Re: Пишу сервер с 0 на c#
 
Цитата:

Сообщение от HiredKiller (Сообщение 413099)
проект умрет на стадии "идея"
слишком много работы для 1 человека
только на один "сервер с нуля" уйдет больше года (написание\отладка\тесты)

Возможно вы правы, я прекрасно понимаю объем работ, и то что меня может не хватить.

Цитата:

Сообщение от Hack (Сообщение 413100)
Зачем? У кого-то сейчас есть проблемы с производительностью ла2 серверов? Стоит ли эта "оптимизация" того геморроя, который ты получишь в итоге? Очевидно нет.


А ValidatePosition уже не в моде?:(

Завязывай страдать фигней.

а ValidatePosition нужно только для того, чтобы понимать насколько далеко клиентские координаты от серверных... к тому же присутствует задача - знать как можно более точные координаты объекта... и боюсь выжидать 1200 мс для уточнее - слишком долго... опять же это лично мое мнение, и мне нужно чтобы сервер знал координаты каждые 200 мс движения а не 1200...

Цитата:

Сообщение от luslighter (Сообщение 413103)
Хуже другое ! люди хотят сделать велосипед, когда рабочий OFF сервер, имеется в свободном доступе, оттуда тупо можно вырезать основные методы и сделать симбиоз с тем же C# или Явой, тем самым работы будет в разы меньше.
Проблема правда тут в другом, мало людей которые имеют необходимые знания и время чтобы такое пилить, но результат от такой деятельности в разы будет превосходить все JAVA подобные форки и экстендеры типа ADvExt,

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

Zubastic 04.06.2016 17:43

Re: Пишу сервер с 0 на c#
 
Многие пытались делать с нуля...пытались. Все-таки создавать архитектуру с нуля не каждый сможет, далеко не каждый.

krisadr 04.06.2016 17:56

Re: Пишу сервер с 0 на c#
 
Цитата:

Сообщение от Zubastic (Сообщение 413115)
Многие пытались делать с нуля...пытались. Все-таки создавать архитектуру с нуля не каждый сможет, далеко не каждый.

если быть честным, я уже пытался сделать нечто подобное 2 раза... все заканчивалось на добавление реализации скиллов... но потом видя ту структуру которую я наляпал - меня "бомбило" и я забивал.... но от чувства что я все такие должен довести до конца не как не мог избавится... В итоге обрисовал общий подход... пока что я игровую логику я пишу так: (это не касается обработки соединений, геодаты и прочих технических функций... только лишь игровая механика.)

Классы объектов(model) - в них описание того или иного объекта (только лишь переменные и аналоги геттеров и сеттеров.)
Контроллеры - статические классы. для обработки взаимодействия между отдельными объектами или же между объектом и так сказать "физикой".
Например транзакция предметов - обрабатывается в контроллере.
Передвижение тоже обрабатывается в контроллере.
Менеджеры - статические классы. для "оживления" объектов, и для обработки их логики и действий. (все что связано с жизнью объектов обрабатывается в менеджерах)
Ну и классы - контейнеры - собственно все что необходимо из вне храниться тут...

В принципе стараюсь придерживаться этого.

Zubastic 04.06.2016 19:05

Re: Пишу сервер с 0 на c#
 
А третий раз будет иначе? Одному человеку нужно иметь железные яйца, чтобы пилить все это соло ибо в противном случае тотальный зашквар.


Текущее время: 12:35. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot