Welcome to the Procedural Content Generation in Games book. This is, as far as we know, the first textbook about procedural content generation in games. As far as we know it is also the first book-length overview of the research field. We hope you find it useful, whether you are studying in a course, on your own, or are a researcher.
We wrote this book for two reasons. The first reason was that all three of us were doing research on PCG in games, and we wanted a good overview. As we come from somewhat different methodological backgrounds, we realized that many researchers did not know about methods that had been developed in other communities. For example, researchers using logic programming and those using evolutionary computation might not know that the other type of algorithms was applicable to the same problem; and researchers coming from computer graphics might not even know that artificial intelligence methods are being used for PCG problems. As PCG in games has just recently started to be seen as its own research field, this was not surprising, but pointed to the need for a book such as this one.
The second reason was that we were teaching a course on PCG (in fact, entitled simply “Procedural Content Generation in Games”) at the IT University of Copenhagen, where at the time the three of us were faculty members. When this course was started in 2010, it was probably the first of its kind in the world. Naturally, there was no textbook to teach it from, so we assembled a syllabus out of academic papers, mostly recent ones. As we taught the course in subsequent years, the syllabus matured, and we felt that we were ready to turn the content of our lectures into a textbook.
A curated list of roguelike development resources.
A collection of tools and algorithms for developing traditional roguelike games. Implements features such as field-of-view, pathfinding, and a tile-based terminal emulator. The documentation exists in the repository but you can read it online here: https://libtcod.readthedocs.io/en/latest/
A collection of tools and algorithms for developing traditional roguelikes, such as field-of-view, pathfinding, and a tile-based terminal emulator. This version is implemented in Python 3.
MEALPY is the largest python library in the world for most of the cutting-edge meta-heuristic algorithms (nature-inspired algorithms, black-box optimization, global search optimizers, iterative learning algorithms, continuous optimization, derivative free optimization, gradient free optimization, zeroth order optimization, stochastic search optimization, random search optimization). These algorithms belong to population-based algorithms (PMA), which are the most popular algorithms in the field of approximate optimization.
A curated list of cryptography resources and links.
Many common and unusual algorithms, implemented in Python as learning exercises. If you want to get a sense of what, say, data structures or fuzzy logic would look like in Python, this is a good place to start.
A collection of (mostly) technical things every software developer should know about.
In this article, I will take you through an explanation and implementation of all Machine Learning algorithms with Python programming language.
Machine learning algorithms are a set of instructions for a computer on how to interact with, manipulate, and transform data. There are so many types of machine learning algorithms. Selecting the right algorithm is both science and art.
Program made with Pygame for visualizing sorting algorithms. Has a collection of implemented sorting algorithms which are useful to refer to, if nothing else.
How to solve the 3x3 Rubik's Cube. Go back a couple of pages and you'll find the algorithms for the other variants.
CyberChef is a simple, intuitive web app for carrying out all manner of "cyber" operations within a web browser. These operations include simple encoding like XOR or Base64, more complex encryption like AES, DES and Blowfish, creating binary and hexdumps, compression and decompression of data, calculating hashes and checksums, IPv6 and X.509 parsing, changing character encodings, and much more.
The tool is designed to enable both technical and non-technical analysts to manipulate data in complex ways without having to deal with complex tools or algorithms. It was conceived, designed, built and incrementally improved by an analyst in their 10% innovation time over several years.
Online copy: https://gchq.github.io/CyberChef/
GNU Zile is a text editor development kit, so that you can (relatively) quickly develop your own ideal text editor without reinventing the wheel for many of the common algorithms and data-structures needed to do so.
It comes with an example implementation of a lightweight Emacs clone, called Zemacs. Every Emacs user should feel at home with Zemacs. Zemacs is aimed at small footprint systems and quick editing sessions (it starts up and shuts down instantly).
Zile is a collection of algorithms and data-structures that currently support all basic Emacs-like editing features: it is 8-bit clean (though Unicode support is not ready yet), and the number of editing buffers and windows is only limited by available memoryand screen space respectively. Registers, minibuffer completion and auto fill are available.
Fibonacci Hashing: The Optimization that the World Forgot (or: a Better Alternative to Integer Modulo)
David MacKay has put the textbook he wrote online for everyone to download in a variety of formats. If you find it useful, consider buying a copy.
A free, online book on the C programming language. There is also a downloadable .pdf file of the contents of the e-book so you don't have to try to archive the whole website.
A website about randomness, (pseudo-)random number generators, and cryptographic entropy. Contains discussions of these topics as well as some online RNGs to play with.
A list of tricks and methods for optimizing code written for the ATmel microcontrollers using GNU GCC.