I use Processing. It's essentially a java library that makes it incredibly easy to draw stuff to the screen. It's super flexible and great for experimentation. It comes with it's own IDE that makes it really easy to just jump in and immediately start coding without worrying about project structure or anything, which I find is perfect for messing around with CA and whatnot.
Then take a look at this book it's my favorite one to learn discrete math, you don't need any background it covers pretty much everything you'll need.
Golly has an Info button for each pattern, which shows you the comments at the top of each file. Or you can just look in the file: https://sourceforge.net/p/golly/code/ci/master/tree/Patterns/Loops/Perrier-Loop.rle
See the Perrier paper referenced for a full explanation.
The IDE that is bundled with processing is indeed intended for small projects, and thus may be a bit too simple for big projects. However, you can use the library outside of the IDE; here's a tutorial on getting it working in eclipse. Using eclipse, or whatever other IDE suits your preference, I don't see any reason you couldn't use it for bigger projects.
And yes, it's plenty fast. Anything you can do in java can be done in processing, and it even has OpenGL integration. I've actually used it to make a few games before and I've never had any issues with speed.
Of course this opus magnum needs a mention here: wolfram. A new kind of science.
It uses the same logic present in the 8 bit rules but applies it to larger numbers. I've only test the code against 32 bit numbers but I suspect it would scale to any 2*4^n bit number where n is greater than or equal to 1
​
I just used a normal Bitmap actually.
Here's the code for my Render method:
BitmapImage is required for the Image tag in WPF, my solution with MemoryStream is the most elegant I was able to find for my purpose.
This project has some big issues and requires some fancy async work I haven't fully created.
The high res versions make it obvious that you've used circles, not squares. Good to know, I might build that into my generator as an option (EDIT: Done, also added rotation which can make things look a bit cooler). Your prints look great! Thank you for sharing all the resources as well.
Continuous 1D automata also look neat, I might take a crack at adding them to my generator (though I'd probably write a separate script for that to keep things from getting too convoluted).
With regard to the license: I would've used the same license for my generator (because I don't really want people to make a profit from what's essentially your design work with some automation slapped on by me¹), but apparently CC licenses are not intended for use with software, so I went with the MIT License and a note in the README. Just in case anyone was wondering.
¹ I was a bit worried about whether you'd be okay with that, so I'm glad that you're glad I made this. ;)
To be honest I don't know what that is so odds are no. I't simply Processing 3.4 and everything that environment provides. Processing can be downloaded here and I linked to the github with my code on it in the description of the YouTube video, if you want to check out how it works :) Hope that helped!
/u/BlobbyMcBlobber commented the exact same observation on the original post... I feel like I also used to get the same thing when falling asleep but not so much anymore. Since neural activity and cellular automata (see neuronal avalanches) share a lot of characteristics would be interested in what the particular process at play is here.
Ah stack vs heap, such a huge topic. I could try to explain it but it wouldn't be the best explanation: try this stack overflow explanation for the differences between stack and heap space, and then this Java-specific one.
Basically you just want to stop dynamically allocating memory in your game loop. You can do this by creating your Vectors before the game loop, and then just passing them in each frame rather than recreating them.
Also I was playing around with your game last night; I can place blocks over the acid and remove some of the acid (but not all; if I create then destroy, some acid remains). I can repeat until the acid is gone. Is this intended?
You mentioned the book by Ilachinski in another comment. It looks good at a glance. I also recommend Delorme and Mazoyer (editors). I don't expect you to get much out of Wolfram.
Well... A lot of areas, actually. The main branch of mathematics that studies CA is called Complex/Dynamic systems, it focuses on the idea of interactions between certain systems and that's what gives us a framework around "rules of CA", I recommend the resources of the Sant Fe Institute along with this book there are some other math areas important to the subject, the key one is just discrete math, so you can get along the idea of recurrence, but it seems like you have some good programming background so you've probably taken a course on the subject already.