Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Движок la2
#61
Alay Написал:Статья на хабре Архитектура skyforge
[Изображение: 2f6cca16324edd4886711e6e37f231e5.png]

где тут down casting как вы выразились если можно сделать так

Код:
public enum ObjectType
{
Avatar,
Kto-to,
Kto-to2
}

if(abonent.objectType != ObjectType.Avatar) // Чтобыстрее сравнить 1-2 байта либо же сигнатуры. ????
{
Cast.logError(****);
return;
}

instanceof говорит лишь о том что архитекторы кода где то смухлевали.

Такой же способ к сожалению используется и во всех сборках l2 эмулей.
Вообще такое впечатление что разрабы пишут instanceof в любой непонятной ситуации когда особо не хочется задумываться. А зря.
А что если такая конструкция будет в коде который очень часто используется ? получаем колосальные задержки которых можно было б избежать чутка подумав. Но нет. Нам лень. Нам нужен продакшен и как можно быстрее.

Да и вообще мне кажется что ответ заданный в этой теме Вам был дан и она начинает скатываться в дебри. Кому лень читать.
Вопрос:
1)Почему java, а не С# или C++?
2)Какие преимущества будут у java над C# или С++, ну или наоборот?
Ответ:
1) Потому что на момент создания первого эмуля всех интересовал линукс. C# не был развит тогда как сейчас. Почему же не С++ - эмуль создавался в торопях и в основном энтузиастами. Они же хотели как можно быстрее увидеть хоть какой то результат. На тот момент java была лучшим решением для поставленных целей.
2) На данный же момент C# более перспективный язык. MS не любили потому-то мало кто знал что у них под капотом. Сейчас же наконец-то мелкософт понял что будущее за OpenSource и работают теперь в данном направлении. А это выталкивает C# вперед. ИМХО. Могу и ошибаться. Сам раньше любил кодить на Java. Пока не попробывал C#. С его WPF и прочими вкусностями. Переходить обратно не собираюсь и нет необходимости.
По поводу цены на win. С выходом Win 10.1 и 2016 сервером. Это того стоит. Темболее раз уж вы пираты - то кто вам помешает скачать KMSAuto Net и ставить серв на win10? или же вам прям так необходим Activedirectory?
Так почему же нет на шарпе работающих эмуляторов. - Потому что придется писать практический все с нуля, что писали 10 лет подряд. Все таки L2 хоть и бессмертная но через 10 лет врятли будет актуально.

Еще одна неоднозначность в Java - HotSpot - оптимизатор паттернов. Если вы пишите четко как робот по популярным паттернам, все ОК. Но как только вы начинаете придумывать свои варианты которые возможно работали б лучше, HotSpot вам все запоганит. Плюс это или минус. Каждый пускай решает сам.

Вот down casting

Код:
final Avatar avatar = (Avatar)abonent;

Ваш вариант быстрее, но он архитектурно кривой. А если у вас enum из 30 типов? И в вашем варианте тоже будет down casting, как только понадобится доступ к полям/методам класса Avatar, просто вы это в коде у себя опустили.
Ответ
#62
Хотя вы правы и паттерн Visitor тут более чем уместен. Один хрен его ни в скайфордже ни в l2 не применяют.
Считаю что ответ был дан и тему можно закрыть.
Ответ
#63
Спасибо за ответы. Для себя все решил - С# в тренде сейчас.
Ответ
#64
А вы что собрались писать сервер с нуля? :eek:
Ответ
#65
Интересно, почему из тех так бурно обсуждает и делает выводы, не подумал о такой банальщине, как то что те кто начал пилить первый эмуль, не знал ничего кроме явы или на оборот, хотел ее изучить и только по этой причине ее выбрал(как например отписавшийся здесь человек, для своих испытаний выбрал скалу). Я уверен на 100%, что никто не выбирал ее из-за кроссплатформенности или того, что она проще или быстрей разработка, если брать скорость разработки в те года, то наверно можно было смело писать на АСМ(это конечно сарказм, но все же) и скорость бы меньше не была, медленней просто быть не может.

Еще там кто-то носом тыкал, что вот корейцы же выбрали С/С++, а не яву для своей сборки, то этому есть куча объяснений, начиная с того что ява тогда не была такой популярной и заканчивая тем, что у них уже был штаб С/С++ программистов и не было необходимости выбирать язык.
open-team.ru - Freya, HighFive...
Ответ
#66
flopix Написал:А вы что собрались писать сервер с нуля? :eek:

данный эмуль уже пишится. Но не по ла2 а на основе ее клиента
Ответ
#67
И как успехи?
В среднем емуле L2 на java наверно не один миллион строк кода.
Это тысячи часов человекочасов не считая отладки и продумывания архитектуры приложения.
Ответ
#68
flopix Написал:И как успехи?
В среднем емуле L2 на java наверно не один миллион строк кода.
Это тысячи часов человекочасов не считая отладки и продумывания архитектуры приложения.

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

Просто вопрос в другом, есть ли в этом смысл? Думаю что нет.
open-team.ru - Freya, HighFive...
Ответ
#69
Зачем брать серую массу

Java and C# это игла с которой тяжело слезть

для написания эмуля с 0 лучше уже взять тот же go (Golang)
Ответ
#70
угу.. та же игла. только другого цвета.
нашли о чем спорить...
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Самописный движок pointvortex 2 1,806 11-29-2012, 09:27 PM
Последний пост: pointvortex

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)