Marauroa 3.8: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>Madmetzger
imported>Hendrik Brummermann
No edit summary
 
(28 intermediate revisions by 2 users not shown)
Line 66: Line 66:


It returns true if within the RPObject has a map with mapname and false if not.
It returns true if within the RPObject has a map with mapname and false if not.

To access the map as a whole thing it is possible to obtain a copy via the getMap method.
Map<String, String> theWholeMap = rpobject.getMap(mapname);

As a convenience method RPObject can return all maps put together in one map:
public Map<String, Map<String, String>> maps()

An example usage of the maps can be found in the [http://arianne.cvs.sourceforge.net/viewvc/arianne/stendhal/src/games/stendhal/server/entity/player/Player.java?revision=1.284.2.1&view=markup Player] class of [[Stendhal]]. The buddies and their online statusses of a player are stored as a map within the player object. The class [http://arianne.cvs.sourceforge.net/viewvc/arianne/stendhal/src/games/stendhal/server/entity/player/PlayerRPClass.java?revision=1.164&view=markup PlayerRPClass] shows how to define a map attribute in a RPClass.


== Performance optimization ==
== Performance optimization ==
Line 83: Line 91:
; Details : I was wondering why Marauroa is so much faster on Marboard with 100,000 objects and a turn time of 30ms than it is in Stendhal with less objects and a turn time of 300ms. Using a profiler it turned out that a deeply nested inheritance hierarchy slows down calls to RPObject.get() and RPObject.put(). Those calls need to find the attribute definition (get() because of static attributes and put() in order to validate the datatype). And Stendhal does a huge amount of get()s and put()s every turn.
; Details : I was wondering why Marauroa is so much faster on Marboard with 100,000 objects and a turn time of 30ms than it is in Stendhal with less objects and a turn time of 300ms. Using a profiler it turned out that a deeply nested inheritance hierarchy slows down calls to RPObject.get() and RPObject.put(). Those calls need to find the attribute definition (get() because of static attributes and put() in order to validate the datatype). And Stendhal does a huge amount of get()s and put()s every turn.
: Baking a class is similar to baking a cake: After you have thrown in all the ingredients, the cake is baked which causes the ingredients to melt together. In Marauroa: After all the attributes are defined in the inheritance hierarchy, baking means that the attribute of parent classes are melted into the child classes. Just like you cannot take the eggs out of a baked cake, further changes to attributes are not visible in child classes.
: Baking a class is similar to baking a cake: After you have thrown in all the ingredients, the cake is baked which causes the ingredients to melt together. In Marauroa: After all the attributes are defined in the inheritance hierarchy, baking means that the attribute of parent classes are melted into the child classes. Just like you cannot take the eggs out of a baked cake, further changes to attributes are not visible in child classes.

{{#breadcrumbs: [[Marauroa]] | [[Marauroa|Overview]] | [[Marauroa 3.8|Marauroa 3.8]] }}