Game Design and Game Development Resources » History » Revision 40
Revision 39 (quintus, 03/28/2023 08:32 PM) → Revision 40/41 (quintus, 05/08/2023 08:08 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
- [Aperiodic monotile](https://cs.uwaterloo.ca/~csk/hat/)
- [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
- [Generative art](https://generativeartistry.com/tutorials/)
## 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))
- [How to create a waving flag in GIMP](https://graphicdesign.stackexchange.com/a/2611)