среда, 6 апреля 2011 г.

Поиск товаров электроники в Сургуте

Захотелось быстро сравнить цены на электронику в Сургуте. Сел и сообразил за пару вечеров сервис для поиска товаров электроники в городе. www.yoursurgut.ru Для этого проиндексировал 4 основных магазина: Арсенал, Первый, Техноцентр и Мвидео. У Арсенала и Мвидео пришлось скрабить информацию с сайтов. Паук-поисковик был написан на Python с использованием Beautiful Soup. Сервер реализовал на php, а клиент js-jquery-html. В общем все было не сложно и по фану (-:

Для сравнения цен попробуйте следующие товары:
  • MB292RS (разница в ~5000! :) )
  • SUB5A1
  • MC516RS
  • VX2268WM
Сервис будет улучшен если получит хотя бы 100 посещений. Если есть вопросы или предложения пишите.

понедельник, 28 марта 2011 г.

Дежавю в играх

Запускаю COD Black ops и сразу пробивает дежа вю. Вспомнилась игра "In Cold Blood", которая издавалась у нас как проект "Не зная страха". Это просто потрясающий action/pointer adventure от Revolution Software, создатели Broken Sword 2. Начало игры пробирало мурашками по спине;) Звук и атмосфера пытки и голос. "С начала, с самого начала...". Создатели COD пытались создать такую же атмосферу и закольцовывание сюжета, но что то было не то... Ах да. Дежавю выбивала все из колее моего подсознания.
Игра "In Cold Blood" это просто потрясающее смешение жанров : stelth, action, adventure, quest и элементы rpg.
Эта игра в 2000 году уже была кинематографичной не меньше чем современный Mass Effect. Эффект был и от музыки и от детального описания мира и проработанных харизматичных персонажей. Эта игра заставляла сопереживать героям и вела под постоянной интригой и напряжением до заключительных титров.
Хорор появлялся в играхХорор появлялся в играх
СтелсСтелс
ActionAction
В общем, must have 1.
После увиденного дежавю я попытался вспомнить когда еще я такое испытывал. Сразу вспомнил кадры из игры "Splinter Cell: Conviction", когда Сэм попадает в главный холл своей секретной организации и идет к ресепшену. Огромный зал, много света, один стол с девушкой и !!! "ONI" - компьютерная игра в жанре экшена от третьего лица, вышедшая омг в 2001 году. Вот времечко было. Я вспомнил как Конока пришла в свою сверх секретную организацию в поисках правды. Конока шла через огромный зал, наполненный светом.И в дальнем конце зала , находился ресепшен с девушкой. Потом небольшой диалог... И включается сирена и девушка ныряет под стол.
OniOni
Обе игры вызывали в этот момент кучу эмоций и в обеих играх это удалось, но 2001 год и 2010)
Кстати , ONI - must have 2.

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

Создание прототипов #2

Итак создадим прототип игры Lines. В этой игре игрок управляет шариками на поле 9x9 клеток и собирает из них линии. Если игрок собирает линию из 5 элементов то линия уничтожается. Если игрок после своего хода не уничтожил ни одну линию, то падают дополнительные шарики на поле и так пока все поле не заполнится шариками и игрок ничего не сможет больше сделать.

Бриф закончен - достаем инструменты. Если на Lua вы не программировали то вам не помешал бы интерпретатор lua 5.1 и какой нибудь текстовый редактор.
Для Linux: sudo apt-get install lua5.1
Редактор я использую SciTE(Win) и GEdit(Lin).
Создаем hello.lua
Теперь пишем:
print "Hello world..."
 --или
 print("Hello World")
 --или
 print "Hello World";
И запускаем : lua hello.lua
Вот и все lua мы теперь как бы знаем;)
Теперь чтобы воять графику скачиваем Love2d.
 Love2d - https://bitbucket.org/rude/love/downloads
Стабильная версия 0.7.0! Именно с помощью нее можно собрать exe файл в Windows без ошибок. "Теперь wget и все в порядке" ;)
Накидаем пример для love2d :
function love.draw()
    love.graphics.setBackgroundColor(200, 200, 200)    
    love.graphics.setColor(255, 40, 40, 100)
    love.graphics.print('Lines ALPHA VER: 0.01', 10, 10)
end
Называем файл main.lua. Кидаем его в папку EpicLines. И переносим папку на love.exe.
Увидели серый экран и надпись розовую. Отлично! По Love2d отличное wiki на сайте разработчика. Мало того это wiki на русском языке.

Итак в наших руках теперь есть все инструменты чтобы создать прототип.
Теперь скачаем исходный код проекта. Ну дык проще один раз увидеть как говорится.Переходим по ссылке OpenLines исходники  либо просто:
git clone https://github.com/Partysun/OpenLines.git
Lines- это впервую очередь массив 9x9 который должен содержать игровые объекты. Разных видов всего 7 : Желтый , Голубой , Синий , Зеленый ,Оранжевый ,Розовый ,Красный. В Lua нет массивов, а есть таблицы. Это не тавтология!) Если мы определим таблицу:
mytable = {"hello", 2, "3", 4}
То обратиться, можно как к массиву только первый элемент не 0 ,а 1.
print (mytable[1] )   --"hello"
Двухмерный массив соответственно реализуется вложенностью таблиц.
mytable = {{},{},{}} . А обращение mytable[i][j] . Кроме того Lua не имеет нормальной объектной поддержки - ее вообще нету. Чтобы добиться эмуляции ООП на Lua можно использовать возможности таблиц и метатаблиц языка. Существует много разных решений ООП на Lua, которые дают высокую абстракцию и возможность работать с классами как на java или c. Я выбрал middleclass. Один Lua файл , делаем require и работаем с псевдо ООП. Примеры работы с этой библиотекой находятся на github страничке автора.
В исходниках есть main.lua (Controller + View) и gamelogic.lua (Model)  Шаблон M-V-C очень важен в разработке кросс платформенного решения. Основной смысл отделить логику игры от зависимых библиотек работы с управлением, либо библиотек работы с графикой. Вообще сначала я сделал gamelogic.lua, а тестировал работу модуля через консоль. Консольный вариант для прототипа не самый лучший так как видеть в играх все таки очень важно. Прототип должен иметь тоже управление, что и конечная игра! Ведь управление это один из главных элементов геймплея. 
Как собрать exe файл или исполняемый файл на Linux можно почитать в Wiki Love2d либо вот на этой страничке - http://love2d.ru/

Создание прототипов #1

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

Процесс создания любой игры это в первую очередь рождение идеи игры. Процесс вынашивание такой идеи для инди игр не может быть долгим как и сама разработка. Для моих проектов это не более 1-2 недель. Идея обсуждается с художником ,с женой:) , формируем общий концепт. Как появляются идеи? Откуда берутся идеи? Это обширные философские вопросы,свое виденье на которые я опишу как нибудь еще. 
Но вот имеется концепт , который кстати лучше всего немного формализовать и описать на бумаге.
  •   Что за игровой мир? 
  •   Чем управляет игрок? 
  •   Какая цель у игрока? 
  •   Логика победы и поражения
Так как я пишу игры для мобильных платформ(iOS, Android, Symbian) то процесс разработки игр может сталкиваться с различными языками программирования и различными технологиями которые предоставляются нам авторы этих платформ. До понимания сути прототипа игр я открывал eclipse и сразу начинал кодить под какую либо из плафторм и тестировал на своем девайсе что из этого выходит. Минусы:
  1. Художник не мог попробовать прототип игры
  2. Сразу сталкивался с сложностью разработки(сюда кстати входит зависимость от технических средств и инструментария) 
  3.  Нельзя получить полную абстракцию от технических проблем и работать над геймплеем игры.

После нескольких проектов я наконец сел и выделил для себя основные требования для прототипа игр:
  • Скорость разработки
  • Независимость от платформы
  • Возможность художнику пощупать прототип
  • И возможность посмотреть на прототип на конечных устройствах
Решение оказалось очень простым и выполняло все требования.
Программировать прототип я решил на Lua (ну аддоны к WoW, Аллоды то я писал:) Агрометр и гилдхол . Эх было дело...)
А использование фреймворков Corona SDK и Love2d сделало реальностью создание одного игрового кода ,который запускался бы как на Windows, Linux, MacOS  так и  на iOS , Android.
Вообще инструменты имеют очень важное значение в решении задач, кэп.
Corona SDK - http://www.anscamobile.com/corona/
Love2d - http://love2d.org/