Pull to refresh
13
0
Александр @afrokick

User

Send message
мы с Глебом трудились в довольно крупной IT-компании

Пару недель мы использовали скайп в качестве файлообменника и каждый вечер делали бэкап проекта в отдельной папке чуть ли не руками.


Очень странно в 2017 не использовать vcs для хоть какого-нибудь проекта. Или в довольно крупной компании тоже через скайп шарили?) Все настройки же только в .gitignore и сериализации ресурсов заключаются.

Можно еще подключить аналитику от юнити(чтобы смотреть что с геймплеем) и креши/ошибки ловить(Performance Reporting, чтобы баги собирать).

А вообще молодцы, удачи с проектом!
А с точки зрения бизнеса, много ли бумажек нужно, какие налоги? С оффлайн вроде понятно как сделать, а онлайн отличается чем то?
Я как-то использовал для NGUI штуку под названием NData. Где-то видел и под новый ui.
У меня был опыт получения 100к установок (выход в топы20 по категории) без единого цента, лишь на ключевых запросах. Причем игра — готовый проект купленный за гроши(20$ вроде) + рекламная сетка от appodeal.

И вот вижу кучу прилаг в магазе — ну херь херью, клоны, а набирают по 1млн загрузок.

Вопрос напрашивается: куда катиться мирстор?)

PS не в коем разе не призываю делать подделки на коленках
Я вот как раз где-то между, ближе ко второму пункту. Поделюсь своим опытом:

1) усидчиво кодил с 16 до 18 лет. Сделал нескольк своих игр(очень плохого качества). Немного фрилансил(поправить скрипт, сделать регистрацию для ммо). Результат: всего по-немногу, начальный опыт
2) в 18 сделали с приятелями соц игру, немного заработали, и закрыли проект, так как нужно было за что-то жить второму программисту. Результат: опыт работы в команде, первый серьезный проект с 0.
3) в 19 взяли на работу в крупную компанию(100 чел). Скорее всего приняли из-за опыта, который наработал. Результат: понятие бизнес процессов, всякие third-party, инструменты.
4) Через год ушел фрилансить: рейт был выше, чем в офисе. Несколько длинных проектов. Еще подкачал скилл
5) Еще через год пригласили работать в другую компанию на позицию team lead. Рейт еще выше. Результат: Опыт управления
6) Еще через год ушел на фриланс и сижу до сих пор. ИП. Рейт еще выше. Результат: длительные, доверительные отношения, разные проекты

как-то так в сумме linkedin

Что хотел бы выделить
1)старался всегда делать как надо, не какашку, сразу предупреждая где слабые места и что может быть не так
2)постепенно усложнял проекты, чтобы не сидеть на месте, ибо это надоедает. Да, возможно есть что-то хорошее когда делаешь одно дело очень-очень-очень хорошо, но я «за» развитие.
3)постоянное самообучение — книги, хабр, что-то свое

Не отрицаю, что для себя иногда делал «какашки», но там скорее был тестовый полигон, чем конечный продукт.

Какова же формула успеха, спросите вы? Самая простая — отдаваться делу, развиваться, и немного везения)
Добавлю, что еще зависит от стека, как ни крути. Есть ниши, в которых очень много работы, и не хватает рук. В других уже занято, и сложно конкурировать. Хотя для опытного разработчика освоить что-то новое не составит особого труда, было бы желание.
Поделюсь своим скромным опытом: когда-то давно я проводил уроки по программированию. Буду честным, ребятам из-за бугра(США) ставил рейт 30$/h, наши соглашались на 5-10$.
Однажды мы разговорились с одним товарищем(сша), и он сказал такую вещь: «если я вижу, что что-то дешевое, то скорее всего это фигня. Поэтому я считаю что чем выше цена, тем лучше продукт/услуга». Возможно это связано с тем, что образование это нечто иное, чем выполнить работу на заказ…

Что я хочу сказать: если вы опытный, то нет смысла занижать цену. В вашем случае скорее всего повлиял распорядок — вы много времени тратили на работу(офис), и параллельно фрилансили(судя по истории — всего 91 час). Согласитесь, что за пол года на одном фрилансе вы бы сделали больше проектов и профиль выглядел бы солиднее)

То есть если рассматривать фриланс как подработку + офис, то нет ничего удивительного, что он не дает нужной отдачи.
Еще нужно везение) Не в обиду автору, но таких игр куча, с короткой сессией, милой графикой и простым геймплеем. Сейчас качество продукта — не опциональный параметр, а по умолчанию. А вот чтобы игру заметили, нужен хороший пиар и везение. Удачи автору!
или достаточно заранее позаботиться о размере листа new List(сколько будет элементов) :) И тогда не будет ресайзов
Согласен с Leopotam
7 пункт использую для VIEW слоя — все вьюшные компоненты засовываю в такие поля. Видел, что делают через всякие GetChild/GO.Find(), но по мне это привносит неудобства:
1) нужно сохранять именование/порядок, чтобы ничего не отвалилось
2) не понятно когда ссылка установлена

Для себя выбрал подход все что относится к ui по возможности настраивать в коде(колбеки к примеру), а на редактор оставить форматирование(стили)
А теперь представьте этот пример в виде вложенных switch-ей :)
switch
function getDevJob(studying, hardWork, luck) {
   switch(studying){
      case true:
         switch(hardWork){
            case true:
               switch(luck){
          	   case true: return true;
                   case false: return false;
               }
            case false: return false;
         }
      case false: return false;
   }
}
Можно ли считать человека мид/сеньером, если он офигенно делает калькуляторы(то есть узкий круг задач выполнялся много раз), но не знает базы?

Не раз сталкивался с мид/сеньер кандидатами, которые утверждали «я очень круто умею ставить кнопочки на форме и верстать UI, но знать не знаю и не хочу знать про стек и очередь, спросите лучше про кнопки».
не совсем понял зачем. Для нового игрока на серваке всегда лежит последний n-ый снимок мира как раз для этого случая. А больше вроде бы случаев и нет, разве что откат на несколько состояний назад для просчета физики/etc. Всем остальным игрокам можно слать дельты
А еще можно хранить дельту мира между стейтами, и тогда объем должен быть в разы меньше, если изменений не очень много. И тем более есть смысл отсылать дельту игрокам.

Откатывать тоже просто — просто применять по очереди все изменения мира.

Для тех, кто первый раз слышит о дельте — это разность двух состояний.

К примеру, есть состояние А, в котором у игрока П1 100хп, у игрока П2 — 80хп. И вот игрок П2 наносит урон игроку П1 в размере 30единиц.

Теперь состояние мира Б выглядит так:
П1 — 70хп
П2 — 80хп

Дельта двух состояний:
П1 -30хп

Можно отправить состояние Б с данными:
П1 — 70хп
П2 — 80хп

Или отправить дельту А и Б:
П1 -30хп

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

Для огромных миров, например как майнкрафт, это экономит огромное количество трафика (там еще всякие чанки и компрессии)
Пожалуйста.

Да простят меня хаброжители за ссылку на ВК, но полезным постом грех не поделиться — собрал все линки про сеть что имею в одно место.
Дело не в юнити и не в фотон клауде. Поэтому и упомянул вскользь, чтобы не заострять на этом внимание. Реализация алгоритма не сложная, нужно лишь складывать состояние объекта в очередь и обрабатывать при смене кадра игры + доп условия, это если про интерполяцию. Но тем, кому интересно, могут и по ссылке выше разобраться, не сложный код ведь.

По поводу авторитарного сервера — выбор каждого. Фотон клауд можно запустить и на своих серверах, и даже дописать свою логику, если разобраться с SDK. Для прототипа механики как раз и круто использовать что-то готовое, имхо много времени уходит на написание сетевого велосипеда. Хотя товарищ gnoblin и еще пару используют PhotonCloud на проде как сервис и живут как-то:)
Хотелось бы видеть реализацию данных методов на каком-либо языке, чтобы новичкам было проще понимать, как оно с точки зрения кода работает. За иллюстрации отдельное спасибо!

ЗЫ Так как работаю с Unity3D, то использую плагин(сервис) PhotonCloud для сети, в котором уже есть реализация данных алгоритмов. Вот такая реализация на C#: Смотреть на Pastebin
Давно хотел сделать ситибилдер+кликер. Но идея ничего не стоит как говорится) Удачи с проектом!

Интересно было бы глянуть код кодогенератора!

ЗЫ В закладках нашел еще одну статью(eng) про оптимизацию для мобилок.
А как это система относится к изменениям в цепочках команд?
В разделе Mapping command написано, что процесс биндинга команд к сигналам можно выполнять где и когда угодно. Если вы об этом.
И что если в цепочке у нас может быть 8-10 событий?
Событий или команд? Если команд, то системе все равно, какое кол-во. Так же, как и синхронная команда или асинхронная. Для этого нужно лишь правильно реализовать команду.
Или например в каких-то командах после тестов гейм-дизайнерами необходимо поменять передаваемые данные?
Первый способ — вызывать сигнал с параметрами, тогда эти параметры будут передаваться в команду. Второй — ничего не мешает в самой команде обратиться к сервису или модели. Например:
class StartGameCommand : EventCommand
	{
		[Inject]
		public ITimer gameTimer{get;set;}

		override public void Execute()
		{
			gameTimer.start();
		}
	}

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

Если данная тема интересна кому-нибудь еще кроме Вас, то мог бы написать статью. Но на первых порах достаточно прочитать документацию.
А что насчет сигналов и комманд? Я вот последнее время использую фреймворк StrangeIoC для DI и плюс сигналы-комманды. Можно создавать цепочки команд, можно подписаться в любом месте на сигнал.

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity