GameDev — Piece of Cake

Slava Tretyak

GameDev — Piece of Cake

Slava Tretyak (restorer@zame-dev.org)

Немного истории

  1. Игры появились очень давно

1962 — Spacewar для PDP-11

События развиваются стремительно

  1. 1971 — Аркадный автомат Galaxy Game

1978 — Space Invaders

1979 — Pac-Man

Наступили 80-е

  1. 1980 — Nintendo Game & Watch

Раньше

  1. Медленный процессор
  2. Мало памяти
  3. Обновить всё изображение очень сложно, если вообще возможно
  4. Почти нет спецэффектов

Игровой процесс как рисование карандашом на бумаге

  1. Рисуем уровень

Если под игроками и врагами есть фон

  1. Сохраним кусок изображения под героем

Сейчас

  1. Быстрый процессор
  2. Достаточно памяти
  3. Самый смартфон превосходит большинство старых компьютеров
  4. Лучше нагрузить процессор и память, но упростить код

Современная техника

  1. Очищаем экран

Game Loop

  1. Init — Загрузка графики, звуков, уровней
  2. Update — Обновить координаты, показатели здоровья и другое
  3. Render — Всё нарисовать
  4. GOTO 2

А когда же можно делать игру?

  1. Писать низкоуровневый код не всем интересно

Какие будем выбрать?

  1. Кроссплатформенные (по крайней мере windows / linux / osx)
  2. Не просто кроссплатформенные, но движки именно для игр
  3. Поддержка 2D игр
  4. Бесплатные для использования в процессе обучения

Игровые движки

Unity

  1. Недавно появилась поддержка 2D игр
  2. Впечатляющий список поддерживаемых платформ
  3. Код пишется на C#
  4. Но так же можно на UnityScript или Boo
  5. Мощный редактор сцен

Ho

  1. Объёмный

Cocos2d-x

  1. Бесплатный (в том числе для коммерческих целей), open source
  2. Множество поддерживаемых платформ
  3. Основной язык написание кода — C++
  4. Но так же можно на JavaScript и Lua

Ho

  1. Сложный старт

Cocos2d-html5

  1. По аналогии с cocos2d-x
  2. Всё пишется на JavaScript
  3. Не надо компилировать
  4. Запустить можно везде, где есть современный браузер

Ho

  1. Такое же API как и в cocos2d-x

LÖVE 2D

  1. Бесплатный (в том числе для коммерческих целей), open source
  2. Windows / Linux / OsX
  3. Порт на Android (правда, не последней версии)
  4. Код пишется на Lua
  5. Очень простое API

Ho

  1. На самом деле только одно но

Lua

  1. Спецефичен
  2. Но он очень, очень, очень быстрый
  3. И не очень требовательный

Признан крупными GameDev компаниями

  1. Allods Online
  2. Angry Birds
  3. Baldur’s Gate
  4. Blitzkrieg
  5. Civilization V
  6. Crysis
  7. Far Cry
  8. ...

Признан крупными GameDev компаниями

  1. ...
  2. FlatOut
  3. King's Bounty: The Legend
  4. Painkiller
  5. S.T.A.L.K.E.R.: Shadow of Chernobyl
  6. SimCity 4
  7. World of Warcraft
  8. И ещё более 100 игр

Lua ♥ JavaScript

  1. Переменные глобальны по умолчанию
  2. Надо использовать local, чтобы сделать их локальными
  3. По аналогии с var в JavaScript
  4. Двойной синтаксис при обращении к объектам
  5. obj["field"] = obj.field
  6. Наследование немного похоже на прототипное в JavaScript

Но синтаксис особый

			function loadSprite(path, pos)
			    -- Загрузка картинки
			    local result = {}
			    result.image = love.graphics.newImage(path)
			    result.off = result.image:getWidth() / 2
			    result.pos = pos or 0
			    return result
			end
		

Весьма особый

			function loadSprite(path, pos)
			    -- Загрузка картинки
			    local result = {}
			    result.image = love.graphics.newImage(path)
			    result.off = result.image:getWidth() / 2
			    result.pos = pos or 0
			    return result
			end
		

Let’s cook!

Made with Shower