Difference between revisions of "Articles"

From RogueBasin
Jump to navigation Jump to search
(→‎Line of sight, field of vision: Added a link to feld of view article I'm writing)
 
(159 intermediate revisions by 79 users not shown)
Line 6: Line 6:
* [[Roguelike Dev FAQ]]
* [[Roguelike Dev FAQ]]
* [[How to Write a Roguelike in 15 Steps]]
* [[How to Write a Roguelike in 15 Steps]]
* [https://www.gridsagegames.com/blog/2018/10/how-to-make-a-roguelike/ How to Make a Roguelike]
* [[7DRL]]
* [[7DRL]]
* [[Motivation]]
* [[Motivation]]
* [[Open Source]]
* [[Open Source]]
* [http://alun.myftp.org/Appz/DynamicWorldDesign.xps Dynamic World Design (XPS doc)]
* [http://alun.myftp.org/Appz/MMOGameBalanceIssues.xps MMO Game balance issues (XPS doc)]


=== Fundamentals ===
=== Fundamentals ===
Line 26: Line 29:
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.
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]]
* [[Rewrite]]
* [[Bug Report]]
* [[Bug]] and [[Bug Report]]
* [[RFE]]
* [[RFE]]


===Game modification===
===Game modification===
* [[Translation]]
* [[Translation]]
* [[Localization Project]]


=== Communities ===
=== Communities ===
* [[rgrd]]
* [[rgrd]]
* The [http://www.gpwiki.org Game Programming Wiki]
* [http://wiki.gamedev.net/ Game Programming Wiki]
* [[rgrd chatroom]]


==Design==
==Design==
===General===
* [[Alternatives to Permadeath]]
* [[Aspects of playing]]
* [[Aspects of playing]]
* [[Fun Factor]]
* [[Fun Factor]]
* [[Power Curve]]
* [[Power Curve]]
* [[Quests in Roguelikes]]
* [[RL Terrain]]
* [[Religious Constraints (Rules)]]
* [[Roguelike Alphabet]]
* [[Spatial Consistency]]
* [[The Role of Hunger]]
* [[The Role of Hunger]]
* [[Alternatives to Permadeath]]
* [[Third dimension in an ASCII-based roguelike]]
* [[Third dimension in an ASCII-based roguelike]]
* [[Time Systems]]
* [[Time Systems]]
* [[What a RL should be]]
* [[What a RL should be]]
* [[Roguelike Alphabet]]
* [[Spatial Consistency]]


===Setting, story, and mood===
===Combat===
* '''[[Theme]]'''
* [[Implicit Facing]]
* [[Roguelike Themes]]
* [[Interesting Critical Hits]]
* [[Creating a Story]]
* [[Monster attacks]]
* [[Horror in Roguelike Games]]
* [[Horror1|Horror in Roguelike Games, Part I : Gore]]
* [[Roguelike Mood]]
* [[Big List of RPG Plots]]
 
===Roleplaying===
* [[Quests in Roguelikes]]


===Dungeon features, terrain===
===Dungeons===
* [[Basic BSP Dungeon generation]]
* [[Basic directional 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
* [[Dungeon persistence]]
* [[Dungeon persistence]]
* [[RL Terrain]]
* [http://ancardia.wikia.com/wiki/Dungeon_Features List of dungeon features] from the [[ADOM]] wiki.
* [http://crawl.chaosforge.org/Dungeon_features List of dungeon features] from the [[Crawl]] wiki.
* [https://nethackwiki.com/wiki/Category:Dungeon_features List of dungeon features] from the [[NetHack]] wiki.
* [[Template Dungeon themeing/generation]]
* [http://roguelikedeveloper.blogspot.com/2007/11/unangband-dungeon-generation-part-one.html Unangband Dungeon Generation]


===Combat===
===Interface===
* '''[[Monster attacks]]'''
* [[Icons in Roguelikes]]
* [[Implicit Facing]]
* [http://www.gridsagegames.com/blog/2015/10/morgue-files/ Morgue files], from [[Cogmind]]
* [[Preferred Key Controls]]
* [[Roguelike Interface]]
* [[User interface features]]
* [[ASCII-Render Tree for Layouting in Dart]]


===Magic===
===Magic===
* [http://roguelikedeveloper.blogspot.com/2008/05/unangband-magic-system-part-one.html Designing a Magic System]
* [[Magic]]
* [[Magic]]
* [[Magic systems]]
* [[Magic systems]]
Line 74: Line 88:
* [[The Gramarye A Magic System for FUDGE]]
* [[The Gramarye A Magic System for FUDGE]]


===Religion===
===Setting, story, and mood===
* [[Religious Constraints (Rules)]]
* [[Big List of RPG Plots]]
 
* [[Creating a Story]]
===Interface===
* [[Horror in Roguelike Games]]
* '''[[PreferredKeyControls]]'''
* [[Horror1|Horror in Roguelike Games, Part I : Gore]]
* '''[[User interface features]]'''
* [[Roguelike Mood]]
* [[Icons in Roguelikes]]
* [[Roguelike Themes]]
* [[Roguelike Interface]]
* [[Theme]]


===Game ideas===
===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:
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:
* [[Fire Brigade RL]] by Antonie
* [[GalaxyRL]] by tongHoAnh
* [http://groups.google.com/group/rec.games.roguelike.development/browse_thread/thread/35a94c69af62ac95?fwc=1 God's 7DRL]
* [[Magic Tower]]
* [[Magic Tower]]
* [[Magical Dungeon]] by Patashu
* [[Modern Dungeon Exploration]]
* [[Modern Dungeon Exploration]]
* [[Murder Mystery RL]] by Shedletsky
* [[OrcRL]] by DrGong
* [[Poisoned Character Roguelike]]
* [[Roguelike DM]] by [[Timothy Pruett]]
* [[Roguelike DM]] by [[Timothy Pruett]]
* [[Magical Dungeon]] by Patashu
* [[Shopkeeper RL]] by Antonie
* [[GalaxyRL]] by tongHoAnh
* [[Time-gate roguelike]] by anchor0057
* [[Time-gate roguelike]] by anchor0057
* [[Murder Mystery RL]] by Shedletsky
* [[TraderRL]] by alsagoz
* [[World of Rogue]] by [[Gamer_2k4]]
* [[World of Rogue]] by [[Gamer_2k4]]
* [[Shopkeeper RL]] by Antonie
* [[Fire Brigade RL]] by Antonie
* [[TraderRL]] by alsagoz
* [[OrcRL]] by DrGong


==Implementation==
==Implementation==
* [[Complete Roguelike Tutorial, using python+libtcod]]
* [[Roguelike Tutorial, using Lua+libtcod]]
* [https://programmingbymoonlight.com/roguelike-intro/ New Roguelike Tutorial, using Lua+Gideros Mobile]
* [[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]]
* [[Things which are hard to code]]
* [[Save Files]]
* [[Portability Issues]]
* [[Ssh server]]
 


=== Programming languages ===
=== Programming languages ===
The best language for your roguelike is the one you know well (or want to learn).
RogueBasin has articles about these [[Programming Language|programming 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).
 
* [[BASIC]]
* [[C]]
* [[C]]
* [[C_Sharp|C#]]
* [[C_Sharp|C#]]
* [[Common Lisp]]
* [[Cpp|C++]]
* [[Cpp|C++]]
* [[D]]
* [[Fortran]]
* [[FreeBasic]]
* [[FreePascal]]
* [[FreePascal]]
* [[Haskell]]
* [[JavaScript]]
* [[Java]]
* [[Java]]
* [[Lua]]
* [[Python]]
* [[Python]]
* [[Ruby]]
* [[Rust]]


=== Portability ===
=== Portability ===
Line 117: Line 153:
* [[Windows]]
* [[Windows]]
* [[Linux]]
* [[Linux]]
* [[Mac]]
* [[Mac OS|Mac]]
* [[Unicode]]
* [[Unicode]]
* [[Output libraries]]
* [[Filesystem hierarchy standard for game developers]]


=== Extensibility ===
=== Extensibility ===
Line 124: Line 162:
* [[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 ===
* [[Abstract Dungeons]]
* [[Basic BSP Dungeon generation]]
* [[Cellular Automata Method for Generating Random Cave-Like Levels]]
* [[Cellular Automata Method for Generating Random Cave-Like Levels]]
* [[CreatingAForest]]
* [[CreatingAForest|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 builder written in Python]]
* [[Data structures for the map]]
* [[A Simple Dungeon Generator for Python 2 or 3]]
* [[Dungeon-Building Algorithm]]
* [[Grid Based Dungeon Generator]]
* [[Irregular Shaped Rooms]]
* [http://www.evilscience.co.uk/?p=53 Island and labyrinth map generating algorithm]
* [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 Voronoi 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.
* [[Winding ways]]
* [[Simple Rogue levels]]
* [[Simple Rogue levels in Dart]]
* [[Random Zone Generation]]
* [http://www.evilscience.co.uk/?p=553 C# implementation of simple map builder]
* [[Random Walk Cave Generation]]
* [[Camera View, Rotate, Trim and Pad a Map in Dart]]
* See also: [[:Category:WorldGeneration]]
* See also: [[:Category:WorldGeneration]]


===Combat===
===Combat===
* [[Simple Combat in the Dungeon]]
* [[Simple Combat in the Dungeon]]
* [[Thoughts on Combat Models]]
* [[Two-Key Targeting]]


===AI===
===AI===
* [[A Better Monster AI]]
* [[A Better Monster AI]]
* [[Complex NPC Interaction]]
* [[Complex NPC Interaction]]
* [[Variety in NPC behavior]]
* [http://roguelikedeveloper.blogspot.com/2007/10/unangband-monster-ai-part-one-history.html Emergent Behaviour in Unangband Monster AI]
* [[Implementing interesting townsfolk AI]]
* [[Implementing interesting townsfolk AI]]
* [[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]]
* [[Ratio AI]]
* [[Ratio AI]]
* [[Roguelike AI - Doing it the generic way]]
* [[Roguelike AI - Doing it the generic way]]
* [[Roguelike Integlligence - Evolving State Machine AIs]]
* [[Roguelike Intelligence|Roguelike Intelligence series of articles]]
* [[Roguelike Intelligence - Displaced Actions]]
* [[Simple way to prevent jams of monsters with A*]]
* [[Roguelike Intelligence - Genetic Algorithms and Evolving State Machine AIs]]
* [[Roguelike Intelligence - Intrinsic Information and State Machine AIs]]
* [[Roguelike Intelligence - Stateless AIs]]
* [[Tracking by Scent and Sound]]
* [[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)
* [[The Incredible Power of Dijkstra Maps]]
* [[Dijkstra Maps Visualized]]
* [[Dijkstra Map of Generic Map in Dart]]
* [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===
* [[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.
* [[Line of Sight]]
* [[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.
* [[Spiral Path FOV]]
* [[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.
* [[Ray-Ttracing Field-Of-View Demo]]
* [http://www.evilscience.co.uk/?p=225 C# implementation of field of vision using recursive shadow casting]
* [[A Bucket Of LOS]]
* [https://gist.github.com/zloedi/9551625 Grid based shadow casting / field of vision]
* [[An Efficient Observation Algorithm]]
* [[Computing LOS for Large Areas]]
* [[Extremely fast simplified LOS]]
* [[FOV using recursive shadowcasting]]
* [[FOV using recursive shadowcasting - improved]]
* [[Isaac s fast beamcasting LOS]]
* [[LOS by Odd]]
* [[Line of Sight - Tobias Downer]]
* [[Simple Line of Sight]]
* [[Breshenham's Line Algorithm]]
* [[Mutual Visibility Field Of View]]
* [[Precise Permissive Field of View]]


===Magic===
===Magic===
* [http://roguelikedeveloper.blogspot.com/2008/05/unangband-magic-system-part-one.html Designing a Magic System]
* [[Programming Roguelike Magic]]
* [[Programming Roguelike Magic]]
* [[Representing Magick Skills]]
* [[Representing Magic Skills]]


===Graphics===
===Graphics===
* [[Finding graphical tiles]]
* [[Finding graphical tiles]]
* [[Inspired Art]]
* [[Use of color]]


===Sound===
===Sound===
* [[Finding or Creating Sound and Music]]
* [[Implementing sound in C and C Plus Plus|Implementing sound in C and C++]]
* [[Sound and Music]]
* [[Sound and Music]]


===Time management===
===Time management===
* [[An elegant time-management system for roguelikes]]
* [[An elegant time-management system for roguelikes]]
* [[A priority queue based turn scheduling system]]
* [[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 generation]]
* [[Random number generator]]
* [[Weighted random generator]]
* [[Scrolling map]]
* [[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===
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==
==Game reviews==
Line 197: Line 280:
* See: [[:Category:Reviews]]
* See: [[:Category:Reviews]]


[[category:main]]
 
== Other ==
* [http://www.roguetemple.com/articles/increasing-challenge-in-roguelikes/ Increasing Challenge in Roguelikes]
* [http://www.roguetemple.com/articles/stat-balancing-in-roguelikes/ Stat Balancing in Roguelikes]
 
The original Dungeondweller articles are archived at [http://web.archive.org/web/20060114055601/http://roguelikedevelopment.org/].  Please do not move them to RogueBasin without permission from the original author.
 
There are more articles at [http://arns.freeservers.com/workshop.html].  Most of these are duplicates of articles here.
 
[[Category:Browse]]

Latest revision as of 13:50, 3 September 2024

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

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.

Game modification

Communities

Design

General

Combat

Dungeons

Interface

Magic

Setting, story, and mood

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:

Implementation


Programming languages

RogueBasin has articles about these programming 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

Map

Combat

AI

Line of sight, field of vision

Magic

Graphics

Sound

Time management

Useful algorithms and code

Java Roguelike Development Guide

A list of articles specific to Java roguelike development

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.