вторник, 10 июля 2012 г.

заметка

Больше для себя. Список сайтов на которых можно выклянчить деньги на проект (аналоги кикстартера)
http://smipon.ru/
http://rustarter.ru/
http://www.indiegogo.com/

вторник, 3 июля 2012 г.

Перезагрузка блога

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

Кроме того подправил дизайн блога.

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

Кроме того выкинул неактуальные записи.

Hello

Давно не писал. Сессию сдавал, так что ничего интересного не было. Да и сейчас нет:)

Завершаю Magnet Game.

Скриншот на сегодня:

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

Далее отправлю игру Falco и попробую пробиться на Desura (и еще несколько других площадок)
Кроме того я собираюсь портировать эту игру на флеш, чтобы потом разместить ее на конгрегате (и других флеш площадках).

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

среда, 30 мая 2012 г.

Релиз MagnetGame близко

Я так неспешно и лениво продолжаю работаю над этой игрой. Проверил переход между картами, нарисовал пять локаций (скрины ниже). Вообщем играть уже можно, теперь только довожу. Пока решено что будет 15 локаций на три тематики (камень как на скринах, лед и нечто зеленное: - на каждую по пять карт). Нужно мячик довести до выигрыша. Будут бонусы которые нужно собирать по пути. А вот будут ли другие объекты - врядли, возможно только шипи какие-нибудь и в лучшем случае телепортация. Цель все таже - вывести мяч через лабиринт с помощью магнита





четверг, 24 мая 2012 г.

Работаю над MagnetGame

Ну как обычно, после трудового дня, обязательно два дня буду лениться :( Тем не менее заставил себя поработать. Добыл графу, придумал примерный список блоков, доработал редактор, научил игру менять локации


Завтра точно добавлю все игровые блоки и начну создание локаций.

И к несчастью появилась вредная бага, игрок стал застревать, даже там где логически он этого не может, например внизу - сплошная линия, но мячик катится как по нашим русским дорогам:). Сначала причиной было то что я не запретил вращение блоков... Но теперь я его запретил, а баг не излечился. Короче - фиг знает от чего оно там застревает... Может еще из-за неточных координат (помним что box2d не умеет работать с точными координатами)

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



понедельник, 21 мая 2012 г.

Отчет

Сегодня вернулся к казуалке magnet game и меньше чем за день запрограммировал почти всю игровую логику. Значит я адекватно оценил сроки - игра делается за три дня (я потратил уже два дня) и плюс еще один-три дня на доработку и издание. Это не реальные дни - а время которое я должен потратить на разработку.

Вот как выглядит результат:

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


Забил на стратегию, так что хорошо что нигде не анонсировал. Может будет время а может и не будет.

Вообщем я тут много что начинал, надо отписать что из этого сфейлилось а что развивается:

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

- magnet game - доделываю. В третий день (не знаю когда, надеюсь завтра) надо будет дописать игровые скрипты и нарисовать графику. После чего думаю, что протестирую первые три уровня на гаймдеве. Полная версия будет распространятся через инди-издателей (кто возьмет, точно будет фалко, надеюсь что десура (так как копировал с игры оттуда), и еще несколько). Скорее всего она будет бесплатной с оплатой за рекраму. Чуть позже я собираюсь ее портировать на флеш и разместить на конгредат и другие флешовые порталы. Возможно, выложу исходники, по крайней мере мне не стыдно за них в отличие от исходников classic arcanoid.

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

- Battle of the Ruins - у проекта проблемы. если к концу августа не будет игровой демки, проект умрет

- Dark War - фиг знает что с ним. Обещал каждый день писать по стратегии, но идей больше нет. Еще побудет, может когда-нибудь начну.

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

воскресенье, 20 мая 2012 г.

Игровые данные в коде

Решил написать вот такую вот заметку. Игровые данные обычно выносят за пределы кода в специальные текстовые скрипты. Это понятно - не нужно при каждом изменении пересобирать весь проект. Но я тут потихоньку начал делать roguelike и мне было нужно скрыть всю эту логику от игроков. Вариант паковать их в архив не подходит - слишком муторно в данном проекте. поэтому я решил писать скрипты прямо в код. Но и недостаток, когда данные и код перемешиваются и превращаются в кашу, меня не устраивает. И тут я вспомнил об одном свойстве #include. Ведь это является подстановкой файла в данное место. Вот как я набросал первый пример:

Грузим данные:

uLLong MoneyItemMgr::Load(uLLong nextid)
{
 _nextid = nextid;
 uLLong id = 0;
 
#include "MoneyItemDesc.inl"
 
 id+=_nextid;
 
 return id;
}

Сами данные (то есть файл MoneyItemDesc.inl) - это весь файл на текущий момент, ничего не удалил:) :

// медная монета
_data[id].SetName("Медная монета");
_data[id].SetCost(1);
_data[id].SetRarity(IR_POOR);
_data[id].LoadImg("money/copper_coin.png");
id++;
 
// серебряная монета
_data[id].SetName("Серебряная монета");
_data[id].SetCost(10);
_data[id].SetRarity(IR_UNCOMMON);
_data[id].LoadImg("money/silver_coin.png");
id++;
 
// золотая монета
_data[id].SetName("Золотая монета");
_data[id].SetCost(100);
_data[id].SetRarity(IR_RARE);
_data[id].LoadImg("money/gold_coin.png");
id++;

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

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

Вот, а то c++'о ненавистники считают эту вещь недостатком:)

суббота, 12 мая 2012 г.

новый проект

решил сделать еще одну игру. Временно назвал Magnet game. Суть игры - лабиринт из которого мы должны вытащить персонажа используя только магнит

Собственно идея игры взята отсюда: http://www.desura.com/games/ballin

Только у меня будет бесплатно, да еще и с исходниками:)

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

Но для меня нормально. Круг - это зона по которой крутится оранжевый квадрат. Здесь не видно - но движение осуществляется с помощью мыши (то есть двигая мышь мы крутим оранжевый квадрат).
На белый квадрат внимания не обращайте - это тестирование физики которое я не убрал.

Кстати решение рисовать графу на начальном этапе цветными квадратами оказалось верным и я так буду делать до завершения работы над кодом. Дело в том что в предыдущих проектах вместо того чтобы писать код - я искал графику (или даже пытался сам рисовать) что не очень хорошо влияло на результат.

вторник, 8 мая 2012 г.

Dark War

ЗАМОРОЖЕНО до лучших времен

Чето то сегодня я продуктивный... Ну, наверное потому что только вчера меня от WoW отпустило, и зачем я его поставил? Ну я то думал что в WoW затягивает социальная часть от ММО, и спокойно поставил локальный сервак себе (то есть играл в одиночку, без интернета:) ), чтобы сюжет посмотреть. Три дня пролетели незаметно, пока вчера я по нечаянности не снес свой акаунт:) Собственно сейчас я полностью собираю сервак (до этого юзал готовый), так что боюсь что в скором времени снова в варпе окажусь. Ну да ладно.

По проектам
Я заканчиваю работу над движком для игры битвы в руинах. Надеюсь скоро приступить к созданию демо.
Сегодня я также немного поработал с Sapphire2D 0.7. Придумал новую абстрактную архитектуру, которая позволит пользователю использовать движок на любой удобной  ему платформе.
Также вчера я начал думать (и работать) над новой инди-игрой, надеюсь (и молюсь) что к концу недели будет релиз.

Собственно все по текущим проектам.

А теперь самое главное. Мне внезапно захотелось возродить один свой старый проект - Dark War. Кто не знает - более-менее познакомится может здесь - http://www.gamedev.ru/flame/forum/?id=143251

Собственно я пока буду думать просто над документацией. Работу над кодом начну наверное летом (если не буду занят). И тем не менее я постараюсь здесь отписывать идеи которые (возможно) будут в игре. Писать постараюсь регулярно

Пока опишу основу. Цель - сделать игру близкую по духу warcraft 3 (ну, я просто очень давно жду warcraft 4, и также давно не видел ни одной нормальной фентези стратегии)

На данный момент в идее 4 фракции:

Империя
Обычные люди. Середнячки - всего по немногу.

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

Некроманты
Нежить, слабы, но многочисленны.

Культисты
Люди, демоны

Фракции выбраны не абы как - этого требует сюжет:)

Также будут нейтралы. Я лично всегда любил варик за это. А вот некоторые клоны мне не понравились в том числе и отсутствием нейтралов.

Работать буду один, и сразу же это учитываю. В последнее время (ну где-то почти год:) ) я больше не верю что можно найти людей готовых работать на энтузиазме. Это  кстати странно , программистов работающих за так много, а вот моделеры, художники, звуковики не хотят так работать, платить надо. Обидно. 
Так как я программист, то весь контент будет взят из WoW, warcraft 3, а также созданный игроками для модов. Это пока единственное решение которое позволит довести игру до играбельного состояния. Потому что денег на проект нет и не будет. Команды готовой работать за так нет, и как показывает опыт - не будет. И вообще проект фановый, я буду им заниматься в свободное от всего время (а его у меня очень мало)

Также напоследок хочу сказать - вообще Dark War уже имел рабочую демоверсию. В ней была заложена основа - было развитие базы, игра по сети и интернету, ИИ. Все что осталось - доработать фракции, сюжет и наполнить игру контентом. На последнем все и остановилось, я не нашел людей (при том что тогда была в свободном доступе готовая демо, то есть я собирал команду не с пустыми руками). Так что у игры всеже есть шанс на жизнь - ведь большая часть кода уже написана и лежит у меня на жестком диске. Я собираюсь сменить только рендер (уж слишком слабый он был раньше, на OpenGL 1.5).

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

среда, 4 апреля 2012 г.

Розенмайден

Зы, я тут познакомился мангой Rozen Maiden (православная ссылка - http://lurkmore.to/Rozen_Maiden). Ууу, круто - мое одобряе.

Жаль что Джун в Tales не выбрал ее:


Мое знакомство началось с Rozen Maiden: Tales поэтому я вижу эту мангу более жестокой. Кстати, саму идею вообще можно было бы развить до безумного кровавого ужаса (ожившие куклы использующие людей в качестве подпитки сражаются, и выживет только одна - самая идеальная, она станет живой девочкой  - но к сожалению этого нет... Но оно и так хорошо).

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




воскресенье, 1 апреля 2012 г.

быстрое ппреобразование float в int

Давно не писал. Решил написать возможно полезную штуку. Это не мое, подсмотрел в чужих исходниках.
Собственно задача - быстро преобразовать float в int. Не знаю - имеет ли оно практическую ценность, но тем не менее данный способ по тестам показал что работает в 1/4-1/3 быстрее стандартных способов.
Вот функция:
typedef union
{
      int i;
      float f;
} INT_OR_FLOAT;
int FloatToInt(const float& _value)
{
      INT_OR_FLOAT n;
      INT_OR_FLOAT bias;

      if(_value > 0.0f)
            bias.i = (23 + 127) << 23;
      else
            bias.i = ((23 + 127) << 23) + (1 << 22);

      n.f = _value;

      n.f += bias.f;
      n.i -= bias.i;

      return n.i;
}
Я протестировал данный метод вместе с преобразованием в C стиле ( (int)float ) и используя static_cast. Внимание, тестировал в релизе. В дебаге, наша функция работает ужастно (проигрыш почти в 10 раз!!!!), поэтому учитывайте этот момент - выигрыш будет только в релизе (если вы сами настроили релиз в компиляторе, не забудьте протестировать)

Тестирование класса FastFloat

тестирование преобразования float в int

(int) (1 000 000): time 7 ms
static_cast (1 000 000): time 5 ms
FloatToInt (1 000 000): time 4 ms
Для продолжения нажмите любую клавишу . . .

тестирование преобразования float в int

(int) (1 000 000): time 4 ms
static_cast (1 000 000): time 5 ms
FloatToInt (1 000 000): time 4 ms
Для продолжения нажмите любую клавишу . . .

тестирование преобразования float в int

(int) (1 000 000): time 7 ms
static_cast (1 000 000): time 6 ms
FloatToInt (1 000 000): time 4 ms
Для продолжения нажмите любую клавишу . . .

тестирование преобразования float в int

(int) (1 000 000): time 6 ms
static_cast (1 000 000): time 6 ms
FloatToInt (1 000 000): time 4 ms
Для продолжения нажмите любую клавишу . . .

тестирование преобразования float в int

(int) (1 000 000): time 4 ms
static_cast (1 000 000): time 4 ms
FloatToInt (1 000 000): time 4 ms
Для продолжения нажмите любую клавишу . . .

тестирование преобразования float в int

(int) (1 000 000): time 5 ms
static_cast (1 000 000): time 4 ms
FloatToInt (1 000 000): time 4 ms
Для продолжения нажмите любую клавишу . . .

тестирование преобразования float в int

(int) (1 000 000): time 4 ms
static_cast (1 000 000): time 4 ms
FloatToInt (1 000 000): time 3 ms
Для продолжения нажмите любую клавишу . . .

тестирование преобразования float в int

(int) (1 000 000): time 6 ms
static_cast (1 000 000): time 5 ms
FloatToInt (1 000 000): time 2 ms
Для продолжения нажмите любую клавишу . . . 
Как видно, оно и правда работает быстрее. Кстати, заметно что static_cast работает быстрее прямого преобразования (и лично для меня это немного неожиданно)
И прямо противоположный результат в debug
тестирование преобразования float в int

(int) (1 000 000): time 9 ms
static_cast (1 000 000): time 11 ms
FloatToInt (1 000 000): time 97 ms
Для продолжения нажмите любую клавишу . . .

тестирование преобразования float в int

(int) (1 000 000): time 9 ms
static_cast (1 000 000): time 12 ms
FloatToInt (1 000 000): time 56 ms
Для продолжения нажмите любую клавишу . . .
И вот здесь наша функция ужастна. Также заметно что статик-каст наоборот хуже.
Выводы делать вам - на мой взгляд  FloatToInt дает дополнительный бонус при полной оптимизации компилятором кода, а значит может быть полезен. 

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

Ы-ы-ы

С первым релизом меня, пока прямая ссылка - http://falcogames.com/ArkanoidClassicSetup.exe
Это классический арканоид сделанный на моем движке 2D Sapphire.

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

и еще оставлю это здесь
http://inwebwetrust.org/~uploads/strip061_office_vs_freelance.jpg