miskatonicstudio / goat

Godot Open Adventure Template (GOAT) is a tool for making 3D adventure games.
MIT License
371 stars 32 forks source link

Make GOAT an addon...? #255

Open paulicka opened 3 years ago

paulicka commented 3 years ago

The suggested way of starting with this project and then ripping everything out seems...a little brutal.

I think working on GOAT as an addon, with the demo being it's own project, might work better. Any areas of concern if I worked on this?

miskatonicstudio commented 3 years ago

Hi! This is a nice idea :) GOAT as it is now is a bit "brutal", as you described ;)

However, there are other possible ways of solving this. One is creating a custom user interface as part of GOAT to turn it into a complete tool for making adventure games. Another is turning on/off some features, depending on developers' idea for the game (see #256 ).

That being said, the final shape of GOAT is very undefined at the moment, and turning it into an addon that can be downloaded from the AssetLib would be fantastic! That way GOAT can reach more developers ;) If you would like to work on this, I would love to see your ideas in action!

miskatonicstudio commented 2 years ago

Today GOAT was submitted to Godot Asset Library ;) It is not accepted yet, but once it happens, do you think it would solve this issue? Is this what you meant by making GOAT an addon?

paulicka commented 2 years ago

I haven’t reviewed GOAT in a while. Congratulations on the submission... And having GOAT as an asset should definitely help get more feedback on how users are interacting with GOAT.

However, it doesn’t address the request (and you are welcome to close this issue, as I recognize that it is a rather daunting task. )

What I remember from the time I wrote this was that the setup was to copy the code into your project, and there were a lot of components that were pretty tightly coupled, and I had a hard time finding a working subset.

In effect, I was copying your whole demo into my project, then trying to rip out code and reconnect my own pieces into it.

The idea behind making GOAT an add on (or plugin) was to make GOAT something purely additive and modular, that you could gradually introduce into your own project by following common GOAT conventions and using GOAT classes and instance.

Of course, you may have already addressed this in code, but I just reviewed the documentation and it seems the “copy whole project” methodology is still in place.

I noticed you use the Random Audio Stream Player plugin. As a thought experiment, imagine if that plugin worked like GOAT, and that you also wanted to use other plugins, all of which requested you to copy the whole demo project and then modify. I for one would be quite intimidated by all of that, and just wouldn’t use any of the plugins.

(In computer science, this discussion is often referred to as modular vs monolithic code bases.)

This request was kind of addressing multiple issues, I now realize. Your approach is “I have this working demo, copy it and hack on it as you like.” My preferred approach is “I have nothing, and here is how you add pieces until you have something.”

Thanks for all your hard work, and your honest reaching out to me to help me use your tool, and address your user’s concerns. I felt the love and effort you poured into this project, and I hope many people have a chance to use your tool within their own projects.

Hanumanji Yogi 310-254-5860

On Nov 7, 2021, at 6:13 AM, Miskatonic Studio @.***> wrote:

Today GOAT was submitted to Godot Asset Library ;) It is not accepted yet, but once it happens, do you think it would solve this issue? Is this what you meant by making GOAT an addon?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

miskatonicstudio commented 2 years ago

Thanks for a thorough explanation of your idea!

I understand the concerns about this "here is a demo, hack it to get what you want" approach. However, I think GOAT works a bit differently. While there is a demo ("2 minute adventure"), it is only meant to be a working example of the framework. My idea was to provide an example of what people can do with the tool right away, in the main repo. To remove the demo and start working on your own project, you just need to remove the demo directory and demo global files in project settings (actually, just the global files will do). Unfortunately, those steps might not be intuitive at the moment, and eventually I'd like to make this process simpler.

To work on your own project, you can use different GOAT elements right away. However, they are kinda coupled together, e.g. you need a Player class with an inventory overlay to be able to pick up items. There are several main GOAT scenes that are meant to be reused in games (like Player, InteractiveItem, InteractiveScreen etc.) and the demo shows them all working together. I believe a proper solution here would be to prepare a good documentation or some video tutorials, explaining the role of different components and showing how to put them together. At the moment, the demo is that kind of documentation (readthedocs is a bit outdated).

So, the process of improving GOAT could include:

Does that sound right? ;)

I'd love to see GOAT grow into an intuitive tool, one that can handle big adventure games as well (not only "2 minute" ones :) ). Until that happens, I don't mind keeping this task open, to remind me of the direction I should take with the development :)

dploeger commented 2 years ago

Thanks for making me aware of this issue on Twitter, @miskatonicstudio and let me add my two cents here:

The way I see it, currently the project is a demo game, which can be turned into one's own game by modifying quite a bit of it.

I'd highly recommend migrating to an "addon(s) + project template + documentation" approach the way we did with EgoVenture and the Escoria rewrite. (Obviously dropping them here 😆 )

This means:

I know, that's not an easy task and requires planning, but I think, that it really would drive GOAT forward and I'd love to see it as the third type of narrative framework for Godot aside Escoria and Egoventure. 😍

I'd gladly support you in the process, if you like.

miskatonicstudio commented 7 months ago

Hi!

It's been a while since I've updated GOAT, but I hope to do it more often now :) I've found this old task and I realized that GOAT is already a plugin, I just forgot to update you about the fact :sweat_smile: New architecture assumes that a game is entirely stored in its directory, and GOAT (installed as a plugin, not a whole project) takes care of loading all the resources. The "2 minute adventure" demo has been updated accordingly.

I also forgot how many good ideas were mentioned in this discussion, so I'd like to keep the task open, until I decide what to do with them :stuck_out_tongue: Most likely, they will be converted into separate GitHub issues, so the work can start :smile:

Also, the documentation is still not updated, mostly because of intensive changes that were applied to GOAT quite recently. Now the situation is a bit more stable, so I hope to update the docs as well.