Project

General

Profile

Game Design and Game Development Resources » History » Revision 37

Revision 36 (quintus, 02/28/2022 08:05 PM) → Revision 37/40 (quintus, 06/18/2022 09:56 AM)

# Game Design and Game Development Resources 

 This page lists useful resources that can explain how to design games in general. It also lists resources for a specific subtopic of game design, the structure of the game's code. Try to divide this page with useful subheadings that group the links. 

 ## Story Design 

 * The master himself on "Fairy Stories" (sic): J.R.R. Tolkien, On Fairy Stories (1939). In: C.S. Lewis (editor), Essays presented to Charles Williams. William B. Eerdmans Pub., Grand Rapids 1947. 
   * Easier to find reprint: J.R.R. Tolkien, Tree and Leaf. George Allen & Unwin (Publishers) Ltd, London 1964. ISBN: 0 04 820015 8. 
   * [English Wikipedia summary](https://en.wikipedia.org/wiki/On_Fairy-Stories), [German Wikipedia summary](https://de.wikipedia.org/wiki/On_Fairy-Stories). Reading the original is recommended, but Tolkien's English is very elaborate and for a non-native speaker quite challenging. There's a German translation around somewhere, but Tolkien heavily draws from language specifics, thus the essay cannot really be fully understood in another language than English. 

 * Appearently an early good example of applying these principles is System Shock, as [documented here](https://www.filfre.net/2021/03/system-shock/). 

 ## Code Design 

 ### Game coding 

 * [Robert Nystrom, Game Programming Patterns](http://gameprogrammingpatterns.com/) (web version is free of charge, consider buying the hardcopy) 
 * OpenGL tutorial: https://learnopengl.com/ 
 * [HN discussion on enemy pathfinding](https://news.ycombinator.com/item?id=22848106) 
 * [Generating organic patterns with L-systems](https://jsantell.com/l-systems/) 
 * [Small study on small custom game engines](https://gist.github.com/raysan5/909dc6cf33ed40223eb0dfe625c0de74) 
 * [This person wrote a custom C++ game engine from OpenGL scratch in 30 weeks with a team size of 11 persons](https://www.undefinist.com/hydeandseek) 
 * [Background on programmatical colour handling](https://peteroupc.github.io/colorgen.html) 
 * [GameMode](https://jonathancarter.org/2020/08/11/gamemode-in-debian/), sets various OS configuration parameters on Linux while a game is running 
 * [Efficient memory management with handles instead of pointers](https://floooh.github.io/2018/06/17/handles-vs-pointers.html) ([lobste.rs discussion](https://lobste.rs/s/4xcla1/handles_are_better_pointers)) 
 * [Ray Tracing in One Weekend](https://raytracing.github.io/) 
 * [Procedural Content Generation](http://pcg.wikidot.com/) 
 * [Random scattering: Creating Realistic Landscapes](https://www.gamasutra.com/view/feature/1648/random_scattering_creating_.php) 
 * [Bullet3D physics tutorial](https://www.raywenderlich.com/2606-bullet-physics-tutorial-getting-started) (targetted at iOS, but the concepts extend to other platforms). 

 ### Coding in general 

 * If you need to refresh your C++ knowledge: [learncpp.com](https://www.learncpp.com/) 
 * Stay up to date with latest C++ concepts by following [lobste.rs on C++](https://lobste.rs/t/c++) 
 * How to properly organise C++ header files: [Kieras, C++ Header File Guidelines (2015)](http://www.umich.edu/~eecs381/handouts/CppHeaderFileGuidelines.pdf) 
 * Highly recommended article on API design: [Henning, acmqueue 2007/4, 24: API Design Matters](https://queue.acm.org/detail.cfm?id=1255422) (PDF available) 

 ### Abstract topics 

 * Transformation 
   * [Transformations in OpenGL](https://open.gl/transformations) 
   * [Quarternions in Ogre](https://wiki.ogre3d.org/Quaternion+and+Rotation+Primer) 
   * [Rotation matrices](https://en.wikipedia.org/wiki/Rotation_matrix) 
   * [Vector math (German)](https://de.wikipedia.org/wiki/Vektor) 

 ### Ogre specifics 

 * Blender's Y axis is [Ogre's default Z axis](https://ogrecave.github.io/ogre/api/latest/tut__first_scene.html#CoordinatesSystems). Consequently, models exported from Blender with [blender2ogre](https://github.com/OGRECave/blender2ogre/) into `.mesh` format appear rotated in Ogre without further adjustments. The upwards-pointing axis in Blender [cannot be changed](https://blender.stackexchange.com/q/471). Early versions of the blender2ogre exporter had a transformation option to auto-rotate a mesh on export from Blender, but the option was dropped around 2007. The [now recommended solution is to rotate Ogre's camera accordingly](https://forums.ogre3d.org/viewtopic.php?t=28302) and simply disregard Ogre's default setup. 
   * Turns out the option has been reimplemented meanwhile. The exporter now calls it "Swap Ax" and it's right the first point under "General" in the exporter menu. 

 ## Dungeon design 

 * [Dungeon map generator](https://dungeonscrawl.com/) 
 * [Hobbyist creating a modded dungeon for an existing game, quite interesting read](https://blog.tcharles.fr/for-a-better-dungeon/) 

 

 ## World design 

 * [Lighting tutorial](http://www.itchy-animation.co.uk/tutorials/light01.htm) 
 * [How Barcelona developed, illustrated with maps over time](https://www.geografiainfinita.com/2017/05/la-evolucion-de-barcelona-a-traves-de-los-mapas/) (Spanish) 
 * [Blend Swap -- liberally licensed Blender assets](https://www.blendswap.com/) 
 * [OpenGameArt -- large collection of 2D and 3D graphics under liberal licenses](https://opengameart.org) 

 

 ## Graphical ideas 

 - [Truchet tiles](https://en.wikipedia.org/wiki/Truchet_tiles): Many interesting floor or wall patterns from very simple tiles 
 - [Wallpaper groups](https://en.wikipedia.org/wiki/Wallpaper_group), or: how to make a graphic tile properly 

 ## Miscellaneous 

 - [Monastery Plan of St. Gall](http://www.e-codices.unifr.ch/de/list/one/csg/1092). This plan dates to the 9th century and gives the ideal form of a monastery. [English Wikipedia](https://en.wikipedia.org/wiki/Plan_of_Saint_Gall), [German Wikipedia](https://de.wikipedia.org/wiki/St._Galler_Klosterplan) 
 - [Passauer Kunst](https://de.wikipedia.org/wiki/Passauer_Kunst) (“Art of Passau”) Superstitional believe in the Middle Ages that certain papers from the city of Passau could make you invulnerable. 
 - [British Museum's Historical Travel Guide to Edo](https://blog.britishmuseum.org/historical-city-travel-guide-edo-tokyo-early-19th-century/). The [Tōkaidō](https://de.wikipedia.org/wiki/T%C5%8Dkaid%C5%8D) may serve as inspiration for our fantasy world's most important street. 
 - [Montezuma's headdress](https://en.wikipedia.org/wiki/Montezuma%27s_headdress), a featherwork crown of unknown history from the Aztec empire. 
 - [How to Write Cuneiform](https://blog.britishmuseum.org/how-to-write-cuneiform/) -- might be useful for a script system in the game. 
 - [Mile stones](https://de.wikipedia.org/wiki/Meilenstein), to be placed among the overworld for orientation ([English](https://en.wikipedia.org/wiki/Milestone))