Articles
This is a listing of articles, arranged by subject.
Articles under "design" will help the developer make decisions about gameplay. Articles under "implementation" will help with algorithm design, and offer various methods of implementing features. Headings are arranged in a general chronological order of development. Large lists of ideas (items, spells, themes, etc.) are in bold.
Development
Fundamentals
- What a roguelike is
- Dungeon
- Items
- Monster
- Character
- Race
- Class
- Skill
- Permadeath
- Shops
- Random generation
Project management
Roguelike developments are complicated projects to handle; if you have weak goals, the project will slip out of your control and its success may be compromised.
- Rewrite
- Bug and Bug Report
- RFE
Game modification
Communities
Design
- Aspects of playing
- Fun Factor
- Power Curve
- The Role of Hunger
- Alternatives to Permadeath
- Third dimension in an ASCII-based roguelike
- Time Systems
- What a RL should be
- Roguelike Alphabet
- Spatial Consistency
Setting, story, and mood
- Theme
- Roguelike Themes
- Creating a Story
- Horror in Roguelike Games
- Horror in Roguelike Games, Part I : Gore
- Roguelike Mood
- Big List of RPG Plots
Roleplaying
Dungeon features, terrain
- Dungeon persistence
- RL Terrain
- Unangband Dungeon Generation
- Basic BSP Dungeon generation
- Basic directional dungeon generation
Combat
Magic
Religion
Interface
Game ideas
Ideas for roguelikes are posted regularly on rgrd, but over time are forgotten. In an attempt to preserve the more interesting ideas these pages were created:
- Magic Tower
- Modern Dungeon Exploration
- Roguelike DM by Timothy Pruett
- Magical Dungeon by Patashu
- GalaxyRL by tongHoAnh
- Time-gate roguelike by anchor0057
- Murder Mystery RL by Shedletsky
- World of Rogue by Gamer_2k4
- Shopkeeper RL by Antonie
- Fire Brigade RL by Antonie
- TraderRL by alsagoz
- OrcRL by DrGong
- God's 7DRL
- Poisoned Character Roguelike
Implementation
- Ssh server
- Complete Roguelike Tutorial, using python+libtcod
- Language in Roguelikes
- Things which are hard to code
- Portability Issues
- Code design basics
- Save Files
- FreeBasic: Let's Build a Roguelike: Rick Clark's excellent step-by-step tutorial covering the implementation of a roguelike game. FreeBasic is the programming language used in the tutorial, but the general principles are the same for other languages. As of April 7, 2011, the tutorial is complete.
- New Roguelike Tutorial, using Lua+libtcod
- Beginner's Guide to Roguelikes - a C/C++ focused tutorial for new programmers.
- Ananas aus Caracas: rot.js tutorial
Programming languages
RogueBasin has articles about these languages. That doesn't mean that you can't use other languages. The best language for your roguelike is the one you know well (or want to learn).
Portability
Extensibility
- Roguelike engines
- Info Files
- Info File Variant - Compile-to-Code
- Lua makes info files obsolete
- Entity Component System
- Rule and Event Systems
Map
- Abstract Dungeons
- Basic BSP Dungeon generation
- Cellular Automata Method for Generating Random Cave-Like Levels
- Creating A Forest
- Creating Measurably "Fun" Maps
- Data structures for the map
- Delving a connected cavern
- Designing Flexible, Reusable Algorithms
- Diffusion-limited aggregation
- Dungeon builder written in Python
- Dungeon-Building Algorithm
- Grid Based Dungeon Generator
- Irregular Shaped Rooms
- Island and labyrinth map generating algorithm
- Maze Algorithms
- Simple maze
- Wilderness generation using Vornoi diagrams
- A Python map structure and a simple dungeon generator, part of the python+libtcod tutorial.
- Winding ways
- Simple Rogue levels
- Random Zone Generation
- See also: Category:WorldGeneration
Combat
AI
- A Better Monster AI
- Complex NPC Interaction
- Variety in NPC behavior
- Emergent Behaviour in Unangband Monster AI
- Implementing interesting townsfolk AI
- Need driven AI
- Pathfinding
- Plug-In Monster AI
- Quick Pathfinding in a Dungeon
- Ratio AI
- Roguelike AI - Doing it the generic way
- Roguelike Intelligence series of articles
- Simple way to prevent jams of monsters with A*
- The Incredible Power of Dijkstra Maps
- Tracking by Scent and Sound
- An Alternative Scent Implementation
- Anticipating wall-following pathfinder
- Denizen Herding Behavior
Line of sight, field of vision
- Line of Sight is used to determine when a specific destination square is visible from a source square. This can be used to determine whether a player is visible to a monster, the path an arrow takes to a particular enemy, and as a building block for a field of vision algorithm.
- Field of Vision determines all squares visible from a particular source. This is useful when determining which squares to show a player, what squares are lit up by a light source, etc.
- Using the libtcod library for FOV, and implementing fog-of-war, part of the python+libtcod tutorial.
Magic
Graphics
Sound
Time management
- An elegant time-management system for roguelikes
- A priority queue based turn scheduling system
- A simple turn scheduling system -- Python implementation
Useful algorithms and code
- Compression
- Fractals
- Mersenne twister
- Random name generation
- Random number generator
- Weighted random generator
- Scrolling map
- Line wrapping in C
Java Roguelike Development Guide
A list of articles specific to Java roguelike development
- The Choice of Java
- Java Curses Implementation
- Items in Java
- Java Roguelike Tutorial
- Roguelike Iterative Test-Driven Development in Java
Game reviews
May give some idea of what people like and don't like in other games.
Other
The original Dungeondweller articles are archived at [1]. Please do not move them to RogueBasin without permission from the original author.
There are more articles at [2]. Most of these are duplicates of articles here.