Пишу сервер с 0 на c#
Дальнейшее развитие проекта будет описываться на данном форуме.
И так поехали. Немного лирики, можно не читать.:Развернуть ↓Дальше последует несколько вопросов, я в принципе и сам их могу решить но хочется узнать что другие об этом думают. Сериализация вместо Mysql:Развернуть ↓Модель передвижения и PathFinding с Геодатой:Развернуть ↓Про экономику:Развернуть ↓Взаимодействие игроков:Развернуть ↓Оживление Неписей:Развернуть ↓Про классы:Развернуть ↓ПВЕ:Развернуть ↓Дроп:Развернуть ↓Собственно думаю пока хватит рассказывать, это еще далеко не все что я надумал, но хотелось бы узнать ваше мнение что вы обо всем этом думаете )) Почувствовали ли вы в этом соль или идея только лишь мне одному кажется перспективной... PS за ранее прошу прощение за местами не грамотно составленные реч обороты и тп. Честно говоря устал строчить) И да я в данной теме не ищу ни спонсоров ни сотрудников. |
Re: Пишу сервер с 0 на c#
проект умрет на стадии "идея"
слишком много работы для 1 человека только на один "сервер с нуля" уйдет больше года (написание\отладка\тесты) |
Re: Пишу сервер с 0 на c#
Цитата:
Цитата:
Завязывай страдать фигней. |
Re: Пишу сервер с 0 на c#
Вставлю свои 5 копеек.
Сериализация на самом деле не такая уж и быстрая операция(а вдруг структура классов изменится?). Потом, как время от времени хотя бы сохранять данные? И не дай бог случайно что случится с сериализованным файлом, его уже не десериализовать, а БД даже частично битую можно потрудиться, да восстановить. Может и не использовать БД настолько агрессивно, как её используют сервера, а заюзать ентити фреймворк + фаербёрд(говорят новая версия чуть ли не в 5 раз быстрее предыдущей), сам ентити позволит без особого труда не описывая каждый апдейт, инсерт и ремув делать с базой то, что вам надо на ходу. Причём делать это всё можно в определённые промежутки времени(раз в 5-30 мин, к примеру), а сами вычисления делать и сохранять в оперативную память(линки,это во много-много раз быстрее работы с БД и вообще с винчестером). Грамотно построенные выборки линков работают просто моментально + дата контекст облегчит выборку и апдейт значений в готовые классы, да и самим ентити можно сгенерить классы не описывая ничего ручками. А вообще да, работы много. На одном энтузиазме много не наделаешь. Нужна команда, заинтересованная, а таких желающих работать за идею вряд ли сыщешь. |
Re: Пишу сервер с 0 на c#
Цитата:
Проблема правда тут в другом, мало людей которые имеют необходимые знания и время чтобы такое пилить, но результат от такой деятельности в разы будет превосходить все JAVA подобные форки и экстендеры типа ADvExt, |
Re: Пишу сервер с 0 на c#
Похоже, что кто-то сильно угорел по SAO и Login Horizon, но l2 его не отпускает при этом :D
По теме же могу сказать, что делать сервер с нуля - нулем всё и поделится. Лучше взять что-то работающее и уже менять на своё усмотрение. Там и людей можно найти в команду. Мне бы, например, было бы интересно поучаствовать в чем-то таком, даже за бесплатно, ради хобби. Так что может и найдешь людей. Но мой совет - в таких делах всегда нужен не столько тот, кто умеет на java программировать, сколько тот, кто умеет творить чудеса со старым клиентом линейки. |
Re: Пишу сервер с 0 на c#
Цитата:
Цитата:
Цитата:
|
Re: Пишу сервер с 0 на c#
Многие пытались делать с нуля...пытались. Все-таки создавать архитектуру с нуля не каждый сможет, далеко не каждый.
|
Re: Пишу сервер с 0 на c#
Цитата:
Классы объектов(model) - в них описание того или иного объекта (только лишь переменные и аналоги геттеров и сеттеров.) Контроллеры - статические классы. для обработки взаимодействия между отдельными объектами или же между объектом и так сказать "физикой". Например транзакция предметов - обрабатывается в контроллере. Передвижение тоже обрабатывается в контроллере. Менеджеры - статические классы. для "оживления" объектов, и для обработки их логики и действий. (все что связано с жизнью объектов обрабатывается в менеджерах) Ну и классы - контейнеры - собственно все что необходимо из вне храниться тут... В принципе стараюсь придерживаться этого. |
Re: Пишу сервер с 0 на c#
А третий раз будет иначе? Одному человеку нужно иметь железные яйца, чтобы пилить все это соло ибо в противном случае тотальный зашквар.
|
Re: Пишу сервер с 0 на c#
Цитата:
Но сетевой движок в один поток на селекторе и nio... давайте почитаем про проблемму 10к соединений и какие подходы с ним справляются... да и вообще сервер в один поток - это перебор сокетов в цикле что на мой все таки взгляд является не правильным подходом... да такой сервер может выдержать большое кол-во подключений, но время отклика увеличивается причем на много... а у фреймворка есть такая мощная вещь как асинхронные операции (оптимизированный пулл потоков) с помощью которого можно справится с 10000 соединениями... Добавлено через 1 минуту Цитата:
|
Re: Пишу сервер с 0 на c#
Цитата:
Цитата:
В то время, когда это все писалось, еще не было NIO2.0 (async network), был выбор: писать на cpp для каждой платформы свою библиотеку (poll/epoll для линуксов и WSA для вин; про бздю вообще молчу), которую потом еще придется поддерживать, или же писать все на первом NIO. До выхода J7 (в котором появился NIO2.0), особого смысла от нескольких RW Selector-воркеров не было, т.к. нативный поток полинга оставался одним. С вводом NIO2.0 JVM научилась их масштабировать (даже если не использовать async), поэтому, именно, после релиза J7, имело смысл что-то и как-то делать, но не раньше. Цитата:
В общем и грубо говоря: они предназначены для веб-серверов, но уж никак не для гейм лоад сети. |
Re: Пишу сервер с 0 на c#
Цитата:
Из вики:Развернуть ↓можно сказать что большинство решений опирается именно на асинхронную обработку соединений... я честно говоря не знаю реализации пула потоков во фреймверке от мс, но все таки думаю что там не дураки сидят, и сделали все максимально оптимально, насколько это возможно... изначально в пуле для приложения на нет выдается 1023 потока... добавить еще пару тысяч и думаю все попрет как по маслу xDDD разумеется все это будет тестироваться. Добавлено через 2 минуты Цитата:
|
Re: Пишу сервер с 0 на c#
Цитата:
Суждение по nginx:Развернуть ↓ |
Re: Пишу сервер с 0 на c#
Цитата:
|
Re: Пишу сервер с 0 на c#
Цитата:
Вот наконец то закончил с реализацией криптера-декриптера... приведу примеры Stopwatch. Так вот в сервере на шарпе с асинхронным чтением\записью с момента получение пакета, до момента реакции на него проходит среднем 300к наносек (дешифровка пакетов включена в тест) (sw.ElapsedTicks * ((1000L * 1000L * 1000L) / Stopwatch.Frequency), если не считать первый запуск пакет ридера(некешируемый). В то время как на selector в java тратилось порядка 1000к наносек (по крайней мере на моем железе.) Получается чисто теоретически, чтобы одновременно обработать 5к подключений на у c# займет 1,5 сек. у selector'a на всех l2j - 5 сек. Нельзя конечно слепо верить данным тестом, ведь все познается только в реальных условиях, но все же это придает мне оптимизма к развитию проекта на шарпе :redlol: да забыл добавить тесты проводились на DEBUG, а с релизной оптимизацией все будет летать еще быстрее) |
Re: Пишу сервер с 0 на c#
Цитата:
Такие разговоры навевают на меня воспоминания о том, как кое-кто делал L2 на UE3. Добавлю немного пессимизма - подумайте о том, что Вам нужно будет написать не только ядро сервера, но и все эффекты скиллов, AI мобов и квесты туда же. |
Re: Пишу сервер с 0 на c#
Цитата:
Честно говоря меня не сколько логика скиллов или АИ мобов пугает, сколько реализация геодаты, и поиска пути... в геодате я точно поплыву потому что там тупо байты, тут я не силен, что далеко ходить - для того чтобы понять как шифруется\дешифруется трафик и реализовать, у меня ушло часов 5 почти непрерывного шаманства... вроде все сделал как нужно и на тебе при дешифровке чексумма не сходилась... оказывается я с самого начала забыл про обратную последовательность байтов в трафике l2... пришлось переделывать. Вообщем пока что побегаем без геодаты и поиска пути... у меня уже дикие мысли возникают о ручной реализации геодаты и системы вейпоинтов xDD, а может мне просто нужно пойти поспать и завтра придумаю более оптимальный вариант. |
Re: Пишу сервер с 0 на c#
Где 2009 , где 2016. Линейка умирает не по дням а по часам. Нет той аудитории, которая была даже в 2013.
|
Re: Пишу сервер с 0 на c#
krisadr, https://github.com/Elfocrash/L2dotNET - тут ребята тоже пишут сервер л2 с нуля на шарпе, может будет интересно глянуть.
PS тему не читал, но осуждаю за шарп, а за предоставление результата бенчмарков без кода самих бенчмарков вообще тихо ненавижу. |
Re: Пишу сервер с 0 на c#
Цитата:
Сейчас если кто и остался,так это люди с 2005-2010г~ основная масса.. |
Re: Пишу сервер с 0 на c#
Цитата:
|
Re: Пишу сервер с 0 на c#
Цитата:
|
Re: Пишу сервер с 0 на c#
до тех пор, пока NCsoft будет работать над проектом, он не умрет, и всегда будет приток новых, возврат старых. Ибо реальной альтернативы нет... есть только l2 и wow. wow - пве, l2 - пвп. А все остальное вроде archeage, pw и прочего это простите, "суход*очка". Имхо
|
Re: Пишу сервер с 0 на c#
Цитата:
|
Re: Пишу сервер с 0 на c#
Цитата:
(:Развернуть ↓ |
Re: Пишу сервер с 0 на c#
С 2013г заметен реальный отток игроков. Там где раньше было 800 тел сейчас 400-500, значительная часть которых боты. Личные наблюдения
|
Re: Пишу сервер с 0 на c#
Цитата:
Добавлено через 4 минуты Цитата:
|
Re: Пишу сервер с 0 на c#
Кому то достаточно а кто то взял платину 2 и ему надоело :D
|
Re: Пишу сервер с 0 на c#
Цитата:
и всё там правда кроме "лайнедж-2 умер" а теперь по теме: економика весьма интересная штучка. в обычном л2 деньги "адена" неимеют никакой ценности но как сделать их ценными не так просто придумать ну я открыл пивное заведение в л2 чтоб хоть где-то ети деньги спустить можно было бы |
Re: Пишу сервер с 0 на c#
Цитата:
|
Re: Пишу сервер с 0 на c#
На вкус и цвет... Это вообще уже холивар... Я лично в доту не могу - воротит.
Добавлено через 6 минут Вообщем только закончил с хостингом, далее вся проделанная работа, да и вообще все что с этим проектом связано будет выкладываться тут, не реклама.. Данный тред буду использовать при возникновении серьезных вопросов. Дабы не разводить флуд |
Re: Пишу сервер с 0 на c#
Причем здесь игровой клиента - непонятно ?(Ты же не движок пишешь).
Да и как показывает практика - особых отличий от Явы C# не имеет, ребята на Maxcheaters пилят на Dotnet C# проект, та же самая ява только в "профиль". |
Re: Пишу сервер с 0 на c#
Цитата:
а так вот еще какой то сурс https://github.com/Mellowz/L2.Net |
Re: Пишу сервер с 0 на c#
Не хочу показаться тЕмным некрофилом, но:
- сериализация в файл дно, лучше подключи postgres с jsonb данными где ты сможешь просто и вариативно сохранять данные. и сохранять их лучше при отключении игрока и периодично, собрав из игрока весь спектр измененных данных, и аккуратно сложив их в бд. дергать игрока из бд в 10 подключений тоже бред (как сделано тут и очень много где еще) - селектоор/цикл в 1,5 сек? мало того, что при красивых цифрах в 5 или 10 тыс, проблемы будут не с чтением полученных данных, а с взаимодействием этой тонны данных между собой. к тому же селекторы/циклы в любом случае надо распаралеливать от 300-500 подключений/поток. но опять же, это должно быть в спринте по доработкам уже после реализации основного фундамента. данные игрока №1 считаются моментально, а игрока №5000 - спустя 1,5 сек после получения, рили это ок? - с передвижением игрока над гео, меняющимися вокруг объектами (а также взаимодействия с ними), и особенно на разных скоростях игрока, а вдруг замес, да и еще массовый, и все жмут жмут жмут, активные зоны травят игроков, аое жарит их пердаки - у тебя моск в стратосферу вылетит, береги его, я знаю о чем говорю. когда у тебя в голове мысли не как найти мега курс, супер статью или книгу, осилив которые ты станешь супер спецом по языку - это одно, а когда ты берешь и делаешь - это дает совершенно другой результат, не бросай. пс. только в клиенте эртеи/класика появились зачатки оптимизаций, ибо какой бы чумовой сервер не был бы, клиент будет лагать и тупить. только используя эти хроники и выше можно добиться вменяемого результата |
Re: Пишу сервер с 0 на c#
Цитата:
В скором времени начну разбирать геодату и вот тут то я чуствую начну флудить :redlol: в добавок, насколько мне известно готовая пакетика есть только у линдвиора (использую данный клиент) а все что выше разбирать самому. как только будет в свободном доступе полная пакетка етреи или чего повыше - сразу слямзю) |
Re: Пишу сервер с 0 на c#
krisadr, а это прости, что?
|
Re: Пишу сервер с 0 на c#
как успехи то?
|
Re: Пишу сервер с 0 на c#
пишу код с расчетом на то чтобы к потом к старым кускам не приходилось возвращаться или воздействия были минимальными, по этому не все так быстро. Думаю что в феврале - марте можно будет хоть как то пощупать xDD
|
Текущее время: 20:06. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot