{"id":13571806,"url":"https://github.com/tomassedovic/roguelike-tutorial","last_synced_at":"2025-09-16T03:31:57.650Z","repository":{"id":48132210,"uuid":"40192308","full_name":"tomassedovic/roguelike-tutorial","owner":"tomassedovic","description":"Port of the \"Complete Roguelike Tutorial, using python+libtcod\" to Rust + tcod","archived":false,"fork":false,"pushed_at":"2023-01-24T18:35:41.000Z","size":1784,"stargazers_count":235,"open_issues_count":18,"forks_count":30,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-02T12:08:30.292Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomassedovic.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-04T15:16:58.000Z","updated_at":"2024-11-11T06:06:14.000Z","dependencies_parsed_at":"2023-01-29T22:16:08.432Z","dependency_job_id":null,"html_url":"https://github.com/tomassedovic/roguelike-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/tomassedovic%2Froguelike-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomassedovic%2Froguelike-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomassedovic%2Froguelike-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomassedovic%2Froguelike-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomassedovic","download_url":"https://codeload.github.com/tomassedovic/roguelike-tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233195256,"owners_count":18639535,"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":[],"created_at":"2024-08-01T14:01:06.687Z","updated_at":"2025-09-16T03:31:51.914Z","avatar_url":"https://github.com/tomassedovic.png","language":"Rust","readme":"= Complete Roguelike Tutorial, using Rust + tcod\nifdef::env-github[:outfilesuffix: .adoc]\n\nThis is a port of the (in)famous Python+libtcod tutorial:\n\nhttp://www.roguebasin.com/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod\n\n\nThe code is all implemented but we plan to clean it up in a few places before\nsplitting it into parts and writing the tutorial text.\n\nThe text is in the `doc` directory, you can look at the rendered tutorial at:\n\nhttp://tomassedovic.github.io/roguelike-tutorial/\n\n== Running the tutorial code\n\nIf you want to try running a part of the tutorial using the reference code here,\nall you have to do is run this cargo command:\n\n`cargo run --bin name-of-part`\n\nFor example, if you would like to run the reference code that is at the end of Part 1\nthen you run this command:\n\n`cargo run --bin part-1b-movement`\n\n== Contributing\n\nThe Rust source files in `src/bin/*.rs` are all auto-generated from the tutorial pages themselves.\nThe single source of truth for both the code and the final pages is in `doc/*.adoc`.\nIf you want to make changes to the Rust files, you need to edit the corresponding pages in `doc/`.\nNote that since the code can be laid out in a different order than the tutorial, this involves a little bit of digging.\n\nYou can check the `doc/rs/*.adoc` files for how is each final Rust file constructed from the tutorial snippets.\n\n=== Building the Rust files\n\nFirst, you need to have link:https://asciidoctor.org/[Asciidoctor] installed.\n\nNext, after making some changes to the files under the `doc` directory, run the following:\n\n....\nmake clean docs\n....\n\nThis will generate the HTML tutorial as well as the corresponding Rust files in the `target/tutorial/` directory.\nYou can preview them there and verify that everything looks correct.\n\n=== Updating the generated files in `src/bin/`\n\nRun the following command:\n\n....\nmake update-cargo-bin\n....\n\nIt will regenerate the documents and copy the Rust files into `src/bin`\n\n=== Validating that `src/bin` matches the source documents\n\nRun:\n\n....\nmake diff-rust\n....\n\nThis will build the documents and diff them against the versions in `src/bin/`.\nThey should match.\n\n=== Contributing changes\n\nMake sure you build build the documents, with no leftovers files and update the `src/bin/` files:\n\n....\nmake clean docs update-cargo-bin\n....\n\nBefore opening a pull request, make sure that `make diff-rust` ends up empty.\n\n\n== Project Status\n\nThe tutorial is more or less finished: all the chapters have been written.\nYou can follow them and build your own roguelike.\nYou can also check out this repository and run for example `cargo run --example part-13-adventure-gear` to play the final version (or any of the previous ones).\n\nThere are of course things that could use updating, such as the language and general flow of the text.\nThe structure of the tutorial itself could use some cleaning up too and some e.g. the `rand` crate we use is wildly out of date.\nFinally, there are improvements and fixes that could be done in the `tcod-rs` crate this tutorial is based on.\nFor more suggestions, check out the link:https://github.com/tomassedovic/roguelike-tutorial/issues[Issues] section.\n\nHowever, the original author has moved on to other things and no one else has volunteered to take over the maintenance of this repository.\n\nIssues and pull requests will not be ignored, but it can take weeks before you get a reply.\nAnd anything involving more than a minimal time investment will likely take even longer.\n\nSorry!\n\nIf you do wish to help out with the maintenance, please open an issue or send en email to \u003ctomas@sedovic.cz\u003e.\n\n== Other Rougelike tutorials for Rust\n\nlink:http://bfnightly.bracketproductions.com/rustbook/[The RLTK Tutorial by TheBracket]\n- It uses the link:https://github.com/thebracket/rltk_rs[RLTK] project developed by the same person\n- Unlike libtcod, RLTK is written in pure Rust which makes building and distributing your game easier\n\n(feel free to suggest other tutorials!)\n\n\n== Thanks!\n\nThis tutorial has been put together by the following people:\n\n* https://github.com/Raveline[A.D]\n* https://github.com/Oscuro87[Emmanuel C]\n* https://github.com/iszla[iszla]\n* https://github.com/JCGrant[JCGrant]\n* https://github.com/keisetsu[Jesse J. Bethel]\n* https://github.com/aquarhead[LOU Xun]\n* https://github.com/mipli[Michael A. Plikk]\n* https://github.com/Nathanator[Nathan Jeffrey]\n* https://github.com/smw[Stefan Wasilewski]\n* https://github.com/tomassedovic[Tomas Sedovic]\n* https://github.com/wcarss[Wyatt Carss]\n\n(sorted alphabetically)\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomassedovic%2Froguelike-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomassedovic%2Froguelike-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomassedovic%2Froguelike-tutorial/lists"}