Возможно, творчеством в полной мере нельзя назвать. Но это демонстрация работы одного из механизмов, который лежит в основе творчества — поиск аналогий.
Интересно. Компьютеры научились рисовать как люди-шизофреники. Например, картины художника Уэйна Луиса Уильяма, к концу жизни сошедшего с ума:
Картины
Серия из шести работ Уэйна часто используется как пример в учебниках по психиатрии для иллюстрации изменения стиля творчества в результате развития психической болезни с течением времени.
Очень интересно. Не подскажете где можно глянуть подробнее как это работает? Как я понял, это код, который исполняется самим браузером в каком-то низкоуровневом режиме? Или это именно бинарник, стартующий в параллельном с браузером процессе и браузер в нём считает тяжёлые части кода?
Спасибо за статью. Крутая концепция. Как-то думал об аналогичной штуке, но в контексте автоматической генерации тестов. Ведь если мы задаём границы значений, то мы можем погонять соответствующий кусок кода на этих границах и даже выполнить частичное покрытие тестами для некоторых комбинаций аргументов функций.
По поводу девятой части статьи, «Владение подсистемами»… Как раз недавно спорил по этому поводу с нашим геймдев-лидом. Мне хотелось раскидать задание по частям разным людям: отдельно работу по отображения, отдельно — по логике. Казалось, что это поможет лучше распилить фичу в рамках концепции MVC. Меня очень удивила позиция лида, который сказал, что это плохая идея. Позже я понял, что он прав — ведь если всё будет делать один человек, он будет в два раза меньше времени тратить на дебаг из-за отсутствия конфликта областей ответственности и, заодно, уходя с работы (все мы не вечно сидим на одном месте) сможет более целостно донести информацию о фиче своему «наследнику».
Возможно, в случаи утилитного ядра приложения это не так актуально, но решил всё-таки оставить это замечание — возможно, мысль пригодиться.
П.С.: Честно говоря, не очень понял что именно вы называете библиотеками, а что — движком. Почему движок не может быть библиотекой (лучше — совокупностью библиотек), которая статически либо динамически связывается с кодом игры?
Круто кораблик сделали!.. На Звезду Смерти немного похож с люком:
картинка
Не знаете, случайно, в Украине имеют место быть какие-нибудь начинания вроде Продлёнки? Вопрос не праздный — у меня младший брат пытается налаживать связи в отечественном научном сообществе, проводит всякие олимпиады для школьников и студентов. Ему эта информация могла бы здорово пригодиться.
В принципе, с российскими математическими школами он тоже поддерживает контакты, поэтому если знаете ещё какие-нибудь интересные подобные российские проекты — тоже было бы полезно про них узнать.
Я просто посмотрел на данную статью с точки зрения человека, который мог бы найти её при обучении openGL и воспринять как учебную конкретно по этому API.
Возможно, я пропустил какой-то дисклеймер при чтении статьи, но замечу — для обучения лучше подходят статьи с использованием нового API, где нет матричных стеков и прочих старых функций. Интернет запружен примерами для новичков со старым API, что приводит к результату, когда начинающие в openGL вынуждены переучиваться на новый лад (сам в своё время попался на эту удочку).
Понимаю, в данном случаи автор имел дело с прикладной задачей, которую нужно было реализовывать для старого железа. Но это дело рассматривается как курс, поэтому решил внести это замечание.
В любом случаи, автору спасибо. Статья достаточно интересная.
А не думали ещё что будете использовать для анимации? Я в своё время использовал CoreAnimation, но очень давно не имел дело с iOS. Какие там последние штуки используются?
Нормальная статья, хотя и расстроило, что маловато математики.
Если когда-нибудь будете ещё улучшать, то читы для шайбы с увеличением фрейм-рейта можно заменить на Continuous Collision, считая коллизии через пересечения отрезков.
оно сообщает, начиная с какого двоичного знака числа начинают различаться
Да, извиниюсь, невнимательно прочитал. Теперь понял, что вы предлагаете таким образом получать момент первого расхождения, а не сравнивать числа. Тогда нормальное решение, да.
Оно не привязано к способу упаковки числа — в С есть стандартные функции
Ух ты, слышал про такую возможность, но никогда не пользовался. Спасибо.
В реальном проекте такой вызов написали бы максимально простым, а потом исправляли бы в случаи возникновения проблем. И такой подход, как на меня, правильный.
Так тоже не получится. Тут проблема глубже. Дело в том, что, помимо погрешностей операций над числами с плавающей точкой на одном процессоре, на разных процессорах могут результаты тоже разные получаться. И если сравнивать через оператор равенства числа, получение с разных компьютеров (например, для мультиплеера), то при одних и тех же операндах могут разные результаты выходить.
Кстати, то, что вы предлагаете, если я правильно понял, это обычное сравнение — просто зачем-то очень сложное, ещё и зависимое от способа запаковки числа с плавающей точкой.
Чего-то мне кажется что вряд ли это ситуацию исправит. Проблемы с невозможность задать всякое число с плавающей точкой с помощью float (из-за привязки к степеням двойки) и с особенностями его аппаратного вычисления никуда не денутся, сколько не домножай его на другие числа.
Хотя, если вам такое решение помогло, интересно было бы почитать каким образом.
Например, здесь описывают эту проблему и советуют разные способы её решения. Я использовал сравнение, которое в статье советуют не использовать: if( Math.abs(a-b) < epsilon), но оно работало для меня.
А ещё FoxCanFly тут же ответил — какой-то хитрый способ… Пытаюсь вот понять.
Путь верен. «Здоровые» шедевры не за горами.
Возможно, в случаи утилитного ядра приложения это не так актуально, но решил всё-таки оставить это замечание — возможно, мысль пригодиться.
П.С.: Честно говоря, не очень понял что именно вы называете библиотеками, а что — движком. Почему движок не может быть библиотекой (лучше — совокупностью библиотек), которая статически либо динамически связывается с кодом игры?
Не знаете, случайно, в Украине имеют место быть какие-нибудь начинания вроде Продлёнки? Вопрос не праздный — у меня младший брат пытается налаживать связи в отечественном научном сообществе, проводит всякие олимпиады для школьников и студентов. Ему эта информация могла бы здорово пригодиться.
В принципе, с российскими математическими школами он тоже поддерживает контакты, поэтому если знаете ещё какие-нибудь интересные подобные российские проекты — тоже было бы полезно про них узнать.
OS X, Ubuntu, MinGW — странный ряд, напоминает задачку в стиле «уберите лишние».
А так — да, любопытно, буду теперь больше внимания обращать на особенности работы с constexpr. Спасибо за статью.
Понимаю, в данном случаи автор имел дело с прикладной задачей, которую нужно было реализовывать для старого железа. Но это дело рассматривается как курс, поэтому решил внести это замечание.
В любом случаи, автору спасибо. Статья достаточно интересная.
Если когда-нибудь будете ещё улучшать, то читы для шайбы с увеличением фрейм-рейта можно заменить на Continuous Collision, считая коллизии через пересечения отрезков.
Да, извиниюсь, невнимательно прочитал. Теперь понял, что вы предлагаете таким образом получать момент первого расхождения, а не сравнивать числа. Тогда нормальное решение, да.
Ух ты, слышал про такую возможность, но никогда не пользовался. Спасибо.
Кстати, то, что вы предлагаете, если я правильно понял, это обычное сравнение — просто зачем-то очень сложное, ещё и зависимое от способа запаковки числа с плавающей точкой.
Хотя, если вам такое решение помогло, интересно было бы почитать каким образом.
А ещё FoxCanFly тут же ответил — какой-то хитрый способ… Пытаюсь вот понять.