Тема инди-игр уже давно набирает популярность. Новости о том, как разработчик одиночка или маленькая студия вырвались в топы Стима, появляются регулярно. Но что если я скажу, что инди-игры были и задолго до Стима? Что была целая индустрия, объединявшая тысячи разработчиков по всему миру? Маленькая, неприбыльная и забытая сейчас, но очень популярная 20 лет назад. Это был Flash. На хабре уже есть несколько статей о нём, но я расскажу как эта индустря работала изнутри.
Если кто не застал, флеш игры - это такие бесплатные игры в браузере, которые заполонили интернет в нулевых. К ним не относились серьёзно, но встречались и годные, даже шедевральные проекты, которые помнят до сих пор. Я посвятил разработке таких игр больше 10 лет и хочу рассказать, насколько эта была необычная, интересная и где-то безумная индустрия.
Делались эти игры в программе Macromedia Flash, которая вообще-то задумывалась только как инструмент создания веб анимаций. Ну вот этих вот Масянь и всяких прочих Смешариков.

Это был ни в коем разе не движок. Физика? Камера? Коллизии? Поиск пути? Забудьте все эти блага цивилизации. У вас был только инструмент для создания анимаций, которые можно было вкладывать друг в друга, как в матрёшку.
Работало это всё на собственном языке ActionScript в один поток на процессоре, и вместе с векторной графикой. Производительность, естественно, была так себе. Из-за этого многие флеш игры из 2005-го, если их сейчас запустить во весь экран, всё равно будут тормозить.
Справедливости ради отмечу, что потом компанию Macromedia купил Adobe, исправили часть косяков и наплодили новых, а добрые люди написали физический движок. Но это было потом.

Но на этом технические “особенности”только начинались. В нормальных программах как? Есть точка входа, где программа стартует, а потом начинает управлять анимацией. Во флеше было ровно наоборот: анимация управляла программой. Буквально: у вас не было одного файла или проекта, где писался код. Весь код писался в кадрах и исполнялся только когда этот кадр проигрывался. Можно было написать код в отдельном файлике, но его всё равно надо было импортнуть в какой-нибудь кадр чтобы заработало.

Помним же, что клипы анимации можно вкладывать друг в друга? Это открывало поистине безграничный простор для ниндзя-кода: напиши баг в 3-м кадре на 7-м слое в анимации кота, который сидит за краем экрана в 500-кадровом ролике - и никто никогда не починит. Но этого разработчикам из Macromedia показалось недостаточно и они дали возможность писать код в объектах на сцене. Выглядело это так: рисуем на сцене кнопку, выделяем её, жмакаем F9 и в открывшемся окне пишем:

Всё, теперь эта кнопка при нажатии отправит вас смотреть мульт с 100-го кадра. Казалось бы, это же супер удобно, не то что эта возня с подписками в любом другом UI. А теперь представьте, что у вас не кнопка, а персонаж. И что в нём написано как он должен двигаться в игре.Вы этих персонажей расклонировали, и их стало 50. А потом решили изменить им поведение. Вам нужно будет ткнуть в каждого и поменять код ему персонально, потому что когда вы копируете объект - копируется и код на нём. Он не общий.
Такой подход, конечно, снижал порог входа до плинтуса, но был просто инкубатором багов. Поэтому большую часть кода в играх всё же писали просто в самом первом кадре, на отдельном пустом слое. Зато игровой цикл зачастую реализовывался по методу “трёх кадров”: в первом кадре основной код, в втором - то, что должно выполняться каждый кадр, а в третьем - gotoAndPlay(2); Даже в играх с более вменяемой архитектурой переходы между экранами меню и между уровнями - это просто остановка каретки воспроизведения на каком-то определённом кадре. Других способов не было.
Но сложности нас не пугали. Собственно, сами флеш игры изначально разрабатывались на голом энтузиазме людьми, которым жуть как хотелось сделать свою игру, а денег на свою студию и лицензию Unreal Engine у них не было. Обитали они на Newgrounds.com - это такой сайт с девизом “Everything, by everyone”, что очень точно описывает его контент.

Любой, кто сделал хоть самый простенький мульт или игру, мог запостить его туда. На сайте была довольно продвинутая система рейтинга, где самый мусорный мусор удалялся через час, проходняк - оставался, но нигде не светился, а хорошие игры и мульты пополняли топы всевозможных чартов. Самые лучшие новинки добавлялась в святая святых - на главную сайта. И уже с главной и из топов разнообразные сайты с играми разбирали (пиратили, можно сказать) игры себе. С ростом популярности флеша таких сайтов расплодились тысячи. Брали игры они, конечно, не только с NG, но и с других крупных сайтов и друг у друга, но большинство хороших игр так или иначе появлялось на Newgrounds.
Впрочем, авторские права никого тогда особо не волновали. Мы наоборот радовались когда наши игры расходились по всему интернету, мы же их делали не ради денег. К счастью, профит не заставил себя долго ждать: популярность принесла аудиторию, а где аудитория - там и реклама, а за рекламу платят. Впрочем, об этом в следующий раз.