Macaw - Noise in GameMaker
A downloadable tool
If you've spent a long enough time in game dev, you've probably been interested in generating various kinds of noise at least a few times. It's useful for quite a number of things:
- Anything to do with procedural generation
- Terrain generation
- Texture generation
- Actual clouds
- Probably a ton of things I haven't thought of yet
Here's a nice little system I wrote for doing exactly that!
Features
- Fractal and Perlin noise
- Control the number of octaves/smoothness used in generation
- Control the amplitude of the noise (eg if you're generating a sprite you probably want the noise to have a range between 0 and 255)
- Native GML (cross-platform), a shader (cross-platform), or via a DLL (Windows only)
- Helper function to convert the raw noise data to a sprite (see screenshots)
- Helper function to convert the raw noise data to a vertex buffer (this is probably not very useful to you)
Performance
The shader versions are cross-platform and very fast. On my 3GB GTX 1060, large 2K and 4K noise textures can be computed in some tens of milliseconds.
Regular noise:
Perlin noise stacks up similarly:
The CPU code versions are a tad slower. The native GML implementation performs reasonably well on small scales. Here are some numbers for the fractal noise:
- 64x64: 40 ms
- 256x256: 700 ms
- 2048x2048: 48,500 ms ("reasonably" is relative)
Obviously, the YYC improves things rather dramatically.
And the DLL version, which lives in the nether realm of C++, blows GML out of the water.
For small noise-related tasks the native GML version is perfectly fine, although if you're doing anything exotic you probably want to use the DLL.
If you want to use the DLL on something that isn't Windows, let me know and I'll see if I can work something out. I might demand money or something.
Documentation
is available here.
Price
As usual, the asset is free as-is. I'll fix simple or game-breaking bugs but more involved support requires payment via either Itch or Patreon. I get the final say in what constitutes "game-breaking."
Credits
- The demo makes use of Emu (also by me), which uses Scribble by @jujuadams
- Macaw by Lars Meiertoberens from NounProject.com
Status | Released |
Category | Tool |
Rating | Rated 5.0 out of 5 stars (1 total ratings) |
Author | Dragonite |
Made with | GameMaker |
Tags | GameMaker, noise, perlin-noise, randomness |
Average session | A few minutes |
Download
Click download now to get access to the following files:
Development log
- Faster shader noise, and other noise typesFeb 23, 2024
- Small fix for "seams" appearing in generated noiseFeb 11, 2022
Comments
Log in with itch.io to leave a comment.
Very amazing, but I had a question, how could I use offset?