This page is intended to serve as a repository for information pertaining to the Accidental engine, a Lua-scriptable platform for demonstrating concepts and techniques for random generation of levels and dungeons. It is also intended to be a source for all things randomly generated, Accidental Engine based or otherwise, and most of the concepts discussed in the Articles section can be applied to any tile-based framework in general.
If you've ever spent serious time playing old classic games such as Nethack, Mines of Moria and Angband (the so-called Roguelikes, for their shared ancestor, Rogue), or newer classics such as Diablo and Diablo 2 (Blizzard) then you know how much fun a randomly generated world populated by randomly generated objects can be.
Sections:
Okay, my host for the old Golem page (where the binary was hosted) has vanished, but I have found a new home. You can now download the Accidental Engine binary as well as all the scripts for the articles written thus far here. It's a .ZIP containing all the data and scripts as well as executables for both windows and Linux. There may or may not be a resource de-allocation bug at shutdown. I am yet in the process of trying to track it down.
There have not been any updates to this page in a long time, and for that I apologize. I have had just too many things on my plate for several months now, mostly in real life stuff, so I have not had much time to work on the number of articles I have sitting in my ideas wiki. I've also been meaning to tidy up the accidental source for release, as well as to start on the documentation. Those are projects that are still in the queue, and hopefully as things start to settle down (if they ever do) I can get things going again.
In the meantime, Merry Christmas and have a good holidays.
I've uploaded the binary package. You can get it here.
I've got a new version of the binary, I'll get it uploaded later tonight. I've decided to encapsulate both versions (Windows and Linux) into a single archive. The binary has been updated with some code necessary for my latest article, Some Uses of Noise and Turbulence, which deals with using Perlin noise to noisify or perturb arbitrary patterns or functions.
Okay, I got the Release build for the Windows binary uploaded. Sorry for the month long delay; it's been a pretty busy month, and I haven't really gotten much at all accomplished as far as programming goes. I'll get the Linux binary (and the source, I guess) uploaded soon; not now, because I'm tired and ready to go to bed. I may just eliminate dual packages and instead put both binary exes into the same zipfile for download. It'll make it easier, and use less webspace.
I'm still fudging around with ideas for another article, but all things considered it may be a little while before I can get to it.
Wow, long time since the last update.
First of all, I apologize for the broken Accidental Engine binary links. I accidentally uploaded Debug versions of the binaries instead of Release versions, thus unnecessarily bloating the download (and consequently pissing off the host of the site where the downloads were placed). I'll try to get the proper Release versions back up this week. I still have ideas in the pipe for future articles, but I've got a lot I'm currently working on right now so it might be a little while before they're finished. I'm currently in the process of coding a quick text-based adventure for April's coding challenge, and I've been doing work on the Golem3D project as well. So hopefully I'll be able to fit another article or two somewhere in there.
Okay, I've finished a first draft of the tutorial dealing with cave generation using accretion fractal techniques. The article can be found here. Enjoy, and if you have any feedback please don't be afraid to email me.
Uploaded a screenshot showing a level generated using the accretion-fractal technique for which I am currently writing scripts for an upcoming article. The fractal is generated by 'growing' a structure of connected circles. After the fractal is grown, the circles are converted to fields in a manner similar to a 2D version of meta-spheres (aka blobby objects), and a threshold boundary is traced to delineate walls from open floor. Field strength below a certain threshold means a tile is walled; above the threshold it is open. You can check out the screenshot here. The scripts are pretty much complete; I just need to do cleanup and write a short bit of text for the article.
Wow, a whole month since last update. Sheesh, I'm lazy.
Anyway, I've uploaded binary versions of the latest build for both Windows and Linux. Major changes include the addition of user-interface elements (buttons) and the addition of a drop-down console that can be used to execute Lua code. Press ESC during play to toggle the console. It is no longer necessary to edit the startup.lua script and re-start the engine in order to change the map; now, it is simple to open the console and execute the new script using the dofile() function. The terrain engine has been redone to use alpha-blended terrain types, rather than using terrain with pre-generated transition tiles as in the previous, so the appearance of the engine in action is considerably different. As well, an initial version of the Ashlands tileset (featured in the most recent screenshot) has been included.
I am hoping that too many bugs do not crop up in this release, as I am really getting tired of hacking the engine code. I want to get back to writing the articles, which I postponed until all changes to the interface have been finalized. This release changed a few things, and I modified the existing scripts (for the mazes tute, and for Squint's article on using fractals) to take the changes into account. They are packaged with the binaries, and should run just fine now on the updated engine.
If you run into any problems with this release, feel free to e-mail me.
Working on the site some more. Created the Screenshot Archive page to hold screenies. I'm still working on testing some things and fixing some bugs. I've got the console implemented; it's a simple half-transparent black overlay with white text. The console currently hooks into the Lua script interface, so any commands and functions you can call from a map script you can also call from the console. Makes it easier to load/re-load scripts and test out little things. The console is pretty crude, and doesn't currently allow you to scroll up to read older text, but it works well enough.
Two days before vacation, and my mind has already partially shut down. The next couple of days at work are going to be an agonizing hell, I'm afraid. Ah, well...
Well, things just never really work out the way you want them to. I'd meant to upload a new version of Accidental over the Thanksgiving holiday, then work on finishing the site and fixing the existing scripts/tutorials to take into account the changes. Didn't work that way. Got quite a few major revisions still in the works, including a drop-down/overlay console through which you can execute commands such as to load maps and place objects, thus removing the necessity of having to restart the app everytime you edit your map script. Little things like that. I'm currently in the process of tweaking the console and testing the various changes, so I hope to have things done soon. My apologies for the delay. I want to get this done so I can get back to writing up the tutorials, since that is where my interests in this project really lie. Got lots of stuff I want to do. On that token, I've uploaded a new screenshot of a lava/ashlands tileset in the works. Still needs quite a bit of work, but it's getting there. Take a look at it on the right. (Screenshot archives coming soon, as soon as I get off my lazy butt.)
If I don't get things fixed up and uploaded this week, it'll have to wait until after Christmas since I am flying home (Wyoming) for the holiday. Yay!
I've made a few fairly large-scale changes to the engine, most especially in the way tiles are drawn. Instead of individual 64x32 tiles chosen at random from a set, I basically take one large meta-tile and repeat it over 8x8 chunks of map tiles. I also switched to using separate greyscale alpha textures to implement the transitions between terrain types, layering them at run-time. This greatly eases the burden of tileset creation, and the technique of tiling one large texture across groups of tiles has the added effect of drastically reducing the appearance of repetition in the tiles. Check the latest screenshot for a shot of what it looks like.
I'm testing out the changes to the engine now, and ironing out a few bugs. I hope to try to get the latest versions uploaded tomorrow; the changes will necessitate a few minor changes to existing tutorial scripts, which is why I have held off on releasing any more articles while I implement these changes and polish the engine some, since I don't really want to have to continuously modify existing stuff every time I make changes.
Got the basic structure of the page in place, and I'm currently working on the content. Thanks to evolutional for kindly letting a CSS noob borrow some things from his homepage. The first article up is contributed by Andy "Squint" Newman, and can be found here. Engine docs and the original maze tutorial still to come. Check the links on the right for Linux and Window binary packages.
Day one. Site is still under construction, but the basic layout and styles are mostly in place. Still working on the layout for articles, and the conversion of the first in the set.