Показаны сообщения с ярлыком game development. Показать все сообщения
Показаны сообщения с ярлыком game development. Показать все сообщения

вторник, мая 17, 2011

Отчет о поездке на КРИ 2011

13-14 мая был на КРИ 2011.
Список лекций, на которых я успел сходить:
  1. Интерфейсы "Аллодов Онлайн" изнутри.
    Это было в 10 утра, проектор в этом зале еще не работал, так что слайдов не было. Лекция была довольно странная, про языки программирования, взаимодействие клиента и сервера, систему аддонов, виджетов и скриптов, репликацию данных, внутреннее устройство классов - и все за 20 минут. Я кстати, видео на фотоаппарат снимал и выложил то, что вышло на youtube - 1/2, 2/2.
  2. Игровая механика, управляемая данными.
    Проектор все еще не работал, лекция без слайдов, так что тоже не слишком понятная вышла. Посвящена была data-driven подходу в грядущей игре Prime World от Nival. Цель - передать как можно больше работы от программистов гейм-дизайнерам. А именно - передать настройку взаимодействия различных игровых объектов, таких как игроки, NPC и прочее, между собой. Грубо говоря, кто кого и с какой силой имеет право бить файрболом по башке. Все это реализовано через систему аппликаторов и функций. Функции кодируются в строки, передаются на клиент в виде закодированных в base64 данных и на клиенте распаковываются и компилируются, если я правильно уловил идею.
  3. Мир танков: проблемы роста
    Лекция про проблемы масштабирования, с которыми столкнулись в wargaming.net при увеличении популярности World of Tanks. Как устроена раздача патчей (CDN/torrents), проблемы, связанные с ростом команды на 100% за год, немного про отдел тестирования и про необходимость отдельного отдела для deployment'а.
  4. Портируем с iPhone на Windows Phone 7 за 24 часа.
    Лекция была посвящена переносу одной игры с iOS на Win Phone 7, вели ее двое - Михаил Черномордиков из Microsoft и парень из проекта этой игры. Я фотографировал слайды, так что пока не найдется нормальная презентация, можно посмотреть на них. В том числе там был любопытный слайд про доли рынка мобильных ОС. Я вытащил данные с него в google docs:


    Диаграмма, которая говорит о планируемых продажах мобильников с конкретными ОС с 2010 по 2015. Мораль: в 2015 половина новых смартфонов будет под андроидом. Также актуальными будут iOS и Windows Phone 7.

    А на этой диаграмме показаны доли уже существующих на руках у людей смартфонов в 2010 и 2014 году. Хоть Nokia и перестала поддерживать Symbian, но в 2014 эта ОС все еще будет установлена на трети мобильников. Значительно (до четверти рынка) вырастет доля андроидов, прибавит Windows Mobile. BlackBerry с iOS стагнируют.
  5. CPU спешит на помощь.
    Лекция Intel'а про обратный перенос вычислений с GPU на CPU с целью оптимизации FPS в графических приложениях.
  6. Постмортем King's Bounty: Legions
    Странный пост-мортем про не вышедшую игру от KranX. Игра планируется к выходу в виде беты (альфы?) летом. Первой платформой для выхода назначен facebook, то есть это будет социальная игра. Клиент будет сделан на Unity engine. Поскольку это довольно новая технология, разработчики столкнулись с некоторыми подводными камнями, из которых я запомнил сложности для дизайнеров и то, что владельцы Unity внезапно для KranX'а захотели процент от прибыли за включение кэширования. Язык программирования клиента - C# Mono, сервера тоже на С# с использованием Photon Socket Server.
  7. Архитектура и процессы разработки серверной части Prime World.
    Судя по зоопарку языков программирования, упомянутых докладчиком, поддерживать это будет очень сложно. Это сложно сделанная социальная игра, в которой имеются разные части - мирная (для девочек) и dota подобная (для мальчиков и пацанок). Еще есть замок, в котором строятся разные здания. Клиент сделан тоже на Unity, язык программирования C#, сервер замка написан на python, сервер боевой части на C++, в клиенте для этой части используются C++ и Lua. Еще кое-где используется PHP. Для разных целей используются разные базы данных - упоминали MongoDB и связку Python+Jungo SQL DB для обработки отчетов об ошибках.
    Рассказали также про сбор игровых метрик (весьма ценная вещь для поддержки и оптимизации нагрузки на сервера). Для отчетов по метрикам используют Pentaho.
  8. Unity pipeline в Nival Network
    Рассказывали про организацию workflow между гейм дизайнерами, разрабатывающими 3D модели в Maya и программистами, использующими их в Unity. Докладчик ужасно торопился рассказать все что можно, так что если кто-то в дальнейшем не выложит видео, разобраться довольно сложно. Я фотографировал слайды, но из них одних понять этот pipeline будет трудно.
  9. Prime World
    Высокоуровневая лекция в философском ключе про игру Prime World. Сергей Орловский рассказывал про то, как Nival несет счастье людям :) А также показывал трейлеры игры. Слайды здесь. Самый интересный слайд:
    Распределение рынка игр по различным платформам. Видно, что рынок PC игр хоть и остается самым крупным сегментом, в общей массе занимает уже совсем небольшую часть.


  10. Игры для массовой аудитории: мультиплатформенная гонка.
    Александр Лысковский из Alawar'а рассказывал об игровом бизнесе. Мораль лекции - платформы меняются, а игровая индустрия будет стоять вечно :) Слайды здесь.

пятница, августа 21, 2009

Список open source игр.

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

В принципе, должно быть полезно для того, чтобы учиться писать программы в команде. Всё равно в одиночку сейчас ничего серьёзного не напишешь, а так и fun и польза. Посмотрел тут на днях исходники одной open source игры в процессе разработки (в том списке она ещё отсутсвует) - FreeOrion - по мотивам Master of Orion. Она еще до версии 1.0 не добралась, но написано уже порядочно. Пишут на C++ и Python, используют Boost, OGRE и еще много интересных технологий и библиотек.

Код написан в хорошем объектно-ориентированном стиле, при поверхностном осмотре замечены boost::graph (библиотека для работы с графами - для моделирования вселенной, в которой каждая звездная система - вершина графа), boost::statechart (конечный автомат - для переходов между разными состояниями игры), boost::python, boost::shared_ptr, а также обильное использование STL. Так что можно просто посмотреть, как надо писать.

Я думаю, что и в других достаточно давно существующих проектах, таких как Battle for Wesnoth (пошаговая стратегия в фэнтези мире), FreeCol (клон Colonization написанный на java), OpenTDD (open source клон Transport Tycoon Deluxe), UFO Alien Invasion (клон X-COM) есть чему поучиться в смысле программирования игр. У таких долгоиграющих проектов есть развитое community, wiki сайты, форумы, всегда можно получить помощь, если что-то не понятно.

P.S. Нашёл wiki, посвященную таким играм - Libregamewiki.
А так же блог на английском - freegamer.blogspot.com

пятница, июля 24, 2009

Игры для программистов

Update от 10 Сент 2015 г: Более свежие посты на эту тему:  #1, #2 и #3.

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

Список таких игр с кратким обзором можно найти на хабрахабре.

Самые известные:

  • Robocode - соревнования между танками-роботами, алгоритм нужно писать на Java (пытаются написать C# клон игры - http://www.pureai.com/TankAI/).
  • Google AI Challenge - создание программы по контролю над колонией муравьев, сражающихся с колониями муравьев других игроков. Программу можно писать на куче реальных языков программирования.
  • GalaxyFx:Старатели - космические зонды должны собирать ресурсы. Игра сделана в Sun Microsystem, писать нужно на JavaFX Script. Можно участвовать в соревновании и выиграть призы от компании - главный приз ноутбук.
  • Terrarium - создать живое существо и победить в борьбе за существование. Писать надо на C# (.Net 2.0)
  • Breve - моделирование децентрализованных систем и искуственной жизни. Написано на Python, алроритмы нужно писать на нём же или на собственном языке.
  • HabraWars - сражение роботов, писать надо на JavaScript.
  • web-worker-wars - еще одно сражение ботов написанных на JavaScript.

Это все open source по большей части, так что если надоест играть, то можно и в самих проектах поучаствовать.
Есть куча подобных игр, использующих свои собственные языки программирования. С точки зрения обучения программированию это несколько более запутанный способ, чем писать на реальном языке, но в принципе тоже полезно. В конце концов когда я в ВУЗе учился, за 5 лет нас заставили попробовать писать примерно на 10 языках программирования, включая всякую экзотику, реально я из всего этого только C/C++ и Perl сейчас использую.
  • A.I. Wars - программирование роботов-жуков
  • Colobot, Ceebot - роботы, осваивающие другую планету. Язык программирования Cbot - смесь C#, C++ и Java.
  • DarwinBots - программирование колонии микробов
  • Infon Battle Arena - программирование жучков на языке Lua.
Полный (наверное) список подобных игр можно увидеть на DMOZ.

P.S. Еще одна возможность что-то запрограммировать в игре, которая приходит мне в голову - программирование скриптов в R3: Reunion. Это большая игра, посвященная космосу и разработчики оставили для всех желающих возможность перепрограммировать всевозможные скрипты в ней, подробнее можно ознакомиться тут - Космическое программирование.

среда, июля 02, 2008

Обзор бесплатных игровых движков (game engines)

Поскольку моя сегодняшняя работа связана с графикой, в том числе с разработкой инструментов для разработчиков игр, всё, что связано с game development'ом стало мне сильно интересно.

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

В общем на сегодняшний день самые продвинутые free game engines:

  1. OGRE (Object-Oriented Graphics Rendering Engine). Объектно-ориентированный графический движок рендеринга. Написан на C++, 3D графика, внутри используются Direct3D and OpenGL. По этому движку у буржуев даже книги выпускают. Есть русский сайт. Для работы с последней версией движка нужен один из следующих компиляторов gcc, Visual C++ 7.1 (2003), Visual C++ 8.0 (2005).
    На самом деле это не совсем игровой движок, как написано в документации:
    "Ogre - графический, и только графический движок. Это значит что ничего другого кроме вывода и обработки графики он не делает. Но это значит еще и то, что к нему можно прикрутить сторонние библиотеки для создания полноценной игры, а именно:
    • Звук
    • Организация сети
    • Ввод(манипуляторы, джойстики)
    • Расчет столкновений
    Ogre не содержит эти библиотеки, но предоставляет интерфейс, который позволяет легко подключать внешние модули."
    На этом движке делают в том числе и коммерческие игры, в частности игру "Стальные монстры" (Pacific Storm) написали на нём.

  2. Crystal Space Open source кросс-платформенный SDK для 3D графики в реальном времени, в особенности для разработки игр. Написан на C++, но использовать его можно не только в C++ проектах, но и из Python, Perl, Java проектов.

  3. Nebula engine 2. Open source 3D game and visualisation engine. Использовался в нескольких коммерческих играх. Написан также на C++, работает только под Windows, использует DirectX 9.0. Есть классы для реализации шейдеров (HLSL и FX-файлы DirectX), скелетной анимации, системы частиц, теней. Поддерживает несколько широко распространённых скриптовых языков TCL, Python и Lua.

  4. Irrlicht. Всё почти аналогично, open source, кроссплатформенный, написан на C++, можно использовать из-под .NET (языки типа C#, VisualBasic, and Delphi.NET)

  5. OpenSceneGraph. Open source, кроссплатформенный, написан на стандартном C++, использует OpenGL. Работает с трехмерными моделями форматов .lwo, .obj, .geo, .3ds, .x, .wrl, то есть с объектами, созданными в любом современном редакторе трехмерной графики (3DS Max, Maya и Lightwave 3D).

Есть еще ряд бесплатных движков (в частности GLScene, Blitz3D, Dark Basik, Panda3D), но эти самые раскрученные.


Что ещё почитать на тему движков: