Как стать автором
Обновить

Комментарии 83

Боюсь что если нет желания ещё раз ошибиться как никогда и прокормить своих игроков завтраками ещё пару лет то выбора просто нет. Единственный вариант сделать в одиночку что-то рабочее за разумное время это брать готовый игровой движок, скорее всего юнити. Тем более без опыта в графике. Не стоит беспокоиться из-за геометрии, для кубов производительности хватит.
Уверяю Вас, решение не использовать мощный и/или глючный игровой движок — полностью взвешенное и обдуманное решение.
«Во-вторых, изменяемый мир требует возможности на очень низком уровне собирать меши (модели) ландшафта»
В Unity 3D вы можете рулить вертексами, трианглами и UV меша из скрипта. За Unreal не скажу…

PS: Сам щас экспериментирую с созданием ландшафта на диаграммах Вороного с тайлингом.
Во всех нормальных движках это можно.
Почему же тогда необходимость корявить меш указана как одна из причин отказа от движков?
Большинство движов для этого используют свои скриптовые языки. Не знаю, на сколько они эффективны в каждом из них, если честно, поэтому эта причина даже не главная.
К юнити можно писать плагины на C/C++.
Ну и как вы сами выше писали — там моно компилится не в байткод.
Важная вещь о Юнити: у него ОЧЕНЬ низкая производительность.
В сравнении с чем? Вы где-то видели тесты? Можно их тоже позырить?
Я играла во много Unity-игр, лично мне хватило.
Ну это конечно показатель…
Это всё зависит как делать — если использовать родные компоненты — то да — или тормозят или тупят.
Мы, к примеру, переписываем пасфайндинг, систему частиц, в вопросе анимаций тоже не без городух вышло :)
Судя по описаниям планируемых возможностей, вы изобрели УльтимуОнлайн в разрушаемом мире.
Ну получится здорово наверно =)
Успехов!
Очень лестно, спасибо. Ультима онлайн — отличная игра.
Потрясающе, очень серьезно подошли к делу. Если честно, после прочитанного стало стыдно за себя и свой vanilla сервер.
Спасибо. Не так серьёзно, как хотелось бы, конечно :)
Смотрели ли вы на другие проекты? Тот же Wurm, предшественник Minecraft'а, или Blockscape?
Мы постоянно стараемся почерпнуть опыт других проектов, как похожих, так и вообще игровых и не только.
Я у вас на сервере не играл, но все ваши статьи прочитал :) Очень полезные и интересные.
Надеюсь напишите ещё поподробней и про техническую сторону клиента, ну и про сервер надеюсь тоже будут ещё статьи.
Тема гейм-серверов востребована, ибо информации по ней в сети почти нет, мне приходилось(и приходится) учится этому во основном у конкретных людей, которые с этим сталкивались.
Как сделать очередную убийцу angrybirds, или выложить красивые графики из мобильных сторов многие могут, а вот написать какой-то материал по теме «Разработка игрового сервера» не каждый.
Я довольно давно хочу написать какую-нибудь техническую статью по разработке игрового сервера, но мне всё ещё не хватает вдохновения, чтобы сделать что-то действительно полезное или интересное. Надеюсь, когда-нибудь я выношу её и напишу :)

С другой стороны, если есть какие-то более конкретные темы/вопросы, то мне было бы значительно проще рассказать о них, чем писать общую статью «Разработка игрового сервера».
Если я не путаю, вдохновение вам отшибли, когда заругали в каментах терминологические неточности в статье, где вы рассказали, что переписали сервер майнкрафта на многопоточный режим.

Тем не менее та статья у вас вышла хорошая, и судя по плюсам за нее, всем нравится. Так что вы не тушуйтесь, будьте увереннее. Ваши статьи очень интересные и живые.
Тогда я, конечно, вспылила в комментах, но вдохновение мне не отшибли :)

Просто не могу пока продумать в голове структуру того, о чём могу рассказать, так как я думаю об этом редко и в фоне.
Пишите регулярно, порциями и не чаще чем раз в пару недель — обеспечите узнаваемость бренда и возможно аудиторию. А мы получим интересную историю. Лично я уже жду продолжения.
glPopMatrix и glEnd? Без комментариев…
Мы в Универе когда проходили OpenGL тоже их изучали. На самом деле, препод нам сказал, что новую версию изучать ему самому некогда, поэтому научил нас тому, что знал сам.
Да, клиент Minecraft написан с использование OpenGL до версии 1.1. Частично местами используется 2.0, но его поддержка не обязательна. Так и живём пока…
Как с вайпами обстоят дела?
Мир регенерируется частями. Неактивные регионы в определённый момент уходят в утиль, проще говоря, регенерируются. Обычно это бывает глобально, в виде больших чисток.
Глобальность таких дел всегда напрягала :/
Ну, подобные чистки бывают не так часто. Да и регионы имеют период активности равным 21 дням. А о чистках всегда заранее сообщают. В общем, всегда есть время и возможности чтобы спасти свои драгоценные регионы :)
Обычно мир чистится вручную по заявкам игроков. Редко (очень редко) проводятся удаления регионов давно ушедших игроков и регенерация всей не занятой территории.
У нас есть теоретические решения и лучше, но до реализации лапы ещё не дошли.
Какие-нибудь скрины? :)
Единственное, что я могу показать — скрины с сервера сейчас. Не думаю, что в этом есть много смысла: кроме огромного разнообразия архитектурных шедевров, графическая часть не отличается от ванильного Minecraft.

Когда будет возможность представить скрины на новом движке, я обязательно это сделаю, но уже в отдельной статье или в другом месте :)
Добрый вечер.
Спасибо за интересную статью. Есть вопрос.
Вы пишите, что в какой-то момент времени решили разрабатывать свой сервер майнкрафта. Не могли бы вы немного пояснить для тех, кто ничего не знает о данной игре, как происходил процесс разработки?
Правильно ли я понимаю, что существует официальный сервер, а также куча пиратских серверов, написанных энтузиастами? И для написания своего сервера вы декомпилировали официальный сервер, и пытались повторить функционал? Или есть некоторые открытые реализации сервера, и вы смотрели все детали там?
Сервер и клиент Minecraft распространяются для всех, кто купил игру. Конечно, есть и пиратские версии, но они не отличаются ни чем, кроме того, что не требуют покупки. Официальных серверов не существует, так как в среднем сервер Minecraft держит нормально до 20 человек.

Существует огромное количество модификаций чистого сервера, такие как упомянутые мной hey0 (ныне мертв) и CraftBukkit (поднимать сервер без него — практически абсурд). Соответственно, огромное число плагинов.

Разрабатывала примерно так, как вы описали: декомпилировала сервер, читала исследования протокола, декомпилировала клиент. Исходные коды сервера и клиента широко доступны, на самом деле, не смотря на то, что в оригинале код обфусцирован, они являются практически официальными.
Понятно, спасибо за ответ.
Удачи вам в вашем нелегком деле!
А не подскажете, где можно фактически почитать исходники minecraft, так, для общего развития, желательно в удобном для чтения виде, не парясь с декомпиляцией, деобусфикацией и прочим?
А как вы монетизируетесь? Судя по открытому счетчкику посещаемость не на столько большая, чтобы прокормить 4х человек с рекламы, например. Или у вас какие-то плюшки за деньги и их активно покупают?
Как я писала в тексте, мы являемся ярким примером f2p, продавая премиум-аккаунты и внутриигровые предметы. Сейчас в основном это продажа декоративных предметов.
Все неожиданно что с такой аудиторией 4ре человека окупаются. тысяч до 30 в сутки, я думаю, не будет такой уж проблемой поднять. И сможете целую команду содержать в таком случае. Удачи;)
У нас маленькая команда скорее потому, что мы все знакомы ИРЛ и являемся очень хорошими друзьями, и пока что не хотим переходить на более «корпоративный» уровень работы. Хотя это и было бы полезно, мы пока не готовы к расширению команды =)
Ну деньги всегда есть куда потратить;) Но вообще команда теоретически может понадобиться, когда вы перегорите и захотите в отпуск, хотя бы на пару недель. Чтобы было кому подменить.
Мы берём отпуска иногда :) Однако, мы не работает по 8 часов в день 5 дней в неделю (кроме редких случаев), чтобы нам были необходимы длительные отпуска «подальше от работы». Хотя, работать 8 часов в день 5 дней в неделю было бы полезно для проекта, конечно…
Если вы можете работать сами — большой плюс вам. Я после пары лет сдался и стал перекладывать часть дел на команду. Оказалось, что когда человек занимается только одной конкретной частью, он может ее делать несколько лучше, чем «админ — на все руки мастер».

С другой стороны, теперь выпал из контекста и не всегда получается поправить какие-то принципиальные моменты внутри системы, приходится подключать сотрудников и это немного расстраивает. Однако, качество работы проекта в целом важнее моих личных абмиций мастера на все руки.

В любом случае, когда-то в любом случае захочется большего, с деньгами такие амбиции гораздо легче удовлетворить. Как минимум, в железо и рекламу будет что вложить.
Конечно же вы правы, для проекта в целом это было бы полезнее. Но мы пока не готовы, хотя постепенно стараемся расширять команду, но на более дополнительные задачи, чем управление всем и вся, такие как сайт или дизайн.
Как-то раз декомпилировал сервер ради интереса. Правильно я понимаю, что у вас грамотно реализована многопоточность, за счет чего и прирост производительности?
А так хочется пожать вам руку :)
P.S. Как-то раз пытался у вас играть, но не прижился :)
Да, в основном высокая производительность за счёт многопоточности. Хотя это не всё.
Стена текста и ни одной картинки — читается очень трудно.
Добавить котиков или сисек?
НЛО прилетело и опубликовало эту надпись здесь
Не понимаю, за что минусуют товарища soulburner.
Про соотношение текст\картинки все правильно сказано.
Более того, какие-либо интересные технические подробности отсутствуют — это просто некая «биография» проекта в хабе «Я пиарюсь». Картинки просто необходимы.

Под конец заставлял себя дочитать текст. Все сводится к:

  • ТС — программист
  • У них есть команда, и они подняли сервер
  • Использовали разработки сторонних программистов
  • Сторонние разработчики кинули свои проекты
  • Пришлось использовать другой инструментарий, в котором не было нужных плагинов
  • Пробовали написать сервер сами — худо-бедно, но получилось дойти до беты
  • Решили писать свою MMORPG с преферансом и благородными дамами
  • Использовать распространенные движки не позволяет религия, и обязательно нужно использовать Java (третья заповедь нового завета)
  • Новая игра точно будет крутой и порвет все стереотипы

Может быть, есть причина, почему на Java нет движков? ;) Может, не так-то и нужна Java для игродева?
Топик перенесли в «Я пиарюсь»., в начале он был в «Game Development». Моей целью пиар не был. Некоторым людям статья понравилась или была полезна — я писала для них, а не ради того, чтобы развлечь картинками тех, кому содержимое статьи не интересно. Высасывать картинки из пальца я намеренно не хотела, а related картинок у меня нет.

В следующий раз нарисую комикс, так и быть.
Прошу прощения, но топик буквально создан для «Я пиарюсь», почерпнуть что-то полезное с точки зрения гейм-дева здесь очень сложно: буквально, вышел анонс некоторой новой игры и рассказана предыстория, что тоже, однако, небезынтересно. Отсюда, думаю, и просьбы «о картинках», потому что анонс вышел достаточно сухой и неочевидный.

Ваш предыдущий топик был куда более «гейм-дев», чем этот, потому что там поднимались технические вопросы, хоть и возникла некоторая полемика впоследствии.
Ну, мне не остаётся ничего, кроме как в следующий раз написать что-нибудь совсем GameDev, с исходниками и скриншотами :D
Было бы крайне хорошо :)
Написано интересно, потому без особых проблем всё осилил без картинок.
Простите, но я считаю, что бОльшая часть вашей истории — не повод чем-либо гордиться.
Сначала вы использовали результат чужого труда чтобы нажиться на нем, потом начали делать что-то свое, продолжая использовать наработки как разработчиков игры, так и сообщества, при этом ничем не делясь.
Типично для России — замутить пиратский сервачок какой-нибудь популярной игры и стараться срубить с этого побольше баблеца, не смотря ни на что.

Да, конечно здорово, что вы пришли к разработке своей собственной игры, удачи вам в этом. Но в вашем пути к этому нет ничего хорошего.
Я не писала, что мы сделали что-то супер-крутое или чем-то очень гордимся. Не надо додумывать, пожалуйста.

Мы не старались срубить как можно больше бабла ни в один из этапов нашего существования. Так же, мы старались всеми силами несколько раз связаться с Нотчем для решения наших лицензионных проблем с Minecraft, но он нам так и не ответил, хотя его публичная позиция весьма чёткая: «делайте, что хотите».
Да вся статья полна дифирамбов — мы сделали первый сервер в мире с большим онлайном, успех, гордость, рекорды, уникальность, мы то, мы се.

Нотчу наплевать, да. А остальным? Вы пишете, что сначала использовали мод от hey0, а потом баккит. Есть ли в бакките хоть строчка кода от вас, так сказать вклад в общее дело, которое вам так помогло на первых этапах? Вы же на этом зарабатывали!
Если есть, то ок, я затыкаюсь.
Я открыто публиковала мод авторизации, который использовали практически все, кому он был нужен тогда, так как аналогов мода не было. Даже после того, как мод стал частью нашего GreenPlugin, я продолжала его поддерживать до тех пор, пока мы не перешли на GreenServer и я не оставила сообщество Bukkit. Я хотела участвовать в разработке и Bukkit тоже, но в то время моего опыта было слишком мало, чтобы привнести в проект что-то полезное.

В настоящее время я собираюсь поделиться своими наработками с сообществом движка JMonkeyEngine, когда у меня появится время выделить их из остального кода клиента. В частности, модификацию на Alpha-tested рендер шрифтов.

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

Насчет остального — да, конечно 1 плагин за 3 года и туманные планы на выкладывание чего-то еще это офигенный вклад :) Но хоть так…
К тому же, почему об этом не написано в статье? Считаете что это не важно?
Одно сообщение назад я написала, что в посте не написано, что мы чем-то гордимся или что мы делаем что-то очень крутое.

Извините меня, конечно, но я всё-таки не мать Тереза, чтобы во всё делать свой вклад, я использую продукты по их лицензиям, плачу за них, если нужно, помогаю кому-то, если мне это интересно. Я стараюсь по мере сил делиться с сообществом своими наработками, например, в моих прошлых статьях, но не всегда они кому-то нужны.

Я считаю, что рассказать обо всём в статье очень сложно, она и так длинная получилась.
Но в посте написано, поищите слово «гордость». И другие слова, которые я писал выше. Не понимаю о чем тут спорить, вся атмосфера поста сводится к тому, какие вы клевые и как многого достигли, недаром он в блоге «Я пиарюсь», нет?

Не бросайтесь в крайности, я не говорю, что вы должны взять и выложить исходники своего сервера в открытый доступ. Я лишь говорю о том, что вы долгое время зарабатывали на труде других людей и ваш вклад слишком незначителен.
Ну вы так говорите, как будто это что-то плохое. Я же говорю, что я с радостью заплатила бы всем, чьи труды мы использовали, но они не просят.
вы так говорите, как будто это что-то плохое

Эээ… Ну да, я считаю что зарабатывать деньги на чужом труде — плохо. Вас это удивляет?

я с радостью заплатила бы всем, чьи труды мы использовали

Вперед.
bukkit.org/
Справа внизу
НЛО прилетело и опубликовало эту надпись здесь
Нет.
Клиент Minecraft сделан на OpenGL без применения графического движка.

Хм, а разве он не использует LWJGL?

В целом, завидую такому упорству — я тоже содержал на паблике сервак с постоянной сотней онлайна (привет, проседания TPS!). Так же частично набросал клиент и сервер, но как-то мне одному стало неохота всё это делать, да и не был уверен в успехе :(
LWJGL — не движок, а просто Java-биндинг OpenGL. То есть, OpenGL для Java (конечно, с дополнительными фичами, потому что это Game Library всё-таки).
О как! Я почему-то думал, что в нём хоть какое-то подобие графического движка есть =)
Все эти майнкрафты уже потихоньку начинают надоедать.
Ужс, раньше школьники делали убийцев минкрафта, теперь к ним присоединились девушки программисты по имени Илья Евгеньивич, куда катиться этот мир??! =D

Не совсем понятно откуда у вас код клиента майнкрафта с большим количеством glEnd, и glPushMatrix, так как это не самый лучший подход и не думаю, что дядя Нотч строит геометрию без использования vbo ну или хотя бы обычных DrawArrays. Тут одна лишь причина, геометрию чанка (куба пространства) не надо перестраивать заново если она не изменилась а значит для каждого кадра не нужен вызов тысяч glBegin glEnd.
Кстати, кроме графики в минкрафте есть еще одни грабли, хранение мира, а это гигабайты данных, тут нужна жуткая оптимизация особенно если вы решили расширять возможности крафта и тратить на кубик пространства больше информации. Джава она же «скученная», многие часто страдают из за нехватки памяти именно по этой причине.
Вы можете посмотреть выше ответ про код клиента и почитать его сами. Minecraft не использует VBO. Хотя да, использует DrawArrays.
Такой подход к отрисовки + ява — ну это как-то грустно, в вопросе производительности.
glDrawArrays и подобные вещи собираются в CallList-ы, так собственно это всё и работает. Кусок чанка «компилится» в call list, когда нужно — перекомпилируется, каждый кадр такой лист вызывается. Насколько мне рассказывали те, кто знает, как это всё работает на уровне драйвера, это ужасно печально и не производительно.

Какая-нибудь моделька — несколько calllist-ов перед которыми идут нужные трансформации поворота и перемещения, буква в чате — call list… Ни каких буферов нет, которые нормально хранятся в видеокарте, только наборы команд и draw arrays, которые собираются в call list.
Я намеренно не хочу делать какие-то итоговые выводы или давать советы, потому что не являюсь экспертом ни в чём из того о чём пишу,

самокритично и похвально…
спасибо, интересно читать ваши статьи.

про монетизацию хотелось бы почитать
Я у них купил около тыщи камней. Тупо было время тратить жалко, а стоили они копейки. Писал в аську номер аккаунта, закидывали. Сейчас наверное ситуация изменилась. А мир там устроен так, что некоторые вещи достать нереально — всё забито, каждый клочок земли застроен, играть это как игру нереально — кому то приходится покупать. Проще и интереснее на своём сервере всё это поднимать и с друзьями играть.
Пустого места сейчас просто ужасно много, например. Но конечно если вы хотите просто строить, то вам прямая дорога на свой сервер или в креатив в сингле. Зато многие постройки у нас стоят по 3 года, многие поколения игроков их видят и вдохновляются, а в сингле их кто увидит?

Аська у нас была тыщу лет назад, тогда мир был очень маленький, сейчас он в 3 или 4 раза больше, чем в те времена.
Завидую вам. Свой сервер — море возможностей. Когда-то мя очень порадовал сервер Nessus от Pbunny (наглядный пример того, что сервер вовсе не обязательно должен быть функционально подобен ванильному) К сожалению, он пока (или больше?) не развивается… Тем временем, вроде ведь было какое-то шевеление по поводу координации команд майна и буккита, но, видимо, всё заглохло. RB буккита так и нет, хотя майн обновился уже пару месяцев назад. Не знаю что там с MCP, важнейшие клиентские моды не обновлены. Выкатили обновление без предупреждения, поломав всё. Авторы майна как будто намеренно издеваются над владельцами серверов и игроками (притом, что денег за лицензию хотят немало)…
А в каких отношениях Вы находитесь с Mojang AG? Ведь если у Вас действительно получится сделать игровую платформу на основе Minecraft, которая будет лучше, длиннее и толще Вами заинтересуются и хорошо если просто отберут продукт и оштрафуют — а то ведь и посидеть придется. З.Ы. не подумайте что я как-либо угрожаю, просто интересно.
После перехода на новый клиент это будет наша на 100% (с использованием открытых либ) игра, моджанг тут ни каким боком.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации