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

воскресенье, 7 октября 2012 г.

Инструкция начинающего разработчика игр

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

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

Читать дальше: Инструкция начинающего разработчика игр

суббота, 24 марта 2012 г.

Фиксим утечки памяти в box2d(2.1a)

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

Добавим в класс b2Body, функцию Destroy с таким содержанием: [...]
Читать дальше: Фиксим утечки памяти в box2d(2.1a)

пятница, 23 марта 2012 г.

TheMiner и FlashDevelop

В этом руководстве речь пойдёт о TheMiner‘е (отличный Flash профайлер) и о FlashDevelop‘е (лучшая и бесплатная среда разработки для Action Script / haXe), соответственно подразумевается, что вы с ними знакомы и желаете использовать их совместно. Если не знакомы — рекомендую ознакомиться.
Всего есть два пути использования TheMiner во FlashDevelop:
- Используя TheMiner SWC, как любую другую внешнюю библиотеку.
- Добавляя TheMiner SWF в список профайлеров FlashDevelop.
Почему существует два пути? Потому что у каждого есть сови преимущества и недостатки, и, в зависимости от обстановки, тот или иной путь может оказаться наиболее подходящим.
Итак, давайте попробуем оба пути шаг-за-шагом. Пожалуйста запустите FlashDevelop и откройте \ создайте в нём as3 проект чтобы продолжить.

TheMiner в качестве внешней SWC

1. Для начала, купите TheMiner или скачайте бесплатную версию для некоммерческого использования.
2. Распакуйте скачанный архив, зайдите в папку «SWCs» и выберите подходящую версию (в зависимости от требуемого языка), например TheMiner_en.swc [...]
Читать дальше: TheMiner и FlashDevelop

пятница, 27 января 2012 г.

Игровые циклы или ЭлектроКардиоГама

Игровой цикл — это пульс каждой игры. Ни одна игра не будет работать без этого. Однако, к несчастью каждого нового разработчика игр, в сети нет хороших статей, в которых уделено достаточное внимание этой теме. Но не печальтесь, потому как только что вы получили возможность прочитать единственную в своем роде статью, уделяющую вопросу игровых циклов заслуженное внимание. По долгу службы мне часто приходится иметь дело с большим количеством кода мелких мобильных игр. И я каждый раз удивляюсь сколь много существует реализаций игрового цикла. Вы тоже можете удивиться как можно для такой, казалось бы простой, вещи можно придумать множество имплементаций. А ведь можно! И в статье я постараюсь рассказать о достоинствах и недостатках наиболее популярных вариантов игровых циклов. Также я постараюсь описать наилучший на мой взгляд вариант реализации игрового цикла.
(Thanks to Kao Cardoso Félix this article is also available in Brazilian Portuguese) (Thanks for me, in Russian also, прим. перев.)

Читать дальше: Игровые циклы или ЭлектроКардиоГама

вторник, 18 октября 2011 г.

Реклама AdMob и мобильные Air приложения

Короткий пост о том, как разместить баннер популярной сети AdMob в мобильном Air приложении. Рассмотрим один-два нюанса, решим проблему нежелательного масштабирования.

Итак начнем. Оставим без деталей несложный процесс регистрации на сайте AdMob, и создание нового сайта/приложения:

AdMob создание нового сайта или приложения

Для размещения баннера в приложении для iPhone и iPod Touch я выбираю iPhone App — мне это кажется логичным. Однако многие авторы подобных статей рекомендуют выбрать Smartphone Web. Такой вариант удобен тем, что сразу приводит нас к необходимому javascript коду вместо такой вот новости [...]

Читать дальше: Реклама AdMob и мобильные Air приложения

суббота, 15 октября 2011 г.

Пишем шейдер на AGAL

Ни для кого уже не секрет, что Flash Player 11 имеет поддержку GPU ускорения графики. Новая версия вводит Molehill API позволяя работать с видеокартой на достаточно низком уровне, что с одной стороны даёт полную волю фантазии, с другой требует более глубокого понимания принципов работы современной 3D графики.

В данной статье речь пойдёт о языке написания шейдеров – AGAL (Adobe Graphics Assembly Language). Предполагается, что читатель знаком с базовыми основами современной realtime 3D графики, а в идеале – имеет опыт работы с OpenGL или Direct3D. Для остальных же проведу небольшой экскурс:

  • в каждом кадре всё рендерится заново, подходы с частичной перерисовкой экрана крайне нежелательны
  • 2D – частный случай 3D
  • видеокарта способна растеризовать треугольники и ничего кроме
  • треугольники строятся на вершинах
  • каждая вершина содержит в себе атрибуты (координата, нормаль, вес и др.)
  • порядок задания вершин в треугольнике определяется индексами
  • данные вершин и индексов хранятся в вершинном и индексном буферах соответственно
  • шейдер – программа выполняемая видеокартой
  • каждая вершина проходит через вершинный шейдер, а каждый пиксель при растеризации через фрагментный (пиксельный)
  • видеокарта не умеет работать с целыми числами, но отлично работает с 4D векторами

Синтаксис
В текущей реализации AGAL используется обрезок Shader Model 2.0, т.е. фитчелист железа ограничен 2005 годом. Но стоит помнить, что это ограничение лишь возможностей шейдерной программы, но никак не производительности железки. Возможно, в будущих версиях Flash Player планка будет поднята до SM 3.0, и мы сможем рендерить сразу в несколько текстур и делать текстурную выборку прямо из вершинного шейдера, но учитывая политику Adobe, случится это не раньше выхода следующего поколения мобильных устройств.

Любая программа на AGAL является по сути низкоуровневым языком ассемблера. Сам по себе язык очень простой, но требует изрядной доли внимательности. Код шейдера представлен набором инструкций вида: [...]

Читать дальше: Пишем шейдер на AGAL

среда, 14 сентября 2011 г.

Как я делал игру

Всем привет, меня зовут Марк, я — Flash-разработчик. Я доволен своей работой, с помощью которой я могу сейчас зарабатывать достаточно для достойного существования в городе на букву М, да чтобы ещё и была возможность потихоньку копить сбережения на будущее. Даже несмотря на то, что в этой стране само слово «будущее» является каким-то очень странным и непонятным термином.

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

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

Как я делал игру

воскресенье, 11 сентября 2011 г.

Создание своего Java Socket Server. Первый контакт

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

В этой части мы создадим сервер при помощи библиотеки Netty, сделаем библиотеку на AS3 и проверим её. Чтобы понять процесс остановимся на простой реализации — клиент будет отправлять серверу сообщение, а сервер будет отправлять его обратно (это называется echo-сервер).

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

Создаем java-socket сервер.

Создание сервера на Netty – процесс очень простой. Достаточно раз понять архитектуру этой библиотеки. Подробно с работой этой библиотеки можно познакомиться на сайте проекта.

Создаем новый канал.

Первым делом создаем фабрику для создания и управления Каналами и связанными ресурсами. Она будет обрабатывать все I/O запросы и генерировать ChannelEvent, которые мы уже будем обрабатывать [...]

Создание своего Java Socket Server. Первый контакт

суббота, 3 сентября 2011 г.

Создание своего Java Socket Server. Создание заготовки. Код в студию!

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

Начнем с небольшой заготовки, которая будет содержать:

  • логгер
  • считывание параметров
public class JavaServer extends BaseJavaServerLoggedClass {

	public static JavaServerProperties properties;

	public static void main(String[] args) {
		prepare();
		info("String server...");
	}

	private static void prepare() {
		try {
			loadProperties();
			initLogger();
		} catch (Exception e) {
			System.out.println(e.getMessage());
			System.exit(-1);
		}
	}

	private static void loadProperties() throws Exception {
		properties = new JavaServerProperties();
		properties.loadProperties();
	}

	private static void initLogger() {
		org.apache.log4j.PropertyConfigurator.configure(properties.getProperty("log4j.propertyFileName"));
	}
}

Тут все предельно просто:
1. в методе initLogger() мы инициализируем логгер. Сами методы логера спрятаны в классе BaseJavaServerLoggedClass, чтобы не отвлекать от основного [...]

Читать дальше: Создание своего Java Socket Server. Создание заготовки. Код в студию!

Прототипирование игр с помощью JavaScript и CSS3

Я хотел бы поделиться прототипом игры, созданным всего за несколько часов. Надеюсь, что он вдохновит нескольких из вас! В индустрии однопользовательских браузерных игр, кажется, очень не хватает воображения и умения рассказывать истории, хотя, возможно, я просто не заметил таких игр ;), но мне не хватает таких игр, как Grim Fandango.

Ниже приведен скриншот из демонстрации, состоящей из нескольких узлов DOM, представляющих составные части главного героя, птиц и сцену. Большинство анимаций осуществляется CSS-переходами/анимациями, некоторые из которых являются динамическими и используют библиотеку move.js.

Grim Fandango

Читать дальше: Прототипирование игр с помощью JavaScript и CSS3:

вторник, 30 августа 2011 г.

Создание своего Java Socket Server. Теория. Из ActionScript3 в Java.

Введение

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

Я флеш-программист, и мой опыт работы с явой исчисляется где-то месяцем. Эта статья типа «написание Java Socket сервера глазами флеш-программиста».

Предыстория.

До того, как мы написали свой сервер в нашем проекте Doom Forge Game мы использовали готовое решение для мультиплеерных игр — Smart Fox Server. Сервер сделан хорошо, в нем много возможностей, но нам пришлось столкнуться с некоторыми проблемами в его работе, которые решались тяжелым общением с безинициативной службой поддержки и решение проблемы могло занимать не меньше месяца (если проблема вообще решалась). Так что опыт использования Smart Fox Server у меня был печальный.

Из ActionScript3 в Java

На самом деле, перейти из флеша на яву было очень просто. В java и флеше есть несколько отличий, которые запомнились лично мне (конечно, это не все отличия), но в общем они очень схожи.

Читать дальше: Создание своего Java Socket Server. Теория. Из ActionScript3 в Java.

пятница, 26 августа 2011 г.

7 советов инди другим инди

24 августа в день 20 летия независимости Украины, около обеда по Киевскому времени, в Новой Зеландии стартовали продажи игры для iOS Contre Jour.
Эта небольшая игрушка еще до релиза успела нахватать премий.
Первая игра для iOS, получившая номинацию на E3 от GameCriticsAwards. На E3 нет отдельной номинации для мобильных устройств — мобильные игры соревнуются с портативными. И игра в своей номинации соревновалась с Super Mario для 3DS и Uncharted для PS Vita.
Игра признана лучшей мобильной игрой на Е3 изданием GamePro. Вышла в финал аналогичной премии от IGN.
Сейчас — через 2 дня после старта продаж игра имеет титул iPad Game of the Week в AppStore и уверенно движется в топы продаж — сейчас на 4м месте.
Игра разработана маленькой независимой студией из Украины — Mokus.
Фактически за этим ником скрывается один человек — Максим Грынив. Это я. Приятно познакомится.

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


Launch trailer

Читать дальше: Game Development / 7 советов инди другим инди

пятница, 5 августа 2011 г.

Социальные игры: мечты или реальность

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

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

  1. Главное идея — правда ли это?
  2. Что лучше flash или iframe?
  3. Что же все-таки нужно для того чтобы начать разработку?
  4. Какие методы раскрутки наиболее эффективные и как стоит планировать свою маркетинговую деятельность?
  5. Стоит ли привлекать инвесторов или издателей?
  6. Ну, и самое главное, срок окупаемости проекта и возможная прибыль, какова она может быть? [...]

Читать дальше: Социальные игры: мечты или реальность

четверг, 4 августа 2011 г.

Автоматизация сборки 1. ANT для Flash. FAQ

Ant

Вообще тема ANT + Flash очень неплохо раскрыта там, сям. Но тем не менее при личном освоении, некоторые проблемы были мной встречены, и так же героически преодолены. К тому же основная русскоязычная статья от Константинера http://constantiner.blogspot.com/2006/02/flash-apache-ant-new-media.html, на которую есть даже линк на Википедии, технически несколько усторела.

Главная цель — запустить сборку простенького проекта ANT-ом. Начнем.



Настройка среды

  1. скачать, установить ant (http://ant.apache.org/);
  2. еще для запуска ANT понадобиться JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html (который у вас уже есть если стоит Flash Builder);
  3. настроить путь к ANT, через PATH (добавляем переменную среды JAVA_HOME=, компилятор Java. Как это делать в винде: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/environment_variables.mspx?mfr=true );
  4. скачать Flex SDK (если нет) (http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK);
  5. добавляем в ANT возможность выполнения инструкций Flex SDK компилятора: в ant\lib сбросить \ant\lib\flexTasks.jar;
Читать дальше: Автоматизация сборки 1. ANT для Flash. FAQ

пятница, 15 июля 2011 г.

Эффективная работа в Adobe Flash Professional

При работе в Adobe Flash Professional не следует забывать о производительности и культуре создаваемого содержимого.
Изучив ряд материалов и выслушав пожелания коллег, я пришёл к выводу, что стоит в одном месте опубликовать список основных правил работы во Flash Pro, которые способствовали бы формированию качественного содержимого. Для более глубокого изучения данной темы, настоятельно рекомендую ознакомиться со всеми материалами, ссылки на которые приведены в конце поста.
Эти правила в первую очередь будут полезны аниматорам и сборщиком интерфейсов, однако разработчикам также не помешает ознакомиться.

Полностью актуально для Flash Pro CS5.5 и частично – более ранних версий.

- Не используйте излишне высокую частоту кадров.
Для большинства анимаций достаточно частоты в 24-30 кадров в секунду, а если Ваш проект – это (AIR) приложение, в котором почти нет анимации, то лучше и вовсе ограничить fps до 12, повышая его временно программно до 24-30 только в том случае, если надо показать плавную анимацию. Чем выше fps – тем меньше времени выделяется на исполнение кода, отрисовку и очистку памяти, что зачастую может привести к пропуску этапа отрисовки (в результате чего анимация будет «тормозить»).
Используйте 24 кадра в секунду вместо 120

- Старайтесь располагать элементы «плоско».
Используйте слои вместо контейнеров, когда это возможно. Уменьшая уровень вложенности, Вы увеличиваете производительность

Читать дальше: Эффективная работа в Adobe Flash Professional: "

четверг, 7 июля 2011 г.

Пьеса «Разработка многопользовательской сетевой игры.» в 3 частях. Часть 1: Архитектура

Battle cityВ общем, как и обещал, публикую серию статей по разработке многопользовательской сетевой игры. Изначально я хотел просто накатать статейку по разработке серверной части на интересном языке Scala. Но понял, что одной статейкой для развертывания темы не получится обойтись. А писать очередной топик обо всем и ни очем, не хотелось изначально. Поэтому встречайте пьесу в трех действиях. В течении которой мы разработаем архитектуру проекта, реализуем серверную и клиентскую части…
Все помнят прикольные танчики на денди?
Ну вот на примере этих танчиков и будем разрабатывать сервер и клиент.

Читать дальше: Пьеса «Разработка многопользовательской сетевой игры.» в 3 частях. Часть 1: Архитектура

воскресенье, 12 июня 2011 г.

Создание очередной казуалки на Flash-платформе с физикой

Привет, дорогой друг.

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

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

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

Читать дальше: Создание очередной казуалки на Flash-платформе с физикой

четверг, 2 июня 2011 г.

Браузерная стратегия «Пути Истории». Архитектура и эволюция проекта

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

Пути Истории — это массовая браузерная стратегическая игра. Проект начинался с энтузиазма одного человека и вырос до серьзного проекта с немалой аудиторией.

Читать дальше: Браузерная стратегия «Пути Истории». Архитектура и эволюция проекта

вторник, 31 мая 2011 г.

Тюнинг Canabalt

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

Тюнинг Canabalt

[Эта статья рассматривает технические особенности, соотношения и размеры Flash версии игры Canabalt. Читатель, будь осторожен, статья содержит спойлеры и большое количество цифр!]

Друзья часто спрашивают меня: думал ли я о том, чтобы выложить исходный код моей Flash игры Canabalt в интернет на растерзание и изучение. Они думаю, что для людей будет полезно увидеть, как в игре организована физика и другие вещи. Но я отношусь с опасением к этой идее, на это у меня есть несколько причин, например: исходный код игры написанный за 5 дней, представляет из себя кошмарный и отвратительный спагетти-код, который вряд ли поможет кому-нибудь. Поэтому, из чувства гордости по поводу первого дня рождения Cannabalt, я подумал: «почему бы не написать статью, в которой бы рассказывалось о том, как внутри всё устроено?»

Читать дальше: Тюнинг Canabalt

суббота, 21 мая 2011 г.

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

На блоге одного из создателей Aquaria и Spelunky есть любопытный пост с советами для тех, кто испытывает проблемы с доведением до конца своих игровых проектов. Этот список советов оказался для меня своего рода «зеркалом», в котором отражены многие проблемы, с которыми сталкивался я сам, и я был удивлен тем, насколько хорошо автору удалось уловить суть этих проблем и предложить свои решения, зачастую бескомпромисные.
Закончить игру
Приближаясь к заключительной стадии разработки моей игры, я много думал о том, как завершать выполнение проектов в целом. Я заметил, что вокруг много действительно талантливых разработчиков, у которых возникают проблемы с доведением до конца игровых проектов. По правде говоря, я и сам оставил позади себя ряд незавершенных игр… Думаю, у многих та же ситуация. Не всякий проект удается, по разным причинам. Однако если вы стали замечать, что постоянно забрасываете проекты, которые имеют неплохой потенциал, вероятно, стоит оглянуться назад и изучить тому причины.

Читать дальше: Как доделать игру