Проект Darkstar был темой ежемесячного JavaSIG вчера вечером в офисах Google в Нью-Йорке. Для тех, кто не знает (возможно, всех), Project Darkstar - это основа для многопользовательских онлайн-игр, которые пытаются позаботиться обо всех "тяжелых вещах". Основная идея заключается в том, что вы пишете логику игрового сервера таким образом, чтобы все операции разбивались на крошечные задачи. Вы передаете эти задачи в структуру проекта Darkstar, которая обрабатывает их до определенного node в кластере, любые проблемы concurrency и, наконец, сохраняя данные.
Очевидно, что делать такие вещи - совершенно другая проблема для видеоигр, чем для корпоративных приложений. Джим Уолдо, который прочитал лекцию, утверждает, что в MMO-играх коэффициент чтения/записи БД составляет 50/50, тогда как корпоративные приложения больше похожи на 90%, 10% на запись. Он также утверждает, что большинство существующих MMO хранят все в памяти exlcusively и только сбрасывают DB на каждые 6 часов. Это означает, что если сервер опустится, вы потеряете всю работу с момента последнего сброса базы данных.
Теперь сам проект звучит очень круто, но я не думаю, что индустрия его примет. Во-первых, вы должны написать свой серверный код на Java. Клиентский код можно записать во что угодно (Джим утверждает, что ActionScript 3 является самым популярным, следуйте С++), но сервер должен быть Java. Звучит неплохо для меня, но у меня действительно создается впечатление, что все в игровой индустрии ненавидят Java.
Во-вторых, в отличие от других отраслей, где разработчики предпочитают использовать существующие фреймворки и библиотеки, ребята из игровой индустрии, похоже, любят сами писать все. Мало того, им нравится переписывать все для каждой новой игры, которую они производят. Вещи начинают меняться, когда разработчики используют Havok для физики, Unreal Engine 3 как свою платформу и т.д., Но по большей части похоже, что все по-прежнему является собственностью.
Итак, ребята из Project Darkstar просто теряют время? Может ли общая структура, подобная этой, действительно работать для сложных игр с требуемой производительностью? Даже если это действительно работает, являются ли игровые компании готовы использовать его?