FreezingMoon / AncientBeast

Turn Based Strategy Game. Master your beasts! 🐺
https://AncientBeast.com
GNU Affero General Public License v3.0
1.63k stars 555 forks source link

support for various gameplay renderers #1970

Open DreadKnight opened 2 years ago

DreadKnight commented 2 years ago

The game logic should be separated from the UI, so that we can support various ways to render the gameplay or even be able to integrate into other games and metaverses. This means that Phaser.js/Pixi.js won't be doing the rendering in most other cases.

Example of renderers that we'll poke at eventually:

danvg commented 2 years ago

A colleague of mine and I are working in this issue as part of a school project. We are primarily focused on the first part of the description, e.g. trying to generate data streams from a headless client. Our initial idea is to generate commands which are queued and processed by the render function. The actual implementation would be provided by clients of the game's headless client. The game could potentially have several clients plugged in, rendering the current state of the game.

Do you have other ideas regarding this issue you could share with us?

DreadKnight commented 2 years ago

A colleague of mine and I are working in this issue as part of a school project. We are primarily focused on the first part of the description, e.g. trying to generate data streams from a headless client. Our initial idea is to generate commands which are queued and processed by the render function. The actual implementation would be provided by clients of the game's headless client. The game could potentially have several clients plugged in, rendering the current state of the game.

Do you have other ideas regarding this issue you could share with us?

Nice to hear, hope something will... materialize out of this.

I've done some searching through existing open issues, seems I haven't made one to address just the support for multiple video modes, so I'll split this into 2 different issues (like you said); your work should also affect #249, possibly #1603 and an upcoming issue about having this game redone in a metaverse, basically I'll want to apply for the Sandbox game accelerator program https://www.brinc.io/metaverse - part of that Ancient Beast could be re-implemented into the Sandbox Game metaverse thingy eventually, so assets (units mostly) will have to be redone for it voxel art style using their nice editor that allows for animations as well; planning on having a digital NFT/merch shop over there as part of an arcade and also a small Disneyland type of fun park if getting into the accelerator.

DreadKnight commented 2 years ago

@danvg I've noticed that you're making progress and poking at a PR for this. I've revamped the issue as I've said, split it and added a lists of eventual renderers that we'll poke at (along with new issues/entries).

danvg commented 2 years ago

Sorry, I was trying to merge into our fork of the project but forgot to change the target branch (the default seems to be the original repo). I have deleted the PR , if not please delete it. We haven't made much progress sadly, most of our efforts have been spent translating into typescript and creating interface/base classes for those classes that are dependent on the current Phaser backend.

DreadKnight commented 2 years ago

@danvg Understood, just keep in mind that tackling too many things at once can be rather bad, for example TS support and migration has its own open issue and place in the timeline #1969 - so if you guys don't properly coordinate or take too long, your work might end up stale or too hard to merge back in (even if the progress seems very slow at times with the project overall) and it can most of it end up being in vain; just a warning, as I've seen it happen many times before over the years, don't mean to discourage or anything like that. I hope this will turn out well and get merged at some point :-) Keep up the good work!