Роботы против зайцев!

Хочу поделится коротенькой фейл историей о первых шагах в инди.

Зайцы уделывают Роботов

Меня зовут Игорь, он же Hogar. Сам я из Беларуси, из города Полоцка.

В течении прошлого года я сделал и продал на fgl две свои игры, одна про зайцев, а другая про роботов:

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

Итоги:

Зайцы уделывают Роботов
Зайцы:

Сроки: 2,5 месяца;
Человеки: 1;
Ожидания от продажи: 500$;
Оценка на fgl: 7;
Результат продаж: 400$ (primary) + 800$ (небольшие доработки для спонсора) + 200$ (1 сайтлок) = 1400$;
Расходы: 0$ (комиссию оплатил спонсор);
Реклама: в районе 30$ накапало;
Доход: 1430$.

Роботы
Роботы:

Сроки: 4-5 месяцев;
Человеки: 3;
Оценка на fgl: 7,5;
Ожидания от продажи: 3000$ — 4000$;
Результат продаж: 550$ (primary) + 500$ (1 сайтлок) = 1050$;
Расходы: 155$ (звуки) + 20$ (перевод текстов) + 55$ (комиссия fgl);
Реклама: нет рекламы;
Доход: 820$ / 3 = 273$ на человека.

Результаты:

Глубочайшее уныние от никакущей продажи роботов. Искренне радовало только 4 страницы положительных коментов на newground'е. Ныне свернул с пути инди, уйдя вот уже более полугода в глубокий фриланс, ибо еда и т.д. Продолжаю думать в сторону своих проектов, но с повышенной осторожностью.

Как так получилось:

На неудаче с роботами сказались ошибки, допущенные при создании игры, которых не было у зайцев:
— реалистичные фото на бэкграунде;
— нестандартный и маленький размер флешки (500x500);
— узкая целевая аудитория.

А также ошибки при продаже:
— поставил на аукцион в ноябре, аукцион затянулся до нового года, активность спонсоров упала. В сумме игра провисела около трёх месяцев;
— от безысходности запустил Quick Auction, который ничего не дал. Выбор действий стал меньше.

Выводы:

Надо проще, ярче, быстрее :)

P.S.: Более подробно о разработке игры про роботов, можно почитать здесь.
  • +8

Комментарии (30)

0
А где более подробно о разработке зайцев можно почитать? )
0
К сожалению пока нигде. Скажу только коротко, что изначально это была игра на заказ, т.е. я сделал движок (код), как фрилансер. Потом была идея запустить её самомму, как социалку на вк (покупка морковок (вирт. валюта) за голоса, апгрейды зайцев, покупка уровней). Но в результате наработки вывились в портальную игрушку. Всю анимацию и арт делал сам. Может чуть позже отпишу подробнее, но на самом деле ничего особо интересного там не было.
0
А ты суров :|

кусок кода, который рассчитывает один из четырёх корней уравнения:

var result_1:Number = - .5 * Math.sqrt (Math.pow (b, 2) / (4 * Math.pow (a, 2))
+ Math.pow ((Math.sqrt (Math.pow (( -72 * a * c * e + 27 * a * Math.pow (d, 2) +
27 * Math.pow (b, 2) * e - 9 * b * c * d + 2 * Math.pow (c, 3)), 2) - 4 *
Math.pow ((12 * a * e - 3 * b * d + Math.pow (c, 2)), 3)) - 72 * a * c * e + 27
* a * Math.pow (d, 2) + 27 * Math.pow (b, 2) * e - 9 * b * c * d + 2 * Math.pow
(c, 3)), (1 / 3)) / (3 * Math.pow (2, (1 / 3)) * a) + (Math.pow (2, (1 / 3)) *
(12 * a * e - 3 * b * d + Math.pow (c, 2))) / (3 * a * Math.pow ((Math.sqrt
(Math.pow (( -72 * a * c * e + 27 * a * Math.pow (d, 2) + 27 * Math.pow (b, 2) *
e - 9 * b * c * d + 2 * Math.pow (c, 3)), 2) - 4 * Math.pow ((12 * a * e - 3 * b
* d + Math.pow (c, 2)), 3)) - 72 * a * c * e + 27 * a * Math.pow (d, 2) + 27 *
Math.pow (b, 2) * e - 9 * b * c * d + 2 * Math.pow (c, 3)), (1 / 3))) - (2 * c)
/ (3 * a)) - .5 * Math.sqrt (Math.pow (b, 2) / (2 * Math.pow (a, 2)) - (
-Math.pow (b, 3) / Math.pow (a, 3) + (4 * b * c) / Math.pow (a, 2) - (8 * d) /
a) / (4 * Math.sqrt (Math.pow (b, 2) / (4 * Math.pow (a, 2)) + Math.pow
((Math.sqrt (Math.pow (( -72 * a * c * e + 27 * a * Math.pow (d, 2) + 27 *
Math.pow (b, 2) * e - 9 * b * c * d + 2 * Math.pow (c, 3)), 2) - 4 * Math.pow
((12 * a * e - 3 * b * d + Math.pow (c, 2)), 3)) - 72 * a * c * e + 27 * a *
Math.pow (d, 2) + 27 * Math.pow (b, 2) * e - 9 * b * c * d + 2 * Math.pow (c,
3)), (1 / 3)) / (3 * Math.pow (2, (1 / 3)) * a) + (Math.pow (2, (1 / 3)) * (12 *
a * e - 3 * b * d + Math.pow (c, 2))) / (3 * a * Math.pow ((Math.sqrt (Math.pow
(( -72 * a * c * e + 27 * a * Math.pow (d, 2) + 27 * Math.pow (b, 2) * e - 9 * b
* c * d + 2 * Math.pow (c, 3)), 2) - 4 * Math.pow ((12 * a * e - 3 * b * d +
Math.pow (c, 2)), 3)) - 72 * a * c * e + 27 * a * Math.pow (d, 2) + 27 *
Math.pow (b, 2) * e - 9 * b * c * d + 2 * Math.pow (c, 3)), (1 / 3))) - (2 * c)
/ (3 * a))) - Math.pow ((Math.sqrt (Math.pow (( -72 * a * c * e + 27 * a *
Math.pow (d, 2) + 27 * Math.pow (b, 2) * e - 9 * b * c * d + 2 * Math.pow (c,
3)), 2) - 4 * Math.pow ((12 * a * e - 3 * b * d + Math.pow (c, 2)), 3)) - 72 * a
* c * e + 27 * a * Math.pow (d, 2) + 27 * Math.pow (b, 2) * e - 9 * b * c * d +
2 * Math.pow (c, 3)), (1 / 3)) / (3 * Math.pow (2, (1 / 3)) * a) - (Math.pow (2,
(1 / 3)) * (12 * a * e - 3 * b * d + Math.pow (c, 2))) / (3 * a * Math.pow
((Math.sqrt (Math.pow (( -72 * a * c * e + 27 * a * Math.pow (d, 2) + 27 *
Math.pow (b, 2) * e - 9 * b * c * d + 2 * Math.pow (c, 3)), 2) - 4 * Math.pow
((12 * a * e - 3 * b * d + Math.pow (c, 2)), 3)) - 72 * a * c * e + 27 * a *
Math.pow (d, 2) + 27 * Math.pow (b, 2) * e - 9 * b * c * d + 2 * Math.pow (c,
3)), (1 / 3))) - (4 * c) / (3 * a)) - b / (4 * a);

0
Да, свой самописный физ. движок был суров и отнял вагон времени, на удивление он не тормозит с такими формулами :)
+1
Можно было гораздо проще посчитать приближенными методами, там аппроксимировать ломаной, или типа того.

При таком масштабе скорость передвижения максимум будет пикселей пять за кадр (60 фпс), на таких маленьких смещениях дуга между точками не будет визуально отличатся от прямой между ними вообще. То есть просто приращиваем координату икс на длину шага (5 px), из уравнения параболы вычисляем игрек, находим расстояние между точками, интерполяцией уменьшаем полученный отрезок до длинны шага (5 px), перемещаем юнита, и так далее. Если скорость очень большая, то просто разбиваем на несколько подшагов — и то же самое.
0
Ну сами, может, знаете, что иногда ставишь задачу и просто решаешь её, и получаешь удовольствие от решения, даже если оно сложное и, возможно, не совсем оправданное. Конечно, можно было упростить и не ставить эту задачу перед собой, но сделанного уже не вернёшь. Т.е. сейчас я уже не буду переписывать код игры более простыми методами. И для последующих игр, если потребуется, я буду использовать свои наработки.

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

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

ставишь задачу и просто решаешь её, и получаешь удовольствие от решения, даже если оно сложное и, возможно, не совсем оправданное.
Это единственное, что может оправдать такое изощренное насилие, месье знает толк :D

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

З.Ы. А если еще предварительно у кривой Безье найти экстремумы и разбить ее на монотонные участки, то с шагом приращения можно вообще не мельчить (когда нужно много пунктира чертить).
0

Да, в принципе я прикинул сейчас, способ действительно хорош, т.е. вместо точки B, как делал я, брать точку C1, а для начала следующего шага — С2. Действительно было бы проще, согласен. И отличие небольшое.

предварительно у кривой Безье найти экстремумы и разбить ее на монотонные участки
Не, тут у меня пока мозг отключился. Надо мне матчасть подтягивать, чтобы стать достойным собеседником :)
+1
Ну, а если шаг взять поменьше, ближе к реальному, пикселей пять, то точки C2, С1,B вообще будут совпадать на таком масштабе, то есть этот треугольник получится гораздо меньше пикселя, а при выводе битмап требуется пиксельная точность, ну максимум пару знаков после запятой для эстетов.
0
этот треугольник получится гораздо меньше пикселя
Имеется ввиду треугольник (B,C1,C2), то есть достаточно вычислить только C1 она визуально будет на дуге.
0
Я не написал про механизм расчётов, там есть одна особенность. В игре все движения инертны (т.е. шаг нельзя отменить). Поэтому шаг юнита рассчитывается не каждый такт игры (кадр/таймер). У каждого юнита есть параметр ширины шага. Перед шагом мы рассчитываем, точку, в которую он должен попасть, а затем запускается анимация движения (зависит от скорости движения, есть ускорение, фактор веса и т.д.). Т.о. я рассчитываю отрезки от 2, до 32 пикселей.
0
Любой отрезок можно разбить на куски по 1 пикселю, проблема? :)
0
Да, не согласится нельзя. Эх, ну тогда вроде и добавить нечего :)
0
Вкратце:
когда вычисление полинома и-или системы уравлений заменяется на последовательные решения маленьких кусков с одновременным упрощением полинома до простейшего линейного уравнения — вся эта порнография называется общим словом «численные методы».
Это то, что агрессивно и повсеместно применяется для вычислений с самого момента появления ЭВМ.
В общем-то именно ими — численными методами — ЭВМ и сильны. Тупой подход, НО позволяющий решать задачи любой сложности. Точность решения зависит от времени вычисления и малости шага.
Если вникать глубже, то можно узнать такие ругательные слова, как метод Рунге-Кутта и т.д., но для прикладных задач можно с чистой советью не знать, что это такое :)
0
суров ты, декомпилящий каждую известную мне игру.
+6
Лол, код из статьи, балабол
Более подробно о разработке игры про роботов, можно почитать здесь
0
:c
дальше волосатой лопатки не прочел.
0
400$ (primary) +800$ (небольшие доработки для спонсора)
Как хорошо спонсоры платят за небольшие доработки 8) Аж в 2 раза больше, чем за саму игру.

400 + 800 + 200 = 1600
Уточните, если не трудно.

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

Не помню откуда, но всю эту историю помню — на форуме писал? И игры обе помню, играл ) Слегка обсаженные кролики и роботы, путешествующие по частям тела )

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

Уточните, если не трудно.

Мне попался хороший спонсор. Он попросил модернизировать игру, добавив мат. формулы. Насколько я понял, это нужно ему для образовательных целей (он преподаёт математику где-то в Америке). Добавление формул и создание 30 новых уровней/фигур было не столь трудоёмким, как написание новой игры (арт оставался прежним). В общей сумме я сделал 3 версии с мат. формулами. Одну из них, с разрешения спонсора я выпустил, как вторую часть игры. Остальные 2 версии остались лично у спонсора. Да, по деньгам он щедро со мной расплатился. Я доволен :)
0
Ну, тогда прошу прощения, значит, это другая легенда (о которой вы и ведете речь в теме) — про игру, сделанную как бы между прочим и заработавшую больше, чем другая суровая разработка.
0
Посмотрел игру, да — хорошая вещь для образовательных целей, ориентирование фигур в пространстве здесь в тему.
0
400 + 800 + 200 = 1600
Сорри, ошибся в подсчётах, чуток преувеличив, исправил.
0
Роботы чем-то похожи на мои древние начинания на ас2, спасибо, ностальжи :D
С продажей продешевили, quick auction дрянь да.
0
Да, согласен, что продешевил. Просто время шло, аукцион затух, было 2 ставки (550$ праймари + 500$ сайтлок). Я побоялся, что если уйдёт адекватный сайтлок, то может и primary не появится больше 1000$. Но потом сильно жалел, т.к. это продажа не сделал никого счастливыми. Ну только, может, спонсора :)
Сейчас уже как-то отпустило, почти что год прошёл с тех событий. Но в тот момент было обидно очень, что усилия не покрыли даже месяца работы на где-нибудь на зарплату.
0
А зайцы клёвые, я залип ))
0
Поиграл ещё раз в роботов.
На мой взгляд, потенциал у игры есть, напомнило Rex со Спектрума )
Отличные персонажи, красивая детальная анимация. Как пули летают — загляденье ) Если со всем этим великолепием сделать платформер с более отзывчивым управлением главного героя — может ооочень хорошо получится.
Размер экрана сделать 720. Чтобы робот мог прыгать и бегал побыстрее. Платформы с врагами и летающие враги. Как-то так.
0
Спасибо, попробую. Может всё-таки и поднимется рука сделать на базе роботов ещё игру.
0
Почему 720 то, а не 640х480 или 700х525?
Из крайности в крайность
flashgamedev.ru/viewtopic.php?f=3&t=8004
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.