It has been a very long time, but I have some progress to share that I honestly should have shared months ago. Last time, I stated that I had planned to work on the mob movement, which I did and I also worked on and completed Pathfinding! Specifically, I was able to write a working implementation of the A* algorithm. But getting there was not easy...

Still loosely following the LazyDevs Pico-8 roguelike tutorial, I decided that once I got it working that mobs were being added and drawn, I could move on to the mob movement. The movement itself was actually pretty simple. The part I struggled with was implementing the pathfinding. Or rather, implementing pathfinding that was fast. I started with the simplest solution which was to conduct a breadth-first search on the tiles surrounding a target until the starting point was found. I found this to be really slow at first. To be precise, the queue implementation I wrote at first was really slow to remove elements. Once I implemented a circular queue the speed improved greatly, but as I tested more than one mob, it became noticeably slower. At first I "cheated" by using Full during the pathfinding but I didn't like that and set out to find a faster pathfinding algorithm. Enter A*. I found a really nice and straightforward tutorial in Python here that I translated into Axe. And with help from Xeda and E37 over on Omnimaga with implementing a min heap, I present to you, working A* pathfinding!



It's unoptimized at the moment but it is already faster than the breadth-first search pathfinding I was doing originally and its still in 6MHz mode. Now that I have some time to work on this I currently working on adding more to the backend of the AI. With that, I'm doing a soft rewrite of the procedural generation to change how I store the room data to make it easier for me to work with as well as adding room exit data so that the game can know when either the player or a mob enters/exits a room. This work will help me later because I also plan to implement a simple finite state machine that chooses the targets for the AI to pathfind to.
Last thing of note: I've decided that Citadel is a much better name for the game besides Slime Slayer since I've been designing a variety of different enemies besides slimes and I think it captures the feel I'm going for. As always, thanks for reading and any and all feedback is greatly appreciated! More progress on the way!
Looks fantastic and the pathfinding is making a real difference.

This would be valuable for others I imagine too.
Good job on the pathfinding! I like how smooth and good this looks like. Smile
I am abandoning this project. More specifically, I am abandoning this version of the project in Axe for the TI-84+. The short reason? I'm fed up with the language and by extension the monochrome platform, and developing for it is no longer fun.

The longer reason? Throughout development I have come across issues and behavior that I simply could not explain. Code that was untouched and perfectly functional would simply break when I added unrelated code elsewhere in the project. It wasn't even a large project to begin with.
I figured that I would be able to work through the issues but that was up until the AI broke. So I reverted to an old version that I knew worked but any further changes to the project would result in the AI not working again. The more changes I made the more broken it became. Granted, it was still very small and very simple, but maybe I'm a bad programmer, and rewriting it would help expose any glaring errors that I made before.

Despite my best efforts, I cannot seem to make any progress in my rewrite either. The program has already stopped working and I'm only on the movement system. Once again, I cannot explain why and at this point I have to think that it's the language and not me.
Regardless, I want to finish this. I want to finish something. So, my next hope is with C and the CE. And if I somehow fail at that, then I'll try it again for some other platform. For now, I'm just going to keep learning and try again. If I put something together worth sharing, then I'll post something.
While unfortunate that youre abandoning the monochrome version I do encourage you to consider the CE as it's a pretty well established platform now and coding in C would have its advantages as well.

Plus you know, colour!
While it's too bad to learn that you won't be releasing this for the monochrome calculators, I do applaud you for not abandoning it altogether. I think you'll find that C on the CE will have much more consistent behavior and hopefully be easier to develop for.

Any new features or additions you have planned given the faster hardware and better screen, or are you just trying to get roughly to feature parity with the original to start with?
It's been a busy month, but I was able to find time to work on this, and I think what I have done so far is worth sharing. But first, to answer epsilon's question I'm currently just going for feature parity at the moment. I'd like to get to where I was with the Axe version, including working procedural generation and pathfinding, then continue to expand from there.

Secondly, I want to shout out the CE toolchain dev team. Using it has been a blast and since I like to compile and test a lot, the process has been straightforward and easy. Plus the CE programming discord server has been really helpful in answering my questions.

I did feel bad for having abandoned the monochrome calculators, and I was pretty rash in my decision, but C quickly wiped my tears away and said "I gotchu."

So what have I done so far? Once I got set up with the toolchain I laid out a plan of action to get back to feature parity, which involves developing simple, but cumulative prototypes as a way to flesh out the functionality of the game. So first I started with a tilemapping prototype, then moved onto a movement prototype, and now, I've all but completed the mob prototype, which adds them to an array and draws them to the screen.

Here are some screenshots that demonstrate this functionality:





The next prototypes are a combat/animation prototype, a procgen prototype, and lastly, an AI prototype. Once those are done, I'll have reached feature parity, as well as completed the core systems to build on for the game. I still plan on making this open source, and once those prototypes are done I'll create the GitHub repository for the project. I'm also keeping the Axe version up in case anyone ever wants to take a look at it. It's not much, but maybe something there is worth something to someone.

As always, thanks for the continued support. Now that I have a clear direction, I'm hoping to pump out more frequent updates, although finding time has been difficult thanks to school. I've also gone ahead and changed the title to reflect the change from monochrome to color calculators. I'd love to hear your thoughts and feedback! Thanks for reading!
I think that switching to C is pretty reasonable, and if that's the difference between the game being released and not, I don't think the decision can be argued.

Also, it's looking very nice already, especially those slime animations.
Nice, it's good to see that you're still working on this and the screenshots look great! Are you using your own tilemap functions or the built-in toolchain ones?
Looking very nice in colour! I'm glad to see this project is continuing, even if it means the monochrome calculators miss out.
Looks great and you've got the endorsement from James who's made some of the best CE RPG's to date! Citadel is a cool name too Smile.
This looks very nice in color. I'm glad that this project is still going even if for a different calculator. Smile
Thank you for the kind words and the seals of approval! Honestly I am quite honored. I'm hoping that I can deliver on a decent roguelike experience for CE.

The procedural generation has been implemented. I'm actually using the same algorithm, just translated into C, but it's really nice to see it in color. I also implemented a simple "bumping" animation for combat. It's nothing crazy, but I think it fits.











Not sure if I mentioned it, but the dungeon generation is in fact seeded. Currently I am placing monsters manually, but the idea is that once I have the AI prototype complete, I also would like the generator to take care of placing monsters on the floor. Now that the procgen protoype is finished, AI is next!

No writeup yet since I haven't really done anything new, but hopefully you enjoy the screenshots! Thanks as always!
edit: to answer Tiny_Hacker's question, I'm using the built in tilemap functions from the toolchain. It works great so I don't see a need to really create my own.
Months later, the project still lives! Since then, I've added working pathfinding, and I've also begun working on making the combat actually functional. Initially, I implemented pathfinding using the A* algorithm, but surprisingly, it was not very fast which concerned me quite a bit. With help from Mateo and calc84maniac, I instead implemented a breadth-first search which actually ended up being much faster and much more playable. Once that was done, I moved on to implementing a basic combat system, allowing the player to both hit and kill mobs. I also added floaters as well as animations to go along with it as well to add visual feedback. In addition, I also went ahead and added a functioning dynamic status bar that displays the player's health, level and current floor. So, with further ado, here are some screen shots demonstrating that progress:





At the moment, mobs can't attack the player, but that functionality is up next. Once that is done, I plan on working on more UI features and adding an inventory system so I can begin adding items into the game and their associated effects. With this update, we've effectively reached feature parity with the Axe version, so now we're in uncharted territory. In other unrelated news, I've finally finished school and I've officially graduated with my CS degree! Thanks for reading! I will be posting the link to the repository soon as well as more progress of course so stay tuned!
It's great that this is finally picking up with monster stuff. I'll make sure to give it a try.
Looks great and I'm glad that you got more performance with your pathfinding.

This game looks really slick!
Wow it's been been 7 months since I last posted. However, project is not dead at all. Continuing on from the last post, I've since added the ability for mobs to hit the player so you can now take damage:



Since then I've also added a simple UI framework that allows me to build menus and by extension an inventory system. I've also added the ability to add items to the map so that the player can pick them up:





As of now, the stat window is placeholder text but the inventory system does represent actual picked up items. Aside from that, I've done a pretty large refactor of the project to make adding new items, mobs, mechanics and effects much easier for me in the future. Up next, the goal is to add the ability to use/equip/throw items from the inventory and get some basic items implemented as a start. After that, I plan to get a basic roster of mobs added and polish up the AI some more before really testing out gameplay. Not the most exciting update but things are shaping up nicely and I'm committed to finishing this game. Thanks for reading!
Love the menu system, looking slick!
cool project
Looks awesome can't wait to try it out!
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 2 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement