Cursed Sword

0
0
Published 2023-06-12


There is a place deep in the wilds where worlds collide. Above a buried dimensional rift, priests of chaos built a temple to harness its power for themselves, delving ever nearer to the rift. But a foolish high priest entered the rift itself and returned wielding a sword he could neither sheathe nor cast away. The sword demanded blood and he slew his entire priesthood to sate the blade, lest it destroy him too. With no one left to sacrifice, the sword slew him in turn. The sword has since passed from host to host, wreaking destruction and death. And through cruel fate, the cursed sword now rests in your hand. Can you cast it back from whence it came, or will its curse claim you too?

Cursed Sword is a simple roguelike based on Krystman's game Porklike, and his youtube tutorial Pico-8 Hero.

Deepest thanks to Krystian Majewski of LazyDevs academy for the use of his game Porklike as an engine for this game. Much of the code of this game was designed by him, and I thank him especially for his ingenious level procedural generator, and the binary signature technique.

Thanks to Maddog22, who conceived many of the power gems and tested the game thoroughly. Thanks, MD!

The JSON parser program was designed by tylerneylon, adapted by feneric, which tylerneylon has released into the public domain. Feneric's adaptation of it is released under the GPL v3 license.

Some enemy artwork (tiles 192-203,208-213,224-31) licensed from Oryx Design Labs, www.oryxdesignlab.com. These designs are not released under this game's license, and Oryx Design Labs reserves all rights.

The rest, I suppose, was designed by me!

I wrote most of the code in this game while holding my newborn son, Leo. He is the co-producer of this game, as he made it impossible for me to move for long periods of time while I held him.

The code of this game is a Frankenstein mess, and it's because a lot of it is just hacking the engine developed by Krystman. I innovated a few things, but the problems with the code are mine, not his! In particular, if I could do it again, I would have followed Krystman's tutorial to the letter, and then gone back and start from scratch armed with what I learned. So, in short, my apologies for the code being substandard in places, that is my fault, not Krystman's. In particular, I regret the use of too many global variables to control logic flow, and too many big dumb if-then statements for state machines. My next game will be better!

One thing that is interestingly different from Porklike is the use of a JSON parser. I wanted this game to be data driven, and to have a really easy way of editing those data when a change was necessary. I think that worked out very well, and allowed for the gems to be procedurally generated in an object-oriented way.