Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

James McNeill

30
Posts
51
Followers
28
Following
A member registered Dec 15, 2016 · View creator page →

Creator of

Recent community posts

The screenshots all look very cool! Looking forward to seeing where this goes.

Thanks! We are working on getting a second version out; hopefully soon.

Glad you like it! I’ve got a few other variations on turn-based stealth, if you want to try them. The latest is Lurk, Leap, Loot, made in collaboration with Damien Moore for the 2023 7DRL. It’s experimenting with fixed (albeit procedurally-generated) patrol routes and four-way movement, and Damien added great graphics and sound. The earliest is ThiefRL, with features like lock-picking, notes and signs, friendly and neutral NPCs, but with a fixed map. It’s a Windows executable. In between is Disguiser, an experiment in disguises. All three are written in different languages (TypeScript, C++, and Rust), not that that matters.

If you have trouble with the Itch.io interface for the web-playable games you can try the versions over at my development server but note that they are not always the same as the Itch.io versions. Disguiser, for instance, has a different meaning for disguises over there. They may change without notice.

Happy sneaking!

Thanks! Glad you enjoyed it.

It’s so great to play another game from you! I played this one twice through on my own before resorting to the hints to see everything on a third play.

Your games are so playable. They’ve got imaginative settings; concise, evocative writing; systematic gameplay; generous hinting; and beta testing.

Like Introscopia says: very interesting navigation system.

Is there a way to kill the enemies? So far it seems like they latch on to me and I have to dodge their swords every turn?

DROD! Very fun.

(1 edit)

Thanks! Your SkyRogue was a big inspiration for me this year.

The barks were coded and put in by Damien Moore (my collaborator this year), and recorded by his son Evan.

I’ve been trying out a stamina-meter thing for leaping but I am not sure it’s fun. Will keep noodling a bit. Trying to go to four-way movement this year was hard! I noticed you went from four-way movement in SkyRogue, to eight-way movement in your 7DRL entry this year.

The levels are created from a mishmash of stuff; a lot of graph-algorithm things. I think this is code I started working on in 2009 or so; here’s a blog post: http://playtechs.blogspot.com/2008/09/villa-creation-first-steps.html. It’s been used to generate starship levels as well (with a more free-form set of rooms but keeping a symmetry axis).

The core of it is a grid of rooms. The number of rooms in each dimension is chosen by adding up coin flips (with the number of coins increasing with later levels), so there’s a fair amount of variation. In this version of the game there are ten mansions. It generates the number of rooms for all the mansions up front and then distributes 100 loot across the ten mansions in proportion to the number of rooms they have.

For a given mansion, I then offset all the walls randomly a bit, then go through every corner between four rooms and force either the horizontal or the vertical walls to line up. The inspiration for these are siheyuan, the Chinese courtyard houses, although the overall structure doesn’t end up very close to them. Still, it has the symmetry axis, the southeast entrance, and the private rooms at the back of the house. Courtyard rooms are randomly chosen; the private rooms are just the back half of the house or so, as measured by distance from room to room starting at the southernmost rooms. Room decoration is designed to get a bit less friendly for cover as you go toward the back of the house. Windows are just part of the room-decoration system, which has some templates for different sizes of rooms. Loot placement first distributes loot to dead-end rooms (it’s a law of games), then to private rooms (farther from the entrance), then wherever.

Guard patrol routes are built so every room gets visited by one guard. It shuffles all the room adjacencies, then assembles them into chains (which can become loops). Then it clips long chains into shorter pieces if necessary to try to hit the target guard density for the level, and finally inserts side-trips into any rooms that didn’t make it onto the chains. For any end room in a route it tries to pick an interesting place for the guard to go: a window to look out of, if there is one; a chair to sit on; or some loot to stand next to. If none of those are available it tries to walk a couple steps into the room. On later levels a couple of extra guards are added to patrol around the outside of the house.

The code’s on GitHub if you want to look at it: https://github.com/mcneja/7drl-2023/blob/main/src/create-map.ts It’s not the most elegant code, and has been hastily ported from Rust (which in turn was ported from C++). The guard patrol routes were the major new bit this time around.

Just finally completed my first mission. This is gorgeous and fun and seems very detailed! I loved Skyrogue and used it as a reference point for my 7drl this year, so I am really interested in playing more of what you've done here.

Thanks! I thought the zoom keys were the square brackets [ and ]? Slash (/) brings up the help, but Esc will also work if your keyboard has that. I just tried all three keys in Firefox on my machine and they seem to work? Maybe I'm misunderstanding what you are describing?

Thanks! Glad you enjoyed it. Damien pushed to have patrols. It does let you observe, form a plan, and then try to execute the plan.

The other big design challenge I set myself this time around was to go from eight-way movement to four-way movement. When I've tested games on people, quite a few are not familiar with eight-way movement and it's also hard to do on some keyboards. The dash is kind of the opposite of the corner-cutting that my eight-way-movement versions have had: dash gives you an advantage in open space, while corner-cutting gives you an advantage in tight spaces. I'm not sure I've really come to grips with all the implications yet. I liked how it cut down on the overall keystroke count for completing a level; it feels like you want to do it all the time. I did try out a stamina model but I tend to think of stamina meters as "fun meters" that make you stop having fun periodically. I will probably keep experimenting with that though to see if I can find a good balance.

Thanks! Yes it is much more playable with a good mouse. Also adjust the sensitivity to match your mouse using the comma and period keys (< and >). The mouse I developed it on feels good at zero which is why that’s the default, but my work mouse needs to be dialed up to around 8 to feel the same.

Good ideas! I was definitely envisioning the over-map as being a way to exert a bit of control over the style of level you play, in terms of what the level generator is and what play features are present on it. It'd be nice if the player could pick to a certain degree but with some surprises, still. Obviously I would need to develop more level generators and play features to get the variety.

The idea of making a district ramp up in difficulty is similar to one I'd had; it would help push the player to try different areas. Another idea along those lines was that I was thinking mansion owners could stay home or visit someone else's place each night, so you'd get some mansions that are lightly occupied but guarded, and others that are full of people, and which was which would change each night. The ones full of people would have goals involving information-gathering, and maybe disguise gameplay, while the ones with the owner gone would be more focused around stealing loot or documents, and maybe feature traps and alarms.

I'd like it if there were some gating so you can't just go straight to the final location, but I haven't come up with how that would work. I tried a variety of puzzle-ish games, looking for the feel of gathering clues that help guide where you go next, but I think I was going too complex. All those prototypes are not web-playable, alas.

It might be enough to just have a couple of tracks you need to make progress on: money and clues. The money track would be straightforward looting (and you can't really loot the same place twice), and the clue track might just pick a subset of the maps each turn, and playing one of those would give you a chance to collect the next clue. I think stealing information is a potentially interesting vein to mine: overhearing conversations, digging up records, confronting people when they're alone, that sort of thing. If/when I return to this I'll be trying out some mechanics around those.

I’m glad you enjoyed it! It’s true there isn’t much game here. Disguiser was a semi-successful attempt to add disguises as a tool although their exact role isn’t settled in my mind. There is a slightly newer version over on https://mcneja.github.io/ that changes the role of disguises a bit. Still more to do though. It was also an attempt to learn Rust, JavaScript, WebAssembly, and WebGL be able to move games to the web for a lower barrier to getting people to try them. The native version runs faster but it’s much better for people to be able to easily try it.

I’ll devote more time to it at some point. I’ve made these while also making big games; the last one, Ghost of Tsushima, took seven years or so. One of my daughters finished elementary school, went through middle school, and started high school in that time window. I should have set up a counter for the throats I slit. Maybe ten thousand? Which is why the thief in these games has no capacity for lethal violence. I always envisioned it being a game where you’d kill one person, near the end.

I spent some time trying to come up with a wrapper game; something like a map of a city with all the individual buildings you can infiltrate on it. I’d like there to be an overarching mystery to unravel, or threat to unmask. Figuring out how that should work has been a challenge.

Thanks for recommending Harmonist to me; I hadn’t heard of it but will try it out. Another that I really enjoyed is https://dragonxvi.itch.io/skyrogue. It is short and the levels are pre-made but it’s fun and looks and feels great.

it just keeps going… more like an arcade game I guess. I’ve been trying out various things to come up with a wrapper game that would have you choosing places from a city map to infiltrate to drive a story forward, but I haven’t gotten anything workable yet.

Thanks! I am also a huge fan of the Thief games (and the mod scene for them).

You've got some good ideas. I've thought about doing multiple levels; mainly unsure about how separate the levels should be. If they are totally separate (enemies can't go back and forth) then there isn't much point, other than giving the player some extra routes. If they're just layers of a level (upstairs, downstairs, basement) with free movement between then it is a bit more difficult to present clearly. (Let's say an enemy is spotting you from an upper balcony; how would that be represented?) It might be worth it to have layers though. I've also done sketching on isometric tilesets; still not sure about that. It does make things less clear.

More types of levels is definitely a good area to explore. Getting more varied texture to levels, too; it's just a collection of connected rooms right now.

We'll see! I'm a professional game developer in addition to a hobby game developer. I don't always have a lot of free time. Once a year I take a week to work on things like this though.

Thanks for the kind words! I got the Ctrl/Shift scheme from Dose Response. I haven’t played it enough for it to be second nature, and my wife’s notebook’s left Ctrl key is busted so it’s no help there.

(1 edit)

Yeah, I had that trouble as well after a Windows update. It would actually delete the executable about a minute after I compiled it in Visual Studio! Very annoying. Eventually it seemed to stop happening here. Not sure what they were seeing; it is a fairly simple program written with Microsoft's Visual C++ that doesn't do file or network I/O. I have uploaded a version 9 that is recompiled with the latest version of the compiler. Hopefully that allays Windows' suspicions.

I think you got unlucky with that game! In rare occasions it can put a chest on an inaccessible island.

After thinking a bit, here's some advice from me specifically:

  • Deadlines are good. 7DRL, that sort of thing. To encourage finishing.
  • Testers are good. If you can rope a friend or two into playing the game for you it helps a ton. I put a keystroke logging and playback system into ThiefRL and got play session recordings from my brother and a friend, and it really helped me find spots where the game was confusing.
  • If making a game is your goal, always ask yourself what the simplest solution that could possibly work would be.
  • Make sure that AI systems are focused on the player experience. If there is a complex simulation that isn't communicated well to the player, it just looks like random things happening, or worse, is never noticed at all.
  • Making games is an endurance sport. It takes years of effort, each piece built on the ones that came before. A lot of the indie hits of recent years are 5-7 year projects, which is a bit of a slog.

Cool! Always great to have another Roguelike developer. It's a genre that really helps to focus development effort on gameplay, systems, and imagination.

I have been working on this stuff for decades so I'm not always sure what advice is relevant. But here's a shot at it.

Josh "Kyzrati" Ge is the developer of Cogmind and tireless pillar of the Roguelike-development sub-reddit. He wrote an article, How to Make a Roguelike, that has some good general advice.

Another thing they do on that sub-reddit is an annual communal working-through of the LibTCOD Roguelike tutorial. Roguelike developers being what they are, people will often work alongside in some new language they want to try. For instance, this one from Lokathor, in Rust. I've learned quite a bit from Lokathor's Haskell attempt from the year before the Rust one.

If YouTube videos are your jam, the annual Roguelike Celebration generates some good ones. I enjoyed Bob Nystrom's talk about how he architects his Roguelike, for instance. I'm still kicking myself for not going to the Roguelike Celebration yet; maybe next year.

For Javascript there's rot.js, a Roguelike development toolkit that might be of interest, for educational purposes if nothing else.

Hope this helps!

Thanks! I've been a fan of the Looking Glass style of games since Ultima Underworld and on into Dishonored. I love the emphasis on creating an immersive atmosphere; on giving the player a bunch of fun systems to play with, even if they're not balanced; and the exploration of non-combat interactions with enemies.

There's an older ThiefRL I did that's available elsewhere (https://sites.google.com/site/mcneja/thiefrl) that is much more explicitly trying to ape Thief. It has a few more features (a friendly NPC, lock-picking, secret doors, extinguishable lights) but is a single hand-made map.

This game (ThiefRL2) was primarily an attempt to come up with a random map generator for that style of stealth gameplay in the space of a few days. It turned out pretty well; my wife still plays it. I'm working on some follow-ups.

(1 edit)

Glad you enjoyed it! I have added a left-hand control scheme, like you described. It's the version 8 download above.

Hey, thanks for including my game in your video!

(2 edits)

Ah, good point. I collected a whole bunch of Julian-day-number-to-date conversion functions off the internet and then ended up having to write my own from scratch because they all relied on 32-bit integer arithmetic. I imagine there are probably other problems with my converter as well. For instance, the Gregorian calendar started in the 1500s; before that it was the Julian calendar, which differed by a couple of days at the 1AD mark. Probably better to use the Gregorian to go back in time, though, because it matches the solar year better.

Also the planet positions are unlikely to be accurate more than a few hundred years out. Mercury, in particular, has a large first derivative on its orbital elements. It would be fairly easy to add the first derivatives of the orbital elements in; JPL provides those.

It's a complete game and I think it's a bit fun to play; it's just very short and not Roguelike.

Sorry for the delay! I had some time before starting this year's 7DRL so I put in a zoom feature on this game. You can press 2 to get 2X tile size, 3 for 3X, and 4 for 4X if you want them ridiculously large.

Thanks! Glad you enjoy it. For full screen are you thinking of something that scales up? Or changing the screen resolution? What resolution and screen size are you using?

(1 edit)

I love the look of these tiles!

I'm not using RPG Maker; if I use these it'll be in a procedurally-generated game. I did some research to learn how RPG Maker tiles are set up, though. (Here's an explanation.)

I had a question about the tree and mountain tiles in the right half of the A2 sheet. My understanding is that the four tiles in the upper-right of each set (next to the thumbnail) are supposed to be the inside corners of the transition edge, but it doesn't seem like any of the sets on the right half of the sheet work this way. How are inside corners constructed with those tiles?

(Edit: Figured it out; never mind!)