Posted September 10, 2024 by MythAtelier
#cgc #update
Hey folks! We've been hard at work preparing this update, and there's a lot to cover across Core Engine, Deck Editor and Card Shop. Let's get into it.
So... that's a lot.
Those updating from older versions of CGC need to create new subfolders in their img/CGC folder for card highlight and button sheets. A few other changes are bound to break parameter settings on your projects but they should all just be cosmetic. If you're updating and things stop working, make sure that you've re-opened every CGC plugin so that any new parameters can initialize.
But enough about changes; let's move on to additions!
Previously, whenever the player was supposed to select cards for removal, the UI was exactly the same as when they're supposed to select cards for discard. This might not be the right feedback for every game, so we've added Remove variants of the Highlights for cards and the End Turn Button.
When we first made Card Game Combat we used "Learn Skill" as a way to temporarily add cards to the deck. Later on, we added the Add X to zoneName Card Action which performed that function with even better flexibility. That means the old method is obsolete, and in fact using Learn Skill for something other than learning the skill is both unintuitive and takes away important functionality.
So we changed it! Now any time an actor learns a skill in battle, it works just like learning a skill on the map; that card is added to their Library and their Deck zone. This means that actors learning skills on level up now works the way it's supposed to.
The Card Library scene has had a few problems for a while. It strongly disliked certain window resolutions or card dimensions, it would scroll at the wrong time or refuse to scroll back up all the way, and it couldn't be used in conjunction with Deck Editor.
So we rewrote it. We replaced the code with better code. On its surface, it looks mostly the same, just with the bugs ironed out. But underneath, you're seeing completely different code in action. This matters because we've drastically improved inheritance, which is a fancy way of saying that if something in the Library is broken it'll be broken in Deck Editor and the Card Shop, and therefore if something is fixed in the Library it'll be fixed in Deck Editor and the Card Shop without needing to update all three plugins in the future.
We've also taken this opportunity to drastically improve Card Library Plus, but I suppose that's a devlog for another day.
CGC has been quietly tracking where Cards come from for a while, since we needed to know that information in case the source of that Card disappeared. I'm talking about EquipCards adding Cards through equipment and states, though we tracked other origins that ended up being redundant and we later cut those.
Now, Cards of the same Skill ID but different Origins will be displayed next to each other in the Card Library. So if you've gained 3 Strike cards by normal means (Learn Skill command, level up, etc) and 2 Strike cards gained by equipment, the Library will show 3x Strike (Learned) and 2x Strike (Equipment) instead of just showing 5x Strike.
We've added "Badges," which are images that get drawn on the Card depending on their Origin, to visually distinguish between these Strike cards. Badges are only drawn in the Library or in Deck Editor.
Distinguishing between Origins is pretty useful for the player so that they can see at a glance what is in their Deck permanently and what's only there as long as certain conditions are met.
The Card Library Update keeps on coming! The Card Collection is an alternate Library which shows off not the current Actor's current inventory of Cards, but instead a glossary of every Card the player has had access to on their journey. In a more traditional RPG that also includes cards it can be seen as a collection of the Party's cards, or in a roguelike where the player loses all their cards between runs it can be used as a database. It's like a pokedex for cards!
Card Collection has several customization options, including the ability to hide the appearance and descriptions of cards the player hasn't seen yet. We also track your collection progress across both the total number of discover cards and break down by each known Type. So, have your players get out there and catch 'em all!
Now all text components on a Card can be aligned to the left, right, or center. Now all text components on a Card can be made to not appear. Finally, Cards without names.
We're half of the way there, with the shifting of Highlights towards sheets that get their own subfolder in img/CGC. Users of CGC Action Pack 2 will be well aware that there are more things you can select a card for, and it only makes sense to add highlight options for each of them. The structure is there, the time is right!
We brought this up in our last devlog, and it turns out that for multiline support we need to do a bit of overhauling on the Card Action infrastructure. The Library was the focus for this update, so this and another battle component will be the focus for the next one.
As before, we're looking at allowing something like this to be possible:
<Card Actions> Eval{ code code code } </Card Actions>
And this:
<Card Actions> If [expression] { Draw 1 Discard 1 Other Card Action } </Card Actions>
The idea behind this one is that you can designate one skill as a Template, and other skills can inherit its Card Actions, Card Target Actions, and Card Passives. We have a few ideas about the specifics of how we should implement this; we want it to be easy to use and flexible.
One of our solutions is to add a new Card Action called "Perform Actions from Skill X," which you could add at any point within a card's list of Card Actions or Card Target Actions. This is not set in stone; we want our template/inheritance system to be as versatile as possible.
As we are on the path to v1.7.0 Enemy Cards and Decks, we will need to make a couple stops to build up the engine to meet its needs. One of the most essential pieces still missing from CGC is a turn-system that works better for Card Games. Right now turns are quite skewed unless it is a single Actor going up against multiple enemies. We want to give the player more control over what that looks like.
So, a Timing Structure is the first turn towards a more more customizable turn structure. Anyone that plays CCGs will know that phases and timings play a big role in how Card interactions resolve. While we have managed to achieve a lot with RPG Maker's Default Turn-Based Battle System with Start of Turn / End of Turn Skill triggers, we believe that more can be done to allow for new card effects. Our goal is to allow sets of Card Actions to be executed at any of the following triggers:
Some of these we already have in place, so the goal is to have it be a universal system where the designer can determine which timings they care about and insert the Card Actions they would like to happen there. These can also don't have to happen at a set time. For example, if a Card can be played in response to an Action (similar to the Parry and Riposte cards in the Demo Project) then we would like this system to support it. Once we have expanded the Timing Structure we can then move onto Individualizing Battler Turns.
Myth_CGC_CoreEngine is over 10,000 lines of code! That's as many as there are grains of sand in a beach with 10,000 grains of sand in it. That's as many as there are feet in a football field that's too big. That's as many lines of code as half of the amount of times per day the average person blinks. And the entire suite of plugins is nearly at 30,000 lines.
I bring it up in half the devlogs I've written but it blows me away how much this plugin suite has grown, and how much the community of people using it has grown. It has almost none of the original code I wrote in winter of 2021, with almost everything having been replaced with better, cleaner, or more scalable code. We've come a long way!
None of this would have happened without the incredible support we've received. Special Thanks to all our lovely Patrons :)
Card Game Combat is developed by MythAtelier, LLC. We can be contacted for commissions and other business inquiries at our Email.
If you would like to support our work and have a say in what plugins come next, please be sure to check out our Patreon.
If you are looking to ask questions about Card Game Combat or talk with other developers, feel free to join our Discord.