Разработка онлайн игр


Сколько стоит сделать браузерную игру / Хабрахабр

В настоящее время на российском рынке представлено около 500 онлайн-игр, из которых более двух третей — браузерные. Некоторые из них приносят своим владельцам свыше миллиона долларов в месяц, другие, наоборот, только тянут деньги из кошелька своих создателей. И сегодня я расскажу вам, сколько конкретно стоит собственная разработка и выпуск на рынок браузерной онлайн-игры.

Каждая игра представляет собой бизнес-процесс, определённый рядом характеристик и параметров. На входе мы задаём средства, необходимые для разработки и продвижения проекта. На выходе имеем прибыль от его оперирования.

Рассмотрим по пунктам каждый элемент структуры затрат этого бизнес-процесса.

Формирование команды

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

Подразделение Среднестатистическая ситуация при работе в офисе Звездный воитель
Группа разработки
Руководство Обычно один из инвесторов или наемный специалист на процентах и/или зарплате ~70–120 тыс./мес. Один из инвесторов
Программисты 2–5 программистов игры ~40–150 тыс./мес. каждому Системный администратор ~ 40–80 тыс./мес. 1-2 web-программиста ~40–120 тыс./мес. каждому Инвесторы, которые сами выполняют все указанные функции Flash-программист на аутсорсе с оплатой за разовые работы
Дизайнеры и художники 1–3 специалиста ~40-80 тыс./мес. каждому Часто привлекается дополнительный аутсорс Дизайнер артов, flash-дизайнер и дизайнер интерфейсов на аутсорсе ~30 тыс./мес. на всех
Гейм-дизайнер Не менее одного ~40–100 тыс./мес. Один из инвесторов
Группа оперирования (обычно набирается уже после старта проекта)
Маркетинг и PR 1-2 специалиста ~50–100 тыс./мес. каждому Один из инвесторов
Комьюнити-менеджер 1-2 специалиста ~20–40 тыс./мес. каждому Комьюнити-менеджер на аутсорсе ~5 тыс./мес.
Специалист поддержки (гейм-мастер) 1–3 специалиста ~20–40 тыс./мес. каждому Группа инициативных игроков

Аренда офиса и организация рабочего пространства

На примере Звездного воителя и ряда других браузерных игр мы видим, что можно заниматься разработкой игры «на дому», используя схему аутсорсинга при работе с наемными сотрудниками. Однако данный способ имеет ряд недостатков, особенно если вы решили сделать крупный браузерный проект, который покорит игровое сообщество как в России, так и за рубежом.

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

  • Аренда, включая электричество, коммунальные платежи, охрану и т.д., составляет 130 000 руб./мес.
  • Разовые затраты на организацию рабочего пространства, включая мебель, компьютеры, лицензии на программное обеспечение, оргтехнику, кондиционеры и другие офисные принадлежности составляют 2 000 000 рублей.
Маркетинг

Маркетинг браузерных онлайн-игр строится чаще всего на работе с трафиком — его привлечении и удержании. Основными механизмами привлечения трафика являются:

  • Покупка трафика. Ряд разработчиков обращается для этого к специализированным компаниям, занимающимся продвижением игр, таким как glispa, AdRiver, Mastertarget. Оплата осуществляется либо за регистрации (20-60 руб/шт), либо за эффективные регистрации 50-80 руб/шт.
  • Контекстная реклама. Является одним из лучших источников трафика по стоимости, однако объемы ее ограничены
  • Работа с игровыми порталами, игровой прессой и другими масс-медиа
  • Поисковая оптимизация
  • Иные, более экзотичные способы, как то: реклама на телевидении, наружная реклама, вирусные видео, партнерские программы и др.
Именно маркетинг часто является самой высокой статьей расходов создателей онлайн-игр. В среднем по рынку на привлечение одного игрока тратится около 50 рублей. Первые 6 месяцев после запуска игры целесообразно покупать не менее 1 000 регистраций в день, не считая органического бесплатного трафика. Это усредненный показатель трафика, который позволит уверенно сказать через полгода, рванула ваша игра или нет. Безусловно, здесь есть множество нюансов, но в рамках первоначальных расчетов 9 000 000 рублей является оптимальной суммой, которую можно закладывать на рекламу онлайн-игры.

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

Приобретение и обслуживание серверного оборудования. Браузерная онлайн-игра обычно имеет достаточно щадящие требования к серверному оборудованию, поэтому 100–300 тыс. руб. на закупку серверной части и 3–9 тыс. руб./мес. на его обслуживание будет достаточно на начальном этапе.

Создание и поддержка юридического лица. Оперирование онлайн-игры является предпринимательской деятельностью и требует организации юридического лица. Обычно в зависимости от масштабов деятельности это либо ООО, либо ИП. В случае ИП затраты можно свести к 50 000–60 000 руб./год за обязательные отчисления в пенсионный фонд и отчисления в фонд обязательного медицинского страхования.

Иные непредвиденные расходы. Например, представительские. Как мы видим, стоимость разработки и вывода на рынок браузерной онлайн-игры сильно варьируется и зависит от ряда факторов. В том числе и от срока разработки, который обычно составляет 1–3 года. Отмечу, что при времени разработки более двух лет крупные компании рискуют не окупить расходы, в том числе в связи с технологическим устареванием проекта. Инди-разработчики имеют меньше рисков благодаря низкой стоимости разработки.

В заключение приведу расчетную стоимость разработки браузерной онлайн-игры на Unity небольшой командой с офисом в Московской области. Пример основан на реальном опыте.

Срок разработки и вывода на рынок: 1 год Фонд оплаты труда: 9 000 000 руб. Аренда: 1 500 000 руб. Организация рабочего пространства (мебель, техника, лицензии и т.д.): 2 000 000 руб. Расходы на рекламу: 12 000 000 руб. Прочие расходы (серверное оборудование, ведение юридического лица и др.): 500 000 руб. Итого: 25 000 000 рублей

Если у вас есть вопросы по структуре и объемам затрат — задавайте, отвечу в комментариях.

habrahabr.ru

Как создать онлайн игру 🚩 Уроки по созданию браузерной игры 🚩 Веб-программирование

 В некоторых странах, таких как Южная Корея например, онлайн-игры стали практически национальным видом спорта. Не менее популярны они и в Европе, США и нашей стране, а их создатели хитов этой быстрорастущей сферы становятся миллионерами в считанные месяцы.

Естественно, у многих, кто столкнулся с миром онлайн игр как игрок или же как начинающий предприниматель возникает вопрос — как же сделать онлайн игру?

На самом деле это достаточно просто.

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

RPG (Role-Playing Game, ролевая игра), или скорее MMORPG (Massively Multyplaying Online Role-Playing Game – многопользовательская онлайновая ролевая игра) – ролевые игры, подобные World of Warcraft или Lineage. Играющему предстоит выбрать роль (отсюда и название) — стать орком или гномом, воином или магом и т.п., после чего включиться в бурную жизнь игрового мира.

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

Для программирования как клиентской, так и, особенно, серверной части, необходимы отличные знания и хороший опыт собственно программирования, создания баз данных, навыки 3D-дизайна, ну и, конечно же, развитое воображение, которое поможет создать сложный и интересный игровой мир. Кроме того, сделать современную игру в одиночку просто невозможно. Нужна команда профессионалов.

Существуют конструкторы онлайн игр, способные существенно упростить задачу начинающему. Системы, подобные Realm Crafter Professional 2.40, позволяют создать онлайн игру без программирования как такового. Вся черная работа уже сделана за вас, вам остается лишь выполнить творческую часть — собственно, придумать игру. Однако это и есть наиболее сложная часть. Получить представление о том, какое количество нюансов и деталей необходимо учесть, можно по тексту «Законы дизайна онлайновых миров» (http://www.dtf.ru/articles/read.php?id=3774) креативного директора Sony Online Entertainment Рафа Костера. Он является ведущим дизайнером таких хитов, как Ultima Online и Star War Galaxies, так что его мнение не повредит хотя бы принять к сведению.

Браузерные игры популярны среди людей, которые не имеют возможности наслаждатсья 3D-графикой MMORPG (например, потому, что играют на рабочем месте параллельно с работой). Они значительно проще — по сути, это просто набор html-страничек, связанных ссылками, как и на любом сайте. Поэтому создать онлайн игру браузерного типа гораздо проще, да и готовые движки для браузерных игр несложно найти. Например, здесь http://www.bbgdev.com/browser-games/ перечислены open-source браузерные игры, которые можно взять за основу собственного проекта.

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

Инструкция

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

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

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

Видео по теме

Обратите внимание

Онлайн-игра — компьютерная игра, использующая постоянное соединение с Интернетом. Следует разделять понятие сетевые игры и онлайн игры. Например World of Warcraft — это онлайн игра, а Warcraft 3 сетевая игра.

Полезный совет

Описание игры Thing онлайн. Как играть в онлайн игру Вещица: Для начала нужно будет убить врага, который находится рядом с вами. Драться нужно руками бою, так как при себе у вас нет острых предметов и оружия. Чтобы атаковать, для начала, подойдите как можно ближе, и нанесите удары руками. Когда вы выберетесь из помещения, перед вами появится охрана, вооруженная мощными пистолетами.

Источники:

  • как создать свою онлайн игру в 2017

Вам нравится играть в компьютерные игры, и наконец вы дошли до такой степени интереса к этому виду развлечений, что захотелось создать свою собственную 3D игру.Это вполне реально. Давайте вместе разберем, в какой последовательности это можно сделать.

Вам понадобится

  • Для того чтобы создать свою 3D игру нужно время, фантазия, и, желательно, команда единомышленников, в которой есть программист.

Инструкция

Первым делом нужно выбрать, в каком жанре вы будете творить. Проанализируйте основные игровые жанры: стрелялка, стратегия в реальном времени, боевик, аркада, приключения, симуляция реальности, гонки. Это поможет вам понять, что больше всего вам нравится в компьютерных играх, и решить, в каком жанре вы будете создавать свою авторскую 3D игру. После того, как вы определились с жанром, вам нужно написать сценарий. Сценарий для 3D игры состоит из нескольких составляющих. Концепт-документ, в нем описывается техническая сторона игры, ее основные фишки и ее система. Дизайн – в данном случае, это визуальная сторона игры, ее меню, тип графики и т.д.

Сценарий как таковой – в нем прописывается суть игры, ее художественная сторона.

Дальше нужно оценить сложность создания игры и определиться, на каком движке она будет работать. В зависимости от того, много или мало в ней будет «действующих лиц» - подвижных и динамичных персонажей, разрушений, искусственного интеллекта, графики, вам будет нужно выбрать движок.Если вы впервые создаете игру 3D, и в ней будет не очень много персонажей, воспользуйтесь FPS Creator. Этот движок – прекрасный тренажер для начинающих, и незамысловатую игру на нем сделать достаточно просто.

Если вы продвинутый пользователь воспользуйтесь NeoAxis Engine. Этот движок позволяет создать игру любого жанра.

Итак, допустим, вы выбрали для работы движок NeoAxis, скачали его и установили. Теперь нам нужны игровые ресурсы – модели, текстуры и звуки. Если вы не программист, то именно на этом этапе пора обратиться за помощью к профессионалу - он завершит работу по созданию игры 3D. Если же вы сами владеете языками программирования, то этот процесс завершить своими силами вам будет не трудно.

Видео по теме

Обратите внимание

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

Полезный совет

Если вам не хочется заниматься программированием, то, для того, чтобы намного упростить себе задачу, вы можете скачать из интернета конструктор игр. Замечу только, что интересную, а главное, разнообразную и многоплановую игру на конструкторе сделать не получится.

Одним из видов бизнеса, который может приносить прибыль при правильной организации, является создание онлайн-игр. Существует множество успешных проектов – Легенда:Наследие Драконов, Танки Онлайн, и многие другие. Причина успеха каждого из них – сочетание свободного сегмента, уникального игрового процесса и простых решений, позволяющих играть, не скачивая клиент, в режиме онлайн. Для того, чтобы создать игру, необязательно иметь образование в сфере программирования, достаточно просто иметь идею.

Инструкция

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

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

Источники:

  • как создать браузерную игру бесплатно

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

Инструкция

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

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

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

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

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

Доведите клиентскую часть, которая будет работать на компьютере игрока. На этом этапе вам важно заложить расширяемый интерфейс игры, чтобы в будущем вы могли безболезненно его изменять, а также проработать программную часть графики. Важно определить, какую технологию предпочтительнее использовать для создания изображения игрового процесса. Использование Flash или Javascript позволит пользователю играть в браузере. Вы можете использовать эти технологии для создания онлайн-игры, распространяющейся в социальной сети. Также вы можете написать клиент в виде самостоятельного приложения, чтобы полностью задействовать мощность видеокарт. Обеспечьте безопасность. Ваш сервер может быть в любой момент атакован с целью получения доступа к базе данных игроков, что может иметь неприятные последствия. Также серверная часть игры может подвергнуться DDoS-атаке. Например, массовая регистрация игроков специальным скриптом и их одновременное подключение к игре. Такая атака быстро исчерпает ресурсы сервера и потребует принятия быстрых решений во время его работы. Чтобы не создать неудобства игрокам, механизмы для таких ситуаций должны быть проработаны заранее.

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

Связанная статья

Игра «Инди Кот». Жизни, ячейки и комбинации в игре

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

Инструкция

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

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

Наймите команду разработчиков, обозначив задачу. Определитесь с видом реализации вашего проекта – будет ли это браузерная игра или же требующая скачивания и установки клиента. Это очень важный этап, поскольку от вашего выбора зависит то, как будет проходить процесс создания проекта. Если вы выберете второй вариант, осуществить задуманное будет гораздо сложнее, чем в случае с браузерной игрой, однако поле деятельности для воплощения в жизнь вашей идеи будет намного шире.

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

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

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

Онлайн-игры позволяют играть против игроков во всем мире. Для создания собственной многопользовательской игры потребуются знания программирования, игрового и визуального дизайна.

Инструкция

Выберите и скачайте программное обеспечение для создания игры (например, BYOND). Научитесь пользоваться программой. Поэкспериментируйте с различными опциями и функциями программного обеспечения.

Выберите жанр создаваемой игры. Почти любой игровой жанр может быть многопользовательским. Например, игра может быть стрелялкой (шутером), как Halo 3, или стратегией, как World of Warcraft.

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

Нарисуйте визуальные элементы игры на листе бумаги. Раскрасьте их цветными карандашами или мелками. Рисование элементов на бумаге до проектирования в игровом программном обеспечении может намного упростить процесс.

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

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

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

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

Видео по теме

Источники:

  • Страница загрузки программы BYOND в 2017

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

Инструкция

Основа любой успешной и популярной игры - увлекательный сюжет, который разворачивается на просторах виртуального мира. Самая популярная идея - это мир средневековья с возможностью использовать магию и различными волшебными существами. Мир далекого космоса и других вселенных тоже относительно хорош. Однако и он значительно проигрывает миру "прошлого". В игре должен оставаться открытый финал, то есть сюжет строит сам пользователь игры. В противном случае, закончив последний квест, игрок сразу же заинтересуется другой онлайн-игрой. Это приведет к потере ценного поставщика денежных средств. Вывод: необходимо постоянно пытаться совершенствовать игру или хотя бы обеспечить разнообразие врагов, которых требуется убивать каждый день. Ключ к успешному заработку в любой онлайн-игре: противостояние реальных людей, естественно желающих стать победителями. Именно с этой идеи начинается прибыль. За что будет платить пользователь, если он регистрировался в бесплатной онлайн-игре? В общем и целом — за лучшее оружие, редкие доспехи, боевых животных и тому подобное. Если речь будет идти о живом соперничестве, то появится и желание вкладывать реальные деньги.

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

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

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

Видео по теме

Видео по теме

Связанная статья

Как сделать игру

Источники:

  • как сделать сайт онлайн игр

www.kakprosto.ru

НОВИНКА! Создай свою текстовую игру онлайн за 5 минут!

Создать текстовую игру онлайн стало просто как никогда.

Не надо обладать навыками программирования, чтобы написать свою первую простенькую игрушку уже через 5 минут!

Не будем тянуть кота за хвост, приступим к созданию своей новой текстовой игры!

Комментарий разработчика.

Структура языка очень похожа на URQL, а значит тем, кто знаком с "уркой", разобраться будет проще некуда. Но синтаксис языка построен таким образом, что все символы базовых конструкций можно набирать не меняя раскладки клавиатуры на русском языке. Это очень удобно, когда, что называется, нашло вдохновение, и нет времени спотыкаться об англоязычные операторы.

Итак, от простейшего к простому.

Написать Аперо-игру - это значит написать "код", который понимает платформа Аперо.

Полная документация здесь.

Что же из себя представляет "код" для Аперо?

Не пугайся слова код, никаких "010010" из матрицы здесь не будет.

Код для Аперо - это обычный текст, размеченный особым образом.

В процессе обучения сразу пробуйте выполнять примеры, которые мы будем разбирать.

Для этого создай тестовую онлайн игру для обучения здесь, назови например "Обучение" и описание, например: "Это моя игра, в ней я научусь создавать свои текстовые игры онлайн на платформе Аперо". (Доступно только зарегистрированным пользователям)

Нажми кнопку "Создать!", и игра появится в твоем списке разработки здесь. После этого появится блок для редактирования исходного кода, туда ты будешь вводить свой код. Там уже есть базовый исходный код для примера, но его можно удалить.

После этого ты можешь нажать кнопку "Тестовый запуск игры!", и откроется страница твоей только что созданной новой текстовой онлайн игры, на ней ты можешь посмотреть, как будет выглядеть игра для игрока.

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

Вывод текста

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

Это моя игра, в ней учусь создавать свои текстовые игры на платформе "Аперо". У меня хорошо получается.

После этого нажми кнопку "Тестовый запуск игры!" и узнаем, что же увидел бы игрок после начала этой текстовой игры.

Как видишь, в правом блоке появился точно такой же текст.

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

\СТОП

Но мы не пишем книги, мы учимся создавать текстовые игры, и поэтому показывать весь текст игроку сразу мы не хотим.

Чтобы остановить платформу нужно написать так:

\СТОП

Обрати внимание на первый символ в строке "\" - это косая черта, наклоненная влево. Ее так же называют "обратный слэш".

Это специальный символ для платформы, чтобы она понимала, что это команда, а не обычный текст. Если слово "СТОП" в коде было бы написано без обратного слэша, то платформа просто вывела бы его пользователю на экран как обычный текст.

Чтобы понять, как работает команда стоп, выполним следующий пример:

Этот текст будет показан игроку. \СТОП А текст после команды стоп - нет.

После этого нажми кнопку "Тестовый запуск игры!" и посмотри на результат выполнения.

Платформа показывает игроку первую строчку, потом встречает команду СТОП и прекращает выполнение. Все просто.

Само слово "СТОП" тоже не будет видно пользователю в процессе игры, это служебная информация.

\Локации

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

Чтобы различать локации между собой, они должны иметь свои названия. Причем уникальные, то есть названия локаций не должны повторяться.

Полные правила объявления локации здесь.

Если хочешь быть уверен, что имя локации задано правильно, используй только кириллические и латинские символы в нижнем регистре и знак "_" для разделения слов в имени переменной.

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

Не забывай в конце каждой локации писать строчку с командой \СТОП.

Напишем парочку локаций:

\Первая локация Этот текст из первой локации. \СТОП \Вторая локация Этот текст из второй локации. \СТОП

В коде выше есть две локации с именами "Первая локация" и "Вторая локация".

Сначала код выполняется начиная с \Первая локация и до команды \СТОП

После запуска мы убедимся, что выполнился только код первой локации. А как же игроку попасть на вторую локацию? Для этого есть кнопки.

\КНОПКА

Кнопка создается так:

\КНОПКА(Вторая локация,Перейти на вторую локацию)

Что же произойдет после запуска? На экране появится кнопка с текстом "Перейти на вторую локацию", которая будет видна игроку. А если он на нее нажмет, то попадет на локацию с именем "Вторая локация", которая должна быть объявлена ниже.

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

А теперь вспомним, чему мы научились в этом уроке, и закрепим все это в следущем примере.

\Первая локация Этот текст из первой локации. \КНОПКА(Вторая локация,Перейти на вторую локацию) \СТОП \Вторая локация А это текст из другой локации - "Вторая локация" . \КНОПКА(Первая локация,Вернуться обратно на 1-ю локацию) \СТОП

Запустим и посмотрим, что получится!

Кнопки работают, при нажатии мы можем перемещаться по локациям.

Уже даже этого достаточно, чтобы создавать свои простенькие текстовые онлайн игры! А теперь попробуй сам! Потренируйся, создай несколько локаций, создай в них по несколько кнопок, а не одну! На этом первый урок заканчивается, спасибо! В следующем уроке мы научимся создавать переменные и условия для развилок! [Урок 2. Создаем развилки в текстовых играх в разработке]

apero.ru

Разработка браузерной стратегии / Хабрахабр

Всем привет!

Хочу поделиться с хабрасообществом своим опытом написания многопользовательской браузерной стратегии с нуля до рабочего проекта. С точки зрения непосредственно программирования, архитектуры и возникших проблем. Это мой первый опыт создания игры и возможно вы заметите множество недочетов или промахов, или посоветуете чего дельного. Но не суть важно — главное я довел дело до рабочего проекта и наверняка многим будет интересно узнать подробности.

Что представляет собой игра? Видимо наиболее коротким описанием будет «клон Цивилизации» =). Но это не значит что у меня не хватило фантазии придумать что-то свое. Просто сделать «Цивилизацию» было моей мечтой. Вряд ли бы я получил столько удовлетворения от написания другой игры. Ну а фанаты Цивилизации наоборот считают, что моя игра совсем не похожа на Цивилизацию, разве что только с виду. Может это и к лучшему.

Игра называется The Fate of Nation http://fatenation.com

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

Для создания игры я использовал php и MySQL на сервере, html и javascript на клиенте. Flash не используется. Из html5 есть только видео на сайте и несколько областей с канвасом в самой игре — включая поверхность карты и мини-карту. Объем кода клиентской части в несколько раз превышает серверную часть, поэтому в основном буду рассказывать о клиентской разработке, но начнем с сервера.

Общая архитектура
Общая архитектура приложения выглядит как полностью асинхронное веб приложение на JavaScript. Перезагрузок страниц не предусмотрено. Обмен данными с сервером исключительно через Ajax и JSON. В JSON'е передаются только данные, без html кода. Html разметка загружается отдельно в начале загрузки приложения и процессится с данными через клиентский шаблонизатор по мере загрузки данных с сервера.

На сервере никаких фреймворков не использовал — хотя начинал писать с использованием Zend Framework, который выкосил потом за ненадобностью. Вместо него создал свою простую архитектуру отдаленно напоминающую контроллеры и экшены из ZendFramework.

Как видно из рисунка, на сервере одна точка входа — файл index.php. В процессе игры на сервер идут запросы вроде такого: /Unit/Move. И посылается JSON с параметрами, в данном случае это id юнита и координаты перемещения. Сервер перенаправляет этот запрос на index.php, в котором последовательно выполняется подключение к БД, проверка текущего пользователя и парсинг строки запроса для определения контроллера (Unit) и действия (Move). Если контроллер не задан то сервер выдает индексную страницу с кодом для построения клиентского приложения, но об этом позже. Если же контроллер задан то ищется файл этого контроллера, подключается его код и запускается обработка запросов этого контроллера, где соответственно ищется необходимый экшн, а в нем производится проверка входных данных и дергается бизнес логика.

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

Теперь немного о самой игре.

Карта
Первое что было сделано это карта на которой происходят почти все игровые действия: строительство городов, улучшений (посевы, дороги), перемещение юнитов и исследование карты. Размер карты составил 1000 на 1000 клеток для каждой отдельная запись в БД. Я видел игры где карта сделана бесконечной и записи о клетках динамически вставлялись тогда, когда с клеткой производились какие-либо действия. Но меня такой подход немного пугал своей непредсказуемостью. Гораздо проще планировать игру, когда точно знаешь, что у тебя есть фиксированная карта. Можно запланировать расположение игроков их количество, количество городов и юнитов, приблизительно оценить нагрузку.

Итого получилось 1000 * 1000 = 1 000 000 записей в БД для карты. До этого я не работал с таким количеством записей и меня это насторожило. Думал что будет тормозить.

Я решил перехитрить MySql и разместить карту в 10-ти таблицах по 100 000 записей в каждой с надеждой, что станет быстрее работать. В итоге пришлось написать дурацкую логику по выборке клеток из нескольких таблиц сразу, а замеры показали что производительность только упала. Вернул все назад в 1-у таблицу.

  • x, y — это координаты клетки.
  • terrain — тип территории (луг, лес, гора...).
  • resource — ресурс если он есть на клетке (глина, лошади).
  • wens9_code — название поля произошло от west-east-north… 9 — означает что изображение данной клетки зависит от территорий 8-ми рядом стоящих клеток и естественно от территории самой этой клетки — всего 9. Эту логику я спер с 3-ей цивилизации, насмотревшись их спрайтов территорий там где по 512 вариантов иконок для одной клетки!)) Потом у меня вскипел мозг разбирая зависимости по которым они выбирали иконки и я понял, какой это большой геморрой. =) И все только для одного: чтобы спрайты имели жесткие концы в виде ромбиков 128 на 64 пикселя. В конце концов мы решили использовать png24 с полупрозрачными краями накладывающиеся друг на друга и создающих в 10 раз лучший и разнообразный ландшафт, чем в описанном примере из Цив3. А выбираем иконки случайно независимо от соседних клеток. Это видно на скрине — сразу не скажешь где там одинаковые иконки полей. Вот горы по краям размыть забыли и они имеют четкие границы — что плохо смотрится.
  • starting_position — означает что в этой клетке появится игрок.
Конечно это не весь список полей, но здесь и далее для упрощения буду приводить только те поля, о которых рассказываю в статье.
Регионы
Клиент написан таким образом, что он не запрашивает с сервера определенные клетки, а запрашивает их партиями по 100 штук (10 на 10), которые я назвал регионами. То есть каждая клетка принадлежит какому-то региону и клиент запрашивает регионы и не конкретные клетки. Как только игрок перемещает карту так, что становится виден новый регион, мы посылаем запрос на сервер за этим регионом и граничащими с ним. Данные каждого загруженного регионакешируются на 30 секунд на клиенте. Это позволяет легко прокручивать карту без тормозов и лишних запросов на сервер и избавляет от задержки при появлении нового региона на карте — так как мы загружаем все соседние наперед.

Когда я делал эти «регионы» я не предполагал насколько они увеличат производительность. Оказалось выделить 100 клеток фильтруя по полю региона получается многократно быстрее чем фильтруя по координатам. Несмотря на то, что я объединил x и y координаты клетки в одно поле location = 1000*x + y. Сделал это прежде всего для удобства — чтобы легче было достать одну клетку.

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

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

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

Такого я не видел еще в браузерных играх (собственно как и юнитов передвигающихся по карте, а не по воздуху). Я принялся за расчеты. Стартовая позиция игрока расположена внутри региона. То есть максимальное количество игроков 10 000 как и регионов. Каждый игрок может разведать всю карту. Итого 10 000 * 1 000 000 = 10 миллиардов записей может быть в таблице пермишенов на клетки! Таблица карты показалась на фоне этого детским лепетом =). Конечно эта цифра завышена. Вряд ли кому-то удастся разведать всю карту — она очень большая. Но десятки и сотни миллионов записей в таблице пермишенов точно могут быть в конце игры.

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

Провести нагрузочное тестирование чтобы определить на каком этапе сервер начнет тормозить не удалось еще. Максимум что я видел это чуть более 2-ух миллионов записей в таблице пермишенов.

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

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

Далее записи пермишенов, которые говорят о перемещении юнита мы помечаем еще 2 полями: id юнита и типом записи: 'обзорные клетки' или 'клетки по которым идет юнит'. Первое поле нужно чтобы при остановке юнита или смене пункта назначения можно было их удалить, второе нужно чтобы при выборке юнита записать ему времена смены дислокации.

Затем коллеги по работе мне подсказали еще один довольно очевидный момент: ввести поле означающее время выхода юнита с данной клетки. Я назвал его out_timestamp. Это позволило легко выбирать текущие позиции всех юнитов и соответственно фильтровать вражеских юнитов по видимым нами клеткам.

Уверен, что мой пример не самая удачная архитектура для подобной игры, но вроде работает =) В следующих статьях могу рассказать о клиентской архитектуре, кешировании, используемом фреймворке и о том, как мне удалось сделать демонстрационную версию игры работающую без запросов к серверу, чисто на клиенте.

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

P. S. Спасибо TheShock за помощь и поддержку в написании топика! =)

habrahabr.ru

Как создать браузерную онлайн игру

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

Как создать браузерную игру ничего не изучая?

Ответ – никак. Для начала нужно будет выучить HTML – язык разметки, который работает в связке с каскадной таблицей стилей – CSS. Эти языки располагают текст и изображения на странице, собирая картинку из множества фрагментов. Поскольку вы намерены сделать именно браузерную игру, то ей обязательно понадобится сайт, желательно красивый и функциональный. Поэтому не обойтись без JavaScript – самого простого способа визуализировать вашу игру на стороне геймера. Этот язык позволяет менять местами элементы страницы без ее перезагрузки. По сути, JavaScript управляет элементами CSS и HTML в реальном времени.

Для создания браузерной игры придется выучить HTML, CSS, PHP и JavaScript, так что бессонные ночи вам гарантированы

Язык программирования PHP нужен для создания движка игры. Он используется на сервере для обработки данных, поступающих от разных геймеров. Это – ядро, которое приводит в действие все внутренние механизмы.

Я не хочу ничего учить, но у меня есть деньги

Поздравляем, вы избежали многих проблем. И тут же получили новые. Чтобы сделать браузерную игру хорошего качества (в плохую никто играть не будет) нужно иметь хорошую команду разработчиков, а хорошие спецы стоят денег. Если брать по минимуму, то вам необходимы:

  • Программист – 2 штуки
  • Дизайнер и художник – 2 штуки
  • Гейм-дизайнер – 1 штука
  • Комьюнити-менеджер – 1 штука
  • Гейм-мастер – 1 штука.

Если у вас нет личных знакомств, то придется обращаться к аутсорсингу. Обычно такие ребята трутся на биржах фрилансеров, самой популярной их которых является www.fl.ru/.

Всех необходимых работников можно найти на биржах фрилансеров

Правда, в этом случае нужно быть очень осторожным, поскольку фрилансеры привыкли регулярно срывать сроки. Как говорят опытные руководители, можно бесконечно смотреть на 3 вещи: как течет память, как горит дедлайн и как не работает фрилансер.

Во сколько обойдется разработка?

Во столько, сколько у вас есть денег. Вот здесь приведены примерные выкладки и структура расходов на создание среднестатистической браузерки. Итоговая сумма – 25 миллионов рублей. Однако не стоит пугаться этой цифры. В статье автор посчитал расходы на разработку по максимуму, так что при желании эту сумму модно уменьшить в разы и даже десятки раз. Или увеличить, если ваш папа – прокурор. Безусловно, такие проекты, как Drakensang Online или City of Steam требуют сумм как минимум с шестью нулями, но простую табличную браузерку можно сделать за пару десятков тысяч рублей.

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

Этапы разработки

Создание браузерной игры с нуля можно разделить на несколько этапов:

1. Поиск идеи

Поскольку у вас вряд ли есть 25 миллионов рублей и вы вряд ли являетесь гением в программировании и дизайне, единственное, чем вы можете зацепить пользователя, это необычный сеттинг. Даже пресловутая кампания из эльфов, орков, людей и гномов способна увлечь клиента, если погрузить их в необычную среду или заставить делать странные вещи. Например, игра Ботва Онлайн была написана «по приколу» четырьмя людьми в свободное от работы время, но благодаря своему необычному сеттингу быстро стала успешным бизнес проектом.

2. Разработка сюжета

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

3. Создание игры

Даже если вы выучили вдоль и поперек JavaScript и CSS, вы все еще ничего не знаете о том, как создать браузерную игру. Это примерно то же самое, как если бы вы выучили теорию плавания, ни разу не побывав в бассейне. Лучший выход в этом случае – воспользоваться самоучителем. Вот здесь можно многое узнать о разработке игр, причем не только браузерных.

Скорее всего, ваша первая браузерка будет выглядеть так. Это – легендарный Бойцовский Клуб

4. Продвижение проекта

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

Как создать браузерную игру с помощью конструктора

Оказывается, ушлые программисты уже давно создали кучу конструкторов MMO, которые могут помочь новичку создать браузерную онлайн игру бесплатно. Это не значит, что вы можете успокоиться и удалить все закладки по программированию, но с помощью конструктора можно здорово ускорить процесс.

Популярный игровой конструктор Construct 2

Большой популярностью пользуется MMO Constructor – отечественный продукт, в котором можно создать все элементы полноценной браузерной RPG. Взамен авторы требуют совсем ничего – 50% от прибыли проекта. Разобраться в конструкторе непросто, но добрые люди уже написали гайды. Также чтобы создать браузерную игру, можно воспользоваться такими программами, как Construct Classic, Eclipse, FPS Creator.

Больше информации о конструкторах можно узнать на форуме Gcup, где тусуются все: и продвинутые геймдевы, и зеленые новички.

Так что там насчет миллиона?

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

  • Не жадничайте! Более 80% игроков вообще не платят, либо платят копейки. Однако они создают массовку, на которую подтягивается крупная рыба. Сконцентрируйтесь на ней. Остальным дайте возможность резвиться бесплатно.
  • Постарайтесь сделать так, чтобы донаторы не сильно выделялись из общей массы, иначе масса уйдет, оставив вас без донаторов и без денег. В общем, бряцайте мускулами аккуратно.
  • Лучше всего тратят деньги те, кто не хочет тратить свое время, поэтому монетизируйте наиболее рутинные операции. Не разменивайтесь по мелочам.
  • Уроки истории создания игр показывают, то онлайн-проект должен быть бесконечным. Если у геймера появится чувство, что ему нечего делать - он уйдет, а туда, где нет онлайна, новый геймер не придет никогда.

Напоследок хочется сказать – не так страшен черт, как его малюют. Даже лучшие геймдевы когда-то начинали с нуля, и кто знает, может быть именно вы станете следующим Джоном Кармаком или Ричардом Гэрриотом?

Полезные ссылки:

gametarget.ru

Как начать писать игры / Хабрахабр

Оригинал: Starting out on Game Programming

Путь в индустрию игровых разработок не близок. Эта статья призвана помочь понять с чего лучше начать это путешествие.

Вы только что закончили ваш первый курс по С++ и хотите начать делать игры. Кто-то указал вам на этот сайт и вы, возможно, поэкспериментировали немного с руководством. Вы изучили несколько лаконичных примеров, но не нашли руководства о том, как сделать целую игру. И на то есть причина.

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

Выбор проекта

Итак, с чем же начать? Проще ответить с чего начинать не стоит, а именно с больших проектов, типа полноценной 3D FPS, MMO или даже длинного платформера 16-битной эпохи. Самая распространенная ошибка начинающих разработчиков это начать с большого проекта основанного на Крутой Идее или взять проект, который кажется простым, и закончить с полузаконченной кучей спагетти-кода. Поначалу следует создавать небольшие проекты.

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

Принимая во внимание все выше написанное, вот пара советов с чего начать.

Графика и обработка событий

Если вы никогда не программировали ничего связанного с графикой или GUI, вам следует начать с чего то маленького, чтобы «обмочить ноги». Моим первым проектом были крестики-нолики, так что даже у меня было скромное начало. Пара идей для первого проекта:
  • Симулятор однорукого бандита
  • Black Jack
  • Крестики-нолики
  • Четыре в ряд

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

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

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

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

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

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

Duck Hunt и Pong — хорошие проекты для тех, кто уже имеет опыт в программировании графики и событий. В них есть простое обнаружение столкновений и все важные основы игр в реальном времени.

Space Invaders и Galaga — хороший выбор для второго/третьего проекта. В них есть уровни, поэтому вам нужно будет узнать как передвигаться от уровня к уровню, при помощи конечного автомата. Вы можете прочитать про конечные автоматы здесь(англ.). Игры в стиле «перестреляй их всех» так же требуют создать простые шаблоны поведения для врагов, что является шагом в сторону искусственного интеллекта.

Тетрис хорош для второго/третьего проекта. В нем совсем немного логики нужной для создания игры-головоломки. Это игра приличного размера, так что вам придется научиться разделять вашу программу на несколько исходных файлов, о чем вы можете больше прочитать здесь(англ.). Не недооценивайте Тетрис. Я недооценил и только посмотрите на это жуткое месиво в коде Lazy Blocks.

Переинженеринг
Типичная ошибка новичка это попытка сделать Самую Лучшую Игру Всех Времен, заканчивающаяся переинженерингом. То есть когда он пытается написать самую лучшую игру/движок и это все заканчивается тем, что используется только маленькая часть того что было понаписано.

Когда я был начинающим я переинженерил AI для крестиков-ноликов. Я хотел сделать игру с непобедимым AI. Мне удалось достигнуть этого, запрограммировав компьютер на знание всех возможных ловушек. Звучит круто не правда ли? Это заняло почти 40 000 тысяч строк в основном скопированного кода и месяц моего свободного времени. Позже я выучил структуры данных и узнал про алгоритм Минимакс, который при меньшем размере кода не только делал нужное, но еще и делал это лучше.

Так что учитесь на моих ошибках и не будьте излишне амбициозны. Концентрируйтесь на обучении тому как делать игры, а не просто делайте их.

Планирование, анализ столкновений, физика, уровни, искусственный интеллект

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

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

Теперь про вашу следующую игру. Break Out и Puzzle Bobble хороши для третьего проекта, потому что они включают в себя продвинутое распознавание столкновений и физику. Физика важна, поскольку дает игре реалистичное ощущение. Даже в Super Mario Brothers есть ощущение гравитации и инерции. Бильярд отличный проект для тех, кто хочет напрячь извилины физикой.

В играх типа бильярда вам нужно не только обнаруживать столкновения, но и обрабатывать их в определенном порядке. Обработка столкновений разительно отличается от их обнаружения. Хотя создание бильярда или 2D платформера может показаться простым делом, анализ столкновений в правильном порядке — запутанный процесс, и не должен быть недооценен.

Break out и Puzzle Bobble так же включают дизайн уровней и требуют загрузки и освобождения их ресурсов. Хорошим опытом будет создание редактора уровней для игры. Редакторы позволяют вам легко создавать уровни и не вынуждают впаивать их в приложение. У меня есть статья(англ.) про создание редактора уровней.

Так же вы возможно хотите попрактиковаться в написании искусственного интеллекта (AI). Один из вариантов — вернуться к крестикам-ноликам или четырем в ряд и написать непобедимый AI. Теперь вы уже должны знать структуры данных и сможете использовать знания о деревьях для использования алгоритма Минимакс. С этим алгоритмом вы можете просчитать все возможные исходы крестиков-ноликов и создать непобедимый AI. Забавно расстраивать им своих друзей. Так же вы возможно захотите сделать разные уровни сложности. Игра не приносит радости, если в нее нельзя выиграть.

Pac Man — отличный способ попрактиковаться в написании AI. Нужно будет знать структуры деревьев/графов и алгоритмы поиска, типа A*, для того чтобы призраки могли пройти через лабиринт. Так же нужно будет сделать чтобы призраки работали в команде. Все это пригодится когда вы будете делать игры со сложным AI, типа стратегий в реальном времени. Об основах AI можно прочитать тут(англ.).

Платформеры, Action/Adventure, RPG, RTS, движки

Теперь, когда вы получили опыт создания хорошо спланированной игры, вы готовы к созданию Action/Adventure/Платформера. Это будет кульминация графики, движения, анимации, анализа/обнаружения столкновений, физики, AI, программной архитектуры и всего остального, что вы изучите к этому моменту. Тем кто более амбициозен, можно предложить сделать стратегию в реальном времени(RTS) или ролевую игру(RPG). Будьте осторожны, потому что RPG и RTS действительно огромные проекты.

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

RTS также сложны архитектурно, а так же требуют много AI. Вам нужно будет делать поиск пути для юнитов, получение ими команд, разное поведение в зависимости от полученных команд. Если вы никогда до этого не делали AI, будет лучше начать с клона Pac Man'а для начала.

Вероятно вам впервые придется делать движок для вашей игры. Чего следует избегать, так это создания универсального движка. Создавая движок не пытайтесь сделать его подходящем для любой игры. Если ваша игра требует x, y и z, делайте движок который умеет x, y и z. Движки создают исходя из того что нужно для конкретной игры, а не из того что любой игре может потенциально понадобится.

Другая распространенная среди новичков ошибка — это попытка создать движок в качестве первого проекта. И обычно это универсальный движок. Вам не нужен движок с фантастической графикой для создания Pong'а или Space Invaders. Программируя, легко закопаться в деталях. Концентрируйтесь на общей картине и завершайте свои игры.

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

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

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

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

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

Хорошая новость в том, что если вы уже сделали 4 или 5 игр, вы уже знаете основы необходимые для создания игры. Вы уже хорошо знакомы с процессом разработки и знаете свои возможности как программиста. Неважно трехмерный шутер или двухмерный, он по прежнему шутер. 2D RPG или 3D RPG по прежнему RPG.

Не считайте это оправданием пропустить 2D и сразу перейти к 3D. Прежде чем научиться бегать, нужно научиться ходить.

Быстрый способ
Говорите, что вы учитесь быстрее если сразу возьметесь за дело и будете просто писать вашу 3D MMOFPSRTSRPG и научитесь тому, что нужно по мере необходимости? Чтож, вот пару советов, которые вам помогут:
  1. Идите на местный рынок
  2. Купите целую рыбину. Рекомендую взять лосося или треску, хотя и сом тоже подойдет. Форель, кстати, тоже довольно эффективна
  3. Идите домой и включите компьютер
  4. Запустите вашу любимую IDE
  5. Теперь возьмите купленную рыбу и влупите себе по голове
  6. Повторите пункт 5, пока мысли о быстром способе не покинут вас
Вы не научитесь алгебре решая вычислительные задачи. Вы учите основы и опираетесь на них. Тоже самое и с программированием. Если вы ищите быстрый способ я тут как тут, чтобы сказать вам что его нет. Не торопите себя. Еще раз: учите основы и опирайтесь на них. Иначе вас ждет фиаско.
Путешествие начинается
Теперь, чтобы у вас было общее понимание того что же все-таки делать, пора начать заниматься игроделом. Я не ожидаю что вы будете следовать этому руководству слово в слово. Все учатся по разному и с разной скоростью. Если вы что-то и должны были вынести из этой статьи, так это три вещи:
  1. Выберите свой темп
  2. Доделывайте игры до конца
  3. Концентрируйтесь на обучение, а не просто на создании
Удачи вам на пути разработки игр!

habrahabr.ru

Какие есть технологии для разработки браузерных онлайн-игр? — Toster.ru

Как верно сказал @Eugene22, выбирать язык стоит из двух факторов - 1) существующий опыт на каком-то языке и 2) что хочется изучить для будущего. Если с первым пунктом плохо, то остаётся выбрать какой-то язык и начать его изучать. Браузерные игры состоят из трёх компонентов: 1) клиентская часть - тут практически без вариантов - javascript. 2) серверная часть - тут есть множество вариантов. Из основных два варианта - php или Node.js (это серверный javascript). Оба варианта достойны рассмотрения, у каждого есть свои достоинства и недостатки. Также можно рассмотреть Python и Ruby. Не стоит сбрасывать со счёта Java и .Net языки (тут c# и asp.net). Ну и экзотика - Erlang или Go (всё-таки go я отнёс к экзотике, потому что это развивающийся язык, но активно набирает очки). 3) База данных - для хранения игровых данных. Здесь тоже есть о чём подумать - взять обычный привычный вдоль и поперёк исследованный MySQL, или подумать о более мощных базах типа Postgres, или взять модный MongoDb и его nosql-братьев. Выбирайте, что вам нужно и вперёд. Но самый главный мой совет - не беритесь за что-то "типа Травиана и Гриполиса" в качестве первого проекта. Подобные проекты делаются годами профессиональными опытными программистами. Сделайте что-то гораздо проще - типа танчиков, бомбермена, вертолётиков, гонок - где есть только одна основная игровая механика. За время разработки этого проекта вы получите бесценный опыт, без которого вы даже не сможете оценить сложность тех проектов, о которых вы говорили в вопросе.

UPD. В своём ответе вы просите добавить аргументов в пользу некоторых серверных языков. Добавлю про них.Первым рассмотрим php. Это достаточно простой язык для начала написания скриптов, и можно очень быстро написать что-то уже рабочее. Но это язык, который за внешней простотой прячет большую гибкость и достаточно сложные моменты. Поэтому для профессионального его использования нужны его глубокие знания, иначе получившийся код будет 1) медленным, 2) дырявым (ошибки и уязвимости) и 3) сложным в поддержке (сложно добавлять новые функции). Но начать его использовать очень просто.Node.js. Это серверная платформа, имеющая в качестве языка программирования javascript. Он в некоторых задачах намного быстрее, чем php, но в некоторых может быть сравним по скорости. Его преимущество, что используется тот же язык, что и для клиентской части - меньше изучать. Его сложность в том, что для серверного языка он достаточно сложен, писать хороший код сложнее, чем на php. Плюс, его основные парадигмы - прототипное наследование и асинхронный код - достаточно сложны для понимания. Хорошим советом может оказаться учиться писать не обычный javascript, а его разновидность CoffeeScript, но многие не согласятся, тут нет единого мнения.Python. Это очень мощный язык, позволяющий писать программы не только для web (собственно, сервер игры), но он используется очень много где. Он имеет очень простой синтаксис (кстати, отличающийся от многих других c-подобных языков), но очень гибкий и быстрый, и обладает богатейшей библиотекой готового кода (в принципе, php и node.js тоже обладают этим преимуществом). Недостатком можно отметить то, что гораздо меньшее количество программистов им владеют, и может быть, будет сложнее получить консультацию по возникшим вопросам (а вопросы будут - причём в любом языке). В общем, Python - отличный выбор для начала изучения серверного программирования.Ruby может дать очень быстрый старт и быструю разработку. Но его знают ещё меньше программистов, чем Python. Насчёт скорости выполнения он, вроде, медленнее питона (тут я не уверен, не хочу обманывать - у меня нет опыта на ruby). Его синтаксис достаточно своеобразен. Но если вы его хорошо освоите, то никогда не останетесь без высокооплачиваемой работы.Java и C# - очень мощные языки общего назначения, дадут очень сильную платформу для любого приложения, в том числе и сервера. Но они сложные, изучать их и хорошо писать на них гораздо сложнее предыдущих рассмотренных языков.Go - новый развивающийся язык, можно рассмотреть его для изучения. Но на нём пока мало готового кода, мало материалов, небольшое сообщество.Erlang - функциональный язык с очень необычной архитектурой (с точки зрения всех предыдущих языков), и очень необычный синтаксис. Изучать его сложно, но он даёт потрясающие результаты - в некоторых задачах. Советовать его не буду.

toster.ru


Смотрите также