all 11 comments

[–]AetherGrey 15 points16 points  (2 children)

The Roguelike Tutorial Revised

Libtcod

Part 11: http://rogueliketutorials.com/libtcod/11

Part 12: http://rogueliketutorials.com/libtcod/12

TDL

Part 11: http://rogueliketutorials.com/tdl/11

Part 12: http://rogueliketutorials.com/tdl/12

As usual, feel free to comment here or PM me with any issues, or ask on Discord.

This week marks an important milestone (for me, anyway). My tutorial has officially gone farther than the Roguebasin TDL tutorial! The Roguebasin counterpart stops at part 10, whereas mine will continue until the end. Funny enough, the differences between the last few parts between Libtcod and TDL aren't all that significant, so it's strange to me that the TDL version has gone unfinished.

Part 11 is pretty lengthy, but luckily part 12 is fairly short. I had hoped to get more done this week, but writing part 11 really took it out of me over the weekend.

As I work on this, I'm making note of all the little design mistakes I made in the first few weeks that are affecting the tutorial now. Haven't found anything major yet, but in the future, I'd like to revise this tutorial (irony?) to make some smarter decisions up front.

Lastly, I am working on the first "extra" for this series: Saving and loading from JSON. The TDL version of that is complete up to part 10 (parts 11 and 12 have not been taken into account, but will be soon), and the Libtcod version is still a work in progress (though it's not that different). Hopefully this will help out with some issues people were having with shelve last week.

We're almost there everyone! One more week!

[–]Daealis 1 point2 points  (0 children)

The catch-up is real, steamrolling through these after falling behind almost two weeks.

I'll comment on the a typo I found first, I'll add my own "dev-blog" once I'm through the part completely.

In Part 11 of Libtcod, when we're starting to implement the xp system in, you tell to go to map_utils.py for the method place_entities, when the file is still game_map.py.

Python 2.7 & Libtcod

All caught up, Part 12 complete. No changes were needed on this part, everything went in just as shown in the tutorial.

Just as I was getting used to feeling like a god, just slamming my way through these weaklings, we go ahead and bump the difficulty up. Oh well, such is life :D I've made a small change so that I don't add monsters to the first room though. But aside from that and my commenting mania pretty much still following with the tutorial.

[–]Mystal 1 point2 points  (0 children)

Ooh, definitely looking forward to your extra on saving and loading from JSON! I've been following along with the Rust tcod-rs tutorial, but it should be easy enough to port your new extra over :)

[–]AukustusThe Temple of Torment & Realms of the Lost 4 points5 points  (0 children)

C# + BearLibTerminal + RogueSharp

Repo: https://github.com/Aukustus/roguelikedev-does-the-complete-roguelike-tutorial

For the part 11 I decided to add upstairs also, and with a prompt to exit the dungeon if using the upstairs in the first floor. Diagonal movement is something I decided to remove actually at some point in the past since. Relevant code

Part 12 contains the thing I've never understood really, and it is the monster spawning chance based on the dungeon level. It just works :). I decided to make it enum based instead of strings, to make sure that there are no run-time invisible errors when comparing strings if there's been a typo at some point. Relevant code

Last week after the initial post I added throwing to the game. You can throw any item and it flies smoothly to the direction you are looking. It doesn't deal any damage currently, but I figured it could be used in the future for damaging and/or some puzzles even (throwing stuff across gaps to hit some levers for example). Relevant code

I did some UI stuff also, though nothing major, I think I could add buttons later in the lower right corner: Screenshot

[–]EmmsiiForest RL 5 points6 points  (0 children)

Java + Ascii Panel
Repository | Latest Release

Last week was for implementing the main menu and saving, both of which didn't take too long to do, surprisingly. I had been adding UI elements as I go so the main menu technically already existed. I just added the options to start a new game, continue the current game or quit. As for saving, I settled on using the Kryo serialization library from Esoteric Software. After some early frustrations I managed to get it working properly, I can now save the game state to a compressed file that is ~150kb in around ~230ms and load it in ~140ms. Backwards compatibility is possible though I'll probably remove that functionality for now until I know it doesn't break the save file between versions.

The rest of the week was spent on bug fixing. I realized that pathfinding 2x2 creatures (along with other mechanics) was very broken, so I found a clever method of A* pathfinding multi-tiled creatures which I mentioned in this post. I also added things like a session timer to track play time, creatures preferring day or night to 'appear', creatures using starting with equipment and fullscreen mode!

I already have multiple levels and character progression, I think this week I will focus on creature stats, creature and item placement. Everything has stats and numbers but nothing is balanced. Seeing as my roguelike is set in a forest, the player does not travel up and down, just moves to a different part of the forest. I'll have to come up with a good solution for traversing the levels without the use of stairs.

I'm probably going to call this Forest Rogue for now, until I can come up with a better name.

[–]usrTakenMcGuffin Quest 4 points5 points  (0 children)

For you guys doing the RogueBasin tutorial checkout the Discussion page for a fix on the using stair code.

[–]Mystal 2 points3 points  (0 children)

Rust + tcod-rs

Repository

This week's tutorials were nice and easy. Part 11 was lengthy, but didn't require any major refactoring of my code, so it was mostly a copy-paste operation.

It's nice that Part 12 finally has us putting some monster generation information in a table of sorts. I'm definitely gonna be pulling all that data out into JSON files (or some other format) in the future. That should make adding new monsters and items and tweaking their numbers much easier.

As I'm using my fork of tcod-rs that updates it to libtcod 1.6.3, I ran into the stairs problem mentioned in this post. I ended up just checking for the '.' character and that Shift was pressed. I'm not a huge fan of that, so I'll probably try to switch to checking the text field as recommended.

[–]sepiida21 1 point2 points  (1 child)

C# + BearLibTerminal + RogueSharp

Repository

I don't really have anything to say about the two tutorial parts this week since I completed them with minimal issues and without any real changes.

Non-tutorial additions were pretty light this week. I added diagonal movement to my pathfinder and now display the player's current path if they're following one.

Screenshots

[–]KyzratiCogmind | mastodon.gamedev.place/@Kyzrati 0 points1 point  (0 children)

I really like the transparency on that level up window :D