Как стать автором
Обновить

Комментарии 92

Спасибо гуглу, узнал что такое MOAR, продолжение следует!
оу… даже так...0.о Было приятно оказаться полезным автору, тем паче что мы коллеги — я тоже окунулся с головой в совершенно новый (но не чуждый, по счастью) мир разработки. С НОВЫМ ГОДОМ!!!
Спасибо за статью, пишите дальше!)
Спасибо за историю, жду продолжения)
Пишу!
А можно поподробнее про статистику гринлайта? Основываясь на личном опыте 100.000 уникальных посетителей кажется каким-то нереальным числом.
Это не уникальные пользователи. Уникальных было 3.843. Проголосовавших 1.973.
Отмечу, что и в Кикстарте и Индигого тоже не уникальные, там все еще хуже.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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


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

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

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

Ну у вас все так просто на словах. Я вот делаю игру на юнити 5.4, а вот уже в 5.6 полностью изменили способ запекания освещения, что приводит к тому, что я в принципе не могу перейти на следующую версию, ибо альтернативы значительно медленнее и не дают необходимого визуального результата. И это вообще никак не зависит от кода — просто тупо в редакторе в новой версии удалено то, что прекрасно работало в 5.4
Полностью вас понимаю. Я прошелся очень кратко по этой теме, но на самом деле проблем там непочатый край. В продолжении рассказа я упомяну еще о разработке одной двухмерной игры. Так вот, там я тоже хотел перейти с 5.1 на 5.3 — в игре тут же появилось огромное количество багов, связанных как с двухмерной физикой так и с работой с Collider в целом.
Я 3(!) раза пускал жизнь «под откос». Оказалось что многие вещи решаемы и можно продолжать заниматься любимым делом с пользой для себя. Кстати, сухой технический доклад отлично идет, будучи разбавленным личными переживаниями. Возможно, в них есть необходимый опыт ил еще что-то… Дихалт и чувак из Мосигры так пишут, вроде.
Главное — выводы после ошибок.

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

Спасибо, рад что первая часть этой истории многим пришлась по душе.
На оф. сайте http://darkforester.com/wordpress/wp-content/uploads/2014/06/demo_content.png отдает 404

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

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

не понимаю, почему юнити-разработчики не делают билдов для всех десктоп-систем. Они ведь одной кнопкой создаются.
Бильд сделать легко. Но файл надо еще засунуть в оболочку Steam! Конечно, есть Framework облегчающий эту очень сложную задачу. Но, суммарный фактор, нужно разбираться, как засунуть игру для оставшихся Dekstop систем в оболочку, тестирование игр и надо ведь еще где-то взять apple. Впрочем, это не помешало мне сделать демо версию игры под Android только для процессоров Tegra k1.
Если вам нужен macOS, я могу без проблем одолжить Air 2014 на 3-6 месяцев. Безвомездно, но с возвратом, пересылка каким-нибудь DHL-ем из Мадрида за мой счет.
Спасибо за предложение. Но, все же игру сначала надо доделать до финального конца, пока нет смысла распыляться на другие задачи.
Подписался, рассказ захватил. Буду ждать с нетерпением продолжения!:)
Спасибо!

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


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


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


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

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

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

Но. Но несмотря на кажущиеся при первом приближении безрассудные или опрометчивые действия автора на самом деле, похоже, не являются таковыми.
Его биография, биография его отца, фигурирующие суммы, место проживания, работа — говорит о том, что «за спиной» у автора кое-что есть. Война с работодателем и руководителем — на самом деле не просто акт «загнанного волка» — а демострация силы, в том числе самому себе — похоже, нужно иметь большой профессиональный опыт, чтобы запросто расстаться с работой, судиться и т.д.
Спасибо, многие моменты подмечены очень верно. Скажу лишь, ошибки все таки были. Но ошибки стали ценным опытом.
UnityScript не стоит использовать потому что его невозможно состыковать с C# кодом, они компилируются отдельно.
Состыковать можно и довольно легко. В целом конечно же лучше чистое использование C#.
Скоро будет!
Интересная история, захватывающе читать! Спасибо, жду продолжения!
В разделе про героев 3 — просто мои мысли, правда меня помимо героев вдохновляли стратегии на приставках =)
так же как и автор решился и взялся на разработку того что долго хотелось и вот решено — делаю игру… Правда до такого состояния как у автора далеко ещё и очень да и перспектив поменьше. Может когда то и я свои мытарства опишу если всё удачно доделаю.
Автор, что скажешь ?:)
Ссылка на Геймдев тему.
: http://www.gamedev.ru/projects/forum/?id=220185

А Horde Была отличная игра, но играл в неё на PC — увлекательно было :)
Lainur
Мне понравилось, видно, что много работы проведено над составляющей частью. Другой вопрос, есть ли перспективы? Стоило ли брать движок Blitz3D?
Есть ли перспективы — вопрос тяжелый, я думаю что их немного в плане продаж. Но если сама игра окажется интересной и играбельной, то можно будет перенести на что то более современное. А так, всё то что придумывается, он позволяет реализовать в той или иной степени, а идеи накопившиеся требуют реализации :)
НЛО прилетело и опубликовало эту надпись здесь
Прошу прощения за оффтоп — так «не взлетело», или таки «меня кинули»?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Жду продолжения, прям как история про «Катю» :)
Спасибо, читается на одном дыхании, присоединяюсь к «ждунам» продолжения)
Отличная статья, автор молодец! Замотивировал — пойду дописывать свою игру!
Я рад, значит не зря писал. Есть ссылка на игру?
Еще нет, только логику реализовал и чуть чуть первый уровень. Так что еще есть много чего делать.
Топ стори, буду ждать продолжения!
Спасибо, думаю на этой неделю успею.
Спасибо за интересную историю.
Вы не пробовали кооперироваться с другим разработчиком? Есть ли в Германии подобные платформы для этого? (спрашиваю, т.к. сам из Берлина и также ковыряюсь с Unity)
Вот форум о Unity, не берусь сказать насколько он популярен.
Также в xing есть группа Unity 3d.

Кооперироваться с кем-либо не так просто. Нужны или деньги — тогда вы шеф и тут все понятно. Или, надо за идею работать, но за идею могут работать лишь люди, которых вы очень хорошо знаете. Также должно совпасть слишком много критериев, от возможного уровня занятости, до мотивации и фанатизма, с которым ваши сообщники будут трудиться над проектом. Как только маленькая часть этого звена начнет где-то давать сбои — все разрушится.
С нетерпеньем жду продолжение,
И вот почему после таких статей хочется зять и ткнуть носом в Read The Fucking Manual?!.. Сколько уже на момент старта работы над игрой было статей «как не надо делать игры» — чесс слово, половину хтонического ужаса удалось бы избежать…

ЗЫ: 10 лет уже делаю игры, так что курсе что и как :)
Read The Fucking Manual?!

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

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

P.S Только не надо мне скидывать мануал, как делать аркадную игру под мобилу.
Стоит пожалуй написать более развёрнутый ответ :)

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

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

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

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

Так как я не увидел мануала, можно ссылку на ваши игры на Unity3d?
Под мануалом имелся ввиду гугл для 101-го велосипеда который вы описали в дев. стори.

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

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

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

http://store.steampowered.com/app/48720/?l=russian
http://store.steampowered.com/app/333420/
Гугл естесвенно использовался — это, как сказать ребенку, выходи на улицу и дыши воздухом. Но, многие вещи познаются на своих ошибках, чтобы не писалось в поговорках. Я прочел много всего в то время — но, все было слишком естественным, что и без советов ясно.

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


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

Я к сожалению никогда не играл в Казаки и не представляю даже близко, как там все выглядит. Но вот идея свертывать карту для поиска, если я правильно уловил мысль действительно может быть неплохой идеей.
Ок, в статье не было ни слова про динамическую потологию карты для поиска пути, но писать свою реализацию? Я чего-то совсем не понимаю этого момента. Может быть пришлось писать оптимизацию?
Если вы про Юнитишные НавМеши, то они не всегда работают. Как минимум, они не будут работать, если у вас сферическое поле.
Не знаю как сейчас, но раньше навмеши даже нельзя было генерировать динамически.
Динамически все еще не работает, поэтому может подойти лишь в игру, где на карте ничего не меняется.
EDIT: However, it is now possible (since Unity 4.3) to dynamically cut holes in the navmesh with the `NavMeshObstacle` component's `carving` property.

Впрочем если скрость А* устраивает — то не стоит тратить на это силы и время.
Это лишь на бумаге. NavMesh не помшник в динамичной игре, где все постоянно меняется.
Вы упомянули 3000 долларов, из которых 1400 ушло на Steam и налоги. Steam в вики про Greenlight пишет, что не готово публично говорить, сколько денег они будут брать, это все решается в результате переговоров (читал про это вчера, мне это интересно, сам планирую запустить игру).

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

What is your revenue split?
We don’t discuss our revenue split publicly. Once your game goes through Steam Greenlight, we will get to those details.


Я неверно понял этот момент?

Да вот уже сам нашел http://www.steampowered.com/steamworks/FAQ.php
Может быть что-то изменилось за эти два года, а может и я уже запамятовал.
Могу сказать точно — переговоров у меня никаких не было. Да и поговрить с кем-либо из стима не так легко, пару раз пробовал связаться.
Но, не раскрывая, каких-либо «великих» тайн, стим берет не много, а вот налоги едят основную часть тех денег, о чем я писал сверху.
Очень интересна часть про «налоги». Как оформляете, высчитываете, платите.
Привет, ну и жесть ты тут пишешь. Я когда уделял меньше времени жене / сыну из-за разработки своей инди-игры переживал, а ты тут такое рассказываешь. В общем сил, добра и лучей поддержки тебе! Почитай мою статью если интересно — habrahabr.ru/post/344350
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.