Понять Демосцену за 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 комментария

avatar
Спасибо за перевод, хотя текст никакой имхо.
avatar
текст рассчитан на новичков, которые первый раз слышат слово «демосцена»
avatar
Ну, объективно говоря, у автора проблемы с «Проклятием знания», для новичков тут нихрена непонятно. Для начала стоит вообще сделать словарь терминов.
avatar
А во вторых — описать, почему стоит лезть в демосцену. Ибо описаны проблемы и как их решить, но не написано, что это даст в итоге. А даёт много что.
avatar
Иногда мне вспоминается, как батя учил меня плавать. Он просто бросал меня чуть подальше и наблюдал за попытками барахтаться.
Вот и этот текст такой же — новичок будет сам плавать по спискам ненужных или полезных знаний.
язык Processing представляет собой набор примеров на сайте и годен только для моделирования.
tiny intro 128/256/512b будет направлено на платформу, скорее всего под ms-dos. В этом случае не помешает изучить материал, связанный с VGA — палитра, адресация видеорежима, функции int 10h, связанные с видео. Еще один вариант — FPU.

Шейдеры GLSL не обязательны к обучению, не помешает изучить и основы OpenGL.

И, в конце концов, зачем писать демо?
avatar
Ну вот как-то так, да. Позиция «выплыви сам» хороша в поиске талантов, а не в помощи тем, кто хочет научится.
avatar
«Ау, мы рыщем таланты»?
avatar
Я имел в виду оригинал текст, а не перевод.
avatar
Да, спасибо Vinnny . Ну будем потом всеми вместе писать нормальные исчерпывающие руководства.
avatar
и по шейдерам:
esate.ru/uroki/OpenGL/uroki_opengl/_p4208/
avatar
А мне наоборот мануал понравился. Я в оригинале читал правда. Он такой, рождает чувства, как когда инвитру клёвую смотришь.
avatar

смотрите. Авось захочется сделать что-то.
avatar
Да мне давно уже хочется, только между «хочется» и «сделал» — пропость.
avatar
лень или времени нет?
avatar
Это больной вопрос для меня и связан не только со сценой. Общепринятый факт, что кто хочет — делает, кто не делает, тот не хочет.

Скажу так: у меня всегда есть ряд задач, более приоритетных, чем хобби. В то же время я не занят их решением круглые сутки, но в условно свободные часы трачу время на занятия, не требующие умственной деятельности. В общем это давний конфликт.

Плюс некоторый перфикционизм, который, в частности, не позволяет брать готовые процедуры из книжек, хочется всё нужное писать самому. А из-за недостатка опыта и потому что мозг отвык думать иногда решение элементарной задачи (например вычисление адреса знакоместа по заданным координатам на спекки) может не дасться.

В общем я ещё к CC'16 хотел что-нибудь накодить, желание пришло на CC'15, в Апреле 16 я про него вспомнил, сел разбираться с z80 в июне-июле, ествественно к пати ничего не успел (прочитал пару хороших книжек, нашёл хороший эмулятор с дебагером, нарисовал квадрат), а после пати ещё ни разу редактор не открывал, не успеешь оглянуться — снова CC.
avatar
Между тем на гяфе например был тред, где ребёнок чей-то демы писал, даже парочку написал. Ну там «просто картинки» + музыка от папы, но с другой стороны вполне себе работы, работают. После двух-трёх работ он пропал похоже, но показательно, пришёл, сделал, лет 11 ему было вроде.
avatar
Да, было дело, этот «коварный тип» развел меня на участие в деме. Попросил у меня и VNN по эффекту и пропал, пришлось выпускать дему нам с VNN.
avatar
Не тот ли, который про «форумчани» и «снижинки»?
avatar
Она, да.
avatar
А, помню. Хороший гифт у вас вышел.
avatar
Необязательно брать процедуры из книжек. Я так изучал шейдеры GLSL — взял пример и написал свой код. Может, выплывет когда-нибудь.
avatar
Это просто пример.Что такое шейдеры GLSL я плохо представляю, но всё же мне кажется сравнение изучение низкоуровнего кодирования и высокоурновнего кодирования происходит по-разному. Скажем когда я изучаю какую-то библиотеку, конечно я смотрю примеры её использования, возможно прохожу туториал, после этого делаю что-то своё. А в случае с z80 например нет этой самой «библиотеки», есть документация по ассемблеру. Всё, бери и кодируй. И это чэлендж. И я не хочу этого чэленджа лишаться. Во-первых потому что хочу, чтобы мозг начал работать, а во-вторых мне проще самому написать, чем проследить как чужой код работает.

Хотя конечно я подсматриваю в чужой код. Вот в тех же инфокомовских книжках есть пара полезных процедур. И я их даже прочитал. Потом попробовал по памяти записать. Частично получилось. Но понял я их всё равно только когда сам писал. В любом случае подсматривать — не интересно. Это как когда в адвенчуру играешь, долго какое-то место не пройти, подсматриваешь в прохождение, а там всё просто. И вроде как и прошёл дальше, а чувства совсем не те, чем когда сам додумаешься.
avatar
Мне думается, что после изучения другого кода должно возникнуть желание написать самому.
Иногда у меня так происходит после чтения доков (:
avatar
У меня желание никуда не пропадает ^^
Инвитра на Revision очень «вдохновляет», заряжает нужными эмоциями, я его вообще посетить хочу в этом году.
И вот этот «teach yourself demoscene in 14 days» тоже очень крутой текст, там же пинки раскиданы, «садись, пиши, пиши сразу, каждый день хотя бы пять минут работай».
Просто дни пролетают быстрее, чем я успеваю заметить.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.