{"id":13711097,"url":"https://github.com/podiki/cl-tcod-tutorial","last_synced_at":"2025-05-06T20:31:48.636Z","repository":{"id":82259907,"uuid":"82517388","full_name":"podiki/cl-tcod-tutorial","owner":"podiki","description":"Lisp roguelike tutorial with libtcod and cl-tcod","archived":false,"fork":false,"pushed_at":"2017-02-23T23:33:59.000Z","size":60,"stargazers_count":18,"open_issues_count":2,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-13T21:44:51.646Z","etag":null,"topics":["cl-tcod","game","libtcod","lisp","roguelike","tutorial"],"latest_commit_sha":null,"homepage":null,"language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/podiki.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-20T04:41:20.000Z","updated_at":"2021-07-12T14:58:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"6373ad42-cd03-472b-9502-ff43b4d7d2d7","html_url":"https://github.com/podiki/cl-tcod-tutorial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/podiki%2Fcl-tcod-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/podiki%2Fcl-tcod-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/podiki%2Fcl-tcod-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/podiki%2Fcl-tcod-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/podiki","download_url":"https://codeload.github.com/podiki/cl-tcod-tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252764395,"owners_count":21800687,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cl-tcod","game","libtcod","lisp","roguelike","tutorial"],"created_at":"2024-08-02T23:01:04.447Z","updated_at":"2025-05-06T20:31:48.204Z","avatar_url":"https://github.com/podiki.png","language":"Common Lisp","readme":"# Complete roguelike tutorial with libtcod and cl-tcod\n\n## Introduction\n\nThis is a port of the Python code from the [\"Complete Roguelike Tutorial, using python+libtcod\"](http://www.roguebasin.com/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod) into Common Lisp using [cl-tcod](https://bitbucket.org/eeeickythump/cl-tcod) (the official version needs to be updated though, see below). It uses [libtcod](https://bitbucket.org/libtcod/libtcod) (a.k.a. \"The Doryen Library\") through the Common Foreign Function Interface, [CFFI](https://common-lisp.net/project/cffi/). Commentary on writing this tutorial in lisp will be found on my [blog](https://9bladed.com) in the near future, and linked here.\n\nThe code is basically a straight \"translation\" from Python to Common Lisp, and is not necessarily \"lispy\" in it's current form. This was done on purpose to make it easy to refer to the original tutorial, and to reduce the chance of bugs in making sure this works as a proof of concept of a roguelike in lisp.\n\nEverything works exactly the same in terms of gameplay and presentation, as near as I can tell. The only exception is that currently cannot restore savegames where a monster was confused (via a \"scroll of confusion\"). This is due to the use of a recursive anonymous function (lambda). There are probably several ways around this, but for the purposes of this tutorial translation this is a minor issue and will be left as is for now.\n\n## Technical Details\n\ncl-tcod is in the process of being updated to fix some bugs with the latest version of libtcod. For now there is a working fork available on Github as [cl-tcod](https://github.com/podiki/cl-tcod).\n\nThis code has only been tested with the current versions of libtcod (1.6.2), SBCL (1.3.12), and SDL (2.0.5) on x86-64 Arch Linux.\n\n### Basic requirements\nIf current versions are prepackaged for your OS (downloaded binaries, `apt-get`, `pacman`, etc.) that is preferred, otherwise build from source.\n\n* Common Lisp (e.g. [SBCL](http://www.sbcl.org/))\n* [quicklisp](https://www.quicklisp.org)\n* [libtcod](https://bitbucket.org/libtcod/libtcod) (and its requirements, namely SDL2)\n* cl-tcod (to quickload it, clone it to `local-projects`; see the [FAQ](https://www.quicklisp.org/beta/faq.html))\n* [GNU Emacs](https://www.gnu.org/software/emacs/) with [SLIME](https://common-lisp.net/project/slime/) (not required, but highly recommended)\n    \nThen all one needs to do is open one of the `tutorial-part##.lisp` files in Emacs and load it (`M-x slime-load-file` or `C-c C-l`) with SLIME running.\n\n## Status\n\nAll of the code works (other than the saving caveat mentioned above), but is missing some of the original Python comments and lisp specific comments. The code is not necessarily pretty, well organized, or in a final state. Updates will be made as the blog posts go up for each part. It is possible in the future to produce a \"lisp first\" approach to the tutorial, but that is not planned yet.\n","funding_links":[],"categories":["Common Lisp"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpodiki%2Fcl-tcod-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpodiki%2Fcl-tcod-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpodiki%2Fcl-tcod-tutorial/lists"}