Intro Let physics rule the world

Palaxin

New Member
  • Name: Palaxin
  • Social: https://github.com/Palaxin
  • From: Germany
  • Skills / Tools: hand drawings, GIMP; some basic programming techniques (Delphi, Greenfoot/Java, C++), but not much experience; research on scientific topics especially physics (5th semester B.Sc. physics at the moment)
  • Found via: some website I can't remember listing Minecraft alternatives
  • Interests: realistic game physics and material properties, introducing physical units; research on scientific themes resulting in models for plate tectonics, health, nutrition, tech trees, ...; artwork either drawed by hand or using GIMP; e-book as a documentation for scientific principles, numbers and units which have been or can be implemented (not closely related to coding); support Throughout the Ages as it seems to be an excellent approach to a survival game mode
  • Extra: my first try for some kind of game logo (probably too detailed yet - perhaps useful in a full screen intro); my e-book on its current state - it is far from completion and I still have to do a bunch of translations from German into English
Game logo.png


[edit: pdf file "Terasologia" removed]
 
Last edited:

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Okay, we might need to find a way to make a prize for "Most impressive entrance" and give it to you, hehe - complex art and an entire book on your goals and motivation? Now that's making a splash! ;)

I like the Greek/Latin flair in particular, and your art certainly is on topic :)

You cover a lot of potential topics in your PDF and while I can't read the whole thing in one sitting (in particular with it going German a ways in) here are some comments:
  • Game design is definitely a useful skill to bring to the table, even without concrete coding
    • Physics highly desirable, both at the technical level with the engine, as well as in-game physics outcomes like the effects of siege weaponry, and finally materials to have it all make sense without hard coding everything arbitrarily. We have a ton of minerals and fleshing those out with more scientific detail would be great, then building on that to provide realistic materials for crafting everything under the sun
    • Geological goes well with world gen, we have a tectonic plate simulator called PlaTec, but it is in C. While we can import the maps it would be nice to enhance it further and bridge (or port) it to Java where we can show it in action in-game. Written later: Oh, you found that already too, nice! You found lots of threads :)
    • Biological - yep, there is a start with procedural plants, the Genome module, ideas for alchemy, farming, and so on. We also have access to a sophisticated plant growth simulator (this one in Python) that again could serve as inspiration for more implementation
    • Historical - you got into the meaning of the game name, very cool. 5 years of Latin might actually come in use! We actually picked -ology on purpose drawn from anthropology, but for "monsters" (teras) in the sense of it covering the history and social development of all creatures (in particular the fantastical other intelligent creatures we can add in a fictional setting). I hope to see us expand on this with dynamically evolving societies, and there are a lot of scientific papers out there on related algorithms which you might find interesting to turn into more exact implementation plans
  • Throughout the Ages is indeed a good start, @Marcin Sciesinski worked on it till he ran low on focus on what to do next - so he outright seeks a game designer to help continue with it
  • TTA and everything else in Terasology is a work of many, behind the scenes we try to increase reusability as much as possibly by working on tiny purpose-specific modules. So as TTA matured and @Josharias started working on a "gentler" variant with JoshariasSurvival more and more overlap snuck in, so several modules power both series now. Often a single lead dev pushes forward with each gameplay template (like Marcin with TTA), other times like with Light & Shadow it is more of a community effort
  • Documentation itself ... yeah we lack that. As you might notice I like writing long posts and plans, but they tend to be rambling and out of place. If you like writing solid docs you've come to the right place ;)
  • Teaching tool - yep! Plenty of us have desires to see Terasology used in an educational or alternative fashions, beyond just a game. We're about to submit for GSOC 2015 and hope we get a student or two to mentor. We've had very interesting suggestions in the past to do wildly different things with the engine one day (coolest might be the acoustic renderer)
  • You haven't missed much by not flying on a plane yet, it sucks these days, first try to find a time-machine so you can experience it back when it was cool :D
So in short - design team potential, good :)

Any thoughts on what you'd like to tackle first? I would ask that you keep a close eye out for design applicable for immediate implementation (details at a very low level, bordering on pseudo-code). There's a bad tendency for very deep high level design to be left collecting dust not being directly useful right away. There's actually an 80ish page design doc floating around in one of the ancient forums like that :(

The suggestion threads are a good place to start (or overhaul / add to) some more direct design where somebody can then pick it up for implementation. Another thought would be to get into our data formats (JSON, prefabs, and custom data assets) so you can write data pieces (properties of materials and such) directly into a format usable by code. Example: the name lists in NameGenerator (we have a few "cultures" but could always add more)

Welcome!
 

Palaxin

New Member
Thank you @Cervator for your positive and detailed response! Actually good communication is a nice feature of a project leader so I appreciate your long posts. I will try to give you adequate explanations :) And excuse me for spelling or grammar mistakes (probably I mix up BE and AE), writing in English still takes significantly more effort than German.
Couldn't believe you would read that much of my document (at least on the first day) O.O

I'm especially glad that you like the Greek/Latin flair, I'm still not sure about how many (or few) can share this enthusiasm with me. Actually your linguistic explanations you added somewhere on the blog / splash site inspired me.

As you have guessed I read various threads on this forum since some months ago and picked up various ideas e.g. plate tectonics (I even found the thesis of Laurimann but didn't have a closer look on it yet) or the discussion about calculating stability (against gravitional force) of block constructions though most ideas came up in my own mind.
So it's actually work over some period of time and I more and more realize that is quite impossible to focus on all topics at the same time. Additionally, at many times university keeps me more busy than I am comfortable with so probably my work will continue gradually.

I think I might start like that (sorted by the amount of time these projects need):
  • Immediately: New Thread for my ideas with physical units ;) Some ideas may be more suitable for modules, others for the engine I think. I can't really contribute to the latter directly at the moment as my coding skills are quite low. However, if you have questions about physics I can help you.
  • few weeks to few months: Continue and finish my history chapter, create tech trees and then contact @Marcin Sciesinski and @Josharias
  • Definitely months to year(s): Read thesis of @Laurimann , have a look at PlaTec (my current C++ lecture hopefully is useful for the C code) and try to port it to Java. I actually have no idea how much work this is (rewrite the whole code or just alter some signs...) With my university account I have also access to some (normally) proprietary e-books among which I could find the 400 pages "Quantitative Plate Tectonics" containing tons of maths. Physicists also use for some of their simulations "box models" (at least for atmospheric processes) which in theory could be implemented quite similar in a voxel world I guess. Sadly these calculations are insanely complex (super computers) so real time simulations on that level (especially non-linear systems like the atmosphere/weather) are nothing for a normal pc. Therefore real improvements need many simplifications which will be tough work still. See:
Finally, i haven't thought at all how shifting away from 2D array to 3D array will affect the simulation overall. Memory increase is evident, probably something like 8x. To save memory is to sacrifice performance and simplicity... And it's been almost year since i made the simulation and i was in a hurry then so adding anything complicated will be... Very complicated. :s Probably not worth it.
Edit: JNI API now supports getting the age map of the lithosphere.
  • Low priority: Biology, psychology etc. are my weakest areas I guess :confused: because they are not that closely related to physics --> you probably know Sciences. No comments on purity, value etc. of sciences at this point ;) So this won't be my next project...
    Because I am interested in mountaineering, I just had this idea about effects of thin air on physical and mental capabilities reducing them in high elevations. E.g. if we assume Terasology : Real World scaling of 1:1o you would get troubles at something about 400 blocks (4,000 m) if you are not used to thin air...
I just informed me on GSOC and thought this is quite a nice thing. Are you looking for someone more experienced in Computer Sciences? Apparently every student can principally participate and if I would feel competent enough (not at this moment) I would give it a try (perhaps PlaTec would be a suitable project for that purpose?)
Added: The Acoustic renderer of course is an excellent idea!! I have already read that post some days ago :D

All in all I need to learn more about the tools, programming language etc. before I can do real implementations. But if I have enough time I would be glad to directly contribute code some time. Another interesting thing is Blender... Or Inkscape vector graphics... OK enough for now (that's acutally my main weakness - I have so many ideas that I just switch to new projects before I am even close to some finishing) :confused: Perhaps you can motivate me a bit :D

Greetings!
 
Last edited:

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
Heyo @Palaxin - welcome to the forum!

Having you and @Cervator meeting here outright requires a tl;dr for each post :D I'm in the great position to be able to read the whole design document, although 50ish pages are still a lot and easy to digest in one go. I'll start with the obvious: awesome artwork! Do you plan to colorize it (or - maybe I'll give it a try if I feel doing some relaxing artwork ;))? The Greek letters fit perfectly with style and the game - with potential for a unique ancient alphabet, e.g., some rune set, hieroglyphs, etc.

Complex computations regarding world generation or calculation stochastic maps for weather conditions could be done during world creation. At that point we don't have to care too much about the consumed time (actually, a few minutes on an arbitrary machine are fine, it probably should not take days :barefoot:). If the simulation running can somehow be visualized (like plate tectonics moving and shifting) it's even interesting for a user to watch the world being generated. Doing these calculations are - like you said - complicated at least. Most of the time you have think the other way around: How can I cheat and simulate a specific process just good enough for the game's purpose :p

Having you in for GSOC is definitely appreciated - in the end it's all about learning and improving your skills. If you decide to work on the plate tectonics simulation you can gain insights in both, programming and the geological process. Probably both are advantageous for your studies, at least solid programming skills cannot be overrated ;) And keep in mind that you can simply ask a bunch of developers here for advice - especially technical questions!

I'm looking forward to your further contributions, no matter if art, concept/design, or actual assets/code. :thumbsup:

Edit: Finally somebody who might appreciate LaTeX support for the forums :rolleyes:
 
Last edited:

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Oh! LaTeX! That's right, that was a thing. In fact, we even prepared for it! :)

The BbCodes addon is even installed, although I think we might also need the Advanced BbCodes Pack for something like this to work:

[latex]\Large f(x)=\int_{-\infty}^x e^{-t^2}dt[/latex]

As I write this it doesn't, so yeah :(

Probably we need to just enable something somewhere. There's a bunch of related options for that addon. It also seems to prefer a different editor we don't have hooked up. I forgot how it all went back when @Adeon worked on the forum upgrade. There were some editor specific notes involved :)

Anyway! Yeah, prepare the TL;DR cannons :)

@Palaxin: Whether or not you plan to dive right into coding I recommend getting a local setup working from source. You've got a fork already, did you try to set up and get running that way entirely? Even if it seems goofy being able to do even tiny things in source and contributing it back upstream can be a huge motivator. And it gets you in the credits :D

Having a source workspace will help investigating some interesting modules too, I highly recommend checking out the NameGenerator, particularly for its data storage. Working in some design for sciency units is fine, but we need to be able to attach it to something codey or it'll get lost and forgotten :)

Maybe we can look at adding more science to all the Minerals blocks. Even if they aren't immediately being used it would mean somebody could hook into something realistic, like seeing how minerals with different mass would throw differently. Or float. I really want to be able to throw blocks in water and have some sink and other float, based on their real density values :geek:
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Oh, another thing - @Palaxin you might want to look at something like Behavior Driven Development. If your coding skills aren't quite up to speed yet to dive in and you prefer design anyway writing up "stories" might be a good middle option between complex code and distant design. We haven't started using BDD yet but in the long term I'd like to give it a shot.

Look at something like Cucumber and its language Gherkin. I'm totally not kidding, their names are just amusing :)

We'd probably use CucumberJVM for Java. If we had some actual sample stories / scenarios maybe that would spur somebody to actually try making the code to match, or even start outright implementing! That could particularly be apt for something like fleshing out the tech tree in TTA. You'd essentially be writing "living requirements" that would also be executable tests meant to prove that it works - just we wouldn't have the code to make it work yet. But at that point it is vastly easier to write the code than when you're just freestyling.

Depends on the person though, but that's one more thing you could do almost right away!
 

Palaxin

New Member
Here is some even facier version... Took me about 7 hours for drawing and editing :p Scaling is full HD / 1920 pixels width. I'm still not totally happy with it. I mixed the wide-angle view of the three figures in the foreground with some plain perspective in the background. The crown thing also isn't adjusted very well but I realized too late. Additionally I'm not sure if the monster looks better without horns...
Perhaps I will colorize it later because it takes a lot of time - at least with GIMP and a 13'' screen. @Skaldarnar you are invited to do the same. I think it's even interesting to have different versions...
Actually this picture urges me to give further explanations or write a short story about the characters. The old man on the left could be a wizard/hermit and the woman on the right some kind of medusa/valkyrie (because of the feathered crown)... Perhaps more will follow :D

Title.png
 
Last edited:

Palaxin

New Member
Hey @Skaldarnar,

nice to meet someone from the same country AND with the same occupation!
I'm sorry that you have to bother with an additional storyteller now :D Probably not all my posts will be of that length...

The runes/hieroglyphs thing is a good idea. The easiest way for me making a font would be: draw by hand --> scan --> edit pixel graphics --> convert them into vector graphics --> pack them into a font file. I haven't done that before but there shouldn't be much problems. In contrast it is quite difficult to do the actual design of the glyphs. Would you suggest to make 26 glyphs for the 26 characters of the alphabet or more? Or should we create some own freestyle language with no direct link to our languages? The other question is pixel art (imprint them on blocks) vs. vector graphics / font?

You are right, world generation allows lots of possibilities for complex calculations. I think PlaTec is my long term project and I will see if can use some advanced physics there.

Yeah, I'm actually here for learning. It just boosts motivation to have a specific project where you can grow. These short "exercise" programs we do at university aren't that interesting. But of course one has to start somewhere. I probably want to do my master's degree in environmental physics (icecore drilling is my favourite at the moment) so also the knowledge of geological processes may be helpful some time. Coding of course is useful for almost every natural scientist.

LaTex and formulae would be really nice! I'm just starting to use it but it's nearly unlimited in its complexity...

@Cervator

I haven't done anything with code yet, but you are actually right, it's easiest to solve some small/simple problems first. Thx for the suggestions, I will tinker with them in the next time. Sadly, I do not have time for a week now but after that I hopefully can earn a contributor badge :D

You really catched my idea with the blocks physics. I admit we do not really need all these properties now but I think they allow easy implementation of a wide variety of block interactions.
 
Last edited:

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
On runes - I've always wanted to just come up with more of an element-based system. Rather than direct translations from letter-to-letter simply make runes or other glyphs for common/interesting terms. Fire, Earth, Air, Water, that sort of thing. It couldn't describe things super accurately but you could easily imagine rough descriptions. A steam engine that moves? "Fire" + "Water" + "Machine" + "Motion" :)

With sufficiently well designed runes that also somewhat takes away the element of translation. Four runes for 'f', 'i', 'r', 'e', tells those well-versed in English what that likely means, but it probably doesn't help somebody from India or Japan much.

Edit: Oh, as for the drawing, the second one is very nicely detailed, but I'm somewhat more drawn to the first one due to its blocky focus, especially all the secondary/background elements. And there is something amusing about the lady block looking like our poor little pony Gooey, hehe :D
 

Palaxin

New Member
I like that idea @Cervator. I will make some 16x16 px example files first (imprint one rune per block). If you still want higher resulted files or a font I would also give it a try ;)
I wondered myself if the second drawing would be not blocky enough. Just wanted to show some alternative. As a subheading for a third version (improved first version) I could prbably use the one of the Moving Blocks! blog (voxels breaking their regular grid)... And of course it will have some color :D
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Yeah multiple options and takes on a concept are great, especially stuff that is logo-worthy :)

For runes I might suggest starting at higher res than 16x16. I don't know for sure but it sounds to me like those could easily put the higher resolution to use (possibly even to fit multiple runes per block when needed for signs and such). Besides they'll be relatively rare so we aren't losing much by giving them more resolution :geek:
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
Hey @Palaxin, are you still around?

I'd like to ask you for some thoughts on liquid simulation and how it can probably be simplified. Most approaches in voxel games use cellular automata for simulation, and some mention simplifications such as calculating fluids in layers (using only 2d representations). I'd appreciate if you would write down some thoughts and ideas, especially some of the physics involved ;)
  • how fast would/should water distribute in the world (searching for a compromise)
  • what happens if I "drop" a m³ of water
  • ...
Feel free to revive the old thread on Liquid Simulation for this purpose, I hope to get some more work into the next days ;)
 

manu3d

Active Member
Contributor
Architecture
Shouldn't we perhaps aim to have a mc-like behaviour, as unrealistic as it is, which can then be overridden by mods with more powerful simulations?
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Long-term we might aim for a fundamentally different approach where liquids aren't even regular blocks. I'm not sure how directly compatible with a vanilla-MC behavior that might be :)

In any case I'd say we work on systems and see what comes out of it. We can figure out defaults vs. fancier later.
 

chessandgo

Member
Contributor
Hunter
Shouldn't we perhaps aim to have a mc-like behaviour, as unrealistic as it is, which can then be overridden by mods with more powerful simulations?

It's much easier to turn a sphere into rubble then to turn rubble into a sphere. We should have advanced physics, then, much simpler stuff will come much easier.
 

manu3d

Active Member
Contributor
Architecture
Perhaps I didn't explain myself well enough @chessandgo. Terasology has a core of functionality which can then be expanded upon by modules. The idea was to have MC-like behavior in the core, as that is a "minimum expected standard", and let modules have the freedom to come up with fancier functionality.

@Cervator, perhaps I'm wrong but over the months I've been part of Terasology's team I perceived liquids in a slightly unfocused, "don't really know which way to go" state. That's why I was suggesting on focusing on something known, i.e. mc-like functionality. I assumed this would perhaps also show the way on how to make liquids as a whole moddable, so that more advanced simulations could be swapped in. But if you think that would move too far away from the longer-term goals I understand. In any case it was just a suggestion. It's not something I'd get into any time soon.
 
Last edited:

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
First attempt would probably be to approach the currently active issues on GitHub, like this one. I think we would need to put some thought into flowing water like Minecraft has, determine the flow gradient, and add the missing block shapes. If the cellular automata approach works out fine it should easily be possible to simulate Minecraft's style.

In general, we just need someone who wants to work on it ;)
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
@manu3d you are correct :)

Basic is fine. I don't know if we'll get the effort to swap to a non-block liquid system before or after we have a working system again. I wanted to mention it though :geek:
 

Palaxin

New Member
Sorry for my long absence, I'm considering to change my field of study after my B.Sc. and to apply for Transportation/Car Design. So probably my future focus will be more on drawing and artwork because I have to practise for the application process where I also have to submit artworks...
Nevertheless I will look at the fluids and think about it... There are still some exams left so don't expect me to be very fast :S

Just some spontaneos thoughts: advanced fluid modelling would need calculations of pressure (gradients) and fluid velocity... I just doubt that is useful to describe huge water masses as oceans (because theoretically removing/adding one fluid block would make all the water mass rearrange in some way - here it is probably useful to assume oceans/level 0 water to be infinite so individual blocks won't affect the whole mass).
For me MC fluids are awful, but could used in the core like @manu3d supposed. Some time ago I looked at fluid behavior in Dwarf Fortress which seemes to be a promising compromise if you think fluids as blocks (or layers which each block has 8 ones in DF if I remember right)... I would also divide each block into relatively many layers (at least 8 or better 16) so you can create very thin water accumulations e.g. puddles after a rain. This would also allow to create very smooth slopes between different water tables.
In my opinion dropping a "block" of water should result (after a short process of floating) in a totally flat water mass with the thickness of one layer. Important to note is that the total volume should remain the same. After some more time the water should trickle away (depending on the ground material) or evaporate (depending on temperature, wind and sun).

@Skaldarnar I will read the old thread and post further ideas within a week ;)
 
Last edited:

Palaxin

New Member
Ok @Skaldarnar @Cervator, so first of all thanks for being welcomed after that long time and for the informations :) Here's a little update:

Currently I am writing my Bachelor's thesis in physics which includes the evaluation of a large number of scattered sky light spectra. We do this automatically by using scripts written in Microsoft's JScript which also has access to the .NET framework. So it was the chance to do a little programming. Probably that is the most fun part, so I'm quite sure that I don't want to continue with studying physics but with more coding related stuff :)

Additionally I started to make some simple patches and a small mod for the open source RTS 0 A.D. This project made modding very easy, a lot of things can be changed by editing simple .xml or .json files, changing game logic usually involves JavaScript (powered by Mozilla's SpiderMonkey and therefore quite fast) and and the engine is written in C++.

For my mod I was also editing some random map scripts which aroused my interest for world generation and I remembered PlaTec and Terasology, so here I am again. Following the links of @Skaldarnar (thanks!) in the GSoC thread I discovered the PlaTec implementations and improvements, so actually it seems there is no need for you to code something similar from scratch for Terasology. However, this was what I had in mind... Basically making a heightmap generator which also could feed its data directly to the Terasology map generator.

Meanwhile I got an understanding of Perlin and Simplex noise algorithms and discovered an heavily optimized implementation in C#. Which is probably also interesting for our map generator which uses Perlin (or some modified version), too. I scripted a simple 1D noise generator based on sine function summation with different frequencies to study some simple principles. The interesting thing is I added a filter which shapes ocean basins and makes low altitudes more flat. This would be ideal as some input for PlaTec as you already have some kind of predefined continental and oceanic plates which can be moved afterwards.

There are are some examples in the spoilers below. For the script and the plots I actually could use the spectrum evaluating program I also use for the thesis. Further steps are making 2D noise and using Perlin because it's faster.

Now coming back to GSoC I propose to write a Java implementation of this algorithm, connecting it with PlaTec (also rewritten for Java) and fitting into the Terasology engine... I'm pretty confident with the height map generation alone but I would need your help with the integration into Terasology, this is where I would have to put some effort into :) I can understand well, if you think this is not a good approach or that I should work on existing tickets first (which currently is hard for me since I don't really know the architecture and code) but making PlaTec from scratch is what thrills me the most!

noise1.png
noise2.png
noise3.png
noise4.png
noise5.png
noise6.png
details4.png
details5.png
details6.png
 

Attachments

Last edited:
Top