3.5 Common Lisp terrain generator
=================================
cl-rebonoise (1) is a Common Lisp implementation of the Simplex/Perlin
noise approach described in Amit Patel's 'Making maps with noise
functions' (2).
+#%#+++++++++++++++++++%+--=++++++==--+#%%#*+++*+%#*=-----------=-----
#**+++++++++++++++++++#*##=-=====--=++##**#%%++*+*%%*+*#*+#*+--------=
+==++++++++++++++++++++=+*+#=----=*++++====++++=+==+=+*+++##%+==-----+
++++++++++++++++=++++++++==+#=--+#++++++++++++++++++++==++==+%@*------
+=+=++++++++++=+#==++++++++*#+--#%+++++++++++++++++++++++++++++*#+----
%*+++++++++++++#%%%+=+++++=**----*+=++++++++++++++++++++++++++=+%+----
=*%@#=++++++++%@%#%*+++++++#=----%%*==+++++++++++++++++++++++=+**-----
+#+*#*++++++++*%+=##*++++++%@%==-#@@##+++++++++++++++++++++==#%+--=---
%++=+++++++++++#@@#%*=++++++*%@%*=@#**+++++++++++++++++++++**%+-===---
++++++++++====+*@%#++==+++++==**##*+==++++++++++++++++++=+%+========--
+++++++++*###**++#@@%#*+=+++++===+=+++++++++++++++++++=+**+-=++++=----
++++++++=*#%*-----=+*#%#*+++++++++++++++++++++++=++++=**=-=++==+++=--=
+++++++++==#*#+--------+=#*=++++++++++++++++++++*+==+##--==++++======+
+++++++++++=+%@=---------+@*=+++++++++++++++=#*+%*+*##-=-=====-------=
+++++++++++++=+#%#=====-=+*+++++++++++++++++++=+#++*+##=----=+=-----==
++++++++++++++=++**+*****+=+++++++++++++++++++++=++==**:----=#*-----==
+++++++++++++++++==+===+++++++++++++++++++++==+++==+**#==----------=++
++++++++++++++++++++++++++++++++++++++++===+**++*#*%@@@+=-----==---===
=+++++++++++++++==++++++++++++++++++++++#***+====+==**#=---=+=++------
*+=+++++++++++++#%%+==++++=+++++++++++++*#=--=====-------===++=+=---*#
+**+==++++++++++*#++**+=++*+++++++++++++=#=-=+++++====-===+++++++=--+@
---#*+++++++++++===%@@%***+=*@#=++++++++++*=-++++=++=--=++==+++=+=====
-++=#@++++++++++++++#%*=-==--*#*+++++++++++*+-==++++==+==+++++++++====
+##+*++++++++++++++=+*=--=+=--=%+++++++++++=#+---=====----==---==--==-
+==++=+++++++++++++++#+-====--+%+++++++++++++#**=-----=****+=+*#++++==
++++++++++++++==+++=##:---==-+%++++++++++++++++%*-#==#***+++***###+++*
+++++++++++=#@#*=#*+%%++=----+*#++++++++++++++++*%@###=+=+++======++==
+===+++++++=#%%@#*%%%++**++*%*#@*=+++++++++++++=*%%@@*++++++++++++++++
*%**@@*=+++++==+*+++=++=++#%@*-=*%+=++++++++++++++++*+++++++++++++++=+
+%#+#*++++++++++=+++++++++==%#---+#*=++++++++++++++==+++++++++++=+++*+
+++===+++++++++++++++++++++**----++##*%%%%+++++++++++++++++++++++#*#@@
+++++++++++++++++++++++++++%%+---++%%+@@@%##+++++++++++++++++++%%=--=%
+++++++++++++++++++++++++++%#+-----*#%%%++++++++++++++++++++++*+-----=
+++++++++++++++++++++++++++##=------*%++=++++++++++++++++++++%*=----*#
++++++++=*#+++++++++++++++#+*=-----=%#+++++++++++++++++++++=*%%%===+%*
Generated terrain.
Includes primitives and also helper functions, e.g.:
(grid-to-file 500 500 "./examples/img/7-biome2.png"
:coefs '((1 6) (2 11) (4 8) (18 2) )
:power 1.45
:offset 166
:biomes t)
Amit's page has a wealth of resources on game-related topics, from an
implementation perspective, and I've been following it for years.
3.5.1 Why I'm interested
------------------------
Part of this is because one of my long-term projects is to recreate a
turn-based, play-by-(e)mail game that I was addicted to decades ago (3),
a project I keep coming back to only to get derailed in building more
'infrastructure' instead of actual code: my commits to BKNR, a Common
Lisp in-memory datastore (4) where part of this, and this library
another.
While I end up getting side-tracked, one of this days I will piece
together all the side quests and make that game available. Well, that's
the plan, anyway.
---------- Footnotes ----------
(1) cl-rebonoise (
https://github.com/fsmunoz/cl-rebonoise)
(2) Amit Patel's 'Making maps with noise functions'
(
https://www.redblobgames.com/maps/terrain-from-noise/)
(3) It was very a local phenomenon called 'Idade das Trevas' ('Dark
Ages'), and was very popular in the small-but-connected world of
strategy games enthusiasts in the 90s.
(4) BKNR, a Common Lisp in-memory datastore
(
https://github.com/hanshuebner/bknr-datastore)