New repos up!

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
I've created a secondary Terasology repo to hold misc stuff like high quality music and models plus anything else we don't know what to do with yet.

The idea is that the current repo is getting quite beefy as is, especially with the high quality music. So it is taking a while to pull the repo (I constantly spin up new directories thinking they're getting too messy from all the integration and branch hopping) and a solid chunk of time to load the applet.

A while back we were considering whether we could offer a low quality version of music in the basic game, then an easy option to download and prep high-quality music. I wonder if that could be as easy as committing the fancy music to the Misc repo, downsampling (or whatever term you audio wizards use) the music in the existing repo, then putting a button in the game that uses some file retrieval command to go grab the audio files online from the misc repo?

If we did that right there we'd more or less have a poor man's plugin repository, I'm thinking. And the source + applet would download faster, on the "official site" or what not we could offer both a basic small game installer and a fancy everything included beefy installer

Thoughts? Also, first commit, woo!

https://github.com/MovingBlocks/TeraMisc
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
So since begla and Kai are being slackers on the doc side I'm going to double up the purpose of this thread to also throw out a note about the SECOND new repo at https://github.com/MovingBlocks/TeraMath :D

Kai is going to be cooking up some fancy "3D math warlock" stuff in there, as I understand the technical term to be (I checked!)

It might have some use as a library, I believe. So that's very cool. As for more actual details - I'm clueless, I'm not a 3D math warlock :D

(Edit: Kai made me rename the repo. Kai makes me do work all the time *cry*)
 

Kai Kratz

Witch Doctor
Contributor
Architecture
Logistics
Cervator said:
So since begla and Kai are being slackers on the doc side I'm going to double up the purpose of this thread to also throw out a note about the SECOND new repo at https://github.com/MovingBlocks/TeraMath :D

Kai is going to be cooking up some fancy "3D math warlock" stuff in there, as I understand the technical term to be (I checked!)

It might have some use as a library, I believe. So that's very cool. As for more actual details - I'm clueless, I'm not a 3D math warlock :D

(Edit: Kai made me rename the repo. Kai makes me do work all the time *cry*)
Ah YES making other people work just my type of work :D

For those interested: Currently we are lacking a 3D math lib that supports all the features we need. We could not find any Java lib which satisfied our needs. The current plan is to model TeraMath after Ogre and DirectXMath in terms of functionality.
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
Awesome.

Yeah, the libraries we have are at the moment are somewhat lacking. Vecmath provides little over the raw datastructures, and doesn't even initialise a Quaternion to the identity value. Its syntax is also somewhat awkward. Half the quaternion functionality we use is actually from a utility class in jBullet too.

I don't know if Begla has already done some research into this area, but some thinking around the interaction of large/infinite world coordinates and the unit of least precision when doing maths towards the edge of the world probably needs to be done. The fundamental weakness we have to work with is jBullet works only in floats, so just using double vectors is not necessarily sufficient. Also there is network replication to consider. I had a though about having a sectors and rebasing all calculations relative to a sector, don't know how awkward that would be to work with - each sector would be about half the maximum size of the workable float space, so hopefult could represented as a tuple of shorts or bytes. But this is getting off topic I guess.
 

Kai Kratz

Witch Doctor
Contributor
Architecture
Logistics
Currently i was working on the assumption we need support for float, double and int for vectors and float and double for matrices / quaternions.

I'm not sure what type of syntax i should prefer:
Code:
Vector3d v1,v2,v3
...
//Variant A
v1.add(v2) //changing v1

//Variant B
add(v1,v2) //changing v1 and returning v1

//Variant C
v3 = v1.add(v2) //v1&v2 remain unchanged (really awkward syntax)

//Variant D
v3 = add(v1,v2) //v1&v2 remain unchanged
I think implementing A&D would give the most flexible results.

Feedback appreciated as always!
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
I agree with A & D. It gives both variants we need (changing an existing and creating a new), and the syntax is suggestive of which is which. I don't think C is that awkward, but is less than optimal without using value types and conflicts with A.
 

ironchefpython

Member
Contributor
Architecture
Kai Kratz said:
Code:
v1.add(v2) //changing v1
Change that to:

Code:
v1.update(v2) //changing v1
And I'd agree. Addition is usually symmetric and side-effect free. While you would expect v1.add(v2) to equal v2.add(v1), you would expect that v1.update(v2) and v2.update(v1) would have different results and could have side-effects.
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
ironchefpython said:
Kai Kratz said:
Code:
v1.add(v2) //changing v1
Change that to:

Code:
v1.update(v2) //changing v1
Unfortunately that doesn't really work when you consider the existence of subtract(), mult(), divide() or otherwise a plethora of similar methods. You can't call them all update. I supposed you could name them all updateAdd(), etc, although that is a little unwieldy.

It has been also been suggested that varient D, with vectors immutable, and still be performant. I almost like it except that means you can't do:

Code:
Vector3d v1 = new Vector3d(0,0,0);
...
v1.x = 2;
 
Top