Pull to refresh
13
0
Владимир Романько @icoder

Teamlead

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

Машина — это не роскошь, хотя бы потому что она сильно влияет на качество жизни и меняет стиль жизни.
Сомневаюсь. У меня, например, если при заглушенном двигателе нажать на тормоз, то педаль прожимается на некоторый градус. Если при этом завести мотор, не меняя давления на педаль тормоза, то после завода педаль дополнительно еще прожимается, то есть чувствуется, как начинает помогать усилитель.
>Вы уверены про Линейку? Вроде бы сервера Линейки как раз самые «допиленные». Знакомые которые когда-то играли на неофициале отзывались о них очень-очень прилично.

У линейки есть два вида серверов: честноспижженный официальный сервер и написанный с нуля community сервер. Дак вот, community сервер — это очень жалкое подобие настоящего. Да и потом, сравнивать MMORPG с обычными играми на самом деле не очень корректно, так как для MMORPG есть очень мощный резон для написания тонны вспомогательного софта. Самая главная причина — такой софт может быть легко монетизирован и, следовательно, его пишут профессиональные программисты за зарплату. А это уже совсем другая весовая категория.
Само собой, все не так просто, как я описал, но это все тем не менее ломается в приемлимые сроки. Если программа в принципе работает, значит может быть произведен реверс-инжинириг. Никакая криптография ей не поможет, а максимум усложнит работу хакера. Причем не усложнит, а сделает эту работу более интересной, более «sexy». Я сам раньше будучи студентом весьма серьезно увлекался взломом программ, SoftIce был моим родным домом и я прекрасно знаю что это такое — ломать программы. Дак вот, чем больше в программе всяких фишек типа криптографии, самораспаковывающегося и самомодифицирующегося кода, тем интереснее её ломать. Самая мощная и непробиваемая защита — это нудная защита. Это когда взломщику надо проделать тонну нудной заурядной работы, не требующей изобретательности:
Грязнуля, что-б ты не скучала,
Даю тебе мешок гороха,
С фасолью смешан он неплохо.
До нас мешок перебери,
Фасоль отдельно собери

© Золушка
А в обсуждаемой защите ломать вообще нечего. Там нет ни хитрой криптографии, ни сложных антихакерских уловок. Чем там заниматься взломщику? Можно даже исходники клиента открыть — это все равно мало чем поможет хакеру.

>Проще чуточку поправить игру, чем сделать свою.
Дак речь не идет о том, чтобы игру «чуточку поправить». Речь идем о том, чтобы с нуля переписать серверную часть игры, при этом не имея доступа к самому серверу и не имея понятия, чем этот сервер занимается.

>Серверный код — это в большинстве случаев логика высшего уровня. И она вполне естественно проецируется на текущее состояние геймплея. Можно написать программы для анализа этого всего.

Это практически нереально. В лучшем случае получится глюкодром и жалкая пародия на настоящую игру. Вспомните (или погуглите) про Java Lineage2 сервер.
Представте, например, что сервер хранит и обрабатывает логику всех квестов, сервер ведет для игрока нелинейный сюжет, именно сервер и никто иной знает, когда и при каких условиях должна сработать та или иная ветвь нелинейного сюжета. При этом сервер может постоянно модифицироваться и дополняеться новыми квестами, локациями и пр.
В смысле не старфорса, а стима, оговорился :)
Видимо, у тебя есть в наличии мозг :)
Главное отличие от старфорса — это то, что игра, защищенная старфорсом представляет собой полноценную версию игры с полным функционалом, которая просто делает некоторую проверку во время активации через интернет. Ломается это довольно легко — убираем соответствующий «if» в экзешнике — и игра сломана. то, что предлагает UbiSoft и что уже работает скажем в Rise Of Flight -это совершенно иное. На сервер выносится часть игровой логики. Соответственно, чтобы это дело сломать, хакерам надо самим реализовать эту игровую логику. То есть другими словами, хакеры должны переписать часть игры. Но при этом 1 — если хакеры «такие умные, то почему они такие бедные»? В смысле если они могут написать код аналогичный тому, что написали профессионалы из UbiSoft, то почему они не пишут игры и не зарабатывают миллионы? 2 — для хакеров серверный код, который они собираются переписывать — это черный ящик. Его нельзя отреверсинжинирить. Хакеры могут только догадываться, что происходит на сервере. В результате, кряк (если он и появится) сделает игру неполноценной и глючной. Вспомните про Java-сервера lineage2. Про то, какое это было глюкалово.
И что это меняет? Затраты на разработку ведь все равно никуда не денутся. Если я их профинансирую из своего кармана в альтруистических целях, чем это будет отличаться от бесплатных хотдогов?
Разумеется, real-time логику выносить на сервер не следует. Но и без нее много чего остается: ведение карьеры, квесты, диалоги, нелинейный сюжет, профиль, контент (частично), игровые данные, миссии и т.д. Это очень сильно зависит от игры и фантазии разработчиков.
Если я на улице начну бесплатно раздавать хотдоги, то очередь из клиентов мне со временем будет обеспечена. Только вот вопрос монетизации будет также открыт ;)
А как народ в WoW играет?
>Остается непонятным следующий вопрос — поможет ли этот шаг бороться с пиратством или же, наоборот, простимулирует его дальнейший рост?
А меж тем, Rise Of Flight, которая уже давно вышла и работает точно по такой схеме так до сих пор и не сломали (хотя многие пытались). Секрет успеха в том, что существенная часть игровой функциональности переносится на сервер и в результате хакерам просто нечего ломать, так как игра без сервера неполноценна. Никакой hosts тут уже не поможет.
TCP/IP работает не то что поверх IR адаптера но и даже поверх голубиной почты, на что существует свой отдельный RFC за номером 1149: tools.ietf.org/html/rfc1149
Метод Map с двумя параметрами нашел, но это не сгенерированный маппер.
public TDestination Map<TSource, TDestination>(ResolutionContext parentContext, TSource source)
{
Type destinationType = typeof(TDestination);
Type sourceType = typeof(TSource);

}

Это не именни никакого отношение к тому, о чем я говорил
Во-первых, я не понял, в чем заключается «вранье» про «Map.ObjectToObject»?

Во-вторых, я говорил не про кеширование конфигураций, а про кеширование сгенерированного маппера (то есть при маппинге такой маппер не анализирует типы переданных объектов и не генерирует или достает из кеша код. Если бы вы прочитали о чем шла речь, то увидели, что я объяснил просадку производительности. Дак вот, производительность проседает из-за поиска кода по словарю и из-за синхронизации. Об этом я писал выше.

В-третьих у MappingEngine нет метода «Map», который принимает два объекта. Назовите мне номер строки с этим методом здесь:
code.google.com/p/automapperhome/source/browse/trunk/src/AutoMapper/MappingEngine.cs
Стоило. Я же не говорил, что кроме этого больше ничего из университета не вынес. Технические знания очень важны, но если ты не сможешь их продемонстрировать на устном собеседовании, то какой в них толк? Плюс если ты хорошо держишься на собеседовании, то всем плевать на то, адекватны ли оценки в дипломе твоим знаниям, или нет (а как показывает практика, на университетские оценки вообще работодателям плевать).
Не нашел в MappingEngine ничего подобного. Вот его код: code.google.com/p/automapperhome/source/browse/trunk/src/AutoMapper/MappingEngine.cs

Можете носом ткнуть?
Все ссылки есть в статье. Читайте внимательнее.
Сам автор BlToolkit подтвердил, что такого интерфейса нет.
Я основывался на бенчмарке автора AutoMapper
code.google.com/p/automapperhome/source/browse/trunk/src/Benchmark/FlatteningMapper.cs
Вот кусок кода оттуда:
public void Map()
{
Mapper.Map<ModelObject, ModelDto>(_source);
}

Я полагаю, что автору виднее, как правильно использовать его собственную библиотеку.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity