Linked by Thom Holwerda on Mon 17th Jun 2013 17:52 UTC
Games "MineAssemble is a tiny bootable Minecraft clone written partly in x86 assembly. I made it first and foremost because a university assignment required me to implement a game in assembly for a computer systems course. Because I had never implemented anything more complex than a 'Hello World' bootloader before, I decided I wanted to learn about writing my own kernel code at the same time. Note that the goal of this project was not to write highly efficient hand-optimized assembly code, but rather to have fun and write code that balances readability and speed. This is primarily accomplished by proper commenting and consistent code structuring." Just cool.
Thread beginning with comment 564928
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[4]: Comment by aligatro
by Neolander on Tue 18th Jun 2013 20:47 UTC in reply to "RE[3]: Comment by aligatro"
Neolander
Member since:
2010-03-08

Actually, in this specific case, Elder Scroll games have shown for decades how large game maps can be used without excessive RAM usage. Simply put:
* Take a huge world map
* Slice it into smaller chunks
* Only keep the current chunk and its nearest neighbours in memory
* Profit !

I would be surprised if Minecraft didn't do something similar on the inside, keeping the whole world map loaded all the time sounds like a needlessly inefficient way to go about it.

Edited 2013-06-18 20:48 UTC

Reply Parent Score: 3

RE[5]: Comment by aligatro
by Alfman on Wed 19th Jun 2013 03:59 in reply to "RE[4]: Comment by aligatro"
Alfman Member since:
2011-01-28

Neolander,

"I would be surprised if Minecraft didn't do something similar on the inside, keeping the whole world map loaded all the time sounds like a needlessly inefficient way to go about it."

Yes, minecraft does take advantage of the fact that it doesn't need everything all at once:
http://www.minecraftwiki.net/wiki/Alpha_level_format
http://www.minecraftwiki.net/wiki/Chunks

It actually has a very limited working set, according to the documents above the default is 441 "chunks" (of 16*16*256 blocks). Blocks which remain idle for 30s are written back to disk (in the case of a local game).

I'd say this is probably fine for single player gameplay. On massively multiplayer servers it may be difficult to scale ram to hold enough raw chunks for every player. Java's own object overhead + deferred garbage collection probably amplifies the ram situation.

The interesting thing about minecraft in particular is that the world is initially generated algorithmically from a random seed. It could be possible to render the entire initial world functionally without actually storing any data blocks whatsoever. The only storage strictly necessary would be delta blocks, and these are very likely compressible due to their distribution and relationship to one another. I think with some clever software optimization, such worlds may have been possible on late 1999's era hardware.

Edited 2013-06-19 04:08 UTC

Reply Parent Score: 3