gdquest-demos / godot-open-rpg

Learn to create turn-based combat with this Open Source RPG demo ⚔
https://youtube.com/c/gdquest/
MIT License
1.99k stars 244 forks source link

Combat Milestone #215

Open food-please opened 8 months ago

food-please commented 8 months ago

Feature implementation: v 0.3 - JRPG Combat

I'm hoping that we can create a simple (J)RPG combat system, similar to what is outlined in the 2D Secret's course.

I think the goals should be as follows:

Implementation and Scope TBD. Will edit once I know others' vision for project. Basically, this will describe the model we want (what stats to include, what visuals are needed, real-time/turn-based, etc.).

Discussion and Feedback So, we've mentioned this tangentially in other issues/PRs, but I would like to nail down the combat system. In my mind, I think it's a good idea to implement the prototypical combat model, perhaps with a simple resource system (Action pointss, as in the 2D Secrets course?).

Do you have any particular thoughts on combat design? I would find it helpful, I think, to know what the GDQuest folks would like the final product to look like. We can re-implement the 2D Secrets course, or we can do something entirely so that folks visiting the repository can look at multiple combat implementations.

Speaking of appearances, I'm running out of free art and will probably need to start drawing. It would also be good to hear of your thoughts for project visuals. I've included a few mockups below, not sure what you think of any of them. I remember reading somewhere that you're preferring vector over pixel art, which I'm able to work with. I know that you also were using Krita-painted assets, which I could revisit as well.

tumblr_plh1ldRqIn1svbgupo1_1280 Pixel-boy at https://2pblog.tumblr.com/image/182081376051. Retrieved 2023-09-23.

NathanLovato commented 8 months ago

Thank you for taking the time to write this!

We have a couple of topics here:

  1. Reviewing the goals for this project.
  2. Art style and assets.
  3. Deciding on the combat system's design.

1. Reviewing the goals for this project

The goals sound great. Note that I think this time instead of doing a really big PR, the work could be broken down into smaller chunks. For instance, the transition to and from the combat state is a separate piece of code from the combat system itself. Character stats and keeping a party around is also a separate piece of code.

The reason for this suggestion is that it makes it easier to review, test, and merge the code, and allows us to give you feedback much faster.

2. Art style and assets

When it comes to art, in all transparency, there's a good chance that, in the future, we'll commission professional artists to (re-)create the assets, sound effects, and music for the project.

I can't be 100% sure now as we unfortunately don't have the budget for that right now, but it's something I'd like to do in the future to make this look as appealing and consistent as possible.

I think the pixel art mockups you've shared are great. If you want to make rough assets, or even have fun with some to put in a personal portfolio, that's great. But I'd suggest not to spend too much time on it, because making all the battlers, mobs, and backgrounds is a lot of work, and there's a solid chance that all the project's art will be replaced in the future.

Regarding the references, I'd say the mockups of Pixel Boy are the most in line with the project's current art style. The other two would stand out a bit too much, I think.

3. Deciding on the combat system's design

Making a classic combat system sounds great. I think it would be good to base it on a proven reference, be it classic Final Fantasy or Suikoden or the likes.

It's so that users can easily understand the project, its code, and learn from it, and adapt it to their own projects.

You don't have to base the work on the 2D Secrets course, though you're welcome to do so (and even to port and improve the code if you feel it can help you save time).

While it had a particular presentation, it's actually like old Final Fantasy, it's an Active Time Battle system. Just, with the character turn order presented on a line as in Grandia games instead of each having their own gauge.

So, ATB or purely turn-based, either is fine by me. Having mana or action points is also fine by me. What I'd avoid is having too many systems and unique mechanics to avoid making the combat system too difficult to learn from.

I hope this helps! Let me know if you have any questions or comments on any of these points.

food-please commented 8 months ago

TLDR: thanks, I think we're on the same page. I'll draw up a quick design and implement things in little chunks. Also, anything else in this issue will fall under 3. Deciding on the combat system's design.

I hope this helps! Let me know if you have any questions or comments on any of these points.

Thank you, this is very helpful. I'm looking forward to seeing how the project keeps moving forward.

1. Reviewing the goals for this project

...Note that I think this time instead of doing a really big PR, the work could be broken down into smaller chunks...

Agreed 110%. Sorry about the overload last time, I was having difficulty breaking it down into reasonable chunks. You should hear from me much sooner this time around.

When it comes to art, in all transparency, there's a good chance that, in the future, we'll commission professional artists to (re-)create the assets, sound effects, and music for the project.

Thanks, that's what I would expect. Personally, I wouldn't commit into it until the project is more or less wrapped.

I'm playing around with Inkscape at the moment, trying to imitate some of Tibo or Kay's work. I'll probably start 0.3 with existing CC0 assets and then do a (quick) asset update before the final 0.3.X release to bring everything together.

I'm having a hard time wrapping my head around good Skeleton2D practice, namely swapping out body parts in real time (e.g. 8-directional character faces away from camera rather than towards it. Might be just as easy to have 2 separate skeletons and use the proper one depending on the direction). Are you aware of any good resources other than the official docs?

Regarding the references, I'd say the mockups of Pixel Boy are the most in line with the project's current art style. The other two would stand out a bit too much, I think.

Great, thanks!

3. Deciding on the combat system's design

Making a classic combat system sounds great. I think it would be good to base it on a proven reference, be it classic Final Fantasy or Suikoden or the likes.

...What I'd avoid is having too many systems and unique mechanics to avoid making the combat system too difficult to learn from.

Agreed as well. I'll try to do a first pass at the system soon and update the OP.