Я согласен что если есть зависимость от сторонних тулз - можно и подстроиться под формат. В основном правда очень часто единственной тулзой является сам движок игры. И свой сериалайз + парсинг пишется очень и очень быстро, особенно в хайлевел языках, где работа со строками уже налажена. К примеру взгляните на:
здесь функция split_into_words_and_quoted_pieces из 60 строк это весь токенайзер. Далее парсинг совершенно тривиален и добавлять новые части к нему ничего не стоит.
он определяет скобки как блок данных, все нормально читается.
Это ничего не дает, в формате куча визуального мусора и он слишком прост чтобы в него сериализовать более сложные данные, например список из объектов разных под-типов.
Когда в жсоне один линейный список он читается нормально. Как только данные усложняются формат становится не сильно более понятным чем бинарный.
Все это медленнее (за исключением бинарной сериализации) и менее читаемо чем просто ручная запись файлов в плейн-текст формате уровня:
game_state
money 999.99
lives 12
Текст разбивается по пробелам и лайнбрейкам и ручками пишется recursive descent parser (простейшая вещь с которой справится и школьник). Подобный формат легко править и читать даже без наличия продвинутого редактора, он нормально будет смотреться в гит диффах. При желании легчайшим образом добавляется собственное версионирование, к примеру:
Множественное наследование просто побочный эффект. Интерфейс просто объявляет контракт. Важное свойство интерфейса в том что он не имеет собственного состояния.
С момента реборна не было никакой модерации. Дедикейтед сервера выдавались сначала избранным, затем всем с определенным количеством игроков, теперь всем. Естественно ничто не мешало играть и без серверов.
В д2 проект проходит ревью модераторов, прежде чем может появиться в публичных хостах, поэтому пример некорректен - подделки и фейки там и так не пройдут.
Хз о чем ты, никогда подобного не было, лол. Сейчас и выделенные сервера дают абсолютно всем по дефолту. Естественно там появлялись и подделки и сворованные моды, но их быстро банят по инициативе автора, либо в них просто никто не играет.
Карты закрывали не столько ради "не смотрите как я это сделал", а потому что хостить можно любую карту, в т.ч. модифицированную на читы
Я верю что есть смысл запротектить какую-нибудь ОРПГ чтобы было посложнее набить себе чара с читами, но далеко не все карты - ОРПГ. Других бенефитов я не вижу. Ну сделает Васян модификацию где красный игрок всех убивает с одного удара, так хостить эту карту кроме Васяна никто не будет.
Плюс ускорение от инлайна констант и функций, плюс сокращение размера.
Это все понятно.
Напомню что та же дота аллстарс появилась благодаря многочисленным форкам.
И как автор проекта я не хочу,чтобы кто либо взломал мой труд, "подсмотрел" а затем перенес это в свою карту, затратив при этом ноль усилий.
Я не очень понимаю как это конкретно повредит тебе, если не существует какой-либо финансовой составляющей. В любом случае стоит смотреть по конкретным кейзам и репортить модераторам ситуации когда очевидно что что-то своровано. В том же дота2 моддинг сообществе никаких протектов карты не было и нет, никто даже не пытается обфусцировать код, более того крупнейшие проекты лежат в полностью открытом доступе на гитхабе и это ОГРОМНЫЙ бонус к обучению новичков. Человек приходит с вопросом о том как сделать Х и ему просто кидают ссылку на уже готовый код в проекте Y. Прямое воровство кода рассматривается в порядке DMCA-реквестов. Извините, но варкрафт моддеры просто застряли в параноидальном прошлом.
Я лично начал варкрафт 3 моддинг с изучения имеющихся у меня открытых карт.
Жасс повесить на пару ядер рассмешило. Подумай головой и может поймешь в чем с этим проблема. Рендеринг и логику разделить можно, но куча игр этого не делают и живут нормально. Пересчет статичной картинки - абсолютно вырожденный кейз. Какой в принципе бенефит отдельного рендеринга? Что логика будет бежать стабильнее при скачках фпс? А какая цена? Придется синхронизироваться по данным которые позволяют рендерить. Нельзя просто взять и начать рендерить мутабельные данные в отдельном потоке. ИИ можно распараллелить, опять де со стоимостью синхронизации. Харгард, совет вместо бросков фразами «у нормальных программеров» взять и закодить простую игру, возможно поймешь где проблемы с параллельными вычислениями.
Многопоточность хороша там, где блокирующие операции и малая область синхронизации, т.е. например IO. Полагать что любой код можно просто распараллелить и все будет хорошо - наивно и глупо.
Ты явно не понимаешь о чем говоришь. Компайлер может векторизовать только малую часть кода. Для получения реального прироста в реальных ситуациях SSE код нужно писать вручную.
Про многоядерность бред какой-то. В играх в принципе редко что параллелится. Если имелось в виду SIMD - так оно не сильно нужно, чаще всего тормозит рендеринг из-за кучи дроуколлов. И насчет рендеринга: это всегда вещь отдельная. Переписать его на современный директх/опенгл не самый титанический труд (слой абстракции графического АПИ у них точно есть, т.к. еть поддержка опенгл). Если уж RenderEdge сделали без доступа к сурсам то близзард тоже справятся. Число поликов от движка не зависит и очевидно меняться не будет.
Doc, мне мешает уже устанорвленный варик, да и вообще пиратки это зашквар. (И не надо сейчас писать, что снести вар лицушный, скачать пиратку, прочекать ее раз 100 на вирусы, скачать патч, все установить, это все занимает 10 минут). Да и действительно, покукарекать просто хотелось из-за того, что опять на хгм не могут нормальный конкурс организовать.
Шо? Ничего сносить не надо, оно же просто из папочки запускается. Качать с рутрекера, тогда на вирусы проверять не обязательно. Думается мне что вы все же понтуетесь на ровном месте.
Мне кажется если банально не использовать новый функционал то проблем с совместимостью быть не должно. Да и спиратить варкрафт чисто ради конкурса никто не мешает, тем более если он у тебя православно уже куплен. Совесть чиста.
Самая тривиальная проблема что можно придумать. С устойчивым алгоритмом рандома и фиксированным зерном локстеп гарантирует одинаковый рандом у всех.
Там есть некоторые хитрые тонкости насчет борьбы с лагами и потерей пакетов
Нет никаких особых тонкостей. Пакет не пришел - пересылаем, заставляем всех ждать. Насчет борьбы с лагами не знаю, о чем идет речь, в локстепе данных передается минимум, симулируется все на клиентах, нужен какой-то клиентсайд предикшн чтобы пинг был менее заметен, т.е. спич юнита при приказе, поворот в сторону приказа и т.д. Это все несложно. Делать мультиплеер для шутанов и прочего намного сложнее.
Я просто не понимаю почему нельзя насрать на все и просто сесть и начать делать. Осваивать новые вещи это же фан, зачем какая-то особенная подготовка, ритуалы, блогпосты, дрочба при луне? Берешь и делаешь. Обожжешься, наберешься опыта, выкинешь говно которое сваял, насрешь нового, жизнь тлен всё равно, зато фан.
Ну скорее всего не на 25% но упадет конечно же, есть такое понятие как филлрейт. Соответственно больше пикселей - меньше перформанс. Но вполне возможно что падение будет незначительным.
ок. ок. я щас предложу самую тупецкую идею, но её прямота вас возможно поразит. Обычно, когда реализация проекта заходит в тупик на n-ой итерации или же начинает ходить по кругу, самое лучшее решение - откатиться на тот момент, когда все было как надо. Что если мы просто соберем на нормальном, "современном", не костыльном движке, на рабочем хосте слепок того, что нам нравится и как бы мы хотели видеть хгм, настроим все ветки ,сущности, прочее, ПЕРЕТАЩИМ БАЗЫ к примеру. и не будем трахать мозг костылезацией? ну к примеру.
Так умирают проекты, типа "а давайте все перепишем заново".
» WarCraft 3 / Senior SI для Blizzard Entertainment
» WarCraft 3 / Senior SI для Blizzard Entertainment
» WarCraft 3 / Senior SI для Blizzard Entertainment
Ред. Doc
» Unity / Сериализация объектов в C#
Ред. Doc
» Unity / Сериализация объектов в C#
money 999.99
lives 12
money 999.99 Since 1.2
lives 12
» Программирование / Интерфейсы и с чем их едят
» Программирование / Интерфейсы и с чем их едят
» Программирование / Интерфейсы и с чем их едят
» WarCraft 3 / HiveWE - World Editor 0.6
Ред. Doc
» WarCraft 3 / HiveWE - World Editor 0.6
Ред. Doc
» WarCraft 3 / HiveWE - World Editor 0.6
» Программирование / Интерфейсы и с чем их едят
» WarCraft 3 / Патч 1.29 вышел на основных серверах
» WarCraft 3 / Патч 1.29 вышел на основных серверах
Ред. Doc
» WarCraft 3 / Патч 1.29 вышел на основных серверах
Ред. Doc
» WarCraft 3 / Патч 1.29 вышел на основных серверах
» Fa_losophy / Мапперская дуэль имени меня
Ред. Doc
» Fa_losophy / Мапперская дуэль имени меня
Ред. Doc
» WarCraft 3 / Патч 1.29 вышел на основных серверах
Ред. Doc
» Fa_losophy / Припекло
» Блог им. Diabfall / vsИнди
» WarCraft 3 / Патч 1.29 вышел на основных серверах
» Fa_losophy / Припекло
» Fa_losophy / XGMolution
» WarCraft 3 / Новые нативные функции в 1.29