Is GODOT overkill for what I want to do?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By docdaddy

I need to create a simple card game for some special education people. Currently I have made a physical card game, printing out cards with activities on each card. There are 4 levels of activities, and they are broken into Girl and Boy. So they start at Level 1 Girl, and a girl draws a random card from that deck and tries a simple activity, and that card is pulled from the deck. Then a boy pulls a random card from Level 1 Boy and tries the activity, After a predefined number of rounds, they move to round 2/Level 2 and repeat. Etc. Etc.

I’d like to set this up on a laptop rather than physical cards for various reasons (one of which is I need to observe and modify the actions cards in the deck after play based on observations.)

I’m not a programmer. Is it overkill to try to learn GODOT to create this simple “game?” Thanks very much for your patience with a programming newbie (my last programming was MANY years ago in simple Applesoft Basic!)

It may be overkill. How many cards are we talking about? How many activities are required? If you just need to draw random cards with words and/or pictures on them, then it may not be so bad.

If I could, I would break down the design of it, sort of like in a flowchart. You have branching paths which lead to outcomes. If you have too many outcomes to consider, they maybe the Godot engine isn’t for you.

From what I’ve read, you seem to want it to go like this:

(Girl 1) -> (At level 1) -> (Pulls card) -> (Performs activity)
(Boy 1) -> (At level 1) -> (Pulls card) -> (Performs activity)

…Goes through a few cards, then moved on to the next round.

(Girl 1) -> (At level 2) -> (Pulls card) -> (Performs activity)
(Boy 1) -> (At level 2) -> (Pulls card) -> (Performs activity)

If this is a correct assumption, then I would have a counter which keeps track of the rounds, variables for the boys and girls, arrays for the cards, and dictionaries for the associated activities on the cards. I would then setup a node with widget containers (the graphical stuff the player interacts with) so as to display the labels for the boys and girls, as well as text to display the activities on the cards.

Bottom line, you would have to learn how to create a project with some graphics to display the cards, a text area to show the text for the activities, and then a script attached to the node to go through the deck array, choose a card, display the text for the card, and then remove that card. In the script, you would count the number of rounds, and then move on to the next level, which would involve another array.

Ertain | 2019-07-03 15:59

Yeah, that’s kind of exactly what I want to do. Just select the current deck, let someone pick and display a random card in that deck, they do the activity, card gets marked read so it isn’t pulled again this session. A Boy Deck and a Girl Deck for each level.

The cards will be edited between play sessions, some added, some removed, depending on how the activities go, also since this is special needs people, depending on their capabilities.


docdaddy | 2019-07-04 20:47

I’ll illustrate my point further by throwing together a demo. I already have one in the works.

Ertain | 2019-07-05 00:01

Thanks, very much appreciated!

docdaddy | 2019-07-05 04:04

Here’s the Github repo of the demo I was telling you about. Try it out, and tell me what you think.

Ertain | 2019-07-06 22:45

Thanks very much! That is very close to what I’d like to do.

docdaddy | 2019-07-08 18:01

It needs a way of taking “decks” (really, JSON formatted files) and presenting them. Luckily, I’m working on that feature, too.

Ertain | 2019-07-09 00:02

Sorry for the update, but I’ve just included a feature where you can write your own decks in JSON. Check out the release here.

Ertain | 2019-07-13 03:40

I’m sorry I have not replied earlier, we had a family issue that has consumed me in the last month. Thank you for your help! I’m new enough I still have to dig in to try to understand how it works, but a good base as I learn the system.

docdaddy | 2019-07-30 18:13

Hope the family problem was taken care of.

You’re welcome. File an issue on the Github page for the game if you have any problems or concerns.

Ertain | 2019-07-30 18:34

:bust_in_silhouette: Reply From: Kaligule

The question is, what would be the alternative?

If you can live with a commandline interface I would suggest to just write a script in whatever programming language you like most (python might be good for starting).

If you want the gui, I think Godot could be a really good choice. It let’s you use many features without knowing too much about the rest of the engine. And while card-games are not as common as plattformers on Godot, it defenitelly has been done before and you will find resources about it online.

Good question. I’ve tried to find standalone programs that let me do what I want to do, but none of the couple I’ve found work very well. I was surprised someone didn’t already have a program out there that let you input your decks, then randomly draw and display the cards, being able to handle multiple decks.

We need the GUI as this will be special needs people of a variety of ages and capabilities playing the game.

My favorite programming language - I will be learning to program when I learn GODOT (found a recommended video tutorial) so I don’t know any language at this point.

Thanks for the reply.

docdaddy | 2019-07-04 20:51

I think Godot Script is a good first language. The most important thing if you want to start programming is that you have a goal to work to - which you obviously have. You are on a good way.

Kaligule | 2019-07-06 06:02

:bust_in_silhouette: Reply From: Ertain

As I have mentioned in the comments, it may not be overkill, provided that you have planned for what you require. I took what @docdaddy wanted, and tried to map it out like this:

# For level 1
(Girl 1) -> (At level 1) -> (Pulls card) -> (Performs activity)
(Boy 1) -> (At level 1) -> (Pulls card) -> (Performs activity)
# For level 2
(Girl 1) -> (At level 2) -> (Pulls card) -> (Performs activity)
(Boy 1) -> (At level 2) -> (Pulls card) -> (Performs activity)

I then went ahead and threw together this demo for @docdaddy, so as to further illustrate my point.