It's been awhile, hasn't it?
I have a new Pico-8 project brewing. Anyone care to guess what it could be? (Edit: people guessed quick! It's a Castlevania Demake)
I will update this post to keep everyone up to speed when I upload a new cart. Check out the spoiler below if you're interested!
I've decorated the map a bit, using assets and ideas provided by @HeyNetters. Many thanks go to them for the art! This is all preliminary for now, but these just looked too good to not include them.
Chain upgrade has been added. The chain graphics reflect the first upgrade, and the added length reflect the second. Collect the whip powerup to upgrade.
Gameplay pause added upon collection of the whip powerup.
Whip has been fixed so that you can no longer hit things behind you. Still need to look into that janky
Thanks to suggestions from @dw817, Simon's walk speed has been increased a bit, with matching animation. The whip also stays out for just a bit longer.
- Minor changes to small heart to keep it from flying around so much.
- Tweaking pass on SFX.
Sorry for the long delay, guys. I recently started a new job, and I have less time to work on this project now. I do, however, fully intend to see this project to completion. I need to work on some systems that can cut down on repeated code in here, as the token count is getting dangerously high. Despite that, I'm happy with where it is at so far. Let me know how you guys like it!
Candles have been added. Until I can work out a feasible spawning system, these are hard coded. Whip them to make
items come out.
I have mocked up a status bar along the top of the screen. This is all subject to change as I figure out what will
fit and what will not.
A game clock is in place. It ticks down in seconds, and once it reaches zero, you're dead. There isn't much you
can do about it at the moment, but I thought it would be fun to add, and it was really simple to implement. The
clock will even start to beep after awhile, just to give you some unnecessary stress.
- Hearts have been added. You now have a limited stock of ammunition. Whip candles to find more.
Boomerang can now be caught. Small reason to post an update, but I thought it was important.
Boomerang graphics rearranged so it animates like in the original game.
This may be the last update for a little bit. The code for climbing stairs MUST be rewritten before I will
continue. While it works great as it is, the code is just too darned bloated right now.
All throwable weapons have been added. Hold ❎ and press ⬆️ or ⬇️ to cycle through them,
and press ⬆️ and 🅾️ to throw one. Like before, you can throw 3 at a time!
- Holy water was redrawn to not be so huge.
Holy water has been added, press ⬆️ and 🅾️ to throw it. You can throw 3 at a time.
- Simon's sprite has been redrawn to make him more detailed and look a lot less scrawny. Many thanks go to the
Discord community for their feedback on this matter!
Stairs now work in all 4 directions.
Plenty of stairs have been added to the map, so play around and let me know if anything breaks horrifically.
- It is no longer possible to jump when a block is directly above the player.
Commented out the code and formatted it so anybody could take a look and decipher it all...
Taking a hit will now interrupt your attack.
- Player can no longer warp through the ceiling when hurt.
Player health, hurt state and death are implemented. There aren't any enemies yet, so for now you
can press ⬆️ and ❎ to beat yourself up. These are disabled while on stairs...
Continue screen has been added
Made a pass on music and sound effects. I feel like the music instrumentation is way better now, and many of the
sound effects are improving as well!
- Initial HUD elements added. There are here only for a visual to pair with testing health and lives for now.
- Changes to walk and stair climbing movement and animation speed. It felt just a tad sluggish before...
Stairs are in progress. Right now there is only up-right and down-left movement, but this is a pretty good proof of concept. Whip is disabled for now while climbing them until I flesh out that aspect.
The bottom of the screen is now a bottomless pit, and you will die and be reset.
A small map to test out the mechanics and play around in.
- Preliminary artwork has been added to make the view a little more interesting
Jump physics have been reworked and the jank is now gone for the most part. I feel like the jumping is in a pretty good spot now.
Initial work on the whip has been started. The animation is just a little janky, but I'm working on that :)
- I am currently prototyping ideas for stairs. I haven't added stairs yet, so don't try...
Basic movement is implemented; Walking, ducking, jumping and hard landing are in. There is one little niggle
with collision and platforming. I'm sure you guys will know when you find it. (Edit) I've created a temporary workaround
for this. Please let me know if you like how it handles. Collision is still not perfect, and you might still get
hung up, but I'm working on that.
- First draft of music has been created. Let me know how you like it! I might need to shift things around a bit
before I release: I've not included everything I'd like to, and I've run out of room due to some initial (less
than optimal) SFX layout choices.
I've tweaked the jump physics to more closely match the original game.
Invisible walls have been added. I wanted a way to create impassible areas without changing the collision.
You can test this out near the lone block on the right.
Now is the time where I sit down and take a class on Picomap by @JadeLombax. I may as well get this figured out
and implemented now, since stairs will likely rely on it...
Indeed it is @dw817. I'm already starting to notice areas that could be compressed a bit, like my animation system. I need to read up on the map editor by @JadeLombax, and see if I can fit it in here.
Heh - how about that, @Turbochop. I managed to deduce that from the way he animates when he walks. Guess I really have seen a great many video-games in my time and can pick out characteristics.
Best wishes on your game - and please call on us if you need help in something.
Thank you @dw817. If people can instantly recognize what I'm trying to make by one glance at the character, I'm doing something right. Having said that, though, I do want to ask about the way he walks.
I wanted there to be clear back and forth head movement, but I couldn't really achieve that without it looking exaggerated. Anyone have a idea on how to better convey his movement? I'm actually pretty happy with it as is, but maybe I don't know any better. I have already toned down the arm movement, but the head makes it almost look like a limp.
Well now, @Turbochop, you could check out the game "Shantae" for the Gameboy color done by the animation company, "WayForward Technologies."
To me anyways they have the best and most perfect movement of pixeled sprites, definitely worth examining.
Here is a video and the channel to reach them and examine more of their animation works.
I agree with you about the walk looking like a limp @Turbochop. You said you were trying to get a back-and-forth movement but what you've actually got is the head dropping down just as the character steps forward.
Now, I'm not artist so take this with a grain of salt but I think typically any up/down motion in a walk cycle usually comes from the legs themselves: When the legs are passing and you're sort of up on your toes of one foot the head will be highest; when the legs are apart and both touching the ground the head will be lowest. But the head/torso itself remains in basically the same position apart from arm movement.
Here's some Castlevania 1 gameplay just for reference. https://www.youtube.com/watch?v=mOTUVXrAOE8
Notice that although the head does move it always stays at the same height. The movement of the head actually seems to have more to do with the way the torso is moving. When the character isn't moving the foreground arm is quite far forward and what we see is mostly his back. When he walks the whole torso rotates back exposing part of the chest and background arm. It's a pretty exaggerated twist actually and the back-and-forth head movement seems to be a result of that.
Taking a closer look at your sprites you actually do have that torso twist going on. So I think your problem is actually that you've got the head moving opposite to what the torso is doing. With your character, as the body twists back you have the head moving forward and down.
I made a couple quick edits to your sprites:
- Moving the head back instead of forward
- Keeping the head at the same level for the whole animation.
Still looks a bit odd but it doesn't look like he's limping anymore.
Good luck with your project, I look forward to playing it! Always loved castlevania as a kid.
@jasondelaat Hmm... You're right: It looks a little odd either way. I'll have to do some research. Thank you for taking a crack at it, in any case!
@gameboy9999 I'm really happy to hear (read?) that! Thank you so much!
This is starting to look really good! Great rendition of Vampire Killer too! Nice work!
I appreciate that @jasondelaat. I originally had triangle on channel 4, but in my opinion it didn't sound full enough. I switched it to sawtooth and was instantly happier with it!
Love me some Castlevania. I think you did a good job recreating the controls, and the music is great.
@kerneliron I'm glad you like the music. I'm pretty happy with it so far! As far as the controls are concerned, I have a tendancy to obsess over the details, sometimes to the detriment of my token count... But I feel it's worth it to get an experience as close to the original as possible.
Looks good, and nice job on the music!
Like you were saying, I did notice the token count is getting pretty high, though. You mentioned being interested in using PicoMap to store the levels, but that will add at least 600 or so additional tokens to get working. Have you considered switching to a non-table-based setup for your playable character? I know a lot of people seem to use that, but all the table property references really increase the token count.
@JadeLombax That's an interesting idea. It wouldn't be too difficult to switch the player to a non table object, but my collision code is taken from examples, and I think they rely on the object.variable format. Per the change log, I am already taking a step back and looking at how to optimize token count, and my first stop will be the stair code. I was initially unsure of how it would even work at all, and then I found a somewhat solution, and then duplicated ALOT of code... I have some ideas about how to go about that, and have found other redundant bits. After all of that, I may see what it will take to implement your idea; it's a good one.. PicoMap IS GOING to be a part of this project, even if I have to rewrite the whole game to make it feasible.
Well, you'll need some extra tokens for a compression system, though depending on how much space you need for graphics, pancelor's BigMap editor, combined with zep's PX9 compression, might be able to handle the level storage. It can't fit worlds as large on a cart as PicoMap can, but Castlevania's world is only a bit over 100 screens, so it might fit. As the levels are fairly dense visually, it could potentially make creating them quite a bit more straightforward, in addition to using somewhat fewer tokens. Just an option you might want to keep in mind.
@JadeLombax So, I just tried to convert my player character into a non player object, changing all of my pointers to match, and the game completely broke XD. I'll have to come back to this. For now I'm going to try squishing my stair code and see what that nets me.
I don't know if you like contributions to your project, you can throw these in the can if you don't want them. But I was yearning to do some Castlevania sprite art in Pico today and I found your project, so I added some sprites to the spritesheet/map just to play around, you can keep them if you would like!!
Just a few things I noticed. In the original Castlevania the whip stays out a little longer when you fling it. And when you go up or down stairs you can just hold the up or down arrow key and go from one staircase to the next, IE:
From here you should be able to push the down arrow key and reach the bottom. But it doesn't. It stops and you must re-align your feet to the steps.
@dw817 Okay, so...
I initially wrote stair code that, while more bloated, worked flawlessly. My trimmed code seems to shift your character back a bit when he gets off the stairs. I'm not sure why it does, and I'll have to look into it. As for the whip, It definitely needs work. It is able to hit things way behind you, and it shouldn't do that. I need to adjust the attack frame so that it does it's thing after the whip is in it's proper place, and make the whip stay out just a little longer.
This project is far from complete, and I really need to sit back down and continue work on it. Thank you so much for your suggestions!
@HeyNetters Those look perfect! It really is amazing how much a few tiles can add to the atmosphere!
Truth be told, I have not yet even begun to finalize artwork, but I think I'll hold onto these, if you don't mind. They really do look good!
I'm so happy my project could be a source of inspiration for you!
OMy you really improved the whip, and sound. Good stuff !
I still cannot climb entirely down the staircase from the top to the bottom in the place I mentioned above. It may be the position of the tiles, I'm not sure.
Also it is possible to change direction when jumping but not the MOVEMENT. That is you can jump forward and then face the opposite direction mid-flight, but it does not alter the direction you are MOVING.
This looks great when you are hit by an enemy and you struggle to not fall in the water as you rapidly hit left or right, your player floundering, as trying to control him while being forced only in one direction.
@dw817 I'm glad the changes to the whip and SFX are well received. Thank you for saying so. I haven't touched the stairs yet. They may be due for yet another rewrite.
You shouldn't be able to change your facing while in mid air. I know there was a way to make Simon jump backwards in the original game. It was tricky; you had to press in the opposite direction and jump pretty much at the exact same time.
I have thought about this, but haven't implemented it yet. I don't think it was intended in the original game, but I would have to add code specifically to do that.
[Please log in to post a comment]