Пользователь
0,0
рейтинг
21 января 2014 в 19:36

Разное → GreenCubes: от Minecraft до MMORPG за 4(?) года

Приветствую вас, уважаемые Хабравчане!

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

Minecraft


Наш проект (в начале нас было только двое: я и Feyola) начинался как сервер Minecraft для друзей. То есть, скорее для друзей друзей друзей, потому что с друзьями мы играли и раньше, но в этот раз решили запуститься уже на более-менее постоянной основе и не сильно фильтровать приходящих людей. Запуск наметили на 1 ноября 2010 года, приурочив его к выходу Minecraft Halloween Update, который принёс в Minecraft много нового. Мы расстались с нашим старым миром и начали всё заново, серьёзно и даже без админских команд.

Друзья приводили друзей, некоторые из них начали организовывать стримы — люди начали стремительно (по меркам того времени) прибывать. Буквально через недели проект начал требовать от нас усилия: внезапно из простого сервера, где мы планировали играть с друзьями, GreenCubes превратился в сервер, над которым нужно ещё и работать. Пришлось учиться, и учиться очень быстро: требовалось многое, от умения принимать важные решения, такие как ввод вайт-листа или, например, уменьшение лимита онлайна, чтобы сервер не упал (он как раз тогда стоял на окне :)), до администрирования серверов на Debian, написания собственных плагинов для сервера и создания полноценного сайта.

Сайты до этого я делать умела, а вот всё остальное было в новинку. Это было лучшее время в нашей жизни, наверное! Мы учились поднимать сервера на Линуксе и самому линуксу, написанию плагинов и программированию на Java, работе с сообществом. Довольно быстро мы решили, что мы должны начать заниматься этим серьёзно и попробовать заработать на проекте деньги. Перспектива выглядела туманно и даже сомнительно, но попробовать стоило. По крайней мере, свободного времени было достаточно.

Challenge


Первой действительно серьёзной проблемой стало то, что Pentium 4, стоявший на окне, уже не вытягивал. Собрав наши небольшие сбережения мы решили арендовать сервер. Именно стоимость аренды сервера на Windows (на тот момент другие варианты были нам слабо знакомы) подтолкнула нас к тому, чтобы учить Linux и поднимать сервер на Debian. Так, купив книжку и начитавшись мануалов, Feyola стала «системным администратором» :D

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

Кто ж знал, что у движка была дырень в безопасности: он делал бэкапы базы и клал их в одну из директорий сайта, где злоумышленники могли их найти. Каким-то магическим образом расшифровав хэш пароля, злоумышленник не только завалил сайт и форум неприятными надписями, но и взломал почту Feyol'ы и контрольную панель хостера… Кончилась эта история весьма ужасно и лишь полтора года назад: один человек из кампании взломщиков с целью просто насолить выложил украденные личные данные в интернет. Теперь у нас паранойя, очень длинные и везде разные пароли. Не мне вас учить элементарным принципам безопасности, но не всегда почему-то о них думаешь, пока один раз не станет всё очень плохо…

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

А после этого писать другие плагины, которые потом слились в один большой плагин под названием GreenCubes, содержавший огромное количество нашего уникального функционала. Все наши идеи по развитию сервера мы реализовывали через него.

Очень быстро нам перестало хватать того сервера, который мы арендовали. Собрав изрядные по тем временам для нас деньги, мы арендовали выделенный сервер (до этого ютились на виртуальном). Новый сервер позволил нам держать онлайн аж в 100 человек! Это была просто небывалая цифра, ни у кого таких цифр тогда (в феврале 2011) не было. Но сервер колоссально тормозил (замедление было более чем в 20 раз от номинальной скорости). Даже новый выделенный мощный сервер колоссально тормозил при 80+ игроках онлайн! Мы упёрлись в архитектуру сервера Minecraft. Очередной раз нас подвело то, что мы слишком зависим от сторонних продуктов.

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

К этому времени проект начал приносить какие-никакие, но деньги. Мы продавали премиум-аккаунт, который включал в себя, в основном, вход на сервер после его переполнения, и внутриигровые предметы. Жить на это вдвоём было ещё нельзя, но перспективы были. Если бы только удалось избавиться от жутких лагов и дать возможность играть всем, кто этого хочет…

Набравшись к тому времени опыта в программировании на Java мы возомнили себя «сильными» программистами, способными, если уж не горы свернуть, то хотя бы пофиксить узкие места в сервере, чтобы он стал по производительнее. К сожалению, мы только расшатали сервер, из-за наших «исправлений» он начал тормозить ещё больше и иногда даже падал… Не скажу, что мы совсем не добились результата: например, нам удалось перевести работу печек на секунды вместо циклов сервера, что улучшило игру, так как не приходилось ждать часами переплавки руды (позже такое же очевидное изменение сделали авторы Bukkit). Но тогда мы в первый раз решили, что всё очень плохо, и если мы не изменим что-то кардинально, то нашему проекту конец: мы не можем уменьшить предел онлайна, мы не можем оставить сервер лагать, и уж тем более не можем увеличить предел. Очередь входа на сервер была уже огромной (относительно онлайна), люди жаловались на лаги и длинную очередь, уходили с проекта.

GreenServer


После очередной попытки придумать, как нам исправить положение дел, 21 марта 2011 года мы пришли к судьбоносному решению: чтобы продолжать развиваться, мы должны написать свой сервер Minecraft. Так зародился GreenServer.

GreenServer, оглядываясь назад, был наверное самой наивной задачей из всех, которые мы тогда перед собой ставили. Ни я, ни Feyola не имели достаточно опыта как в программировании вообще, тем более в создании чего-то столь серьёзного. Я была уверена, что смогу закончить весь необходимый функционал к концу мая. Как стало модно последнее время говорить, «я никогда так сильно не ошибался».

К концу мая я не только не успела всё закончить — всё что я успела, это сделать ужасно забагованную тестовую версию практически без функционала. Я была уверена, что уж хотя бы ещё через месяц я точно всё закончу, сделаю всё что есть в официальном сервере Minecraft и наших плагинах, и мы пойдём дальше. Я снова сильно ошиблась, конечно же. И хотя нам удалось с горем пополам 27 июня 2011 года перейти на GreenServer, переход был печальным.

Мы получили ужасно нестабильный сервер, который не только не обладал огромной частью функционала (не было мобов, например), так ещё и постоянно падал, не говоря уж о многочисленных ошибках. За первые два дня мы исправили их просто уйму, и кое-как перешли с версии Alpha на версию Beta, что должно было означать хотя бы стабильность. Тогда мы решили, что к концу лета должны закончить всё, что потеряли при переходе, и перейти с версии Beta на версию 1.0. Стоит ли мне говорить, что сервер на стадии Beta до сих пор?

Мы выпускали по 3-5 обновлений в неделю, но всё равно совершенно не успевали в сроки. Перенести мобов с оригинального кода Minecraft не получалось из-за огромных различий в архитектуре, а в сервере тем временем находились всё новые и новые баги… Нам пришлось потратить всю осень 2011 года для того, чтобы сделать GreenServer стабильным, но это стоило того! Сервер смог тянуть более 300 игроков одновременно (наш рекорд — 500+), а перезагрузка требовалась лишь для установки обновления. Это был успех! Именно тогда мы поняли, что усилия стоили результата. Пожалуй, мы имели первый в мире полноценный сервер Minecraft, пусть и не с полным функционалом, зато поддерживающим огромный онлайн и официальный клиент последней версии.

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

Клиент


В то время мы тащили за собой клиент Minecraft. Он был немного модифицирован, с плагинами, но мы всегда переходили на самый новый клиент Minecraft. С одной лишь разницей от наших конкурентов в том, что фактически от новой версии у нас была лишь цифра. Большинство функций новых версий Minecraft не поддерживал сервер, и мы их не вводили либо намеренно, либо из-за недостатка времени. Однако некоторые функции мы всё же реализовывали, например, мы быстро сделали поршни, введённые в Beta 1.6, сразу подумав о том, как люди могут ими грифить постройки и введя необходимые меры защиты. Многие сервера после этого обновления серьёзно страдали от гриферов, но не мы. Мы научились думать, что если один игрок как-то может испортить игру другому игроку, он обязательно попытается это сделать. Конечно, не каждый игрок, но в более-менее открытом сообществе обязательно найдутся люди, которые захотят ему навредить.

После этого мы решили вводить свои идеи, свой контент. Мы поняли, что тянуть за собой постоянные бессмысленные обновления клиента Minecraft уже не возможно и приняли решение перестать обновлять клиент, и вводить только наши изменения, а не изменения Notch'а (создателя Minecraft) и Jeb'a (тот, кто начал разрабатывать Minecraft после выхода версии 1.0). Мы остановились на версии клиента 1.0, которая как раз вышла тогда. Наши руки были более-менее развязаны. С Minecraft у нас с того момента были разные пути.

Мы начали вносить серьёзные изменения контента и геймплея, требующих в том числе объемных модификаций клиента. Сделали мод на полноценное написание книг (которое и по сей день является гораздо более качественным, чем то, что позже ввели в Minecraft): у нас в сообществе книги стали довольно важны, каждый зажиточный игрок имеет свою библиотеку, многие игроки пишут свои книги или переписывают книги из других источников, развито (точнее, было развито) книгоиздательское дело.

Внесли такие серьёзные архитектурные изменения как расширение максимального количества типов блоков с 256 до 4095, которое тоже позже (значительно) появилось в оригинале. Конечно же мы не претендуем на право первопроходцев в этих модификациях, моды на Minecraft с такими функциями были задолго до того, как их сделали мы, но мы были первым действительно крупным сервером, который имел этот функционал.

Новички


Тогда мы считали, что в целом у нас есть отличная игра, а всё что нам нужно — облегчить некоторые аспекты игры, такие как приход новичков и управление крупными городами и государствами.

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

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

Мы поняли, что наша игра слишком сложна для новичка. Даже не смотря на все наши усилия, играть, не прочитав перед этим несколько гайдов и без поддержки хотя бы википедии со списком рецептов крафта, было ужасно сложно первое время. Мы поняли, что для начала обязаны полностью изменить крафт. Мы используем крафт как в Minecraft, в котором все рецепты нужно запоминать или подсматривать. Конечно, с одной стороны это интересное геймплейное решение, с другой — совершенно бессмысленное: все рецепты крафта известны и вместо удобного крафта или поиска рецептов, получается лишь неудобное запоминание или подглядывание в третьи источники. Мы решили сделать красивый интерфейс крафта, в котором не нужно будет ничего запоминать. Придумали, сделали макет, нарисовали дизайн… получилось отлично! Одна лишь проблема: мы опять ударились в ограничение архитектуры. На этот раз архитектуры клиента.

Новый клиент


Возможно, абзац будет не совсем понятен далёким от программирования графики людям, но надеюсь это не будет большой проблемой.

Клиент Minecraft сделан на OpenGL без применения графического движка. Даже внутри кода клиента разделения на графический движок и логику почти нет, это значит, что вызовы OpenGL перемешаны с кодом логики. Для тех, кто серьёзно работал с OpenGL, возможно, будет очевидно, что вносить изменения в такой код, при этом ничего не сломав, ужасно сложно. Нужно обязательно не забыть где-нибудь сделать popMatrix и прочие glEnd и glDisable… Нет ничего удивительного, что через полтора года моей работы с таким кодом клиента, который к тому же писала не я сама, клиент начал сыпаться. Сыпаться просто ужасно, начиная от простых лагов, заканчивая совершенно странными графическими багами и падениями.

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

Правильное решение было лишь одно: мы должны начать писать новый клиент. Но это ещё не всё, новый клиент решил бы далеко не все наши проблемы.

Новая игра


Не смотря на все наши усилия, вложенные в развитие проекта, к настоящему времени наша популярность значительно снизилась относительно наших самых успешных дней. Были времена, когда онлайн в 200 человек считался нормой, а сейчас онлайн и в лучшие дни в часы пик едва переваливает за 100. Проблема для нас была очевидна уже довольно давно: нам нечего предложить игрокам.

Когда-то мы считали, что у нас есть отличная игра Minecraft, всё что нам нужно — сделать социальные функции для большого числа игроков, такие как города и экономика, избавиться от лагов, дать возможность большому числу игроков играть одновременно и мы будем успешны! Какое-то время это работало, но потом люди снова стали уходить.

Всё дело было в том, что у нас не так много осталось от Minecraft. Разве что убогие квадратные модельки, да изменяемый мир. Мы не ввели большого количества функций Minecraft, которые были интересны игрокам, у нас не было разнообразия интересных модов Minecraft. Мы не делали Minecraft, собственно, мы не делали ничего. У нас было много своего контента, у нас был изменяемый мир, но в целом у нас не было игры, в которую люди хотели бы играть. Всё что осталось у нас — социальная песочница, в которую переставало быть интересно играть даже заядлым олдфагам, которые играли у нас более двух лет.

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

И к нашему третьему дню рождения (1 ноября 2013), кроме нового клиента мы анонсировали разработку совершенно новой игры — MMORPG с полностью изменяемым миром.

Инди-разработчики


Вы никогда не задумывались о том, что крупные геймдев-компании постоянно кормят нас сиквелами уже давно всем надовших хитов? Assassins Creed XI, Call of Duty 20, Battlefield 9… Мало какая крупная компания позволяет себе сделать что-то совсем новое, конечно что-то более-менее новое появляется, когда какой-нибудь Близзард делает по-своему клон DoTA, но это всё же не новая игровая концепция.

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

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

Гейм-дизайн


Мы поставили перед собой, на мой взгляд, одну из самых сложных целей в геймдеве: создать полноценную онлайн-RPG с полностью изменяемым миром.

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

К счастью, так как мы были сервером Minecraft, у нас есть опыт решения проблем с изменяемым миром, таких как: места для новичков, загаживание мира, застревание игроков и прочие — не имей мы этого опыта, делать что-то подобное было бы просто безумием!

Было принято решение делать сразу три дела: я разрабатываю новый клиент, Feyola продумывает гейм-дизайн, а параллельно мы вместе поддерживаем существующий мир, внося небольшие обновления. После завершения клиента мы начнём вводить новый геймплей.

Если кому-то интересно, что же мы напридумывали, то большинство базовых идей собрано здесь. Просто объединить хорошие идеи для создания хорошей RPG, как выяснилось, мало. Продумывая всё подробнее, мы наткнулись на то, что всё ужасно сложно. Баланс, различные мелочи… В настоящее время детали геймплея всё ещё прорабатываются и будут прорабатываться ещё долго. Некоторые вещи мы начнём вводить до того, как всё будет продумано, но до этого ещё есть время :)

Программирование


Программист у нас в команде один — это я. И хотя на самом деле этого довольно мало, работать в команде я не умею и не очень хочу. В целом, это конечно же мои личные проблемы, но стоит упомянуть, что тянуть такой проект одной (в плане программирования) очень сложно.

У нас уже есть написанный сервер, а значит часть дела сделана: нужно только написать клиент. Казалось бы, что может быть проще, имея такой опыт работы. До этого я очень много «общалась» с кодом клиента Minecraft и была уверена, что написать новый не составит особого труда, тем более на нормальном движке. Я никогда так сильно не ошибалась, как говорится…

Проблемы нехватки опыта в программировании графики начались с самого начала: от простого непонимания того, как работают шейдеры и что с ними делать, до того, как мне качественно рендерить текст на табличках.

Клиент было решено писать на Java. У меня есть много причин, почему Java, а не C++, например, тут можно целую статью написать об этом, так что дискуссию на сей счёт открывать не стоит (Java-haters gonna hate). Но основные причины в том, что я отлично знаю Java, умею писать на ней многопоточный код, и у нас всё написано на Java. Использование других языков потребовало бы намного больше часов на обучение, отладку и написание кода. На Java можно делать производительные клиентские приложения, и я это докажу :)

Конечно, у нас была возможность взять какой-нибудь Unreal Engine или Unity и писать клиент на их скриптовых языках… Но это породило бы новые проблемы: во-первых, пришлось бы разбираться с лицензиями и прочей бюрократией, проект у нас всё-таки коммерческий, а значит нужно кому-то куда-то платить, часто не понятно сколько и каким образом (у Unity, конечно, преимущество в этом вопросе перед UE). Во-вторых, изменяемый мир требует возможности на очень низком уровне собирать меши (модели) ландшафта, значит нужен доступ желательно в «самый низ», к коду движка, а не его скриптам, пусть даже компилируемым. Опять же, остаётся проблема с изучением всех тонкостей движка.

Я остановилась на open-source движке jMonkeyEngine версии 3.0. Это полностью открытый движок, написанный на Java. В качестве рендера использует OpenGL. Других движков на Java, скорее всего, даже нет, но это не проблема: в jME есть всё, что нужно. Если честно, это лучшая библиотека, с которой я работала, не считая trove.

Текущая ситуация


Не смотря на то, что наш проект сейчас значительно менее популярен, чем в лучшие времена, мы держимся весьма уверенно. Для четверых человек GreenCubes в настоящее время является основной работой: кроме меня и Feyol'ы, у нас есть штатный художник и кто-то типа комьюнити-мэнеджера, которая занимается довольно большим спектром работы с сообществом и разными небольшими задачами. Вообще, работа с сообществом — это ужасно важно: в настоящее время нам на безвозмездной основе помогают несколько модераторов и хелперов, решающих ингейм-проблемы игроков и следящие за порядком, а наш форум является довольно большим и активным сообществом, где обсуждают не только наш проект. Вообще, есть определённая группа игроков, для которых мы стали почти второй жизнью, кто с нами уже почти три года. Это довольно приятно :)

Вместо заключения


Конечно, мне есть о чём ещё рассказать, но статья получилась и без того слишком длинная. Гораздо лучше будет, если вы просто зададите свои вопросы: на некоторые я отвечу сразу, некоторые выделю ещё для одной статьи, которая может быть появится, когда накопится то, что можно было бы показать/рассказать. Так что спрашивайте ваши ответы; если хотите, чтобы о чём-то конкретном я рассказала подробнее — тоже пишите.

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

Огромное спасибо моему другу и коллеге Xitaly за редактирование текста.

To be continued...

UPD: Жаль, пост перенесли в «Я пиарюсь», здесь он выглядит совсем по-другому. В оригинале он был в «Game Development».
Анна Дорогова @Rena4ka
карма
71,0
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разное

Комментарии (101)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    Вперед.
                    bukkit.org/
                    Справа внизу
                    • 0
                      Вы случайно не один из разработчиков?
                      • +1
                        Нет.
  • +1
    Клиент Minecraft сделан на OpenGL без применения графического движка.

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

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

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

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

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

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

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

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.