Caverns of Underkeep - Applet Roguelike

*** Edit *** Link is now Fixed

Hello, I’m new to these forums and I thought I’d post about a game I’ve been working on over the last 3 months or so.

Its a browser-based roguelike, modeled closely after Castle of the Winds

The current project status is that the game is in Beta, any bug reports and feedback are appreciated, especially when it comes to doing a sequal.
(which I’m about 90% sure I’ll do, only when is the question that still remains…)

You can play the game at www.tinyfrogsoftware.com/cavernsbeta

Image seems to have some funny scaling on it- But you get the idea

http://www.tinyfrogsoftware.com/cavernsalpha2/cavernsalphascreen1.gif

After the applet loaded it remains white with the following error.

Exception in thread "Thread-8" java.lang.NullPointerException
	at sSoundEngine.stopHeartBeat(sSoundEngine.java:204)
	at javarogue.run(javarogue.java:214)
	at java.lang.Thread.run(Thread.java:619)

This is under Ubuntu Linux 7.10

worked great here - enjoyed it thoroughly - but couldn’t save :frowning:

Thanks for the report I should be able to fix that,

Thanks, saving is a bit too difficult for me to implement. The game is short but, at around 1-2 hours.
It seems browser based games need to be shorter, so for the sequal I might have to try to make a 30-45 minute roguelike so people can play it in their lunch breaks :slight_smile:

It’s fun but it really needs a save system! I fought my way to the second dungeon and died…

I’m playing the game now, and it’s really cool.

A save system would be nice, but you could make it so that people are ressurrected in town with a gold and xp loss upon death. That would reduce the effects of getting killed. It would still hurt you, but wouldn’t end the game.

Maybe you would only get ressurrected if you some special item, which is consumed when used. You could start the game with one and have to find more later.

I really like that unlocking treasure chests has an actual puzzle to it, rather than just checking a statistic. It would be cool if disarming traps did too. However, statistics should count in some way. Maybe if the relevant statistic is high enough, the puzzle is partly solved for you.

Edit: Also, IMHO, raising Endurance or Intelligence should retroactively increase your HP and MP from previous levels.

Thanks for the feedback

There is an item which resurrects you when you die, you have to buy it at the magic shop (and have it equipped) in order for it to work.

Another mini-game would be cool, I’ll think about adding one.

Oops!

Exception in thread "Thread-40" java.lang.IllegalArgumentException: alpha value out of range
	at java.awt.AlphaComposite.<init>(Unknown Source)
	at java.awt.AlphaComposite.getInstance(Unknown Source)
	at guiButton.render(guiButton.java:109)
	at GameState.renderSuperClass(GameState.java:124)
	at GameStateManager.renderCurrentState(GameStateManager.java:248)
	at javarogue.run(javarogue.java:226)
	at java.lang.Thread.run(Unknown Source)

@SimonH

Thats a bit of an odd bug, theres range checking before calling the function… may I ask what OS and comp specs you have?

Oh, wow. =) I love this, so here’s some hopefully useful feedback:

I used to play roguelikes quite a bit, my first one being Castle of the Winds, and my favorite one being ADOM (although the current version crashes… sigh…), and this is just neat. I love the idea of a simple applet based roguelike without too many confusing stats and things to keep track of, and the graphics are nice and clean.
As you said, it might be a bit too long for casual play. Some kind of cookie system where the game picks up where you left off when you leave the page, perhaps? I’m not sure a 30 minute roguelike would be much fun, since then you don’t feel like you’re leveling up your character for a purpose.

The interface is really clean, with good tooltips on most things, I just wish more of it was playable with just the keyboard, like the inventory and the chest minigame.
Speaking of which, the chest opening minigame seems to be very picky about registering my mouse clicks, turning it into a frustrating competition against the controls instead of against the word puzzle (which I like! It beats the hell out of the plumbing in bioshock).

I love the art and the sounds. They’re simple, sure, but they feel solid and thought through, with nice damage text pops. For some reason, I keep getting the “hit” and “miss” animations mixed up, though, I think it’s the green color on the miss that does it… perhaps replace the green “miss” icon with a gray one? Oh, and perhaps the damage popups could have a different color depending on if it’s the player getting hurt, or a monster?

The line of sight code seems a bit strange, leaving gaps in corridors, and showing more to the left than on the right below the player sometimes… I’m guessing you’re doing simple raycasting?

I’ll play some more… If I think of more comments, I’ll post them. =)

Thanks Markus :slight_smile:

I’ll check into the input, infact managing input in java applets, the whole eventing system - why not be able to poll? Has been a bit of a thorn in my side.

You’re right about the LOS code, it’s a bastardised version of raycasting - I’ve never noticed it being a bit odd, I’ll pay more attention next time I’m play testing.

I just noticed it was sucking up 100% cpu time when idling, making for a not-so-fun session of team fortress 2. =)

AMD 2800+, 500MB RAM, W2K

It’s a fun game - reminds me a bit of exile all those years ago…

Re saving - can’t you give a password/keyword at the end of each dungeon, so if you have to leave you can come back to almost where you left off?
eg;
password1 gives XP level 2, 200 gp
password2 gives XP level 3, 300 gp &c

Maybe you should consider making a more complicated application version of this game when you’re done with the applet.

It could be even more fun and have a good save/load feature.

Great job! I ended up liking the game more than I anticipated! I just wanted to give it a try but then ended up playing for half an hour ;D

One comment: It would be great to change the mouse pointer when I am above the avatar. It feels very awkward to pick up items, because there is an array pointing away… Maybe picking up of items could also happen with a left-click of the mouse?

If you stand on an item and right click you can pick it up, left clicking whilst adjancent on such a small tile felt a bit wrong when I implemented it.

I’ll look into the cpu hogging, does anyone know how to stop this? Do I need to call somekind of sleep function? At the moment I just let it run in a tight loop.

A lot of the comments have been about design issues that I’ve had to make compromises over :wink:
I’ve pretty much got two paths that I’d like to take a) Make another applet game and make it half the length and b) Do a downloadable game and make it 5x the length (and allow saving)

I’ll probably do both when I find the time :slight_smile:

Indeed, the best strategy seems to pile everything into Endurance for the first few levels to make yourself indestructable - only then begin to worry about being able to kill the enemies in any reasonable time-scale.

I only played it very briefly, but it looked very nice, clean, simple and fun. I will come back when I have time. If you generate the dungeon from a single seed, you could give that seed to the player. Together with a compact string for the players stats. When the game starts, the player can input the seed and the player stats string and the continue play where he left.

Thats the method I thought of, along with recording all the players input to play back the game in highspeed. Unfortunately because the game is still being tweaked and altered the playback might not exactly go very smoothly :slight_smile:

Yes, you should! You need a Thread.sleep(10) near the end of the run loop. (I did some tests and found that sleep(10) is actually faster than sleep(1))