Hi, I'm Relee the Squirrel

ReleeSquirrel

New Member
  • Name: "Arthur 'Relee the Squirrel' Payne"
  • From: Sarnia, Ontario, Canada, North America, Northern Hemisphere, Earth (Sol 3), Sol System, Milky Way, Local Group, Local Supercluster, Universe A
  • Skills / Tools: I'm a bit of a renaissance man, I can do pretty much everything at least a little bit. I wouldn't say I'm GOOD at all of those things but I've got a broad skillset. Programming is my speciality. I've been studying programming for most of my life.
I've actually finished some projects, though I haven't participated in anything the scale of Terasology before. All of this source control stuff is really intimidating; we never studied it in school.​
I've programmed in a lot of languages over the years; the ones I've been using the most in the last two years, and am thus most familiar with, are ActionScript 3, HaXe, and Java. I've never heard of Groovy before but I expect I'll pick it up quickly.​
Apart from that I can draw at an amateur level and do half-decent pixel art and textures. I can make simple music and sound effects with various tools. Enough to get by but I'll by happy to have dedicated professionals to cover my weaknesses and focus on my speciality.​

  • Found via: I was looking for a basic open source minecraft clone to extend and add features similar to what Terasology's goals are, so that was really convenient.
  • Interests: I'm interested in game development of course, but especially simulation. My biggest problem with Minecraft was how the animals just spawned in and out, instead of existing persistantly in a living ecology. I wanted to try making something like that myself, and in my spare time I started looking for an open source minecraft clone to extend. I found Terasology, which has many of the same goals as me, so I'm excited to help out. I'd like to take a look at the terrain generator and see if I can improve on it. My main focus is on ecological simulation, AI, and the related systems.
  • Extra: Apart from simulation there are a couple of other things I was hoping to try when I found a minecraft clone to experiment with.
First off, I don't really like the 'blockiness'. In Minecraft that's become a primary asthetic, but the whole idea of things jumping up and falling down block levels bugs me still.​
Currently in Minecraft they've added stairs in every orientation, which you can walk straight up without jumping. Why not make them slanted? I've seen slanted stuff in mods, like the fabric mod. Then you could have a rolling plain instead of a jarring blocky plain. But then, everything at 45 angles would be almost as jarring as everything at 90 degree angles, wouldn't it?​
Another thing I want to try is inspired by Dwarf Fortress. Instead of having solid cubes, build cubes out of layers. In DF a square can be filled by up to seven levels of water; at seven it's completely filled. So it occured to me, why not have every tile have seven layers like that? And instead of just water, you can combine solids, liquids, and gasses. So, you might have five layers of rock, a layer of sand, and a layer of water, for a beach. If you have different levels of soil, and slanted tops, you can have a nice lumpy terrain.​
That's the idea anyways. It has issues, like how the layers stack so you don't get the same effect on the sides of things, and the bottom could get weird if you had a top layer but just air underneath. At any rate we'll see what I can do; it might not be reasonable.​
I don't know what the impact would be on system resources compared to a traditional block-world. I might have to keep stuff like that in my own fork also, since it doesn't seem to be the direction Terasology is going. But if you want to change that, I'd be happy. ^.^​
I'd say that the first thing I want to do is learn how block worlds actually function. I've only read a bit of the theory; that's why I'm unsure if my layers idea is sensible or not. Would it be like making every cube seven times as complex? Or could the layers share some vital stats by being in the same cube, making them more efficient? I don't know so I want to learn.​
Thanks for making this thing Open Source everybody. I hope you like my contributions!
 

Nym Traveel

Active Member
Contributor
Art
World
Nice to see you here :)

I'm currently in charge of the world generation - planning a (hopefully gorgeous) remake of it.
Still kinda struggeling with all the dependencies a bit, too but I'll do my very best to help out on the parts I understand.

And feel free to roam around in the Incubator and Developer sections :D

ps: on the first glance I'd be sceptical about the multiple blocklayers in one block - simply because of the multiplication of the stored data.
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
I've never heard of Groovy before but I expect I'll pick it up quickly.
We don't use Groovy very much, so that's fine. :)

Why not make them slanted? I've seen slanted stuff in mods, like the fabric mod.
We actually have both stairs and slants, although neither are generated during world creation at the moment. Of course the issue with slopes is you can't have flowers or similar placed on them (if those things are blocks anyway).

Another thing I want to try is inspired by Dwarf Fortress. Instead of having solid cubes, build cubes out of layers. In DF a square can be filled by up to seven levels of water; at seven it's completely filled. So it occured to me, why not have every tile have seven layers like that? And instead of just water, you can combine solids, liquids, and gasses. So, you might have five layers of rock, a layer of sand, and a layer of water, for a beach. If you have different levels of soil, and slanted tops, you can have a nice lumpy terrain.
If each block just had a depth from 1-8 associated with it, with the assumption that it fills that much and the rest would be air - means a bit less than a byte per block, and we actually could reuse the liquid system's data there - assuming we don't want liquids separate from normal blocks.

Mixed layers really just means increasing the height of the world by 8 and instead of using blocks using slivers, so 8 times more data in general.
 

ReleeSquirrel

New Member
We actually have both stairs and slants, although neither are generated during world creation at the moment. Of course the issue with slopes is you can't have flowers or similar placed on them (if those things are blocks anyway).

I've messed around in Terasology but I haven't actually made any blocks, just flown around and dug a bit. The wiki is a little light on the 'what do I do?' stuff and I've been busy, so I've been taking it slow.

If the flowers are blocks instead of bitmaps then yeah, they wouldn't work so well on top of a slant block; they'd square it off beneath them. I figured the flowers and long grass weren't blocks though; that they were just billboard type objects.


If each block just had a depth from 1-8 associated with it, with the assumption that it fills that much and the rest would be air - means a bit less than a byte per block, and we actually could reuse the liquid system's data there - assuming we don't want liquids separate from normal blocks.

Mixed layers really just means increasing the height of the world by 8 and instead of using blocks using slivers, so 8 times more data in general.
Yeah I figured if you're going to have different levels of water, you'd probably be able to have different levels of other things too.

How is the block type stored? As you say, if it's just eight levels of one material all that adds is four bits, but how much data is in a block normally? Since they share xyz data I would think that adding another slice in a single block would be a little easier than making it slice based instead of cube based, though I might be wrong. I'm not sure how blocks are stored in this type of system. That's one of the things I want to learn.

How does the liquid system work currently? I imagine it's somewhat heavy. I'd like to see a wide variety of 'liquids' including granular solids like sand, but I don't know if that'd be a good idea. Certainly they didn't do that in Minecraft.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Welcome, ReleeSquirrel !

Looks like you're bringing lots of good stuff to the table, too much for me to reply to at near 4 am on a weeknight :D

I concur with a lot of your ideas, like alternative liquids and more advanced creatures - the latter in particular is important to me personally and I'd love to see some more work hit our creature system. For instance, Skaldarnar has been working on a "procedural grammar" system for "writing" random buildings, I'd love for creatures to be advanced enough to go fetch materials and build said buildings step by step :)

More later! Keep up the ideas and feedback. Liquid system also has a lot of stuff to it, maybe future designs more than current state ;)
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
If the flowers are blocks instead of bitmaps then yeah, they wouldn't work so well on top of a slant block; they'd square it off beneath them. I figured the flowers and long grass weren't blocks though; that they were just billboard type objects.
Most things that don't move are blocks - including flowers and grass. They just use a billboard shape. This enables efficiency in storage and rendering (and physics).

How is the block type stored? As you say, if it's just eight levels of one material all that adds is four bits, but how much data is in a block normally? Since they share xyz data I would think that adding another slice in a single block would be a little easier than making it slice based instead of cube based, though I might be wrong. I'm not sure how blocks are stored in this type of system. That's one of the things I want to learn.
Basically the world is divided into chunks. Each chunk has an array holding the ids of the block at each position. At the moment each of these ids is a byte, we will likely switch to a short in the future. So essentially it is one byte per block. Then there are arrays holding additional information for each block - a byte of lighting information, a byte or two for liquid handling.

There is no x/y/z information stored per block - that is implicit in its position in the array.

How does the liquid system work currently? I imagine it's somewhat heavy. I'd like to see a wide variety of 'liquids' including granular solids like sand, but I don't know if that'd be a good idea. Certainly they didn't do that in Minecraft.
It is pretty rough. There also need to be a decision made whether liquids are blocks (in which case a lot of liquids can be supported) or liquids are separate (which would allow them to co-exist with non cubic blocks - stairs with water half-way up the top step or underwater plants for instance - but would restrict the number of liquids we can support).
 
Top