gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

DS homebrew announcements > [dreaming... again...] Minecraft on DS - a concept video

#174799 - MrSkiz - Tue Jul 20, 2010 2:35 pm

Do you know Minecraft ? It's a swedish sandbox FPS gathering elements of rogue-like, settlers, Elder scrolls, Boulder Dash... All of this within a gigantic universe procedurally generated made of cubes that you can transform at your will by destroying the cubes and crafting objects (tools, weapons, food, cubes) from the materials collected by destroying the cubes.

[Images not permitted - Click here to view it]

The mix of pixelart textures, tile based topology, night&day cycles and impressive viewing distance work like a charm and even can be awesome sometimes.

The game includes several game modes like Survival (like a rogue-like you must travel, survive and craft/loot what you can) Creation (threatfree modde where you can build the world) and soon adventure (more classic). It's under heavy development but already enjoyable, even in multiplayer.

The game available for PC, Mac & Linux, can be tested in you browser here

So, someone managed to make a video mock-up of what Minecraft could look on a DS. The visual identity would fit perfectly to the DS, the author has some good ideas about control schemes, creation/crafting interfaces the DS specifications could perform.

Just a dream but could be great ! A worldsized open-ended Picross 3D

#174845 - GugloPWN - Fri Jul 23, 2010 8:44 pm

Hey MrSkiz, let me slash some of your dreams just a little.

Minecraft may appear fairly simple graphically, but under the hood there is a lot of heavy stuff going on.

The first thing to go on minecraft DS would be the impressive draw distance. The DS can only draw so many squares before it runs out of ram.

The world size is also limited by RAM which means anything larger than 256x256x256 is unlikely without some kind of disk reading (which might be doable).


Not to be a total downer however I have been slowly tinkering with a 3D voxel engine on the DS. My game idea is closer to Worms 3D than minecraft, but the idea's are close. I'm pleased with the draw distance I've gotten. Unfortunately I'm a terrible coder and the project might die before it gets much further.

If anyone wants the source I'd be glad to share. The demo is here: http://depositfiles.com/files/v1mr1kzbf

D-pad moves touchscreen looks, and also jumps when tapped, hold select to see the wireframe.

#175079 - MrSkiz - Fri Sep 03, 2010 3:57 pm

Quite impressive little demo !

#175494 - RedJiggly - Sat Dec 04, 2010 11:33 am

Even better, if we would be able to port OpenGL, java and Linux to the DS, it would be almostly possible to run the normal Minecraft xD. However, it would run slow as hell.

#175495 - elhobbs - Sat Dec 04, 2010 2:49 pm

You may not be aware but a ds only has 4mb of main system memory. There is a port of Linux already but it requires a slot2 ram card.

#175499 - RedJiggly - Sun Dec 05, 2010 6:27 pm

elhobbs wrote:
You may not be aware but a ds only has 4mb of main system memory. There is a port of Linux already but it requires a slot2 ram card.
Yes, I am totally aware. The DSLinux needs the ram expansion to show any GUI interface.

I also am aware that someone has ported a KVM of Java to the DS, however that was two years ago and only a small beginning. If I can figure it out, I'll possibly try expanding it.(see: here and here)

I am wondering in how far OpenGL could be used on the DS, since I could not find anything about it. The only thing I found was a link in this forum that was dead. We would need OpenGL since Minecraft runs using LWJGL for the graphics.

Of course, if Notch would be so kind to give us the source right away to edit it, it would be easier and we could possibly adapt it(with quite a bit work) to work on the DS without LWJGL. However, I don't imaginge that to be happening :P.

~RJ

#175501 - kusma - Mon Dec 06, 2010 12:42 pm

RedJiggly wrote:
I am wondering in how far OpenGL could be used on the DS, since I could not find anything about it. The only thing I found was a link in this forum that was dead. We would need OpenGL since Minecraft runs using LWJGL for the graphics.


The Nintendo DS 3D hardware isn't able to accelerate OpenGL for many reasons, so an OpenGL implementation would have to be implemented purely in software. This would make it so slow that the result would be essentially unusable.

But I don't think this would be the biggest problem; you'd simply run out of memory when trying to load a map.

#175505 - relminator - Tue Dec 07, 2010 12:14 am

kusma wrote:
RedJiggly wrote:
I am wondering in how far OpenGL could be used on the DS, since I could not find anything about it. The only thing I found was a link in this forum that was dead. We would need OpenGL since Minecraft runs using LWJGL for the graphics.


The Nintendo DS 3D hardware isn't able to accelerate OpenGL for many reasons, so an OpenGL implementation would have to be implemented purely in software. This would make it so slow that the result would be essentially unusable.

But I don't think this would be the biggest problem; you'd simply run out of memory when trying to load a map.


Care to elaborate on this?

From my tests, the DS 3D hardware is more optimized than PC GPUs.

1. Changing texture states (glBindTexture(), etc) is certainly faster since it's a bottleneck on the PC. On the DS, bind all you want and it won't have an effect on your framerate.

2. PC matrix transforms are done in software while the DS implements them on full hardware.
_________________
http://rel.betterwebber.com

#175506 - DiscoStew - Tue Dec 07, 2010 3:17 am

Memory storage is a problem, but that, imo, is dependent on the format you store the data. A 256x256x256 level, if each block were one byte each, is ~16MB, but that is if you make each one unique. What if you had a length of blocks that were the same? Couldn't you designate a single block, and a length? Or, what if every other block was the same. Couldn't that be stored as a single piece of a patterned type of data? I'm not saying that it wouldn't be complex, but I'm not saying it isn't possible either.

My idea would be having an array of pointers 256x256 entries long (width x height), and then making 'depth' a variable array of data, possibly compressed. When you alter a 'length', you take the entire length, uncompress it, make the alteration, then compress it again, and replace the pointer in the w x h array.

A logical approach? Depends on if speed won't be an issue, but in circumstances where multiple lengths of 'depth' are being altered, then speed might be an issue.

Graphically, you couldn't get the kind of representation the original game can do, even with doing numerous tricks to try and mimic it with the least number of polygons, as there are just far too many to account for in a single scene. Even with fog and short-range rendering, you could be pushing it over the limit.
_________________
DS - It's all about DiscoStew

#175513 - kusma - Fri Dec 10, 2010 11:00 am

relminator wrote:
kusma wrote:
RedJiggly wrote:
I am wondering in how far OpenGL could be used on the DS, since I could not find anything about it. The only thing I found was a link in this forum that was dead. We would need OpenGL since Minecraft runs using LWJGL for the graphics.


The Nintendo DS 3D hardware isn't able to accelerate OpenGL for many reasons, so an OpenGL implementation would have to be implemented purely in software. This would make it so slow that the result would be essentially unusable.

But I don't think this would be the biggest problem; you'd simply run out of memory when trying to load a map.


Care to elaborate on this?


The Nintendo DS 3D hardware lacks very many features that make up the GL. I won't do an exhaustive list (that'd take ages), but just for starters the DS hardware doesn't even come close to the precision requirements of the OpenGL specification. OpenGL requires at least 3 bits of subpixel precision in the rasterizer; the DS 3D hardware provides zero. OpenGL requires support for linear texture filtering and mip maps, the DS 3D hardware does not support either. OpenGL requires support for changing the fog color between draw-calls, the DS 3D hardware uses the last set fog-color in a frame. And there's about a gazillion other things.

Of course, making an OpenGL-ish library (like nitroGL is) that works just enough to get something like minecraft to run might be a different matter. But it's not going to help, you'd run out of memory before you could even render a single frame of a minecraft level.

relminator wrote:
From my tests, the DS 3D hardware is more optimized than PC GPUs.

1. Changing texture states (glBindTexture(), etc) is certainly faster since it's a bottleneck on the PC. On the DS, bind all you want and it won't have an effect on your framerate.

glBindTexture would have had a higher cost if nitroGL followed the GL specification, but because of the short-cuts it's taken, the CPU cost is close to zero (but at the cost that a lot of correct OpenGL code would not work). And the DS 3D hardware don't have a texture cache (because it has so little VRAM that it can just make it all on-chip, and there's no benefit of a cache), so there's no new cache-lines etc that needs to be fetched.

relminator wrote:

2. PC matrix transforms are done in software while the DS implements them on full hardware.

You mean the matrix operations, right? There's nothing stopping an OpenGL implementation from doing matrix transforms on the GPU other than common sense; pulling 16 floating point numbers over the PCI-E bus and back would give you a horrible latency at no real cost. SSE is fast enough and matrix operations are rare enough to let the CPU do it. After all, most PCs have a pretty beefy CPU. The DS GPU is integrated with the CPU, so there's no real difference. Oh, and it also uses fixed point, which would not make a conformant OpenGL implementation.

All in all, I don't agree that the DS hardware is "more optimized", it's "different". And this "different"-part is exactly the reasons why OpenGL doesn't make sense on DS, which I expect never was a big deal to Nintendo.

#175532 - Sata - Wed Dec 15, 2010 12:14 pm

Just saying it here, Minecraft takes a double core to run smoothly (I'm sure some P4 might run it, but I mean running at 60fps even in the lowest drawing distance) and it's usually using ~300mb of ram even in the lowest drawing distance.

#176597 - smealum - Tue Aug 23, 2011 1:37 pm

If people are interested, I've been working on my own adaptation of Minecraft for the DS. So far it's just Classic, and it's obviously fairly limited, but it runs well enough. You can check it out here : http://smealum.net/dscraft/ :)

#176599 - DiscoStew - Tue Aug 23, 2011 5:21 pm

smealum wrote:
If people are interested, I've been working on my own adaptation of Minecraft for the DS. So far it's just Classic, and it's obviously fairly limited, but it runs well enough. You can check it out here : http://smealum.net/dscraft/ :)


Rather neat nonetheless. One of your test worlds is over 134MB, yet after the long loading, it runs pretty smoothly.
_________________
DS - It's all about DiscoStew

#176654 - keldon - Wed Sep 07, 2011 1:56 pm

Cool