Card Delver

It’s open during a battle and I can’t close it.

2 Likes

how did you end up with it open (did you press menu or did it randomly pop up).

5 Likes

When I selected the next event it just didn’t close.

2 Likes

yo luke mind if I interview you with some questions

4 Likes

@Luke, You are the best artist and this proves it! Great game and art!

5 Likes

uh luke is this a yes or no

1 Like

You might want to just add a @ in front of it to notify @Luke. Otherwise, @Luke will not notice that you said that. Also, @Luke might not be able to answer to you.

1 Like

All replies to this topic ping me
anyways yeah sure @TheEarth idm

6 Likes

That’s why I’d didn’t ping lol

2 Likes

@Luke help me I’m suddenly getting Card Delver dreams!!! HELP!!!

5 Likes

I am bored so
INTERVIEW TIME
Luke you have been working on this game since June 2023, correct how have you kept motivation going is it by using goal or other means, if so what was the strategy?

This game has phenomenal art how long did it take and did you use another platform to transfer the game to like Aesprite?

Why choose Slay The Spire as your inspo and why a deck builder roguelike, is it because of the lack of the aforementioned genre on makecode or is there another reason?

About this game why did it take so long was it editor lag, lack of motivation, or figuring out how to use new extensions which would be critical for the game?

and that’s it for the monthly
INTERVIEW TIME
come back in 1.8 million years for a new episode/j

6 Likes

This game looks pretty cool, but I don’t quite get how it works. Could you make, like, a rulebook or something that explains it?

5 Likes

Luke I have a question how did you register the block objects for the cards in inventory like did you make a block objects array or what ?

4 Likes

2 posts were split to a new topic: TheEarth Interviews

poison is a better burn but I combo for max DMG I use poison 7 and the relic for 10 block when no damage is dealt to you it practically gave me a sweep with DangerKitty

2 Likes

Forgot that you made this topic. :face_with_open_eyes_and_hand_over_mouth:

3 Likes

Working on the new update to screen size, note that the next update will take a long time because I’m completely rewriting the card system! (and also because highly important exams)

Before talking about the rework, its important to note 2 parts of the card system that interlink with each other but are distinct

1. Card Properties

This is the core information for what each card does. It is defined at the start of the game, is never modified and is always the same for any game.

2. Card Storage

This is the way that the cards are stored during a game. Importantly, the way they are stored needs to be able to reference the Card Properties as we don’t store the card, we store something able to reference the right data for a card. Its like how a specific gene codes for a specific polypeptide chain.


In the old system, I stored all the data for Card Properties in the actual code for playing a card. This is incredibly messy as the data is spread out and makes it hard to make adjustments, like with balancing or adding new cards.

For card storage, I stored each card as a number from 0-107, which makes it easy to access the array for the card image, each number corresponding to a unique card. However, this makes it hard to access the Card Properties, leading to a large if statement checking all 108 possible cards. I also had a seperate system for handling debuffs which is messy.
The system worked well at a smaller scale but is inflexible and hard to use scaled up.


Improving Card Storage and Properties

Instead of storing it as a number (from 0-107) I will instead be storing each card as an array.
If you take a look at this card and what variables define it, you might think that this is what I would use:
[imageindex, material, level, powercost, propertyx, propertxvalue, propertyz, propertyzvalue].

However, I decided to use a different system to make my life a bit easier.
One issue with defining all the data in the array is that the Card Properties will have to be defined as a big array from 0-107 again to set all the different card properties. This also makes defining cards annoying, if I want to make a specific card I’d have to define all 8 very specific characteristics every single time.

Remember from earlier:

We don’t store the card, we store something able to reference the right data for a card.

Instead of trying to use the card as both properties and storage, I am going to use an array of numbers that will reference the data I want which can be defined seperately. The main differerence from the previous system is that with an array, I can reference a nested array, which i much easier to edit and adjust compared to a long list of values.

The array is composed of 3 numbers, [material, type, level]. I am essentially creating a hierarchy of information, a series of 3 questions I ask every card before they are played to determine what they do. What material are you (0-2), what do you do (0-12) and what level are you (0-2)?

Using this, I can get a value from an array of depth 3 (value in an array in an array in an array)

eg [0, 8, 2], which corresponds to:
0 → wood card
8 → blocks and stuns all
2 → and is level 3

7 Likes

er, well I kind of didn’t work on the project for extended periods of time so I wasn’t really that motivated. What motivated me more recently was the new ability to copy code between projects which made it much easier to code larger and more tedious things into the game by using seperate projects

I use @YuHayate’s website https://yu-hayate.github.io/Makecode-Yu-Hayate-Dithering/ to transfer my assets from Aseprite. (all the assets except the enemies and the title screen were made in makecode, as the project used to run smooth enough to allow me to use the editor)

Card Delver was actually inspired by Arcade Advanced Stream #229 - Card Game pt 2, I really wanted to make a full fledged version of it. I was also big into other roguelikes such as Slay the Spire and Wildfrost as well as other card games like Balatro (i stole the idea of glass cards from them)

mostly just the first 2, as the project size increased the lag got so much worse. Learning how to use new extensions isn’t really a problem anymore since i’ve been using the “new extensions” for years now. Back to the lag, I used to get 5 seconds PER frame, i’m glad that the editor has been improved since but i still get terrible performance. As well as the lag, whenever my code would just be wiped or the game just randomly reloads wasting 5 minutes I would just lose the will to work on the project.

I guess the major issue was scope creep - I planned out so much to do that it seemed insurmountable and I would never finish the game. Only when i cut back and decided to release a more bare bones version then I realised that it was already in a good state.

9 Likes

Theres lots of information here in the top post btw

i mean, its a turn based game, where you use your cards to battle enemies. Every run is unique, with a different character and deck type and procedrually generated maps and encounters.

Fights
Every turn you get 3 energy to spend on playing cards. Cards cost between 0 - 2 energy. At the end of your turn, enemies perform the action that their symbol indicates (their intent). After the enemy turn, your energy is replenished to 3 and your turn starts again. Your hand also replenishes cards to return to having 7 cards in hand for your turn. If you play all cards in hand in one turn, you immediately replenish your hand.

Cards follow a loop when in a fight

Card Draw Pile → Your Hand → Card Discard Pile → Card Draw Pile

When your draw pile is 0, the cards in your discard pile are emptied and reshuffled into the draw pile.

Events
Card upgrade event allows you to upgrade a card 1 level, improving base stats and other properties. In the new update, rerolls are buffed to give power when upgraded to level 3

Chests give you items called relics - these help you to become more powerful during a run. For example, the whetstone buffs level 1 attack cards, allowing them to deal 10 more damage.

The brazier event allows you to remove a card - this is helpful as reducing your deck size allows you to draw other cards more consistently during a fight.

5 Likes

Luke also the one hp relic that give max hp if you skip isn’t permanent max hp

3 Likes