brunoribeiro / burriswarehouse

Automatically exported from code.google.com/p/burriswarehouse
0 stars 0 forks source link

Speed Optimization #17

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
The problem that I had predicted with loading the thousands of new objects into 
the warehouse as sprung.  The game runs incredibly slower now and needs some 
optimization things.

I noticed some code as I was reading up on the old versions of Pallet, 
StackedPallet, and there Rack code that they were using a feature of locking 
when they done loading the object.  They would also unlock the object when they 
needed to do something with it (like move it).

I avoided using the locking and unlocking functions because it didn't work 
exactly when I tried, and wasn't sure what it did.  What I do know is from the 
comments last year, they say it is a speed optimization.  My question is how, 
and how do you use it?

Secondly, I noticed and began using a room manager that the previous team had 
worked on.  I think this is a great idea for speed optimization.  However, it 
doesn't entirely work like I thought it may have worked.  I believe this is 
just because it was a feature that was not finished.  However, I do not know, 
and it may have been something I broke.  Dr. Shomper, do you know how this 
feature ended?  I would like to expound on this feature because it has great 
potential.

I will own this issue, but could use some help possibly from either of my team 
members or Dr. Shomper.  This problem needs to be taken care of, or the game 
may die of an overdose heart-attack.  If other solutions are possible, present 
them here.

Original issue reported on code.google.com by DanielTJ...@gmail.com on 28 Feb 2011 at 3:22

GoogleCodeExporter commented 9 years ago
Dan ... I am not familiar enough with the code base understand to what you are 
referring based on the brief description below.  I do know that the former team 
optimized drawing using a portal-type system.  That is, they would not draw 
(i.e. they would cull from the scene graph) objects in a room unless the player 
was in the same room as the objects.  In the old game you can see this kind of 
behavior when standing in a doorway.  Looking through the doorway, the room 
would appear empty, then once you moved through the doorway, objects would 
immediately become visible.

As far as the locking was concerned, I'm not familiar with that feature.  I 
know that Aaron Ramsey tried to optimize drawing using shared mesh nodes, but I 
am not familiar with a locking/unlocking strategy.

v/r
Dr Shomper

Status: Started
Owner: DanielTJ...@gmail.com
CC: calebmay...@gmail.com,  cjbus...@gmail.com,  kshom...@cedarville.edu
Labels: Type-Defect Priority-High Milestone-Release2.0 Performance Usability

New issue 17 by DanielTJ...@gmail.com: Speed Optimization
http://code.google.com/p/burriswarehouse/issues/detail?id=17

The problem that I had predicted with loading the thousands of new objects  
into the warehouse as sprung.  The game runs incredibly slower now and  
needs some optimization things.

I noticed some code as I was reading up on the old versions of Pallet,  
StackedPallet, and there Rack code that they were using a feature of  
locking when they done loading the object.  They would also unlock the  
object when they needed to do something with it (like move it).

I avoided using the locking and unlocking functions because it didn't work  
exactly when I tried, and wasn't sure what it did.  What I do know is from  
the comments last year, they say it is a speed optimization.  My question  
is how, and how do you use it?

Secondly, I noticed and began using a room manager that the previous team  
had worked on.  I think this is a great idea for speed optimization.   
However, it doesn't entirely work like I thought it may have worked.  I  
believe this is just because it was a feature that was not finished.   
However, I do not know, and it may have been something I broke.  Dr.  
Shomper, do you know how this feature ended?  I would like to expound on  
this feature because it has great potential.

I will own this issue, but could use some help possibly from either of my  
team members or Dr. Shomper.  This problem needs to be taken care of, or  
the game may die of an overdose heart-attack.  If other solutions are  
possible, present them here.

Original comment by kashom...@gmail.com on 28 Feb 2011 at 3:40

GoogleCodeExporter commented 9 years ago
I see the behavior happening with the room manager.  It is just not consistent. 
 I was wondering if the consistency was something that had not been finished by 
the previous team or was a problem I had created.

I have seen the shared meshes and know roughly how that works.  This only 
speeds up load time I believe.

I believe what locking and unlocking does is some optimization (maybe since it 
is "locked", the computer knows that it can be moved or something, so it can 
render it faster), but I didn't know how this worked, so I was wondering if 
anyone knew what its purpose was, or if it was actually worth trying to get 
working with my new stuff.

Original comment by DanielTJ...@gmail.com on 28 Feb 2011 at 3:46

GoogleCodeExporter commented 9 years ago
I think your thoughts on the points below (shared meshes and locking) are 
accurate.  Regarding portal culling with the room manager, I was not aware of 
limitations.  Perhaps you can determine this from the maintenance manual which 
I just sent.  If there were limitation, they should be referenced there.

Comment #2 on issue 17 by DanielTJ...@gmail.com: Speed Optimization
http://code.google.com/p/burriswarehouse/issues/detail?id=17

I see the behavior happening with the room manager.  It is just not  
consistent.  I was wondering if the consistency was something that had not  
been finished by the previous team or was a problem I had created.

I have seen the shared meshes and know roughly how that works.  This only  
speeds up load time I believe.

I believe what locking and unlocking does is some optimization (maybe since  
it is "locked", the computer knows that it can be moved or something, so it  
can render it faster), but I didn't know how this worked, so I was  
wondering if anyone knew what its purpose was, or if it was actually worth  
trying to get working with my new stuff.

Original comment by kashom...@gmail.com on 28 Feb 2011 at 5:11

GoogleCodeExporter commented 9 years ago
In the VirtualWarehouse class, there's a boolean member called 
optimizeVisibleRooms. The javadoc for that member is the following:

/**
* Optimizes the displaying of rooms to increase fps. When false, all rooms
* of the warehouse are connected to the scene graph. When true, only the
* room occupied by the player and nearby rooms specified in the rooms XML
* file are connected.
*/

Does the fact that it's looking for the rooms XML and the fact that we're now 
pulling models and everything in from the database have anything to do with the 
portal culling issue?

Original comment by cjbus...@gmail.com on 28 Feb 2011 at 6:44

GoogleCodeExporter commented 9 years ago
Threaded loading?  We could only load the start up rooms and then in the 
background load the rest of the warehouse.

Original comment by DanielTJ...@gmail.com on 28 Feb 2011 at 7:50

GoogleCodeExporter commented 9 years ago
Also, we did this today during the demo.  But the whole room manager seems to 
be working now based on killing the visible room part of our grammar.  What we 
need now is a plane with the texture representing what the room is about to 
look like.

Original comment by DanielTJ...@gmail.com on 28 Feb 2011 at 8:11

GoogleCodeExporter commented 9 years ago
From my quick research, the locking and unlocking does not work within child 
classes of a node.  The team before us did not lock and unlock children.  
Therefore, I am going to leave this part of the code as is and assume this is 
optimized enough.

I am still going to look into the plane resolution and threaded loading.

Original comment by DanielTJ...@gmail.com on 1 Mar 2011 at 3:00

GoogleCodeExporter commented 9 years ago

Original comment by cjbus...@gmail.com on 21 Mar 2011 at 7:15