Log In  

Cart #demon_castle-1 | 2020-11-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
249


Demon Castle is a Castlevania-style game for PICO-8

Story

An evil sorcerer is trying to summon an ancient demon into the world. You are the only one who can travel to the sorcerer’s castle and prevent him from completing the summoning. Best of luck.

Controls

At the title screen, use the arrow keys to select your difficulty, then press the Z or X key to start the game.
Use the arrow keys to move, and press up or down to start climbing stairs.
Use the Z key to jump and the X key to attack with your whip.

If you prefer, you can use the C and X keys instead of Z and X.

Items

Heart Crystal
When you defeat a level boss, it will leave this behind. Collecting it will increase your maximum health, and end the level.

Chicken
This secret snack can be found hidden in secret walls throughout the game. If you’re lucky enough to find some, your health will be fully restored.

Crypt Key
This old key has been lost for centuries. Where could it be now, and what could it unlock?

Stone of Sealing
If you are unable to stop the sorcerer, these stones will be your best chance to reverse the summoning. You should try to find as many as you can.

About Hard Difficulty

At the title screen, you are given the option to pick either Normal or Hard difficulty. When playing on Hard, you will start the game with less life than on Normal. You will also encounter more enemies in more difficult locations. Finally, when playing on Hard, you will not be given checkpoints throughout a level, so you will need to start the level from the beginning if you lose all your life.

Tips and Advice

  • Sometimes, after you beat a level, you will be given a choice of which way to go next. There are multiple paths through the game, and you can see the path you’ve taken so far on the map.
  • There is no “correct” path through the game, and the game can be fully completed using any path on either difficulty.
  • Be observant. Investigate suspicious-looking areas for hidden items, and more.

About the Code

Due to the size of this game, it was necessary to reduce the size of the code before the game could be released. I used the picotool library to reduce the size of the code, at the cost of readability. However, the original code, before being reduced, can be found on GitHub, here.

P#66004 2019-07-21 13:53 ( Edited 2020-11-17 07:49)

2

Very fun! I took all the southern routes to get to the castle. https://i.ibb.co/jDm7tRL/image.png
I'll be sure to take some other paths. Great job

P#66006 2019-07-21 14:30

Very good!
I love the walk up/down stair animation/sound!
The map/transition really sell the (perceived) size of the world.
Has some bits of Black Tiger/Dragon in it :]

Couple of comments:

  • world feels a bit empty (some more monster left and right could help)
  • jumping feels to linear
  • I lost my first play and don't know why (got a single stone)

Code comment:

  • looked in the repo, I only found a minified png :(
P#66009 2019-07-21 17:48
2

Hi freds72,
Thanks for the feedback :)
The file you're looking for in the repo is called vampire.p8. The full code is too large to compress into the p8.png format.

P#66010 2019-07-21 17:50

!thought vampire was another game :)

To save tokens for your next game, you might want to move away from traditional OOP and use a lot more functions.
I switched to that programming style for pico and found out that "self" is only necessary for fields/methods that are part of the entity "API" (ex: position, health....).
Anything else (timer, state...) can be stored as local variables, kept within the function closures.
Example (Ghost Rally):

function make_ghost(plyr)
    local model,k,best,hist,m=all_models["205gti"],1,{},{}

    -- listen to track event (global callback)
    on_new_lap=function(t,best_t)
        -- new best?
        if t<=best_t then
            best,hist=hist,{}
        end
        -- restart replay
        k=1
    end

        -- actual entity
    return {
        pos=v_zero(),
        q=make_q(v_up,0),
        draw=function(self)
         if m then
                draw_model(model,m,self.pos,true)
            end
        end,
        is_active=function() return m end,
        update=function(self)
            if time_t%2==0 then
                -- capture current pos
                serialize(plyr.pos,hist)
                serialize(plyr.q,hist)
                -- replay best track
                local n=#best
                if n>0 then
                    k=deserialize(best,k,self.pos)
                    k=deserialize(best,k,self.q)
                    -- update model matrix
                    m=m_from_q(self.q)
                    -- loop
                    if(k>n) k=1
                end
            end
            return true
        end
    }
end
P#66011 2019-07-21 18:11 ( Edited 2019-07-21 18:25)

Yeah, that was just the name I used in development before I settled on a final name.

P#66012 2019-07-21 18:19

Ping (largely updated above post ;)

P#66021 2019-07-22 05:32

Great game! Congratulations!

P#66028 2019-07-22 16:16

Nice! It's short and sweet. Multiple paths is pretty neat. Thank you for having difficulty options cause other Pico games tend to be hard.

P#66052 2019-07-23 17:27
1

Nicely done! I haven't played the original Castlevanias myself, but from what I've seen this is a very good recreation of their aesthetics and core gameplay. The map screen, branching paths, difficulty options, and secrets are all great touches. The way some levels start differently depending on the direction you approach from is really neat (the northern entrance to the castle especially).

My only gripes are with the boss fights:

  • The giant bats are very easy to kill by just spamming attacks and could benefit from another distinct attack (maybe summoning bat minions to attack you?). It would also be cool if it got harder/more complicated the second time you fight it as a boss (so that would be a good opportunity to introduce a new attack).
  • The giant slimes are similarly vulnerable to spam attacking, but I think the change I'd recommend for them is to make a more clear telegraph of which type of jump they're going to perform. That, and maybe give them a high leap attack
  • The knight boss is actually perfectly fine, since you're fighting it for the first time in an arena where you can't cheese or bypass it.
  • The demon at the end REALLY needs to do more than just move up and down. Maybe have it move around and try to strike down on the player's position, or send its hands sweeping across the screen, or shoot fireballs at you, or all of the above and more. Right now it's just waiting for him to lower down into range, jumping over, and hoping his flailing hands don't smack you while you get a single hit in.

I realize you probably don't have the tokens to spare for all of these, but I definitely recommend at least making the final fight more interesting. And yeah, I second freds72's suggestion of using a lot less OOP practices to free up more tokens for content. Every . and : counts as its own token, so conventional OOP really makes the token count add up.

P#66061 2019-07-24 00:07 ( Edited 2019-07-24 00:44)

Awesomeness! One thing I would change is the whip. I feel it makes the game to East having it move in a quarter circle. Make it behave like a traditional Castlevania game. Would probably free up tokens also

P#66063 2019-07-24 05:15

Too short for me but still awesome.

P#66272 2019-08-01 04:06
1

Wow ! This has a real Castlevania vibe going on in it. I kept looking for objects to hit to gain hearts but didn't see any.

Man if you didn't get the scrolling and movement flat perfect of the NES original. Well done !!

⭐ Star and ❤ Heart both duly earned.

P#66273 2019-08-01 04:13 ( Edited 2019-08-01 04:15)

Very nice. But I don't know how to pick up the stone left by the demon.

P#66329 2019-08-03 08:47

I had a night to play pico games with the baby brothers and this was their favorite! They really appreciated the checkpoints, and I really appreciated the movement, the combat felt awesome! My only issue was that the bat boss felt tougher than any enemy I fought, even compared to the final boss. Other than that, the whole game had an awesome atmosphere! We had fun fighting the bosses, trying to figure out which way to go on the map, and find out how to collect stones! Thanks for the fun times ^-^

P#66347 2019-08-04 04:23

I won but I couldn't stop the demon... (1/3)

P#66640 2019-08-13 13:30

This is amazing! I can't believe I haven't seen this cart before. I love Castlevania so much. As soon as I saw the whip, I knew it was going to be good. You get a star from me <3

P#67654 2019-09-14 05:26

Very good effort! It felt weird being able to direct my jump in mid air, but I did like that the whip goes overhead, it makes situations on stairs a little more fair than the original castlevania games...

Also, I 3/3'd it in one life on normal on my first try in 6:23.

I'm not one who likes unfair difficulty, but I do like a challenge. I'll try again on hard. There was only one 'enemy trap' I thought was good and it was a kamikaze slime in my particular path's stage 3.

At any rate, very nice game, well done!

P#67683 2019-09-14 21:12

This game is AWESOME! :D Have only tried one route on normal but plan to play through all routes on both difficulties. <3

P#67797 2019-09-17 11:02

Played it again on Hard and to me, Hard mode should be normal and hard should be harder.

But I like games make me work out a plan of action/tactics/strategy to clear a stage. :)

P#67819 2019-09-17 19:27
1

Great inspiration for an action platformer! The Castlevania vibe is clear. Some things I noticed that are neat compared to Castlevania are:

  • you can move while whipping
  • the whip travels above your head and deals damage
  • you can walk backwards while whipping; time it correctly and you can attack while retreating.
  • the character cannot crouch

I would personally slow the walking pace, do something to add weight to the jump, and mix up the final boss battle, but those are minor nitpicks considering how much level content you've crammed into a cartridge. It was fun to travel through and find secrets, even wall meat!

Great job.

P#67989 2019-09-22 04:16

The game feels so polished and detailed. The camera pans to reveal hidden areas is a really great touch and the whip feels nice to use. I only wish it was tougher and longer.

Excellent work!

P#69652 2019-11-05 12:44 ( Edited 2019-11-05 12:44)

Will you do a sequel where evil mages resurrect the demon and you have to defeat it again

P#72381 2020-01-29 02:31

I love this game, I really love the castlevania series, so this was awesome, please create more games like this

P#73287 2020-02-20 14:51

This is an awesome and polished game/recreation! Great job! It feels weird to play old-school Castlevania without tank controls... (not that I like tank controls, it's just different) ;)

P#73305 2020-02-20 22:15

Wow, just came across this, excellent work!

I'm curious, how did you store the layouts for all the areas? Looking at the map area in the cartridge, I only saw a relatively small area filled in. Did you use the filled areas as room templates, then reuse and alter each one as necessary?

P#74408 2020-04-02 01:52

Hi Jade,

I've written a bit about how I did the maps here if you're interested:
http://matthew-watson.co.uk/games/demoncastle/

But the short answer is, I created all the levels in an external editor, then used a script to turn each level into a string.
In the code you can find long strings of characters representing each level. There's some code in the cartridge which converts the strings back into map data.
The first level is pre-loaded into the map to save space on the character limits, but all the others are only loaded into the map when needed.

P#74412 2020-04-02 06:21

Okay, that makes sense. Nice writeup, btw.

I'm working on a editor for making level strings also, and I'm using the map system in an unorthodox way to increase effective storage space, and was curious if someone else was working along the same lines.

That's good you made use of the map area, even though you were using level strings, I've seen a lot of projects totally ignore that area in favor of strings, but it can hold a lot of data.

P#74418 2020-04-02 12:18
1

I did it!!

P#75924 2020-05-06 02:23
3

Great game here. Really impressed with how you coded the levels/map (I'm going to give the post you made about it a proper read and hopefully learn some new tricks!) I love the platforming mechanics, having air control in a Castlevania game is a godsend. Cheers!
I've posted a review of the game on YouTube:

P#78550 2020-06-26 17:42 ( Edited 2020-07-24 11:21)

i won on hard. great game!

P#82291 2020-09-26 15:16

the game is incompatible with newer versions of pico-8, for example it crashes when trying to boot it

P#84339 2020-11-16 22:21

Great game, Its not working in pico8 from splore though :(

P#84341 2020-11-16 22:29

Thanks for reporting, Dogerizer and Athas. I've just uploaded a new version that fixes the crash in Splore.

P#84364 2020-11-17 07:51

i beated everyone's times here

P#84490 2020-11-19 20:49 ( Edited 2020-11-19 20:50)

made an account just for this

P#87762 2021-02-16 18:07

made a comment just for this

P#87808 2021-02-17 18:10

That is easier than the original game

P#96109 2021-08-16 17:43

Great Game!
And now I want to know how the code of stairs up/down works.
I really love that sound and motion, but I couldn't find the code...

P#116906 2022-09-05 01:35

great job

P#119286 2022-10-19 05:15

softlocked 2nd boss went down then up on the path select

P#119447 2022-10-22 08:03 ( Edited 2022-10-22 08:08)

great game! Really enjoyed the castlevania vibes

P#132807 2023-08-06 20:12

Yes. Mush is one of my favorite p8 devs. Thank you for making excellent games!

P#137328 2023-11-12 19:40

Awesome game. As a 8 and 16 bit hater, because it is so hard to see if a game offers the exact gameplay rules like jumping with steering vs castle vania where I havent had the time nor interest to start learning it; I am a ps1 person.... I really enjoyed the game. Super Easy on normal diff and super well destilled to the basics. !!!! awesome !!!!

P#141782 2024-02-22 16:06

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-03-28 17:58:02 | 0.025s | Q:91