#Is there a way to separate the logic for a 2.5D fighting game?

5 messages · Page 1 of 1 (latest)

robust shard
#

I'm thinking of making a 2.5D fighting game (2D fighting game logic in 3D representation) with Bevy.

When doing so, I would like to separate the logic part of the 2D fighting game.

The reasons for this are as follows (there may be errors in my understanding of each element):

  • To implement replay with the ability to fast forward, etc.

  • Is it possible to limit the values ​​that should be saved when implementing rollback?

Is there a method or crate to achieve this?

fierce umbra
#

That's a very broad question that will drive the central design of your entire project. Bevy is written in Rust and anything you can do in Rust you can do in Bevy. There's no simple answer here.

From what it sounds like to me, you're asking if you can implement deterministic replays and rollback netcode in Bevy. Short answer is: Yes, absolutely. But, Bevy is still in development, and as far as I know there's no crate that will do 100% of everything you need. The ecosystem around Bevy hasn't matured to the level that other well-known engines have, yet. There are third-party networking crates, but I don't know if they have any kind of rollback implemented or if you'll need to do it yourself. Perhaps you could make those crates?

From my experience with Bevy's ECS, it should make decoupling logic systems trivial, if not outright enjoyable as it has been for me. It contains a FixedUpdate system schedule that will help with recording and playing deterministic data.

Still, keep in mind Bevy is still in early development. Many features are not in their final designs and migrating to new versions will likely break old replays.

robust shard
#

Thank you for your reply.

I'm thinking of a fighting game where you can customize the moves you can use, and I think ECS is a very suitable system for that.

(Note: A game where you don't customize the moves themselves, but rather select from a set of moves)

If the system described in the question can be created for that purpose,

if you have any ideas, I'll try to implement it.

I haven't actually implemented it, but I was thinking of the following.

-Have an App (Inner App) in MainApp as Res and step within a specific system (I don't know how to synchronize values ​​from Inner App to MainApp)

-Use SubApp (There is a SubApp that goes from MainApp → SubApp, but not the other way around?)

Thank you in advance.

short horizon
#

Multiple apps are a huge pain. If you can think of an architecture that avoids them, that's what I'd recommend. Other than that, what you're asking for is totally possible. If this is your first Bevy project it might be a good idea to make a couple simple projects to grasp the paradigm and become familiar with options/workflows/ecosystem, as that'll help guide your design for something more complicated/off the happy path

robust shard