Difference between revisions of "Recommended reading"

From RogueBasin
Jump to navigation Jump to search
(Add C++ for Game Programmers)
 
(5 intermediate revisions by 2 users not shown)
Line 15: Line 15:


== AntiPatterns ==
== AntiPatterns ==
William Brown, Raphael Malveau, Hays McCormick and Thomas Mowbray (ISBN 0471197130)
William Brown, Raphael Malveau, Hays McCormick and Thomas Mowbray (ISBN 0471197130)


<blockquote>
<blockquote>
Lists various recognizable ways in which initial poor judgment makes program architecture go wrong in a way that will cause problems later on. This is endemic with game programming, that both deals with very complex domains and often approaches them with relatively little up-front program design.
Lists various recognizable ways in which initial poor judgment makes program architecture go wrong in a way that will cause problems later on. This is endemic with game programming, that both deals with very complex domains and often approaches them with relatively little up-front program design.
[[rsaarelm]]
</blockquote>
== API Design for C++ ==
Martin Reddy (ISBN 0123850037)
<blockquote>
Best practices for making good abstract interfaces in your program. Games are complex enough that putting some internal components behind well-designed interfaces will probably help keep the whole thing manageable.


[[rsaarelm]]
[[rsaarelm]]
Line 60: Line 69:


== The C++ Programming Language ==
== The C++ Programming Language ==
Bjarne Stroustrup (ISBN 0201327554)
Bjarne Stroustrup (ISBN 0321563840)


<blockquote>
<blockquote>
The book on C++ from the creator of the language. Explains the basic language, the Standard Template Library and some best practices. If you want to use C++, you won't figure out this stuff without a book.
The book on C++ from the creator of the language. Explains the basic language, the Standard Template Library and some best practices. If you want to use C++, you won't figure out this stuff without a book.
Make sure to get the new 4th edition, it describes the C++11 version of the language which is significantly different from the older versions.


[[rsaarelm]]
[[rsaarelm]]
Line 221: Line 232:
[[rsaarelm]]
[[rsaarelm]]
</blockquote>
</blockquote>
== Design Patterns of Successful Role-Playing Games ==
Whitson John Kirk III [[http://rpg-design-patterns.speedykitty.com/ online]]
<blockquote>
Somewhat formal theory work for RPG rule systems.
[[rsaarelm]]
</blockquote>
== Playing to Win ==
David Sirlin [[http://www.sirlin.net/ptw online]]
Goes into detail on the mindset of competitive players.


== Rules of Play ==
== Rules of Play ==
Line 276: Line 301:
== Dungeons and Desktops: The History of Computer Role-Playing Games ==
== Dungeons and Desktops: The History of Computer Role-Playing Games ==
Matt Barton (ISBN 1568814119)
Matt Barton (ISBN 1568814119)
== Playing at the World ==
Jon Peterson (ISBN 0615642047)
[[Category:Developing]]

Latest revision as of 13:32, 15 November 2013

Books and articles that might be of use for designing and developing roguelikes.

Development

Books for programming games.

The AI Game Programming Wisdom series

Steve Rabin (ed.), Vol 1: (ISBN 1584500778), Vol 2: (ISBN 1584502894), Vol 3: (ISBN 1584504579), Vol 4: (ISBN 1584505230)

Articles from various authors on different implementation aspects of game artificial intelligence. Much of this can be useful for roguelikes, from pathfinding to managing groups of purposeful computer-controlled NPCs. Artificial Intelligence for Games presents has a good overall view of this stuff.

rsaarelm

AntiPatterns

William Brown, Raphael Malveau, Hays McCormick and Thomas Mowbray (ISBN 0471197130)

Lists various recognizable ways in which initial poor judgment makes program architecture go wrong in a way that will cause problems later on. This is endemic with game programming, that both deals with very complex domains and often approaches them with relatively little up-front program design.

rsaarelm

API Design for C++

Martin Reddy (ISBN 0123850037)

Best practices for making good abstract interfaces in your program. Games are complex enough that putting some internal components behind well-designed interfaces will probably help keep the whole thing manageable.

rsaarelm

The Architecture of Open Source Applications

Amy Brown and Greg Wilson (eds.) (ISBN 1257638017) [online]

Case studies on structuring large, real-world applications. Unfortunately no NetHack, but there is a chapter on Battle for Wesnoth that should be of interest.

rsaarelm

Artificial Intelligence for Games

Ian Millington (ISBN 0124977820)

Very comprehensive look on various AI techniques for games, such as pathfinding, tactical decision making and agent communication. Also discussing support architecture for game AI and relating the AI to wider game design concerns.

rsaarelm

The C Programming Language

Brian Kernighan and Dennis Ritchie (ISBN 0131103628)

The definitive book on C programming. Read this if you want to program entire games or component code called from a higher level language in C.

rsaarelm

C++ for Game Programmers

Noel Llopis (ISBN 1584502274)

A tour of the various concerns for game development in C++ for people who already know the language. Seems quite competent and influenced by real-world gamedev. Somewhat focused on resource-tight and hard-real-time domains one encounters with console action game programming more than with roguelikes. Still worth reading through if you write in C++.

rsaarelm

The C++ Programming Language

Bjarne Stroustrup (ISBN 0321563840)

The book on C++ from the creator of the language. Explains the basic language, the Standard Template Library and some best practices. If you want to use C++, you won't figure out this stuff without a book.

Make sure to get the new 4th edition, it describes the C++11 version of the language which is significantly different from the older versions.

rsaarelm

Code Complete

Steve McConnell (ISBN 0735619670)

Classic compendium of practical programming advice.

rsaarelm

Design Patterns

Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (ISBN 0201633612)

Introduces patterns, standard solutions to recurring problems that are nevertheless too high-level to be embedded out of sight into libraries. The book is mostly just a catalog of common patterns, and the descriptions for most of them can be found on the web nowadays. It's still good to be aware of this, game programming has its own set of recurring patterns.

rsaarelm

Effective C++

Scott Meyers (ISBN 0321334876)

Best practices for C++. Given the amount of nasty gothcas in the language, you probably want to read this as well as a basic book.

rsaarelm

Game Coding Complete

Mike McShaffry (ISBN 1584506806)

A very comprehensive work on how to program AAA games, from an author who worked on Origin's Ultima games and on Thief: Deadly Shadows. Assumes a working knowledge of C++ and dives straight into how you set up the actual game program on Windows, with lots of tricks of the trade from real projects. The explanation on how to set up the game engine using process, actor and event classes and how to program input devices and user interfaces are very useful for roguelike development. Chapters about managing caches for massive asset libraries and working with complex 3D graphics less so.

rsaarelm

Game Engine Architecture

Jason Gregory (ISBN 1568814135)

Covers much the same ground as Game Coding Complete. Describes the basics of a professional C++ game project, tools for debugging and error handling, and setting up the overall program architecture. Some chapters on 3D rendering and real-time physics are less relevant to roguelikes. The part on implementing complex game logic is maybe a bit less in-depth than the one in Game Coding Complete, while the 3D and physics aspects are handled in great detail.

rsaarelm

The Game Programming Gems series

Various authors, Vol 1: (ISBN 1584500492) Vol 2: (ISBN 1584500549) Vol 3: (ISBN 1584502339) Vol 4: (ISBN 1584502959) Vol 5: (ISBN 1584503521) Vol 6: (ISBN 1584504501) Vol 7: (ISBN 1584505273) Vol 8: (ISBN 1584507020)

Collections of short articles on doing some specific neat thing in a game, split into general programming techniques and subfields like graphics and audio. The general programming, scripting and AI advice can be quite useful.

rsaarelm

Introduction to Algorithms

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein (ISBN 0262033844)

All that data structure stuff you end up needing for pathfinding and data handling in one intimidating package. Also tells you what the big-O notation is about, so you can nod sagely when people talk about some algorithm being O(n^3) or something.

rsaarelm

Modern C++ Design

Andrei Alexandrescu (ISBN 0201704315)

Advanced C++ tricks using template metaprogramming and similar forbidden techniques.

rsaarelm

The Pragmatic Programmer

Andrew Hunt and Dave Thomas (ISBN 020161622X)

A collection of advice for programming and various related activities, such as documenting, collecting requirements, debugging and figuring out just how to go from a real-world idea into a realizable program.

rsaarelm

Refactoring

Martin Fowler (ISBN 0201485672)

Techniques to improve the program structure of a project without ending up breaking or having to rewrite everything.

rsaarelm

Design

Books for designing game contents and interfaces.

The Art of Computer Game Design

Chris Crawford (ISBN 0881341177)

This thing is from 1984, but surprisingly insightful given its age. Crawford is always intent on pushing the envelope on games. The early age also makes the thing really focus on core elements of gameplay, since neither shiny multimedia nor extravagant simulation was possible back then.

rsaarelm

The Art of Game Design: A Book of Lenses

Jesse Schell (ISBN 0123694965)

Designing Virtual Worlds

Richard Bartle (ISBN 0131018167)

It's about multiplayer games, like MMORPGs and MUDs, since there doesn't seem to be much any books on developing systems and settings for single-player CRPGs. Still, there's a lot of stuff here about setting up the basic assumptions of the game world and thinking about what the players might expect to want to get from it.

rsaarelm

Envisioning Information

Edward Tufte (ISBN 0961392118)

Sequel to The Visual Display of Quantitative Information, more tricks for visualizing lots of information with graphics.

rsaarelm

Game Architecture and Design

Andrew Rollings and David Morris (ISBN 0735713634)

Has sections on game design, project management and programming, but mostly worth it for the design part. This was one of the first good game development books back around 2000, but nowadays a book dedicated just to game design might be better.

rsaarelm

Game Design: Theory and Practice

Richard Rouse (ISBN 1556227353)

Game Feel

Steve Swink (ISBN 0123743281)

Goes into detail on how the interactive feedback loops between the player and the game rules work. A lot of it is about real-time games, but concerns about space, input and response matter for turn-based roguelikes as well.

rsaarelm

The Non-Designer's Design Book

Robin Williams (ISBN 0321534042)

Principles of visual and typographic design. Worth a look, even a text-based display can benefit from a nice visual layout.

rsaarelm

Design Patterns of Successful Role-Playing Games

Whitson John Kirk III [online]

Somewhat formal theory work for RPG rule systems.

rsaarelm

Playing to Win

David Sirlin [online]

Goes into detail on the mindset of competitive players.

Rules of Play

Katie Salen and Eric Zimmerman (ISBN 0123743281)

Theoretical book on the design, playing and culture of games. Very nice for getting a wider perspective on game design.

rsaarelm

Tabletop: Analog Game Design

Drew Davidson, Greg Costikyan, et al (ISBN 1257870602) [online]

All about designing and analyzing pen&paper board games, not computer games. Those things are very useful to study, they need to compress interesting gameplay to very bare fundamentals.

rsaarelm

User Interface Design for Programmers

Joel Spolsky (ISBN 1893115941)

Lists all those user interface design snags programmers have trouble thinking about.

rsaarelm

The Visual Display of Quantitative Information

Edward Tufte (ISBN 0961392142)

A classic on visualizing information. Constantly drives home how it's important to think what you're doing with visual representations and what pitfalls there might be. Should go well with the minimalist aesthetic and the idea of maximizing useful on-screen information in roguelikes.

rsaarelm

Other

Miscellaneous useful books.

Producing Open Source Software

Karl Fogel (ISBN 0596007590) [online]

Project management for open source development. Some larger roguelikes are developed as open source efforts. This book goes into the management practices involved, such as running open version control, managing mailing lists and handling bug reports and contributions.

rsaarelm

The Evolution of Fantasy Role-Playing Games

Michael Tresca (ISBN 078645895X)

Dungeons and Desktops: The History of Computer Role-Playing Games

Matt Barton (ISBN 1568814119)

Playing at the World

Jon Peterson (ISBN 0615642047)