Golf me a polygonal loader
JavaScript (V8), 353 318 bytes

f=(n,l,d,o=0)=&gt;{w=[...{3:'330231',4:'42240220',6:'423313021131',8:'4233231302112131'}[n]]
a=Array(3*l).fill().map(_=&gt;Array(4*l).fill` `)
x=n==4?0:l,y=0
for(i=0;i&lt;d+o;++i){a[y][x]=i&gt;=o?'*':' '
j=~~(i/(l-1))%n*2
x+=w[j]-2
y+=w[j+1]-2}(c=console).clear()
c.log(a.join`
`.replace(/,/g,''))
setTimeout(_=&gt;f(n,l,d,o+1),100)}

Try it online!
On the tio.run it displays all output instantly, but in the browser console it animates as it should.


f=(n,l,d,o=0)=&gt;{w=[...{3:'330231',4:'42240220',6:'423313021131',8:'4233231302112131'}[n]]
a=Array(3*l).fill().map(_=&gt;Array(4*l).fill` `)
x=n==4?0:l,y=0
for(i=0;i&lt;d+o;++i){a[y][x]=i&gt;=o?'*':' '
j=~~(i/(l-1))%n*2
x+=w[j]-2
y+=w[j+1]-2}(c=console).clear()
c.log(a.join`
`.replace(/,/g,''))
setTimeout(_=&gt;f(n,l,d,o+1),100)}
f(3,3,4)