I thought I would post some info about an Android project that I'm currently making in Unity.

Basically its a minimalistic Minecraft(or similar) hence the name 'Mincraft'.

Here is an early test video, however many things have changed from this version:


For performance reasons I had to do away with the infinite world generation and confine it to a specific size. I have managed to add simple caves, water/lava as well. Working on non-interactive mobs at present.

Note that I havent begun to lock down the UI as yet.

EDIT - Ok so for performance reasons I cut the world to fixed size and had to change a few other things.

At this point i have:

World creation - bedrock, caves, mineral deposits, underground lava, water, trees
Loading/saving
Block destruction and placing
22 blocks including water, lava and TNT!
Some basic block rules - water/lava flow to empty blocks, dirt turns to grass if water touches it, lava turns to stone if water touches it, trees catch fire from lava etc
TNT explodes and makes craters
Some post effect shaders like bloom lighting and minor colour grading

Todo:
Simple mobs - probably just 2 different types of animals running and jumping around randomly
Performance optimisations

Here are some screenies, I resized for posting reasons:






Ill grab a short video tonight if i get a chance.

EDIT2 - As promised here is a rough video showing some of the stuff that is working so far:



EDIT3 - Here is an update that shows mob's in action. They can be 3D - this was just a test for the codewalrus guys Smile
The smoothness of this is just insane, for the level of detail you have. A few notes and questions:
- I was going to assume that fluids don't flow yet, and redstone can't redstone yet, because you don't have ticks that process work events, but then I watched the first video further and saw fire, TNT, water flow, and more. Extremely impressive indeed.
- I saw a slight hiccup (hiccough, if you prefer) when you jumped into the water. Was that just a poorly-timed chunk load?
- I'm sure that my quadcore Nexus 5 will be able to handle this easily, but do you have any idea what kind of minimum specs it requires?
It has some VERY basic block rules implemented:

water/lava flow
dirt turns to grass if water touches it
lava turns to stone if water touches it
leaves/wood catch fire if lava touches it
TNT can explode stuffs

The performance is something that I am going to need to work on further. The video is a PC capture so it runs nicely, it appears to run reasonably on android hardware (I have a couple of phones/tablets of differing specs to test on) however chunk loading is something that I need to work on (as you saw Smile).
tr1p1ea wrote:
It has some VERY basic block rules implemented:

water/lava flow
dirt turns to grass if water touches it
lava turns to stone if water touches it
leaves/wood catch fire if lava touches it
TNT can explode stuffs
So blocks can have something akin to data about what they're in the midst of doing, and how long until they finish doing it? Or are all of those things entities separate from the 3D grid of the map? Do you segment the map on "chunk"-like boundaries? Do you do any sort of map compression?
Unfortunately there isn't any data carried with each block, the rules are applied to blocks by type - it's a minimal system.

You can define which blocks can catch fire or set rules for any type of block to make it act like water etc with a specific flow rate as well. You can also define which blocks have animated textures and stuff too.

The map is indeed divided into chunks which load to a definable radius around the player ... on mobile this causes isses with slow media access. I am toying with the idea of loading all chunks into RAM and grabbing them from there for speed (since the world is not infinite).

The maps are generated at runtime, but they can be saved and loaded. I don't use any map compression as yet.
tr1p1ea wrote:
Unfortunately there isn't any data carried with each block, the rules are applied to blocks by type - it's a minimal system.
That certainly seems reasonable for a lightweight platform like Android; I don't fault you there. It would be disingenuous to expect the same level of features as a computer game.

Quote:
The map is indeed divided into chunks which load to a definable radius around the player ... on mobile this causes isses with slow media access. I am toying with the idea of loading all chunks into RAM and grabbing them from there for speed (since the world is not infinite).
Perhaps you could adjust the radius to the amount of free RAM available? I don't know if Android provides an API to detect such a thing.

Quote:
The maps are generated at runtime, but they can be saved and loaded. I don't use any map compression as yet.
Let me know if you need any help thinking about map compression approaches, as I've come up with a few while working on SparseWorld. I'm sure you're more than capable of coming up with some excellent ones yourself, of course. Wink

I can't wait to see the next screenshots and updates!
In hindsight I probably shouldnt have made this in Unity as im sure there is some overhead slowing things down.

I reduced GPU draw calls by 90% and it actually runs slower ... Back to the optimisation drawing board.
I understand what you are trying to do, but does it have to be Android exclusive? If you are using Unity, then your program is written in C# (unless you have Pro and are using C++), and thus can be ported to a plethora of platforms, if I am not mistaken. Also, is the source code available, or is it a closed source game? Either way, it still looks much better than Minecraft PE with the standard graphics (no mods)
its designed to be used on touch devices, so Android/iOS mainly.

While making this version I have come up with some good ideas for a new version which would include PC etc ... But that might be a little way off.

I guess this is one of those 'just cause' projects Smile.
How's this project going, tr1p1ea? I think it looks amazingly cool, and can't wait to see more updates on it. I remain quite impressed that you're able to get this level of graphics and performance out of Android devices.
Thanks Kerm, I haven't had a lot of time to work on this project unfortunately. I have been rewriting some of the underlying code to try and get better performance out of it as I wasn't happy with the overall performance.

Hoping that I can provide an update soon!
Additionally bumpage, because this is such a cool-looking project. Have you had time to poke at it recently?
Thanks Kerm Smile.

I will look to revisit this project once xLIBCE is stable I think. I was in the process of rewriting some of the chunk handling to account for slow data loading times when caching data on Flash memory. I was also looking into possibly allowing for higher resolution textures but I'm still undecided on that point.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement