Мой первый LudumDare #26

Опубликовал – 27.04.2013

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

Управление клавиши WASD, менять персонажа клавиши QE

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

Все трансляции можно смотреть либо онлайн либо уже в записи.


Игра под катом
Читать далее…

Создание простого эффекта на Java (Particle System)

Опубликовал – 05.04.2013

Написал видео примерно на час с небольшим. Может кому станет полезным. Использовал Java без доп. библиотек.

Пятнашки Haxe + HaxePunk + NME

Опубликовал – 28.02.2013

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

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

Установка самого Haxe заняла не больше 20 минут, при том что я никогда этим не занимался. NME мне в этом очень помог. Выбор IDE пал на первую из выдачи гугла – FlashDevelop. Не скажу что самая удачная IDE, которую я использовал, а после использования IntelliJ IDEA она просто меркнет своими далеко не богатыми возможностями. Из недостатков могу отметить парочку, которые меня больше всего стопали в разработке:

1. Рукописные импорты, т.е. банально подключить свой же класс, который лежит в соседнем пакедже мне нужно ручками набирать его import ru.znay.znay… как мне кажется, современная IDE себе такого позволить не может.

2. Автоформатирование срабатывает только по нажатию ентер и переходу на другую строчку, либо если поставишь заключительные «;» – очень напрягает чисто визуально, когда форматируешь строку в середине не соблюдая пробелы(возможно дурная привычка) ожидая что IDE поправит само, ан нет. необходимо перейти в конец строки и тыкнуть ентер. Глуповато.

Так же пробовал плагин Haxe support для моей любимой IntelliJ IDEA. Но он оказался вообще сыроват в плане сборок под разные платформы (их там просто нет, я так и не понял как из идеи собрать проект), хоть у него и нет проблем с авто импортами и авто форматированием.

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

1. Из фремворка HaxePunk:

var screenFader = new VarTween();
screenFader.tween(picture, "alpha", to, duration);
world.addTween(screenFader);

Что же тут произошло, давайте разберемся. Перво наперво мы создаем объект типа tween их в пакете com.haxepunk.tweens.misc несколько, приводить список не буду, иначе статья растянется. Дальше указываем твину объект с которым мы работаем, вторым атрибутом указываем имя свойства, третьим до какого значения доводить это свойство и четвертым время выполнения твина. Можно еще указать callback, который сработает по завершению работы. И так называемые EaseFunction, это обычная интерполяция, можно выбрать линейную, квадратичную, косинусойдную и тд. Смотря какой плавности вы хотите добиться.

2. Я так же попробовал твин из фремворка Actuate, выглядит примерно так же:

Actuate.tween (this, duration, { x: targetX, y: targetY } )
   .ease (Quad.easeOut)
   .onComplete (this_onMoveToComplete);

Т.е. все просто, указываем объект, время выполнения, свойства указываем сразу с финальными значениями, дальше можно указать EaseFunction, либо сразу повесить callback на разные евенты. Вообще удобно, твин от Actuate использует паттерн декоратор, работать с ним одно удовольствие.

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

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

Умный Арканоид

Опубликовал – 17.02.2013

Доброе время суток товарищи! :)

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

Возможно, кому то пригодится.

Под катом естественно сам апплет.
Читать далее…

Пятнашки (Barley-break or Fifteen)

Опубликовал – 08.02.2013

Ищу вдохновения в простых играх. Пятнашки, дамы и господа.

upd: Знаменитая, как оказалось, эта игра только в России. Как только разместил игру на американском ресурсе, наткнулся на стену непонимания, требовали пояснений, инструкций, и дополнительных скриншотов.

Игра и исходники пятнашек, как всегда под катом.

Читать далее…

Балуемся с lwjgl util applet

Опубликовал – 27.01.2013

Дело было вечером, делать было нечего. Решил разобраться с lwjgl util applet, все оказалось очень просто. Настроил проект так, что апплет собирается одной кнопкой. И написал простенькую игрульку. Наслаждаемся :)

Играть тут!!!

Puzzle-pipe создаем игру за час

Опубликовал – 18.01.2013

Собственно, сегодня вечером сидя дома. Решил прогуляться по хабру. Увидел эту статейку http://habrahabr.ru/post/166057/ зачесались руки. Захотелось именно разгадать пазл. Но ставить dos-box и шаманить с дос игрульками ой как не хотелось. Подумалось, сделалось. Смысл игры – выстроить все элементы вертикально.

Встречаем пазл, который я до сих пор не смог пройти:

Под катом игра. Стрелками вверх -вниз задается уровень игры. (скажу по секрету, 4х4 для меня все еще загадка).

Update 18.01.2013: Как выяснилось, игра не имеет решения если содержит нечетную матрицу. Небольшая доработка. При генерации для равномерной раскладки, генерю ровно половину повернутых элементов. Систему я таки разгадал, 6х6 проходится в ~20 кликов. Добавил возможность расширить игру до 10х10.
Читать далее…

Генерация ландшафта на основе генерации шумов (noise)

Опубликовал – 10.01.2013

Добро время суток товарищи, сегодня попробуем написать простенький генератор карт для 2д игр, посредством генерации шумов.

Так уж повелось, что писать мы это добро будем на java. На уникальность материала не претендую, так как все мы учимся в инете, и там уже давно ничего уникального не осталось. Результат нашего небольшого кода (строк 200) будет нечто подобное:

Читать далее…

Разработка игры Ghospers

Опубликовал – 01.07.2012

Мысли по поводу этой игры описываю где-то тут.
Портирование игры на html5 привело к полному провалу.

Последний скриншот:

А под катом игра.
Читать далее…

Разработка puzzle игры на java

Опубликовал – 02.06.2012

Простая игра puzzle.

Текущая версия 0.0.4 Игра под катом.


Читать далее…

Разработка игры на java (закончена)

Опубликовал – 04.03.2012

Ура товарищи! Релиз! Приятной игры :)

Текущая версия 1.0.0a Игра под катом.

Читать далее…

ManagedProperty для ManagedBean в JSF 2.0 (перевод)

Опубликовал – 25.02.2012

Всем добрый день. В JSF 2.0 аннотация @ManagedProperty используется для dependency injection (DI). Аннотацию можно представить аналогом спрингового @Autowired, за тем лишь исключением, что @ManagedProperty инджектит после вызова конструктора и только при наличие сеттера на инъекционную сущность.

Давайте посмотрим пример, класс MessageBean.java – добавлен в менеджер бинов с именем “message“.

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="message")
@SessionScoped
public class MessageBean implements Serializable {

	//бизнес логика

}

Читать далее…

Auto-deploying используя Ant + ssh + ftp

Опубликовал – 20.12.2011

Вступление

Вечер добрый. Возникла необходимость обновлять сервера на амазон инстансах. На помощь пришел Ant.

Первая задумка была очень проста, на Windows инстансе установлен веб-сервер Tomcat, установлен он как сервис. Необходимо обновить сервер, например, после каких то изменений. Первая попытка, просто заменить .war файл в каталоге webapps на tomcat, не привела ни к чему, хотя в настройках веб-сервера стоит autoDeploy=»true» (если кто знает решение данной проблемы, напишите пожалуйста). То есть .war просто заменился, а редеплоя не происходило. Поэтому родился способ номер два: останавливаем tomcat, копируем по ftp .war файл(ы), удаляем распакованный .war файл, запускаем tomcat.
Читать далее…

Async Spring JMS + log4j через SSL

Опубликовал – 11.12.2011

Вступление.

Доброе время суток товарищи, это статья для тех, кто бы хотел использовать Java Message Service (JMS) в своих реализациях logging‘a. Прежде всего, эта модель пригодится тем, кто хочет собирать логи с нескольких серверов, и например, свапить их в DB для дальнейшего анализа. Я думаю не стоит объяснять, почему следует использовать не решение в лоб, т.е. заставить аппендер логера напрямую работать с базой. Но для тех кто в танке, поясню, что это не самая лучшая идея для высоконагруженного проекта по нескольким причинам, например насколько мой анализ показал, log4j работает синхронно, т.е. сервер будет регулярно висеть в ожидании коннекта к удаленной DB. Хотя я и не утверждаю, что мой способ лишен недостатков, потому что отправка MOM сообщения занимает около 3-5ms, если верить документации, но из двух зол выбираем меньшее.

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

Пример ExtJS 4 File Upload + Spring MVC 3 (перевод)

Опубликовал – 26.09.2011

Этот урок расскажет вам как использовать ExtJS 4 File Upload Field в Spring MVC 3 .

ExtJs File Upload Form

Для начала, нам нужна форма загрузки файла. ExtJS 4 docs предоставляет нам несколько примеров.
Читать далее…