Difference between revisions of "Articles"
m (→Implementation) |
(→Implementation: reapair Link to "Complete Roguelike Tutorial, using python+libtcod") |
||
(43 intermediate revisions by 29 users not shown) | |||
Line 9: | Line 9: | ||
* [[Motivation]] | * [[Motivation]] | ||
* [[Open Source]] | * [[Open Source]] | ||
* [http://alun.myftp.org/Appz/DynamicWorldDesign.xps Dynamic World Design (XPS doc)] | |||
=== Fundamentals === | === Fundamentals === | ||
Line 66: | Line 67: | ||
* [[RL Terrain]] | * [[RL Terrain]] | ||
* [http://roguelikedeveloper.blogspot.com/2007/11/unangband-dungeon-generation-part-one.html Unangband Dungeon Generation] | * [http://roguelikedeveloper.blogspot.com/2007/11/unangband-dungeon-generation-part-one.html Unangband Dungeon Generation] | ||
* [[Brogue]] [https://www.rockpapershotgun.com/2015/07/28/how-do-roguelikes-generate-levels/ dungeon terrain] and [http://brogue.wikia.com/wiki/Level_Generation level] generation | |||
* [[Basic BSP Dungeon generation]] | * [[Basic BSP Dungeon generation]] | ||
* [[Basic directional dungeon generation]] | * [[Basic directional dungeon generation]] | ||
* [[Template Dungeon themeing/generation]] | |||
===Combat=== | ===Combat=== | ||
Line 89: | Line 92: | ||
* [[Icons in Roguelikes]] | * [[Icons in Roguelikes]] | ||
* [[Roguelike Interface]] | * [[Roguelike Interface]] | ||
* [[Cogmind]]'s article about [http://www.gridsagegames.com/blog/2015/10/morgue-files/ morgue files] | |||
===Game ideas=== | ===Game ideas=== | ||
Line 108: | Line 112: | ||
==Implementation== | ==Implementation== | ||
* [[Complete Roguelike Tutorial, using python+libtcod]] | * [[Complete Roguelike Tutorial, using python+libtcod]] | ||
* [[Roguelike Tutorial, using Lua+libtcod]] | |||
* [https://programmingbymoonlight.com/roguelike-intro/ New Roguelike Tutorial, using Lua+Gideros Mobile] | |||
* [http://www.kathekonta.com/rlguide/index.html Beginner's Guide to Roguelikes] - a C/C++ focused tutorial for new programmers. | |||
* [[rot.js tutorial|Ananas aus Caracas: rot.js tutorial]] | |||
* [[Code design basics]] | |||
* [[Portability Issues]] | |||
* [[Things which are hard to code]] | |||
* [[Language in Roguelikes]] | * [[Language in Roguelikes]] | ||
* [[Save Files]] | * [[Save Files]] | ||
* [ | * [[Ssh server]] | ||
=== Programming languages === | === Programming languages === | ||
Line 128: | Line 135: | ||
* [[FreePascal]] | * [[FreePascal]] | ||
* [[Java]] | * [[Java]] | ||
* [[JavaScript]] | |||
* [[Lua]] | |||
* [[Python]] | * [[Python]] | ||
* [[Ruby]] | * [[Ruby]] | ||
* [[Common Lisp]] | * [[Common Lisp]] | ||
* [[Haskell]] | * [[Haskell]] | ||
Line 147: | Line 155: | ||
* [[Info Files]] | * [[Info Files]] | ||
* [[Info File Variant - Compile-to-Code]] | * [[Info File Variant - Compile-to-Code]] | ||
* [[Lua makes info files obsolete]] | |||
* [[Entity Component System]] | |||
* [[Rule and Event Systems]] | |||
=== Map === | === Map === | ||
Line 156: | Line 167: | ||
* [[Data structures for the map]] | * [[Data structures for the map]] | ||
* [[Delving a connected cavern]] | * [[Delving a connected cavern]] | ||
* [[Designing Flexible, Reusable Algorithms]] | |||
* [[Diffusion-limited aggregation]] | * [[Diffusion-limited aggregation]] | ||
* [[Dungeon builder written in Python]] | * [[Dungeon builder written in Python]] | ||
* [[A Simple Dungeon Generator for Python 2 or 3]] | |||
* [[Dungeon-Building Algorithm]] | * [[Dungeon-Building Algorithm]] | ||
* [[Grid Based Dungeon Generator]] | * [[Grid Based Dungeon Generator]] | ||
Line 163: | Line 176: | ||
* [http://www.evilscience.co.uk/?p=53 Island and labyrinth map generating algorithm] | * [http://www.evilscience.co.uk/?p=53 Island and labyrinth map generating algorithm] | ||
* [http://www.astrolog.org/labyrnth/algrithm.htm Maze Algorithms] | * [http://www.astrolog.org/labyrnth/algrithm.htm Maze Algorithms] | ||
* [http://frogasaurus.wordpress.com PHP dungeon generator using tile masks] | |||
* [[Simple maze]] | * [[Simple maze]] | ||
* [http://roguelikedeveloper.blogspot.com/2007/07/wilderness-generation-using-voronoi.html Wilderness generation using Vornoi diagrams] | * [http://roguelikedeveloper.blogspot.com/2007/07/wilderness-generation-using-voronoi.html Wilderness generation using Vornoi diagrams] | ||
* [[Complete Roguelike Tutorial, using python+libtcod, part 2#The Map|A Python map structure]] and [[Complete Roguelike Tutorial, using python+libtcod, part 3|a simple dungeon generator]], part of the python+libtcod tutorial. | * [[Complete Roguelike Tutorial, using python+libtcod, part 2#The Map|A Python map structure]] and [[Complete Roguelike Tutorial, using python+libtcod, part 3|a simple dungeon generator]], part of the python+libtcod tutorial. | ||
* [[Winding ways]] | * [[Winding ways]] | ||
* [[Simple Rogue levels]] | |||
* [[Random Zone Generation]] | |||
* [http://www.evilscience.co.uk/?p=553 C# implementation of simple map builder] | |||
* [[Random Walk Cave Generation]] | |||
* See also: [[:Category:WorldGeneration]] | * See also: [[:Category:WorldGeneration]] | ||
Line 182: | Line 201: | ||
* [[Need driven AI]] | * [[Need driven AI]] | ||
* [[Pathfinding]] | * [[Pathfinding]] | ||
* [[A_Python_3_and_2_Pathfinder_with_Pygame_Example]] | |||
* [[Plug-In Monster AI]] | * [[Plug-In Monster AI]] | ||
* [[Quick Pathfinding in a Dungeon]] | * [[Quick Pathfinding in a Dungeon]] | ||
Line 190: | Line 210: | ||
* [[The Incredible Power of Dijkstra Maps]] | * [[The Incredible Power of Dijkstra Maps]] | ||
* [[Tracking by Scent and Sound]] | * [[Tracking by Scent and Sound]] | ||
* [[An Alternative Scent Implementation]] | |||
* [[Anticipating wall-following pathfinder]] | * [[Anticipating wall-following pathfinder]] | ||
* [[Denizen Herding Behavior]] | |||
* [[Smart searching and Modeling the player with a "heatmap"]](Not finished) | |||
* [[Dijkstra Maps Visualized]] | |||
* [http://web.cs.ucla.edu/~rosen/161/notes/alphabeta.html Minimax decision tree with alpha-beta pruning], a non-[https://www.safaribooksonline.com/library/view/ai-for-game/0596005555/ch11.html rules-based] approach to AI (used by [[Javelin]]) | |||
===Line of sight, field of vision=== | ===Line of sight, field of vision=== | ||
Line 196: | Line 221: | ||
* [[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. | * [[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. | ||
* [[Complete Roguelike Tutorial, using python+libtcod, part 4|Using the libtcod library for FOV, and implementing fog-of-war]], part of the python+libtcod tutorial. | * [[Complete Roguelike Tutorial, using python+libtcod, part 4|Using the libtcod library for FOV, and implementing fog-of-war]], part of the python+libtcod tutorial. | ||
* [http://www.evilscience.co.uk/?p=225 C# implementation of field of vision using recursive shadow casting] | |||
* [https://gist.github.com/zloedi/9551625 Grid based shadow casting / field of vision] | |||
===Magic=== | ===Magic=== | ||
Line 205: | Line 232: | ||
* [[Finding graphical tiles]] | * [[Finding graphical tiles]] | ||
* [[Inspired Art]] | * [[Inspired Art]] | ||
* [[Use of color]] | |||
===Sound=== | ===Sound=== | ||
Line 215: | Line 243: | ||
* [[A priority queue based turn scheduling system]] | * [[A priority queue based turn scheduling system]] | ||
* [[A simple turn scheduling system -- Python implementation]] | * [[A simple turn scheduling system -- Python implementation]] | ||
* [http://nadako.tumblr.com/post/46340820457/turn-based-time-scheduling Energy-based time scheduling implementation] | |||
===Useful algorithms and code=== | ===Useful algorithms and code=== | ||
* [[Compression]] | |||
* [[Fractals]] | * [[Fractals]] | ||
* [[Mersenne twister]] | * [[Mersenne twister]] | ||
* [[Random name generation]] | * [[Random name generation]] | ||
* [[Random number generator]] | * [[Random number generator]] | ||
* [[ | * [[Weighted random generator]] | ||
* [[Scrolling map]] | |||
* [[Line wrapping in C]] | |||
* [[Experience table generator]] | |||
* [[Protecting your story]]: How to distribute your story in the clear in a way that prevents someone snooping your code to read it all (useful mostly for OSS games) | |||
* Brief overview of [[DCSS]]' [http://crawl.develz.org/wordpress/webtiles-architecture webtiles architecture] for online play. | |||
===Java Roguelike Development Guide=== | ===Java Roguelike Development Guide=== | ||
Line 228: | Line 263: | ||
* [[Java Curses Implementation]] | * [[Java Curses Implementation]] | ||
* [[Items in Java]] | * [[Items in Java]] | ||
* [[Java Roguelike Tutorial]] | |||
* [[Roguelike Iterative Test-Driven Development in Java]] | |||
==Game reviews== | ==Game reviews== | ||
Line 244: | Line 281: | ||
There are more articles at [http://arns.freeservers.com/workshop.html]. Most of these are duplicates of articles here. | There are more articles at [http://arns.freeservers.com/workshop.html]. Most of these are duplicates of articles here. | ||
[[ | [[Category:Browse]] |
Revision as of 09:38, 24 April 2017
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
- Roguelike Dev FAQ
- How to Write a Roguelike in 15 Steps
- 7DRL
- Motivation
- Open Source
- Dynamic World Design (XPS doc)
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
- Brogue dungeon terrain and level generation
- Basic BSP Dungeon generation
- Basic directional dungeon generation
- Template Dungeon themeing/generation
Combat
Magic
Religion
Interface
- Preferred Key Controls
- User interface features
- Icons in Roguelikes
- Roguelike Interface
- Cogmind's article about morgue files
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
- Complete Roguelike Tutorial, using python+libtcod
- Roguelike Tutorial, using Lua+libtcod
- New Roguelike Tutorial, using Lua+Gideros Mobile
- Beginner's Guide to Roguelikes - a C/C++ focused tutorial for new programmers.
- Ananas aus Caracas: rot.js tutorial
- Code design basics
- Portability Issues
- Things which are hard to code
- Language in Roguelikes
- Save Files
- Ssh server
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
- A Simple Dungeon Generator for Python 2 or 3
- Dungeon-Building Algorithm
- Grid Based Dungeon Generator
- Irregular Shaped Rooms
- Island and labyrinth map generating algorithm
- Maze Algorithms
- PHP dungeon generator using tile masks
- 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
- C# implementation of simple map builder
- Random Walk Cave 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
- A_Python_3_and_2_Pathfinder_with_Pygame_Example
- 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
- Smart searching and Modeling the player with a "heatmap"(Not finished)
- Dijkstra Maps Visualized
- Minimax decision tree with alpha-beta pruning, a non-rules-based approach to AI (used by Javelin)
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.
- C# implementation of field of vision using recursive shadow casting
- Grid based shadow casting / field of vision
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
- Energy-based time scheduling implementation
Useful algorithms and code
- Compression
- Fractals
- Mersenne twister
- Random name generation
- Random number generator
- Weighted random generator
- Scrolling map
- Line wrapping in C
- Experience table generator
- Protecting your story: How to distribute your story in the clear in a way that prevents someone snooping your code to read it all (useful mostly for OSS games)
- Brief overview of DCSS' webtiles architecture for online play.
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.