November 26th, 2015

work

Инфляция Мура

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

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

В итоге в 2015 гигабайты и гигагерцы - это не те гигабайты и гигагерцы, о которых мечтали лет 10 назад. Кое-какая оптимизация сохраняется в игровой индустрии, о чем говорят даже уважаемые люди в книге "Кодеры за работой". В остальном - ну емаё.

Доходит до того, что авторы мануалов по игровому движку на Java честно предупреждают:
- Нахер все стандартные коллекции Java. Нахер даже ArrayList. Используйте встроенные в движок специально оптимизированные массивы.

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

Что поделать - обратная сторона АКП, то есть удобных современных языков программирования.

PS: есть слабая надежда на такой виток спирали, что когда дойдем до реально разумных средств разработки - они сами, как программисты древности, будут составлять высоко оптимизированные программы из тех чанов спагетти-кода, что будут генерировать программисты-люди. В конце концов, у Java когда-то не было даже JIT-компиляции, а потом они даже переписали свою машину на ассемблере...
work

Четвертое приложение

Три недели с хвостиком ушло на четвертое приложение - клон известных "Шариков-стрелялок" (Puzzle Bobble).

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



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

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