Hello community, it's me again, Annwfn, with a kind request. I am willing to create an intricate card-based plugin for RPG Maker MV which I am willing to give an intricate AI, animations and whatever it needs to imitate a Yu-Gi-Oh! like TCG. What skills do you think I need to achieve this? What softwares will you recommend me to dive into, at least entry-level? The plugin is aimed to have the following:
<> an advanced AI that can adjust itself to most situations and be able to use the synergies I will implement in the various Decks.
<> card animations, maybe sprites floating above the cards themselves.
<> a "table" where the cards will be set, and mechanics to place them face-down, face-up and so.
<> card pictures and sprites - these are not mandatory, but will have to be fitted in. This is also a candidate as a project for the comprehensive Java course I am going through right now. I need the mechanics set up first, the rest can be filled with different placeholder pictures until I decide on real, final ones. Sprites would float above the cards, can be replaced with RPG Maker characters until later.
For the beginning I know I need to learn JavaScript, which I am diving into slowly but surely. So... any ideas? Thank you, and please provide me with many details ^^
Yours faithfully,
Annwfn
Before i begin, sorry for the long reply, i tried to be as helpful as i can. Also sorry if this all sounds "disheartening" it was in no way my intention.
In my experience, if you are just diving into programming, it will be quite difficult to do *exactly* what you want it to do, assuming you want to do it yourself (the AI part for example,AIs are always difficult), also assuming you want to do it with RPGMaker (concerning animations for things like "hovering"). My 2 cents will be to simplify what you're asking for, (i know it won't be an exact answer to your questions), and find ways to go "around" the problems that will present themselves.
I can't tell you what you should do to achieve your end-goals, other people in here are more suitable to answer this than i am. However, before you manage to achieve your end-goals, you should - in my humble opinion - have shorter achievable goals. Below i have written some steps you could follow before you can look at your end-goal. Treat these as an example of what your creation process should look like, rather than a guide. I am not a game developer, but these are the things i've found out when creating mini-games for my game (i have adjusted them to make more sense for your game).
1. Create the rules: First create the foundations of your game. Simply write down, in a diagram, the phases (phase 1: draw card, phase 2: play attack card, phase 3: play trap card, or whatever), so that you know what the player can do in each phase. Don't think about the AI straight away, or very complicated things. You can simply add phases or fine-tune phases later on. But at least, you should have the foundations. Draw.io is a good program for that and it's free - that's how i do my diagrams.
2. Set in stone what is the LEAST each phase MUST consist of, for the game to make sense. So for example, if you're spending resources, there must be a way to gather them. That's what i mean by this. If, like you say, it's a play-card-damage-opponent, then just make 1 card that damages the opponent.
3. After all this has been laid down, you need an interface. I would suggest not to think too big for now, simply make a way for the cards to be drawn and played. As far as i'm concerned, the animations can come in later. I am also assuming this is the first mini-game you're making. There are some plugins that allow "clicking", i would suggest Yanfly's one, because it doesn't register clicks when the text box is present. So if you want to click on a "deck" and this will mean drawing a card, you would want an event which, when clicked, produces a random card (or maybe it's preset, that would need additional work). Well, for now, it can only produce 1 card, the one made in step 2.
As for their sprites, I would personally add rpgmaker characters (Yanfly's spawn event plugin is pretty handy, you can select regions of spawning events, etc.).
4. Now program in the simplified mechanics. The phases, and what a player can do in each phase. After this step you have an extremely simple manner to play your game. I would say now is a good time to add a few cards (i'd say 5 at most) and start making the AI.
5. "advanced" AI that can "adjust" itself: This is a big one. The words i put in quotes have a general meaning and don't reflect what exactly you have in mind.
To solve this, since we have made the rules, I would try to make a system of conditions to simulate a player that plays the best way possible: For example, as a player, what is the most important thing to look for? If it's "A" then A is the first thing the AI must always attempt to do before it goes to B. For example "A" could be "always attempt to make the player lose life without losing your own". To do this, you must first have ALL the rules set. This, in essence, means setting in stone whatever a player can do each turn (draw card, sacrifice card, play card, play spell, tap card, play resource, whatever).
Then you can go to exceptions: If "A" is possible, what are the reasons that the AI should not do "A"(even though we said it's the most important) and go to "B" instead? In my previous example "A" was "always attempt to make the player lose life without losing your own". An exception to this would be "unless it means defeating the player". Then an exception to this exception would be "unless it means also killing yourself" (or you could make kamikaze opponents that don't have this last exception). Anyway, you get my point.
However, always keep in mind that the AI will do some "stupid" things sometimes, simply because AIs are not that easy to fine-tune. You are also going to need testers: It's very difficult to find every single bug on your own. A player can do random stuff sometimes.
I would personally make a "stupid" AI that always plays any card it has, make sure everything works correctly, and then move on from there and add to them.
6. Remember, now we have a way to play the game, even though it's crude right now. There are no animations, there are just 5 cards, and the AI is as transparent as can be, but it's certainly play-able. This is what i meant by shorter achievable goals in the beginning.
Now that we have a pre-alpha version of the game, you have to decide what is the most important thing to go for from here. You can
6.i) add more possible cards, different types, and how they work with each other. You talked about "synergies". Although i don't know what that is, i am assuming that you mean, for example, if 1 card is played after another, they both double their damage. So make at least 1 version of that, so that you know it works. Always add these new possibilities to the AI.
6.ii)Make the "face down" mechanic you talked about (something like traps, i'm assuming?) This might mean an entire new phase on their own (between playing the card and calculating its damage). Again, the AI must be able to do this too.
6.iii) add animations to drawing and playing cards.
If you followed this logic up to this point, you will have realized that letting the player decide where to place the cards on the board is quite difficult. I would suggest you do this automatically and get back to it after the game reaches at least an alpha state. You will have also noticed that adding animations is probably the least important thing before the game's mechanics are at least close to what you would want the game to be played like : What i mean is that you should first have a playable game and THEN make it beautiful. Because when you go to animations, you will have to code them in. So it's best to know what you can touch and what you should never touch out of the already created code, so that the game never becomes unplayable because of that.
For example, when the animation plays, does the rest of the game freeze? You have to program that in. Is it a parallel process? You have to program that in. What happens if the player ends their turn before the animation completes? You have to program that in. Also, how many frames will each animation have? Is it affected by clicking, drag-and-dropping, moving the cursor to the left or right, etc? Will the animations play when the opponent picks a card? How will it show the player that it's the computer who picked this card and not the player?
This is why i left animations for last. Because they're an entire chapter on their own.
HOWEVER, if you have a game with, say, 10 cards, with its mechanics, with an AI that plays a bit decently, and it requires at least a bit of strategy to win (we're in alpha stage now, it doesn't need to be chess) you could, in theory, look at animations - but i would personally leave them for last.
7. At this point, we have something that is closer to what you wanted. It's a playable game, the AI is easy but does utilize the mechanics of the game, and it doesn't mean you will win by simply playing every single card. Is it a fun game? Well, probably not at this point, since it's quite easy. Well, now is the point to make it more fun. How you will do that is up to you, but i would think of adding multiple versions of cards, or making the AI able to outsmart you, stuff like that. However, no matter how you proceed forwards, now is certainly the time to start building the different decks you talked about. This will take a long time to program, but it will take significantly less time if you have followed all the steps up to here. (since we're done with the most basic stuff).
8. After you finish at least 2 decks (for the player and computer) it does start resembling a more "proper" game now. So now make a choices menu (like cheating), to select your deck, and the opponent's deck and play it out to see how it goes. Again, you will run into the AI doing stupid things with its deck, and this is a matter of fine-tuning it. But all these things will need to be addressed before you move to building a map.
By building a map, i mean adding specific opponents in there. For example, 1 opponent has deck#3, while opponent 2 has a random deck between decks #1 and #2, etc.
Anyway. I'll end my post here. I will end it with this: You have to decide which aspect of the game you (and i mean you, the developer) will focus on. If you want to hone your programming skills, i would suggest focusing on the AI and commissioning an artist for visuals. However, you will still be the one programming how those visuals will be implemented in, so you have to think in terms of dimensions, stretching images, etc. so that the engine knows what to do with the picture. This could even mean changing how the engine behaves, but i've found this to be more advanced than it sounds.
So yeah, i hope i helped!
