Launcher and Facades

manu3d

Active Member
Contributor
Architecture
I was wondering. Will Launcher(s), at least in some environments (i.e. PC), eventually replace/bypass the facades? Or will facades always be present and the Launcher(s) will always take advantage of them?
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
I imagine - and I haven't thought too deeply of this before - that the Launcher might eventually support launching the game with different facades active. Such as launching in 2D mode with AWT, or launching with the future "developer" facade that has extra tools enabled. Or launching a headless server that way.

But I'm torn on whether that all couldn't just simply be bundled with the game anyway and available in-game somehow. The facades are likely to remain tiny in size. Not sure how we'd go about switching from LWJGL to AWT in-game though.

I don't think we could bypass the facades using the launcher, unless we effectively put the facades into the launcher ... :)
 

manu3d

Active Member
Contributor
Architecture
Yes, I was thinking along the line of Launchers including the facades functionality for its target platform. I guess my underlying question is: is there a clear separation of responsibility between the Launchers and the Facades? Is there no/some/total overlap?

I guess the Launcher could be a one-stop-solution for updates, crash reporting and even pre-launch configuration, i.e. potentially problematic video settings. And it might stop there. But from there to creating the runtime environment to fire up the engine, at least conceptually, seems like a small step. That been said, I guess it will always be beneficial to be able to launch the engine from command-line, requiring at least one command-line-capable launcher/facade?
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
The main advantage that comes to my mind is that with the current setup (facades) it is possible to run the game by itself (without any launcher) and you can just plug any kind of launcher before the actual game.
The biggest drawback might be that launching the game is tied to the existing facades.

We had several discussions about responsibilities for updates and versioning in the past. I think we agreed that in-game organization of modules would be beneficial as the actual combinations of mods is just known at runtime. I assume the concept of game modes/types comes into play here, managing/specifing versions of contained modules. Whole game type updates could easily be handled by launchers as well.

Just to come to a conclusion here: does it make sense to allow for "facades" in both, launcher and engine? Thus, _simple_ launchers could just use the provided facades, but in more complex setups launchers are able to bypass the existing facades with a new one?
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
I'm not sure we could do a "full" integration for facades inside the Launcher, since if the code is in there - it would have to reference classes and libs for the engine without depending on the engine and its libs ?

I see the launcher as the ultimate in convenience, but staying optional - you should be able to do everything from inside the game if you really want, including modules and such (with the caveat that you might have to then restart or do other stuff that needs activities outside the game). But if at all possible - use the launcher.

As such I think we should have a couple elements that work on both sides, for instance a module tracker utility that can do lookups and pull down modules. That would be a separate lib project, used by both the launcher and engine.

Facades the concept is still up for definition though. Originally it came with the example of Android support, which is a much more "proper" - that's not something you'd bundle with the "normal" version of the game, it is a very different wrapper around the same engine.

Launcher should be able to pick facade when multiple sensible choices exist, but I don't think the launcher should itself provide facades. Not that it couldn't actually download them separately, since they do exist in other repos/jars.
 

Mike Kienenberger

Active Member
Contributor
Architecture
GUI
I'm not sure we could do a "full" integration for facades inside the Launcher, since if the code is in there - it would have to reference classes and libs for the engine without depending on the engine and its libs ?
This could be done with reflection at worse, and probably a bunch of other ways as well (interfaces or annotations found on the classpath). It's not that big a deal.
 
Top