Hi,
i’m new here, so let me present myself. I’m a 32 years old developer, with 15+ years of experience in various languages (Mostly C++), but with close to no experience in the gaming branch. That’s it
So i’m trying Urho3D on a Mac OSX based operating system, and i’ve got a few questions / remarks.
1) Generating a reusable framework
When building from source, i’m unable to get something clean / functionnal as a re-usable framework. i tried many different CMake configurations, to finally just remove everything because none of them was usable:
a) When generating XCode project, it’s close to impossible to get a “Release” build of the framework, because the 93 targets are by default using the “Debug” configuration, even when archiving (By default, it should be the “Release” configuration that is used in all target for the “Archive” action). How do you guys generate a “Release” build of the framework that you can then link against from a fresh and from scratch project, itself not necessarily using cmake?
b) When building via the Unix Makefiles, the generated things are spread all around the source tree… Which is confusing, because some binaries replace previously generated ones.
c) In any case, if i start a new project from scratch (Empty XCode project, compiling a single “main.cpp” file), it’s impossible to link against the framework. i have set the headers search path to my built SDK include directory, but the files inside are trying to include more files without using the correct file paths (Eg #include “SDL_Joystick.h” instead of #include “SDL/SDL_Joystick.h”).
This is IMO a design mistake. So one thing leading to another, i have set the include paths to be recursive, but there, it won’t compile, because some classes are missing (Basically, it would probably compile from the source tree because the #include order are correct, but not from my “fresh” project). This denotes a “#include” hell that probably needs to be worked on a bit.
From my code, i get errors also, because some headers from the framework are probably doing some forward-class declaration for some public members pointers. This leads to me being unable to compile the project without having to include the headers file that should have be included in the first place by the framework headers themselve. Eg take the HelloWorld sample along with the Sample parent class, put the files in a fresh project, try to compile.
2) Compiling for iOS
Here, it’s a nightmare to me, there must be something i don’t understand. Again, i have tried every single possibility of combination for CMake variables, with no joy (The XCode projects that are generated by CMake all ask to build a “Debug” version where it should be “Release”). Any pointers please? i really would love to have a clean XCode project that just builds Urho3D along with it’s dependencies, that i can drag&n&drop to my project, and be able to have an iOS target along with a MacX target within the same project (Gameplay3D does that quite nicely).
3) Contributing
Having a very strong background in C / C++ development and project management, i would like to know how to contribute to the project. I believe i would be able to solve this #include hell, and provide with a slicker API for people to link / build against. Any project maintainer around to tell me where to start?
[edit]I have authored many Qt-based projects, all portable, so i’m very familiar with the linking differences when working with VS+nmake vs Unix etc, i have a very good understanding about how to provide a very opaque API with clean headers set for either a static or a dynamic library, etc.[/edit]
Just before trying Urho3D, i tried GamePlay3D, which is not an option for the projects i plan to work on for various reasons that i won’t go into detail here. However, the build system used by GamePlay3D is very concise, i was able to build a project from scratch and play with many of their subsystem in less than 5mn, while i’m still struggling to fix some small issues (Which really are not related to the code itself, but more to how it’s being lay around in the directory structure) in Urho3D. I really think that’s a pity for a framework that appears to be so rich, because it can easily scare newcomers. Do you guys have any remark / suggestions for me regarding this matter?
Thanks a lot,
Doodloo.