Log In  

Cart [#demon_castle-0#] | Code | 2019-07-21 | License: CC4-BY-NC-SA | Embed
30

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 2019-07-21 13:53)

1

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
:: Mush

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)
:: Mush

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
:: Jusiv

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
:: dw817

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)
:: nrai

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 finished the game in normal mode, so i went to hard mode because i tought it was too easy, also while going through the "secret way" (the route where you get the secret stone), i stopped at a platforming section in the demon castle where i just couldn't pass, there were two of these giant clock parts that i don't remember the name, i tried really precise jumps and even taking damage from a shooting enemy to get extra height, nothing worked, so i haven't experienced all of the game as i just wrote but here is my review anyways. The game is fun and really small, my only problem is that it is too easy, even on hard mode, here are the things that might make it that easy: Jumps are pretty easy to control, you can walk while attacking, the whip is TOO OP (and sexy tho, that swinging animation is smooth as heck, is this Rondo of Blood or something?) it is so long that it can attack from behind, forward and ABOVE in a single attack, and the enemies are too weak (at least the bosses could have been a little bit tougher). It was an enjoyable litlle game :)))

P#66526 2019-08-10 23:32
:: Ikura

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

P#66640 2019-08-13 13:30

[Please log in to post a comment]

About | Contact | Updates | Terms of Use
Follow Lexaloffle:        
Generated 2019-08-18 05:02 | 0.037s | 4194k | Q:59