# World building miscellany ## Procedural Generation - [Wikipedia: Noctis](http://en.wikipedia.org/wiki/Noctis) (Web page) - [Noctis - Official site](http://anynowhere.com/bb/layout/html/frameset.html) (Web page) - [Proteus - early prototype screenshots](http://twistedtreegames.tumblr.com/post/701885803/history) (Blog post) - [Gamasutra: The Making of Elite](http://www.gamasutra.com/view/news/184404/Video_The_making_of_Elite.php) (Video) - [The Brilliance of Dwarf Fortress](http://www.nytimes.com/2011/07/24/magazine/the-brilliance-of-dwarf-fortress.html?pagewanted=all&_r=0) - [Interview with Tarn Adams (creator of Dwarf Fortress)](http://www.youtube.com/watch?v=q9ZwVuGB_PI) ([Slides](http://imgur.com/a/MeTFS)) (Video) ### City/Building generation - [Procedural World: Real men don't draw buildings](http://procworld.blogspot.com.au/2012/02/real-men-dont-draw-buildings.html) (Blog post) - [Procedural World: Building Rooms](http://procworld.blogspot.com.au/2012/03/building-rooms.html) (Blog post) - [Procedural World: A room with an angle](http://procworld.blogspot.com.au/2012/04/room-with-angle.html) (Blog post) - [P Müller: Procedural Modeling of Cities](http://scholar.google.com.au/scholar?cluster=7303223537294431631&hl=en&as_sdt=1,5) (Google Scholar) - [P Müller: Automatic reconstruction of Roman housing architecture](http://scholar.google.com.au/scholar?cluster=12217809683629392011&hl=en&as_sdt=1,5) (Google Scholar) - [P Müller: Procedural 3D reconstruction of Puuc buildings in Xkipche](http://scholar.google.com.au/scholar?cluster=15207087416219879482&hl=en&as_sdt=1,5) (Google Scholar) - [P Müller: Procedural modeling of buildings](http://scholar.google.com.au/scholar?cluster=15598841868226107895&hl=en&as_sdt=1,5) (Google Scholar) - [P Müller: Interactive Geometric Simulation of 4D Cities](http://scholar.google.com.au/scholar?cluster=9705582363586719367&hl=en&as_sdt=1,5) (Google Scholar) ### World Generation - [Red Blob Games: Polygonal Map Generation](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/) (Blog post) - [MinecraftWiki: Far Lands](http://www.minecraftwiki.net/wiki/Far_Lands) (Web page) - [Fibonacci grids: A novel approach to global modelling](http://scholar.google.com.au/scholar?cluster=2550674786014296678&hl=en&as_sdt=0,5&as_vis=1) (Google Scholar) - [Terrain Generation Using Procedural Models Based on Hydrology](http://arches.liris.cnrs.fr/publications/articles/SIGGRAPH2013_PCG_Terrain.pdf) ### Evolution - [Evolved Virtual Creatures](http://www.karlsims.com/evolved-virtual-creatures.html) ![Watersnake](http://www.karlsims.com/watersnake200.jpg) ![Hopper](http://www.karlsims.com/hopper200.jpg) ![Crab vs Arm](http://www.karlsims.com/crab-vs-arm200.jpg) ### Games Games that currently use procedural generation: - Noctis - Dwarf fortress - Canabalt - Minecraft - Love - Spelunky ## Game Engine Architecture ### Component Based Game Architecture - [Evolve Your Hierarchy: Refactoring Game Entities with Components](http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/) (Blog post) - [Richard Lord: What is an entity framework for game development?](http://www.richardlord.net/blog/what-is-an-entity-framework) (Blog post) - [Richard Lord: Why use an entity framework for game development?](http://www.richardlord.net/blog/why-use-an-entity-framework) (Blog post) - [Game Programming Patterns: Components](http://gameprogrammingpatterns.com/component.html) (Web page) ### Data-Oriented Design - [Pitfalls of Object Oriented Programming](http://research.scee.net/files/presentations/gcapaustralia09/Pitfalls_of_Object_Oriented_Programming_GCAP_09.pdf) (PDF Slides) - [Practical Examples in Data Oriented Design](https://docs.google.com/present/view?id=0AYqySQy4JUK1ZGNzNnZmNWpfMzJkaG5yM3pjZA&hl=en) (Slides) - [Introduction to Data-Oriented Design](http://www.slideshare.net/DICEStudio/introduction-to-data-oriented-design) (Slides) - [Managing Decoupling Part 4 — The ID Lookup Table](http://www.altdevblogaday.com/2011/09/23/managing-decoupling-part-4-the-id-lookup-table/) (Blog post) - [Games From Within: Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP)](http://gamesfromwithin.com/data-oriented-design) (Blog post) - [Games From Within: The Always-Evolving Coding Style](http://gamesfromwithin.com/the-always-evolving-coding-style) (Blog post) - [Games From Within: Managing Data Relationships](http://gamesfromwithin.com/managing-data-relationships) (Blog post) - [Games From Within: Data-Oriented Design Now And In The Future](http://gamesfromwithin.com/data-oriented-design-now-and-in-the-future) (Blog post) - [Bjoern Knafla: Naive Object-Oriented Behavior Tree Isn’t Data-Oriented](http://www.altdevblogaday.com/2011/03/10/shocker-naive-object-oriented-behavior-tree-isnt-data-oriented/) - [Bjoern Knafla: Data-Oriented Behavior Tree Overview](http://bjoernknafla.com/data-oriented-behavior-tree-overview) (Blog post) - [High-Performance Programming with Data-Oriented Design](https://docs.google.com/viewer?a=v&q=cache:h6Ecr3UqmkYJ:www.crcnetbase.com/doi/abs/10.1201/b11333-18+&hl=en&gl=au&pid=bl&srcid=ADGEEShB2vUFZRGBk0s3s_-QNIIZ4FjcKD0n0IKojy89TFyoDgiUmgZO9IUy7pFMFHnux8I0bKE-1oglsXmNA1qwIX6gfNwC8jIaTPToCynSaK_ss4dPz4x1TESMkZ4o9ZLKTuZvKCzK&sig=AHIEtbTM96kDunO2KXkZi-PmRNl2hyfoqA) (PDF) ## Functional Reactive Programming - [HaskellWiki: Functional Reactive Programming](http://www.haskell.org/haskellwiki/Functional_Reactive_Programming) (Web page) - [HaskellWiki: Yampa/game engine](http://www.haskell.org/haskellwiki/Yampa/game_engine) (Web page – Pretty flow charts!) - [Gerold Meisinger: Why I switched from component-based game engine architecture to functional reactive programming](http://lambdor.net/?p=171) (Blog post) - [Gerold Meisinger: Functional Reactive Programming](http://www.slideshare.net/GeroldMeisinger/functional-reactive-programming-by-gerold-meisinger) (Slides) - [LambdaCube 3D: The LambdaCube 3D pipeline model](http://lambdacube3d.wordpress.com/2012/09/07/the-lambdacube-3d-pipeline-model/) (Blog post) - [LambdaCube 3D: Motivations and background](http://lambdacube3d.wordpress.com/2012/08/15/motivations-and-background/) (Blog post) - [The Unofficial Guide to Rich Hickey's Brain](http://www.flyingmachinestudios.com/programming/the-unofficial-guide-to-rich-hickeys-brain/) (Blog post) - [Elm: Evan Czaplicki (Google) @ MLOC.JS](http://www.ustream.tv/recorded/29330499) (Video) ![What we call "River"](http://www.flyingmachinestudios.com/assets/images/posts/fp-metaphysics.png) ## World building ### Worlds - [Creating an Earthlike Planet](http://jc.tech-galaxy.com/bricka/earthlike_planet.html) (A long-time favorite) - [NPR: At Home In Fantasy's Nerd-Built Worlds](http://www.npr.org/2013/01/06/168631403/at-home-in-fantasys-nerd-built-worlds) ### Structural Geology / Geomorphology - [Earth's Dynamic Systems](http://www.earthds.info) - to download PDFs: `$ wget -r --no-parent http://www.earthds.info/pdfs/` ### Geodesic Grids - Wikipedia - [Grid (spatial_index)](https://en.wikipedia.org/wiki/Grid_%28spatial_index%29) - [Geodesic grid](https://en.wikipedia.org/wiki/Geodesic_grid) - [Regular icosahedron](https://en.wikipedia.org/wiki/Regular_icosahedron) - [Spatial database](https://en.wikipedia.org/wiki/Spatial_database) - [Spherical geometry](https://en.wikipedia.org/wiki/Spherical_geometry) - [Spherical trigonometry](https://en.wikipedia.org/wiki/Spherical_trigonometry) - [Truncated icosahedron](https://en.wikipedia.org/wiki/Truncated_icosahedron) - [Experilous: Procedural Planet Generation](http://experilous.com/1/blog/post/procedural-planet-generation) - [planet-generator.js](http://experilous.com/1/planet-generator/2014-09-28/planet-generator.js) - [Modular Procedural Generation With Lua](http://experilous.com/1/blog/post/modular-procedural-generation-with-lua) - [Earthgen - An earth-like planet generator (Racket version)](https://github.com/vraid/earthgen) - [Earthgen - An earth-like planet generator (C++ version)](https://github.com/vraid/earthgen-old) - [Spherical map representation – Game Development Stack Exchange](http://gamedev.stackexchange.com/questions/56231/spherical-map-representation) - [Discrete Global Grid (DGG)](http://discreteglobalgrids.org/) - [DGGRID Software](http://webpages.sou.edu/~sahrk/dgg/dggrid/dggrid.html) - [Pre-Generated ISEA DGGs](http://webpages.sou.edu/~sahrk/dgg/isea.old/gen/gen.html) - Sky Server - [Hierarchical Triangular Mesh](http://www.skyserver.org/htm/) - [Thinking In Space](http://www.skyserver.org/htm/HtmPrimer/tut_primer.html) - [Covermap](http://www.skyserver.org/htm/HtmPrimer/tut_covermap.html) - [Spatial Queries](http://www.skyserver.org/htm/HtmPrimer/tut_queries.html) - [REGION Specification Language](http://www.skyserver.org/htm/HtmPrimer/regiongrammar.html) - [SphericalHTM API](http://www.skyserver.org/htm/HtmAPI/html/index.html) - [Designing and Mining Multi-Terabyte Astronomy Archives: The Sloan Digital Sky Survey.](http://research.microsoft.com/apps/pubs/default.aspx?id=68553) - [Spherical Geodesic Grids: A New Approach to Modeling the Climate](http://kiwi.atmos.colostate.edu/BUGS/geodesic/) - [Data Structure](http://kiwi.atmos.colostate.edu/BUGS/geodesic/text.html) - [An Introduction to Spherical Geodesic Grids](http://kiwi.atmos.colostate.edu/BUGS/geodesic/slideshow/) - [Interpolating To and From Spherical Geodesic Grids](http://kiwi.atmos.colostate.edu/BUGS/geodesic/interpolate.html) - [Domain Decomposition: Using Massive Parallel Architectures](http://kiwi.atmos.colostate.edu/BUGS/geodesic/domain.html) - [Some Hints for Building Polygonal Models of Surfaces](http://www.opengl.org.ru/docs/pg/0208.html) - [Discrete Global Grids Book](http://www.ncgia.ucsb.edu/globalgrids-book/) - [PYXIS Wiki](www.pyxisinnovation.com/pyxwiki/index.php) - [How PYXIS Works](http://www.pyxisinnovation.com/pyxwiki/index.php?title=How_PYXIS_Works) - [Icosahedral Snyder Equal Area Aperture 3 Hexagonal Grid](http://www.pyxisinnovation.com/pyxwiki/index.php?title=Icosahedral_Snyder_Equal_Area_Aperture_3_Hexagonal_Grid) - [Geodesic DGGS](http://www.pyxisinnovation.com/pyxwiki/index.php?title=Geodesic_DGGS) - [Discrete Global Grid System](http://www.pyxisinnovation.com/pyxwiki/index.php?title=Discrete_Global_Grid_System) - [Vertex Parent](http://www.pyxisinnovation.com/pyxwiki/index.php?title=Vertex_Parent) - [Vertex Child](http://www.pyxisinnovation.com/pyxwiki/index.php?title=Vertex_Child) - [Centroid Parent](http://www.pyxisinnovation.com/pyxwiki/index.php?title=Centroid_Parent) - [Centroid Child](http://www.pyxisinnovation.com/pyxwiki/index.php?title=Centroid_Child) - [PYXIS Trie](http://www.pyxisinnovation.com/pyxwiki/images/PYXIS_Trie.jpg) - [PYXIS Index](http://www.pyxisinnovation.com/pyxwiki/index.php?title=PYXIS_Index) - [Generalized Balanced Ternary](http://www.pyxisinnovation.com/pyxwiki/index.php?title=Generalized_Balanced_Ternary) - [XY to PYXIS Index](http://www.pyxisinnovation.com/pyxwiki/images/XY_to_PYXIS.GIF) - c2 Wiki - [GeographyExample](http://c2.com/cgi/wiki?GeographyExample) - [HexGridSphere](http://c2.com/cgi/wiki?HexGridSphere) - [HexGridIcosahedron](http://c2.com/cgi/wiki?HexGridIcosahedron) - [SphericalTrigonometry](http://c2.com/cgi/wiki?SphericalTrigonometry) ### Maps - [The Play Generated Map & Document Archive](http://plagmada.org) ![](http://plagmada.org/gallery/main.php?g2_view=core.DownloadItem&g2_itemId=5680&g2_serialNumber=2) ![](http://plagmada.org/gallery/main.php?g2_view=core.DownloadItem&g2_itemId=5653&g2_serialNumber=2) ### Linguistics - [Nsibidi](http://en.wikipedia.org/wiki/Nsibidi) - [Dongba symbols](http://en.wikipedia.org/wiki/Dongba_symbols) - [Mi'kmaq hieroglyphic writing](http://en.wikipedia.org/wiki/Mi%27kmaq_hieroglyphic_writing) - [Blissymbols](http://en.wikipedia.org/wiki/Blissymbols) - [The New Yorker: John Quijada and Ithkuil, the Language He Invented ](http://www.newyorker.com/reporting/2012/12/24/121224fa_fact_foer?currentPage=all) - [Ithkuil: A Philosophical Design for a Hypothetical Language](http://www.ithkuil.net/) ## Mathematics ### General - [Steven Wittens: Making things with Maths](http://www.youtube.com/watch?v=ONN3jBly364&feature=share&list=UUyBAm31tEpZ17hka6ZvVqcg) (Video) - [Iñigo Quílez: useful little functions](http://www.iquilezles.org/www/articles/functions/functions.htm) ### Linear Algebra and Quaternions - [The Truth Behind Homogeneous Coordinates](http://deltaorange.com/2012/03/08/the-truth-behind-homogenous-coordinates/) - [Arcsynthesis: Quaternion intoperlation](http://www.arcsynthesis.org/gltut/Positioning/Tut08%20Interpolation.html) (Web page) - [Jonathan Blow: Hacking Quaternions](http://number-none.com/product/Hacking%20Quaternions/index.html) (Web page) - [Jonathan Blow: Understanding Slerp, Then Not Using It](http://number-none.com/product/Understanding%20Slerp,%20Then%20Not%20Using%20It/) (Web page) - [Geometric Algebra For Computer Science](http://geometricalgebra.net/) - [Marc ten Bosch: 4D Rotations and the 4D equivalent of Quaternions](marctenbosch.com/news/2011/05/4d-rotations-and-the-4d-equivalent-of-quaternions/) - [Ken Shoemake: Quaternions](http://www.cs.ucr.edu/~vbz/resources/quatut.pdf) (PDF) ### Collision Detection - [Object/Object Intersection Resources](http://www.realtimerendering.com/intersections.html) ### Computational Geometry - [Voro Wiki](http://www.voronoi.com) - [Three-dimensional Voronoi Diagram](http://www.voronoi.com/wiki/index.php?title=Three-dimensional_Voronoi_Diagram) - [Voronoi Applications](http://www.voronoi.com/wiki/index.php?title=Voronoi_Applications) - [Sol::Tutorials: Sphere Mesh Creation](http://sol.gfxile.net/sphere/) - [Creating an icosphere mesh in code](http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html) ### Noise - [Google Code: fractalterraingeneration](http://code.google.com/p/fractalterraingeneration/) - [Diamond Square](http://code.google.com/p/fractalterraingeneration/wiki/Diamond_Square) - [Midpoint Displacement](http://code.google.com/p/fractalterraingeneration/wiki/Midpoint_Displacement) - [Value Noise](http://code.google.com/p/fractalterraingeneration/wiki/Value_Noise) - [Perlin Noise](http://code.google.com/p/fractalterraingeneration/wiki/Perlin_Noise) - [Simplex Noise](http://code.google.com/p/fractalterraingeneration/wiki/Simplex_Noise) - [Fractional Brownian Motion](http://code.google.com/p/fractalterraingeneration/wiki/Fractional_Brownian_Motion) - [Efficient computational noise in GLSL](http://webstaff.itn.liu.se/~stegu/jgt2012/article.pdf) (PDF) - [WebGL implementation](https://github.com/ashima/webgl-noise) (Github) - [Supplement](http://webstaff.itn.liu.se/~stegu/jgt2012/supplement.pdf) (PDF) - [Simplex noise demystified](http://webstaff.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf) (PDF) - [More material](http://webstaff.itn.liu.se/~stegu/) ## Graphics ### OpenGL - [Learning Modern 3D Graphics Programming](http://www.arcsynthesis.org/gltut/) (Web page) - [open.gl tutorials website](http://www.open.gl/) (Web page) - [Primer : Shaders](http://notes.underscorediscovery.com/shaders-a-primer/) (Blog post) ### GLSL - [The Basics of GLSL 4.0 Shaders](http://www.packtpub.com/article/opengl-glsl-4-shaders-basics) (Tutorial) ### OpenCL - [OpenCL Resources](http://www.khronos.org/opencl/resources) - [OpenCL Marching Cubes](http://www.cmsoft.com.br/index.php?option=com_content&view=category&layout=blog&id=112&Itemid=167) ## Audio - [The Generative Music and Procedural Sound Design of Sim Cell](https://www.youtube.com/watch?v=0xr4aL1C24E) (Video) - [Recreating the THX Deep Note](http://www.earslap.com/instruction/recreating-the-thx-deep-note) ### Tools - [Pure Data](http://puredata.info/) - [libpd](http://libpd.cc/) - [Supercollider](http://supercollider.github.io/) ### People - [Martin Brinkmann](http://www.martin-brinkmann.de/index.html) - [Video Game Audio Articles by Leonard J. Paul](http://videogameaudio.com/) ## Programming Languages - [Urbit: a personal cloud computer](http://www.urbit.org/) ### Theory - [Crash Course on Notation in Programming Language Theory](http://siek.blogspot.com.au/2012/07/crash-course-on-notation-in-programming.html) - [Interactive Tutorial of the Sequent Calculus](http://logitext.mit