A traditional roguelike based on Simon’s Quest, made for 7DRL 2024. Play online at https://slash.itch.io/cvrl2-the-lady-of-berkeley
It’s been 20 years of participating in the 7DRL challenge. Incredible.
The two weeks prior to the challenge I decided to create a short video to serve as “theme reveal”. Together with Stoltverd we recorded gameplay (more like, deaths), from highlighted entries from ALL of prior 19 challenges and I put together a video with them and awesome sound by QuietGecko. A sign of the things that were to come.
As the challenge started, I really had no idea what to do; I had briefly discussed an idea with Gecko, very raw, about some kind of odd “micro world” inspired by Emerald Woods where you lived in a cabin in the woods (again), but instead of exploring and crafting and farming, it was more of hardcore survival. You would wake up every day to venture into a nearby cave (nowhere else to go, almost claustrophobic) where you could find food in randomly generated caverns, and then, after descending for some “levels”, you would jump into a hole and pop up back into the land near your cabin. Crazy. It was going to be 3D.
Other idea I had, was creating a game inspired heavily by the original Prince of Persia, mainly to replicate the feeling of exploring an abandoned dungeon; but I think, for that, I’d need to team-up with a pixel artist that would be equally excited about the idea… maybe other time.
Day -1, Saturday, March 2
I completely forgot about those ideas by the time the challenge started; my mind was completely blank. I knew I wanted to continue with the tradition of making an ASCII roguelike (as SpelunkyRL, Rainy Day, and Emerald Woods before), so I thought it would be good to at least have some small time gain by preparing a JSRL clone ready.
That first Saturday, still without declaring my start, I randomly landed on a reddit thread about CastlevaniaRL. Out of nowhere it hit me: As a way to close 20 years of 7DRL challenge, what could be best than making a sequel to my very first roguelike from 2005?

What if, in addition, it was based on the sequel to the original Castlevania?
I also knew the game HAD to be ASCII, to be able to cover the scope what I envisioned and because I hadn’t secured a partner artist in advance (like I did last year with Monte del Diablo). However I had this idea on my head of adding some super cool original illustrations every time you visited a new location. I thought it would be cool to have that, IF possible, but it wouldn’t be a blocker for the completion of the project if I didn’t manage to find an artist.
I started looking for the artist; instead of contacting old pals I decided to make an open call in Twitter, just to broaden my connections.
Day 0 – Sunday, March 3
Through the night, my tweet got some engagement and I contacted back a couple of artists that seemed interested, including Vitor Ximenez, a freelance illustrator with some pretty fitting pieces on his portafolio.
I pitched them the idea, but figured it would be much more helpful to put everything together in a doc, so I took advantage of the ruleset of the 7DRL to write up a quick design draft (or the foundations of it).
The scope was grand: I would port the entire Castlevania 2: Simons Quest because, why not? gotta make it BIG! here’s an excerpt from it that was used to guide all the dev.
Traditional roguelike, top down, turn based, with overworld. Heavily inspired by ADoM. Roam the countryside (overworld, expensive movement) traveling between towns (to find clues to destroy Dracula) and the Mansions (dungeons where the relics of Dracula are found).
The game clock is the curse of Dracula, each step in the overworld takes 2 hours, and you will die in seven days.
There is also a night/day cycle.
Mansions are procedurally generated and require finding keys to progress, and then defeating a lord of the manor to obtain a relic.
The main view is displayed as a 80×25 top-down ASCII map. Color palette is limited to 8 colors (to be defined by art). The maps are on sync with the display, 80×22, fixed camera (unlike CvRL)
When entering some locations, a floating window will display a high resolution illustration of such location (at 800×600 pixels (to be confirmed with artist))
Slashie, CvRL2: The Accursed Demon Seal, Design Doc
Since the game was to be inspired by ADoM, the overworld would be completely fixed. I set myself to use the map of Castlevania 2 from the design docs (which didn’t really match one to one to what you could see in-game) as a reference to the one you would be able to roam in the game.

A map of Transylvania that shows the various locations and paths within the game was produced after the names of the locations was determined. This map would be the basis of the maps that would become available to players.
This map would later become directly available to players when it was included in the The History of Castlevania: Book of the Crescent Moon e-book that was included in the Castlevania Anniversary Collection, which also had an English language translation.
Castlevania Fandom wiki
(That reminds me of the Castlevania map I did for the LRUMP project ages ago in 2013.)
In addition to the overworld, there were also going to be some fixed locations paying homage to both the original game and the Castlevania series; one of them would be Belmont’s Hold, the house of the Belmont Family.

The idea was for it to serve as the starting location, and also as a repository of roguelikized Castlevania lore, for fun.
Since we were going to have these fixed maps, I needed to figure out the tooling to be used. I decided to use good old, useful as always, REXPaint by Josh Ge, and created some test maps to get an idea of how they would look and add that to the design doc.

12:57PM: Vitor, the artist, came back to with an idea, he thinks he can create some pictures similar to this style, which I thought was perfect for what we needed. He warned me, though, that his week was going to be pretty hectic.

Back to planning: For this year, I decided I would attempt something different. Instead of setting up the skeleton of the game first, code-wise, I would start acquiring and organizing a lot of data, so that in the end the entry wouldn’t end up as an promising engine and an empty game.
I visited several sources of information from Simon’s Quest, and started compiling data for enemies mainly, transforming it into roguelike-able format, just to toy around and have an idea of the data that we would be handling.
Since the idea was now much more clear in my head, it seemed the most sensitive option would be to start from Rainy Day and reuse all the logic it had already for the overworld and ranged combat, for instance, instead of starting from a blank JSRL project. However, I checked the repository, and surprisingly found out SpelunkyRL was actually a branch on it! since it came later, I figured it probably had improvements incorporated that couldn’t be ignored, so I decided to instead branch from it.
10:50PM I got a reply from Polina Lanko a.k.a. Sirena, an illustrator who was looking for a team in the itch.io forums; she was interested to work in the project as well! So I told her to get in touch with Vitor to coordinate on the work and the visual style required.
The clock started running at Sunday, 11:59 PM
Day 1 – Monday, March 4
It was finally time to get my hands dirty with the code.
The first thing I did over SpelunkyRL’s codebase was getting rid of the monochrome display, since for this one I wanted to go with a full palette (even beyond the color limitations of the VGA era). It was an artificial restriction I had imposed over the JSRL foundations, so it was not that much of a chance.
Then, I exported the TXTs from RexPaint and loaded the first maps for the Belmont’s Hold and the Wallachia overworld, finally I tweaked the UI a little bit.

I should note that the way static map loading it works with JSRL’s LevelLoader is, there are two arrays of strings representing the tile map and the regions map; each character in the tile map is mapped to a dictionary that links it to an actual tile definition where the actual appearance and attributes of the tile are defined; this means the appearance of the map in RexPaint doesn’t really matters that much beyond ease of edition, and doesn’t match what ends up in the game (unlike for roguenet, where I dynamically created tile definitions on the fly based on the entire RexPaint map data, which is a different approach).
I went to bed around 2am with this progress.
Next morning, I contacted WoodsyTee, who had posted in the 7DRL challenge board looking for a team to contribute with music and sound; since I thought we would either use Jorge Fuentes or QuietGecko’s music, I asked him if he would be interested on the sound effects part. He was in.
On the other hand, I had to clarify to one of the artists I was talking with that this was an unpaid jam thing, which was a bit awkward for me and surely disappointing for them. I went thru and added that to my tweet, to prevent any further confusion, also had to talk with all the teams members to confirm we were on the same page about this; another artist never replied, I’m guessing they were expecting otherwise as well.
In between dead times thru the day, I continued my quest of filling up data from the game; I found a pretty sweet re-translation project which took the original Japanese dialog from Cv2 and “fixed” it (not just with more accurate translations but also spiced up and made better). I basically extracted as much as I could from it, into my loadable structures.
Night time, I created Jova town along with NPCs that talked.

I also added support to display the location images whenever you entered a location, using the sample image from Vitor, just to get the team excited on how it might look; I liked it.

And that was the end of Day 1. You could walk around the overworld and enter Jova town and chat with random people.
Day 2, Tuesday, March 5
Past midnight, I decided to push a bit more, to allowing leaving maps from “the borders”, i.e. walking away instead of having to use an exit tile. So now you could leave Belmont’s Hold walking anywhere outside.
Next morning, I was pretty busy with family stuff, work, and then not feeling well at all during the PM. Still recovering from soft-COVID from last week it seems.
Managed to do some late night progress though, I tweaked the title screen flow a bit, and the initial inventory, just to be able to send a first build to the audio guys so they could hear and get an idea of where we are going. I’m still wasn’t sure if we should just pack Jorge Fuentes’ amazing arrangements, or create our very own, inspired by them.

I also added some messages to the gravestones, just for fun (derailed into investigating the Belmont lineage more than I should).
Continuing with the idea of “content-first” development, I also finished transcribing all of the NPC texts so that we could load them into the game eventually.
The biggest progress of the day, though, was adding random encounters with volatile (simple) procedurally generated areas, which was a first for me in roguelikes. The algorithm to generate the area was the simplest possible thing, just scattering some trees randomly, but it would do the job until a more detailed thing was added in (it never happened).

Day 3 – Wednesday, March 6
Again, a pretty unproductive day due to adulting, work, and feeling tired overall.
Continuing with my focus on data entry I organized the parameters for the procedural generators for all the “encounter” areas for the overworld regions, as well as an initial configuration of the generator for dungeons (mansions and caverns). Still a lot of tweaking to do on the latter mainly, but at least we have a first step for dungeons (which is what makes this a roguelike in any case).

I worry that the game still doesn’t have a combat system of its own, and the time is running. I plan do address that tomorrow with Stoltverd, as part of his work in Slashware.
I also started looking for someone who can help fill the initial location with interesting data, a Castlevania fan who can see the potential of the roguelike format. I am the perfect person for the job, of course, but can’t afford to do that while there is a game to code.

Day 4 – Thursday, March 7th
I added the Carmilla Cemetery area, using an with image sent by Vitor.

As planned before, I onboarded Stoltverd into the project, to devise a nice unique simple fun combat system, he worked on it this day, we were to review it next day.
As the project evolved, I decided to switch from a pure content-driven model into a “game solution” based model; to prevent it from ending up as just a Transylvannian sandbox without a game direction: I would lay out the solution, the steps that are needed to win the game, and then start adding support for each one of them.
As the first step was buying a White Crystal in Jova, I added support to buy things from merchants.

And since the second step was using this crystal to enter Berkeley Manor (a slight difference from the original), I added support to use items to unlock doors.
While I was doing this, I figured the game solution wouldn’t map one to one with the original; some small changes would need to be done to adapt the adventure to the format and improve it. Think of it like something similar to what they did with the FF7 Remake. But not as big departures.

QuietGecko started doing some music work, at first I was super hesitant and trying to push him into not doing any music work, instead maybe doing SFXs, so we could keep the original arrangements from Jorge fuentes; however he quickly convinced me otherwise with his very own renditions heavily inspired by the style of the selection I had made. This day I managed to integrate a first version of his “overworld” theme.
As the day closed to an end, I couldn’t stop thinking: The game was just too big. I will not be able to complete it.
Day 5 – Friday, March 8th
I woke up from bed at 1 am with something on my mind: the scope of the game needed to be reduced vastly.
I decided we would include a single manor, Berkeley. The game would cover the adventure all the way to the first relic of Dracula, and nothing more. This would allow us to not spread ourselves too thin, and focus on just two fun dungeons (because we would also include Dabi’s path cavern). This stood until the end.

Sirena, sent her first piece for the project, the location image for the Berkeley mansion. She mentioned it was WIP but I thought it looked pretty cool already.
Most of the little time I could invest today was design work, getting rid of all the content we won’t need, and redesigning the main quest line.
I also remade the overworld map with the new boundaries and locations, including the broken West bridge, North of the starting place, for which I had to implement artificial boundaries so the player couldn’t close it from the overworld.
Much more challenging was the making of the South bridge, because of the strong currents and the depth of the Dead river as it flows there, but also because it is an overworld location with two exits; the player should be placed left or right of the bridge depending on what border he used to leave the bridge, and likewise when zooming in they should be placed depending on where they are coming from, another first for me in roguelikes but it ended up as a super cool prominent location for the first part of the adventure.
Day 6 – Saturday, March 9th
Past midnight work, I integrated Sirena’s Berkeley manor image.

It’s Saturday, I am liberated from client work and other indie projects, it was the weekend so it was time to get things done. Luckily, I got some spare time from family as well, so was able to push quite a bit.
I fixed the navigation in the procedurally generated levels so you can go back to previous level, and created the Debi’s Path complex to be able to cross the Borgia mountains.
Then I pushed forward with content and game completion: I added escort missions you need to do to gain gold and get things going; added maps for Veros, Aljiba, Castlevania Ruins, Yuba Lakeside, Ferryman’s cabin.

I completed the sequences required to complete the game, that is, provided combat worked.
Speaking of combat, I figured I wouldn’t have the time to implement the combat system that was designed by Stoltverd; I invoked the powers of Camilo Ramirez “jucarave”, to see if he was up to give it a go. This day he sent some initial changes to migrate away from SpelunkyRL’s puzzle-y combat system into something more traditional hack and slack (which could then be transformed into the more unique system).
Day 7 – Sunday, March 10th
Past midnight, I decided to push on to 2am to add some stuff that was needed for the game to be more interesting. I added some flavor items to the Belmont’s hold but most importantly, I added the dialog sequence that happened before the final boss. There is a good ending and a bad ending in this game!
Also did a first test release on itch.io, to make sure everything was ok with the web playable. No big surprises here except for a unwanted flow that was leading to SpelunkyRL’s character generation because of local storage conflicts!
Woke up around 10am, it’s the last day.
The biggest hole right now is: combat. I haven’t produced a build that can be tested as a complete experience. Camilo is working on that, so in the meantime I decide to tackle some other things.
Starting by also adding a intro sequence, reusing the ending one; thought it was going to be simpler but had to wrangle a bit with the game state at the beginning. Then, some tweaks on NPC behavior to make it less frustrating trying to find out NPCs that should stay inside buildings (like churches or stores)
Then some things that were closer to combat while still not touching the core combat system: repopulating static locations such as the cemetery and the South Bridge with enemies, defining the colors of the enemy icons, making the whip be a ranged melee attack, adding a jump action with a cooldown, making enemies drop hearts that replenish soul power, and more.

I went to a family thing to take some time to cooldown my coding power.
Implemented the passage of time and a game clock – 7 in game days playing and the curse of Dracula will destroy you.
I integrated the sound effects package from WoodsyTee, because it would be a shame for his work not to be included in the end product (I consider this an insult), even if the game ends up incomplete, you got to respect the enthusiastic work of people! This was WoodsyTee’s first gamejam, and I think he did a great job. Likewise, Sirena sent awesome art including an updated version of Berkeley manor, a revision of the Castlevania Ruins that was used for the intro, and another one for the ending which I won’t spoil.
Gecko also activated last minute and did an amazing job to put together SEVEN more tracks and tweak the two existing ones. In the end I decided to pack all of his songs and don’t use the ones from Jorge Fuentes, although in the future that might remain an option. I also wonder if Gecko may want to improve upon the existing tracks under less hectic restrictions. But again, amazing job as usual. Here’s the track he initially sent for the cemetery but I felt was better suited for the South Bridge.

There are two hours left to submit, and we still don’t have a combat system despite Camilo’s great efforts to expedite the development. We decide to not use the system designed by Stoltverd (at least for the official 7drl submission), and instead try to make something more traditional work, so I jumped in to tweak damage, hit point values, and combat feeling in general. I think in the end after a mad rush it was quite enjoyable for what time allowed. One big thing I missed, and will probably be there if there’s an update, were the ranged attacks by enemies.
So, in the end, none of Camilo’s code shipped in the 7DRL release, but that doesn’t mean he didn’t contribute to the project; had he not jumped in, I wouldn’t have been able to implement the big chunk of things that make the game different to other roguelikes and closer to Castlevania. His was a ghost contribution, I guess.
In any case I hope to integrate what he did in a future version; Stoltverd’s work won’t go to waste.
SO many small things were tweaked the last hour, I will not list them here. But they included tweaking a little bit the generators in regard to items you could find, as well as the items available for purchase. (I still remember one of my 7DRLs was completely impossible to win because… I didn’t add any way to recover health!)
Also one hour before midnight, Scarvye jumped in to help with some content (he had been busy with his very own 7DRL entry, but thanks to timezone difference he could help a bit!). He reviewed the intro text, and provided some book titles to fill Belmont’s Hold. Sirena I believe attempted to do one last image, for the town of Jova, but it was too late already.

Epilogue
Not enough testing was made before the submission, so immediately after submitting, and drinking some water, I went on to record a gameplay video, of course!
And… it was playable! not by the merits of a correct development process (I always say, you got to have something people can test already by Day 2), but maybe mere luck?
That’s the story of my entry for this year! I am pretty happy with the results and how it went. It was not perfect, but I think I managed to steer the project to completion and was very happy to work with buddies new and old. Gecko’s musical stretch and Sirena’s beautiful art were two really special things to happen.
I think I also managed to convey the atmosphere of Simon’s Quest into the character based display. I think it’s really well suited for gothic types of fantasy and hasn’t probable been used much except for that CastlevaniaRL game (but the few people who know that one probably play using the Vampire Survivors tileset :P).
What is coming up for this project? You will know soon!

Loved / shared the post, but then I came back to it later to find a quick link to the game and realized what this post is missing … a link to the game. 😅