Скорее всего лаг связан с тем, что браузер загружает картинку, после смены src, он ведь ничего о ней не знает, до появления пути к картинке. Выше верный выход подсказали со спрайтом.
Ну и посмотрите в сторону canvas. Всё же использовать дом для игр ресурсоёмко.
Потому что, Math.random() генерит псевдо случайные числа. И гарантированной уникальности этих чисел не даёт. Бросая монетку 2 раза, у вас нет никаких гарантий, что она упадёт и на решку и на орла.
Что бы получить массив уникальных чисел можно воспользоваться Set из es6 или на indexOf проверять
let arr = [1,1,2,3];
Array.from(new Set(arr)); // [1,2,3]
Ответ: да, может. Скажем если вы подключаетесь в wifi в макдаке и заходите на не шифрованные сайты, то владелец wifi может просматривать и изменять трафик(ваши запросы, ответы на эти запросы и тд). Эта проблема решается https
За андроид девайсы не знаю, но на ios устройствах - нет. Контент не будет загружен, пока не будет сделан тап. Вышли из ситуации так: для этих устройств указывали, что звук выключен, и предлагали включить, нажав на соответсвущую кнопку
Хорошим решением будет иметь общее хранилище в памяти(редис, мемкэш), и да придётся сериализвать и тд, простых и быстрых решений таких задач не бывает. Если интересует межпроцессное взаимодействие то для этого есть process.send / process.on('message'), но это доступно только для процессов типа master<->child, и злоупотреблять этим не советую, при интенсивном обмене тут уже плохо будет и ОС и вашему приложению.