Team Hello, world!

Rostyslav Zatserkovnyi

Member
Contributor
Architecture
GUI
Hunter
  • Name: Rostyslav Zatserkovnyi.
  • Social: GitHub: rzats; email: click me to mailto!
  • From: L'viv, Ukraine.
  • Skills / Tools: Java (using IntelliJ/Eclipse), C++, C# (an internship's worth of experience), HTML/CSS/JS/webdev stuff. I'm also familiar with Git/Github and some of their - sillier - alternatives.
  • Found via: Google Summer Of Code project listing.
  • Interests: GUI design/development, creating APIs and designing back-end architectures. I'd also like to broaden my horizons and work on some low-level 2D/3D algorithm magic.
  • Extra: I made the tiniest contribution that got accepted pretty much right away! Looking forward to contributing some more substantial additions in the days to come as I familiarize myself with the codebase.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Good to see you on the forum! Contributor badge for you :)
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Good catch, seems like they'd go well together :)

It has been on a lower priority list for some time now to extract NUI to its own library / a component in Gestalt. Maybe that would be worthwhile pursuing if not an outright natural part of making an editor where you can also see the changes applied outside the game.

That'd make @Rulasmur happy as well as he's been eager to see Gestalt applied to Destination Sol, our other game project. Although that one is based on LibGDX instead of LWJGL and may have other UI options available. Am unsure how that would work out, but maybe ultimately that could lead to some touch screen options and even an Android-compatible UI.
 

Rostyslav Zatserkovnyi

Member
Contributor
Architecture
GUI
Hunter
That sounds like a great warmup project!

I've checked out the nui code and it looks quite generalized as-is (some components have Terasology dependencies but those can be refactored into concrete implementations of abstract classes in Gestalt). Gonna look into this some more when I'm finished with TerasologyLauncher#349.
 

Rostyslav Zatserkovnyi

Member
Contributor
Architecture
GUI
Hunter
Progress update: now started working on extracting NUI to Gestalt!

A prerequisite for that, however, would be to extract (the generic parts of) org.terasology.input - it's widely used in NUI (particularly nui.events) and qualifies as a core component that can be reused between games. Also, some parts the asset system need to be moved to a separate Gestalt library (and tested along with Destination Sol).
 
Last edited:

Immortius

Lead Software Architect
Contributor
Architecture
GUI
Spoke with Rostyslav in IRC. I suggested extracting nui to a tera library with anything that needs to go with it in the first instance. The issue with extracting to gestalt is the extra work involved reaching an acceptable quality level necessary for me to include it in gestalt, not only for NUI but for all of its dependencies (game assets, input, maybe math). Plus I'm tossing up whether to use tera-math or joml(-immutable) for the math library for gestalt.

I've also suggested starting by integrating gestalt-asset-core into Destination Sol, just to see if it works for android as-is.
 

Rostyslav Zatserkovnyi

Member
Contributor
Architecture
GUI
Hunter
Last edited:

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Great work! Really well organized in the doc, puts it into good perspective :)

May also be relevant to @Marcin Sciesinski if he wants to look at NUI/Destination Sol stuff at some point as well as @Rulasmur from the DS side.
 

msteiger

Active Member
Contributor
World
Architecture
Logistics
It runs on an embedded Jetty. You can launch the JettyMain class as a conventional Java application. The tests use H2 (an empty in-memory DB).
There's also a clone of the real DB on Amazon EC2 - I can give you the credentials on Slack, but you should not need it.
 

Rostyslav Zatserkovnyi

Member
Contributor
Architecture
GUI
Hunter
I've been having some issues integrating gestalt into Destination Sol. Currently I'm switching the setup from from classpath modules (metadata is declared programmatically within Java) to directory modules (metadata is located at a module.info file in the root folder). The file is detected just fine when the project's built from IDEA - problem is, it's not detected on gradlew run.

My initial assumption was that the file needed to be copied to the build/classes/main directory via build.gradle - but that doesn't appear to work either. Since the documentation for modules distinguishes PathModules and ArchiveModules, my guess is that may have something to do with the lack of detection.

Pinging @Immortius @Florian - any help would be appreciated! :geek:
 
Last edited:

msteiger

Active Member
Contributor
World
Architecture
Logistics
You can SHIFT+click to select ranges in GitHub and the selection will be reflected in the URL.

You can have a look at ModuleManagerImpl.java#L73-L75 to get an idea how it's done in Terasology (via ModuleScanner), if you haven't.
The target output folder should be build/classes (without the "main" part). By default, eclipse uses a "bin" folder for that, and the eclipse task in Terasology changes that.
 

Rostyslav Zatserkovnyi

Member
Contributor
Architecture
GUI
Hunter
@msteiger: thanks for the info! (The GitHub trick in particular is quite useful)

Looks like the main engine module is actually a ClasspathModule with metadata stored in an external file (snippet) - IMO this approach is somewhat better than scanning for modules as it helps avoid additional configuration to hook up resources & assets.
 

msteiger

Active Member
Contributor
World
Architecture
Logistics
Well, yes and no. Resources that are on the classpath are naturally available for use. The key benefit of the other modules is that you can add code and resources at runtime. Similar to Terasology, you could download new ships and AI code from the internet and run it directly (from JAR archive or filesystem) in a protected sandbox environment.
 

Rostyslav Zatserkovnyi

Member
Contributor
Architecture
GUI
Hunter
This is a fair point - although it would make sense to make Destination Sol's potential modding system similar to Terasology's, i.e. core game functionality is an immutable ClasspathModule (as it doesn't need to benefit from code/resource injection - in fact, those may even be harmful in some contexts) whereas distributed modifications are ArchiveModules. The gestalt documentation appears to suggest this approach as well. What are your thoughts on this?
 

msteiger

Active Member
Contributor
World
Architecture
Logistics
Yes, I agree with that. Core functionality and critical resources should be available through the classpath and additions through PathModule (for local development) or ArchiveModule for end-users.
 
Top