miniupdate: I have been working on improving the animations and little things, though I should be working on enemies and levels.
I managed to put the cards into a fan, I did it for sort_hand as a test, now I need to apply it to the other animations. I also added the effect of the cards burning when they are discarded, I think it's good enough.
I also added an effect when hovering over the cards, they not only appear in front of others but also get a border highlight.



The placeholder card graphics look cool but I need to make it more clear which cards do what.
There will be 3 types of cards: "normal" cards like attacks and shields, "magic" cards with effects, and "one use" like the chair.
The will have to be something to differentiate the cards that get reshuffled, the ones that don't get reshuffled, and the ones that are removed from the deck.
I've also been thinking of giving each card a different color per class. I need to make some new assets.
Normal cards: grey like stone or paper.
Barbarian cards: will have a reddish background and look like rock. special cards will be red with a golden border.
Rogue cards: I'm thinking orange or brown, like cloth or paper. special cards will be orange/brown with a dark steel border.
Wizard cards: Blue like water. magic cards will be blue with a white border.
Druid: Green like vegetation. magic cards will be dark green with a colored border.
and some maybes for the future:
Cleric: White like stone, magic white with a golden border.
Paladin: yellow. Necromancer: black. Witch: purple.

Jesusemora card games are easy to code if you know what you are doing

๐Ÿ˜† isn't the case for everything ?

In order to complete at least a single project, I advise you to lower your expectations and accept imperfect and incomplete game, or you'll never end anything !
You could look at Cave Crawler or Putrid Shot Ultra to figure out a good game doesn't need most of cosmetics to be good or more.

Looks at changelog of many indie games, astonishing games have a lot, really a lot, of iterations, starting from unnoticed, boring, flat game to something smooth, with very nice visuals and sounds/musics. For instance Infinitode2.

Big studio/prof. devs won't show much iterations they've been through and as they're pro, it's faster/more effective (sometimes) for them than indies who don't already master (almost) everything like someone who seek for a full-time job.

    JusTiCe8 Jesusemora card games are easy to code if you know what you are doing

    ๐Ÿ˜† isn't the case for everything ?

    well no, the way I'm coding it I can start with a modular base and add mechanics over time.
    the good thing about card games is that you only need some image for the card and text, and I am kinda good at making lots of renders fast.
    Card games can be very complex or very simple, I don't need to make full rigged 3D models or sprites, and using renders means I don't have to worry about performance or how to fit the models together.
    Not having to worry about animations, not having to worry about timing or combining these animations, not having to worry about movement of enemies, collisions, it takes a big weight off my back.

    Tbh I have never done a card game before, I'm kinda winging it, but it's going well so far with the CardEffect resources and a single card scene and tweened animations combined with the Control drag_n_drop.
    If I had to start over I would probably do it in 3D like everyone else, since it would allow the cards to flip around and follow a global transform rather than the Control layouts.

    JusTiCe8 In order to complete at least a single project, I advise you to lower your expectations and accept imperfect and incomplete game, or you'll never end anything !

    I know, and I'm trying, It's so hard!

    JusTiCe8 You could look at Cave Crawler or Putrid Shot Ultra to figure out a good game doesn't need most of cosmetics to be good or more.

    I've already started downgrading the visuals, I replaced those rendered card backgrounds with something simpler, though for clarity reasons. I'm also seeing a scenario where I start to use drawings for the cards, I still consider these placeholders.

    JusTiCe8 Big studio/prof. devs won't show much iterations they've been through and as they're pro, it's faster/more effective (sometimes) for them than indies who don't already master (almost) everything like someone who seek for a full-time job.

    well big studios have lots of people working on different parts of the game, I'm alone, I can't just say "this part isn't my job", because everything is my job.
    I like posting what I'm doing to hear some feedback, maybe hear some ideas.

    update: made a great change, previously dragging a card on to an enemy caused them to immediately take damage. now, dragging a card with effect will cause a particle to spawn at the portraits and move across the screen, hitting the enemy in the face. It's so fun now.
    And with that I will stop working on the combat and focus on making levels. I'm thinking of making these out of cards that fold out from a deck and offer 1 to 3 choices for the player. Still not sure if I will allow backtracking or just make a more roguelike linear level.

    this was exhausting. I managed to create a level generator!
    the idea was to proceduraly generate a linear level with an entrance, an exit, and some things in between.
    I also made a deck that draws the cards on the "table".

    I faffed around for far too long trying to first make a system to generate a map through a modified pathfinding algorithm and then for some reason (performance maybe?) tried to cramp the data into a linked list of interface resources, which would then retrieve tile card resources for the world card class.
    but decided to abandon it after it became too difficult to follow, I left some of the map generation and instead left the data in an array and used a simple pathfinding to get the adjacent unexplored nodes.

    now, the map starts by the deck drawing 1-4 cards, and then when clicked on a card it moves the player avatar and draws adjacent cards from the deck without repeating.
    If I had more intelligence right now I would make the bitmask work to get better connections, but just having tiles that are not drawn I think is enough.
    btw this part is 3D to take advantage of better card animations, the player will not animate and instead act as a cardboard cutout that moves up and down towards the card, like a tabletop game. it is using a viewport because I could not be asked to create yet another copy of the player for 3D, but I could change it later.

    4 days later

    so a lot happened:
    the code is getting more complex but I managed to connect the map scene to the combat scene. I also made some improvements to the map generation. there was a bug that caused only 4 cards to be generated, because it was random, now it fills almost the entire map because it's based on a number of cards. I need to find a middle ground between the two.
    now combat cards are drawn and I can add any other type of cards, because I input an array and it fills a position in the path every 3 cards. entering a combat card causes combat to start (almost too immediately).
    defeating the enemies takes you out of the combat and back to the map, and you can enter another combat card. combat cards get depleted, but I haven't work on art for the world yet.
    this is an actual game now, It's only missing defeat conditions and some end, but it's just a matter of adding more world cards.

    I also added a menu for changing resolution, volume, going fullscreen and exiting the game.

    I also added an animation to tell the player that a card is reshuffled, the card kinda falls near the general "deck" area and out of the screen (need to tweak it too).

    when it comes to new cards, I added only two:
    use the head: damages an enemy but also damages allies, and then the card returns to the hand to be used again. this card is diabolical.
    shiv: the first rogue card, this card damages a random enemy when drawn. the effect it has is that it draws a card.

    so: barbarian has cards that generate cards of his own class, discard random cards, heal a little, and can also damage friendly characters.
    wizard will get powerful one use spells like fireball, and some cards that return to hand after being discarded.
    rogue will have cards that deal damage when drawn or shuffle other cards into the deck. I'm also thinking some traps and maybe effects like bleed. I need to think more about it, for now if there's a mechanic that I like, I will add it.

    the cards have a number but I'm not using it, the cards will not have a cost, you can play as many cards as you want until your hand is empty. "let's just say you don't pay with points". this is what will make my game different from others deck-builders.
    So I need a new use for these points, like some special ability that charges, or just experience.

    on the art side, doing renders I think will be too difficult, so I will be drawing all the cards by hand and then (maybe) painting them.
    I was going to use gimp but I'm tired of the stupid GTK3 sliders, it's very annoying. gimp used to be good back in I think 2.6, but they ruined it.
    So I tried another program I had very little experience with: Krita. Krita is so much better than gimp, it has shortcuts, I can add a layer by pressing Insert. I made a potion and was much faster and more comfortable.

    don't mind the grunge, these are from an old drawing.
    I'm going to replace most of the art, at least the art in the cards. the character will remain as it is, and the enemies are a maybe.

    Now I gotta go and start drawing.

      Jesusemora Now I gotta go and start drawing.

      Watch out. May take months, possibly years.

        Jesusemora So I tried another program I had very little experience with: Krita. Krita is so much better than gimp, it has shortcuts,

        Yeah, I started using it a couple of months ago and it seems really good. As for Gimp, well, I tried it 20 years ago and it never really clicked for me. Have been mostly avoiding it since then.

          update: I didn't have much time, but I used it well. I came up with a new algorithm for generating the map that is just PERFECT. I got the idea from the gimp maze filter, so I started to think of a way to do it.
          I use the same pathfinding algorithm, but when finding neighbors, I check that the neighbors-neighbors in voxel3 sum a total of 5 or more (every tile starts at 1), and then when adding them to the path I set the tile in voxel3 to 0.
          what this means is a sort of tree with random roots is formed, but the roots never touch and there is an end. and it's much cheaper that the wave function collapse people keep talking about so much.

          I also added a new rogue card:
          ace up the sleeve: shuffles a copy of your hand into the deck.

          xyz Watch out. May take months, possibly years.

          luckily I have a pile of old drawings to use in a hurry.

          Toxe Yeah, I started using it a couple of months ago and it seems really good. As for Gimp, well, I tried it 20 years ago and it never really clicked for me. Have been mostly avoiding it since then.

          apparently krita is used to draw anime.
          I have been using gimp for over 15 years, it didn't seem bad to me. but the devs have made some very bad decisions, and add to this the deplorable state of GTK usability, like the fact that old gimp versions are not available, compiling GTK2 is f***ng impossible, the stupid thing is written in C, but it was this one annoying GTK3/4 slider widget that drove me crazy with how finicky it was, that was the rhinoceros that broke the camel's back.

          • Toxe replied to this.

            Jesusemora Krita is so much better than gimp

            These programs have slightly different purposes. I use them together. Painting, yeah, is easier in Krita.

              Jesusemora and add to this the deplorable state of GTK usability, like the fact that old gimp versions are not available, compiling GTK2 is f***ng impossible

              Ugh, this is giving me PTSD. ๐Ÿ˜† GTK was truly terrible back in the day and the UI of the old Gimp versions that I tried using was atrocious. But to be fair to Gimp I should really give it another try these days.

              Thinking about it, weren't they working on a modernized version 3 or 4 or whatever to be released Soonโ„ข?

                Tomcat what IS gimp better at? the only advantage I see is more filters and maybe opening obscure formats, but we have so many more alternatives these days, you just have to go and try them.

                Toxe Ugh, this is giving me PTSD. ๐Ÿ˜† GTK was truly terrible back in the day and the UI of the old Gimp versions that I tried using was atrocious. But to be fair to Gimp I should really give it another try these days.

                I actually liked the older version better, it might have been ugly, but it was made with practicality in mind. GTK these days thinks its f**ng apple, with their menu-less windows and gnome integration and fancy yet unusable sliders. The only thing it has going for is it's stable and works.

                Toxe Thinking about it, weren't they working on a modernized version 3 or 4 or whatever to be released Soonโ„ข?

                KDE3/4, a GUI written in C that forces you to write a CSS. the worst of high and low level programming rolled into one. It has been in development since forever.

                update: fixed a lot of bugs, glitches and small details and worked a bit more on map generation. also worked towards connecting the parts of the game so I can release a demo soon.
                the player now spawns in a tile, and can only move to adjacent tiles left, right, up and down of the current tile. the code is still very messy, but it doesn't matter, I think the "combat" phase is more important.
                I added some placeholder images to the world cards so I could setup the shader.
                I made some assets for character avatars, like a wizard's robes and a helmet, then connected it to the character creation part and cleaned up a bit. in the character creation it is now possible to select a class and it displays the cards.
                I also had to remake the Minotaur to add a death animation, I will add new enemies eventually, for now you go around town getting jumped by minotaurs, and it will probably be like that in the demo.

                I also made some assets for the cards and added two new rogue cards:
                You've activated my trap: draws 3 rogue cards
                We don't need this: sends a non-rogue cards from the hand back to the deck

                I noticed from playing the game that the hand tends to get filled with garbage cards from generation, and undesired cards. When using "ace up the sleeve" you don't want to duplicate a card like "use the head" or simple attacks like throw rock. while reckless attack can be used to get rid of these cards, it has a risk of discarding good cards. "We don't need this" gives a change to get rid of undesired cards, and since it returns them to the deck instead of discarding, cards with discard interactions can be removed from the hand this way.
                "You've activated my trap" on the other hand plays really well with sneak, since it draws rogue cards, it can draw the sneak attacks or useful rogue cards.

                Hopefully I will have a demo ready this month. as soon as I can add victory and defeat conditions.
                In the demo you will play as barbarian (with the barbarian starter deck) and maybe rogue if I keep adding cards. you will explore a town that unfolds like a maze and search for the exit.
                I should add some "discover a new card" event to make the game more interesting than just fighting the same enemy over and over again, but I will need the ability to edit the deck for that, which will take some time because it requires yet another set of inherited classes and card assets (maybe I can reuse PreviewCard).
                There will hopefully also be some "buildings" with events by then.

                  I've arrived with the follow announcement:
                  GTK is bad.

                  cool game by the way. i think your mechs are cooler, but make a man create something he doesn't want to, and the result is invariably trash. you do you.

                    packrat cool game by the way. i think your mechs are cooler, but make a man create something he doesn't want to, and the result is invariably trash. you do you.

                    it's not that I don't want to work on the other game, but it's a big project, I planned too much. Things take time and I'm a solo dev. I will revisit it in the future, I always do, but for now I'm trying to actually finish a game and publish it on a time limit, sort of like a game jam, to get better.

                    update:

                    Jesusemora I also had to remake the Minotaur to add a death animation, I will add new enemies eventually, for now you go around town getting jumped by minotaurs, and it will probably be like that in the demo.

                    Jesusemora make the game more interesting than just fighting the same enemy over and over again

                    Good new everyone! after saying this I began to think and yes, fighting the same enemy over and over can get boring.
                    So I looked around my folders and found some monsters I had completely forgotten about (Or didn't remember having finished them). They were complete with animations so all I had to do was render them.
                    A lizardman and a skeleton. the lizardman was missing a death animation so I made one quickly, and added the skeleton to the game. Maybe I should've put some texture on the shield and spear, but it looks pretty good:

                    They even had a "raise" animation so I'm thinking that these could respawn or be summoned by some boss.

                    Update: added the lizardman, it has 2 variants, one with a club and one without. the one with the club deals more damage.

                    And with this I have ran out of monsters. I would have to edit the models to add more detail or finish the others. there's a dragon and wyvern models but have no texture or animations, some imps and demons also lacking textures and animations, a ghoul missing some animations and a texture, and a death knight (also missing animations and textures).
                    I also improved the map generation yet again, and I think this will be the last time. It's pretty robust, it generates the exit at the other side of the map, and even multiple paths, and all separated by at least one tile, with empty spaces:

                    the combat tiles also now spawn random enemies, either one minotaur, 1-5 lizardmen, or 1-5 skeletons.

                    Update again:
                    added two more rogue cards. while this sounds like little, they came with entirely new mechanics that allow for more card types.
                    Instigate: (couldn't think of a better name) for the rest of the encounter, increases all damage by 1. this effect is immediately updated on all cards descriptions and future cards and it works. I also made an alternate effect that increases healing, could also be used to reduce healing, and enemies could also reduce damage dealt by cards in theory, but may not be a good mechanic balance wise.
                    Shank: this card deals 3 damage and applies 1 tick of bleed. and with this I introduce yet another set of classes with the buff/debuffs for enemies. the bleed happens at the start of the enemy turn and goes away after the ticks are depleted.
                    With this I also introduced damage types and resistances. skeletons can get the bleed effect but receive 0 damage from it due to 100% bleed resistance. I may change it so they don't get bleed debuff at all, I may not.
                    With this it will be easy to add other damage types like fire, maybe ice, and lightning, and more.
                    They also have an alternate function to get bonuses for the points, this could be used to reduce enemy damage, or for enemies to buff themselves, increasing their damage. Or to get regeneration and heal every turn.

                    Jesusemora what IS gimp better at?

                    1. GIMP works better with transparent images. For example, it has cropping of empty fields, which is not available in Krita.
                    2. much easier work with animations (.gif).
                    3. if need to make an icon in Win, it is done with one command.

                      Tomcat GIMP works better with transparent images. For example, it has cropping of empty fields, which is not available in Krita.

                      it doesn't anymore XD I remember it being removed around 2.1 and being annoyed at not being able to copy the transparent area of an explosion sprite.
                      I have been using Krita and working with transparent areas and colors is much faster. you can split the alpha of a layer to alpha filter, duplicate it and move it to another layer. painting then paints the visible and invisible area. but clicking on the (one button) locks the alpha allowing to paint on the colored area of a sprite.
                      it's SO MUCH BETTER.

                      Tomcat much easier work with animations (.gif).

                      how quaint, because I heard krita is used to make anime and has a better animation system than gimp. I haven't gotten to it yet though. as for gifs, gimp has like 3 filters, one of which is to preview an animation, and its really bad. you can only preview loose layers, it doesn't work with groups, so I had to create the animations in different files.
                      as for layers, it's impossible to select more than one layer at a time so you have to pack the layers into a group to move them to a different file, and then you have to move each layer out of the group one by one to do something else, and once all your layers are in the same group the preview animation becomes useless.
                      I had to install an addon (tilemancer) to create spritesheets, and in order to do that I had to install some python3 library or something because script support is currently broken.

                      Tomcat if need to make an icon in Win, it is done with one command.

                      that's oddly specific.
                      but if I had to make an icon I would use a vector app like inskape.

                      update:
                      I have been connecting the character creation to the 3d world, it is now possible to create a character and have it spawn in the world. I have also been making some dialog windows for credits and game over. I'm getting closer and closer to a Demo, probably next week at this pace.
                      I've also made it to 20 rogue cards and 20 barbarian cards, so those classes will be available in the demo. wizard still only has 2.
                      next I need to work on allowing a second character to join the party, and characters dying discarding their cards from the deck.
                      Oh, also, I made a deck editor, the standard deck will be 20 cards, and new cards will be added to a different pile from which to choose at any point in the game. this makes it substantially different from other deck-builders where getting rid of cards is important.

                        Jesusemora it doesn't anymore XD I remember it being removed around 2.1

                        GIMP 2.10.38

                        how quaint, because I heard krita is used to make anime and has a better animation system than gimp.

                        creating a light and fast .gif is easier in GIMP. I can't say about anime and cartoons.

                        but if I had to make an icon I would use a vector app like inskape.

                        An icon is actually pixel art. It's probably possible to do it in vectorโ€ฆ butโ€ฆ I try to do everything possible in vector, but iconsโ€ฆ I do them pixel by pixel.

                        Jesusemora what IS gimp better at?

                        It's no better or worse โ€” they complement each other.

                          that is crop to contents and it's a feature krita also has, but it's next to the other options and not spread around 5 menues.

                          Tomcat creating a light and fast .gif is easier in GIMP. I can't say about anime and cartoons.

                          since last comment I went to krita and made an entire animation. krita has onion skins and keyframes, which are different from layers. when you add a keyframe you get a new set of layers in a completely new dimension.
                          in gimp you have to do one frame one layer or group.
                          there is a play button and other options, you don't have to "compile" the animation to play it.

                          then I exported it. you can save it as a document or render it, and the options are many video formats including godot compatible theora, mp4, etc, and gif.

                          Tomcat An icon is actually pixel art. It's probably possible to do it in vectorโ€ฆ butโ€ฆ I try to do everything possible in vector, but iconsโ€ฆ I do them pixel by pixel.

                          mhh no. maybe in 1995, but today icons are made with vector formats like svg, that way they can re-scale to different resolutions. that is how it works in linux. if windows is still using ico format then they are just wrong.
                          but even if windows is being dumb, you can still more easily resize a vector drawing to a new size, while with images you have to remake the entire thing.

                          Tomcat It's no better or worse โ€” they complement each other.

                          well I will try to find alternatives to this terrible software and get rid of it entirely. we HAVE alternatives today, it's not 1995 anymore.

                            Jesusemora that is crop to contents and it's a feature krita also has

                            They may have added it. But when I needed it, it wasn't there yet.

                            but it's next to the other options and not spread around 5 menues.

                            What does this have to do with "5 menus"? This is the first, top menu.

                            in gimp you have to do one frame one layer or group.

                            I just throw in all necessary files at once, they are placed on layers by themselves and just specify their duration when exporting โ€” that's all.

                            In Krita to place frames is a little more difficult. To begin with, you need to switch to animation...

                            but today icons are made with vector formats like svg, that way they can re-scale to different resolutions.

                            If the goal is to initially make a small image, that's not a good option at all. It's not always necessary to enlarge the icon.

                            well I will try to find alternatives to this terrible software and get rid of it entirely.

                            I see no reason to argue โ€” if you don't like GIMP, then don't use it. I don't find it repulsive.

                              4 days later

                              Tomcat They may have added it. But when I needed it, it wasn't there yet.

                              you are right, the option is not there, but there is a crop to selection option, which is a way to do it.

                              Tomcat What does this have to do with "5 menus"? This is the first, top menu.

                              Krita has fewer and tidier menues, most things are found in dockers.
                              gimp has a bad workflow, no shortcuts, things are scattered around different menues, and worst of all they move them in each new version. I don't know why they keep changing gimp, they changed the icons, the menues, the buttons, I had to relearn everything when I got 2.10, so when I need to do an operation I have to start looking around the menues for something I know exists but is no longer were it's supposed to.

                              Tomcat I just throw in all necessary files at once, they are placed on layers by themselves and just specify their duration when exporting โ€” that's all.

                              In Krita to place frames is a little more difficult. To begin with, you need to switch to animation...

                              for that I use ffmpeg from terminal. opening gimp to bake a gif sounds bad.


                              now, some updates on the game:
                              I finished connecting things, it is possible to create a character and play the game, reaching the exit spawns a credits window with restart and exit. losing also spawns a game over window, and the game can also be restarted from the menu.
                              the game was too silent so I added a song I made for combat, I made this in musescore 2 and I'm no professional musician, but it's good enough, and I'm not using AI.
                              when testing the game, two things became clear: barbarian was too OP with it's healing and blocking, while rogue was too weak.
                              so I quickly added a new rogue card and mechanic.
                              Dodge: adds 1 dodge to the rogue.
                              dodge block 1 attack each and can be stacked.

                              next I need to fix a few bugs and I will reduce the number of cards to 10, with 5 one use/exhaust/normal cards like health potion or the chair.

                              the demo will be very sober, as I'm still using placeholder art, and there are some visual bugs, but nothing game breaking.

                              Devlog: well, I have been trying to get a demo for this week, but as I export it I found a game breaking bug related to the bleed effect on the rogue.
                              I have been trying to fix this for the last 4 days, which at this point involved changing the enemy from AnimatedSprite2D using await animation finished, to sprite2Ds with animationPlayers and AnimationTrees.
                              It worked, in part, in solving the bug, but at the same time made it more unpredictable, leading to more bugs, though easier to fix.
                              moving to AnimationPlayer/Tree lead to some cool features, like when the skeletons appear they come out of the ground, so that's a plus.

                              I'm still worried about the quality of the game and a bit tired, but I will still release a demo either this week or next week.
                              I need a name for the game, it can't be "prototype card based RPG", the name of the project is Throne of Darkness, although there is no story yet and have no idea where or how I would fit this throne into the game.
                              Other than that I have been fixing bugs and testing the gameplay for balance. I think it's too easy at the moment and too RNG. the ability to save some potions for later helps, as they can be put back into the deck as fights become more difficult. some cards will need to be buffed, like the health potion which only heals 4, others nerfed, like second wind which heals 8, draws a card and reshuffles.

                              Oh, and I implemented rewards at the end of combat, 3 cards appear and you can pick one and its added to your deck. but it needs some animations.
                              Also, the combats become increasingly more difficult, starting at 1 lizardmen, then more enemies, then skeletons, and at one point one minotaur. 4-5 lizardmen is the point where the game becomes too difficult.