Yet Another Roguelike Tutorial
rogueliketutorials.com
rogueliketutorials.com
While I'm not completely satisfied with the way this tutorial stands right now, I certainly hope that it has given a few people some ideas and motivation for their own roguelike projects.
Feel free to shoot any issues with the site or tutorial text over to the Github page: https://github.com/TStand90/roguelike-tutorials-website (fair warning: I'm pretty bad at responding to issues, and I sincerely apologize for that)
Overall, it was a lot of fun, and I enjoyed the process. I have not played with Python for a while, so this was a nice refresher. Your tutorial also brought me up to speed on the modern static typing support.
As for my process, I copy and pasted each set of changes, working through each part in turn. Overall, I stuck fairly close to the tutorial code, though every part received some amount of custom changes to keep things interesting. Very easy to follow.
I created a custom Dockerfile to encapsulate all of the required dependencies, using a Makefile to test/check the code inside a container. I used `mypy` for checking types, which helped find track down the bugs introduced by my custom changes.
It would be nice to see a new version that eliminates the refactoring steps that prefix Parts 6 and 8. Those unexpected grinds took a little bit of wind out of the sails, but the changes were ultimately worthwhile.
Another suggestion would be to encapsulate all of the game parameters into their own class from the start, such that you can pass an instance of that around rather than a half dozen individual variables.
But really, those are relative nits to pick. I would recommend this tutorial to anyone familiar with Python as a way to learn the internals of roguelikes built using TCOD.
While I'm happy with the way the diff style turned out, I will say there is one big downside for me: It's a huge pain to write. Not only did I do a "git diff" every time I made changes and documented it, but if you end up changing something later down the line, then I basically had to go back to the very beginning of the chapter, follow the tutorial along, and double check everything. Maybe there's a more efficient way to do this, but it was a bit tedious and time consuming.
Still worth the effort in the end though, I think.
I ended up writing a whole little custom build system to automatically generate the snippets and their surrounding context based on comments in the source code [1]. It was a fairly complex program to write, but it makes it completely automatic and error-free. I can't imagine trying to maintain it all manually.
[1]: http://journal.stuffwithstuff.com/2020/04/05/crafting-crafti...
[0]:https://hexworks.org/posts/tutorials/2018/12/04/how-to-make-...
The copyright looks old on that page but if you view the source code for that chapter it was modified last month.
https://github.com/marukrap/RoguelikeDevResources (Tutorials section)
There are also a lot of frameworks out there which may be useful without a tutorial. For example Valkyrie for the Free Pascal Compiler, which integrates Lua and was used to create DoomRL.
If it's general gamedev resources for C#, then I would suggest Cynthia McMahon's Eyes of the Dragon series[1], for C# / Monogame. It goes through topics like input handling, drawing, tooling, etc. A thing I like about this as well is that it's not "perfect" off the bat -- an entry later will return to code written previously and talk about its benefits and drawbacks, and then refactor that code for a new goal or sometimes to just make it better. If you're new to C#, development, or game development, it offers a good perspective into what doing this "for real" looks like.
[0]: http://sadconsole.com/v8/articles/tutorials/get-started/draw...
[1]: https://cynthiamcmahon.ca/blog/category/eyes-of-the-dragon/
IF you did it with the terminal it would be tall and narrow.
It's a bunch of OOP with a bunch of Composition with a bunch of ECS
It's asking for trouble and confusion
I am definitly not a fan of that decision, it started properly, then they messed up after making Entity -> Actor, shame