Понять Демосцену за 14 дней. День пятый. Основы кодинга. [перевод]
«День третий и четвертый. Основы графики и музыки» ← • → «День шестой. Инструменты и ресурсы»
Мы переводим и адаптируем гайд «Teach Yourself Demoscene in 14 Days» от Psenough. Остальные главы читайте по тегу #14days.
Мнение переводчиков может не совпадать с мнением автора.
День пятый. Основы кодинга.
Изучать программирование в наше время не так уж и сложно. Есть тонны книг и бесплатных курсов. Кто-то даже собрал все ссылки на одной странице.Проекты Khan Academy и Codecademy достаточно хороши для общих познаний в программировании. Как минимум вам нужно узнать что такое переменные, функции, классы, структура данных, цикл и алгоритмы.
Есть много языков программирования, платформ и стилей программирования. У каждого свои приверженцы. Языки также различаются по манере написания кода и стилистике, но вы должны сосредоточиться на том, который больше всего вас интересует, или более удобен.
Чтобы сразу не разочароваться, следует начать с лёгких вещей, вывести на экран что-то простое. Для понимания программирования графики подойдут среды разработки Processing или Unity3D. Независимо от выбранного языка, платформы или API-интерфейса, в нём всегда есть способ вывода изображения на экран, где можно рисовать элементарные фигуры (точки, треугольники, прямоугольники).
Существует множество способов программировать демку. Понятия «лучший способ» не существует. Вы делаете демо так, как чувствуете. Главное — успеть доделать демо, и показать её на большом экране.
Некоторые программисты залипают на «правильном» коде, вылизывают каждый байт, перечитывают горы книг в поисках более оптимизированного результата, флудят на форумах о лучших методиках, и зацикливаются настолько, что демо никогда не увидит свет. Если это про вас, то рекомендую зайти на programming-motherfucker.com/ и, наконец, зарелизить свою демку.
Ещё один нюанс заключается в том, что для релиза необязательно самому писать все утилиты и движки. Некоторые кодеры любят создавать инструменты для демосценеров — им нравится разработка больше, чем творчество. Остальные же ненавидят возиться с движками и хотят просто собирать демо, как конструктор. Хорошо попробовать и то, и другое, но, в конце концов, сосредоточьтесь на том, что вам больше всего интересно и комфортно.
Если это крошечные интро (128, 256, 512 байт), то много материала можно найти на сайте sizecoding.org. Если интересуют интро чуть большего размера (1k / 4k), то посмотрите сюда.
Большинство современных демок (2010–2016) преимущественно основаны на пиксельных и фрагментных шейдерах либо написаны на HLSL или GLSL. Для знакомства с программированием шейдеров есть онлайн-бестселлер «Книга Шейдеров», а также песочница Shadertoy для GLSL-экспериментов.
Пробуйте каждый день писать новый эффект и вы поймёте, в чём надо ещё потренироваться и улучшить свои навыки.
К концу пятого дня вы должны понимать роль программирования в демомейкинге.
Написано ps при поддержке cxw, Danny and hardy. Идея текста — Saga Musix. Перевод и адаптация — Vinnny под редакцией atf.
Мы готовим текст в Телеграфе, консультируемся с Главредом и проверяем в Орфограммке.
«День третий и четвертый. Основы графики и музыки» ← • → «День шестой. Инструменты и ресурсы»
24 комментария
Вот и этот текст такой же — новичок будет сам плавать по спискам ненужных или полезных знаний.
язык Processing представляет собой набор примеров на сайте и годен только для моделирования.
tiny intro 128/256/512b будет направлено на платформу, скорее всего под ms-dos. В этом случае не помешает изучить материал, связанный с VGA — палитра, адресация видеорежима, функции int 10h, связанные с видео. Еще один вариант — FPU.
Шейдеры GLSL не обязательны к обучению, не помешает изучить и основы OpenGL.
И, в конце концов, зачем писать демо?
esate.ru/uroki/OpenGL/uroki_opengl/_p4208/
смотрите. Авось захочется сделать что-то.
Скажу так: у меня всегда есть ряд задач, более приоритетных, чем хобби. В то же время я не занят их решением круглые сутки, но в условно свободные часы трачу время на занятия, не требующие умственной деятельности. В общем это давний конфликт.
Плюс некоторый перфикционизм, который, в частности, не позволяет брать готовые процедуры из книжек, хочется всё нужное писать самому. А из-за недостатка опыта и потому что мозг отвык думать иногда решение элементарной задачи (например вычисление адреса знакоместа по заданным координатам на спекки) может не дасться.
В общем я ещё к CC'16 хотел что-нибудь накодить, желание пришло на CC'15, в Апреле 16 я про него вспомнил, сел разбираться с z80 в июне-июле, ествественно к пати ничего не успел (прочитал пару хороших книжек, нашёл хороший эмулятор с дебагером, нарисовал квадрат), а после пати ещё ни разу редактор не открывал, не успеешь оглянуться — снова CC.
Хотя конечно я подсматриваю в чужой код. Вот в тех же инфокомовских книжках есть пара полезных процедур. И я их даже прочитал. Потом попробовал по памяти записать. Частично получилось. Но понял я их всё равно только когда сам писал. В любом случае подсматривать — не интересно. Это как когда в адвенчуру играешь, долго какое-то место не пройти, подсматриваешь в прохождение, а там всё просто. И вроде как и прошёл дальше, а чувства совсем не те, чем когда сам додумаешься.
Иногда у меня так происходит после чтения доков (:
Инвитра на Revision очень «вдохновляет», заряжает нужными эмоциями, я его вообще посетить хочу в этом году.
И вот этот «teach yourself demoscene in 14 days» тоже очень крутой текст, там же пинки раскиданы, «садись, пиши, пиши сразу, каждый день хотя бы пять минут работай».
Просто дни пролетают быстрее, чем я успеваю заметить.