Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Dec 14, 2015 · View creator page →

Creator of

Recent community posts

At some point I made the Android version free to see what would happen. That’s when all those installs occurred. They stopped after I made it paid again.

@AetherWindZ would you be interested in offering a lifetime sub to Jsfxr Pro to the winner? if you want to check it out.

Great job!

The idea with the roads is you blat those road blobs onto the corner where 4 tiles meet. So yes you need to overlap them.

Just a quick note to let you know that Roguelike Browser Boilerplate is now open source under the MIT license.

The boilerplate is a JavaScript based game template that takes care of all the annoying stuff like splash screen, start screen, credits screen, instructions screen, settings screen, menus, pixel styled UI, win/lose condition screens, sound effects, animations, etc. so you can get on with making the actual game.

I wanted to make sure this happened before the 7DRL jam so you can use it. Hopefully it gives you a head start on your game. Enjoy!

Hello! I have now added the PayPal option. Thanks for prompting me to do this.

Hey thanks for trying it out. The items don’t do anything yet, they’re just for collecting. I am planning on adding more useful items soon. You can play again tomorrow! :D

Cool idea!

Ah I understand. Don’t feel bad - it’s a confusing time with so much sampling and remixing!

(1 edit)

Thanks for the great feedback, will add these points to my notes.

Thanks so much for your review, much appreciated! I am thinking of adding the ability to retry a few times. I’m trying to be careful about retaining the minimalism when adding stuff.

Thanks very much for the feedback. I’ve put an item on my todo list for more info on how the interactions work, thank you!

Thanks for reporting the level generation bug. It is in the issue tracker to be fixed. Sorry you got stuck because of the bug!

I thought the music was from Holst’s The Planets suite. I think Ayaka Hirahara used the theme in her music too. Or did I use the wrong version?

Thanks for playing the game and giving me feedback - much appreciated!

love the aesthetics and the music, great job!

Thanks for trying the game. I had the emoji idea a while ago, and then after seeing Wordle I thought it was a good fit, and I could apply the Wordle daily-puzzle mechanic to a simple roguelike.

A good point about the holes. They would work well as a trap! I will make a note of this for future dev. I also like the idea of rocks being there to block enemies. Will think about that, thanks.

Thanks! Good luck with your game. If you have a link go ahead and post it here.

Thank you Devin, and thanks for trying it out.

This is great! Love the music and aesthetics.

Hey all,

I’m excited to participate in this year’s 7DRL. I’ll be building Rogule - an idea I came up with the other day. The name is a play on “Wordle” and from that you can probably figure out the game design. A minimal coffee-break Roguelike where everybody gets the same dungeon each day. Expect emojis in great number.

PS I’ll be posting updates on this Twitter thread:

Hello Scott_Bro_1, and sorry for the slow reply. There is some example code in the other questions on this board that you can follow. Basically you have to change to be Game.monsters which should be a JavaScript array like []. Then add new monsters to that array like in this example:

Good luck.

Please see MisterAtompunk’s reply about rendering the stat updates. You do not have to buy any update. All the updates come with the original purchase.

Hi Scott. Can you please tell me more about the hit points bug? What are you seeing versus what you expect? Please feel free to share your code.

In terms of updates, any will be available to you. You’re entitled to all future updates. I will post here next time I release an update.

It’s quite easy to do this using seedrandom. You simply load the library in your index.html:

<script src="//"></script>

Then early in the main script call it with your string as the seed:

Math.seedrandom("your seed string");

This will replace Math.random() with a deterministically seeded version and you will get the same results each time.

One other option is to seed ROT.RNG.setSeed() and/or use a cloned RNG with ROT.RNG.clone() which may give you more control in specific circumstances.

Excellent as always!

Thanks so much for the feedback! I’ll fix this.

(1 edit)

Our collective has a bot that tells us the follower count from Twitter, Mailchimp, etc. once every month. We would also like to get the follower count from Itch but I can’t see a way in the API to do this. Is there any plan to add follower count to one of the current API endpoints?

No problem, I’m glad it’s useful.

No worries, great to hear it’s working.

Hey sorry for the delay. I fixed your bug and moved the conversation to the “questions” section:

Debugging @MisterAtompunk’s monster issue.

@MisterAtompunk was adding a new monster when the old monster died. What happened was an invisible monster was created that hit the player every move. I suspected the issue would be an error with the monster’s position. I added some console.log() statements and I saw this output:


The undefined value printed there tells me there is an issue. Two variable are printed: _x and _y and it looks like "5,4" is being set to the first variable, and the second is undefined.

If you look at the makeMonster(x, y) function you can see it accepts two arguments, one for x and one for y, whereas the old code was doing this: makeMonster(Game.alienfort) which can never work because it’s only passing in the one argument (a string with “x,y”).

The fix is to get the x and y values separately out. So I changed his code to this (line 850) and it fixed the issue:

  const pos = posFromKey(Game.alienfort);
  const m = makeMonster(pos[0], pos[1]);

Always check the “arity” of your functions to make sure the arguments going in match what is expected. Using console.log() is a useful way to see if variables hold the value you expect.

Yes what you can do is create a new div on the same position, similar to the way the ghost is created.

You should make sure you have a blank tile in the tilemap and assign it to the space character like “ “. Then you can create the empty sprite and put a number inside it:

const number = createJuiceSprite([p._x, p._y], " ", "float-up");
number.innerHTML = "23";

That should create a number 23 which floats up and then disappears.

Hey, I think this is happening because you are pushing an array in there not the actual object.

Change this:

game.monsters.push([createBeing(makeMonster, freeCells)]);

To this:

game.monsters.push(createBeing(makeMonster, freeCells));

Removing the square brackets will just push the one monster into the monsters array.

Nice work, glad you got it working! The renderStats function must be called every time you update the stats.

Hey do you want to send me your code and I’ll see if I can debug what is going on. Basically what I’ll do is sprinkle console.log statements throughout the code to check that each variable holds the values I’m expecting them to hold. For example I’ll put some log statements inside monsterAct so I can check why the monster is hitting you but not getting drawn. I suspect it is to do with an undefined/null value somewhere, so I’ll be trying to track that down.

If you do console.log(Game.alienfort) immediately after creating it, you will see the position printed. Note that the position is a string like “5x7” not an object like {x: 5, y: 7}.

So in your code where you say makeMonster(Game.alienfort.x + "," + Game.alienfort.y) you probably want to change it to this: makeMonster(Game.alienfort) because the variable is already in the correct x,y string format.

Putting it in a function is a good idea.

You should open the browser console and see what the error was. That will help you fix it. Really take care and time to read and understand whatever the error is. Pasting the error into a search engine will help. You can find the developer console in the developer tools menu in your browser.

The freeCells array is only available inside the generateMap function. You will need to make it available outside if you want to use it outside, e.g. Game.freeCells = freeCells.

You could then pick a random cell like this: ROT.RNG.getItem(Game.freeCells).

Good luck!

By the way, everyone is a charlatan programmer. I’ve been coding for 30 years and I still have to Google function names and stuff. So you don’t need to call yourself a “charlatan programmer” you can just call yourself a programmer. :)

You should be able to use code like this to add a new monster during gameplay:

const m = makeMonster(x + "," + y);
Game.scheduler.add(m, true)

The variables x and y should be set to the position in the level where you want the monster to start.

This should hopefully be fixed in the last release.

You can now press “enter” or “spacebar” or one of the controller buttons to clear messages.