На чем отрендерить симуляцию с увеличивающимся количеством объектов?
В демонстрационных (учебных) целях нужно визуализировать с десяток симуляций некоторых процессов, описывающих в основном поведение/движение некоторых объектов. В некоторых вариантах похоже на conway's game of life, некоторые похожи на какие-то игровые симуляции. В целом идеи разнородные, но общей проблемой является большое количество объектов либо увеличивающееся в геометрической прогрессии.
Т.к. более менее сносно знаю JS - использовал 2D Canvas в браузере (на первых порах достаточно), но столкнулся с тем, что при 60fps отрисовке с несложной логикой и расчетом коллизий - один canvas в браузере прилично загружает процессор, по кулеру - как будто запустил стресс тесты ) при количестве объектов до сотни, а с увеличением количества объектов и логики - на экране слайдшоу, на кулере - камин.
Какую более низкоуровневую альтернативу JS и 2D Canvas можно использовать, не утопая в ручном управлении памятью и изучении C|C++?
Даша Циклаури, спасибо за совет. Cмотрел, но подумываю остановиться на этом варианте, только в случае если не приду к чему-нибудь более производительному вне JS.
Местами есть) Но в некоторых случаях иначе не обойтись, т.к. обязательно нужно проверять столкновения каждого с каждым. Есть еще какая-нибудь non-js производительная альтернатива? WebGL пока не брать в расчет)
Илья, для теста попробуй отключить проверку столкновений и посмотреть производительность при увеличении числа объектов. Не может отрисовка сотни объектов тормозить отрисовку (ведь каждый объект это квадратный спрайт?).
Илья, ну нет, проверять каждого с каждым в принципе незачем.
Почитай про K-D деревья и, что более важно, про Quad Tree/Oct Tree.
Скорее всего пространство у тебя двумерное, в нем полезно использовать Quad Tree для кластеризации сущностей.
Почитай про клеточные автоматы, реализация может качественно помочь не засорять процессор пустыми итерациями. На регулярную сетку qtree логика клеточного автомата ляжет буквально идеально.