oobaculi notes 1

hello =) here are some random notes about this program..

using code to plot pixels on the screen, one at a time according to an algorithm, is like one of the most elementary programming fun things to do... i used to make stuff like this a lot as a kid, using GW BASIC... but in the current era since i started using OpenGL, drawing textured quads etc, pixel plotting fell by the wayside for me because it was no longer the simplest way to draw graphics.. i hadn't done it in years til recently when i learnt how in order to make a sprite drawing tool...

i started OoBaCuLi a couple weeks ago sort of by accident - felt like trying to make something that would look like those particle collision bubble chamber pictures (eg http://www.pd.infn.it/~dorigo/bubblechamber2.jpg) which i always thought looked cool... but i got distracted when it started generating pretty knots and loops...

so yeah that's all OoBa is - a line of particles ("threads") which are constantly attracted to each other.. except instead of every particle being attracted to every other particle, each one is only attracted to the one right in front of it in the line (cuz that's where i stopped coding the simulation)... making a loop.... it starts by placing threads randomly around the screen, each given a small initial random velocity.. then they just chase each other.

it is very much the kind of code i always use for sprite movement when making arcadey games, except here the sprites leave a permanent trail. (my friend skweek once took some extreme long exposure photos of 80s arcade machines, sprites leaving long movement trails behind em, looked really cool...)

i may try adding different attraction rules some time because... oobaculi is always just 1 linear loop, always does the same kind of shapes... but then again, this kind of restriction appeals to me...

if you press 'v' while it's drawing, it'll turn back on the cursor sprites, makes it very easy to see what's actually happening..


with the up and down cursor keys you can control their rate of attraction/acceleration ("weave"), which makes for looser or tighter loops.. 
if "link" is set to 1, it's a global override - all threads will use the current acceleration curve, changing as you change it.. if "link" is 0, each thread will use its own stored acceleration curve - whatever the "weave" was set to at the time of that thread's creation. 

so, for example, you could create thread 1 with a high weave value, thread 2 with a low one. then if link==0, thread 1's movements will be all angular and tight. thread 2's will be smooth and loose. you can switch back and forth between individual and global weave by turning link on or off at any time, say, to make something which alternates rhythmically between seemingly random wobbling at the edges of the screen and pointy triangles in the middle...


i've been really surprised by ooba's results. it keeps coming up with stuff i didn't expect.. it's definitely not passive though, to get more varied results you have to really play it.. i'm usually tapping or holding 3 to 6 keys at a time. i plan to make a simpler control mode where you can just chill out with a controller and it'll still be nice and varied.. because..it's not very user friendly.... 

the whole input method could do with an overhaul really, it's not planned out or anything, just hastily typed in as i thought of things.. i think it's v hard to understand unless you know what all the little numbers and such mean.. it's more like a debug menu in a game, than a creative tool :)


so, about those numbers. here's what some of them mean:

skeins. the skein number controls the colouring of that thread..
- skein 2 and 3 will draw gradients. you can control the width of the gradient with mod1 (left and right cursors) - moving this around as you draw is how i make organic blobby looking colours
- skein 6 is an eraser. it's fun to add a bunch of erasers in amongst the other skeins, they clear up space and make it look like the wind is blowing through your picture.

needle. this number controls how/when this thread will draw.
- needle 0 - draws over things (ie, replaces any pixel it touches)
- needle 1 - alternate over/under (doesn't quite work how i meant it to, but it's alright)
- needle 2 - draws under things (ie, only fills up empty space, never replaces pixels that are already drawn)
- needle 3 - colouring-in...( *only* replaces pixels that are already drawn..)
- needle 4 - draws until it hits a solid pixel, then vanishes
- needle 5 - draws until it hits a solid pixel, vanishes but creates a new thread at that point (sometimes looks bouncy?)
- needle 6 - explodes into new little short-lived (modifiable with mod1) starburst threads when it hits a pixel
- needle 7 - when it hits a pixel, draws through but pushes (copies) that original pixel to either side

in version 1.1 i added some special needles which move things around a lot, or draw more than 1 pixel at a time... you can only make those by pressing N, M, or SHIFT+M. i didn't include them in the main needle list or randomisers because they tend to take over everything :)


another useful new thing is the F10/SHIFT+F10 swapcopy function.. it supposedly swaps the background and foreground layers, but copies things in different ways and..i can't quite describe what it does... it sometimes makes things disappear and then reappear.. anyway, you can use it to make gaps in patterns, to make rhythmic pictures...


ok that's all for now! 
x, b.

Get OoBaCuLi Fibrous Being

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.