ConfettiFX / The-Forge

The Forge Cross-Platform Rendering Framework PC Windows, Steamdeck (native), Ray Tracing, macOS / iOS, Android, XBOX, PS4, PS5, Switch, Quest 2
Apache License 2.0
4.8k stars 501 forks source link

Basic Documentation #153

Closed pewsplosions closed 8 months ago

pewsplosions commented 4 years ago

The Forge sounds pretty great but there does not seem to be much in the way of documentation.

I don't even see simple "How to compile" or build instructions. Which seems like a good place to start.

The description talks about it being like "Legos" where you can use the different parts of the system as needed. So does that mean it can be built in sections and integrated into other projects piece by piece? If so how? It would be nice if there was something, maybe on the wiki, that showed exactly how you can build just the renderer, for example, or the renderer and lua scripting, etc.. into a library/libraries to include in other projects.

I know I could probably dig through the PyBuild file and look at all the source and try to figure it out myself. But I think it'd be a pretty big step in getting people to try this project out if they could actually 'get started' without having to put in a lot of work.

AntoineConffx commented 4 years ago

Hello @Pewsplosions As it stands The-Forge doesn't have much documentation other than what's in the wiki already but nothing related to building or compiling as you say. We are more than happy answering any questions you might have on our public Discord channel.

We distribute solution and project files for all our platforms as we do not use any type of build system or project generation tool. The 01_Transformations examples serves as the minimal hello world to get something basic on the screen and should be used to understand how The-Forge works. We also strive to make our interfaces self explanatory and hopefully should guide a new developer to understand what's possible.

The-Forge is made of multiple parts but the main two libraries will be the OS and the renderer which are independant of the other, thus legos as any OS library can be swapped in and used by the application. If you have a chance to look at our unit-tests solution and projects, you will see the different libraries that are part of our lego set. As it stands the OS Library will contain more than you might require and it would be up to you to determine what's needed and what's just extra.

As it stands PyBuild is only used for Continuous integration and is not meant to be used as the main build tool. It actually just triggers msbuild on the projects themselves. If you'd really like to build from the command line you should be able to take a look at our github CI logs and see how PyBuild gets used.

pewsplosions commented 4 years ago

Thanks for all the information. I've been surfing around the code a bit. I like what I've seen. I plan to look further at it tonight so I'll take your suggestions as jumping off points. :)

I was mostly suggesting that some 'Getting Started' -esque documentation would probably be very helpful for people that stumble across the project. As-is, a new person will see the extremely long readme, the sparse wiki, and probably give up before checking further.

Based on what you said, you could have a Getting Started heading in the wiki with subheadings of Visual Studio, XCode, and Ubuntu. Then on each of these pages just have a quick step-by-step of how to import the project on these platforms, open 01_Transformations and build the example.

Then back on the main readme have a link up at the top to the Getting Started page.

Just a suggestion. Doesn't have to be prioritized or anything. As it is right now it can definitely be intimidating to anyone that comes across it, even experienced developers. But from what I've seen so far you've got something pretty nice going here so it'd be cool to get more and more people involved.

wolfgangfengel commented 4 years ago

Hey @Pewsplosions, do you want to add to our Wiki what you would consider a good starting point? I can give you access to the Wiki and you can change it.

pewsplosions commented 4 years ago

@wolfgangfengel I don't think I'd be a good person to do that. I've not spent a lot of time with the project and what I have, I still can't even figure out to set it up or run anything. I'm not familiar with codelite to import the project and I haven't tried any of the others. Mostly, the little bit I've done, was just looking through how some of the rendering system is set up and the project structure itself. I've been looking around at how projects handle swapping backend systems when needed and such... nothing crazy in mind, just personal interest.

This is why I made the issue. I'm unfamiliar with the project. It looks nice. But I have no clue what to do and haven't had the time to figure it out. Whereas if there was a getting started section in the wiki, I may not ultimately get much further than that, but I'd at least get an actual feel for how working with the project would go.

I would assume I am not alone in this. I'm not sure how much traffic this repo gets, but I'm sure there have been many like me that would potentially go further with it but aren't able to put the initial time in to decide that.

Of course if I ever do get further with it, I would definitely be willing to write out some steps for others to follow. I'm just not in position to do that right now.

trsh commented 4 years ago

+1, some getting started docs and API docs is strength of every library

wybifu commented 4 years ago

Hey @Pewsplosions, do you want to add to our Wiki what you would consider a good starting point? I can give you access to the Wiki and you can change it.

@wolfgangfengel I am willing to write a baby step for Windows and Linux. It was easy to figure out to run the 01_transformation on linux (fedora in my case) but I still struggle with windows but I could do it if you guys are still interested.

wolfgangfengel commented 2 years ago

Can you send me a pm and I set you up with the access code.

datgame commented 2 years ago

Here's some more build instructions: Install a VulkanSDK. Make sure you have the Win10SDK installed, it shouldve come with msvs, but who knows what you clicked in that installer. When opening the solution in vs2019+, right click it and choose retarget solution to newer SDK. This won't work on a few 3rd party libs, so you need to right click those. Like the gainput, ozz. For Basisu, you need to add

include

include

to basisu_enc.h so it finds tolower().