Создание компьютерной игры

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

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

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

Выбор идеи и типа

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

  • фантастика / будущее / космос
  • фэнтези / мифология / религия
  • реальность / история / криминал / война / симуляция / строительство / спорт
  • математические и физические головоломки
  • художественная литература

Дальше - продумать против чего игрок должен бороться и чем управлять. Это конкретные активные противники (стратегии / стрелялки) или же результат деятельности самого игрока (логические игры). В результате сценария игра так или иначе приводит к жанру и способам управления:

О тестировании web-приложений (ITI0120)

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

А если отвлечься и рассматривать системно, то роль тестера на самом деле лежит в каждом человеке. Если смотреть на проект как на человека, то роли

  • управляющего проектом это позвоночник и вегетативная нервная система
  • программисты это скелет и моторика
  • аналитики это органы чувств
  • тестеры это совесть

Quality Assurance часто считается синонимом тестирования, но на самом деле это методика предотвращения ошибок, а не их поиска и исправления. Качество в этом смысле - характеристика сделанного продукта.

Dilbert Dilbert

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

Важность тестирования ПО особенно важна в критических системах. К примеру аппарат по лучевой терапии Therac (1985) облучил смертельной дозой радиации 6 человек из-за отсутсвия проверки состояния агрегата в коде и валидации. Или марсоход в 1999 году принёс убыток в 125 млн долларов из-за непродуманности единой системы измерения между коммандами разработчиков. И даже в Эстонии при электронных выборах были проблемы из-за плохогонагрузочного тестирования.

Основные принципы тестирования воплощены в небольшом документе ISTQB и в книге «Foundations of software testing». Вся «прелесть» специальности тестера в том что как правило для этого не нужны большие познания в программировании и люди далёкие от web-строительства могут себя попробовать в этой роли, впрочем в смежных с IT системах без хорошооплачиваемого тестирования не обойтись (автомобилестроение, военные технологии).  Тестированию посвящены даже некоторые журналы, например TEST Magazine.

Robert C. Martin - высокомерие может убить Ruby

В английском есть такое слово как parochialism, которое можно перевести как местничество (со значением высокомерия). Robert C. Martin, достаточно известный чувак написавший пару книг об UML и Java, в одной из своих лекций рассказывает интересный пример из флейм-войн по поводу того как язык программирования smalltalk противопоставлял себя языкам c++ (речь конечно не о самом синтаксисе, а о его носителях, community так сказать). Так вот многие smalltalk'овцы (70-80 гг.) считали свой язык настолько более могущественным что не хотели браться за проекты из реальности (ERP, CMS) и делали для себя привелигированное узкое футуристическое направление. Во многом эта мощь сейчас сравнима с языком ruby. Однако язык превратился в академический (т.е. умер).

Виртуальный доктор

Все видели Хауза? Сейчас медицинская тема полезна будет - H1N1 шагает по миру. Так вот он отличается от обычных докторов тем что якобы "знает всё", а тем более в своей области изучения мозга. Помощники помогают ему с более детальным диагностированием других процессов и органов, но подразумевается что они знают много и постоянно учатся.

Посмотрел вот видеокаст googletechtalks (см. ниже) и поскольку я сам занимаюсь развитием эстонского мед. проекта arst.ee, то просто прореферирую о чём там бубнил индийский профессор с сотнями публикаций (ну такая уж у них пузомерка) о своей замечательной программе.

Зачем нужна медицинская экспертная система

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

IT сленг

Игры

frag - очко за убийство игрока в шутерах (пришло из войны во Вьетнаме)
gibs
- куски плоти разлетающиеся при убийстве противника с значительно большей силой чем остатки жизни
camper
- игрок ожидающий лёгкой добычи отсиживанием рядом с источником оружия
aggro
- уровень ненависти монстра к отдельному из атакующих его игроков
(de)buff
- заклинание или последствия яда/зелья уменьшающие или увеличивающие основные характеристики игрока
NPC
- компьютерный персонаж который в отличие от обычных монстров (мобов) как правило интерактивен (говорит, продаёт, покупает, даёт квест и тп.)
tank
- игрок, специализирующийся на melee-атаке, удерживании противника на себе, следовательно большой защите и уровню жизни
фармить - убивать не представляющих большой угрозы монстров (мобов) ради наживы

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

foo bar - пустышка (в названии файла), многоцелевые слова-указатели на оперируемые объекты в контексте примера; fubar (из войны во Вьетнаме) - fucked up beyond all repair, нечто неработающее как надо

хак - сделать "что-бы работало", но не очень качественно

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