Sorry I didn’t have a lot of words this year. Only two posts and they’re pretty brief. Mike and I did a one week sprint and did probably about a month’s worth of work in that time. Unfortunately, it’s not a Roguelike. But it’s still rather fun and the framework and engine are all really solid. Please, try it out!
WASD + Mouse – Move
1,2,3,4 – Use item, Pick up item, Open/Close Doors
Hold 1,2,3,4 – Drop item
Please look around and see the results of our effort.
Day one has gone fairly smoothly, though I haven’t got as much done as I would have liked, mostly due to being distracted by some real-life errands. However, the rest of my week is all clear, so it’s full steam ahead from here. So far, I have the basic framework set up, area generation is done aside from fine-tuning, and the player can move around the level.
If the graphics look familiar, it’s because I’m using the Dungeon Crawl tileset. As much as I would have liked to create my own graphics, time is of the essence, and this tileset is perfect for my purposes.
One of the main things I was hoping to get out of this project was a sense of how easy or hard it is to use my library to make a game from scratch, and I’ve already made a long list of potential improvements. That said, I managed to get things up and running fairly quickly, so I’m pretty happy with it overall.
The agenda for tomorrow is items, equipment, and inventory management.
This year, sadly, I’m not doing another Android roguelike. I’ve teamed up with a college buddy whom I’ve worked with both professionally and at various game jams previously and we’re jumping in full force to do a roguelike in Unity. Well, a roguelike-like. It’ll be action based instead of turn-based and maybe not as much randomization as I’d otherwise like in a roguelike. Still, this week promises to be a lot of fun and I’m excited to see what we end up with.
In the first day we’ve got a ton of stuff working. We can load map modules from JSON files, run around, have rudimentary enemies and attacks. Graphics are all terrible and mismatched, and calculating pathing is a huge pain. Oh, and as you can see from the screenshot, lighting is non-existent.
But, we have a solid plan and there were no major roadblocks for the day, so I’m pretty optimistic going forward.
Despite tinkering with roguelike development for a few years now, this will be my first time entering the 7DRL challenge. I’ll be using a roguelike library that I’ve developed in my spare time over the last ~8 months, which I’ve dubbed ‘Blackguard’ (as in a synonym of ‘rogue’, not the DnD interpretation). It’s written in C++, uses SDL2 for rendering, and is focused on tile-based games. Right now, it provides the basic game data structures you’d expect, along with pathfinding and simple enemy AI. For anyone interested, I’ve made it available open source here.
My main goal for this week is to make my first complete game using this library, so I’m aiming for something fairly simple and traditional in terms of gameplay. That said, I also intend to experiment with the idea of minimising the amount of numbers the player sees describing the game state, and expressing combat, item attributes, etc. in a more narrative way.
I haven’t figured out a final name yet, so I’ll go with the working title ‘Blackguard’ for now.
Probably the biggest thing I did today was a rewrite of the loading code to parse a JSON description of the level rather than a flat ASCII map – mainly because I was concerned we’d run out of single characters to express all objects in all orientations in all special cases etc. I hadn’t used JSON in C++ before; a quick bit of googling turned up jsoncpp, which worked like a charm (A+++ WOULD COMPILE AGAIN!!1)
I wrote some classes to represent rooms and items, with a generic interface to ‘interact’ with items. There are no weapons in Inside Out, but there will be lots of objects to interact with – principally by hiding inside or beneath… Though the only type I added today was the light switch: as I intended I implemented the room lights at first with vertex colouring per tile, but we also want the player to carry a light later on, and I’m quite keen to get nice looking shadows too, so I disabled it and gave the player a blended light source. I haven’t yet rewritten the room lights with blending, that’s first thing tomorrow!
Also, as you may have noticed on the screenshot I’ve added a single line of status info. The hope is by Sunday it will be overflowing with blood-curdling terror (courtesy of our final team member Adam), but for now I’m just using it to make Monty Python references.