image
Я хочу сразу сказать, что в первой части будет мало о самой разработке, а больше именно истории, трудности, социальные аспекты, проблемы с которыми может столкнутся инди разработчик, а также я не могу не упомянуть Москву, покер и спорт — без которых эта история не была бы полной. Итак, прежде, чем я начну с легенды, для того чтобы немного заинтересовать читателя, за время разработки с 2013 года по 2015 год я потолстел на 22кг и превратился из спортивного парня в человека, который с трудом узнавал себя в зеркале, я выпивал в год около тысячи банок ред булла, все началось с одной-двух, сейчас уже бывает редко, чтобы я пил меньше трех. Я спал по пять, а то и четыре часа. В течении двух лет я вставал в будние дни в пять утра и ехал на работу в другой город на электричке, чтобы вечером оставалось время поработать над игрой. Я по глупости отказался от предложения в 250.000 евро на разработку игры. Вероятно итогом такой жизни стало тяжелое воспаление легких, суд с бывшим работодателем, а также серьезные проблемы со спиной из-за постоянно сидячего образа жизни. Ах ну и если этого мало, то я бросил университет и сам уволился с работы!

Что ж поехали…

«You can be more, than just a man» — Вы помните знаменитую фразу из Batman Begins?

Так вот эта фраза не обо мне. А теперь немного о себе. Последние пять лет я работаю разработчиком программного обеспечения на Java в Германии. Всю свою сознательную жизнь, а именно лет так пятнадцать, я занимался полупрофессиональным спортом, играл в покер, читал и писал книги, сидел на близзардских играх, а также бесцельно учился, залезая в долговые немецкие «стипендии», пока моя девушка однажды не сказала мне, что беременна.

Вот отсюда и начнем отсчет этой истории.

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

Только начался 2013 год. Я как раз досматривал «Во все тяжкие» — и что-то после новости о ребенке в голове щелкнуло, не нужно было никакой мотивации, речей, бодрой музыки, просто пришло осознание, пришло время, впереди должна быть квартира, ребенок должен быть обеспечен, свой бизнес, своя империя. Я просто открыл книгу о разработке игр на андроид и решил что стану миллионером. Перечитав ее раза 4, я спрограммировал за пару месяцев, что-то среднее между змейкой и танчиками для Дэнди. Но что-то было не так, в игре была убогая графика, да и откуда ей взяться? Я начал искать варианты — художники, как оказалось стоили бешеных денег. Я рыскал по просторам интернета, искал какие-то пиксели, просматривал работы фрилансеров, как…

… сейчас должна звучать эпическая музыка, я нажал на линк ведущий в asset store на Unity 3d.

image

Unity 3d


Unity укрепил мое мнение, что можно в одиночку достучаться до небес и сделать миллионный проект. Конечно даже тут не обошлось без ошибок, недолго думая, я выбрал UnityScript для программирования. Ужасно что нигде на просторах интернета не описаны основные причины, почему этого делать не стоит. Меня же понять было можно, кроме явы я в основном имел дело с различными библиотеками и фреймворками JS, даже приложение для Бакалавра я писал на Java и JQueryMobile. В то время мне было невдомек, что C# по синтаксису очень напоминает Java. Но это естественно не главная причина по которой стоило бы взять C#.

Первая и на мой взгляд важнейшая! UnityScript код компилируется в C#, и если у вас большой проект, то вы будете кучу времени тратить в ожидании. C# компилируется за секунду.

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

Третья причина тоже выходит из профессиональной среды, так для маленького проекта это может и не играть большой роли, но для большого играет немаловажную! C# как язык и майкрософтовские библиотеки просто напросто обыгрывают UnityScript, как Аргентина Ямайку.
Чего стоит хотя бы то, что мне пришлось для Темного Лесника писать A* Алгоритм на UnityScript без вот этой вот фразы, взятой с официальной странички Unity:

//JavaScript does not allow generics to be defined. To utilize
//this functionality you will need to use C#

В целом Unity3d безусловно гениальное творение. На мой взгляд у Unity есть лишь один существенный недостаток. На данный момент в Steam Темный Лесник весит полтора гигабайта, но это лишь его малая, закинутая часть. Проект весит чуть больше двадцати гигабайт. Так вот попробуйте проект сделанный под Unity 4.6 запустить под Unity 5.1. Скажете, ну это понятно, ну тогда попробуйте запустить проект сделанный под Unity 5.1 под Unity 5.4. В случае перехода с четвертой версии на пятую у вас меняется API, ну это в общем-то всегда и везде так и вам нужно просто в тысяче мест подправить код. Но это лишь малая часть проблемы, меняется физика, shaders, просто все на свете — о чем мы даже и не могли себе представить. На мой взгляд, может быть я требую невозможного, но не хватает какого-то мягкого автоматизма, который бы смог справиться с такими проблемами. А еще было бы неплохо если бы Unity обновлялся, а не записывался как новая версия.

«An idea is like a virus»


Вам никогда не казалось что рынок игр совсем не исчерпан? Я не раз слышал мнение, что разрабатывать нечего — уже все есть. Так ли это? Я вырос на третьих героях, варкрафте, Dungeon Keeper, Carmageddon, после тех времен появилось много других крутых хитов, о которых я читал, но уже не застал, я застрял лет так на пятнадцать в мире близзарда. Но я знал точно, что никто так и не смог за последние почти двадцать лет спихнуть с трона Heroes of Might and Magic 3. Я точно знал, что несмотря на некоторые попытки, никто там и не смог даже близко приблизится к Dungeon Keeper 2. Я мог бы упомянуть Carmageddon, но его воскрешение все же началось недавно. О варкрафте и разработке чистой стратегии говорить нет смысла, перебить Starcraft 2 невозможно даже на мой взгляд, имея миллиарды — эта игра фактические похороны любой стратегии в реальном времени еще лет на 5, пока близзард не начнет разработку Warcraft 4. Я до сих пор не могу понять, почему компании имея деньги не могут сделать нормальных героев, может быть просто не надо ничего придумывать? В Шахматах 64 клетки… в покере 52 карты… В героях было всего больше и она была гениальна. Нужна лишь новая оболочка и Esport, но оставим эти мысли тем, кто владеет лицензией на героев.

Идеи одна за другой влетали в мою голову и как в покере на 12 столах, я отсеивал в доли секунды все, что не подходило. В итоге я остановился на клоне Dungeon Keeper и The Horde, переместив место событий в лес — В итоге скажу, что на данном этапе в Dark Forester от Dungeon Keeper осталось не так много, игра действительно напоминает старый добрый The Horde — но об этой игре знают, возможно лишь люди когда-то обладавшие приставкой Panasonic 3do.

Также отмечу, что со мной сыграло злую шутку, что я не играл ни во что, кроме Warcraft 3, World of Warcraft, Diablo 3 и Starcraft 2 последние 15 лет, я отстал и даже не представлял себе что на Steam творят историю и чуть ли не каждый день там появляются новые идеи игр.

image

Крестовый поход


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

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

Проект быстро двинулся с места, где-то за три месяца я уже накатал подобие какой-то игры в красивой оболочке. В начале проекта я еще работал и учился, точнее числился в университете, написав бакалавра мне оставалось не так много, но в итоге я решил, что у меня больше нет на это времени и нет просто напросто сил учится еще около года. Отмечу что у меня уже была работа на 40 часов в неделю, хорошая зарплата и бессрочный контракт, который я в скором времени спущу в унитаз. Ребенок родился, шли недели, месяцы, я стал меньше заниматься спортом, практически перестал, стал очень много из-за стресса есть, по вечерам и ночам работал над игрой. Подошел 2014 год и помчался вперед с новой силой, две банки ред булла в день сменились тремя, на работе мне отказались давать повышение из-за того что я не закончил университет, фактически меня взяли в заложники ситуации. Год был жестким, когда я засыпал в 12 или час ночи, я просыпался в пять утра и ощущал будто только что лег в кровать — я не мог поверить что уже прошло 5 часов. По сути проект не имел никакой отдачи, я тратил деньги, тратил время, я сдавал физически, проводил мало времени с женой и ребенком, бросил после стольких лет учебу, да, и родители у меня были из тех, кто вечно тюкали по этому поводу. Но где-то должно было пойти в плюс?

Jesse, you asked me if I was in the meth business or the money business. Neither. I'm in the empire business.

Когда-то много лет назад, перед тем, как СССР распалось мой отец устроил у нас в квартире подпольное казино. Там собирались довольно интеллигентные люди поиграть на деньги в преферанс, дурака, шахматы, сику, нарды и другие игры. К чему это я вообще? Неудивительно, что лет в 6 я уже умел играть в 5 Card Draw Poker. Нет речь совсем не об этом. После переезда в Германию, мои родители совсем исчезли из жизни, она превратилась в какой-то депрессивный нескончаемый поток лет. Затем у отца нашли рак простаты в продвинутой стадии. Операция прошла нормально и неожиданно это его вернуло к жизни, он начал заниматься Антиквариатом.
Теперь все же поясню с чего я зашел с какого-то непонятного угла.

Занимаясь антиквариатом, отец познакомился с людьми из бывшего СССР которые хотели диверсифицировать свой бизнес и вложить свободные деньги в какой-то проект. В общем и целом все сводилось к тому что 250.000 евро на развитие за 50% процентов игры. Не буду вдаваться в подробности «переговоров». Скажу честно сейчас бы я естественно согласился. Но тогда мой неадекватный максимализм был не готов делится такой частью проекта, и я захотел 250.000 евро за 20% проекта, естественно на этом все закончились. Отмечу, что и ментально, смотря назад — я был абсолютно не готов.

Так а причем здесь казино в СССР спросит меня внимательный читатель.

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

image

Kickstarter, Greenlight, Facebook and Co


Итог. 2014 год подходил к концу. Я встал на весы — 102 килограмма. Но, не все должно было быть неудачно, я поставил игру в Greenlight на Steam и 30-го Декабря мне пришел подарок — игра в короткий срок прошла отбор. Думаю, забавным фактом моей отсталости в играх является то, что начиная разработку Темного Лесника в 2013 году, я мало что знал о Steam и даже не уверен, был ли у меня на то время там аккаунт.

Естественно кроме Greenlight были совсем неудачные кампании в Kickstarter и Indiegogo, а также бесполезная трата денег на рекламу в Facebook. Да и в том же Кикстартере я умудрился заплатить пару сотню долларов, чтобы мою игру разместили на каких-то неизвестных и богом забытых сайтах.

А теперь коротко о каждой платформе.

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

Фейсбук — лайки, это фейк, у меня около 2000 лайков на фейсбуке в группе Dark Forester. Я уверен никто из этих людей не покупал мою игру. Я даже почти уверен, что этих людей не существует. Не тратьте свои деньги.

Indiegogo — это смешно. Если вы не спроецировали машину времени или у вас готов аппарат телепортации, то там ловить нечего.

Greenlight — Вот он победитель, но нет, не потому, что они обратили на мой проект внимание. У Steam база игроков в 100.000.000. Как вы думаете сколько посмотрело людей на мой проект на Indiegogo? 50 человек. А сколько на Кикстартере? 500 человек! А сколько на Steam Greenlight? 100.000 человек!!!

Но все же, вы должны ваш проект естественно засовывать и на Indiegogo, и на Кикстартер, и естественно на Steam Greenlight, и даже создать группу в Facebook, просто не тратьте деньги.

И затем все стало совсем плохо


Два первые месяца после одобрения Steam проходят в великой эйфории, я прибавляю еще сил. И делаю, следующую большую ошибку — запускаю игру в Early Access, как Альфа версию. За неделю я заработал около 3.000 долларов, впрочем нет 1600, остальное ушло на налоги и Steam, но урон нанесенный этим решением гораздо больше этих наконец-то сладких денег, этой хоть какой-то отдачи за два года. Игра падает в рейтинге, мне поначалу все это не понятно, как так, ведь игра моя и что вам товарищи американцы не понятно, что это ранняя альфа и тут еще не может все работать! Но, на самом деле игра жутко сыра. Игра напоминает игры конца девяностых, когда вы покупали диски вместе со вторым варкрафтом, там был десяток стратегических игр, которые вы тут же после первого бага выключали.

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

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

В мае 2015 года меня напрочь сваливает сильнейшее воспаление легких на пять недель, после первой недели я выглядел, как зомби из The Walking Dead. Не знаю, был ли это недосып за два года, ред булл льющийся по моим венам вместо крови, наверное все вместе или просто несчастный случай, что в поезде около меня может быть сидел больной человек. Так или иначе все это сопровождает череду неприятных событий. С работы после третьей недели болезни приходит два письма, инициированные моим шефом: «Abmahnung» и «Ermahnung» — это что-то вроде вас ставят на работе на учет, если вы допускаете хоть одну ошибку, то вас могут по любому поводу уволить. А теперь что же стояло в этих письмах. В первом из них стояло, что под страхом увольнения мне запрещено заниматься разработкой игры в свободное время. Во втором письме стояло что я во время болезни обещал на Steam выпустить патч, и соответственно, если я могу писать в чате на стиме, то вероятно мог и работать.

image

Nobody fucks with blowfish


Но я не рыба еж. Моя фирма была дочерней конторой одной известной швейцарской фирмы. В тот же вечер я написал на работу что увольняюсь.

На работе я был довольно ценным работником из-за быстрого выполнения задач. работая в Scrum каждый работник получал примерно на две недели 10 Storypoints, я выполнял в основном не меньше 20, мне просто было скучно сидеть без дела. Многие работники после выполнения задач уходят с головой в социальные сети или другие странички.

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

Конечно не буду лукавить, увольняясь у меня возник план, взять приватный кредит на 12.000€ все у тех же знакомых отца и отработать все лето над игрой, попутно катая, в покер в Штутгарте. К сожалению, отыграв в хороший плюс 3.200€. Мой напарник, с которым мы играли еще в студенческие времена отыграл без тормозов. В итоге его пару раз очень грамотно развели за столом, а пару раз он просто залудоманил и так как мы имели общий банкролл, месяц скатился в ноль. С покером пришлось завязать, так как нужны были деньги просто напросто на существование в ближайшие месяцы.

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

Деньги заканчивались и на мне навис в дополнение к студенческим кредитам еще один кредит с выплатами 650 евро в месяц.

Напоследок в компьютере который я взял за 3.000 евро в рассрочку по моей вине сломалась материнская плата и процессор (лучше даже не описывать, как такое могло случиться с человеком работающим программистом). На пятый месяц ситуация стала критической — деньги исчезли. На то время Unity стоил 75 долларов, а у меня была еще и лицензия на Android Pro. Без денег я уже не мог платить за Unity. В итоге я остался лишенным движка Unity Pro и основного компьютера на ближайшие 6 месяцев, а соответственно и разработка игры зависла в воздухе.

Мне с семьей пришлось в срочном порядке отказываться от съемной квартиры и переезжать в квартиру к родителям (да, это все с маленьким ребенком и женой).

The Empire Strikes Back


Это первая часть истории. У меня есть план написать 5 частей этой “увлекательной” литературы. Для тех же, кто расстроился и негодует над безалаберным разработчиком, я лишь упомяну, что будет ждать вас в продолжении, в 2016 году я выиграл суд без адвоката в чужой стране по трем пунктам, четвертый был аннулирован. Я все таки нашел довольно быстро работу и Темный Лесник уже играл роль на собеседованиях! Оказалось что игра на Steam все таки имеет какой-то вес. Моя зарплата увеличилась на 10.000 евро в год в сравнении с бывшей работой. Бросить университет — было лучшим решением в моей жизни, но я никому этого не советую, где бы вы не жили — вы живете в системе. Я выплатил не только последний взятый кредит, но и в сумме за год порядка 30.000 евро. Я снова вошел в отличную спортивную форму, а также выпустил Бетку Dark Forester, в которой все еще тупит A* Алгоритм, и которую я все еще надеюсь, никто не будет покупать до релиза. И конечно это история о том, как я менялся сам. Ну, а как все это было, я расскажу в продолжении этой истории, если будет какой-то интерес.

Часть первая: «Во все тяжкие» или суровые реальности разработки Dark Forester.
Часть вторая: A* Алгоритм на JS для Unity 3d или как медленно умнеет Темный Лесник (полный код и описание на JS)
Часть третья: “Во все тяжкие 2” — Темный Лесник карабкается вверх.
Часть четвертая: «Теория одной карты» — по мотивам Темного Лесника
Часть пятая: Equity Dark Forester или как должен кончиться сериал.
Поделиться с друзьями
-->

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


  1. w4r_dr1v3r
    30.12.2016 19:01
    +1

    MOAR!!! ^^


    1. Moskow
      30.12.2016 20:00
      +1

      Спасибо гуглу, узнал что такое MOAR, продолжение следует!


      1. w4r_dr1v3r
        01.01.2017 19:02

        оу… даже так...0.о Было приятно оказаться полезным автору, тем паче что мы коллеги — я тоже окунулся с головой в совершенно новый (но не чуждый, по счастью) мир разработки. С НОВЫМ ГОДОМ!!!


      1. Checked
        04.01.2017 12:04

        Спасибо за статью, пишите дальше!)


  1. snipeer777
    30.12.2016 19:14
    +3

    Спасибо за историю, жду продолжения)


    1. Moskow
      30.12.2016 19:45
      +3

      Пишу!


  1. AndreySychev
    30.12.2016 19:44
    +1

    А можно поподробнее про статистику гринлайта? Основываясь на личном опыте 100.000 уникальных посетителей кажется каким-то нереальным числом.


    1. Moskow
      30.12.2016 19:57
      +1

      Это не уникальные пользователи. Уникальных было 3.843. Проголосовавших 1.973.
      Отмечу, что и в Кикстарте и Индигого тоже не уникальные, там все еще хуже.

      А вот количество людей заходивших на страницу Dark Forester за эти два года на Стиме, еще раз подчеркивает что такое Steam в сравнении с другими платформами: 13.135.706
      Думаю, это не уникальные пользователи, но все равно масштабы должны впечатлять.


  1. altai2013
    30.12.2016 19:51
    +3

    Автору надо сценарий продавать, а не книгу писать :) Тут все 7 кругов ада, такой ужас и в фильме ужасов не встретишь. Респект за силу воли!


    1. Moskow
      30.12.2016 20:11
      +2

      Спасибо!


  1. Neutral
    30.12.2016 20:30
    +3

    Отличный рассказ, спасибо.

    Оглядываясь назад, вы не находите, что если бы работали без фанатизма и вели размеренный образ жизни — остались бы в большем плюсе?


    1. Moskow
      30.12.2016 20:44
      +5

      Спасибо! Я к сожалению, вынужден отложить ответ на этот вопрос на несколько дней.
      К этому пункту, я подойду подробно в третьей части рассказа.

      Надо держать читателя в напряжении.


      1. Neutral
        30.12.2016 20:50

        Жду с нетерпением.


  1. Moskow
    30.12.2016 20:43
    +1

    Спасибо! Я к сожалению, вынужден отложить ответ на этот вопрос на несколько дней.
    К этому пункту, я подойду подробно в третьей части рассказа.

    Надо держать читателя в напряжении.


  1. Zavtramen
    30.12.2016 21:06
    +1

    С таким подходом у вас все будет хорошо. Искренне рад за вас. Пишите еще.


    1. Moskow
      30.12.2016 22:14
      +1

      Спасибо!


  1. botaniQQQ
    30.12.2016 21:54
    +2

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


    1. Moskow
      30.12.2016 22:17
      +1

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


      1. Teemon
        31.12.2016 02:12
        +2

        упростите вторую и побыстрее третью! в вашей истории можно обойтись без единой строчки кода


  1. Merlen_Gross
    30.12.2016 21:58
    -10

    Пустить жизнь под откос, а после выкарабкаться и написать об этом статью — бесценно. Может быть стоит принимать более взвешенные и рациональные решения? Это Habrahabr, а не личный блог. Хотели рассказать нам об игре — пожалуйста. Я думаю, все рады будут увидеть аспекты реализации и технические детали, но не "это". А тех, кому это понравилось или кто нормально отреагировал на эту статью, я, как и автора, не понимаю совсем. Карма, прощай, но оно того стоило.


    1. Moskow
      30.12.2016 22:29
      +3

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


      1. Merlen_Gross
        31.12.2016 01:01
        +1

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

        все таки я не кинулся под поезд или стал играть в лотерейные билетики в ожидании чуда

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

        Я вижу, что статья относится к «Разработке», вижу Unity в тэгах. Знаете, чего я не вижу? Чего-нибудь по делу.


        1. Moskow
          31.12.2016 01:56
          +4

          Жене было не легко. Если вы внимательно читали, то когда жена была беременна, я еще работал на описанной выше работе.

          Если вы гордитесь этим и наставляете напоказ

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


      1. Zeratyll
        07.01.2017 15:04

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


    1. Vjatcheslav3345
      30.12.2016 22:41
      +1

      "вам нужно просто в тысяче мест подправить код"

      Было бы интересно понять, почему автор, зная о смене АПИ с версиями, не оборачивал его в одном месте в свой класс — внутренний класс проекта — который и использовал далее везде; не применял контракты для контроля правильности работы таких классов и, в крайнем случае, если что нибудь из движка выпилили — можно ведь и свой велосипед на замену в такую обёртку добавить (может, времени для сна от этих мер у него было бы побольше).


      1. Moskow
        30.12.2016 22:54
        +3

        Дело ведь не в коде. Код подправить, если мне не изменяет память, в 1900 разных местах было делом часа, а вот изменения в физике, изменения во всех графических Ассетах, которые поддерживают только определенные версии Unity действительно проблематичны.


        1. Vjatcheslav3345
          30.12.2016 22:59

          А полиморфизмом это обойти нельзя было?


          1. Moskow
            30.12.2016 23:05

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


            1. Vjatcheslav3345
              30.12.2016 23:27

              Один класс, связанный с конкретным классом конкретной версии движка, понимает сообщения движка и посылает сообщения другому, например, обёрточному — это если просто синтаксис; если принципы работы изменились добавляем ещё и класс конвертор (например, были радианы а стали выдавать градусы) — это всё объединяется идеей конвертации. С пропавшими параметрами сложнее — обычно надо понять почему их убрали и тогда, часто опять можно всё свести к идеи конвертации.
              Тут я описал, в сущности, наследование, но такой вариант его ещё часто называют полиморфизм типа " ad hoc полиморфизм".


              1. Moskow
                31.12.2016 01:16

                К сожалению, это не панацея от всех бед. К примеру после перехода у меня полностью изменилось взаимопонимание между CharacterController и CharacterMotor. Я не являюсь большим специалистом, но даже мне не составило быстро внести изменения, а вот к примеру я купил какую-нибудь анимацию магии во время разработки под Unity4, и почему она потом больше не работала под Unity5 уже более сложный для меня вопрос, не говоря о shader в которых я вообще не соображал, конечно гугл даже с shader помог, но многие вопросы остались без ответа и пришлось заменять анимацию.


              1. TheShock
                31.12.2016 02:31

                Один класс, связанный с конкретным классом конкретной версии движка, понимает сообщения движка и посылает сообщения другому, например, обёрточному

                Это очень просто в серверных аппликейшенах, когда обычно просто немного меняется АПИ метода. В юнити в минорных версиях (5.5 => 5.6) вполне может измениться подход к рендеру, а в мажорных (4 => 5) так там вообще все шейдеры другие переписали, там вопрос не к апи, а к принципу работы.


                1. Vjatcheslav3345
                  31.12.2016 09:21

                  вполне может измениться подход к рендеру, а в мажорных (4 => 5) так там вообще все шейдеры другие переписали, там вопрос не к апи, а к принципу работы.

                  Обычно, всё касающееся работы и подхода к рендерингу — это внутренняя кухня движка. Неужели объектам классов игры нельзя было посылать движку полиморфные сообщения (для версии движков) типа "а нукась живо отрендерь меня по центру, лакей".


                  1. TheShock
                    31.12.2016 10:51
                    +1

                    Очевидно, вы никогда не имели дело с движками вроде юнити. Это не какой-то рест, где убрали хмл и теперь в адаптере необходимо приводить его к жсон.


                    Вот в 5.6 убрали directional-specular лайтмапы. Это когда в статик сцене запекается не только как упал свет, но и откуда он упал, за счет чего можна очень дешево рендерить не только свет, но и что-то похожее на отражения.


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


                    И вот, чтобы восстановить эту функциональность мне необходимо самому написать генератор таких лайтмапов, самому, хоть и при помощи юнити, кастить свет, смотреть куда попадают лучи, какой их вес, сохранять это, потом переписать шейдер, передавать в него данные лайтмапа, все объекты перевести на использование этого шейдера, самому накатывать изменения из новых версий юнити. И нахрена все это, если в версии 5.4 данный функционал прекрасно работает? Да и не осилю я переписать все освещение. Вот только на новую версию перейти уже не смогу. Даже если бы писал с нуля код игры — необходимо переделывать 3д модели, чтобы отражения не были необходимы для их красивого отображения. Вот только нафига тогда вообще этот PBR?


              1. ainoneko
                01.01.2017 04:51

                «Почти любую проблему можно решить введением дополнительного уровня абстракции.
                Кроме проблемы „слишком много уровней абстракции“.»


      1. Suvitruf
        30.12.2016 23:30
        +1

        Не всегда выходит так, как хочется. Особенно в гейм деве, где всегда факапишься со сроками, меняются требования, меняются задачи. Очень часто руководствуешься правилом «пока так сойдёт». Это только в книжках вроде «Совершенного кода» всё хорошо, irl всё куда сложнее.


        1. Moskow
          31.12.2016 01:31
          +1

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


      1. TheShock
        31.12.2016 02:28
        +1

        если что нибудь из движка выпилили — можно ведь и свой велосипед на замену в такую обёртку добавить

        Ну у вас все так просто на словах. Я вот делаю игру на юнити 5.4, а вот уже в 5.6 полностью изменили способ запекания освещения, что приводит к тому, что я в принципе не могу перейти на следующую версию, ибо альтернативы значительно медленнее и не дают необходимого визуального результата. И это вообще никак не зависит от кода — просто тупо в редакторе в новой версии удалено то, что прекрасно работало в 5.4


        1. Moskow
          31.12.2016 03:11

          Полностью вас понимаю. Я прошелся очень кратко по этой теме, но на самом деле проблем там непочатый край. В продолжении рассказа я упомяну еще о разработке одной двухмерной игры. Так вот, там я тоже хотел перейти с 5.1 на 5.3 — в игре тут же появилось огромное количество багов, связанных как с двухмерной физикой так и с работой с Collider в целом.


    1. jesseydesu
      31.12.2016 15:58

      Я 3(!) раза пускал жизнь «под откос». Оказалось что многие вещи решаемы и можно продолжать заниматься любимым делом с пользой для себя. Кстати, сухой технический доклад отлично идет, будучи разбавленным личными переживаниями. Возможно, в них есть необходимый опыт ил еще что-то… Дихалт и чувак из Мосигры так пишут, вроде.


      1. Moskow
        31.12.2016 16:00

        Главное — выводы после ошибок.


  1. Kibnet
    30.12.2016 22:59
    +2

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


    1. Moskow
      31.12.2016 01:25
      +1

      Спасибо, рад что первая часть этой истории многим пришлась по душе.


  1. markhor
    31.12.2016 00:36
    +1

    На оф. сайте http://darkforester.com/wordpress/wp-content/uploads/2014/06/demo_content.png отдает 404

    Эх, это уже вторая игра (после Don't open the doors!) в которую я вряд ли поиграю в ближашее время в силу отсутствия Windows и на которую все равно не жалко денег!

    В русском стиме игра стоит доллар. Это даже как-то слишком… слишком мало.


    1. Moskow
      31.12.2016 01:19
      +1

      В игру все равно не стоит играть до ее релиза!
      Для России игра в 3 раза дешевле, чем для остального мира, на стиме можно варьировать цены.


    1. TheShock
      31.12.2016 02:22

      в силу отсутствия Windows

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


      1. Moskow
        31.12.2016 03:22

        Бильд сделать легко. Но файл надо еще засунуть в оболочку Steam! Конечно, есть Framework облегчающий эту очень сложную задачу. Но, суммарный фактор, нужно разбираться, как засунуть игру для оставшихся Dekstop систем в оболочку, тестирование игр и надо ведь еще где-то взять apple. Впрочем, это не помешало мне сделать демо версию игры под Android только для процессоров Tegra k1.


        1. markhor
          31.12.2016 10:08

          Если вам нужен macOS, я могу без проблем одолжить Air 2014 на 3-6 месяцев. Безвомездно, но с возвратом, пересылка каким-нибудь DHL-ем из Мадрида за мой счет.


          1. Moskow
            31.12.2016 12:23

            Спасибо за предложение. Но, все же игру сначала надо доделать до финального конца, пока нет смысла распыляться на другие задачи.


  1. BJIaguMuP
    31.12.2016 01:19
    +2

    Подписался, рассказ захватил. Буду ждать с нетерпением продолжения!:)


    1. Moskow
      31.12.2016 01:19

      Спасибо!


  1. Karpion
    31.12.2016 02:01

    Увидев весьма красивые и привлекательные картинки, я ожидал увидеть рассказ о том, про что эта игра, и почему имеет смысл потратить на неё мои деньги и моё время. Упоминание Warcraft и Dungeon Keeper заставило затеплиться надежду на то, что я наконец увижу что-то интересное.


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


    Я ленив. Я заставил себя зайти на сайт игры (ссылку нашёл в комментариях) — но и там сходу не нашёл ничего осмысленного про игру. Простите, но я не буду искать материалы, которые должны побудить меня заплатить автору.


    PS: Мне было бы интересно, если бы автор предложил всем желающим поучаствовать в разработке игры — нарисовать карту локации, нарисовать персонажа, написать диалог с персонажем, написать кусочек сценария. Но и этого нет.
    Зачем я прочитал эту статью, увеливив энтропию и без того несчастной Вселенной?


    1. Moskow
      31.12.2016 02:12
      +2

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

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


    1. Teemon
      31.12.2016 02:14
      +2

      статья не про игру


  1. Teemon
    31.12.2016 02:41
    +3

    Отличная статья, автор!

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


    1. Moskow
      31.12.2016 03:33
      +2

      Спасибо, многие моменты подмечены очень верно. Скажу лишь, ошибки все таки были. Но ошибки стали ценным опытом.


  1. WeslomPo
    31.12.2016 11:16

    UnityScript не стоит использовать потому что его невозможно состыковать с C# кодом, они компилируются отдельно.


    1. Moskow
      31.12.2016 12:19
      +1

      Состыковать можно и довольно легко. В целом конечно же лучше чистое использование C#.


  1. Ugrum
    31.12.2016 18:15

    К чёрту код подробности!
    Продолжение на гора!


    1. Moskow
      01.01.2017 03:26

      Скоро будет!


  1. Lainur
    01.01.2017 03:11
    +1

    Интересная история, захватывающе читать! Спасибо, жду продолжения!
    В разделе про героев 3 — просто мои мысли, правда меня помимо героев вдохновляли стратегии на приставках =)
    так же как и автор решился и взялся на разработку того что долго хотелось и вот решено — делаю игру… Правда до такого состояния как у автора далеко ещё и очень да и перспектив поменьше. Может когда то и я свои мытарства опишу если всё удачно доделаю.
    Автор, что скажешь ?:)

    Ссылка на Геймдев тему.
    : http://www.gamedev.ru/projects/forum/?id=220185


  1. Moskow
    01.01.2017 03:21

    Lainur
    Мне понравилось, видно, что много работы проведено над составляющей частью. Другой вопрос, есть ли перспективы? Стоило ли брать движок Blitz3D?


    1. Lainur
      01.01.2017 13:42

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


  1. raidhon
    01.01.2017 18:51
    +1

    Да трудные моменты бывают когда пытаешься достичь чего то большего.
    В 2013 попал в один стартап и работал за обещания золотых гор, а потом меня попросту кинули на 20$ тыс.
    Пол года в трубу, год ещё приходил в себя и здоровье тоже надорвал.
    Теперь вот суровый фриланс и свои проекты, и главное без переработок.

    Спасибо за отличную историю!!! С нетерпением жду продолжнения!
    А вам желаю успехов с ваши проектом, прикуплю игру как закончите!


    1. w4r_dr1v3r
      02.01.2017 03:23

      Прошу прощения за оффтоп — так «не взлетело», или таки «меня кинули»?


      1. raidhon
        02.01.2017 17:28

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

        Теперь вот знаю что нельзя верить людям в дорогих костюмах и на дорогих машинах!


      1. raidhon
        02.01.2017 17:38

        Тут обе версии в одном флаконе.


  1. matrixs
    01.01.2017 21:56
    +2

    Жду продолжения, прям как история про «Катю» :)


  1. Viperous
    02.01.2017 01:00
    +1

    Спасибо, читается на одном дыхании, присоединяюсь к «ждунам» продолжения)


  1. azusdex
    02.01.2017 12:59
    +1

    Отличная статья, автор молодец! Замотивировал — пойду дописывать свою игру!


    1. Moskow
      02.01.2017 15:58

      Я рад, значит не зря писал. Есть ссылка на игру?


      1. azusdex
        02.01.2017 21:50

        Еще нет, только логику реализовал и чуть чуть первый уровень. Так что еще есть много чего делать.


  1. QuantZero
    02.01.2017 15:17
    +1

    Топ стори, буду ждать продолжения!


    1. Moskow
      02.01.2017 15:56

      Спасибо, думаю на этой неделю успею.


  1. skalar_i
    02.01.2017 18:05

    Спасибо за интересную историю.
    Вы не пробовали кооперироваться с другим разработчиком? Есть ли в Германии подобные платформы для этого? (спрашиваю, т.к. сам из Берлина и также ковыряюсь с Unity)


    1. Moskow
      02.01.2017 18:16

      Вот форум о Unity, не берусь сказать насколько он популярен.
      Также в xing есть группа Unity 3d.

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


  1. temnayanoch
    04.01.2017 12:03
    +1

    С нетерпеньем жду продолжение,


  1. MaximSuvorov
    05.01.2017 12:49
    -1

    И вот почему после таких статей хочется зять и ткнуть носом в Read The Fucking Manual?!.. Сколько уже на момент старта работы над игрой было статей «как не надо делать игры» — чесс слово, половину хтонического ужаса удалось бы избежать…

    ЗЫ: 10 лет уже делаю игры, так что курсе что и как :)


    1. Moskow
      05.01.2017 12:58

      Read The Fucking Manual?!

      Во первых такие мануалы не существуют, а если существуют, то находятся все очень далекими от дельных советов.
      Что мне даст мануал, в котором будет написано, если вы хотите заниматься инди разработкой, то делайте это тогда, когда вы студент или у вас много свободного времени — ну, спасибо за совет.
      Или, «Выставляйте вашу игру на Кикстартер, когда у вас огромное количество фанатов» — дальше идет троеточие.

      Если вам не сложно, скиньте мне мануал, как разрабатывать большую игру одному? — я удивлюсь, если он существует.

      P.S Только не надо мне скидывать мануал, как делать аркадную игру под мобилу.


      1. MaximSuvorov
        05.01.2017 13:55

        Стоит пожалуй написать более развёрнутый ответ :)

        1) То что ДжаваСкрипт — костыль — писали сами разработчики Юнити с момента создания этого чудесного инструментария и уже в 2012-2013 в тырнетах были тонны вайна почему не стоит…

        2) Проект на 20+ Гб и всё в ЮнитиАсетс?.. Прошу прощения, но кажется это уже проблема архитектуры. При всём кажущемся «могуществе» среды разработки — библиотечные вещи типа «списка текстур» и «списка иконок для спелов» — уже пора давно выносить в простые библиотеки которые можно править без пересборки проекта — следует научится разделять игровую логику и контент

        3) А* на джва скрипт — когда родной пазфайндинг юнити не полное говно?.. После таких слов очень-очень хочется попросить взять паузу, трезво переосмыслить всё что было написано, оценить все за и против и только потом продолжать — иначе потом будет очень больно, поверь.

        И да — больше гугла, велосипеды уже давно написаны, осталось их только правильно применить ;)


        1. Moskow
          05.01.2017 14:44

          Здесь уже был человек сверху, который пытался доказать, что проблемы проекта сделанного под Unity 4.6 и открытого позже под Unity 5 можно решить абстракционизмом и полиморфизмом, благо на сайте оказалось пару людей, действительно разрабатывающих на Unity.
          Не знаю, почему мне должно быть больно после третьего пункта, но если я вас правильно понял, то вы хотите сказать, что я должен был использовать Pathfinding NavMesh? — Дело в том, что я разрабатываю, не Эго-шутер. В игре, каждый объект уничтожаем — если вы знаете, как работает Unity Pathfinding, то я могу дальше не писать.
          По поводу первого пункта, в интернете было много информации, но все же далекой от истины. Надо отметить, что в пользу JS играло на руку легкость, что для хобби разработчиков очень важно и огромное количество туториалов и информации именно под JS, а не C#.
          По поводу второго пункта. Проект будет столько весить куда бы я его не вынес, существует основная часть, которая и используется для Стима и другая часть, назовем ее «Апендиксом», которая нужна если что-то понадобится. Ну а 20 Гигабайт весят не списки текстур и иконок естественно, а объекты. Так же с текстурами и иконками нет никаких проблем при перебросе в другую версию Unity.

          Так как я не увидел мануала, можно ссылку на ваши игры на Unity3d?


          1. MaximSuvorov
            07.01.2017 19:58

            Под мануалом имелся ввиду гугл для 101-го велосипеда который вы описали в дев. стори.

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

            Относительно туторов — мне больше с# попадался, да и дев-стори от других компаний «почему мы сразу перешли на сишарп» — должен был навести на мысли ;)

            Могу просто сслыки на игры:

            http://store.steampowered.com/app/48720/?l=russian
            http://store.steampowered.com/app/333420/


            1. Moskow
              07.01.2017 22:08

              Гугл естесвенно использовался — это, как сказать ребенку, выходи на улицу и дыши воздухом. Но, многие вещи познаются на своих ошибках, чтобы не писалось в поговорках. Я прочел много всего в то время — но, все было слишком естественным, что и без советов ясно.

              Ок, в статье не было ни слова про динамическую потологию карты для поиска пути, но писать свою реализацию?


              Ну, а почему нет? Во-первых знания, во вторых интерес, а в третьих сам по себе путь как это доходило для новичнка — меня, что надо делать и как, я это скоро опишу, но, когда я только начинал, Pathfinding моих монстров был больше похож, на попытку обмануть систему и дать любым образом добраться до цели. В середине пути я настолько погряз в UnityScript, что уже не было другого выхода как писать свое решение.

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


            1. Suvitruf
              08.01.2017 18:02

              Ок, в статье не было ни слова про динамическую потологию карты для поиска пути, но писать свою реализацию? Я чего-то совсем не понимаю этого момента. Может быть пришлось писать оптимизацию?
              Если вы про Юнитишные НавМеши, то они не всегда работают. Как минимум, они не будут работать, если у вас сферическое поле.
              Не знаю как сейчас, но раньше навмеши даже нельзя было генерировать динамически.


              1. Moskow
                08.01.2017 18:05

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


                1. MaximSuvorov
                  08.01.2017 18:10

                  EDIT: However, it is now possible (since Unity 4.3) to dynamically cut holes in the navmesh with the `NavMeshObstacle` component's `carving` property.

                  Впрочем если скрость А* устраивает — то не стоит тратить на это силы и время.


                  1. Moskow
                    08.01.2017 18:19

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