Hi !
Featured games (91)
games approved by the League of Dukes
Games in Showcase (757)
Games in Android Showcase (229)
games submitted by our members
Games in WIP (844)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Cube world RAM optimalizations  (Read 2147 times)
0 Members and 1 Guest are viewing this topic.
Offline Mac70
« Posted 2013-07-28 19:59:07 »

Like in topic - does anyone have ideas how to optimize cube world game RAM usage?

Currently I am using this system (<> = reference to children in parent and reference to parent in children, > = only reference to children in parent):

World<>Chunk>Entity (one instance per type)>Model (one instance per mesh and texture)

I am rendering world with view radius 16 (33X33 chunks). Each chunk have 16X256X16 size, but only 16X80X16 is filled.

This system have one big issue - Tile don't "know" its parent and location.

RAM usage: 520 mb

Previously I was using this system:

World<>Chunk<>Tile (store x, y, z, chunk and entity references)>Entity (one instance per type)>Model (one instance per mesh and texture)

RAM usage (map with the same size): 1,5 gb
Offline RobinB

JGO Ninja

Medals: 45
Projects: 1
Exp: 3 years

Spacegame in progress

« Reply #1 - Posted 2013-07-28 20:29:41 »

I dont see why entity would need to know its parent.
To know more about your ram usage, you should post the used fields inside chunk and entity.4

And why does a entity have an model?
Offline jonjava
« Reply #2 - Posted 2013-07-28 20:30:05 »

Hmm, what? ;V

If each tile position is only referencing the Model to draw itself then you're basically just holding a (16*256*16)*(33*33) references. In 64bit JVM that's usually 64bits per reference so you'd end up with ~544Mb of references for each tile position. Looks about right to me.

The other method has 3 ints and 2 references (assumedly) so you'd end up with ~1900Mb of data. ((16*256*16)*(4+4+4+8+8)*(33*33)) / (1024*1024)

I don't know of this cube world and I'm just throwing around numbers here. However, you state that it's a problem that each tile doesn't know its position and I wonder if that is a non-issue. Since the World knows their position that should be enough.

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Mac70
« Reply #3 - Posted 2013-07-28 21:00:22 »

And why does a entity have an model?

Mostly to make code more readable, flexible and expandable. RAM is not too big problem at objects/models level.

About memory usage, even 64-bit Java use 32-bit references by default to save memory. As far as I know every object in Java must have multiply of 8 size.

Data stored in each object:
World - HashMap<Point, Chunk>
Chunk - 2 references (to the world and location), Entity[16][256][16], boolean repaint, int listID
Tile (only in more RAM-intensive version) - 2 references (to the entity and chunk), 2 bytes (xz and y)

RAM usage caused by other objects is very small.
Pages: [1]
  ignore  |  Print  

EgonOlsen (79 views)
2018-06-10 19:43:48

EgonOlsen (59 views)
2018-06-10 19:43:44

EgonOlsen (78 views)
2018-06-10 19:43:20

DesertCoockie (261 views)
2018-05-13 18:23:11

nelsongames (159 views)
2018-04-24 18:15:36

nelsongames (158 views)
2018-04-24 18:14:32

ivj94 (901 views)
2018-03-24 14:47:39

ivj94 (162 views)
2018-03-24 14:46:31

ivj94 (813 views)
2018-03-24 14:43:53

Solater (177 views)
2018-03-17 05:04:08
Java Gaming Resources
by philfrei
2017-12-05 19:38:37

Java Gaming Resources
by philfrei
2017-12-05 19:37:39

Java Gaming Resources
by philfrei
2017-12-05 19:36:10

Java Gaming Resources
by philfrei
2017-12-05 19:33:10

List of Learning Resources
by elect
2017-03-13 14:05:44

List of Learning Resources
by elect
2017-03-13 14:04:45

SF/X Libraries
by philfrei
2017-03-02 08:45:19

SF/X Libraries
by philfrei
2017-03-02 08:44:05 is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!