Февраль 2018

Прошлый тут

По деньгам только 2500. Игра про рыцаря вместо того, чтобы дать рост доходов в лучшем случае задерживает падение.

Продуктивность

В середине месяца я действительно очень мало сидел за компом но не то, чтобы совсем ноль. Думаю часть времени трекер просто по какой-то причине был выключен, но даже если накинуть к общему времени 20-25% то все равно получится один из самых маленьких месяцев. Я реально проводил много времени в дали от компа, но об этом чуть позже.

По работе все очень вяло.
Метался между
1) идеей расширения инструментария в сторону стратегических игр,
2) написания приложения, которое позволило бы мне работать со смартфона/планшета,
3) и просто стартом новой игры.

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

Поэтому некоторое время я потратил на ресерч, и в итоге я не так уж и много понял.
Все популярные решения, а именно: встроенный мультиплеер юнити, photon и Player.io заточены на матчмэйкинг, вплоть до того, что кроме матчей не дадут сделать вообще ничего. Одна их особенностей матчмэйкинга это «комнаты» игроки подключаются к какой-либо комнате и могут взаимодействовать только в рамках этой комнаты. Комнаты обычно не превышают 100 человек.

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

Я рассматривал возможность использовать photon server или player.io и чтобы внутри оно работало с общей базой, и через эту базу получается обеспечить взаимодействие тысяч игроков.
Плюсы полноценного сервера на photon server или player.io:
1) Это как бы «настоящий сервер», чтобы в эту фразу не входило.
2) TCP/UDP соединение позволяющее серверу с клиентом удобно меняться информацией.
3) Серверная логика на том же языке, что и игра. Прием и пересылка данных между сервером и клиентом сделаны очень удобно и просто.
4) player.io еще и хостить это сам будет.
Минусы:
1) Оба решения заточены на матчмэйкинг.
2) За все надо платить.
3) Photon server еще и разворачивать на хостинге нужно.
4) Не понятно как организованна работа с БД. А без БД все это лишено смысла.

Но взвесив плюсы и минусы перешел к более простому решению. К всем нам знакомой связке php + mysql, и собираюсь реализовать сервер в виде REST API.
Плюсы:
1) Это просто сайт. И может быть залито на любой хостинг.
2) Можно наконец приступить к работе, не изучая больше ничего дополнительно.
3) В случае необходимости переписки, если игра пойдет и будет давать большую нагрузку, можно будет нанять любого хорошего программиста и он полностью поймет мой код.
Минусы:
1) Это просто сайт и на вход могут пойти абсолютно любые данные и мне надо защищать свой сервер, как если бы я защищал любой другой сайт. Ну с инъекциями то все понятно. Но как защищаться от DDOS я пока не знаю.
Хочется как-то шифровать запросы, но потенциальный взломщик сможет при желании увидеть каждую строчку клиентской части, а я не имеют понятия как в таких случаях делают шифрование на стороне клиента.
2) Это решение далеко не оптимально по нагрузке. И чтобы сервер держал сотни подключений мне все равно придется осваивать новые для меня технологии. Однако учитывая, как тяжело игры набирают популярность, может быть у меня и не возникнет потребности оптимизировать нагрузку.
3) Архитектура типа запрос-ответ накладывает некоторые ограничения на обмен информацией, но думаю я просто подстрою логику под это ограничение.

Сброс веса

В конце января меня клинануло и я решил сбросить наконец лишнее. За февраль у меня наверное -5-6.
Но сброс веса требует не только дисциплины и воли, но и банального времени.

Я почти каждый день нахаживал километры. В среднем наверное два часа в день ходил, хотя бывало и побольше. Был день когда я прошел 29км. Был день когда я прошел 55км (почти весь день ходил).
Вот поэтому залогированно так мало времени за компом.
Под конец месяца в город пришла жара и ходить стало намного сложней. Что и на графике видно, полоски стали длиннее.

Акции

Основной счет -15,4%
Второстепенный счет. 0% (Точнее + 18рублей)
Тиньков -7,7%
Крипта +14,7%


Автор: Elsper.ru


VN:F [1.9.14_1148]
Rating: 10.0/10 (1 vote cast)
Февраль 2018, 10.0 out of 10 based on 1 rating

104 thoughts on “Февраль 2018

  1. Привет! А я подзабыл уже, доход с игр это и с издательских же тоже? или только с твоего акка ГП? Какое-то распределение дохода с издателем было в % или путаю?

  2. Я пока решил остановиться на велотренажере в спортзале. Засел на два часа и крутишь педали параллельно читая что-то в смарте. )

  3. Доход моя доля от издательских. делим пополам. Мои самостоятельно изданные скатились за несколько лет совсем в копейки.

  4. написания приложения, которое позволило бы мне работать со смартфона/планшета

    а чем Codea не нравится? Норм же вроде?

    Я пока решил остановиться на велотренажере в спортзале. Засел на два часа и крутишь педали параллельно читая что-то в смарте

    А что в море не купаешься? Ты же в Тае, плавание — самый лучший фитнес.

    В спортзал от хорошей жизни не шастают 🙂 Спина что-ли дает о себе знать от долгого сидения?

  5. Что такое Codea Не знаю. Счас посмотрю. Но я так то имел ввиду расширение своей самописной IDE
    Посмотрел.. похоже это полноценная система со своей самостоятельной структурой, а значит это совсем не то, что мне нужно.
    Ну и оно на айпаде. Я просто не смогу на нем ничего делать, у меня непереносимость эппла.

    Что касается моря, то Тай вообще-то большой. И мне до моря примерно 700км.
    Но и в любом случае у меня катастрофически не хватает интереса к плаванию и я его обязательно заброшу через пару раз.

  6. Насчет минусов
    1) Гугли ssl pinning
    2) Попробуй golang. Легковесные треды и джентельменский набор для работы с сетью из коробки

  7. хз зачем тебе на планшет залазить, моб.девайсы же инвалидные по сравнению со стационарным пк

    я сначала на ПК сидел, потом переходил на ноуты, пару лет нравились, но потом все равно решил что ПК незаменим

    на стационарнике стоит моник 27″, надо еще взять второй такой, либо вместо двух один 32″ 4K, чтобы с множеством окон удобно работать было

    на nvme-ssd и норм.проце все фотошопы летают, а в ноутах несмотря на красивые бирки i5/i7/gtx железо кастрированное, кроме топ-моделей за конские деньги

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

    персонально под свою высоту настроил стол и монитор, чтоб осанка была норм, чтобы быстро не уставать

    короче ноут не охота, железо/клава — хрен с ними, но комфортный экран и осанка незаменимы 🙂

  8. Планшет, чтобы не таскать с собой ноут, уехать в какой-нибудь рандомный лес/парк и сидеть там. Или в дороге бывает едешь едешь и раз вдруг приспичит поработать.

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

  9. Я когда вдали от дома на Kindle читаю тех.литературу по интересующим языкам/фреймворкам. У Kindle экран оч.хороший, даже под прямым ярким солнцем не бликует.

  10. Я с телефона читаю. Есть еще дома айпад (издатель подарил) и читалка.
    Но мне и с телефоном норм. Девушка читает с айпада.

  11. А как твой полифазный сон, что-то изменилось с прошлого месяца? К какому режиму в итоге пришел?

  12. Подзабил еще в конце января, потому, что времени мне это в итоге не добавило.
    Сейчас иногда могу вздремнуть 20 минут днем.

  13. Мне тоже нравится ходить, но как и где ты ходил 55 км? Это часов 12 ходьбы наверное. По городу, по природе?

  14. «перешел к более простому решению»
    Я очень за тебя рад, ты принял правильное решение!

    А вот шифрация данныех на клиентской стороне это просто обфускация кода. Его просто хрен декодируешь… а если кто и декодирует, то от такого ничего и не поможет =)

    Я вот тоже как раз сейчас по просьбе юзеров хочу в программу соревнования добавить. Правда я хотел что-то по проще и на базе сокетов. А в таком случае мне кроме РНР вообще ничего не надо. Пока вот только не могу решится, дать пользователям возможность соревноваться с другом по его ID или все же оставить пока простой вариант рэндомного опонента.

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

  15. тем более я почти последние две недели офлаинился каждый день

    Андрей, чем занимался?

  16. Жека да ничего особенного, семейные дела =) Но вот вчера высыпался уже и сегодня весь день кодил. Сеть конечно в ЛинДуо не реализовал, а вот транскрипцию слов внедрил. Как всегда сложней всего оказался Тайский. Оказывается у них согласная не просто впереди гласной может быть… а она идет до первой согласной слева =) А теперь представь мне оф. транскрипцию слов надо было на тайский язык переводить… но все же получилось реализовать. Сейчас вот залил новую версию… рассчитываю что должно понизить удаления.

    ХОТЯ вот как раз сейчас следил за несколькими юзерами в реальном времени и я в шоке… два юзера не могли пройти урок с фруктами, при этом ответ надо выбрать на РУССКОМ языке! Это же каким дауном надо быть, что бы не правильно выбрать картинку к слову на РУССКОМ языке к яблоку или винограду? Так что возможно игру удаляют не потому что я что-то накосячил, а просто юзеры ждут чудо… мол скачал, запустил и знаешь уже все слова =)

    По этому забил на сложную карту для Робина Гуда. Завтра еще раз подумаю и буду делать просто один экран с 2д режимом и уверен народ такое заценит больше, чем мои попытки сделать изометрическую карту и искать пути с точки до точки… ни кому это на хрен не нужно =)

    А у тебя как самого Жека? Что делаешь, как успехи?

    п.с. также начал изучать рисование, пошли все дизайнера в ж… за год освою и буду сам себе рисовать дизайн =) если не Пикасо, то до уровня Малевича точно дотяну 😀 ну а имея качественный эскиз, можно найти дизайнера без интеллекта но который умеет правильно водить карандашом

  17. я тож в оффлайне занят был 🙂
    кликеры наверно осваивать буду, надо рубить пока рубится, не будут же они актуальны вечно

    механики у них простые, только рутины много

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

  19. Привет, будешь пилить REST API, не пили на чистом php, не поленись заюзать какой-то фреймворк, в том же yii2, есть коробочные решения, которые очень облегчат работу, недавно сам пилил, там и сериализация данных сразу в json или xml, лимиты на запросы, аутентификация, и другие плюхи, в итоге сэкономишь время и нервы. По поводу бд, опять же, юзай не только mysql, что-то можно хранить в оперативке с помощью Redis, а если есть какая-то статистика, то у яндекса есть ClickHouse, там мгновенные выборки данных. Плюс, для всего есть много примеров и готовых решений, компонентов. Вдобавок, используй php7, синтаксис от предыдущих версий не отличается, почти, только есть много нового и работает быстрее.

  20. roker191, а можешь чуть подробней объяснить зачем в принципе нужны Php фреймворки?
    json в php итак из коробки. функция json_encode
    аутентификация — это больше про архитектуру приложения.
    Лимит на запросы уже интересней, но в моем представлении тоже привязано к архитектуре. (какие-то запросы можно делать часто, какие-то нельзя)

    Просто я вообще никогда не осваивал технологию «впрок». Есть задача — ищу решение, если какая-то задача решается только через какой-то фреймворк/sdk, то придется осваивать. А если есть более простое решение, то фреймворк для меня как собаке пятая нога.

    По БД, да мне тоже все подряд говорят про редис, буду разбираться.

  21. Elsper, по поводу фрейиворка, изучил на отличном уровне только yii2, есть куча, но не суть, из очевидных плюсов против голого php:
    1. Это как каркас на который ты допиливаешь нужный тебе функционал, если провести параллель с играми, то ты можешь делать игру с нуля на каком-то языке, а можешь взять игровой движок с базовым функционалом и допиливать нужные тебе вещи.
    2. Сейчас зачастую во всех реализована архитектура mvc, штука, когда ты весь код разделяешь на класс с основной логикой, файл с версткой в который ты передаешь только данные для вывода, и файл который все это связывает, т.е. есть готовые классы, от которых ты наследуешься и используешь готовый функционал, который помогает реализовать тебе ту или иную задачу. Например, ты делаешь класс для запроса к определенной таблице в бд, тут тебе сразу по умолчанию: валидация данных (прописываешь как массив, обязательные ли параметры, каких типов должны быть, макс. и мин. значения и много другое, а фреймворк сам все проверит), защита от sql-инъекций (запросы делаются через специальные обертки, которые в разы удобнее, когда привыкнешь, чем просто прямой sql запрос).
    3. По поводу rest api, в yii2 есть провайдеры данных, как они помогают, ты делаешь запрос в бд, этот провайдер данных делает объект из данных полученных с бд, там можно задать, к примеру, количество элементов на страницу, потом этот объект выкидываешь просто через return, фреймворк их сам сериализирует и в ответ по запросу ты имеешь, определенное количество записей, в headers падает вот такая инфа http://prntscr.com/ir7pis , количество записей, количество страниц, на какой странице сейчас, еще блок ссылок, где можно перейти и т.д., плюс этот провайдер данных сам обрабатывает параметры сортировки и номера страниц, можно прописать связанные таблицы и данные с них тоже упадут в вывод, и это как малая часть возможностей.
    4. Аутентификация в REST, все на примере yii2, файл с методами апи, я описываю поведения, http://prntscr.com/ir7qyq , 1. методы аутентификации, уже есть в коробке, я сделал по интерфейсам класс, который взаимодействует с бд, с таблицей юзеров и токенов, и дальше в конфигах сайта его прописал, все, далее фреймворк сам последовательно чекает все три метода аутентификации, смотрит, есть ли в гет-параметрах токен, или может быть он в заголовках передается, и если находит, то создает глобальную переменную с данными пользователя, которую ты можешь использовать себе, если нет, выкидывает ошибку 401, мол, не прошел, 2, далее в правах доступа я прописал, что ко всем методам могут иметь доступ только авторизованные пользователи, и фреймворк сам все это дело проверит и ограничит доступ.
    5. Еще раз REST, есть класс, наследуешь, прописываешь, грубо говоря, к какой таблице бд он относится и по умолчанию получаешь методы апи по просмотру всех записей, просмотру одной записи, созданию записи, редактированию и удалению, сортировка и пагинация через гет-параметры, это по умолчанию и без хлопот, вешаешь авторизацию, как выше и самый базовый функционал готов.
    6. В конфигах можно прописать использование ЧПУ урлов, это все встроено, сам фреймворк будет разбираться с этим, а ты только будешь правильно создавать нужные страницы.

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

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

    Если интересно, спрашивай что-то конкретное, тема настолько широкая, что все просто так не охватишь)

  22. P. S. Щас бы в 2k17 рекомендовать осваивать PHP и его фреймворки 🙂

  23. чуваки, новости с полей открывшегося Facebook Instant Games

    наш разработчик Gideros релизнул вчера игру, говорит в первый же день 30.000 unique players

    игра оч.незамысловатая))
    https://apps.facebook.com/406032343174671

    кто на Phaser работает, если есть что пихать — пихайте)

  24. Жека, я еще вчера выложил свою игру и уже сегодня во дворе новенький гелендваген стоит =)

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

    Гугл свой успех повторить НЕ сумел, как был у них поисковик главным доходом, так он им и остался (ютуб они сперли в наглую через П. у allofmp3).

    Фейсбук упрямо тормознулся на своей социалке. Кроме него у него ничего не пошло и не пойдет. Вот ща игры запускает… конечно своя аудитория будет но и все.

    Эпл запустил свой мобилник и на этом все закончилось. Вообще посмотри и назови мне хотя бы один проект который сумели повторить? Даже теже cut the rope, angry birds… все это ОДНОРАЗОВЫЕ выстрелы!

  25. Ооо забыл про свое мненине:

    УСПЕХ = в нужное время, с нужным проектом + расположение звезд

    п.с. Шахта Элспера подходит под это же утверждение. Не смотря на то, что он поднял много игр, повторить успех шахты он не может. И при этом ни он, ни кто либо другой не знает ПОЧЕМУ она была успешна а другие (к примеру остров) нет =)

  26. И при этом ни он, ни кто либо другой не знает ПОЧЕМУ она была успешна

    успешна вероятней всего из-за ASO
    алгоритмы гугла по норм.ключевикам хорошо отранжировали

  27. Жека, наш Гуру (нашей маленькой команде известна эта личность) выводил, выводил в топ по простому алгоритму а потом РАЗ и не сработало. И не потому, что там гугл что-то поменял… просто ему фортило и было что-то особенное в других его играх, чего нет в этой и он САМ не знает что именно. Посему как в ролике JUST DO IT и пофиг на чем… хочешь на «бейсике» напиши =)

  28. Андрей, у меня еще игра про город отлично пошла, у нее даже больше установок суммарно набралось (Хотя денег она принесла меньше). Так, что твоя гипотеза о РАЗОВОМ успехе, к счастью, не совсем верна )

  29. Интересно, я раньше не понимал зачем люди в кликеры играют, а тут сам сегодня подвис в Tap Tycoon))

    Elsper, как ты балансируешь экономику, апгрейды, множители? Есть какой-то шаблон?

  30. Элспер, неужели у тебя уже Майбах? =) Я уверен в бога ты не веришь, но в карму? Зачем поддерживаешь лже идею, что гейм дев это просто? (вон Никола мог стать хорошим кодером а твои ложные утверждения человеку сломали веру в программирование)

    Я на своем опыте убедился, что нужна высшая математика для тауерз дефенда… (неделю рассчитывали и то не совсем довольны балансом) а для кликеров подавно математические рассчеты которые друг с другом переплетены и надо все это представлять и держать в памяти.

    Все туториалы это Г… простую геометрическую прогрессию приподносят как камень грааля… ты лучше скажи у кого числа для своей шахты позаимствовал =)

    Жека — ща ту получишь ответ что он все на глаз делает

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

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

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

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

  33. Тот же остров был не совсем «моей» игрой по жанру, сеттингу и по духу. И если меня не подводит память, я об этом писал оценивая причины провала.
    При том это была показательная игра и уже по ее результатам видно, что да не так уж это и просто, раз не смог повторить успех.

  34. Элспер, как тебе красиво удалось стелочки перенавправить =) Когда ты сам грешишь это одно, но когда ты осмысленно других ведешь по не правильному пути, то за их ошибки с тебя будут спрашивать (такое правило).

    Чем больше я осваиваюсь в разработке игр, тем больше я убеждаюсь, что среда разработки тратить много килобаксов что бы создать туториал, который создат ложное представление у пользоватлей, что им достаточно купить лицензию и они могут создать второй angry birds. Прикол в том, что создать они создадут (не все но особо упорные), а вот играть его ни кто не будет.

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

  35. Андрей, мне кажется игры писать — одному из сотен тысяч дается шанс.
    1)Для программирования склад ума должен быть определенный
    2)В красивую графику нужны вложения
    3)Много времени на начальное обучение уходит
    4)Несколько месяцев разработки — мало кто может без зарплаты себе позволить, т.к. у людей учеба, работа, семья, и т. д.
    5)При всём при этом никаких гарантий как всё сложится

    Если не хочешь надеяться на везение — имхо, надо осваивать Unity или Unreal, несколько игр релизнуть, потом куда-нить на зарплату Junior Developer’ом, вакансий дофига, зарплаты в бурж.странах оч.хорошие

    Elsper, ты на ios что-ли не релизил? не показывает гугл названия твоих игр в ихнем гейсторе
    Говорят же что юзеры ios побогаче

  36. Жека так кто с этим спорит (то что ты написал выше)? Я как раз именно это и утверждаю: игры это кропотливый труд, как труд столяра или кондитера. Я поражаюсь что находяться люди, которые в интернете за реальные деньги покупают витруального сотрудника и он на них работает… или сдаят дерево и потом продают урожай. Вот как можно быть таким тупым и в это верить?

    А почему это меня все задевает? Так дизайнера, переводчики, копирайтеры и т.д. все ОБНАГЛЕЛИ потому, что такие вот мечтатели наберут кредитов, потом швыряются деньгами… прогорают и либо прыгают с моста, либо просто помирают сами от сердечного приступа. А ведь они нагадили везде где можно… и теперь работать становится нормальным людям все сложней!

  37. Ну я же ничего не продаю.

    А про цифры в шахте.
    Вот самые главные это цены кирок:

     			nomer = n;
    			price_number_real = 500 * Math.pow(5, n - 1);
    			if (n > 3)
    			{
    				price_number_real = price_number_real * Math.pow(n - 1, n - 2);
    			}
    			if (n > 7)
    			{
    				price_number_real = price_number_real * Math.pow(n - 5, n - 6);
    				
    				if (Main.key_mobile_ad == 1)
    				{
    					price_number_real = price_number_real * Math.pow(n - 6, n - 6);
    				}
    			}
    			
    			/*if (n > 6)
    			   {
    			   price_number = price_number * Math.pow(n-3, n-3);
    			   }
    			   if (n > 7)
    			   {
    			   price_number = price_number * Math.pow(n-5, n-5);
    			   }	*/
    			if (n > 9)
    			{
    				price_number_real = price_number_real * (Math.pow((n - 7) / 8, n / 9));
    			}
    			if (n > 12)
    			{
    				price_number_real = price_number_real * 0.005 * n //( Math.pow((n-11)/7, n/12));
    			}
    			if (n > 15)
    			{
    				price_number_real = price_number_real * 0.01 * n //Math.pow((n-14)/8, n/15);
    			}
    			if (n > 18)
    			{
    				price_number_real = price_number_real * 0.01 * n //Math.pow((n-17)/9, n/18);
    			}
    			if (n > 19)
    			{
    				price_number_real = price_number_real / Math.pow((n - 13) / 3, n / 2);
    			}
    			if (n > 30)
    			{
    				price_number_real = price_number_real / Math.pow((n - 24) / 3, (n-10) / 2);
    			}
    			if (n > 35)
    			{
    				price_number_real = price_number_real / Math.pow((n - 20) / 3, (n-25) / 2);
    			} 

    Начал с формулы а дальше уже от балды менял коэффициенты для более поздних кирок.

    Второй по важности кусок это цены камней (ограничился первыми 20)

    			array_price_all_gem_midl_const[1] = new Number;
    			array_price_all_gem_midl_const[1] = 100;
    			
    			array_price_all_gem_midl_const[2] = new Number;
    			array_price_all_gem_midl_const[2] = 200;
    		
    			array_price_all_gem_midl_const[3] = new Number;
    			array_price_all_gem_midl_const[3] = 2000;
    			
    			array_price_all_gem_midl_const[4] = new Number;
    			array_price_all_gem_midl_const[4] = 20000;
    			
    			array_price_all_gem_midl_const[5] = new Number;
    			array_price_all_gem_midl_const[5] = 100000;
    			
    			array_price_all_gem_midl_const[6] = new Number;
    			array_price_all_gem_midl_const[6] = 500000;
    			
    			array_price_all_gem_midl_const[7] = new Number;
    			array_price_all_gem_midl_const[7] = 2000000;
    			
    			array_price_all_gem_midl_const[8] = new Number;
    			array_price_all_gem_midl_const[8] = 15000000;
    			
    			array_price_all_gem_midl_const[9] = new Number;
    			array_price_all_gem_midl_const[9] =  60000000;
    			
    			array_price_all_gem_midl_const[10] = new Number;
    			array_price_all_gem_midl_const[10] = 270000000;
    			
    			array_price_all_gem_midl_const[11] = new Number;
    			array_price_all_gem_midl_const[11] = 1200000000;
    			
    			array_price_all_gem_midl_const[12] = new Number;
    			array_price_all_gem_midl_const[12] = 10000000000;
    
    			array_price_all_gem_midl_const[13] = new Number;
    			array_price_all_gem_midl_const[13] = 60000000000;
    			
    			array_price_all_gem_midl_const[14] = new Number;
    			array_price_all_gem_midl_const[14] = 280000000000;
    			
    			array_price_all_gem_midl_const[15] = new Number;
    			array_price_all_gem_midl_const[15] = 1800000000000;
    			
    			array_price_all_gem_midl_const[16] = new Number;
    			array_price_all_gem_midl_const[16] = 12000000000000;
    			
    			array_price_all_gem_midl_const[17] = new Number;
    			array_price_all_gem_midl_const[17] = 95000000000000;
    			
    			array_price_all_gem_midl_const[18] = new Number;
    			array_price_all_gem_midl_const[18] = 850000000000000;		
    			
    			array_price_all_gem_midl_const[19] = new Number;
    			array_price_all_gem_midl_const[19] = 6000000000000000;	
    			
    			array_price_all_gem_midl_const[20] = new Number;
    			array_price_all_gem_midl_const[20] = 40000000000000000;	
    

    И третий это вероятности добычи того или иного камня.

    if (n == 1)
    {
    	kirka_array_veroyatnost_2[1] = 50;
    	kirka_array_veroyatnost_2[2] = 3;
    }
    
    if (n == 2)
    {
    	kirka_array_veroyatnost_2[1] = 70;
    	kirka_array_veroyatnost_2[2] = 10;
    	kirka_array_veroyatnost_2[3] = 3;
    }
    if (n == 3)
    {
    	kirka_array_veroyatnost_2[1] = 68;
    	kirka_array_veroyatnost_2[2] = 20;
    	kirka_array_veroyatnost_2[3] = 10;
    	kirka_array_veroyatnost_2[4] = 2;
    }	
    if (n == 4)
    {
    	kirka_array_veroyatnost_2[1] = 44;
    	kirka_array_veroyatnost_2[2] = 35;
    	kirka_array_veroyatnost_2[3] = 15;
    	kirka_array_veroyatnost_2[4] = 5;
    	kirka_array_veroyatnost_2[5] = 1;
    }		
    if (n == 5)
    {
    	kirka_array_veroyatnost_2[1] = 5;
    	kirka_array_veroyatnost_2[2] = 49;
    	kirka_array_veroyatnost_2[3] = 30;
    	kirka_array_veroyatnost_2[4] = 10;
    	kirka_array_veroyatnost_2[5] = 5;
    	kirka_array_veroyatnost_2[6] = 1;
    }
    

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

    И под конец я забил на выставление чисел и сделал одинаковые балансы

    if (n > 30)
    {
    	kirka_array_veroyatnost_2[n-4] = 20;
    	kirka_array_veroyatnost_2[n-3] = 30;
    	kirka_array_veroyatnost_2[n-2] = 30;
    	kirka_array_veroyatnost_2[n-1] = 15;
    	kirka_array_veroyatnost_2[n] = 4;
    	kirka_array_veroyatnost_2[n+1] = 1;
    }
    

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

  38. «Вот как можно быть таким тупым и в это верить?» ну как можно делать игры и презирать донатеров?
    Наоборот надо создать все условия, чтобы донатеру было интересно и он захотел задонатить.
    Можно немного даже схитрить создав искусственную потребность (как я подталкивал игроков смотреть рекламу)

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

    Может издатель продвигать не умеет. А может аудитории не нравится.

  40. Ты про рабочего и дерево не понял… Ты еще не сталкивался с рекламой где юзерам говорят что можно купить витруальное дерево что бы зарабатывать РЕАЛЬНЫЕ деньги? Мол купи дерево а потом продавай урожай и зарабатывай… и народ в надежде что можно НИХРЕНА не делая заработать, покупает дерево. Ты понимаешь что это чистой воды развод тупых баранов? Если ты считаешь что такой способ зарабатывать деньги это приемлемо, то я вообще в шоке и тебе даже карма не поможет =)

  41. Да я и сам в такую как-то играл ))
    Развод заключался в том, что разрабы меняли баланс так, чтобы предыдущие усилия оказывались тщетными.
    Если не крутить баланс по ходу игры, или сделать его изначально само поддерживающимся (например никто не купит твой урожай, за ту цену которую ты назначил, потому, что другой чувак толкает свой урожай в 5 раз дешевле) то получится обычная игра с рыночными законами.

  42. Андрей, ты прямо пессимист какой-то, всё критикуешь 🙂
    Мир может не соответствовать нашими понятиям логики и справедливости, остается только смириться с этим 🙂
    Хочешь стать pro-геймдевелопером — становись им. 🙂

  43. Элспер, ты тоже поверил, что там можно делать деньги из ничего? или все же была надежда обобрать остальных игроков? (как например покер, но интеллектуальный)

    Жека, ты пессимизм с реализмом не путай. А то распространяете вирусную рекламу и засоряете место работы. Для наглядности, пока WordPress-а не было, можно было блог вести с качественным контентом, а сейчас каждый придурок свои бредни пишет и фиг гугл до хорошего блога добирается. Нельзя гадить там, где сам ешь… и не стоит недооценивать блог Элспера, тут народ ходит, читает и разносит бред дальше.

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

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

  45. А мой блог тут при чем Элспер? Я в нем написал всю правду, которая многих разочеровала, но это ПРАВДА. Многие же в погоне за популярностью сказки рассказывают об эльдорадо за углом гипермаркета, в которые охотно верят новички. В итоге идя в долгий на самом деле путь, берут не то снаряжение и погибают на пол пути (но делая богатым рассказчика и местный гипермаркет, где для похода купили чипсы и колу).

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

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

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

    Вот предположим повезет тебе с робином гудом, игрокам понравится сеттинг, геймлпей, фишки и общее настроение игры (как у меня получилось с шахтой), и ты напишешь об успехе у себя на сайте. Ну и чем это будет отличаться от моих статей?
    Хотя одно отличие все же будет. Я СНАЧАЛА сделал игры и только ПОТОМ после нескольких успешных проектов написал о разработке, а ты написал о разработке еще до собственно игры.

    Резюмируя:
    1) Обвинять меня в том, что я что-то скрываю ты не можешь, потому, что если бы существовал какой-то скрытый секрет успеха, то у меня был бы успешным и рыцарь тоже.
    2) Обвинять меня в том, что я толкаю туфту, в которой сам не разбираюсь, ты тоже не можешь, потому, что я написал тот цикл статей уже после пяти релизов.

  47. Элспер, туфта тут не твой блог, а пост Жеки про фейсбук. С него и началось… на счет скрытия деталей, так ни кто не говорит, что ты все скрываешь. Факт остается фактом, благодаря нашему Николе, у нас собрался реальный кейс:

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

    Закс запустил игру под новый год и потом ее модифицировал — у него даже установок нормально не было. А сколько статей в интернете как под определенные праздники игры надо делать? Короче пролетел тоже…

    Я запустил обучалку и при всем том, сколько в ней полезности, не вкладывая в не еогромные деньги, не имел бы реального алгоритма как хотя бы получить установки (про зарабатывание я молчу). Я в рекламу вложился как ты в разработку первых игр (при том что я разрабатываю программы КАЖДЫЙ день более 15 лет)

    Напарник мой еле довел игру с тауерзами до финала. Хотя игра была гтова за недели две… на баланс ушел месяц и то, вот сегодня будем тесировать все целиком.

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

    Благодаря командной работе и поддержке друг друга мы как-то двигаемся. Но мы не занимаемся репостов рекламных статей, как ничего не делая и запостив игру в фейсбук можно получить 30к юзеров. Закс вон проверил вариант рекламы на сайтах… был чел который говорил про десятки тысяч халявных установок… что то в реале повторить не удалось. А знаешь почему? Да фуфло гонят 90% блогеров (на всякий случай, это не в твой адрес)

  48. @Elsper, а чем именно помогают издатели? За что им проценты платишь? Они что-ли траф откуда-то нагоняют?

    @Андрей, если ты не в курсе, сейчас во всем мире хайп, новой платформе FB Instant Games пророчат колоссальное будущее, есть даже мнения, что сильно потеснит доминирующие до этого моб.игры

  49. Ясно, мне просто показалось, что ты меня в чем-то обвиняешь. Вот и ответил.

    Кстати, когда ты всех расхваливаешь, подразумевая, что при тех усилиях, какие они вложили, они должны получить успех, это ли не то же самое, что и «Зачем поддерживаешь лже идею, что гейм дев это просто?»
    Я вижу другое:
    1) Викторина
    2) Три в ряд, каковых миллион.
    3) Не игра.
    4) О ТД сделанной за две недели мне тяжело судить. Еще не видел, но вряд ли за это время удалось реализовать какие-то фишки, которые заманят любителей жанра.
    5) По Игорю, если честно, меня как любителя айдлов/кликеров и потенциального игрока она просто не заинтересовала. У меня не вызвал интереса ни сеттинг, ни предполагаемый геймплей и я просто не стал ставить.
    Ок счас гляну.
    Ну посмотрел. Очень простая игра.
    Во время обучения принудительно заставляют кликнуть на ускорение за деньги. (Обычно принудительное ускорение бесплатное), Выход из окна стройки базы возможен только в список игроков. Экспа похоже ни на что не влияет. Когда я попытался старатануть второй бой — маяк завис. А еще на мой взгляд очень медленная анимация в интерфейсе. Для меня эта игра слишком не динамична.

  50. Жека, возятся с самим изданием (я только апк даю), возятся с эпплом, с которым я вообще не хочу никаких дел иметь, хотя у них тоже не получается.
    Помогают с техническими проблемами, делают тестирование с отчетами, рекламу особенно на первых порах, контакт с иностранными игроками, иногда я прошу их купить мне что-нибудь по работе. Например последнее была вторая лицензия на spine для дополнительной художницы. На рыцаря 2500 выделили (которые до сих пор не окупились).
    С хомяками пообещали напрячься изо всех сил, когда я ее сделаю. Возможно смогут в гугле зафичерить ее, они писали о том, что появилась гипотетическая возможность.

    Если с этими в итоге все станет плохо, попробую податься к арморгеймс. Раньше они были моим любимым игровым сайтом, и у меня самая первая еще не мобильная игра у них. Да и продвигать они умеют, если судить по другим играм.

    Однако чтобы ХОРОШИЙ издатель был заинтересован в игре нужно, чтобы игра могла выжимать деньги с игроков. То есть очень желательно реализовать внутренние покупки, возврат игроков, высокое удержание. Иными словами, чтобы игра была интересна издателю, она должна ЭФФЕКТИВНО конвертировать инсталлы в деньги. А иначе зачем им вкладывать деньги?
    У меня тоже плохая эффективность 3-9 центов с установки (которые еще и делятся пополам), но думаю издателю нравится, что мои игры и сами по себе хорошо дают трафик.

  51. Ты вот все ссылаешся на уникальность… и что было уникального в твоей шахте то? В интернете много таких… но твоя дала доход, а у других по 10к установок в лучшем случае.

    Вот мы и вернулись к тому, с чего я и начал. Все дело случая… очень легко рассуждать когда уже известны результаты.

    У нас тут выходит просто, либо ты утаиваешь мелочь но важную… либо чего вы оспариваете мое утверждение, что успех это дело случая?

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

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

    @Elsper, спасибо за фидбэк, все по делу.

  54. Elsper, насчет издателей: а можно же самому закупать траф на свои приложения, даже лучше чем это сделают их офисные планктоны.
    Получается за те деньги которые издателю в итоге отдаешь, можно и траф закупать, и лицензии покупать на Spine и прочее 🙂

  55. P. S. интересно, в понравившемся мне кликере Tap Tycoon уже на 3й день фарм стал невыносимо долгим, по сути донать или удаляй)
    по пол-дня надо ждать пока накапает доход для одного-двух апгрейдиков

    интересно, это специально во всех кликерах так делают, или стратегическая ошибка разработчиков Tap Tycoon?

  56. интересно, предположения подтвердились насчет издателей, в сети много отзывов, что некоторые издатели по факту почти ничего не делают
    https://habrahabr.ru/post/301846/

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

    Поэтому, я сразу написал что «Однако чтобы ХОРОШИЙ издатель был заинтересован в игре нужно, чтобы игра могла выжимать деньги с игроков.»
    Если игра этого не может, но издатель обещает миллионы, то разработчик сам себя должен спросить, а от куда эти миллионы возьмутся.

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

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

    __
    Вообще же я бы выделил одно простейшее правило. Если платите вы, значит «издатель» зарабатывает на вас. Если платит издатель, значит издатель зарабатывает на играх.

  58. @Elsper, код пишешь в основном объектно-ориентированный?
    Что-то раньше везде топили за ООП, а щас говорят что надо как можно меньше, а то производительность просаживает.

  59. > А где еще такая игра как у меня?
    Уже не помню кто, но кто то из команды нашел кликер ну один в один как твоя шахта, только с портретным расположением интерфейса. Я его найти могу, но смысл? Ты скажешь что там что-то не так как у тебя (ясно что двух идентичных приложений не бывает) и по этому у него не пошло. Насколько я помню у него было порядка 10к установок и она была запущена давно.

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

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

    На счет издателей — ну Элспер, нафига мне теже арморгеймз? Разница между своей и их раскруткой это скорость дохода. Если делать самому заработаешь 10к за два года (поавно имея зарплату каждый месяц), или через издателя 7к но за пару месяцев. Я заведомо написал 7 так как часть твоей прибыли издатель схавает. Конечно все это верно, если у тебя игра хорошая, умеет зарабатывать на юзерах и ты не полный ноль в раскрутке.

    А если игра д… то тот же арморз ее не возьмет 🙂 и смысл тогда от издателя? Разве что не рискуешь первой шиукой баксов на раскрутку и не надо париться с разными рекламными площадками

  60. Жека, однозначно ООП. Я пробовал уменьшать его в коде и больше функций. Код ну очень сложно писать и следить за работоспособностью. Я подозреваю, что наезд не на сам ООП, а на программистов, которые используют SDK на все! Вот был пример выше, срветовал Элсперу использовать библиотеку, что бы паковать или распаковывать json… вот такой подход и тех кто его использует нельзя брать в компанию. Тут важно понять, если использование движка тебе в реале экономит время (как например у меня ЛинДуо подеят на сервере через партнерский движок, но мне он подходит так как я пишу под него плагин, регаю юзеров, даю им тикет систему, оплату и кучу других фишек и все это за один вечер подымаеться) то надо использовать, но оправдывать свою лень, мол не хочу изобретать велосипед, это уже не правильно

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

  62. В юнити и флеше ООП без вариантов.
    На сервере пополам.

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

  63. «10к за два года» — это среднее 416 в месяц. И скорее всего к концу второго года оно скатится уже до 100-200 в месяц.
    «7к но за пару месяцев» — это среднее 3500в месяц. И даже если доходность будет скатываться по 500 в месяц, то в ноль она не упадет в любом случае и скорее всего на длительный срок задержится на плато в районе 500. То есть по итогам первого года будет больше 20 тысяч и 500 в месяц еще на протяжении некоторого времени.

  64. А если получится удачно издаться самостоятельно, то конечно, какие проблемы?
    Я ведь и сам делал три самостоятельных релиза.

  65. Элспер, ты как считаешь то? Я привел тебе сумарный доход… В случае с агенством будет допустим 4к, 3к, 2к, 1к… в случае сбея будет 0.8, 0.8, 0.75, 0.75, 0.7 и т.д. до нуля =)

    В обоих случаях жизнь игры это 1-2м установок, поставишь их ты за два года или за 3 месяца, какая разница то? После них дохода в обоих случаях будет ноль =)

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

  66. > В юнити и флеше ООП без вариантов.
    Если это правда, то Юнити уходит не то, что на дальную полочку, а вообще в сундук под семью замками. Мне сложно в это поверить, но если ты прав то ОГРОМНОЕ тебе спасибо, что сэкономил мое время =)

  67. > А если получится удачно издаться самостоятельно
    Так вот тут я согласен с опасениями Жеки. Ты и ведь сам говорил, если игра хорошая, то издатель ее возьмет… а разве хорошую игру самостоятельно сложно раскрутить? Сарафановое радио работает ОЧЕНЬ медленно, но зато если завертелось, по инерции еще долго работает.

    А если игра хреновая и самому не получилось ее разогнать. Возьмет ли ее хороший издатель? Думаю что нет… не хочет рисковать. А есть шанс, что возьмет очередной разводила, который в лучшем случае вложит 500 баксов в раскрутку.

    Я лично считаю, что рисковать должны обе стороны. А создается впечателение, что издатель хочет все риски переложить на программиста. Единственное, что я вижу положительного в арморзе это их аудитория. Они быстро продадут твою игру своим клиентам… но терять их и за тебя они не станут (продавать им что-то не качественное) но и заберут за это 50%. В итоге мы как разработчики разве не будем иметь тот же доход?

  68. Легко определяется, зайдет ли игра широкой аудитории.
    Достаточно лишь $200-300, и уже понятно, стоит ли дальше вкладываться, или приложение провальное.
    Ну и опыт закупки трафа тоже нужен, а то по своей вине можно слить тесты, а грешить на игру.
    (откуда это знаю, во времена моб.арбитража мы занимались закупкой трафа на чужие приложения в yeahmobi, отслеживанием конверсий, A/B тестами, клоакингом, и прочими извращениями)

    Это любопытно, даже топовые издатели вроде Кинга держали во всяких спамерских говносетях свои офферы. Точно помню Candy Crush Saga (принимали правда только траф с Японии), Clash какой-то там (не запоминаю их названия, тогда их хайп только начинался), антивирусные приложения.

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

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

    По юнити и ООП.
    Меня твоя реакция очень удивила. Может мы под ООП разные вещи понимаем? Потому, что не понимаю чего там плохого.

    Юнити несомненно ООП, потому, что каждый скрипт изначально из себя представляет именно файл класса на основе MonoBehaviour. Каждый элемент на сцене это объект класса GameObject.
    Свой код я тоже пишу ООП, да, есть два файла с длинными простынями кода, один файл весит 130 кб другой 70кб. Но я сделал их одними файлами исключительно из удобства структуры, потому, что де факто там выполняется по одной большой функции. В одном случае размещение и управление положением всех объектов сцены. В другом случае поиск и раздача заданий хомякам. В любом другом месте я спокойно не парясь использую классы.

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

    Глянул у тебя на блоге примеры кода фазера. Тоже вполне нормальное ООП. Объекты, поля, свойства, события, методы.

  70. Андрей вот же ты у себя сам пишешь о том, как с классами хорошо ))
    «По началу думал объекты тележек хранить в самом классе Chapel и получилась мусорка… сделал рефакторинг: вынес тележки в отдельный класс Carriage и сразу стало чисто!»

  71. Элспер, есть такое понятие как логическое рассуждение. Ни ты, ни я, ни кто либо не в состоянии назвать конкретные числа с 100% точностью. Да куда 100%, даже 50% будет уже как заглянуть в будущее. Числа я взял самые оптимистические, так как наблюдая за количеством установок у игр, там числа редко превышают 100к-500к (ислючения доказывают правило). Я сомневаюсь, что дело именно в раскрутке… мое предположение опирается на мой прошлый опыт (не игры но все же интернет проекты), у каждой ниши есть свой лимит.

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

    На счет Юнити — возможно я читаю как то по другому «В юнити и флеше ООП без вариантов.» Тут вроде написано что ООП без вариантов… мол нет. А оказывается что наоборот. Тут и парни подтвердили, что оно там есть. Мне лично без ООП создание игр вообще не представляется. Там же вся логика в объектах. Вот так мы с тобой и говорим на разных языках об одном и том же 😀

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

  73. Я человек необразованные и выражение «очень просто графами» мне мало о чем говорит. )))

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

  74. Самое забавное в этом алгоритме Элспер то, что про него еще с олимпиады, но упорно лень было его разрибирать (но каждый раз среди задач, одна решалась им). И вот когда я создал прототип (уже реальный с картой) я понял, что тележка с первой точки до 15 будет катится ой как медленно… можно конечно повысить скорость, но от такой скорости глаза устанут. Потом подумал о добавлении количества тележек, но сам понимаешь, это не решение.

    Вот тут мне карта и подсказала, что можно добавить шорткаты. Мол заплати там пару лямов и можешь открыть короткий путь. Но если добавлять шорткаты, то надо как то короткий путь искать. По этому начал с того, что нарисовал карту путей (простые кривые) и в местах где они пересекаются добавил доп точки. Получился как раз ГРАФ =) И тут я решил, надо наконец разобрать этот алгоритм:

    https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B

    Он очень, ну очень простой но эффективный. Даже имея 64 точки и четыре развилки, на ПК он считает за сотые доли секунды. Про A* я знаю, правда я лично использовал немного другую ее реализацию «волны», но для нее надо обработать весь массив. Ставиться точка, с числом 1, потом находяться все смежные куда можно пойти и ставиться 2, потом находяться все 2 и рядом ставятья 3 и т.д. пока не достигнута нужная нам точка в лабиринте (можно даже сохранять координаты уже проставленных клеток и обновлять только их, а не проходить по всему массиву). Потом по числам в обратном порядке находится короткий путь. Это всегда 100% короткий, а называю ее волной, так как движение происходит по принципу волный от брошенного камня в воду.

    Если бы я использовал изометрическую карту, то как раз этим методом «волны» и собирался пользоваться. Но понял что мою изометрическую карту ни кто не оценит, нарисовать ее даже имея красивую текстуру будет сложно (я не художник)… а времени на все это уйдет огого…

    Посмотри алгоритм и потом скажи что думаешь.

  75. Алгоритм Дейкстры я понял, когда я разбирался с алгоритмами поиска путей.

    Я у себя настолько оптимизировал, насколько смог. Во первых сделал эвристический поиск, так например если нужно будет вычислить путь по прямой, то алгоритм рассмотрит только те клетки которые нужны, не отступая ни на шаг в сторону.
    Но это все делают, чисто от себя я придумал использовать три хранилища куда скидываются задачи. Одно просто переменная, и два массива разного приоритета. (тесты показали, что работать с одной переменной быстрей всего. Работать с маленьким массивом быстрее, чем с большим. А так как требуемая точка скорее всего будет или в переменной или в маленьком массиве, то зачем мне обсчитывать весь массив заданий? Да приходится делать проверку на наличие переменной или на объекты в маленьком массиве. Но по тестам это оправдывает себя)

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

  76. Элспер, я вот делаю Робина Гуда, у меня с производительностью проблем нет. Зачем ты заморачивался с массивом и оптимизацией, которая портит читабельность кода? У меня к примеру обновление прогресса добычи ресурса (пока это полоска) происходит на обновление сцены. Вот будет возможность обновлять сцену 30 раз в секунду так и будет плавно идти прогресс, нет же — со скочками.

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

    Для примера твоя скилетная анимация будет жрать больше ресурсов чем вся твоя логика. Не потому что там движение ног… а за счет наличие самих ног 🙂 ведь что получаеться? Один хомяк и четыре ноги… значи пять спраитов на одного хомяка. У меня так сцена выбора урока была, один урок: фон, три звезды и иконка! Все шустро на ПК, на современных мобилах НО китайфоны глючили. Потом не поленился и перегнал все 5 спраитов в текстуру, общее количество спраитов уменьшилось в 5 раз и теперь всего 60, а было 300 🙂

    Ты не думал что с хомяками ты упрешься в этот де лимит? По мне так количество видимых спраитов на экране не должно быть более 100. Но невидимые тоже влияют на скорость но при прокрутке экрана, а у тебя это часто!

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

    Нет отказываться от скелетной анимации в пользу спрайтовой — не выход. Вообще-то это шаг назад.

    Нет железо обсчитывает не спрайты, как таковые, а полигоны, точнее треугольники, еще точнее вершины и нормали.
    И для железа не имеет значения 6 вершин будет (обычный спрайт) или 30. Какая-то разница будет на сотнях и тысячах вершинах.
    Есть даже ситуация при которой несколько полигонов будут быстрее чем один спрайт: такая ситуация возникает, когда у спрайта много прозрачности, а полигоны построены так, чтобы ее обрезать.

  78. @Elsper, а в чем именно уникальность хомяков? Можешь подробней?

  79. Из старых игр это похоже на сетлерсов и knight and merchant (в русском переводе «война и мир») Из новых близко к oxygen not included.
    Короче хомяки бегают, носят ресы, работают за столами. Как-то так. И все это по сети будет.

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

    Щас попалось, чел нагородил там целую эпопею: https://www.youtube.com/watch?v=2mo1nccJIbQ
    Это ппц жесть, столько говнокода просто ради того чтобы заспавнить объект и направить его в рандомном направлении с затуханием.

    Серьезно, Elsper, может когда-нибудь в следующих проектах присмотришься к 2D-фреймворкам 🙂

  81. Просто юнити позволяет писать как школьнику, так и профи. Я не причисляю себя к профи, но от уровня школьника я тоже уже отошел.

    К тому же автор сам не особо шарит. На 3:12 он говорит, что если сделать движение в общем апдейте, то пострадает производительность однако дальше в 4:08 он создает тот же самый апдейт в классе объекта. Сказочная логика. Дальше не смотрел. (Его решение хуже, как минимум из за большего количества вызова функций)
    Кроме того такие перемещения лучше делать не через апдейт, а твинерами.

    __
    Жека, а с чего ты взял что я пишу так же?

    Я просто объявлю массив «А» текстовых кусочков на десять элементов. Заполню его пустыми объектами класса, который я уже давным давно создал для любых текстов (в игре десятки, сотни текстовых объектов, конечно у меня есть класс для текстов)
    Объявлю число «В».
    При нажатии буду 1) Обнулять твин для объекта А[B], 2) менять текст для этого же объекта, 3) запускать новый твинер (параметры можно вычислить тут же в этой строке) 4) Увеличивать B на единицу. Если B больше, например 10, сбрасывать его в ноль, чтобы все шло по кругу. Вот и все.
    В визуальную среду я переключусь только, чтобы посмотреть как это будет работать.

  82. да не, я подумал что тот автор норм.пишет для юнити))

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

  83. у нас подобное делается буквально в несколько строк (можно даже еще сокращать, т.к. это тоже быдлокод)):

    function movePoints(pointsObj)
    pointsObj.angle=math.random(0,360)

    while pointsObj:getAlpha() > 0 do
    pointsObj:setX(pointsObj:getX()+math.cos(pointsObj.angle)*pointsObj.speed/60)
    pointsObj:setY(pointsObj:getY()+math.sin(pointsObj.angle)*pointsObj.speed/60)
    pointsObj:setAlpha(pointsObj:getAlpha()-0.01)
    Core.yield(true)
    end

    end

    Core.asyncCall(movePoints,pointsNum)

  84. Логику пошаговых игр оч.классно писать через асинхронные вызовы.
    @Elsper, тебе 100% это может быть любопытно:
    Например, функция отправления хомяка как на твоей гифке: http://elsper.ru/wp-content/uploads/2017/09/280917.gif

    (для начала как работает asyncCall:
    https://pastebin.com/k8WynnVY
    он заменяет everyframe-события)

    Пошаговая функция отправки хомяка:
    https://pastebin.com/ESkFqV9m

    потрясающе классно для пошаговой логики

    традиционными методами без asyncCall пришлось было бы городить таймеры, триггеры, eventlistener’ы, и т. д. и т. п.
    (функция упрощенная, но понятное дело что в реальной игре больше переменных и всего остального)

  85. 1) Пошаговые игры от игр в реальном времени отличаются не наличием «шагов», а наличием очередности хода. Мол сначала один ходит потом другой. Это я просто терминологию уточняю.

    2) Что касается асинхронности… Возможно твое решение тесно связанно с спецификой среды и языка на котором ты пишешь.
    У меня таких потребностей не возникает.

    Я просто каждый фрейм вызываю функцию, которая пробегает по массиву хомяков и обсчитывает каждого. Чуть реже вызываю пересчет логики.
    И вообще зачем тут асинхронность? Асинхронность нужна, когда код не зависит от основного кода. Асинхронность я использую, когда общаюсь с сервером. Послал через курутин(та самая асинхронность) ему информацию о том, что мы заказали строительство комнаты и жду ответа. В это время игра спокойно продолжает играть, не фризясь в ожидании ответа от сервера. И когда наконец, ответ приходит, то стройка появляется в клиенте.

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

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

        homyakObj:playWalkAnimation(left)
        for i=1,50 do
        homyakObj:setX(homyakObj:getX()-homyakObj.speed)
        Core.yield(true)
        end
    

    Плюс ему нужны логические координаты. То есть главное, что код делает, это анимация.

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

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

    3) По тому чуваку и вылету текста.
    Там же в комментах абсолютно нулевые вопросы, кто его будет критиковать? ))
    Думаю тем, кто хоть немного умеет программировать, просто не придет в голову тратить время на поиски и просмотр видео о том, как сделать такую простую вещь.
    Вообще я еще сразу, когда начинал изучать юнити писал, что сообщество делится на два полюса.

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

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

    __
    В своем примере ты привел только функцию анимации. В этой задаче еще нужен пул объектов, их инициализация и модификация при изменении текста. ))

  86. Жека интересные ссылки, но они не совсем подробно описывают саму суть создания кликера. Хотя если человек уже создавал кликеро подобные игры, то есть немного полезной информации.

    Элспер, если ты не шутил и не преувеличивал с сравнением твоей игры с oxigen not included то говоря прямо, твоя игра обречена сразу по нескольким причинам:

    1) не видеть нам ее в лучшем случае пол года или вообще год (если конечно случиться чудо и ты ее сделаешь)

    2) мало того, что игра сама по себе сложная в балансе, так ты еще и на сетевуху замахнулся

    3) ресурсов не то что мобил, даже планшета не хватит на сеть… только если ограничить состязания на группы из 2-4 человек

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

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

  87. «не начинайте грандиозных проектов» это относилось к первому-второму проекту. Потому, что с первым проектом разработчик получит много опыта и опыт, с которым он начинал разработку, станет неприменим в довольно скором времени и его придется выкинуть. Если же сделать первую игру простой, то можно избежать этого и доделать игру без крупных переделок.
    Хомяков я начал уже имея несколько релизов.

    Возможно ты теперь наоборот переоцениваешь хомяков.

    В oxigen not included жидкости и газы, этого я делать не собираюсь.
    К тому же в oxigen not included мы раскапываем пространство, а у меня попроще — расширяем домик.
    Но жанр именно этот.

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

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

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

  88. Жанр выживания это мой любимый… последнее время все меньше играю, особенно из за работы сразу над двумя играми, но люблю посмотреть lets play на ютубе. Самое сложное в таких играх, как в кликерах сделать сначала просто, а потом сложней и не перегнуть палку, что бы чел мог в реале выжить а не был изначально обречен =)

    Я вот думал на днях про SimCity и как его вообще спроектировали. Там же столько мелких параметров и при этом все в гармонии. Хотя я лично никода не мог в SimCity выиграть… у меня всегда экономика шла на упадок.

    Если в хомяках сеть будет как возможность переходить к другим игрокам в гости, тогда согласен, это реализуемо. На счет расширения домика — у тебя теоретически на сколько хомяков рассчитан доин дом? Сколько и х может быть всего и сколько может бегать видимых на экране? (приблизительно)

    Со скилетной анимацией — если она умеет кешировать кадры, то скорость не будет падать, но тогда чем это отличается от спраитной? Если же она этого не делает, то ты проиграешь в скорости. Вообще ты выше еще писал, что количество спраитов это не важно… и главное мол количество треугольников: ты это проверил на практике или теоретически так говорят создатели unity?

  89. Это не совсем жанр выживания. У меня хомяки подыхать не будут.
    По количеству не знаю, это вопросы баланса. около 10 предполагается. Ну и хомяков можно будет покупать за реал. Так, что если кто-то раскошелится то и 20 может иметь.
    Одновременно в кадре могут быть хоть все. Не важно.

    Количество спрайтов прямо связанно с количеством треугольников.
    Я же говорю, что это не имеет огромного значения. Если в игре будет 10 хомяков, то абсолютно не важно 2 треугольника (один спрайт) у хомяка или 20. У меня сам дом помимо хомяков будет иметь сотни полигонов в кадре. Ресурсы, тексты — все это полигоны.
    Важнее оптимальные шейдеры, односторонние нормали, минимум прозрачных кусков в текстурах (что достигается как раз полигональной нарезкой) и просто размер текстур (что опять же достигается с помощью скелетной анимации).

    Это не юнити. Это графичесские процессоры.

  90. Жека интересные ссылки, но они не совсем подробно описывают саму суть создания кликера

    @Андрей, а что именно тебе не понятно в создании кликера? Коэффиценты топ-игр раскрыты там. Ссылки на конструктор прототипов тоже даны, чтобы тестировать баланс.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Спoнcopcкиe ссылки