Последний раз я обещал задать вопрос сообществу. Что же, сам заголовок не до конца описывает то, о чем речь пойдет дальше, но лаконичнее я ничего не придумал.
У меня еще до новогоднего подкаста, из-за некоторых заметок, рассуждений людей о механиках, из-за жарких споров о том, как все же стоит делать игры, в которые мы хотим играть, из-за рассуждений об ECO 9.0 и плеймекерстве, возникла мысль, которая бередила мою голову во времена, скажем так, геймдизайнерской молодости. Собственно, в своей последней заметке я о ней и писал. После прочтения диалогов о ГМ-ах я уже окончательно убедился, что пора об этом поговорить.
По факту многие уже занимаются плеймейкерством и часто пишут об этом.
Но как я и говорил — в большинстве случаев невозможно поменять какие-то базовые, может, даже фундаментальные вещи в игре, которые по мнению многих стоило бы поменять.
Если вернуться к моей прошлой заметке, то где-то в середине таймлайна можно наткнуться на, скажем так, дыру в пространстве, где мы просто занимались своими делами. Суть в том, что где-то тогда же, или может чуть раньше, я набрел на довольно интересный свободный проект, который, по сути, предлагает не просто песочницу, а буквально гору песка, вроде того, что есть в Minecraft, но эта песочница лишена многих недостатков своего проприетарного старшего брата.
Итак, я хочу предложить для начала лишь обсудить за и против, посмотреть на проблему со всех углов.
Minetest — это даже не игра, а инструмент по созданию игр на довольно простом скриптовом языке. Но спектр возможностей, которые дает этот инструмент, практически не имеет каких бы то ни было ограничений.Разве что в рендер влезть можно только где-то глубоко, понимая, что именно ты делаешь и как вообще работает ядро. Это расстраивает только лично меня, т.к. хотелось бы попробовать какие-нибудь шейдеры написать, почему нет?
И я предлагаю сообществу поразмыслить над тем, чтобы создать свой виртуальный мир, наполнить его своими правилами, механиками, всем тем, что мы так долго ищем в одном месте, но никак не найдем. Хотите механик из H&H + ECO? Пожалуйста. Отсутствие PvP? Без проблем. Наоборот — PvP и сложную систему штрафов? Сколько угодно! Хотите Si-Fi, хотите что-то похожее на Worlds Adrift? Да что угодно, пока общее число пользователей не перевалит за пару тысяч.
Мы можем взять чужие идеи, но взять все лучшее, изменить и убрать все худшее и создать для себя и товарищей среду, которая будет не просто приятным времяпрепровождением, а прецедентом! Вы сможете сказать: «да вот же все работает, черт возьми!»
Конечно, я бы с удовольствием помог с графикой, как 2D, так и 3D, возможно с чем-то еще, но нужны те, кто решил бы заняться таким проектом, и те, кто поверил бы в него.
Думаю, это очень сложная тема и, возможно, возникнет бурное обсуждение. А может, окажется, что никто не готов вкладывать силы в мимолетную фантазию. (ничего страшного это можно понять) Я не буду сильно защищать эту идею, так как она в каком-то смысле довольно радикальная и требует поддержки многих людей. Но я считаю, что не поделиться ею было бы преступлением. ^_^
Так что… Что думаете?
У меня еще до новогоднего подкаста, из-за некоторых заметок, рассуждений людей о механиках, из-за жарких споров о том, как все же стоит делать игры, в которые мы хотим играть, из-за рассуждений об ECO 9.0 и плеймекерстве, возникла мысль, которая бередила мою голову во времена, скажем так, геймдизайнерской молодости. Собственно, в своей последней заметке я о ней и писал. После прочтения диалогов о ГМ-ах я уже окончательно убедился, что пора об этом поговорить.
Но как я и говорил — в большинстве случаев невозможно поменять какие-то базовые, может, даже фундаментальные вещи в игре, которые по мнению многих стоило бы поменять.
Если вернуться к моей прошлой заметке, то где-то в середине таймлайна можно наткнуться на, скажем так, дыру в пространстве, где мы просто занимались своими делами. Суть в том, что где-то тогда же, или может чуть раньше, я набрел на довольно интересный свободный проект, который, по сути, предлагает не просто песочницу, а буквально гору песка, вроде того, что есть в Minecraft, но эта песочница лишена многих недостатков своего проприетарного старшего брата.
Minetest — это даже не игра, а инструмент по созданию игр на довольно простом скриптовом языке. Но спектр возможностей, которые дает этот инструмент, практически не имеет каких бы то ни было ограничений.
И я предлагаю сообществу поразмыслить над тем, чтобы создать свой виртуальный мир, наполнить его своими правилами, механиками, всем тем, что мы так долго ищем в одном месте, но никак не найдем. Хотите механик из H&H + ECO? Пожалуйста. Отсутствие PvP? Без проблем. Наоборот — PvP и сложную систему штрафов? Сколько угодно! Хотите Si-Fi, хотите что-то похожее на Worlds Adrift? Да что угодно, пока общее число пользователей не перевалит за пару тысяч.
Мы можем взять чужие идеи, но взять все лучшее, изменить и убрать все худшее и создать для себя и товарищей среду, которая будет не просто приятным времяпрепровождением, а прецедентом! Вы сможете сказать: «да вот же все работает, черт возьми!»
Конечно, я бы с удовольствием помог с графикой, как 2D, так и 3D, возможно с чем-то еще, но нужны те, кто решил бы заняться таким проектом, и те, кто поверил бы в него.
Думаю, это очень сложная тема и, возможно, возникнет бурное обсуждение. А может, окажется, что никто не готов вкладывать силы в мимолетную фантазию. (ничего страшного это можно понять) Я не буду сильно защищать эту идею, так как она в каком-то смысле довольно радикальная и требует поддержки многих людей. Но я считаю, что не поделиться ею было бы преступлением. ^_^
Так что… Что думаете?
48 комментариев
Демократия большинства? — плавали, знаем. По всем законам психологи как только собирается больше нескольких десятков человек, трения неизбежны.
Диктатура администрации? — сколько человек из местных ее примет. Не тот контингент.
Внутренняя демократия при решающем голосе кодеров? — сколько их тех кодеров будет
Вот если договориться о том, как принимать решения и затем неукоснительно соглашаться с этим договором. Но только говорить о том, как оно должно быть правильно гораздо легче, чем самому принимать правильные решения. Если в комментариях идут временами настолько серьезные баталии, то что говорить о воплощении на практике.
В формальных обсуждениях так же могут существовать правила, которые предварительно устанавливаются голосованием. Серьезно, посмотрите на крупные открытые проекты на гитхабе или гитлабе, на блендер.
Как квинтэссенция этого — «Прямая демократия хороша для узкого сообщества единомышленников». Но для сообщества с разноплановыми мнениями она может быть весьма разрушительна. Яркий пример для тех, кто в танке. Первая итерация Эко была весьма успешной, потому что сервер был закрытый и принимали только единомышленников. Третья итерация вызвала некоторые разногласия в сообществе игры, поскольку сервер был открытый, хотя и рекламировался в достаточно узком сообществе. Что-то подобное я наблюдаю сейчас в Атлантис, но там как раз «демократическая диктатура» и поэтому разброда и шатаний нет.
PS. Дабы не совсем оффтопить — я бы даже поучаствовал в создании как кодер и геймдизайнер.
Ну почему же? В любой момент можно начать реквестить изменения из своей ветки, если оформить запрос правильно и написать годную фичу, которая всем понравится, то в чем проблема? К слову, у каждого проекта доля авторитаризма действительно разная, но это уже скорее по историческим причинам.
1) Когда человек является продуктом своей среды и ведет себя так, как принято в этой среде, все проблемы детерминированы именно его средой, а не методами управления.
2) Прямая демократия предполагает, что сообщества, как я и писал это не разрозненные группы по интересам, а просто кооперирующиеся и пересекающиеся сообщества. Решение конкретного вопроса у конкретных людей и не должно затрагивать тех, кто к этому вопросу не имеет отношения.
Собственно, мнения, которые не уживаются приводят к голосованию по поводу создания «форка». Не вижу тут проблемы. Я же не зря привел пример.
Хотя, стоит признать, что чистый референдум без федераций и прямых представителей федераций (то есть маленький, но все же элемент представительной демократии) на реальных гигантских сообществах не сработает.
Если действительно готов писать на Lua, то это ОЧЕНЬ круто, т.к. как раз еще и его учить и писать что-то параллельно своему проекту я не готов.=) Надеюсь будут еще люди, и тогда обсудим!)
По личному опыту чистая демократия срабатывает только в случае принятия самых общих решений. Хотя даже такое фундаментальное решение, как быть/не быть пвп, расколет сообщество на два огромных лагеря и борьба будет ого-го-го. Лично мне ближе принцип «послушай других и сделай по-своему».
С учетом того, что программированием вплотную я не занимался лет пять (если не больше) и времени свободного у меня как у любого специалиста на 8-часовой ставке, то в принципе да, готов попытаться писать код. Правда, в сетевом программировании я нуб полный, но с внутренним кодом сервера справиться в состоянии, думаю.
2)Ну кто-то уйдет ( я уверен, что из-за КАЖДОГО решения кто-то точно уходить не станет, люди из игр-то не особо уходят =) ), а кто-то придет. В любом случае при наличии какого-то фундамента уже формируется целевая аудитория, как и тут на ММОзге уже есть определенная ЦА.
Насчет программирования. Там простой интерфейс в виде набора готовых функций и переменных и никакого сетевого кода и т.п. не требуется. Практически сразу можно писать игровую логику. Максимум если захочется очень с генератором мира побаловаться, то там да что-то свое нужно, но апять же можно и просто попросить меня карты высот состряпать))
— Пока так примерно просмотрел что предлагается конструктором. Первое впечатление, что не все так уж радужно и обширно. графика таки весьма кубична и вряд ли ее получится поднять. LUA не особо способствует обработке серьезных запросов, скажем ИИ для животных пока неясно как нормально реализовать. Сама система «Клиент и сервер в одном флаконе» кажется спорной, хотя я возможно еще не совсем пониманию принципы. И т.д. Разбираться и разбираться.
Хотя как некий симулятор социальной общины я уже подумываю как реализовать можно.
Для опытно-практической отработки обсуждаемых здесь (в рамках данного сообщества) особенностей общераспространённых игровых механик.
На оформительскую часть лучше забить в пользу проработки вышеупомянутых игровых механик (смотрите на Еву – осовремененное оформление в ней смотрится как седло на корове).
Для того, чтобы число персонажей не перевалило лимит, лучше ввести типа подписку. Типа с подтверждением по электропочте, привязанной к аккаунту ММОзговеда
Я думаю, что это можно пока делать и без оплаты, суть-то не в ней. Тем более смысла создавать лишние пороги для вхождения я не вижу, например.
Обычно онлайн, то есть среднее число игроков в единицу времени это 0.5 — 1 % от тех, кто вообще устанавливал клиент или оплачивал подписку\коробку. С учетом возможностей Minetest, «прочности» на такую затею ему должно хватить.
Как будет происходить обмен наработками и прочими штуками ?)
Плюс я привык к гитлабу (тем более уже возможно кодер намечается ))) ), а там есть система реквестов, соответственно там позже можно будет конкретные реквесты обсуждать, голосовать и роадмап тоже делать.
Отдельный канал? Да без проблем, конечно же.
Окей, есть конструктор, в котором можно реализовать любую механику. Что дальше? Окей, возьмём самый яркий пример — в Эко 9.0 не будет противостояния правительств, и многих это печалит. Сколько нужно кодеро-дней, чтобы хотя бы крупными мазками повторить основные эковские механики и дополнить их теми, которые планируются в 9.1?
Кто будет этим заниматься, на каком языке, разделяет ли он нашу приязнь к Эко (или не к Эко, а к чему-то другому, что мы захотим реализовать)?
Цели что-либо воспроизвести, конечно, ставить не нужно.
Если я правильно понял — ничего этого нет.
Ну и проверять какие-то гипотезы из других игр в вакууме — это, мне кажется, довольно бессмысленно, потому что на игроков воздействуют не только сами механики, но и всё остальное комплексно — оформление, сеттинг, комьюнити…
Язык указан — LUA.
А вот с «разделяет ли он нашу приязнь» будут проблемы, я лично пока не вижу каким образом групповым решением можно создать принципы и сюжеты.
Я думаю годы…
И это одна из основных проблем этой идеи-это слишком много труда, слишком долго.
При этом Ваша идея мне кажется бесконечно вдохновляющей и крутой, но просто поймите что это надолго
И таких примеров в индустрии просто гора, так что я не считаю, что это аргумент, уж извините. Слишком много я встречал senior developer-ов ( ни в коем случае не принимайте на свой счет), которые, например, не понимают разницу между реляционной моделью данных и базой данных.
Однако, обобщенные библиотечные решения являются важными и эффективными компонентами любого проекта. PhysX надо уметь готовить. У него тяжелая документация, а работа с ним требует от пользователя недюжих знаний математики. В основном — тензорной алгебры и функционального анализа. А максимального преимущества от PhysX/Bullet/Havok/… можно добиться, собственно, разделив видимое пространство на N пространств. Камни — в одном, люди — вдругом, машины — в третьем, деревья — в четвертом. Все счастливы и вся физика на десятках квадратных километров пространства считается за 2-4мсек и синхронизируется по сети.
Писать свое решение можно. Это даже полезно. Просто еще важно допускать сомнение в том, а насколько твоя реализация выгоднее более глубокого изучения уже имеющихся решений.
Есть и еще один момент: обобщенное решение позволяет тебе задействовать функционал сразу на ранних этапах работы и в краткие сроки собрать прототип с желаемыми механиками.
Наша проблема была в том, что прототип можно и на UE4 заделать, вот только пользы от него мало, ведь 500к + динамических капсул он посчитать не способен (никакие «живые миры» там нам не светили), вне зависимости от объема пространства, количества статики, физ. материалов, да и вообще чего угодно. Мы проделали уйму тестов и они четко показывают графики со скачками и плато, где видно переполнение кеша объемами данных, видны проблемы синхронизации потоков и не менее большая проблема деревьев (а это вообще фундаментальная штука во всех современных физ. движках, от которой мы как раз отказались)) ), которые нужно постоянно перестраивать.
Да, наверное можно заставить вообще каждый чанк мира считаться на отдельной одноядерной машине, но эффективно ли это? А сколько это стоит? Как по мне сначала нужно добиться максимальной производительности в условиях одной машины, а вот когда тебе уже точно не хватает именно физических ресурсов того же CPU, то можно уже задумываться о сети. Как минимум я это вижу более логичным.
Мне всё равно кто будет принимать решения, если смогу чувствовать свою вовлечённость и полезность.
Думаю стоит поставить точку отчёта успешности проекта, скажем на 30 игроках, после альфы продвинуться в интернете с целью получения притока новых людей, тогда не страшен будет уход старых игроков. Всем всё равно не угодишь.
Возможно что то типа догмы из евы…
Мало кто на lua делает именно UI, в основном Lua используется для выполнения бизнес логики игр, программ симуляции и самых всевозможных контроллеров систем автоматизации.
Многих людей отталкивает необычность грамматики языка. Меня тоже отталкивает. Lua является математически ориентированным языком и создавался в первую очередь для решения математических задач. Этим и обусловлена грамматика Lua. Математикам так понятнее и удобнее.
А если кому-то кажется что встраиваемый интерпретируемый язык не может решать задачи достаточно быстро, то лично я советую посмотреть на проект Terra. Транслятор Terra построен на базе проекта LLVM (clang и еще целый ворох компиляторов вроде spir-v, glsl, hlsl), который позволяет транслировать код Lua в опкоды процессора буквально на лету, создавая тем самым новые, правильно выравненные секции исполнения прямо во время работы основного кода программы.
Сам же Lua очень часто выступает в качестве эталонной массы для сравнения быстродействия разных встраиваемых языков.
Да и въезжать в математические абстракции — не самая привлекательная идея, когда хочешь просто сделать игру.
JS(v7) в 51 раз медленнее Lua. v8 — в 3.5 раза медленнее только за счет AOT, но весит как слон и встраивается как питон — никак. Трансляторы v7/v8 — расширяемые, а не встраиваемые.
JS-пользователя найти проще чем пользователя Lua. Но стоит применить критерии отбора, как для игр пользователя Lua становится в несколько раз проще найти чем пользователя JS.
Как только ты заходишь в геймдев, там сразу начинает царить Lua и еще несколько интерпретируемых собратьев.
AngelScript является встраиваемой версией C/C++ с незначительными изменениями, он всего в 2 раза медленнее Lua и этот разрыв можно стереть руками, немного исправив его виртуальную машину.
Вопрос всегда был в выборе между Lua, AngelScript и ChaiScript. И у Lua сообщество значительно больше других конкурентов. Поэтому Lua и популярнее.
Remedy работают с D. Движок у них компилируемый, с ручным управлением памятью, а бизнес-логика — интерпретируемая и со сборщиком мусора. D из коробки позволяет оба этих режима сборки, в обоих случаях давая максимально возможное быстродействие и прекрасную плотность команд.
Control, Quantum Break и более старые проекты дают прекрасное представление о том, что D может предоставить своим пользователям.
А по поводу скорости обучения, ты просто не играл в РО. :)
К 2008 году в клиенте РО стала доступна виртуальная машина команд, которую туда затащили разработчики чтобы дать больше возможностей гомункулам алхимиков. Языком команд был Lua, который разработчики затащили абсолютно никак не порезав.
В результате, менее чем за год вся школота уже прекрасно владела языком. Многочисленные доморощенные умельцы клепали своих полноценных ботов прямо внутри клиента игры. Система команд гомункула представляла из себя огромную дыру в безопасности клиент-серверного взаимодействия.
Для приватных серверов на основе Афины этот момент тогда стал настоящим бичом, т.к. со стороны сервера это никак не засекается.
Язык изучается очень легко.
На нашей пиратке гомункулы не работали, да :(
Но, я боюсь, что все, что больше 500-800 ms никакой компенсацией спасти невозможно. Хотя, какие-то не требовательные к обновлениям штуки можно и подождать. Скажем, бекап в BD, не обязательно вообще держать что-то вне оперативной памяти — сегодня технологии это позволяют.
Даже компенсация лага и\или предсказание с экстраполяцией дальше 500 ms использовать на регулярной основе в динамической сцене очень плохо. Кстати, будет как с теми же, например, машинами в эко, физика вообще очень не любит какие бы то ни было задержки.
Так вот. Даже если процесс отрисовки кадра выделен в отдельном потоке, нарисовать все равно получится только стабильную картинку. Это означает, что когда кадр начинает асинхронно рисоваться, мир замирает и его нельзя трогать до самого конца отрисовки. Ух ты, даже в асинхронном рендеринге мы прилипаем к FPS…
Припомни на своей памяти артефакты анимации из FIFA, Mass Effect, Star Track, любой игры серии Batman и еще целой кучи тайтлов. Это происходит потому что кто-то забыл что при асинхронном рендеринге состояние мира трогать не надо.
На деле же, многие движки, если не строго привязаны к FPS (даже если рисуют асинхронно), то симулируют несколько раз между кадрами. У меня по умолчанию FPS ограничен на 60, а SPS (Simulation Per Second) ограничен 120. И в моей тестовой среде TPF сохраняется около 3-4мсек, т.е. я все еще могу усложнять геймплей. Но я знаю что у меня многие механизмы еще очень сырые и я могу сильно уменьшить свой текущий TPF.
Симуляция — это один маленький шаг жизни мира, когда мир имеет возможность обработать запросы пользователя, систем ИИ, анимации, физики, звуков и еще огромной горы всякого сервисного барахла. Тут нельзя просто так взять, запустить поток выполнять какую-то ересь и забыть о нем. Симуляция всегда должна начинаться в одном фиксированном состоянии мира и приводить к другому фиксированному состоянию мира. Иначе — баги из Mass Effect, TES, NFS и прочего, прочего, прочего… и из Batman. :)
К слову о мобах и их мыслях. ИИ думает каждую симуляцию, т.к. каждую симуляцию окружающий мир меняется. Механизмы вообще ИИ являются очень непростыми в объяснении и требуют отдельной заметки.
Но вот если тебе на пару секунд позже прилетит дамаг, ты будешь недоволен. Особенно если дамаг прилетит от уже убитого тобой моба, а ты такой сказал себе «Фууух» и не стал хилиться.
Задержки симуляции принципиально неуместны. Состояние мира между симуляциями должно быть детерминированным.
Конечно, меня так и подмывает сказать «Да! Давайте сделаем Worlds Adrift!», но проблема в том, что Wolrds Adrift для меня — это те самые ванильные облака, та самая музыка, тот самый лунный свет и странной формы корабли. Поэтому не думаю, что нечто подобное можно будет воссоздать. Да и не думаю, что нужно. А вот новые идеи, аналогов которым нет, вполне.
Мы говорим про прямую демократию и другие формы принятия решений. А мне кажется, что на первом месте стоит всё же момент увлечения идеей. И поэтому естественным продолжением этой инициативы я вижу красивое оформление своих идей, даже небольших, в качестве отдельных заметок под единым тегом. Крутое описание того, что можно было бы реализовать в рамках предложенного полигона, на ваш взгляд.
Никого не гоню, думаю тут торопиться особо некуда, но чтоб закрепить внимание сделать первые шаги.)