
В начале 2014 года у меня появилась идея по соединению навыков, в тот момент у меня имеющихся, это создание анимации во Flash, веб-разработка, программирование на ActionScript 3, опыт 3D-моделирования, в один проект, где было бы всё из перечисленного. Эта идея заключалась в создании интерактивного учебника по 3ds Max, где можно было бы легко найти нужную информацию. По сути нужно было повторить весь интерфейс программы и для каждого инструмента сделать собственное описание. По моим подсчётам, нужно было сделать около 800 страниц, сопроводив их мини-роликами и поясняющей информацией. Кроме страниц там были множественные кнопки, панели и меню и всё это было взаимосвязано. Как оказалось, даже в тот момент сильно неодооценивал задачу, но тем не менее довольно быстро сделал несколько пробных Flash-роликов и разработал алгоритм их конвейерного создания.
К 2016 году, то возвращаясь к проекту, то занимаясь другими делами, мне удалось повторить интерфейс 3ds Max 2016, сделать основные страницы и в целом, реализовать всё, что мне тогда приходило в голову. Можно сказать, что это был этакий стенд для пробы тех или иных задумок, которые на основной работе не доставались.
К слову, если бы мне бы захотелось реализовать этот проект в стиле ООП, то он бы никогда не продвинулся настолько далеко и вообще остался в зачаточном состоянии. Было известно, что времени на него не так много, да и возвращаться к нему буду с большими перерывами, когда уже успеешь забыть, для чего та или иная функция. Поэтому все части, а их было огромное количество, были разбиты логически на папки, а в них файлы, в которых находился обычный процедурный код, который работает не хуже любого другого, а часто и быстрее. В то время WordPress использовал такой подход, разбитие на множество подключаемых файлов, поэтому стоило попробовать. В результате, если даже сейчас открою проект, чтобы внести какие-либо изменения, мне просто это сделать, так как изменения обычно в одном-двух файлах и их найти проще. Скорее всего, не нужно будет добавлять новый или исправлять сервис с интерфейсами и DTO, а обойдётся всё парочкой условий "if".
Надо понимать, что для коммерческой разработки такой подход не подходит (кроме WP, видимо), пока в проект единственный разработчик не вносит изменения, изменения также не вносит никто, сторонних изменений нет вообще и управлять разработкой такого проекта намного удобнее. Есть ещё причина для простоты проекта - возможно было строить баланс между сложностью нововведений и их реализацией в ту или иную сторону.
К тому времени, как подходил к концу интерфейс сайта, вышло обновление для самой программы и мне удалось предусмотреть так, чтобы новые функции программы отображались в новом интерфейсе сайта, а старые в старом, таким образом можно было в дальнейшем добавлять версию за версией. Но всего тогда не предусмотрел.
Первым серьёзным испытанием стал запрет Flash Player в 2017, на котором у меня было заготовлено несколько тысяч коротких роликов для сайта, ведь получилось, что страниц больше, а на каждой могло быть до десяти таких поясняющих мини-видео. К этому формату обучающего материала пришел после того, как захотелось придти к чему-то среднему между текстовой подачей материала и видео-уроком. Хотелось собрать в одно плюсы от того и другого, вместе с тем избавившись от минусов. Естестественно, отключить ролики было кощунством, слишком много труда на них потрачено и стал искать альтернативные проигрыватели. Сейчас эта проблема решена так, что сделал собственный JS-плеер для воспроизведения этих клипов. Большим плюсом стало то, что они заработали на мобильных устройствах, так как поддержки Flash там не было и нет (только в редкоиспользуемых браузерах).
Только закончил с одной проблемой, как в 3ds Max коренным образом поменялся вид интерфейса программы, то есть почти всё. И новая версия 2018 учебника должна была её содержать. Мне удалось добавить интерфейс в конце концов, но упомянул об этих двух неожиданностях затем, чтобы показать, что несмотря на то, что проект написан просто, без фреймворков и прочего, его можно глобально менять и подстраивать под меняющуюся ситуацию.
Интересной особенностью стало и то, что, несмотря на масштабы, переход на более новые версии PHP происходил без особых исправлений. Это произошло из-за простоты реализации, если у меня были сомнения при написании кода, что применяемая функция изменится через некоторое время, то заменял её другой, более стандартной, изменения которых не такие частые. При этом часто наблюдал, как переход больших интерпрайзных решений с версии на версию сопровождается огромным объемом работы и последующих исправлений, в силу того, что никто не задумывался об этом наперёд (хотя очевидно, что версия языка рано или поздно поменяется). В проекте также не использовано ни одной сторонней библиотеки, только PHP, JavaScript, СSS и здравый смысл.
Сейчас этот интерактивный учебник работает, его можно найти по адресу 3dsmax-book.ru.