GDevelopApp / GDevelop-examples

Repository of examples and templates for GDevelop - the open-source, no-code game engine
https://gdevelop.io
50 stars 19 forks source link

turned based fighting example #121

Closed shadow00dev closed 2 years ago

shadow00dev commented 2 years ago

Describe the example

this is a turned based fighting example game with 1 player and enemy with 2 ability(fireball and summon zombie) also i made the art myself

heres a link to play it: https://shadow001.itch.io/turned-based-fighting-example

Checklist

(the project folder is in comments)

D8H commented 2 years ago

Thank you for sharing this example. I only took a quick look at the events. It seems that a FSM could make the events a lot clearer. This tutorial might help you: http://wiki.compilgames.net/doku.php/gdevelop5/tutorials/finite_state_machine

Can you explain what concepts this example will bring to light? I guess you wanted to show something like the FSM, but I only took a quick glance.

shadow00dev commented 2 years ago

Thank you for sharing this example. I only took a quick look at the events. It seems that a FSM could make the events a lot clearer. This tutorial might help you: http://wiki.compilgames.net/doku.php/gdevelop5/tutorials/finite_state_machine

Can you explain what concepts this example will bring to light? I guess you wanted to show something like the FSM, but I only took a quick glance.

theres 1 animation for player 1 for enemy and 1 for zombie i would of assume i wouldn't need a FSM also i made this because someone asked for help on gdevelop discord a turned based game, and i realized gdevelop don't have a example so i made a example for gdevelop

D8H commented 2 years ago

theres 1 animation for player 1 for enemy and 1 for zombie i would of assume i wouldn't need a FSM

The tutorial takes platformer animations as an example, FSM can be used for everything that need states. In the case of this example it could be:

It avoids to have the same condition repeated everywhere and make it clear what happens in each state.

But, maybe wait to have someone else opinion before doing changes because even though it could be a good template, I don't think it has its place as an example.

Bouh commented 2 years ago

My first opinion when I saw the game is how to play it?

There are texts on the screen, but I don't understand directly what I can do. It's a problem with graphics and layout, you might be using the graphic assets from the asset store to make a more attractive game with a consistent style.

An FSM is welcome yes. It allows having whole logic in groups, and better readability of the event sheet when logic is separate.

Bouh commented 2 years ago

What I spotted:

Art folder is great, nice to see this, it's a must to have, same for the readme :) !

shadow00dev commented 2 years ago

okay

shadow00dev commented 2 years ago

It's a problem with graphics and layout, you might be using the graphic assets from the asset store to make a more attractive game with a consistent style. I understand this I just made my own art because I don't like using another people art(I know I'm not the best are making art) if I must 95% have to change it to some on the asset store I will, also I think its the grass that makes it inconsistent right, maybe I should try and do a alien grass thing instead(cuz the player and enemy don't look human)?, also with FSM I think I might not do that if 98% needed as well because there's not a lot of animations per object

shadow00dev commented 2 years ago

theres 1 animation for player 1 for enemy and 1 for zombie i would of assume i wouldn't need a FSM

The tutorial takes platformer animations as an example, FSM can be used for everything that need states. In the case of this example it could be:

  • Wait user action
  • Play player attack animation
  • Play opponent attack animation
  • Game over

It avoids to have the same condition repeated everywhere and make it clear what happens in each state.

But, maybe wait to have someone else opinion before doing changes because even though it could be a good template, I don't think it has its place as an example.

well i know I cant say this but I personally think this could help people with basics of some stuff In gdevelop and if anyone ever need help with making a turned based fighting system my example could help(it helped the person it was originally made for)

shadow00dev commented 2 years ago

TurnedBasedFighting.zip the only changes I haven't done is FSM and didn't use the asset store but I did change the art a little(hard to notice player and enemy changes in game but zombie change you will notice)

D8H commented 2 years ago

But, maybe wait to have someone else opinion before doing changes because even though it could be a good template, I don't think it has its place as an example.

well i know I cant say this but I personally think this could help people with basics of some stuff In gdevelop and if anyone ever need help with making a turned based fighting system my example could help(it helped the person it was originally made for)

It's totally alright. I just didn't want to make you work on it without the validation of someone that is more used to review examples (like Bouh).

shadow00dev commented 2 years ago

But, maybe wait to have someone else opinion before doing changes because even though it could be a good template, I don't think it has its place as an example.

well i know I cant say this but I personally think this could help people with basics of some stuff In gdevelop and if anyone ever need help with making a turned based fighting system my example could help(it helped the person it was originally made for)

It's totally alright. I just didn't want to make you work on it without the validation of someone that is more used to review examples (like Bouh).

i would of probably done it anyway(for the itch.io page to make it better) but okay, also this is the first time for this and I haven't done game dev in about a year and then i see that someone needed help i made a "crappy" example for him then made this one cuz i wanted to make it better so this is it i guess, also I'm not that good at explaining stuff to tbh(like for example if I have a story idea I'm not good and showing it in a good way)

Bouh commented 2 years ago

The idea of a Start scene is interesting. I was thinking about a redesign of the presentation to make the project more attractive. I strongly suggest using objects/textures from the asset store because there are icons and buttons. It gives a style and a certain cachet to the example. If you want my personal opinion, it is not presentable. That's why I'm pushing to have a minimum interface with sprites from the asset store.

the only changes I haven't done is FSM and didn't use the asset store but I did change the art a little

I'm probably annoying, but the quality is essential. An example should be representative of the software and the games that are possible.

I see that you have indeed made some changes, continue the changes, it's on the right track!

i would of probably done it anyway(for the itch.io page to make it better) but okay, also this is the first time for this and I haven't done game dev in about a year and then i see that someone needed help i made a "crappy" example for him then made this one cuz i wanted to make it better so this is it i guess, also I'm not that good at explaining stuff to tbh

I don't want to sound mean, I know there is a desire to do well and help others by posting this example. It's also my goal, to have an example project that looks pro and is consistent with what it promises, then that is pleasant to play and see while respecting a minimum of turn-based games standards.

I don't do feedback like that to hurt people, but to have a higher and more professional quality level. Don't take it personally, it's just a review of a project. I would be happy to continue the feedback with you in order to have a final rendering that I could accept without any problem in accordance with the required quality level.

shadow00dev commented 2 years ago

The idea of a Start scene is interesting. I was thinking about a redesign of the presentation to make the project more attractive. I strongly suggest using objects/textures from the asset store because there are icons and buttons. It gives a style and a certain cachet to the example. If you want my personal opinion, it is not presentable. That's why I'm pushing to have a minimum interface with sprites from the asset store.

the only changes I haven't done is FSM and didn't use the asset store but I did change the art a little

I'm probably annoying, but the quality is essential. An example should be representative of the software and the games that are possible.

I see that you have indeed made some changes, continue the changes, it's on the right track!

  • I see that there is at least one object not used, it has a default name.
  • Click to start, is not centred.
  • Use groups in the events, it makes the project much more structured.
  • Put capital letters at the beginning of sentences, especially in the comments.
  • There are two objects in lowercase while the others are in PascalCase, unify them in PascalCase, a project with coherence makes it immediately more professional.
  • Between the rounds, there is no waiting time. It's that goes immediately to the enemy, if you don't want to put a pause time, I understand. In this case, set in the centre of the screen that it's now the enemy's or the player's turn, display it for a few seconds and hide it. You will say it is ridiculous it is already displayed, yes, but that does not present as a game, it is not ludic. An example after presenting a feature also presents a type of game. I think that this example lacks the basics of the information that can have a turn-based game.

i would of probably done it anyway(for the itch.io page to make it better) but okay, also this is the first time for this and I haven't done game dev in about a year and then i see that someone needed help i made a "crappy" example for him then made this one cuz i wanted to make it better so this is it i guess, also I'm not that good at explaining stuff to tbh

I don't want to sound mean, I know there is a desire to do well and help others by posting this example. It's also my goal, to have an example project that looks pro and is consistent with what it promises, then that is pleasant to play and see while respecting a minimum of turn-based games standards.

I don't do feedback like that to hurt people, but to have a higher and more professional quality level. Don't take it personally, it's just a review of a project. I would be happy to continue the feedback with you in order to have a final rendering that I could accept without any problem in accordance with the required quality level.

I don't take it personally, also okay ill get to work on changes

shadow00dev commented 2 years ago

also i do use groups in the project to structure it btw(well I structure it different prob but I do use them for that reason)

Bouh commented 2 years ago

also i do use groups in the project to structure it btw(well I structure it different prob but I do use them for that reason)

You can add groups, for white comments ;) Think major caps at beginning of the sentences in groups/comments.

shadow00dev commented 2 years ago

also i do use groups in the project to structure it btw(well I structure it different prob but I do use them for that reason)

You can add groups, for white comments ;) Think major caps at beginning of the sentences in groups/comments.

okay

shadow00dev commented 2 years ago

TurnedBasedFighting.zip here it is the only thing i did to is say the turn in the center of scene(mainly because when i tried it was very buggy and it made no sense to me to why(because it was happening even when i told it not to))

shadow00dev commented 2 years ago

TurnedBasedFighting.zip sorry for another upload but i find a issue with the last one(ik i should of checked and i did maybe the tired got to me then but when i realised i fixed the issue(issue was 2 images that were not used were there)), hopefully this is updated to be to the liking

shadow00dev commented 2 years ago

@Bouh sorry for pinging you but i got told to ping the person who was reviewing it and i think it was you so um may i ask for you to check if there are any issues with it again please i did all the changes you asked i belive

D8H commented 2 years ago

I took a quick look.

The buttons for touch devices are nice. I think you could use it for computer too. They could be used to make the player understand when an input is expected from him. For instance, using an orange/green tint on the one selected and a half opacity on the other.

The enemy health should probably be the enemy side. I think it could be nice to have a health bar instead. It can be done by changing the width of a tiled sprite for instance.

You didn't do the FSM. We can help you to do it step by step if you want. The 1st step is to put every event that has the condition Turn = "Player" as sub event of an event with this condition and same with Turn = "Enemy". It avoid to repeat this condition everywhere and give more structure.

shadow00dev commented 2 years ago

I took a quick look.

The buttons for touch devices are nice. I think you could use it for computer too. They could be used to make the player understand when an input is expected from him. For instance, using an orange/green tint on the one selected and a half opacity on the other.

The enemy health should probably be the enemy side. I think it could be nice to have a health bar instead. It can be done by changing the width of a tiled sprite for instance.

You didn't do the FSM. We can help you to do it step by step if you want. The 1st step is to put every event that has the condition Turn = "Player" as sub event of an event with this condition and same with Turn = "Enemy". It avoid to repeat this condition everywhere and give more structure.

first 2 i will do, but i got told i didn't need to do fsm(also yah i don't feel like doing fsm cuz well I'm not used to it and I've ordered my events in a way where a fsm would prob be worse?)

shadow00dev commented 2 years ago

also for fsm if i do, do it then should i make a group and put it there maybe

Bouh commented 2 years ago

There are good changes, this example has style!

Review

shadow00dev commented 2 years ago

FSM I will do I guess, though I'm pretty sure there aren't any unused events? , also it's possible for the player to lose, also btw I just finished the first step of doing the FSM(well I did what D8H said to do(which was step 1 I think idk), also for the flip events they're there so it can be changed when ever wanted from the scene

shadow00dev commented 2 years ago

TurnedBasedFighting.zip

here is the update with the changes the only thing I didn't change is the flip event stuff since I personally think it would be more helpful for some stuff(like if someone wanted to edit the level or add their own they could use the flip event to change the player and enemy around or something I guess), and with the FSM I did it from how I understood it from the link(i didn't use the external events though)

D8H commented 2 years ago

There is a typo (game) in the Game variable. This variable could be a new state.

You added 2 states with the Turn variable. You can rename this variable State and use the values "PlayerTurn" and "EnemyTurn". This way new states can be added like GameOver. This state will replace the Game variable. You'll probably need to move the event that changes the Stats inside the "PlayerTurn" and "EnemyTurn" state. After that we will try to replace the PlayerUsedAbility variable. The idea is to reduce the number of variables that represents the state to have each state clearly delimited.

I meant green/orange as green = zombie and orange = fire to show the button is active.

shadow00dev commented 2 years ago

There is a typo (game) in the Game variable. This variable could be a new state.

You added 2 states with the Turn variable. You can rename this variable State and use the values "PlayerTurn" and "EnemyTurn". This way new states can be added like GameOver. This state will replace the Game variable. You'll probably need to move the event that changes the Stats inside the "PlayerTurn" and "EnemyTurn" state. After that we will try to replace the PlayerUsedAbility variable. The idea is to reduce the number of variables that represents the state to have each state clearly delimited.

how could i replace the playerusedabitly?, cuz the "State" wouldnt be able to do that cuz of how the system would work right? cuz the "State" was only meant to be a "Turn" orginally

I meant green/orange as green = zombie and orange = fire to show the button is active.

ooh okay

shadow00dev commented 2 years ago

also wheres the typo for the Game variable?, i cannot find it , also i have one idea to remove the playerusedabitly

shadow00dev commented 2 years ago

i got an idea for less variable for randomhelp but it would use a exetension so would that be okay? @D8H (sorry for ping)

D8H commented 2 years ago

also wheres the typo for the Game variable?, i cannot find it , also i have one idea to remove the playerusedabitly

image

i got an idea for less variable for randomhelp but it would use a exetension so would that be okay?

It's ok to have a lot of variables. I think we can take a look at this after the states are all in place.

how could i replace the playerusedabitly?, cuz the "State" wouldnt be able to do that cuz of how the system would work right? cuz the "State" was only meant to be a "Turn" orginally

It will probably be more difficult than for the "GameOver" state. The "PlayerTurn" state could probably be split in 2 states:

shadow00dev commented 2 years ago

I got a working system instead of the PlayerUsedAbitly variable now

shadow00dev commented 2 years ago

also before i was afk i did make the changes you asked me to make want me to give a download to it?

shadow00dev commented 2 years ago

TurnedBasedFighting.zip here it is tell me if there is anything else(i did find 1 bug but i fixed it)

shadow00dev commented 2 years ago

ooh I just checked the events and there is still a reference to the game variable i removed it in my one i won't sent a update on that cuz well it's just 1 action and ill send it after I get told for other issues cuz knowing me there's gonna be lol =)

D8H commented 2 years ago

So, as you see it allowed to remove some conditions as we know that the state can't be "GameOver" and "PlayerTurn" at the same time. Now, we're going to put the events about the game over at the same place:

This way, the event that displays the WonOrLost and the one that handles a click on it are right next to each other. The reader of the example will directly understand what happens in this state.

shadow00dev commented 2 years ago

So, as you see it allowed to remove some conditions as we know that the state can't be "GameOver" and "PlayerTurn" at the same time. Now, we're going to put the events about the game over at the same place:

  • The event under the "restart" comment is what leave the "GameOver" state. It should be place as a sub event of State = "GameOver". It's will be easier to understand than Layer "GUI" is visible.
  • The events that set State = "GameOver" should not handle the GUI. This is a matter for the "GameOver". You can add a sub event in the "GameOver" state with a trigger once to handle the GUI changes when going to this state.

This way, the event that displays the WonOrLost and the one that handles a click on it are right next to each other. The reader of the example will directly understand what happens in this state.

okay

shadow00dev commented 2 years ago

TurnedBasedFighting.zip

I think you meant something like this so i did it

D8H commented 2 years ago

Yes, you can also move the action to change the displayed test. It will need a new scene variable to know who win, but that way everything about the game over will be at the same place. If one day someone wants to change the look of the game over, only what's inside the "GameOver" state will have to be modified.

shadow00dev commented 2 years ago

in theory it wont need a variable. i would just need to check whoes at 0 hp, right?

shadow00dev commented 2 years ago

TurnedBasedFighting.zip

here it is(im not 100% sure if this is it but its what i think you wanted me to do for this)

D8H commented 2 years ago

in theory it wont need a variable. i would just need to check whoes at 0 hp, right?

That works too. Unless we want to only have game logic inside the states where the game happens. But, maybe it's going too far. Both solution are fine, I guess. Let's keep it that way.

The events that check if players are dead are outside of the states. We know that the player only takes damage during the "EnemyTurn" state so it can be checked there (and the other way around).

There should not be any event outside a state other than "At the beginning of the scene" (which can be seen as an state too) or things that can happen anytime like a pause or a game menu.

shadow00dev commented 2 years ago

The events that check if players are dead are outside of the states. We know that the player only takes damage during the "EnemyTurn" state so it can be checked there (and the other way around).

i dont understand this, dont the dmging system for it work good right now so no need to change?

There should not be any event outside a state other than "At the beginning of the scene" (which can be seen as an state too) or things that can happen anytime like a pause or a game menu.

i dont understand what i should change?, if i put the timer inside the State enemy and player turns then i feel like i shouldnt tbh

D8H commented 2 years ago

The events that check if players are dead are outside of the states. We know that the player only takes damage during the "EnemyTurn" state so it can be checked there (and the other way around).

i dont understand this, dont the dmging system for it work good right now so no need to change?

Because they are state transitions. It's important that they are in a state.

It should be something like this:

FiniteStateMachine

An arrow (transition) must come from a state to go to another one.

Then we will add more states if needed.

There should not be any event outside a state other than "At the beginning of the scene" (which can be seen as an state too) or things that can happen anytime like a pause or a game menu.

i dont understand what i should change?, if i put the timer inside the State enemy and player turns then i feel like i shouldnt tbh

Yes, this event is fine outside because it's to handle an animation end. To make it easier to understand what it does. You can set the animation 1s long (it might need 2 frames, I'm not sure) and check when it ends to go back to the "Idle" animation instead of using a timer.

shadow00dev commented 2 years ago

The events that check if players are dead are outside of the states. We know that the player only takes damage during the "EnemyTurn" state so it can be checked there (and the other way around).

i dont understand this, dont the dmging system for it work good right now so no need to change?

Because they are state transitions. It's important that they are in a state.

It should be something like this:

FiniteStateMachine

An arrow (transition) must come from a state to go to another one.

that's what my events do?,(sorry for the late answer), i don't feel like i need to change anything cuz that image is basically what the state stuff of my events do unless im wrong?(what do i need to change for it)

shadow00dev commented 2 years ago

TurnedBasedFighting.zip

this is with the changes to how animation changes to idle(aka removed the timer)

D8H commented 2 years ago

that's what my events do?,(sorry for the late answer), i don't feel like i need to change anything cuz that image is basically what the state stuff of my events do unless im wrong?(what do i need to change for it)

These events are not in any state but do a transition. The reader won't know when this can actually happen which makes the events hard to read. That why I suggested to move them in the only state they can happen.

image

shadow00dev commented 2 years ago

that's what my events do?,(sorry for the late answer), i don't feel like i need to change anything cuz that image is basically what the state stuff of my events do unless im wrong?(what do i need to change for it)

These events are not in any state but do a transition. The reader won't know when this can actually happen which makes the events hard to read. That why I suggested to move them in the only state they can happen.

image

so i move the state events for gamer over there? , sorry this dont makes no sense like theres no context(prob me)

shadow00dev commented 2 years ago

oh i think i understand now, so i move the health vars in they same subevents and the collision for removing the health(aka the state main event)

shadow00dev commented 2 years ago

also because i removed the playerused ability and there if not collision with background didn't work to make play not use ability when ability in use now i need to find a way to fix it i would use the playeruse ability var again cuz that was working before but you said to remove it last time i had it

shadow00dev commented 2 years ago

TurnedBasedFighting.zip

I've changed how game over is set(basically i didn't need to change the position of to of them just needed to combine them) and fixed the bug